📄 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 + -