?? workflow18.xoml.cs
字號:
//《WF編程》系列之18 - 觸發事件與調用方法:服務合同 Service Contracts
//3.2.3 觸發事件與調用方法
//許多開發人員想要建立一個更加正式的機制來方便和工作流交互.盡管使用Dictionary可以簡單靈活的向工作流傳遞數據,但這種方法需要參數名稱和伴隨屬性的嚴格匹配.而且我們只可以在工作流開始時使用參數向工作流傳遞數據,或在結束是獲取數據.許多工作流需要在執行過程的不同時期和宿主交換數據.我們可以使用事件和方法調用來達到這個目的.這一節,我們來討論數據傳輸通信的基本原理.
//3.2.3.1服務合同 Service Contracts
//工作流和其宿主可以通過本地通信服務(LCS,local communication service)交換數據.LCS允許工作流和宿主之間的事件和方法調用.在后臺,工作流Runtime和LCS一起工作來截取通信并提供附加服務(就像事件在排隊直到工作流處于可以接受事件的狀態).
//通過LCS進行通信需要一個消息合同,在.NET中,合同即接口的意思.接口定義了LCS暴露的事件和方法.事件從宿主傳遞數據到工作流,而方法從工作流傳遞數據到宿主.例如,下面的bug跟蹤服務接口定義中包含一個事件和一個方法:
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
using System.Drawing;
using System.Workflow.ComponentModel.Compiler;
using System.Workflow.ComponentModel.Serialization;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Workflow.Runtime;
using System.Workflow.Activities;
using System.Workflow.Activities.Rules;
namespace WorkflowConsoleApplication1
{
public partial class Workflow18 : SequentialWorkflowActivity
{
public static DependencyProperty NewBug_e1Property = DependencyProperty.Register("NewBug_e1", typeof(WorkflowConsoleApplication1.BugAddedArgs), typeof(WorkflowConsoleApplication1.Workflow18));
public static DependencyProperty AssignBug_bug1Property = DependencyProperty.Register("AssignBug_bug1", typeof(WorkflowConsoleApplication1.Bug), typeof(WorkflowConsoleApplication1.Workflow18));
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
[BrowsableAttribute(true)]
[CategoryAttribute("參數")]
public BugAddedArgs NewBug_e1
{
get
{
return ((WorkflowConsoleApplication1.BugAddedArgs)(base.GetValue(WorkflowConsoleApplication1.Workflow18.NewBug_e1Property)));
}
set
{
base.SetValue(WorkflowConsoleApplication1.Workflow18.NewBug_e1Property, value);
}
}
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
[BrowsableAttribute(true)]
[CategoryAttribute("參數")]
public Bug AssignBug_bug1
{
get
{
return ((WorkflowConsoleApplication1.Bug)(base.GetValue(WorkflowConsoleApplication1.Workflow18.AssignBug_bug1Property)));
}
set
{
base.SetValue(WorkflowConsoleApplication1.Workflow18.AssignBug_bug1Property, value);
}
}
private void AssignBug_MethodInvoking(object sender, EventArgs e)
{
AssignBug_bug1 = NewBug_e1.NewBug;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -