Dynamics CRM 2011 ワークフローの待機条件 Tips

みなさん、こんにちは。

今日は開発者の方向けの情報として、ワークフローで利用できる
待機条件に関する Tips を提供します。

ワークフローの待機条件

ワークフローの待機条件を利用すると、特定の状況が発生するまで、
一旦ワークフローを待機させることが可能です。

フィールドの値で判定

例えば以下のようにタスクの状態が完了になったらと設定すると、該当の
レコードのステータスが完了になるまでワークフローが実行されません。

image

実際にこのワークフローが実行されて待機状態に入ると、以下の
ように延期が 9999/12/30 8:59 に変更されています。つまり自動
的に再開はされず、レコードが更新された際に、条件に一致するか
再評価されます。

image

期間を利用したタイムアウトで判定

待機条件ではタイムアウトを設定することも可能です。以下のように、
前回の条件に追加して、5 分でタイムアウトするように設定します。
また 設定は動的な値の機能を利用して、期間で指定しています。

image

image

この条件でワークフローを実行すると、以下のように延期が
ワークフロー実行時間の 5 分後となります。

image

期間を利用したタイムアウトの注意点

上記のようなタイムアウトを設定した場合、5 分間が経過するまでに
レコードが更新されると、初めの状態の条件が満たされるか確認が
行われた際に、そこから再度 5 分間のタイムアウトが設定されます。

例えば 2 分後に先ほどのレコードの説明などを更新した場合、以下の
ように延期の指定が17:31 から17:33 に書き換えられます。

image

タイムアウト時間を最終更新から数えたい場合には有効ですが、
絶対値を利用してタイムアウトを設定したい場合は以下の方法を
利用できます。

絶対値を利用したタイムアウトで判定

先ほどの期間の条件を削除後、新たに以下の条件を追加しました。
今回は期間を利用せず、レコードの作成日から 5 分後を動的な値
で設定しています。

image

image

この場合ワークフロー実行時は先ほどと同じく 5 分後が設定
されますが、レコードを更新しても延期の時間は延長されません。

image

まとめ

Microsoft Dynamics CRM のワークフローでは様々な条件を
利用することができますが、設定によっては意図した動作に
ならない場合があります。是非こちらの記事を参考にして
いただき、ワークフローの待機条件を作成してください。

- Dynamics CRM サポート 中村 憲一郎