工作流引擎产品无论国内或国外都有不少成熟之作,开源的工作流产品也有诸如shark之类的精品。但工作流产品做为一个独立的中间件,无论是其本身或通过它进行流程设计及与你自己的系统整合,对很多使用过工作流产品的开发人员来说都是一件不容易的事。特别是在一些其实只是一些很简单的流程控制应用需要时,我们是否需要一个独立的工作流产品来运作呢?
也许你可以尝试自己做一个工作流组件?听起来好象有点儿难,但其实并不是一件很恐怖的工作。让我们先从通常会使用到工作流引擎的情景分析下我们需要什么?
情景:某公司需要对员工请假进行管理,员工请假需进行系统填写申请,如果请假天数<=1天,可以部门主管批准。如果请假天数>1天,需由部门主管->副总经理进行再行批复。批准后的请假自动记入考勤系统。
从这个简单的业务需求,我们进行分析它的需求:
1、工作流程的选择是由业务信息(请假单)相关联的,工作流独立存在是无意义的。
2、业务信息中的内容会决定流程的选择与流向。如:请假天数,或是主管的批复意见
3、工作流程的流转与组织结构、角色、员工相关。
4、工作流程通常会调用相关业务应用(记入考勤)来完成多应用系统之间的协作。
结合以上需求,我们定义出工作流系统所需功能与数据:
1、流程定义工具(负责生成工作流引擎能明白的流程控制信息),对应于XPDL
2、工作流控制变量定义(即用于控制流程流转的控制量,如请假天数与各级审批意见,可由系统根据流程实体信息自动注入至工作流引擎)
3、工作流相关数据,即与业务过程相关的数据,如:业务表单、组织结构、角色、员工等
4、工作流引擎,负责解释流程定义,创建过程实例并控制其执行,并可能提供相关的监控界面以保障工作流的正确运转。
5、外部应用,可由工作流引擎进行调用完成多个业务系统的流程衔接。这通常是工作流引擎的最大亮点。
未完待续>>
本人原创文章,欢迎转载,转载请注明出处!