Сервис Workflow 4 для одновременного создания (отправки и получения) нескольких сервисов Workflow - PullRequest
0 голосов
/ 28 марта 2012

Предположим, существует служба рабочего процесса A. WF A может иметь более одного экземпляра (используя CanCreateInstance). Теперь предположим, что существует WF B, который отличается (по содержанию), но имеет те же характеристики, что и WF A. Чтобы завершить WF A, он должен вызвать WF-B n (динамически определенное) время (конечно, каждый раз с разными аргументами).

Псевдо-рабочий процесс может быть:

Instance of WF-A:
    // WF is instantiated 
    // do some activities
    parallel-foreach (product in Products)
        Send & Receive to a different instance of WF-B with parameter product
    // do some activities
    // WF-A is done

Единственный вопрос: как вы реализуете такую ​​схему?

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

Следует отметить несколько вещей:

Существует два способа вызова службы в WF.

  • Одним из способов является использование обмена сообщениями в стиле действий отправки и получения, в котором необходимо указать адрес службы (или конечную точку конфигурации), а также имя и аргументы метода (включая их имена).
  • Другой способ - использовать справочную службу.При использовании такой ссылки Visual Studio создаст отдельное действие для каждого метода обслуживания.Этот путь кажется естественным и использует абстракцию активности WF (используйте этот путь, если это возможно!).

Обратите внимание, что файл .XAMLX, декларативно представляющий службу WF, будет указывать наконкретная операция ссылки на службу, которая в конечном итоге связана с dll проекта, в котором находится XAMLX.

Обратите также внимание, что созданная операция ссылки на службу указывает на некоторую привязку клиента конфигурации WCF.Поскольку WF-A является клиентом WF-B.

Следовательно, вы можете сделать следующее:

  1. Делать все, что вы хотите в WF-A - просто используйте WF-B с помощью службы справочной деятельности.

  2. Хост WF-A должен иметь ссылку на сборку, в которой находится WF-A.XAMLX (что означает, что хост будет иметь WF-B деятельность из своей справочной службы).Это означает, что XamlX сам по себе недостаточно для хоста.

  3. Добавить ссылку на службу (с тем же пространством имен, что и в сборке WF-A) к WF-B в хост WF-A, измените конфигурацию клиента хоста, удалив начальные пространства имен в разделе клиента в имени контракта (IServiceB вместо ServiceReference.IServiceB)

Последний шаг можно заменить на настройку привязок клиента самостоятельно, но гораздо проще использовать справочную службу (которую также можно обновить)

0 голосов
/ 29 марта 2012

Не уверен, что вы спрашиваете - вы должны иметь возможность поместить действие Sequence в действие ParallelForEach и поместить действия отправки и получения в последовательность.

Вот пример использования ParallelForEach:

http://msdn.microsoft.com/en-us/library/dd647810.aspx

...