SharePoint 15 ワークフローから SharePoint 2010 ワークフローを開始する方法
原文の記事の投稿日: 2012 年 8 月 18 日 (土曜日)
みなさん、こんにちは。
SharePoint Designer チーム PM の Chong Youn (John) Choe です。SharePoint 15 と SharePoint Designer 15 のベータ 2 が公開されて、私たち製品グループのメンバーが補足情報を投稿できるようになりました。
この投稿では、以前のスタイルのワークフローを呼び出すことができるようになっている理由とその方法について説明します。
背景
まず第一に、この機能は、SPD ワークフローの再利用を大幅に強化すると期待されています。これにより、SharePoint サイトで高度に再利用可能なワークフローをセットアップして、スクリプトや関数のように活用できるようになります。
SharePoint 15 は異なるプラットフォームで再構築されているため、SharePoint 2010 アクションのすべての機能を SharePoint 15 ワークフローの機能で完全に置き換えることはできませんでした。ワークフロー製品チームは、より機能豊富な新しいエンド ユーザー シナリオを実現する新しい機能に投資して、ユーザーのフィードバックからあまり使用されていないことがわかった機能はあきらめることにしました。
その一方で、既存のシナリオをすべてサポートしたいという強い希望もありました。その結果、"ワークフローの開始" アクションが考案されました。これにより、SharePoint 15 ワークフローから SharePoint 2010 ワークフローへのワークフロー間呼び出しが実現されるため、エンド ユーザーが SharePoint 15 と SharePoint 2010 を組み合わせて使用できるようになります。これが、現在の SPD ユーザーに移行パスを提供するための唯一の経済的なソリューションでした。
ワークフローは、リスト ワークフロー、再利用可能なワークフロー、サイト ワークフローの 3 種類に分類できます。詳細については、このブログ投稿を参照してください。再利用可能なワークフローは、関連付けの時点で入力パラメーターを受け取ります。その後は、リスト ワークフローであるかのように、リストやリスト内のアイテムで開始できます。開始する SharePoint 2010 ワークフローは、呼び出しの時点で実行準備ができている必要があります。したがって、再利用可能なワークフローの場合は、既に関連付けが行われている必要があります。そのため、これらのワークフローは、"リスト ワークフローの開始" という 1 つのアクションによってサポートされています。このアクションは 3 つのパラメーターを受け取ります。開始する SharePoint 2010 の関連付けられているワークフロー、開始フォームのパラメーター、関連付けられているワークフローを実行する対象となるターゲット アイテムの 3 つです。一方、サイト ワークフローでは、実行対象のアイテムは必要ないため、もう 1 つのアクションである "サイト ワークフローの開始" を使用できます。このアクションは、開始する SharePoint 2010 のサイト ワークフローと開始フォームのパラメーターの 2 つのパラメーターを受け取ります。
さらに、見えないところで何が行われているのかを知りたい方のために、https://msdn.microsoft.com/ja-jp/library/sharepoint/jj163181(office.15) (英語) に "workflow interop bridge" も用意されています。
シナリオ例
以上で概念を理解できたので、今度は、これらのアクションをいつどのように使用すればよいのかを見ていきましょう。以降では、シナリオ例を使って具体的な手順を説明します。
SharePoint 2010 サイトで "Budget Approval" というワークフローが使用されていたとします。IT 管理者が SharePoint 2010 を SharePoint 15 にアップグレードすることを決定し、既存の SharePoint 2010 ワークフローが新しいサイトに移行されました (注意: ワークフローが SharePoint 15 ワークフローにアップグレードされたわけではありません。これらのワークフローは SharePoint 2010 ワークフローのままです)。"Budget Approval" ワークフローは、経理部や人事部に予算を要求するために使用されるワークフローで、入力として 4 つのパラメーターを受け取ります。要求金額を表す "Budget requested"、予算が必要な理由を説明する "Explanation"、回答期限を表す "Requested approval due date"、関連情報を参照する "Reference" の 4 つです。
この "Budget Approval" ワークフローを新しいワークフロー プロセスの一部として使用するとします。このような場合、以前は、新しいワークフローを作成して、ワークフローを新しいフレームワークで書き直さなければなりませんでした。また、SharePoint 15 ワークフローで新たに導入された機能を "Budget Approval" ワークフローと組み合わせて使用する場合は、すべてを 1 つのフレームワークに記述することは不可能でした。
"ワークフローの開始" アクションは、このような場合に完璧なソリューションとなります。たとえば、"Budget Approval" ワークフローが "Contoso finance" リストのリスト ワークフローだったとします。このリストでは、Contoso の財務プロセスがワークフローによって自動化されています。
設計の手順
1. 開始するターゲット ワークフローがリスト ワークフローまたはリストに関連付けられた再利用可能なワークフローである場合は、"リスト ワークフローの開始" (Start a List Workflow) アクションを挿入します。
2. アクションを挿入したら、まず、ワークフローまたは関連付けを選択する必要があります。"SharePoint 2010 リスト ワークフロー" (SharePoint 2010 list workflow) リンクをクリックします。
3. ターゲット ワークフローが存在するリストを見つけて選択し、ワークフローを選択します。
4. [OK] をクリックして上のダイアログを閉じます。次に、"リスト ワークフローの開始" アクションの文の "パラメーター" (parameters) リンクをクリックします。ワークフローが分析されて、開始パラメーターとその定義済みの値が表示されます。
このダイアログには、各パラメーターの "種類" (Type) の情報も表示されます。これにより、SharePoint 15 ワークフローの作成者が SharePoint 2010 ワークフローの作成者と異なる場合も、呼び出し先のワークフローを調べなくても開始フォームのパラメーターの値を設定できます。
5. 各パラメーターの値は設計時に設定できます。ルックアップ値を選択して実行時に値が設定されるようにすることもできます。これにより、呼び出し元の SharePoint 15 ワークフローと呼び出し先の SharePoint 2010 ワークフローを使用して統合プロセスを設計できる柔軟性が実現されます。
ダイアログには値の制限も表示されるため、パラメーターの情報を事前に確認しておく必要はありません。
6. もちろん、値を直接テキスト エディターで入力して設定することもできます。表示されるダイアログとその機能はパラメーターの種類によって異なることに注意してください。
7. […] ボタンをクリックすると、設定するパラメーターの種類に応じたデザイナーが表示されて、ガイドに従って値を入力できます。一方、[Fx] ボタンをクリックすると、標準のルックアップ ダイアログが表示されます。
8. すべてのパラメーターを設定したら、[開始パラメーターの値の設定] (Set Values for Initiation Parameters) ダイアログを閉じます。設定されたパラメーターの数が直接アクションの文に表示されます。
9. 次に、ターゲット ワークフローを実行する対象のアイテムを選択します。通常は、"現在のアイテム" に対してプロセスを実行します。この場合、呼び出し元のワークフローと呼び出し先のワークフローが同じアイテムに対して実行され、同じアイテムにログと結果が保存されます。この一般的なシナリオをサポートするには、"このアイテム" (this item) パラメーターに対して "現在のアイテム" (Current Item) を選択します。
これで完了です。このように、アクションの文を 1 つ追加して適切な値を設定するだけで SharePoint 2010 ワークフローを呼び出すことができます。実際、このプロセスは、エンド ユーザーが SharePoint サーバーで SharePoint 2010 ワークフローを開始する手順に似ています (リスト、アイテム、関連付けられているワークフローを選択し、開始フォームを入力する)。エンド ユーザーが SharePoint サーバーで実行する手順を以下に示します。
すばらしい機能はほかにもあります。呼び出し先のワークフローの変数の値を呼び出し元の SharePoint 15 ワークフローで使用することができます。そのためにはルックアップ ダイアログを使用します。
では、シナリオ例を使って詳しく見てみましょう。
会社の新しいポリシーが発表されたため、"Budget Approval" プロセスの参加者に通知電子メールを送信して、新しいポリシーを確認するように求める必要があります。
10. "電子メールを送信する" アクションを追加して、"Budget Approval" プロセスの参加者に電子メールを送信します。
11. SharePoint 2010 ワークフローの変数を参照するには、[宛先] (To) コントロールに対して [ユーザーのワークフロー参照] (Workflow Lookup for a User) を選択します。
12. "リスト/サイト ワークフローの開始" アクションを挿入して SharePoint 2010 ワークフローを選択すると、自動的に新しいデータ ソースが作成されます。そのデータ ソースの名前は、固定テキスト "SharePoint 2010 Output" とワークフローの名前で構成されています。
13. "Budget Approval" のすべての変数が 2 番目のドロップダウン ボックス ([ソースのフィールド] (Field from source)) に表示されます。必要な変数を選択し、[OK] をクリックして、電子メール ダイアログの [宛先] (To) の値を設定します。
14. [CC] セクションも同じように設定します。変数は SharePoint 2010 ワークフローの作成者によって手動で作成されていることに注意してください。その他のフィールドは自由に設定してかまいません。
これで、SharePoint 2010 ワークフローの戻り値を使用する方法がわかりました。
前の例では、"ワークフローの開始" アクションを使用して以前のワークフローを呼び出す方法を紹介しましたが、この概念をさらに広げて、同じアクションを使用して SharePoint 15 ワークフローに機能を追加することもできます。たとえば、SharePoint 2010 ワークフローでしか使用できないアクション (上司を検索するアクションなど) を使用する別のワークフローを "ワークフローの開始" アクションを使用して開始することにより、SharePoint 15 ワークフローの機能を拡張することができます。
"ワークフローの開始" アクションとその使い方をマスターすると、SharePoint 15 ワークフローと SharePoint 2010 ワークフローの違いを意識する必要がなくなります。
制限
SharePoint 15 ワークフローと SharePoint 2010 ワークフローの長所を完全に組み合わせて使用するにはいくつかの制限があります。
その一部は、新しいプラットフォームの設計の変更によるものです。たとえば、"割り当て段階" タイプのパラメーターは、SharePoint 15 ワークフローではサポートされなくなったため、"ワークフローの開始" でサポートされていません。したがって、"承認処理を開始する" を使用する必要がある場合は、SharePoint 2010 ワークフローを単独で使用する必要があります。
また、"ワークフローの開始" アクションを使用してリンクするワークフローはすべて 1 つのサイトにある必要があります。ただし、ワークフローの状態はそれぞれ異なるページに表示されます。
さらに、別のリストに関連付けられた呼び出し元ワークフローを SharePoint 15 ワークフローの現在のアイテムに対して実行することはできません。これは、2 つのワークフローが別のリストに対して実行されることから予想される制限です。したがって、別のリストのワークフローを実行する場合は、ターゲット ワークフローのリストで、ワークフローを実行する対象として具体的なアイテムを選択する必要があります。
まとめ
"ワークフローの開始" アクションを使用すると、実行時に、SharePoint 15 ワークフローが実行されている途中で、SharePoint 2010 ワークフローを開始できます。このアクションには、呼び出し先のワークフローの種類に応じて、"リスト ワークフローの開始" と "サイト ワークフローの開始" の 2 つの種類があります。
ターゲット ワークフローを選択し、固定値または動的な値を使用してそのワークフローの開始パラメーターを設定します。"リスト ワークフローの開始" の場合は、ワークフローが属するリストと、ワークフローを実行する対象のアイテムも選択します。
このアクションは、SharePoint 15 ワークフロー内の任意の場所に挿入できます。複数の SharePoint 2010 ワークフローを呼び出すこともできます。これにより、既存の SharePoint 2010 ワークフローを、ワークフロー内のアクションを書き直すことなく再利用できます。これは、SharePoint 15 と SharePoint 2010 のワークフローを組み合わせて使用するための非常に効率的かつ手軽な方法です。
さらに、ルックアップ ダイアログを使用して、呼び出し先の SharePoint 2010 ワークフローの戻り値を呼び出し元の SharePoint 15 ワークフローのロジックで使用することもできます。戻り値には、同じ SharePoint 15 ワークフロー内で呼び出されたすべての SharePoint 2010 ワークフローのすべてのローカル変数といくつかの条件変数が含まれます。
この機能が皆さんのお役に立つことを願っています。
Chong Youn (John) Choe
これはローカライズされたブログ投稿です。原文の記事は、「How to trigger a SharePoint 2010 workflow from a SharePoint 2013 workflow」をご覧ください。