ワークフロー - グローバル
ワークフロースクリプトインクルードは、ワークフローエンジンとインターフェイスするメソッドを提供します。
これらのメソッドを使用してワークフローを操作します。
ワークフロー - broadcastEvent(String contextId, String eventName)
指定されたイベント (メッセージ) をワークフローコンテキストに送信して、実行中のアクティビティに渡します。
この方法の一般的な使用法は、何らかのアクションが発生するのを待ってから続行するアクティビティを有効にすることです。broadcastEventの使用方法の詳細については、「ワークフローイベント固有の関数」を参照してください。
利用可能な OOB イベントのリストについては、「 ベースシステムのワークフローイベント」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| contextId | 文字列 | コンテキスト ID。 |
| eventName | 文字列 | イベントの名前 |
| タイプ | 説明 |
|---|---|
| なし |
//where current is a task record with a workflow context
var wf = new Workflow().getRunningFlows(current);
while(wf.next()) {
new Workflow().broadcastEvent(wf.sys_id, 'resume');
}
ワークフロー - キャンセル (GlideRecord レコード)
このレコードで実行中のすべてのワークフローのアクティビティに cancel イベントをブロードキャストすることによって、このレコードで実行中のすべてのワークフローをキャンセルします。
| 名前 | タイプ | 説明 |
|---|---|---|
| レコード | GlideRecord | 任意のテーブルの GlideRecord。このレコードで実行されているすべてのワークフローがキャンセルされます。 |
| タイプ | 説明 |
|---|---|
| なし |
//get workflow helper
var workflow = new Workflow();
//cancel all the workflows, where current is a task record with a workflow context
workflow.cancel(current);
gs.addInfoMessage(gs.getMessage("Workflows for {0} have been cancelled", current.getDisplayValue()));
ワークフロー:cancelContext(GlideRecord コンテキスト)
このワークフローコンテキスト内のアクティビティに cancel イベントをブロードキャストすることによって、この実行中のコンテキストをキャンセルします。
| 名前 | タイプ | 説明 |
|---|---|---|
| context | GlideRecord | キャンセルする実行中のコンテキストの GlideRecord。 |
| タイプ | 説明 |
|---|---|
| なし |
// If a workflow has started for this item, cancel it, where current is a task record with a workflow context
if ((current.stage == 'Request Cancelled') && current.context
&& !current.context.nil()) {
var w = new Workflow();
var now_GR = new GlideRecord('wf_context');
if (now_GR.get(current.context))
w.cancelContext(now_GR);
}
ワークフロー - deleteWorkflow(GlideRecord current)
レコードのすべてのワークフローを削除します。
| 名前 | タイプ | 説明 |
|---|---|---|
| current | GlideRecord | 問い合わせユーザーがすべてのワークフローを削除する GlideRecord。これは、任意のテーブルの任意のレコードにすることができます。 |
| タイプ | 説明 |
|---|---|
| なし |
//where current is a task record with a workflow context
var wkfw = new Workflow();
wkfw.deleteWorkflow(current);
ワークフロー - fireEvent(GlideRecord eventRecord, 文字列 eventName, オブジェクト eventParms)
入力レコードで実行中のワークフローの名前付きイベントを発生させます。
アクティビティ 承認コーディネーター、 タイマー、 ロックなどで使用されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| イベントレコード | GlideRecord | ワークフロー実行アクティビティ [wf_executing] テーブルにリストされているイベントレコード。 |
| eventName | 文字列 | 実行中のワークフローに送信するイベントの名前。 |
| イベントパラメーター | オブジェクト | オプション。イベントで使用される JSON 形式のパラメーター。 |
| タイプ | 説明 |
|---|---|
| なし |
// where current is a task record with a workflow context
var w = new Workflow();
w.fireEvent(current, 'execute');
ワークフロー:fireEventById(String eventRecordId, String eventName)
レコード ID で指定されたレコードで名前付きイベントを発生させます。
アクティビティ 承認コーディネーター、 タイマー、 ロックなどで使用されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| イベントレコード ID | 文字列 | Glide レコードのsys_id。 |
| eventName | 文字列 | 実行中のワークフローに送信するイベントの名前。 |
| タイプ | 説明 |
|---|---|
| なし |
var wkfw = new Workflow();
wkfw.fireEventById('f2400ec10b0a3c1c00ca5bb5c6fae427','Timer');
ワークフロー:getContexts(GlideRecord レコード)
指定されたレコードのすべてのワークフローコンテキストを返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| レコード | GlideRecord | 発信者がすべてのワークフローコンテキストのリストを必要とする GlideRecord。これは、発信者が実行中のワークフローコンテキストを必要とする任意のテーブルの任意のレコードにすることができます。 |
| タイプ | 説明 |
|---|---|
| GlideRecord | 指定されたレコードのすべてのワークフローコンテキスト (実行中、キャンセル済み、完了など) のすべてのワークフローコンテキスト用にフィルタリングされたワークフローコンテキスト [wf_context] テーブルの GlideRecord。 |
//where current is a task record with a workflow context
var wkfw = new Workflow();
var context = wkfw.getContexts(current);
while (context.next())
gs.print(context.started);
ワークフロー:getEstimatedDeliveryTime(String workflowId)
ワークフローが完了するまでの推定時間を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| workflowId | 文字列 | 予定ランタイムを取得するためのワークフロー (テーブル wf_workflow) のSys_id。 |
| タイプ | 説明 |
|---|---|
| 文字列 | GlideDuration の値 (3 日間など) を表示します。不明な場合は空白にします。 |
var wkfw = new Workflow();
gs.print(wkfw.getEstimatedDeliveryTime('b99a866a4a3623120074c033e005418f'));
2 日
ワークフロー:getEstimatedDeliveryTimeFromWFVersion(GlideRecord wfVersion)
ワークフローバージョンの推定経過実行時間を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| wfバージョン | GlideRecord | 呼び出し元が実行中の推定値を望む特定のワークフローバージョンのテーブルwf_workflow_versionの GlideRecord。 |
| タイプ | 説明 |
|---|---|
| 文字列 | GlideDuration の値 (3 日など) を表示します。不明な場合は空白にします。 |
//where current is a task record with a workflow context
var wkfw = new Workflow();
var context = wkfw.getContexts(current);
gs.print(wkfw.getEstimatedDeliveryTimeFromWFVersion(context.wf_version));
ワークフロー:getReturnValue(String workflowID, Number amount, Boolean result)
入力ワークフロー ID の適切なワークフロー戻り値を取得します。 これは、現在のユーザーによってチェックアウトされたワークフロー、または最新の日付の公開ワークフローのいずれかです。
これは、現在のユーザーによってチェックアウトされたワークフロー、または最新の日付の公開ワークフローのいずれかです。この方法は Fuji リリース以降で利用可能です。
| 名前 | タイプ | 説明 |
|---|---|---|
| ワークフロー ID | 文字列 | ワークフローのsys_id (テーブル wf_workflow) |
| amount | 番号 | amount |
| result | ブーリアン | true の場合 true |
| タイプ | 説明 |
|---|---|
| ??? | リターン値アクティビティで指定されたワークフローのリターン値。リターン値アクティビティのないワークフローは、null値を返します。 |
var wkfw = new Workflow();
wkfw.getReturnValue('context');
*** Script: b99a866a4a3623120074c033e005418f
ワークフロー:getRunningFlows(GlideRecord レコード)
入力レコードに対して現在実行中のすべてのワークフローコンテキストを取得します。
入力レコードは、発信者が実行中のワークフローコンテキストを必要とするテーブル上の任意のレコードです。
| 名前 | タイプ | 説明 |
|---|---|---|
| レコード | GlideRecord | 発信者が実行中のすべてのワークフローのリストを必要とするレコードの GlideRecord。 |
| タイプ | 説明 |
|---|---|
| GlideRecord | テーブルwf_contextの GlideRecord で、実行中のすべてのワークフローコンテキストについてフィルタリングされます。 |
//where current is a task record with a workflow context
var wf = new Workflow().getRunningFlows(current);
while(wf.next()) {
new Workflow().broadcastEvent(wf.sys_id, 'pause');
}
ワークフロー:getVersion(文字列 workflowID)
入力ワークフロー ID の適切なワークフローバージョンを取得します。 これは、現在のユーザーによってチェックアウトされたワークフロー、または最新の日付の公開ワークフローのいずれかです。
これは、現在のユーザーによってチェックアウトされたワークフロー、または最新の日付の公開ワークフローのいずれかです。
| 名前 | タイプ | 説明 |
|---|---|---|
| ワークフロー ID | 文字列 | ワークフローのsys_id (テーブル wf_workflow) |
| タイプ | 説明 |
|---|---|
| なし |
var wkfw = new Workflow();
wkfw.getVersion('b99a866a4a3623120074c033e005418f');
ワークフロー:getVersionFromName(文字列 workflowName)
入力ワークフロー名の適切なワークフローバージョンを返します。
詳細については、 getVersion() を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| ワークフロー名 | 文字列 | ワークフローの名前 (テーブル wf_workflow) |
| タイプ | 説明 |
|---|---|
| なし |
var wkfw = new Workflow();
wkfw.getVersionFromName('Emergency Change');
ワークフロー:getWorkflowFromName(文字列 workflowName)
指定されたワークフロー名に関連付けられたワークフローのsys_idを返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| ワークフロー名 | 文字列 | ワークフローの名前。 |
| タイプ | 説明 |
|---|---|
| 文字列 | 渡された名前に関連付けられたワークフローのsys_id。 |
var wflw = new Workflow();
gs.print(wflw.getWorkflowFromName('Emergency Change'));
ワークフロー:hasWorkflow (GlideRecord レコード)
指定されたレコードにワークフローコンテキストが関連付けられているかどうかを判定します。
これには、実行中および完了したワークフローコンテキストが含まれます。
| 名前 | タイプ | 説明 |
|---|---|---|
| レコード | GlideRecord | 精査中の GlideRecord。この GlideRecord は任意のテーブルから取得できます。 |
| タイプ | 説明 |
|---|---|
| ブーリアン | レコードにワークフローが関連付けられている場合は true。それ以外の場合は False を返します。 |
var wkfw = new Workflow();
gs.print(wkfw.hasWorkflow('f2400ec10b0a3c1c00ca5bb5c6fae427'));
false
ワークフロー:restartWorkflow(GlideRecord current, ブール maintainStateFlag)
現在の承認とタスクはリセットしないで、新しい承認とタスクを追加することで、ワークフローの承認とタスクを再計算します。
この方法を使用すると、既にワークフローにある会社の現在の承認をリセットすることなく、変更要求に会社を追加するなどのタスクを実行できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| current | GlideRecord | このワークフローが実行しているレコードの GlideRecord。これは、任意のテーブルの任意のレコードで可能です。 |
| maintainStateFlag | ブーリアン | すべての承認とタスクを現在のステータスで維持するかどうかを示すフラグ。 有効な値:
|
| タイプ | 説明 |
|---|---|
| なし |
この例は、承認ファイルが [却下] から [要求済み] に変更されて再開されるワークフローを示しています。
(function(){
var comment = 'Workflow Restarted - the Approval Field changing from Rejected to Requested';
var gLock = new GlideRecordLock(current);
gLock.setSpinWait(50);
if (gLock.get()) {
new Workflow().restartWorkflow(current, false);
current.setDisplayValue('approval_history', comment);
}
})
ワークフロー - runFlows(GlideRecord レコード、文字列操作)
指定されたテーブルとその子孫テーブルの指定されたレコードのすべてのワークフローを実行します。
サンプルの使用法は、「SNC - 親ワークフローを実行」および「SNC - 親ワークフローを実行 (承認)」というスクリプトインクルードで確認できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| レコード | GlideRecord | ワークフローを実行する GlideRecord。 |
| 操作 | 文字列 | データベース操作。 有効な値:
|
| タイプ | 説明 |
|---|---|
| なし |
var now_GR = new GlideRecord('wf_test');
now_GR.addQuery('parent', current.parent);
now_GR.addQuery('sys_id','!=',current.sys_id);
now_GR.query();
while(now_GR.next()) {
new Workflow().runFlows(now_GR, 'update');
}
ワークフロー:startFlow(String workflowId, GlideRecord current, String operation, Array vars)
指定されたワークフローを開始します。
使用例については、スクリプトインクルード WorkflowScheduler およびテーブル sc_req_item のビジネスルール「ワークフローの開始」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| workflowId | 文字列 | ワークフローを開始するsys_id。このsys_idはテーブルwf_workflowを参照します。 |
| 現在 | GlideRecord | このワークフローで現在のものとして使用するレコード。これは通常、このワークフローのワークフロープロパティの Table フィールドから取得されます。 |
| 操作 | 文字列 | currentで実行する操作。可能な値: insert、 update、 delete。 |
| 変数 | アレイ | ワークフローに追加する変数のコレクション |
////where current is a task record with a workflow context
var w = new Workflow();
var context = w.startFlow(id, current, current.operation(), getVars());
ワークフロー - startFlowFromContextInsert(GlideRecord context, String operation)
ビジネスルール Auto start on contextのヘルパーメソッド。
| 名前 | タイプ | 説明 |
|---|---|---|
| context | GlideRecord | 新しいレコード (ビジネスルール内の「現在の」レコード) のテーブルwf_contextの GlideRecord。 |
| 操作 | 文字列 | 実行中のデータベース操作。insert、update、deleteのいずれかです。 |
| タイプ | 説明 |
|---|---|
| なし |
//where current is a task record with a workflow context
current.name = current.workflow_version.name;
current.started_by.setValue(gs.userID());
if (gs.nil(current.id)) {
var now_GR = new GlideRecord('wf_workflow_execution');
now_GR.name = current.name;
now_GR.insert();
current.table = 'wf_workflow_execution';
current.id = now_GR.sys_id;
}
var wf = new Workflow();
wf.startFlowFromContextInsert(current, current.operation())
ワークフロー - startFlowRetroactive(String workflowId, Number retroactiveMSecs, GlideRecord current, String operation, Array, ???)
テーブルtask_slaのビジネスルール Start Workflow で使用されます。これによりワークフローが開始され、このメソッドの追加引数は、ワークフローの実行を一定期間一時停止するためにアクティビティ「タイマー」によって使用されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| ワークフロー ID | 文字列 | ワークフローを開始するsys_id。このsys_idはテーブルwf_workflowを参照します。 |
| 事後対応 MSec | 番号 | アクティビティ タイマーで使用される遅延 (ミリ秒単位)。 |
| 現在 | GlideRecord | このワークフローで現在として使用するレコードの GlideRecord。これは通常、このワークフローのワークフロープロパティの Table フィールドからのものです |
| 操作 | 文字列 | 実行中のデータベース操作。 insert、 update、 deleteのいずれかです。 |
| 変数 | アレイ | ワークフローに追加する変数のコレクション。 |
| スケジュールあり | ??? | アクティビティタイマーで使用されるスケジュール |
| タイプ | 説明 |
|---|---|
| GlideRecord | テーブルの GlideRecord wf_context、この新しく作成されたワークフローコンテキストの挿入されたレコード。 |
// is this a retroactive start?
////where current is a task record with a workflow context
var msecs = new GlideDateTime().getNumericValue() - current.start_time.getGlideObject().getNumericValue();
// treat this as a retroactive workflow start if the SLA started more than 5 seconds ago
var w = new Workflow();
if (msecs <= 5000)
w.startFlow(id, current, current.operation());
else
w.startFlowRetroactive(id, msecs, current, current.operation());
// update the record in case the workflow changed some values
current.update();
ワークフロー - Workflow()
ワークフロークラスのコンストラクター。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
var w = new Workflow();