1

У нас есть рабочий процесс WF4 с последовательностью действий в качестве службы WCF.Workflow Foundation 4 Управление без использования AppFabric

CalculateTaxesActivity
CreateOrderActivity
CreditCardAuthorizationActivity
и т.д .....

Наш Администратор использует AppFabric управлять ею и возобновить, отменить, прекратить рабочие процессы, если это необходимо. Но нам нужно делегировать задачу управления на склад, и мы не хотим предоставлять доступ к серверам, на которых работает AppFabric, для этого.

Есть ли способ управлять рабочими процессами с помощью API или классов, доступных в Framework? Мы хотим, чтобы Складской персонал для отслеживания и резюме рабочих процессов, если любой из них неисправных и т.д ...

ответ

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

Спасибо! Я знал, что это можно сделать. –

Смежные вопросы