早期版本中,HandleExternalEventActivity 事件處理器直接包含數據庫操作邏輯,導致工作流定義與數據訪問層強耦合。引入 WCF 後,WF 專注流程編排,數據操作下沉至服務層,實現關注點分離。

| 屬性 | 說明 | 關鍵點 |
|---|---|---|
ChannelToken | 客戶端通道關聯標識 | 需與服務端配置一致 |
EndpointName | 服務通信端點名稱 | 對應 <client> 節點 |
ServiceOperationInfo | WCF 服務契約接口 | 定義操作簽名與數據契約 |
OwnerActivityName | 關聯的宿主活動名稱 | 通常為 HandleExternalEventActivity |
Parameters | 方法參數綁定集合 | 需後台代碼動態賦值 |
// HandleExternalEventActivity 事件中
private void OnExpenseSubmitted(object sender, ExternalDataEventArgs e) {
// 業務驗證、上下文準備
sendActivity.Parameters["ExpenseId"] = e.InstanceId;
sendActivity.Parameters["Amount"] = expense.Amount;
sendActivity.Parameters["Applicant"] = CurrentUser.Name;
}
工作流引擎自動序列化參數,通過 WCF 通道發送至服務端,實現同步調用語義。