ワークフロー - グローバル
ワークフロースクリプトインクルードは、ワークフローエンジンと連動するメソッドを提供します。
ここで説明するメソッドを使用してワークフローを操作します。
Workflow - broadcastEvent(文字列 contextId, 文字列 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');
}
Workflow - cancel(GlideRecord record)
このレコード上で実行中のすべてのワークフローのアクティビティに cancel イベントをブロードキャストすることによって、このレコード上で実行中のすべてのワークフローをキャンセルします。
| 名前 | タイプ | 説明 |
|---|---|---|
| record | 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()));
Workflow - cancelContext(GlideRecord context)
このワークフローコンテキストのアクティビティに 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);
}
Workflow - 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, String eventName, Object eventParms)
入力レコードで実行中のワークフローの名前付きイベントを発生させます。
承認コーディネーター、タイマー、ロック、およびその他のアクティビティで使用されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| eventRecord | GlideRecord | アクティビティ実行ワークフロー [wf_executing] テーブルにリストされているイベント レコードです。 |
| eventName | 文字列 | 実行中のワークフローに送信するイベントの名前。 |
| eventParms | オブジェクト | オプション。イベントで使用される JSON 形式のパラメーター。 |
| タイプ | 説明 |
|---|---|
| なし |
// where current is a task record with a workflow context
var w = new Workflow();
w.fireEvent(current, 'execute');
Workflow - fireEventById(文字列 eventRecordId, 文字列 eventName)
レコード ID で指定されたレコード上で指定のイベントを発生させます。
承認コーディネーター、タイマー、ロック、およびその他のアクティビティで使用されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| eventRecordId | 文字列 | Glide レコードの sys_id。 |
| eventName | 文字列 | 実行中のワークフローに送信するイベントの名前。 |
| タイプ | 説明 |
|---|---|
| なし |
var wkfw = new Workflow();
wkfw.fireEventById('f2400ec10b0a3c1c00ca5bb5c6fae427','Timer');
Workflow - getContexts(GlideRecord record)
指定されたレコードのすべてのワークフローコンテキストを返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| record | 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);
Workflow - getEstimatedDeliveryTime(文字列 workflowId)
ワークフローが完了する推定時刻を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| workflowId | 文字列 | 推定の実行時間を取得するワークフロー (テーブル wf_workflow) の sys_id。 |
| タイプ | 説明 |
|---|---|
| 文字列 | GlideDuration の表示値 (例:3 日)。不明な場合は空白。 |
var wkfw = new Workflow();
gs.print(wkfw.getEstimatedDeliveryTime('b99a866a4a3623120074c033e005418f'));
2 日
Workflow - getEstimatedDeliveryTimeFromWFVersion(GlideRecord wfVersion)
ワークフローバージョンの推定実行経過時間を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| wfVersion | 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));
Workflow - getReturnValue(文字列 workflowID, 数字 amount, ブーリアン result)
入力されたワークフロー ID に対する適切なワークフローのリターン値を取得します。 このワークフローは、現在のユーザーによってチェックアウトされたワークフローと、最新の日付で公開されたワークフローのいずれかです。
このワークフローは、現在のユーザーによってチェックアウトされたワークフローと、最新の日付で公開されたワークフローのいずれかです。このメソッドは Fuji 以降のリリースで利用できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| workflowID | 文字列 | ワークフロー (テーブル wf_workflow) の sys_id |
| amount | 数値 | amount |
| result | ブーリアン | true の場合は true |
| タイプ | 説明 |
|---|---|
| ??? | [リターン値] アクティビティで指定されたワークフローのリターン値。[リターン値] アクティビティのないワークフローは null 値を返します。 |
var wkfw = new Workflow();
wkfw.getReturnValue('context');
*** Script: b99a866a4a3623120074c033e005418f
Workflow - getRunningFlows(GlideRecord record)
入力レコードに対する現在実行中のすべてのワークフローコンテキストを取得します。
入力レコードは、実行中のワークフローコンテキストを発信者が必要としているテーブル上の任意のレコードです。
| 名前 | タイプ | 説明 |
|---|---|---|
| record | 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');
}
Workflow - getVersion(文字列 workflowID)
入力されたワークフロー ID に対する適切なワークフローのバージョンを取得します。 このワークフローは、現在のユーザーによってチェックアウトされたワークフローと、最新の日付で公開されたワークフローのいずれかです。
このワークフローは、現在のユーザーによってチェックアウトされたワークフローと、最新の日付で公開されたワークフローのいずれかです。
| 名前 | タイプ | 説明 |
|---|---|---|
| workflowID | 文字列 | ワークフロー (テーブル wf_workflow) の sys_id |
| タイプ | 説明 |
|---|---|
| なし |
var wkfw = new Workflow();
wkfw.getVersion('b99a866a4a3623120074c033e005418f');
Workflow - getVersionFromName(文字列 workflowName)
入力されたワークフロー名に対する適切なワークフローのバージョンを返します。
詳細については「getVersion()」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| workflowName | 文字列 | ワークフロー (テーブル wf_workflow) の名前 |
| タイプ | 説明 |
|---|---|
| なし |
var wkfw = new Workflow();
wkfw.getVersionFromName('Emergency Change');
Workflow - getWorkflowFromName(文字列 workflowName)
指定されたワークフロー名に関連付けられたワークフローの sys_id を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| workflowName | 文字列 | ワークフローの名前。 |
| タイプ | 説明 |
|---|---|
| 文字列 | 渡された名前に関連付けられたワークフローの sys_id。 |
var wflw = new Workflow();
gs.print(wflw.getWorkflowFromName('Emergency Change'));
Workflow - hasWorkflow(GlideRecord record)
指定されたレコードにワークフローコンテキストが関連付けられているかどうかを判断します。
実行中のワークフローコンテキストと完了したワークフローコンテキストが対象となります。
| 名前 | タイプ | 説明 |
|---|---|---|
| record | GlideRecord | 監視下の GlideRecord。この GlideRecord は任意のテーブルから取得できます。 |
| タイプ | 説明 |
|---|---|
| ブーリアン | レコードにワークフローが関連付けられている場合は true、そうでない場合は false を返します。 |
var wkfw = new Workflow();
gs.print(wkfw.hasWorkflow('f2400ec10b0a3c1c00ca5bb5c6fae427'));
false
Workflow - 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);
}
})
Workflow - runFlows(GlideRecord record, 文字列 operation)
指定されたテーブルとその子孫テーブル内の、指定されたレコードに対するすべてのワークフローを実行します。
使用例は、「SNC - Run parent workflows」および「SNC - Run parent workflows (Approval)」スクリプトインクルードで確認できます。
| 名前 | タイプ | 説明 |
|---|---|---|
| record | GlideRecord | ワークフローの実行対象の GlideRecord。 |
| operation | 文字列 | データベース操作。 有効な値:
|
| タイプ | 説明 |
|---|---|
| なし |
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');
}
Workflow - startFlow(文字列 workflowId, GlideRecord current, 文字列 operation, アレイ vars)
指定されたワークフローを開始します。
使用例については、テーブル sc_req_item のスクリプトインクルード WorkflowScheduler およびビジネスルール「Start Workflow」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| workflowId | 文字列 | 開始するワークフローの sys_id。この sys_id はテーブル wf_workflow を指します。 |
| current | GlideRecord | このワークフローで現行として使用するレコード。このレコードは通常、このワークフローのワークフロープロパティの Table フィールドから取得されます。 |
| operation | 文字列 | 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());
Workflow - startFlowFromContextInsert(GlideRecord context, 文字列 operation)
ビジネスルール Auto start on context のヘルパーメソッド。
| 名前 | タイプ | 説明 |
|---|---|---|
| context | GlideRecord | 新しいレコード (ビジネスルールの「current」レコード) のテーブル wf_context の GlideRecord。 |
| operation | 文字列 | 実行中のデータベース操作。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())
Workflow - startFlowRetroactive(文字列 workflowId, 数字 retroactiveMSecs, GlideRecord current, 文字列 operation, アレイ, ???)
テーブル task_sla のビジネスルール Start Workflow によって使用されます。これによってワークフローが開始され、このメソッドへの追加引数が、ワークフローの実行を一定時間停止するアクティビティ「タイマー」によって使用されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| workflowID | 文字列 | 開始するワークフローの sys_id。この sys_id はテーブル wf_workflow を指します。 |
| retroactiveMSecs | 数字 | アクティビティ「タイマー」によって使用される遅延 (ミリ秒単位)。 |
| current | GlideRecord | このワークフローで現行として使用するレコードの GlideRecord。このレコードは通常、このワークフローのワークフロープロパティの Table フィールドから取得されます。 |
| operation | 文字列 | 実行中のデータベース操作。insert、update、delete のいずれかです。 |
| 変数 | アレイ | ワークフローに追加する変数のコレクション。 |
| withSchedule | ??? | アクティビティ「タイマー」で使用されるスケジュール |
| タイプ | 説明 |
|---|---|
| GlideRecord | 新しく作成されたこのワークフローコンテキストに対して挿入されたレコードのテーブル wf_context の GlideRecord。 |
// 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 - Workflow()
Workflow クラスのコンストラクター。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
var w = new Workflow();