Рабочий процесс Windows завершается после установленного срока

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

Проблема в том, что с каждым рабочим процессом связана дата выполнения, поэтому мне нужно завершить рабочий процесс там, где он истек. Сначала я думал, что выставлю еще одну отдельную службу WCF в рабочем процессе, которая будет завершать рабочий процесс только при каждом вызове этой службы. Но когда я создал отдельную службу WCF (SendAndReply Activity), она не отображалась как контракт операции, когда я добавлял ссылку на службы рабочего процесса.

Может ли кто-нибудь сказать мне, как мы можем прекратить рабочий процесс, если срок выполнения достигнут? То есть как сделать отдельный процесс для завершения рабочего процесса?


person Sumit    schedule 23.03.2012    source источник


Ответы (2)


Насколько я понял, ваш рабочий процесс лучше реализовать в виде конечного автомата. Затем вы можете легко реализовать ожидание ввода пользователя. Вы можете использовать триггер с задержкой для завершения (или перехода в конечное состояние) для своей задачи. Или вы можете использовать действие отправки и получения в триггере, чтобы представить его как службу WCF.

И если вы используете system.activities.extensions, вы можете легко использовать активность DelayUntilDateTime.

person Jayantha Lal Sirisena    schedule 23.03.2012
comment
как я понял, в WWF4 конечные автоматы берут на себя блок-схемы, не так ли ?? - person Sumit; 23.03.2012
comment
Не совсем. Но государственная машина выпущена сейчас. Вам необходимо установить microsoft.com/download/en/details.aspx? id=11705, тогда вы можете использовать конечный автомат. Я чувствую, что блок-схема - это что-то среднее между последовательностью wf и конечным автоматом wf. Но, конечно, вы можете использовать его для вашего требования. Но я считаю состояние машины более подходящим. - person Jayantha Lal Sirisena; 23.03.2012
comment
отправьте получающую активность в триггере, чтобы представить ее как службу WCF. Это сработало для меня, как горячий нож сквозь масло. большое спасибо за ваш быстрый ответ. - person Sumit; 23.03.2012

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

person Kirk Broadhurst    schedule 23.03.2012