定期的に起動するワークフロー(ループ)をSharePoint Designerで実装
業務要件で、SharePointのワークフローを定期的に起動させたい場合があります。こうした場合、タイマージョブを設計するのが正攻法ですが、これには開発が必要。また現状、Office365ではそもそも利用できません。
ちなみに「情報管理ポリシー」は駄目です。過去、このブログでも取り上げましたが、一度起動すると、自動的にそのアイテムを[適用除外]に設定してしまうので、一度しか起動してくれません。
SharePoint 2007 SP2 以前は、ワークフローがアイテムを更新すると、その更新をトリガにワークフローが再度起動したのですが、SP2で修正されたため、現在これは使えません(危険な仕様でしたので正しい変更だと思いますが)
ぱっと思いつくのが以下のような設計です。
リストAに5分待機してからリストBにアイテムを作成するWFを設定(新規起動)。リストBに5分待機してからリストAにアイテムを作成するWFを設定(新規起動)
二つのリスト間で「お手玉」すればいけるか?
しかし、実際にSharePoint Designer でOffice365にこのワークフローを設計してみると、残念ながら期待通りには動きません。リストA→リストB ときて、リストAでワークフローが起動しません。これは私にもちょっと意外でした。(※SharePoint Online プランPで実験)
実際に上手くいく方法はこちら。
リストに5分待機してから自アイテムを更新するワークフローAを設定(新規/変更起動)。リストに5分待機してから自アイテムを更新するワークフローBを設定(新規/変更起動)
二つの同じ設計のワークフローをリストに適用します。すると、まず片方が起動。それがアイテムを更新し、そのトリガでもう片方が起動…を延々とループします。
これで要件は一応達成したのですが、もちろん、この仕様は危険でもあります。ユーザのちょっとした誤操作誤設定で、ワークフローが無限ループする訳です。
この設計を適用したリストに、例えばデータシートビューから大量アイテムが投入されて、その全てで無限ワークフローが実行されたら…(汗
要注意ですが、だからこそ抑えておいたほうが良い仕様ではあります。
login