Как создать последовательный рабочий процесс многократного использования WF? - PullRequest
1 голос
/ 19 февраля 2010

У меня два клиента с одинаковым рабочим процессом (Создать файл -> Транспортный файл -> Ждать ответа -> Отправить ответ внутренней команде) Однако реализация каждого шага отличается для каждого клиента. Например, одному клиенту требуется отправка плоского файла по протоколу SFTP, а другому клиенту требуется отправка файла XML по FTP.

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

Однако я незнаком с WF и не уверен, как это реализовать. Может кто-нибудь указать мне, как правильно использовать этот шаблон? Будет ли иметь значение, выберу ли я WF 3.5 или WF 4.0?

Спасибо.

Ответы [ 4 ]

0 голосов
/ 25 марта 2010

Вы можете посмотреть на шаблон стратегии , где конкретная реализация настраивается во время выполнения.

0 голосов
/ 19 февраля 2010

Из того, что вы описали, очевидно, что вы имеете дело с файлами разных типов (xml, raw и т. Д.). Я бы точно написал интерфейсы в этом сценарии, так как у вас один и тот же процесс, но с разными деталями кода в каждом случае. Например, у вас есть «вещь» TransportFile, которая либо отправляет, используя порт SFTP или FTP. Вы можете указать порт в конструкторе или любым другим способом. «WaitForResponse» может быть наилучшим образом реализован, если ваш «GetResponseActvity» реализует AsynchCodeActivity, предоставляемую WF4.0. Для каждой конкретной задачи вам может понадобиться вспомогательный класс для ваших действий «общего назначения». Хорошая вещь о WF заключается в том, что вы можете выполнить все настройки для разных клиентов в конструкторе, перетаскивая эти действия и настраивая их с этими вспомогательными объектами.

0 голосов
/ 20 февраля 2010

Мне интересно, будет ли это лучше реализовано, если рабочий процесс просто вызовет службу WCF, а различные каналы связи будут абстрагированы в классы каналов WCF ...

0 голосов
/ 19 февраля 2010

Вы можете создавать действия, которые координируют основную работу и переносят детали реализации на внешние объекты. И WF3, и WF4 имеют схожий механизм: WorkflowRuntimeService в WF3 и Расширения в WF4, где вы можете добавлять дополнения к действиям в среде выполнения. В вашей деятельности вам передается контекст, который вы можете использовать, чтобы получить фактическое расширение и использовать его для выполнения необходимой работы.

...