フロー - スコープ指定 (非推奨)
Flow API はアクティブ化された ワークフロースタジオ フローを実行するメソッドを提供します。
この API は廃止され、 ScriptableFlowRunner - スコープ指定 および ScriptableFlowRunnerResult - スコープ指定API に置き換えられました。
Flow API はサーバースクリプトでのみ使用できます。
sn_fd 名前空間を使用して、Flow API にアクセスします。
Flow API を使用してフローとやり取りする前に、まず ワークフロースタジオ インターフェイスでフローを作成してアクティブ化する必要があります。Flow API は構築済みフローのみとやり取りするため、クラスのコンストラクタはありません。
注:
インスタンスのパフォーマンスを最適化するには、非同期ビジネスルールスクリプトからこれらのメソッドを呼び出さないようにします。代わりに、ワークフロースタジオの UI 内でスケジュール済みジョブレコードを作成します。
フロー - startAsync(String scopeName.flowName, Map flowInputs)
トリガーを無視し、アクティブ化されたフローを非同期に実行します。
非同期呼び出しは非ブロッキングであるため、クライアントは、フローが完了するのを待たずにスクリプト内の他のコードを実行できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| scopeName.flowName | 文字列 | 実行するフローのアプリケーションスコープとフローの内部名。scopeName が含まれていない場合、現在ログインしているユーザーのスコープが使用されます。内部名列 (ワークフロースタジオ ランディングページ上) を使用してフローの内部名を取得します。 |
| flowInputs | マップ | レコードベースのフロー入力を定義する<String、Object>フォーマット内のネームバリューペア。レコードベースのトリガーでフローを呼び出すには、次の形式を使用します。
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);
}
})();