2011-01-05 14 views
0

私はワークフロー4.0とWCFが新しく、異なるタイプのワークフローを作成、実行、通信するWCFサービスを作成するのに苦労しています。4.0の複数の異なるワークフローを作成して通信するWCFサービスを構築する

ワークフロー3.5を使用して、さまざまなタイプのワークフローを作成および破棄し、さまざまなタイプのワークフローに単一のインターフェイスで対話できる優れたWebサービスを作成できました。例えば、3.5で与えられたコードのワークフローを作成する(コードは、ワークフロー・タイプに対応する)

[WebMethod] 
    public string CreateWorkflow(int code) 
    { 
     WorkflowRuntime runtime = createRuntime(); 
     try 
     { 
      Type type = GetWorkflowType(code); 
      string reply = ""; 
      WorkflowInstance instance = 
       runtime.CreateWorkflow(type); 
      instance.Start(); 
      reply = instance.InstanceId.ToString(); 
      instance.Unload(); 
      return reply; 
     } 
     catch (Exception e) 
     { 
      return e.ToString(); 
     } 
     finally 
     { 
      closeRuntime(runtime); 
     } 
    } 

そして任意タイプのワークフローに通信する。

  .. 
      WorkflowInstance instance = runtime.GetWorkflow(new Guid(Id)); 
      PassDataEventArgs eve = new PassDataEventArgs(instance.InstanceId, data); 
      InputData(null, eve); 
      .. 

WCFとワークフロー4.0を使用してそのようなインターフェイスを提示することは可能ですか?私はWCFを使用してさまざまな種類のワークフローを作成することができましたが、それらと通信するためにデータを渡す方法がわかりません。理想的には、私のWCFサービスでpassData(Guid id、Object data)のようなメソッドを呼び出すと、このデータを任意のタイプのワークフローのインスタンスに渡します(ワークフローがその時点でデータを受け取る正しい状態にない場合はエラーをキャッチします) )。誰も私にどのように私は単一のWCFサービス内の複数のワークフローの種類を介してそのような一般的な通信を達成することができるかについての洞察力を教えてくださいできますか?

答えて

1

IN WF4では、ワークフローをサービスとして実行する通常の方法は、WorkflowServiceHostを使用することです。ただし、WorkflowServiceHostごとに1つのワークフロー定義に制限されています。複数のワークフローが必要な場合は、複数のWorkflowServiceHostを使用します。

すべてのメッセージを受け入れ、検査し、いくつかの基準に基づいて適切なWorkflowServiceHostに渡す汎用サービスを作成できます。代わりにWorkflowServiceHostを使用するのではなく、代わりにWorkflowApplicationを使用します。これは、多くの配管コードを記述することを意味します。

関連する問題