Как работает двигатель рабочего процесса внешнее событие?

StackOverflow https://stackoverflow.com/questions/3675331

Вопрос

WorkflowRuntime workflowRuntime = new WorkflowRuntime();

 ExternalDataExchangeService dataExchangeService;
 dataExchangeService = new ExternalDataExchangeService();
 workflowRuntime.AddService(dataExchangeService);

 PaymentProcessingService paymentProcessing;
 paymentProcessing = new PaymentProcessingService();
 dataExchangeService.AddService(paymentProcessing);

С вышеупомянутым кодом наше приложение может использовать PaymentProcessing.raisexxxxevent для интерактивности с экземпляром рабочего процесса. Мой вопрос: какой принцип для реализации такого механизма. Я думаю, что это своего рода Уровень ведомости событий, но как я могу реализовать этот механизм и почему? Пожалуйста, укажите мне направление или любые ссылки ценятся.

Кстати, есть ли механизм в JBPM? Включает ли JBPM Workflow Sequence Workflow и State Machine Workflow, как Foodation Workflow Workflow?

Спасибо !

Это было полезно?

Решение

WF Определяет набор сервисов основных рабочих процессов, которые обрабатывают планирование потоков, постоянство рабочего процесса, транзакции и отслеживание рабочего процесса. Дизайнеры WF могли бы внести реализацию этих услуг в самом двигателе выполнения, но они мудро решили их экстернализовать, размещая их реализации в Служебные услуги. Это места вас контролировать. Отказ Вы решаете, какие службы использовать (некоторые являются необязательными) и какая реализация для использования для каждой службы.

WF также поддерживает еще один вид услуг, известный как локальный сервис (иногда называется службой обмена данными). Это сервис, который вы создаете и реализуете себя. Местный сервис может служить только с какой-либо целью, но одно общее использование состоит в том, чтобы облегчить связь между экземплярами рабочего процесса и приложением хоста. В отличие от этого, Core Workflow Services у каждого есть цель (например, постоянство, отслеживание), которая была определена Microsoft. Вы можете разработать альтернативные реализации для каждого основного сервиса, но это не изменяет их определенную цель.

Чтобы ваша местная услуга доступна для вашего экземпляра рабочего процесса. Есть несколько методов для этого. Самым простым будет использовать кабельтернометричность и настроить ее.

Также услуга должна иметь интерфейс и украшен [ExternalDataExchange].

Если вы смотрите на написание собственной реализации основного сервиса, вот ссылка, которая описывает, как предоставить Собственный сервис рабочего процесса.

http://msdn.microsoft.com/en-us/library/ms734705(v=vs.90).aspx.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top