定期的に起動するワークフロー(ループ)を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を設定(新規/変更起動)

二つの同じ設計のワークフローをリストに適用します。すると、まず片方が起動。それがアイテムを更新し、そのトリガでもう片方が起動…を延々とループします。

これで要件は一応達成したのですが、もちろん、この仕様は危険でもあります。ユーザのちょっとした誤操作誤設定で、ワークフローが無限ループする訳です。

この設計を適用したリストに、例えばデータシートビューから大量アイテムが投入されて、その全てで無限ワークフローが実行されたら…(汗

要注意ですが、だからこそ抑えておいたほうが良い仕様ではあります。


Author

中村 和彦(シンプレッソ・コンサルティング株式会社 代表)が「ユーザ視点の SharePoint 情報」を発信します。元大手製造業 SharePoint 運用担当。現SharePoint コンサルタント。お仕事のお問い合わせはこちらまでお願いします。当ブログにおける発信内容は個人に帰属し所属組織の公式発信/見解ではありません。
FB : 中村 和彦
blog: Be・Better!
MS MVP SharePoint 2009/10-2011/9
MS MVP Office 365 2012/10-2014/9