一時停止したワークフローは「更新」フラグを失う
遅れてきたルーキー、といいますか…。
なんというか、今更!な発見をしてしまいました。
SP2 未適用の環境の場合、ワークフローのループ仕様(自分自身の値を更新すると「更新」がトリガされてワークフローが再起動してしまう)に悩まされます。
そのため、ループすることを前提で設計を組む必要があった訳ですが。
他の回避方法、つまりループさせない方法を偶然見つけてしまいました。
まず Designer でワークフローを作成します。
起動オプションは「新規」「変更」です。
第一ステップで、ループを想定し回避するロジックを組みます。
第二ステップで、更新日時の値を、有効期限列に挿入させます。
自分自身をアップデートしてしまいましたので、この時点で「更新」フラグが立ちます。
このまま、このリストでアイテムを作成すると、保存→新規フラグでワークフローが起動→自分の値を更新→更新フラグでワークフローが起動→第一ステップの判定で終了、という流れで、ワークフローが都合、二回起動する筈です。
しかし、ここで第三ステップを加えます。
「1分間停止」です。
さて、このワークフローを適用して、リストに新規アイテムを作成すると…。
何故かループしていません。
一度起動しただけで終了しています。
試しに、第三ステップを削除してみます。
新規アイテムを追加─
ワークフローが四回走りました(あれあれ?)
一応、最後は”AvoidRoop”を記録して停止していますので、ループ回避ロジックそのものはきちんと動作しているようです。
つまり、総合するとこう言うことになります。
「ワークフローで自分自身の値を更新すると、更新フラグが立つ。」
「しかし、一度停止することで、そのフラグは消去される」
なんということでしょう…。
この仕様に1年前に気付けていれば、あんなに苦労せずに済んだのに…orz。
ところで、とある方から「SP2を適用したけど、ワークフローが多重起動する現象が修正されない」なんてお話を聞いたのですが、本当なんでしょうか?
SP2 の重大更新 ワークフローのサイクル起動を抑制
ワークフローをデザインする際の要注意点(小ネタ)
login