1

WCFサービスとして一連のアクティビティを持つWF4ワークフローがあります。Workflow Foundation 4 AppFabricを使用しない管理

CalculateTaxesActivity
CreateOrderActivity
CreditCardAuthorizationActivity
など.....

私たちの管理者は、それを管理し、再開、キャンセルし、必要に応じてワークフローを終了させるのAppFabricを使用しています。しかし、管理のタスクをウェアハウスに委任する必要があり、AppFabricを実行しているサーバーにアクセスすることはできません。

フレームワークで使用できるAPIまたはクラスを使用してワークフローを管理する方法はありますか?倉庫担当者がワークフローを追跡して再開するようにしたい場合...

答えて

3

ほとんどの場合、AppFabric UIはワークフローまたはWorkflowServiceHostと直接通信しませんが、WorkflowControlEndpointおよびWorkflowControlClientを使用します。あなたが望めば、コードから同じことができます。

WorkflowControlEndpointは、デフォルトでNetNamedPipeBindingを使用して自身を公開します。したがって、別のマシンからの要求を受け入れる場合は、変更する必要があります。

WorkflowServiceHostの設定:

<service name="MyWorkflow“ 
     behaviorConfiguration="MyWorkflowBehavior"> 
    <host> 
    <baseAddresses> 
     <add baseAddress="http://localhost:8080/MyWorkflow" /> 
    </baseAddresses> 
    </host> 
    <endpoint address="" 
      binding="basicHttpBinding" 
      contract="IMyWorkflow" /> 
    <endpoint kind="workflowControlEndpoint" 
      address="Control" 
      binding="basicHttpBinding" /> 
</service> 

クライアントコード:

var instanceId = <<an existing workflow instanceId>>; 

var controlBinding = new BasicHttpBinding(); 
var controlAddress = 
    new EndpointAddress("http://localhost:8080/MyWorkflow/Control"); 

var proxy = new WorkflowControlClient(controlBinding, controlAddress); 

proxy.Suspend(instanceId); 
+0

ありがとう!私はこれができることを知っていた。 –

関連する問題