首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WF4 Workflow Service 關聯實戰:以流程表單申請/審批示範 CorrelationHandle 與 XPathMessageQuery 設定

     編輯:關於.NET

前言

WF4 引入訊息關聯機制,確保工作流服務正確路由相關訊息。本文以簡單申請/審批流程示範 CorrelationHandle 與 XPathMessageQuery 設定。

資料合約

[DataContract]
public class FlowForm
{
    [DataMember] public Guid FormNum { get; set; }
    [DataMember] public string FlowStatus { get; set; }
    [DataMember] public string ApplyName { get; set; }
    [DataMember] public string ApplyContent { get; set; }
}

工作流設計

兩個 ReceiveAndSendReply 區塊:

  1. 提交申請:CanCreateInstance=True,接收 SendFlow 訊息,以 FormNum 初始化關聯,回覆表單資訊
  2. 審批:接收 ApproveFlow 訊息,依 FormNum 關聯現有實例,更新狀態並回覆

設計圖:


關鍵 XAML 片段

  • 變數:FlowForm flowApp、CorrelationHandle flowHandle
  • 第一個 Receive:CorrelatesWith="[flowHandle]",CorrelationInitializers 加入 RequestReplyCorrelationInitializer 綁定 __handle1,CorrelatesOn 用 XPath 擷取 FormNum
  • 第二個 Receive:同樣 CorrelatesWith="[flowHandle]",XPath 擷取 pid (FormNum) 進行關聯

宿主與用戶端

// 宿主
WorkflowServiceHost host = new WorkflowServiceHost(new Workflow1(), new Uri("https://localhost:8081/FlowService"));
host.Description.Behaviors.Add(new ServiceMetadataBehavior { HttpGetEnabled = true });
host.Open();

// 用戶端 (WebForm)
FlowForm flow = new FlowForm { ApplyName = txt1.Text, ApplyContent = txt2.Text, FlowStatus = "申請" };
var client = new FlowServiceClient();
listBox.Items.Add(client.SendFlow(flow)); // 取得 FormNum

// 審批
flow.FlowStatus = "審批";
listBox.Items.Add(client.ApproveFlow(flow.FormNum, flow.FlowStatus));

執行結果

結語

WF4 關聯機制靈活強大,透過 CorrelationHandle 與 XPath 即可實現複雜的長時間工作流服務協調。出處:https://carysun.cnblogs.com/

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved