Как разместить конечный автомат WF4 в качестве службы WCF - PullRequest
0 голосов
/ 15 февраля 2012

Я новичок в WF4.Что я хочу сделать, это представить конечный автомат WF4 в качестве службы WCF. Я создал конечный автомат.Как я могу выполнить триггеры перехода и изменить статус с помощью WCF.http://channel9.msdn.com/Shows/Workflow-TV/endpointtv-WF4-State-Machine-Hands-On-Lab-Exercise-2.Это учебник, который я использовал для создания конечного автомата.

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

Я написал пример, который показывает, как это сделать, на State Machine Security Door .В основном вы просто используете пары Send / ReceiveReply в переходах.

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

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

Мы удалили все корреляции исоздал общий веб-сервис, который перенаправляет к определенному рабочему процессу xamlx, но не использует действия отправки / получения.Вместо этого мы используем закладки внутри рабочего процесса xamlx.Поэтому мы создали собственное действие для получения пользовательских данных потока страниц и другое действие для отправки данных обратно в экземпляр.Единственная проблема, с которой мы столкнулись.

public interface IWorkflowService
{
    #region State Machine / Pageflow Operations

    [OperationContract]
    IPageflowData Start(IPageflowData pageflowData);

    [OperationContract(Name = "StartWithInputs")]
    IPageflowData Start(IPageflowData pageflowData, IDictionary<string, object> inputs);

    [OperationContract]
    IPageflowData Resume(PageflowCommand command, IPageflowData pageflowData);

    [OperationContract(Name = "ResumeWithExecuteCommand")]
    IPageflowData Resume(string commandName, IPageflowData pageflowData);

    [OperationContract]
    IPageflowData ResumeTo(string stepName, IPageflowData pageflowData);

    #endregion

Это объединено с динамическими конечными точками, доступными в примерах WF, называемых WorkflowCreationEndpoint, реализующих контракт IworkflowCreation.

[ServiceContract(Name = "IWorkflowCreation")]
public interface IWorkflowCreation
{
    [OperationContract(Name = "Create")]
    Guid Create(IDictionary<string, object> inputs);

    [OperationContract(Name = "CreateWithInstanceId", IsOneWay = true)]
    void CreateWithInstanceId(Guid instanceId, IDictionary<string, object> inputs);

    [OperationContract(Name = "ResumeBookmark")]
    void ResumeBookmark(Guid instanceId, string bookmarkName, object bookmarkValue);
}
...