0

WF4初心者です。私がやりたいことは、WF4 ステート マシンを WCF サービスとして公開することです。ステート マシンを作成しました。トランジション トリガーを実行し、WCF を使用してステータスを変更するにはどうすればよいですか。http://channel9.msdn.com/Shows/Workflow-TV/endpointtv-WF4-State-Machine-Hands-On-Lab-Exercise-2 . これは、ステート マシンを作成するために使用したチュートリアルです。

4

2 に答える 2

2

State Machine Security Doorでこれを行う方法を示すサンプルを書きました。基本的には、トランジションで Send/ReceiveReply ペアを使用するだけです。

于 2012-02-15T17:47:24.213 に答える
0

アクティビティの送受信を望まない場合は、いくつかの作業で可能です。送信および受信アクティビティは、相関関係を処理するエンドカスタマーにとっては記述が難しい場合があります。もう1つの側面は、クライアントの一般的な入り口があれば、クライアントが更新されたサービス参照を必要とせず、契約定義のみを持っている方がはるかに良いということです。

すべての相関関係を削除し、特定のxamlxワークフローに再ルーティングするが、送信/受信アクティビティを使用しない汎用Webサービスを作成しました。代わりに、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

これは、IworkflowCreationコントラクトを実装するWorkflowCreationEndpointと呼ばれるWFサンプルで利用可能な動的エンドポイントと組み合わされます。

[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);
}
于 2012-02-20T14:23:02.427 に答える