工作流管理系统软件系统。
本文章由软件产品网撰写发布…
1、概述
现代社会中,人们对所从事工作的分工越来越细,完成一项工作已经不再是某一个人的事,需要多人之间的协作,以及通过对工作过程的合理组织,才能高效的完成工作。工作流正是为了解决多人之间的组织协作问题而出现的一种新技术,它利用计算机建立业务过程模型,将不同的人、不同的任务组织起来,并控制业务的执行顺序以及任务在不同的人之间的分配。
那么什么是工作流呢?依据工作流管理联盟的定义:工作流是指整体或部分业务过程在计算机支持下的自动化。
CubeFlow 是我公司开发的一种工作流中间件产品。它是参考国际工作流管理规范实现的工作流中间件,为工作流自动化和流程再造提供基础平台。CubeFlow 实现了流程逻辑与业务逻辑的分离,能够可视化的进行业务流程的分析、定义和业务单元的组装,从而使应用开发人员更关注于业务逻辑的实现,降低了复杂流程应用的开发难度。
CubeFlow 把业务中的流程控制逻辑从业务逻辑中分离出来。这种分离为应用系统带来了多方面的好处。首先,在开发时,由于对业务过程的控制可以交给CubeFlow 来做,使得应用开发人员可以专注于业务逻辑的实现,减轻了应用开发的工作量,也使得快速构建应用系统成为可能。其次,在系统运行时,当流程逻辑发生变化时,可以通过CubeFlow 流程设计器重新定义流程以适应变化的业务过程,使得无需编程而快速适应流程逻辑的变化成为可能。
2、CubeFlow 组成
CubeFlow 工作流管理系统由包含多个工作流引擎的工作流执行服务及客户端工具组成。工作流引擎以WAPI 的形式对外提供流程控制服务。WfMC 规范定义了五类接口来对工作流引擎的行为或者说对外提供的服务进行描述。工作流客户端工具及工作流应用系统使用这些接口并通过工作流执行服务与工作流引擎进行交互。
工作流管理功能框架
3、CubeFlow 功能
3.1 流程建模
流程建模能力的强弱是工作流产品区别于普通办公自动化系统的因素之一。企业中所存在的业务流程是企业生产、经营过程的反映,必然涉及多部门、多角色的人员之间的分工协作,有些业务流程的运行甚至是跨级别、跨地域、跨季度的在时间与空间上都跨度极广的复杂过程。若支持这样的业务流程,必然要求工作流产品具有极强的流程建模能力。
CubeFlow 工作流元模型基于WfMC 规范实现,是对业务流程所具有的共性的完善的抽象。CubeFlow 在对支持复杂业务流程的分层建模、复杂任务分配方式以及应付易变的业务过程方面都具有独到之处,使得客户可以轻松应付这些复杂性,同时也降低了应用系统的开发难度,减轻了开发人员的工作量。
CubeFlow 所支持的工作流元模型如下图所示:
3.2 流程控制
工作流的基本思想在于将任务按一定的规则一步步向下传递。这种规则一般来说是按流程定义的顺序关系,但是很多情况下也会发生例外。例如在实际情况中可能存在流程中当前任务的执行人直接指定下一步要提交的目标活动。Flow 所提供的流程控制功能允许流程在运行过程中打破流程定义的约束而直接创建某种活动。下表列出了Flow 所支持的各种流程控制操作及其功能。
下表对活动实例的控制性操作
序号 | 控制操作 | 功能 | 前提 |
1
|
提交
(commit)
|
1.结束当前活动实例;
2.按流程定义创建符合转移条件的所有下一步节点。 |
所有必做的业务单元处于结束状态 |
2
|
跳转 |
1. 结束当前活动实例;
2. 创建指定的目标的活动 |
所有必做的业务单元处于结束状态 |
3 | 回退 |
1. 结束当前活动实例;
2.按指定的活动实例创建其所对应的活动,并将活动的参与者直接分配给指定活动实例的执行人。 |
无 |
4
|
放回 |
1. 结束当前活动实例;
2. 重新创建相同定义的活动。 |
活动的任务分配策略为由唯一执行人执行 |
5 | 终止 |
1. 结束当前活动实例;
2. 按流程定义创建符合转移条 件的所有下一步节点。
|
无 |
6 | 取消 | 1. 结束当前活动实例; | 无 |
7
|
挂起 | 1. 将 当 前 活动实例的状态由“running ” 状态设置为“suspended”状态。 | 活动实例的初始状态为“running” |
8
|
恢复 | 1. 将 当 前 活动实例的状态由“suspended”状态设置为挂起前的状态。 | 活动实例的初始状态为“suspended” |
下表对活动实例的控制性操作
序号 | 控制操作 | 功能 | 前提 |
1 | 创建 | 创建一个新的流程实例 | 指定创建的流程定义处于“发布”状态 |
2 | 启动 | 启动刚被创建的流程实例 | 流程实例处于“not_started”状态 |
3 | 终止 | 终止流程实例 | 无 |
4
|
取消 | 取消流程实例 | 活动的任务分配策略为由唯一执行人执行 |
5 | 挂起 | 将处于“running”状态的流程实例转入“suspended”状态 | 流程实例处于“running”状态 |
6 | 恢复 | 将处于“suspended”状态的流程实例转入“running”状态 | 流程实例处于“suspended”状态 |
下表对活动实例的控制性操作
序号 | 控制操作 | 功能 | 前提 |
1 | 接收 | 对任务分配策略为“唯一执行人”的活动,将其活动实例及实例所对应工作项状态设置为“running”。同时,其他人不能再执行接收操作 | 工作项处于“not_started”状态 |
2 | 提交 |
1. 结束工作项
2. 若工作项所属活动实例的所有工作项都已结束,则结束当前活动实例,创建下一活动实例 |
所有必做的业务单元都处理完成 |
3 | 重定向任务 | 将已经分配执行人的工作项重新分配执行人 | 工作项已经被执行人接收 |
下表对活动实例的控制性操作
序号 | 控制操作 | 功能 | 前提 |
1 | 启动 | 启动应用程序实例 | 无 |
2 | 结束 |
提交应用程序实例,状态置为
“completed” |
无 |
当对工作流实例对象执行某种控制性操作时,工作流对象实例的状态就会发生改变。每个工作流对象都有从创建到最后被关闭的一个过程,我们称这个过程为工作流对象的生命周期。
工作流对象的生命周期如下图所示