ASP.NET рабочий процесс CallExternalMethod - PullRequest
1 голос
/ 05 апреля 2009

Я не уверен, что мне не хватает чего-то очевидного, поскольку рабочий процесс Windows используется из ASP.NET. Я не знаю, как вернуть выходные данные из рабочего процесса обратно в рабочий процесс ASP.NET.

У меня настроен рабочий процесс для обработки внешних событий, поэтому моя веб-страница может вызывать его, что работает нормально, но как мне снова получить информацию? Нужно ли запрашивать объект Workflow, чтобы найти нужную информацию? Это только кажется неправильным ...

То, что я мог сделать, это использовать CallExternalMethod в рабочем процессе, но, поскольку во время выполнения может быть только один экземпляр службы внешних данных Workflow, я не уверен, как ее можно «привязать» к отдельному человеку. страницы?

Все примеры, которые я нашел, похоже, используют пример Page Workflow, в котором вывод из рабочего процесса (когда он вызывает CallExternalMethod) просто вызывает метод статического перенаправления. Например, если я не хочу перенаправлять, а печатать результат рабочего процесса на страницу, как мне «захватить» эту информацию, чтобы ее можно было использовать на странице? (при условии, что среда выполнения вызывается из обертки, как в примерах, поэтому нельзя просто выполнить Label1.Text = bla, поскольку нет доступа к этой переменной).

Редактировать: Или это вопрос использования рабочего процесса для сохранения чего-либо в базе данных и для того, чтобы приложение ASP.NET запрашивало оттуда данные (так как экземпляр GUID может использоваться как PK?)

1 Ответ

1 голос
/ 05 апреля 2009

Эта ссылка содержит информацию о передаче и выходе из рабочих процессов:

http://books.google.com/books?id=s5eVXpNmQxgC&pg=PA32&dq=pro+windows+workflow+foundation#PPA241,M1

В отношении веб-страницы:
Единственная разница между веб-страницей и примером WinForm в приведенной выше ссылке заключается в том, что вам необходимо использовать MaualWorkflowSchedulerService (это продвигает поток, используемый веб-страницей, вместо создания новой для среды выполнения рабочего процесса).

Итак, предположим, что вы вызываете ExternalMethod одним нажатием кнопки с чем-то вроде этого (DataEvents - это служба, которую вы добавляете во время выполнения для ваших внешних методов Handle / Call):

    AddHandler DataEvents.DataReceived, AddressOf workflowEventsDataReceived    
    manualScheduler = WorkflowrunTime.GetService(GetType(Hosting.ManualWorkflowSchedulerService))
    DataEvents.OnGetDataReceived(New ExternalDataEventArgs(WorkflowInstance.InstanceId))
    manualScheduler.RunWorkflow(WorkflowInstance.InstanceId)

Тогда метод в workflowEventsDataReceived, который является целью CallExternalMethod внутри рабочего процесса (через службу, добавленную в WorkflowrunTime), сможет обновить все нужные метки.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...