locked
シーケンシャルワークフロー内でシーケンシャルワークフローを呼び出す方法 RRS feed

  • 質問

  • インターネット上の情報をいろいろ探し、やっとこちらにたどり着きました。 ずいぶん初歩的な質問の可能性があり、ずいぶんためらったのですが、質問させていただきます。

    【質問】
    シーケンシャルワークフローをデザイナで作成する際には、非同期で他のワークフローを呼び出すツールがツールボックス内にあります。(invokeWorkflowActivity)

    このツールは非同期でワークフローを呼び出しますが、非同期ではなく、同期で他のワークフローを呼びたいのです。

    例えば、保存ボタンを押したときに、「顧客登録」をし、それから「購入品」の登録を行い、「クレジットカード情報登録」のようなパターンを実行したいのです。当然、顧客が登録されてなければ購入品は登録できず、クレジットカードも登録できません。

    簡単だろうと思っていたのですが、私の力不足もあってうまくいきません。ここではどのように実装したのかそのソースを提示するのがまず先かと思うのですが、前提条件として以下のことをご質問させていただきます。

    問:シーケンシャルワークフローでは、同期で他のワークフローを呼ぶべきではない・またはWFでは呼べない

    質問は以上です。どうぞよろしくお願いします。

     

    2007年2月14日 8:03

回答

  • Dotnetmemo様

    ご回答いただき、ありがとうございました。基本的にはサービスを作成し、ワークフローを作成いたします。
    どうしようも無いパターンのみ(そのような状況があるかどうかわかりませんが・・・)、ManualWorkflowSchedulerServiceを使用して同期を取りながら処理をしたいと思います。

    2007年2月19日 4:23

すべての返信

  • 標準のActivityだけでは難しいですが、カスタムのActivityを作成すれば可能です。
    英語の資料ですが、以下にサンプルがあります。

    http://www.masteringbiztalk.com/blogs/jon/PermaLink,guid,7be9fb53-0ddf-4633-b358-01c3e9999088.aspx

    基本的な考え方はManualWorkflowSchedulerServiceを利用すれば同期的にWorkflowを実行できるので、それをカスタムActivityで行えば良いだけです。(ActivityがWorkflowRuntimeと直接やり取りするのは避けたほうがよく、カスタムのサービスを作成して利用する方式にしているようです)

     

    2007年2月16日 16:42
  • Dotnetmemo様

    ご回答いただき、ありがとうございました。基本的にはサービスを作成し、ワークフローを作成いたします。
    どうしようも無いパターンのみ(そのような状況があるかどうかわかりませんが・・・)、ManualWorkflowSchedulerServiceを使用して同期を取りながら処理をしたいと思います。

    2007年2月19日 4:23