この使用例では、一連のワークフローの状態(一時停止、停止、エラーあり)を監視するワークフローの作成について詳しく説明します。
目的は次のとおりです。
一連のワークフローの状態を監視するには、次の手順に従う必要があります。
監視対象のワークフローフォルダーは「CustomWorkflows」フォルダーです。このフォルダーは管理/プロダクション/テクニカルワークフローノードに保存されています。このフォルダーには、ビジネスワークフローのセットが含まれています。
監視ワークフローは、「テクニカルワークフロー」フォルダーのルートに保存されます。使用するラベルは、「監視」です。
以下のスキーマは、アクティビティのシーケンスを表します。
このワークフローは次の要素から構成されます。
JavaScript コードの 1 番目の箇所は、ワークフローが「一時停止」(@state == 13)、「エラー」(@failed == 1)、「停止」(@state == 20)の状態であるかどうかを特定するクエリ(queryDef)に相当します。
監視対象のワークフローフォルダーの内部名は次の条件に基づき付与されます。
<condition boolOperator="AND" expr="[folder/@name] = 'Folder20'" internalId="1"/>
var strError = "";
var strPaused = "";
var strStop = "";
var queryWkfError = xtk.queryDef.create(
<queryDef schema="xtk:workflow" operation="select">
<select>
<node expr="@internalName"/>
<node expr="@state"/>
<node expr="@label"/>
<node expr="@failed"/>
<node expr="@state"/>
</select>
<where id="12837805386">
<condition boolOperator="AND" expr="[folder/@name] = 'Folder20'" internalId="1"/>
<condition boolOperator="AND" internalId="2">
<condition boolOperator="OR" expr="@state = 20" internalId="3"/>
<condition expr="@state = 13" internalId="4"/>
</condition>
</where>
</queryDef>
);
var ndWkfError = queryWkfError.ExecuteQuery();
JavaScript コードの 2 番目の箇所は、クエリの実行中に回復がおこなわれた場合にその状態に応じて、各ワークフローについてのメッセージを表示します。
作成した文字列は、ワークフローのイベント変数に読み込む必要があります。
for each ( var wkf in ndWkfError.workflow )
{
if ( wkf.@state == 13 ) // Status 13 = paused
{
if ( wkf.@failed == 1 )
strError += "<li>Workflow '" + wkf.@internalName + "' with the label '" + wkf.@label + "'</li>";
else
strPaused += "<li>Workflow '" + wkf.@internalName + "' with the label '" + wkf.@label + "'</li>";
}
if ( wkf.@state == 20 ) // Status 20 = stop
strStop += "<li>Workflow '" + wkf.@internalName + "' with the label '" + wkf.@label + "'</li>";
}
vars.strWorkflowError = strError;
vars.strWorkflowPaused = strPaused;
vars.strWorkflowStop = strStop;
「テスト」アクティビティでは、配信をおこなう必要があるかどうか、「待機」アクティビティに基づき監視ワークフローで別のサイクルを実行する必要があるかどうかを判断できます。
3 つのイベント変数、「vars.strWorkflowError」、「vars.strWorkflowPaused」、「vars.strWorkflowStop」のうち少なくとも 1 つが有効であると、スーパーバイザーに配信がおこなわれます。
「待機」アクティビティは、一定間隔でワークフローの監視を再起動するよう設定することができます。この使用例では、待機時間は 1 時間に設定されています。
「配信」アクティビティは、リソース/テンプレート/配信テンプレートノードに保存されている配信テンプレートに基づき実行されます。
このテンプレートには次の内容を含める必要があります。
スーパーバイザーの E メールアドレス
パーソナライズされたテキストを挿入するための HTML コンテンツ
宣言する 3 つの変数(WF_Stop、WF_Paused、WF_Error)は、3 つのワークフローイベント変数に相当します。
これらの変数は、配信テンプレートプロパティの「変数」タブで宣言する必要があります。
ワークフローイベント変数の内容を復元するには、JavaScript コードで返される値で初期化する配信に固有の変数を宣言する必要があります。
配信テンプレートには次のコンテンツがあります。
テンプレートが作成され承認されたら、「配信」アクティビティを設定して次のことをおこなう必要があります。
「配信」アクティビティをダブルクリックして、次のオプションを選択します。
配信:「新規(テンプレートから作成)」を選択し、前に作成した配信テンプレートを選択します。
「受信者」フィールドと「コンテンツ」フィールドで「配信で指定」を選択します。
実行するアクション:「準備と開始」を選択します。
「エラーを処理」オプションのチェックボックスをオフにします。
「配信」アクティビティの「スクリプト」タブに移動し、パーソナライゼーションフィールドメニューから 3 つの文字列タイプ変数を追加します。
これらの変数は次のように宣言します。
delivery.variables._var[0].stringValue = vars.strWorkflowError;
delivery.variables._var[1].stringValue = vars.strWorkflowPaused;
delivery.variables._var[2].stringValue = vars.strWorkflowStop;
監視ワークフローが起動されると、次のような内容のサマリーが受信者に送信されます。