1 工作流是什么?
为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。
2 分类
业务流、审批流
3 解决方案
Workflow、BPM、Activity
二 工作流服务
1 对外接口
1 流程定义的导入导出,为不同的流程定义提供商定义了一个接口规范。
2 用户接口,工作流系统必须提供与用户交互的通道
3 外部应用接口,调用外部应用所需要的接口
4 不同工作流系统之间的接口,跨系统、跨服务器之间的数据接口
5 管理和监视,用户管理和监控系统运行状态,查看历史记录等数据。
2 核心业务
RepositoryService:用于设计流程模板。
RuntimeService:每当一个流程定义被启动一次之后,都会生成一个相应的流程对象实例。Runtime Service 提供了启动流程、查询流程实例、设置获取流程实例变量等功能。
TaskService:流程定义中的每一个执行节点被称为一个 Task,对流程中的数据存取,状态变更等操作均需要在 Task 中完成。
IdentityService:工作流内置了用户以及组管理的功能,必须使用这些用户和组的信息才能获取到相应的 Task。
ManagementService:Management Service 提供了对流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于工作流系统的日常维护。
HistoryService: History Service 用于获取正在运行或已经完成的流程实例的信息,与 Runtime Service 中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化。
FormService: 工作流中的流程和状态 Task 均可以关联业务相关的数据。通过使用 Form Service 可以存取启动和完成任务所需的表单数据并且根据需要来渲染表单。
三 持久化
1 持久化方式
XML、数据库
2 持久化数据库
四 工作流宿主
1 WorkflowInvoker提供调用工作流的简单方法,我们使用WorkflowInvoker对象时,就像使用一个普通方法一样创建和启动工作流,并且只能用于不使用持久化的工作流;
2 WorkflowApplication对象为执行工作流提供了更加丰富的模型,包括生命周期事件通知、执行控制、书签恢复和持久化等;
3 WorkflowServiceHost为消息传递活动提供支持,一个工作流主机可以管理多个工作流实例,用于工作流远程调用。
五 设计时描述
设计时描述类:每个流程以IWfProcess来表示,在流程中我们会有很多的活动点,但是起始点和终结点只有一个.所以流程的描述会有一个起始点描述,多个中间活动点描述和一个终结点描述.这些活动点上可能有一些流转时的限制条件,所以我们还需要条件的描述.
但是只有这些内容不足以完整的定义一个流程,因为缺少流程的流向,即活动点之间的关系.所以我们还需要线描述来联结活动点,说明活动点的先后顺序.线的流转也可能会有一些条件的判断和限制,比如说当金额超出时流转到活动点1,否则流转到活动点2.这样我们就可以完整地描述一个流程,并将其保存至数据库或文件.
六 运行时实例
运行时实例:流程的运行时对象与设计时对象相比,多了一些操作和流程的起始结束时间,创建者,操作者,分派人,候选人等信息,流程运行的操作包括流转到下一活动点,撤回到已有活动点,取消流程,流程结束.这些操作都由流程的实例来完成.活动点实例检查是否可以流转,受到活动点条件描述或线条件描述的制约.
七 运行环境
1 运行时的参数
WfProcessStartupParams
流程启动参数包含流程创建人,分派人等信息持有一个流程描述.
WfRuntimeParameters
流程启动参数,定义是否加载Action
WfTransferParams
流程流转时参数包含分派人以及操作人.持有下一活动点的描述.持有下一活动点的入线描述.持有WfBranchProcessTransferParams集合,为只读属性.由描述文件自动生成
WfBranchProcessTransferParams
子流程启动参数,持有子流程描述,持有WfBranchProcessStartupParams集合
WfBranchProcessStartupParams
每一种分支流程的启动参数,包括分派人集合信息.
2 流程执行上下文
WfProcessActionContext
在工作流的运行环境中用来存放一些行为和操作,流程的流转,撤回,通知相关人员等操作都需要使用 WfProcessActionContext中的一些数据或操作.
3 流程实例管理器
WfRuntime
前面我们在启动流程时使用过WfRuntime类, 通过WfRuntime来管理所有运行中的流程实例。该类提供了流程实例的装载,保存,删除以及启动新流程实例的功能.它持有一个很重要的对象,就是WfProcessActionContext,在WfRuntime中它的生命周期是单次会话,即缓存在ContextCacheQueue中,很多方法都要访问WfProcessActionContext来完成。
八 前台框架
介绍前台几个模块之间的关系
九 执行控制
1 表单数据
2 持久层
3 控件
4 事件
1 工作流执行时触发的事件
1 Aborted工作流中止时触发的事件
2 Completed工作流完成时触发的事件
3 Unloaded 工作流卸载时触发的事件
4 Idel 工作流进入空闲状态时触发的事件
5 PersistableIdle工作流进入空闲状态并且可被持久化时执行的事件
2 客户选择触发的事件
<span style="font-size:18px;"> public event MoveToEventHandler BeforeMoveTo;
public event MoveToEventHandler AfterMoveTo;</span><span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-size:18px;">
public event ExecutorEventHandler BeforeExecute;
public event ExecutorEventHandler PrepareApplicationData;
public event PrepareTasksEventHandler PrepareMoveToTasks;
public event PrepareTasksEventHandler PrepareNotifyTasks;
public event PrepareUserOperationLogEventHandler PrepareUserOperationLog;
public event ExecutorEventHandler SaveApplicationData;
public event ExecutorEventHandler AfterSaveApplicationData;
public event ExecutorEventHandler AfterModifyWorkflow;
public event ErrorEventHandler Error;</span>