Справочник по сервису Windows Workflow 4.0 не отображается на панели инструментов - PullRequest
0 голосов
/ 01 ноября 2011

Я создал простое приложение-службу рабочего процесса (WF1), затем я добавил в свое решение клиент Windows Form с другим действием рабочего процесса (WF2).Затем я добавил правильную ссылку на сервис WF1.Когда я пытаюсь использовать ссылку на службу, чтобы добавить вызов сообщения из WF2 (формы Windows) в WF1 (приложение службы рабочего процесса) ... на панели инструментов нет элементов, представляющих мою службу ref WF1!Это отсутствует.Не повезло, пытаясь добавить это ... Я потерян.Есть идеи?

1 Ответ

0 голосов
/ 01 ноября 2011

После просмотра видео и на основании вашего второго комментария, приведенного выше, я считаю, что нет необходимости пытаться использовать WorkflowService в качестве действия внутри другого рабочего процесса, так же, как показывает видео. Поймите, что в видео он звонит только одной из сервисных операций. Проект шаблона консоли Workflow позволяет легко вызывать операцию службы, оборачивая операцию в Activity, что освобождает вас от необходимости создавать прокси-клиент. Есть и другие способы достижения того же результата.

Что бы я сделал: добавьте ссылку на службу в вашем WinForms-клиенте в WorkflowServiceApp, WF1 (вы уже сделали это). Во втором рабочем процессе (WF2) создайте экземпляр прокси типа WF1 и вызовите операции, которые служба предоставляет напрямую, как если бы вы не вызывали обычную операцию службы, если бы вы не были внутри рабочего процесса. Это в основном потребляет услугу WCF. Одним из вариантов будет создание переменной типа вашей службы, создание новой ссылки, например, в операции Assign, создание переменной типа результата службы и, наконец, вызов службы. в другой операции Assign или InvokeMethod.

Первое задание:

proxy = New WF1Client() //That has to be the name of you client as created by the Service Reference

Второе задание:

Result = proxy.MyMethod(...) //The call to the operation. You would have to create the variables to hold the result and any input parameters you wish to pass to the operation.

Это было бы прямо. Вам не нужно будет использовать саму службу в качестве Действия.

Если вам все еще нужно сделать одно действие для использования внутри конструктора или использовать его совместно с другими рабочими процессами, создайте Кодовое действие , выполните в нем операцию службы (создайте экземпляр прокси, установите входы и т. д.), скомпилируйте, и ваш код активности появится на панели инструментов, чтобы вы могли использовать его в WF2. Кроме того, если вы создаете ClassLibrary и реализуете свои действия, либо те, которые поставляются с WF, либо настраиваемые действия , вы можете повторно использовать их в различных проектах рабочих процессов, ссылаясь на ClassLibrary. Если у вас есть контроль над развитием WF1, вы можете использовать этот подход для повторного использования своей деятельности.

Надеюсь, это поможет.

...