沈阳新一代信息技术有限公司
工作流引擎技术调研报告
技术文档
董威
2016/3/14
一、背景
  将业务流程的定义,审批从业务系统中分离出来,统一进行规划与管理。
二、目的
对工作流引擎的各种实现技术进行统一的甄别,确定适合项目需求,和现应用技术进行良好集成,学习成本相对较低的工作流引擎。
三、需求及简介
工作流是一项分离业务操作和系统流程的技术。工作流由实体(Entity)、参与者(Participant)、
流程定义(Flow Definition)、工作流引擎(Engine) 四部分组成。
实体是工作流的主体,是需要随着工作流一起流动的物件(Object)。例如,在一个采购申请批准流程中,实体就是采购申请单;在公文审批流程中,实体就是公文。
参与者是各个处理步骤中的责任人,可能是人,也可能是某个职能部门,还可能是某个自动化的设备;
流程定义是预定义的工作步骤,它规定了实体流动的路线。它可能是完全定义的,即对每种可能的情况都能完全确定下一个参与者,也可能是不完全定义的,需要参与者根据情况决定下一个参与者;
工作流引擎是驱动实体按流程定义从一个参与者流向下一个参与者的机制
前三个要素是静态的,而第四个要素是动态的,它将前三者结合起来,是工作流的核心组成元素。
1 . 需求
所选工作流引擎需实现以下功能。
具有强大的流程设计器。
流程定义。可自行灵活定义流程图,并达到流程变化时代码改动量尽可能少。
流程表单设计灵活。
流程审批节点灵活定义。
流程各节点审批人定义。可支持会签。
可支持批量审批。
独立于业务系统,需融合时简单灵活。
网络资料丰富,运行效率高,学习成本相对较低。
需保存每个步骤的数据,方便实现流程的回退,撤消等操作。
能对项目现应用技术如spring等进行大力度支持。
支持流程代办。
流程版本管控。
优秀工作流引擎特点:blog.sina/s/blog_71a9fed701010h3f.html
2. 简介
    目前java开源的工作流引擎有70余种。详细介绍见下面链接。
www.oschina/project/tag/129/workflow?lang=19&os=0&sort=view&p=1
现根据对其他技术的支持程度,网络资料,设计器和学习成本几方面考虑,对应用相对较多的Snaker,activiti,JBPM, UFLO几项开源引擎进行详细分析与调研。
四、详细介绍
1.Snaker
Snaker是一个基于Java的开源工作流引擎,适用于企业应用中常见的业务流程。本着轻量、
简单、灵巧理念设计,定位于简单集成,多环境支持。目前最新版本为
支持Spring、Jdbc、SpringJdbc、Hibernate3or4、Mybatis等orm框架。
snakerflow/ 包括了依赖包,流程引擎,eclipse插件,网盘资料,案例,文档,设计。
Snaker架构表设计简单(10张核心表,涵盖了实现原理的核心),流程组件简单(包含了开始。结束,分裂,组合,自定义,任务)。
Snaker对外提供可扩展的接口,支持流程设计器,节点自定义,属性自定义,表单自定义。
学习成本较低,适合在小型项目中使用。
a. 优点
1). Snaker有详细的api文档说明,路径: www.snakerflow/book/function/engine.html
2). 能够与spring进行整合。并良好的支持springjdbc,hibernate 3/4,mybatis.
3). 能够基于spring进行流程引擎的配置。
4). 事务方面可将流程引擎的事务托管给spring进行统一管理。可与具体业务事务进行统一集成管理。
5). 数据库支持角度,可良好的支持oracle,postgres,mysql,mssql。
6). 支持子流程,时限控制,会签,流程分支。
7). 支持转派(主办,协办),撤回,提取,驳回,唤醒,更新。
8). 支持基于eclipse的设计器。
9). 可扩展性良好。可扩展组件,表单,节点。
10).学习成本相对较低,且灵活。
b. 实例
1). 资源下载
pan.baidu/s/1hqza8BU(包括源码,eclipse插件,lib包,部署包)
2). 创建数据库
在路径\schema下,到并执行schema-postgres.sql(根据不同数据库选择不同sql)
3). 部署
在\snaker-web路径下,到snaker-springmvc-0.0.1.war,将其拷贝到tomcat,webapps下,重新启动tomcat,war包将自动解压。
4). 修改数据库配置文件
spring启动流程面试回答在解压后的路径下到\snaker\WEB-INF\classes,application.propserties文件,修改数据库信息。
5). 启动tomcat,访问localhost:8080/snaker/,即可进入页面,在此处可查看代办任务,查看流程实例,也可查询或部署流程图。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。