フロー - スコープ対象 (使用廃止)
フロー API は、アクティブ化されたワークフロースタジオフローを実行するためのメソッドを提供します。
この API は廃止され、 ScriptableFlowRunner - スコープ指定 API と ScriptableFlowRunnerResult - スコープ指定API に置き換えられました。
フロー API はサーバースクリプトでのみ使用できます。
sn_fd 名前空間を使用してフロー API にアクセスします。
フロー API を使用してフローを操作する前に、まずワークフロースタジオインターフェイスでフローを作成してアクティブ化する必要があります。フロー API はビルド済みのフローとのみやり取りするため、クラスのコンストラクターはありません。
注:
インスタンスのパフォーマンスを最適化するには、非同期ビジネスルールスクリプトからこれらのメソッドを呼び出さないようにします。代わりに、ワークフロースタジオの UI 内でスケジュール済みジョブレコードを作成します。
フロー:startAsync(String scopeName.flowName, Map flowInputs)
トリガーを無視し、アクティブ化されたフローを非同期で実行します。
非同期呼び出しはノンブロッキングであるため、クライアントはフローが完了するのを待たずにスクリプト内の他のコードを実行できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| scopeName.flowName | 文字列 | フローのアプリケーションスコープと実行するフローの内部名。scopeName が含まれていない場合、現在ログインしているユーザーのスコープが使用されます。ワークフロースタジオ ランディングページの [内部名] 列を使用して、フローの内部名を取得します。 |
| flowInputs | マップ | レコードベースのフロー入力を定義する <文字列、オブジェクト> 形式の名前と値のペア。レコードベースのトリガーを使用してフローを呼び出すには、次の形式を使用します。
GlideRecord オブジェクトの名前は「current」でなければなりません。 サービスカタログトリガーを使用してフローを呼び出すには、次の形式を使用します。
GlideRecord オブジェクトの名前は「request_item」でなければなりません。 |
| タイプ | 説明 |
|---|---|
| オブジェクト | 次のプロパティを含む PlanResponse オブジェクト:
フローが次の場合に例外が発生します。
|
//Example 1: Run a flow with a record-based trigger
(function startFlowAsync() {
try {
// You MUST fetch the GlideRecord that will be passed to the flow
var glideRecordInput = new GlideRecord('sys_user');
glideRecordInput.get('62826bf03710200044e0bfc8bcbe5df1');
var flowInputs = {};
flowInputs['current'] = glideRecordInput;
flowInputs['table_name'] = glideRecordInput.getTableName();
var result = sn_fd.Flow.startAsync('global.recordtriggeredflow', flowInputs);
//The Sys ID of a flow execution (contextId)
var contextId = result.contextId;
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
//Example 2: Run a flow with a schedule-based trigger
(function startFlowAsync() {
try {
var result = sn_fd.Flow.startAsync('global.scheduletriggeredflow');
//The Sys ID of a flow execution (contextId)
var contextId = result.contextId;
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
//Example 3: Run a flow with a Service Catalog trigger
(function startFlowAsync() {
try {
// You MUST fetch the GlideRecord that will be passed to the flow
var glideRecordInput = new GlideRecord('sc_req_item');
glideRecordInput.get(aeed229047801200e0ef563dbb9a71c2);
var flowInputs = {};
flowInputs['request_item'] = glideRecordInput;
flowInputs['table_name'] = glideRecordInput.getTableName();
var result = sn_fd.Flow.startAsync('global.catalogtriggeredflow', flowInputs);
//The Sys ID of a flow execution (contextId)
var contextId = result.contextId;
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
//Example 4: Run a flow with a MetricBase trigger
(function startMetricBaseFlowAsync() {
try {
var oilLevelTriggerRecord = new GlideRecord('oil_levels');
oilLevelTriggerRecord.get('a4b3622bc72113007b237f48cb97635f');
var metricTriggerDefinition = new GlideRecord('sys_metric_trigger_definition');
metricTriggerDefinition.get('21f2eae7c72113007b237f48cb976352');
var event_time = oilLevelTriggerRecord.getValue('sys_created_on');
var level = 4;
var metricBaseFlowInputs = {};
//The record that triggered the metric event
metricBaseFlowInputs['current'] = oilLevelTriggerRecord;
//The MetricBase Trigger Definition record
metricBaseFlowInputs['metric'] = metricTriggerDefinition;
//The time that the 'record' reached a specific metric event level and triggered this flow
metricBaseFlowInputs['event_time'] = event_time;
//The target event level to reach in order for a metric flow to trigger
metricBaseFlowInputs['level'] = level;
var result = sn_fd.Flow.startAsync('global.metricbasedtriggeredflow', metricBaseFlowInputs);
//The Sys ID of a flow execution (contextId)
var contextId = result.contextId;
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();