Управление Workflow Foundation 4 без использования AppFabric - PullRequest
1 голос
/ 25 января 2012

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

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

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

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

1 Ответ

3 голосов
/ 26 января 2012

Интерфейс AppFabric в большинстве случаев напрямую не взаимодействует с рабочим процессом или 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);
...