工作流
1.为什么需要工作流
--概念:工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括、描述,简单的说,它就是工作从开始到完成的过程
--将 用户业务相关问题 à 映射到与实现技术相关的à 面向对象体系架构
--通过构建基于工作流和规则驱动的软件体系架构,保证映射的准确性和灵活性
2.作用:
1. 工作流技术已经被广泛应用于电子商务、电子政务、工业制造等领域,极大地加快了业务过程的处理速度,提高生产效率
2. 提高固化软件(模块设计)的重用性,方便业务流程改进
3 .方便开发,减少需求转化为设计的工作量,简化维护,降低开发风险
4. 实现了业务流程的集中统一 : 业务流程不再是散落在各种各样的系统中
3. 工作流规范
XPDL:工作流管理联盟WFMC(Workflow Management Coalition),工作流领域第一个致力于标准化工作的组织,开始于1993年, 发布了参考模型和XPDL(XML过程定义语言)规范。
JSR 207: Java的流程定义 -是由Java Community Process (JCP) 发起,如何在J2EE应用服务器中实现业务流程自动化的标准
Workflow management facility:OMG基于WfMC规范,定义如何向CORBA转换。
BPSS:ebXML
BPML & BPQL: BPMI
BPEL:微软、IBM等提出的
4. 工作流系统
开源项目
wfmOpen:WfMC和OMG基于workflow facility的工作流引擎的J2EE实现
OFBiz:基于WfMC和OMG的规范,使用XPDL作为流程定义语言。
ObjectWeb Bonita:符合WfMC规范、灵活的协同工作流系统
Open Business Engine:Java工作流引擎,支持WfMC规范
XFlow / jBpm / OpenEbXML / Werkflow / OSWorkflow / …
如: OSWorkflow是一个灵活的工作流引擎,设计成可嵌入到企业应用程序中。它提供了许多的持久化API支持包括:EJB,Hibernate,JDBC和其它。OSWorkflow还可以与Spring集成。
商业项目
IBM:holosofx BPM。
Bea:WLI
Fujitsu:i-Flow
SAP:NetWeaver
Ultimus
5. 工作流入门
状态层:
--所有状态和控制流的表述,都属于业务流程的状态层。
--状态: 定义了一种对外部提供结果的依赖
实现步骤:
1.流程定义:一个业务流程或过程的规格化描述
2.流程实例:流程定义的一个运行实体
3.活动:
流程定义通常用一些活动表述,包括状态和动作。
状态是各个审批环节,又叫节点,在流程运行时,流程引擎必须等待,直到外部参与者通知工作流管理系统指定的状态完成。
链路:状态之间的连接路径,必须定义执行的条件。
动作是流程运行过程中指定的事件发生时,引擎启动并执行的程序逻辑
4.节点实例:流程实例中的某个环节
5.参与者:状态对外部提供结果的依赖,譬如部门或人
上下文层:
--流程上下文变量(process context variable) ,或简称变量,是与流程实例相关的变量。
--流程开发人员可以使用流程变量存储跨越流程实例整个生命周期的数据。
·相关概念:
--流程参数:流程在每个状态处理中的输出变量,在流程模板中要用到它
--流程变量:流程在每个状态处理中的输入变量。它在链路的条件定义中使用,并贯穿整个流程引擎的使用过程
程序逻辑层:
·概念:在流程运行过程中,工作流系统响应指定的事件(event)执行的一段程序逻辑
·流程模板:一个核心流程引擎类。每一个流程都会用的一些公有方法在模板里都有实现。如目前流程模板就实现了初始化、流程启动、启动前、启动后、节点前处理、节点后处理、流程结束处理等。也定义了审批、追回、打回、撤消、强制办结
用户界面层:
·概念:参与者通过事件,来改变一个状态的用户接口。
·一个用户使用流程的界面:
--定义了审批、追回、打回等的多个界面,同时包括多个通用的操作:审批、追回、打回、撤消、强制办结等
·一个流程定义的界面:是一个流程配置界面
6.流程提高篇
1· 状态类型
1.按对外部依赖来分
人员:即该状态的外部依赖者是人或岗位或部门,它必须由人手动提交方能流转;
自动:不依赖外部,能够自动流转,不需手动提交
虚拟:链路汇聚点,不记录其值
2.按流程过程分,一个完整的流程至少包括开始与结束两个状态。
开始状态
执行中状态
结束状态
2· 流程执行
--流程启动
流程模板启动
流程启动
--流程终止
当前流程的下一结点是结束结点时
审批中不同意
执行了打回给拟稿人并结束时
--流程流转
审批同意进入下一节点
超时处理
会签处理
平级转发处理
追回处理
暂存处理
打回处理
撤消处理
3· 流程类别
--自由流程
流程启动,启动多个满足条件的活动实例,如果只有一个,继续,否则供前台选择,并停止未被选择的实例,依次循环,直到办结
--同步流程
多个分支同时满足条件而启动,则最先满足的状态必须等待
--异步流程
不会阻滞,同时进行
--父子流程
7.目标业务流程
功能区域 | 流程 |
内务 / 行政 | 服从规章 指南 支出流程 调查流程 记录路线及许可 |
金融 | 合同审批( Sarbance/Oxley法案 ) 发票处理流程 借贷流程 请款流程 销售预测流程 采购申请流程 预算/资金 拨款申请 |
生产 | ISO9000流程 工程变化申请 生产次序更改流程 部件管理 返回授权 质量控制 |
人力资源 | 工作人员活动 表现评估 请假申请 出行申请 招聘流程 时间表 |
市场/销售 | 新设帐号安装流程 销售机会管理 制作计划书 定单处理流程 顾客关怀流程 客户报价申请流程 资助申请流程 |
产品开发 | 新产品介绍流程 产品改进流程 新产品开发流程 缺陷汇报流程 |
8..工作流术语和定义
工作流 | 很简单,它就是工作从开始到完成的过程。 工作流由流程逻辑和路线规则组成。 流程逻辑定义了任务的顺序和必须遵循的路线规则,还有截止期限以及由工作流引擎实现的其他业务规则。 |
流程定义 | 一个图形流程定义或流程图,代表工作流的流程逻辑元素以及各元素之间的关系。 |
流程实例 | 一个流程实例,通常称为工作,是一个流程定义的运行实例。 |
工作流管理系统 | 一个软件应用程序,它存储流程定义并通过其工作流引擎组件来根据这些流程定义运行工作。工作流引擎是运行时执行模块。 |
流程定义工具 | 一个用来创建和更改流程定义的软件工具。 该工具可以是一个业务流程管理软件的组件、一个独立的应用程序或者一个工作流管理系统的组件。 流程定义工具提供了重用已存储工作流元素甚至所有子流程的能力,这使工作流应用程序开发者生产力更高,因为他们在构建工作流并在工作流中集成其他应用程序时避免了再次发明这些轮子(应用程序)。 |
参与者 | 以下类型之一:资源集、特定资源、组织单元、角色(一个人在组织内部的作用)、人或系统(自动代理)。它可以回答业务流程中“谁?”这个问题。 |
活动 | 组成流程定义中的一个逻辑步骤的任务。可以是自动的或人工的。 自动指在流程操作过程中定义脚本和触发器的能力。流程定义中的特定活动可以作为无人参与的任务来运行,自动化可以在手工或人力驱动的任务中执行业务规则。常见的一种自动活动就是截止期限管理,如果某个工作项在预定的截止期限之前未能完成,该管理可以自动发送一条提醒消息或触发一个延期程序。 |
活动所有者 | 活动所有者是有权宣布一个活动结束,然后推进工作到流程中的下一个活动的参与者。 |
工作所有者 | 工作所有者是有权整体控制流程实例执行过程的参与者。 |
工作项 | 代表流程实例中活动的参与者将要执行的工作 |