SharePoint ワークフロー 2010形式と2013形式の違い

こんにちは、MS開発部の 荒井 です。

SharePoint のワークフローは 2010形式と 2013形式の2つがありますが、クラシックサイトがまだまだ現役ということもあり、Microsoft Flow が登場した今でも使用する機会は多いと思います。
この2つ、当然 2013形式の方が新しいのですが単純な上位互換になっているわけではないのが残念といいますか何といいますか…。
ということで、今回はそんな両形式の違いを簡単にまとめてみたいと思います。

アクション

それぞれの形式にしかないものを少しだけ挙げてみます。

2010形式にしかないもの

  • アイテムのアクセス許可の置き換え、追加、削除・・・権限設定を簡単に可能(代理ステップ内限定)
  • アイテムのコピー・・・添付ファイルまで含めてバックアップをとりたい場合に(2013形式のコピーはライブラリのファイルのみ)

2013形式にしかないもの

  • HTTP Webサービスを呼び出す・・・2013形式最大のメリット、ループなどと合わせて使用
  • 文字列内のサブ文字列を置換・・・2010形式にも抽出はあるのですが置換はないです
  • リストワークフローを開始する・・・2010形式のワークフローを開始することができます(2010形式ワークフローの開始オプション「手動で開始できるようにする」がチェックされている必要があります)

正直、2013形式で使用できる「HTTP Webサービスを呼び出す」アクションが色々使えて便利なのですが(権限設定もこれでできます)、一方で辞書の設定だったりループ処理だったりが結構面倒です。
せめて「辞書を作成」アクションがちゃんとコピペできれば…。

代理ステップとアプリステップ

ワークフロー実行者の権限では不可能なことを実行するために使用するステップが異なり、2010形式では「代理ステップ」、2013形式では「アプリステップ」が用意されています。
代理ステップは ”ワークフローを発行したアカウントの権限で実行する” というもので、下準備などせず使用できますが、ワークフローを発行するアカウントを考慮する必要があります。
アプリステップは ”ワークフローに権限を付与し、その権限で実行する” というもので、使用する前にワークフローアプリの権限設定をする必要があります。
どちらも注意したいこととして、そのステップ内でアイテムを更新すると更新者がワークフロー実行者ではなくなることが挙げられます(代理ステップは ワークフローの発行者、アプリステップは SharePointアプリ になります)。

代理ステップの詳細については以下のURLをご参照ください。
https://support.office.com/ja-jp/article/sharepoint-designer-2010-%E3%81%AE%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC-%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3-%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF-%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9-%E3%82%AC%E3%82%A4%E3%83%89-5a7ad276-0ed7-49b0-b652-e56a77dd96c6#__toc260831314

アプリステップの詳細については以下のURLをご参照ください。
https://docs.microsoft.com/ja-jp/sharepoint/dev/general-development/create-a-workflow-with-elevated-permissions-by-using-the-sharepoint-workflo

開始オプション

項目こそ違いはないのですが、「アイテムが作成されたときにワークフローを自動的に開始する」「アイテムが変更されたときにワークフローを自動的に開始する」の挙動が若干異なります。
2010形式では、他のワークフロー内でアイテムが作成、更新された場合もワークフローが開始されます。

例1)ワークフローA(アイテムの作成時に自動的に開始、ワークフロー内でアイテムを更新)、ワークフローB(アイテムの更新時に自動的に開始)がある場合
  アイテムを作成 → ワークフローAが開始 → ワークフローA内でアイテムを更新 → ワークフローBが開始
例2)ワークフローA(アイテムの作成時に自動的に開始、アイテムの更新時に自動的に開始、ワークフロー内でアイテムを更新)のみ
  アイテムを作成 → ワークフローAが開始 → ワークフローA内でアイテムを更新(ワークフローAは再び開始されない)
例3)ワークフローA(アイテムの作成時に自動的に開始、アイテムの更新時に自動的に開始、ワークフロー内でアイテムを作成)のみ
  アイテムを作成 → ワークフローAが開始 → ワークフローA内でアイテムを作成 → 作成されたアイテムに対してワークフローAが開始 → ワークフローA内でアイテムを作成 → (以下ループ)

一方2013形式では、他のワークフロー内でアイテムが作成、更新された場合に開始されないようになっています。

例1)ワークフローA(アイテムの作成時に自動的に開始、ワークフロー内でアイテムを更新)、ワークフローB(アイテムの更新時に自動的に開始)がある場合
  アイテムを作成 → ワークフローAが開始 → ワークフローA内でアイテムを更新(ワークフローBは開始されない)
例2)ワークフローA(アイテムの作成時に自動的に開始、アイテムの更新時に自動的に開始、ワークフロー内でアイテムを更新)のみ
  アイテムを作成 → ワークフローAが開始 → ワークフローA内でアイテムを更新(ワークフローAは再び開始されない)
例3)ワークフローA(アイテムの作成時に自動的に開始、アイテムの更新時に自動的に開始、ワークフロー内でアイテムを作成)のみ
  アイテムを作成 → ワークフローAが開始 → ワークフローA内でアイテムを作成(作成されたアイテムに対してワークフローAが開始されない)

2010形式で開始オプションを設定する場合のみ注意が必要ということですね。

ステージの有無

2013形式のみ「ステージ」というものがありますが、これが便利なんですよね。
「この場合はこう処理をして~」といった場面(いわゆる if 文)では、2010形式では「条件」の中にすべての処理を書くしかなかったわけです。

ところが 2013形式だと、「この場合はこのステージに行って、それ以外はこっちのステージに行く」といった分岐が可能なので、特に処理が長い場合は見やすさやメンテナンス性が向上すると思います。

さて、もう少し書きたい項目があるのですが長くなりそうなので次回にでも書きたいと思います。

その他弊社の業務にご興味のある方は、お気軽にお問い合わせください。
(お問い合わせはこちらのページをご確認の上、メールアドレス「info@deepcom.co.jp」までご連絡ください。)

コメントは利用できません。