对.net工作流理解

1.1对于工作流总体概貌的理解
这几天一直在看MSDN,整理下自己的思路。
在.net工作流中,进程通过WorkflowRuntime创建和维护WorkflowInstance.除此而外,WorkflowRuntime可以创建自定义的服务和本地服务(为工作流处理对象设计服务),可以控制从内存中加载和卸载工作流(配合sqlWorkflowPersistenceService就可以实现工作流的持久化)等等。
现在理解下进程中workflowRuntime,workflowInstance和服务的关系(见附件)。
这是MSDN中描述服务在workflowRuntime中的执行情况,不过从侧面反映了:
1.workflowInstance由workflowRuntime创建。
2.服务由addservice()加载入workflowRuntime中,而与workflowInstance实例无关。
3.workflowInstance在创建后,自动流动触发activity。在activity中触发service中的事件,转而由workflowRuntime将事件转化为接口上的事件调用(EventHandle)。
从上面的分析,举个例子来说,就是workflowInstance相当于公司中文档批复的业务流程,而服务就是需要批复的文档以及在文档上要做的操作。而workflowRuntime则是跳出流程和文档,调整两者连接的部门(虚拟,假设有此部门)。
1.2 对ExternalDataExchangeService服务的理解
诚如MSDN所说,一个必须添加到工作流运行时引擎才能启用本地服务通信的服务。若要正确地初始化和注册这些服务( 我觉得应该是添加到workflowRuntime里服务于workflowInstance的服务),必需将本地服务添加到ExternalDataExchangeService中。
因此workflowRuntime,workflowInstance,ExternalDataExchangeService和本地服务的关系是:workflowRuntime承载workflowInstance,ExternalDataExchangeService被添加到workflowRuntime,本地服务被添加到ExternalDataExchangeService中以实现对于譬如SqlWorkflowPersistenceService的初始化。
还有,就是本地服务必须实现使用 ExternalDataExchangeAttribute 进行修饰的接口。本地服务中的需要定义方法和事件(需要实现ExternalDataEventArgs)供CallExternalMethodActivity和HandleExternalEventActivity使用。
前者用于工作流实例从外部接收信息,后者用于处理由本地服务引发的事件的工作流通信活动。workflowRuntime会将本地服务上的方法调用转化为workflowInstance上的Event触发。

  要认识工作流引擎需要了解以下几个要素:
实体(Entity) :是工作流的主体,是需要随着工作流一起流动的物件(Object)。例如,在一个采购申请批准流程中,实体就是采购申请单;在公文审批流程中,实体就是公文。
参与者(Participant) :是各个处理步骤中的责任人,可能是人,也可能是某个职能部门,还可能是某个自动化的设备;
流程定义(Flow Definition) :是预定义的工作步骤,它规定了实体流动的路线。它可能是完全定义的,即对每种可能的情况都能完全确定下一个参与者,也可能是不完全定义的,需要参与者根据情况决定下一个参与者;
工作流引擎(Engine) :是驱动实体按流程定义从一个参与者流向下一个参与者的机制

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值