微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > 企业开发 > WorkFlow >

WorkFlow自学笔记(一)

时间:2017-01-17 04:01  浏览:努力统计中...
第一次使用WorkFlow,现把学习笔记记录如下: 1)WorkFlow就我个人而言偏向于流式设计模式,尤其对于一些大型工控程序设计。或者比较复杂的流程而言尤为有效。WorkFlow可以单独运行在

第一次使用WorkFlow,现把学习笔记记录如下:

1)WorkFlow就我个人而言偏向于“流式”设计模式,尤其对于一些大型工控程序设计。或者比较复杂的流程而言尤为有效。WorkFlow可以单独运行在某个服务器端上,因此可以专门抽取一个相当复杂的逻辑使用WorkFlow做出,然后其它程序直接引用这个WorkFlow便可以使用了。

2)WorkFlow分成两大块:顺序流和状态流。本次使用前者——其流运行模式大体按照编程中“顺序模式”按部就班地执行。

3)启动顺序流方法:

3.1)右键创建一个顺序流项目:

3.2)创建完毕之后,右键选择如下文件创建xoml:

3.3)VS会自动打开一个设计器,你可以从左边工具栏拖拽出对应的WorkFlow执行的任务(这里简单起见,说明:如果仅是执行一个普通任务,那么直接拖拽“Code”)。

3.4)为“Code”起一个ExecuteCode名字(事件名称),然后双击在自生成代码中注入你要执行的任务即可。

4)交互式WorkFlow:

先前已经说过——WorkFlow必须寄宿在宿主中而不是单独使用。因此它肯定需要和宿主进行交互(达到人机交互的目的)。在顺序流中交互主要分成两大部分:

4.1)“宿主程序”=>“WF”:

       4.1.1)先在WF中定义公开的属性(get;set方法,至少是set,以便Host可以有通道输入到WF中)。

       4.1.2)在“宿主程序”中引用WF项目库,使用实例化的WorkFlowRuntime类的CreateWorkFlow方法创建WorkFlowInstance对象(注意先要启动WorkFlowRuntime,调用StartRunTime方法)。

       4.1.3)CreateWorkFlow方法有两个参数:第一个是type,用于传输究竟要调用哪个WorkFlow类;第二个是dictionary,用于从宿主告知WorkFlow究竟WorkFlow中哪些参数需要被初始化:

      [C#]

Dictionary<string,object> keyvalues = new Dictionary<string,object>();keyvalues.Add("MyName",textBox1.Text);wi = wr.CreateWorkflow(typeof(MyWorkFlow), keyvalues);

    [VB.NET]

Dim keyvalues As New Dictionary(Of String, Object)()keyvalues.Add("MyName", textBox1.Text)wi = wr.CreateWorkflow(GetType(MyWorkFlow), keyvalues)

    此时,keyValues自动会被WorkFlow去匹配其中的哪些Key在WorkFlow已经作为属性被公开定义,同时自动通过Set方法初始化WorkFlow内部属性值。

5)从WF到宿主程序传递数值:

    5.1)拖拽一个CallExternalMethod(调用外部方法)组件到WF中。

    5.2)绑定一个接口以及接口方法(此接口必须冠有“ExternalDataExchange”特性)。

    [C#]

 [ExternalDataExchange]    public interface ICallBack    {        void SendDataBack(string _name);
}

    [VB.NET]

<ExternalDataExchange> _Public Interface ICallBack    Sub SendDataBack(_name As String)End Interface

    5.3)自己创建一个类,实现该接口:

    5.4)在Host程序中,实例化ExternalDataExchangeService实体,先将其加入WorkFlowRuntime实体(调用AddService),然后把实现该接口的类的实体加入ExternalDataExchangeService实体中(也是调用AddService):

顶一下
(0)
0%
踩一下
(1)
100%
------分隔线------
栏目列表
推荐内容