工作流引擎技术调研总结报告.docx

上传人:b****5 文档编号:6298965 上传时间:2023-01-05 格式:DOCX 页数:12 大小:232.25KB
下载 相关 举报
工作流引擎技术调研总结报告.docx_第1页
第1页 / 共12页
工作流引擎技术调研总结报告.docx_第2页
第2页 / 共12页
工作流引擎技术调研总结报告.docx_第3页
第3页 / 共12页
工作流引擎技术调研总结报告.docx_第4页
第4页 / 共12页
工作流引擎技术调研总结报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

工作流引擎技术调研总结报告.docx

《工作流引擎技术调研总结报告.docx》由会员分享,可在线阅读,更多相关《工作流引擎技术调研总结报告.docx(12页珍藏版)》请在冰豆网上搜索。

工作流引擎技术调研总结报告.docx

工作流引擎技术调研总结报告

沈阳新一代信息技术有限公司

工作流引擎技术调研报告

技术文档

董威

2016/3/14

一、背景

将业务流程的定义,审批从业务系统中分离出来,统一进行规划与管理.

二、目的

对工作流引擎的各种实现技术进行统一的甄别,确定适合项目需求,和现应用技术进行良好集成,学习成本相对较低的工作流引擎。

三、需求及简介

工作流是一项分离业务操作和系统流程的技术。

工作流由实体(Entity)、参与者(Participant)、流程定义(FlowDefinition)、工作流引擎(Engine)四部分组成。

Ø实体是工作流的主体,是需要随着工作流一起流动的物件(Object)。

例如,在一个采购申请批准流程中,实体就是采购申请单;在公文审批流程中,实体就是公文。

Ø参与者是各个处理步骤中的责任人,可能是人,也可能是某个职能部门,还可能是某个自动化的设备;

Ø流程定义是预定义的工作步骤,它规定了实体流动的路线。

它可能是完全定义的,即对每种可能的情况都能完全确定下一个参与者,也可能是不完全定义的,需要参与者根据情况决定下一个参与者;

Ø工作流引擎是驱动实体按流程定义从一个参与者流向下一个参与者的机制

前三个要素是静态的,而第四个要素是动态的,它将前三者结合起来,是工作流的核心组成元素。

1。

需求

所选工作流引擎需实现以下功能。

Ø具有强大的流程设计器.

Ø流程定义。

可自行灵活定义流程图,并达到流程变化时代码改动量尽可能少。

Ø流程表单设计灵活。

Ø流程审批节点灵活定义。

Ø流程各节点审批人定义。

可支持会签。

Ø可支持批量审批。

Ø独立于业务系统,需融合时简单灵活。

Ø网络资料丰富,运行效率高,学习成本相对较低。

Ø需保存每个步骤的数据,方便实现流程的回退,撤消等操作。

Ø能对项目现应用技术如spring等进行大力度支持。

Ø支持流程代办。

Ø流程版本管控。

优秀工作流引擎特点:

2。

简介

目前java开源的工作流引擎有70余种.详细介绍见下面链接.

http:

//www.oschina。

net/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框架。

 包括了依赖包,流程引擎,eclipse插件,网盘资料,案例,文档,设计。

Snaker架构表设计简单(10张核心表,涵盖了实现原理的核心),流程组件简单(包含了开始。

结束,分裂,组合,自定义,任务)。

Snaker对外提供可扩展的接口,支持流程设计器,节点自定义,属性自定义,表单自定义。

学习成本较低,适合在小型项目中使用。

a。

优点

1).Snaker有详细的api文档说明,路径:

http:

//www。

snakerflow。

com/book/function/engine。

html。

2)。

能够与spring进行整合。

并良好的支持springjdbc,hibernate3/4,mybatis。

3).能够基于spring进行流程引擎的配置。

4)。

事务方面可将流程引擎的事务托管给spring进行统一管理.可与具体业务事务进行统一集成管理。

5).数据库支持角度,可良好的支持oracle,postgres,mysql,mssql.

6)。

支持子流程,时限控制,会签,流程分支。

7)。

支持转派(主办,协办),撤回,提取,驳回,唤醒,更新。

8).支持基于eclipse的设计器.

9).可扩展性良好。

可扩展组件,表单,节点.

10)。

学习成本相对较低,且灵活。

b。

实例

1)。

资源下载

http:

//

2).创建数据库

在路径\schema下,找到并执行schema—postgres。

sql(根据不同数据库选择不同sql)

3).部署

在\snaker—web路径下,找到snaker—springmvc-0.0.1。

war,将其拷贝到tomcat,webapps下,重新启动tomcat,war包将自动解压。

4).修改数据库配置文件

在解压后的路径下找到\snaker\WEB-INF\classes,application。

propserties文件,修改数据库信息。

5).启动tomcat,访问http:

//localhost:

8080/snaker/,即可进入页面,在此处可查看代办任务,查看流程实例,也可查询或部署流程图。

6).集成设计器

将\Snaker\snakerflow—libs\eclipse插件拷贝到eclipse安装目录下放入dropins目录下,重新启动eclipse.新建项目,输入snaker即可出现下图。

7).创建Snaker项目及snaker流程图.具体说明参照文档:

http:

//www。

snakerflow。

com/book/quickstart/flowxml.html

2.Activiti

Activiti是一个业务流程管理(BPM)和工作流系统,适用于开发人员和系统管理员.其核心是超快速,前身是jbpm3/4.它易于与Spring集成使用。

Activiti5基于jBPM4,与Alfresco的集成增加了其流程可视化与管理能力,同时通过创新的ActivitiCycle协作组件支持流程相关人员之间的协调,最后,它加强了集成能力。

下载地址:

http:

//www.activiti。

org/download.html

a.优点

1)有api文档,路径http:

//activiti。

org/javadocs/index.html

2)可以和spring进行集成.

3)引擎本身提供form,同时也支持自定义form。

4)事务方面底层基于spring事务控制

5)支持oracle,mssql,mysql等

6)支持子流程,会签,流程分支.

7)网络资源及代码较丰富。

8)支持基于eclipse的设计器。

上手比较快,界面也比较简洁、直观。

9).Activiti最大的优势是采用了PVM(流程虚拟机,流程虚拟机是一个用来构建和执行流程图的简单的java类库。

它充当各种工作流、业务流程管理和编制流程语言的基础),支持除了BPMN2.0规范之外的流程格式

10).服务接口清晰,API更为简单.

b.缺点

持久化层没有遵循JPA规范.

c.实例

1).资源下载并解压(包括设计器文件,和war包,lib包)

路径:

http:

//www.activiti。

org/download.html

2)。

创建数据库

在路径\activiti—5。

19.0\activiti-5。

19.0\database\create下,找到并执行如下sql(根据不同数据库选择不同sql,支持hsql,mssql,mysql,oracle,postgres),共25张表。

3)。

部署

在\activiti-5.19.0\activiti—5.19.0\wars路径下,找到activiti-explorer.war,将其拷贝到tomcat,webapps下,重新启动tomcat,war包将自动解压。

4)。

修改数据库配置文件

在解压后的路径下找到activiti—explorer\WEB—INF\classes,db.propertiess文件,修改数据库信息,配置成自己的数据库。

5)。

启动tomcat,访问http:

//localhost:

8080/activiti—explorer,输入用户名kermit,密码kerm

it,即可进入页面.

6)。

集成设计器

将\activiti-designer-5.8。

0\site插件拷贝到eclipse安装目录下放入dropins目录下,重新启动eclipse。

新建项目,输入activiti即可出现下图。

7)。

部署流程。

网页端部署,将xml和图片打成zip包,应用网页版的管理→部署包功能进行发布.

8)。

和业务端整合。

具体整合方式独立章节介绍。

资料:

使用总结:

http:

//www。

kafeitu.me/activiti/2012/03/22/workflow—activiti-action。

html

2.2.核心组件介绍

2.2。

1.关键对象

1。

      Deployment:

流程部署对象,部署一个流程时创建。

2.      ProcessDefinitions:

流程定义,部署成功后自动创建。

3.      ProcessInstances:

流程实例,启动流程时创建. 

4.      Task:

任务,在Activiti中的Task仅指有角色参与的任务,即定义中的UserTask。

 

5.      Execution:

执行计划,流程实例和流程执行中的所有节点都是Execution,如UserTask、ServiceTask等。

2.2。

2.服务接口

1。

      ProcessEngine:

流程引擎的抽象,通过它我们可以获得我们需要的一切服务. 

2。

      RepositoryService:

Activiti中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据(例如BPMN2。

0XML文件,表单定义文件,流程定义图像文件等),这些文件都存储在Activiti内建的Repository中。

RepositoryService提供了对repository的存取服务。

3。

      RuntimeService:

在Activiti中,每当一个流程定义被启动一次之后,都会生成一个相应的流程对象实例。

RuntimeService提供了启动流程、查询流程实例、设置获取流程实例变量等功能。

此外它还提供了对流程部署,流程定义和流程实例的存取服务。

4。

      TaskService:

在Activiti中业务流程定义中的每一个执行节点被称为一个Task,对流程中的数据存取,状态变更等操作均需要在Task中完成。

TaskService提供了对用户Task和Form相关的操作。

它提供了运行时任务查询、领取、完成、删除以及变量设置等功能。

 

5。

      IdentityService:

Activiti中内置了用户以及组管理的功能,必须使用这些用户和组的信息才能获取到相应的Task.IdentityService提供了对Activiti系统中的用户和组的管理功能.

6.      ManagementService:

ManagementService提供了对Activiti流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于Activiti系统的日常维护。

 

7。

      HistoryService:

HistoryService用于获取正在运行或已经完成的流程实例的信息,与RuntimeService中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化.

3.JBPM

JBPM,全称是JavaBusinessProcessManagement(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架.它的业务逻辑定义采用了它自己定义的JBossjBPMProcessdefinitionlanguage(jPdl)。

jPdl认为一个业务流程可以被看作是一个UML状态图。

jPdl就是详细定义了这个状态图的每个部分,如起始、结束状态,以及状态之间的转换,通过图型化的流程定义,直观地描述业务流程。

jBPM的另一个特色是它使用Hibernate来管理它的数据库.

jBPM5和Activiti都是从jBPM4发展出来的,jBPM5是JBOSS的,Activiti是原jBPM4项目负责人离开JBOSS后,在Alfresco公司推出的。

jBPM5基于原先的DroolsFlow,支持BPMN,通过与Drools的合并支持BAM,通过内容仓库增加对流程可视化的支持。

由于放弃了jBPM4的PVM,引擎的可扩展性受到损害,并且不再支持jPDL。

JBPM架构本身比较复杂,内部实现也比较复杂,学习成本较高,适合于项目流程比较多,流程复杂的项目。

系统运行和维护、升级时,流程可能需要修改、调整和跟踪、控制的项目。

a.优点

1)。

提供基于Eclipse插件开发的流程模版可视化设计器.

2).支持回退,撤销,会签,子流程等操作.

3)。

支持oracle,mssql,mysql等.

4)。

使用hibernate来管理数据库。

b.实例

1)。

资源下载

(包括源码,eclipse插件,lib包,部署包)

2)。

创建数据库

在路径\jbpm-6。

2.0。

Final—installer-full\jbpm-installer\db\ddl-scripts\postgresql下,找到并执行sql文件,生成数据库表(根据不同数据库选择不同sql)

3)。

部署

在\snaker—web路径下,找到snaker-springmvc—0.0。

1。

war,将其拷贝到tomcat,webapps下,重新启动tomcat,war包将自动解压.

4)。

修改数据库配置文件

在解压后的路径下找到\snaker\WEB—INF\classes,application.propserties文件,修改数据库信息.

5).启动tomcat,访问http:

//localhost:

8080/snaker/,即可进入页面,在此处可查看代办任务,查看流程实例,也可查询或部署流程图。

6).集成设计器

将\Snaker\snakerflow—libs\eclipse插件拷贝到eclipse安装目录下放入dropins目录下,重新启动eclipse。

新建项目,输入snaker即可出现下图。

4.UFLO

UFLO是一套由BSTEK自主研发的基于Java的流程引擎,它以Spring为基础框架,采用Hibernate作为持久层,可运行于所有主流程应用服务器及流数据库之上的轻量级流程引擎. 

除公网资源,其他资源较少,如不采用dorado7+BDF开发框架,不建议使用。

a.优点

1)。

可以和spring进行集成。

2)。

支持流程分支,子流程,流程会签流程跳转等。

3)。

可以很好的支持集群。

4).网络操作指南:

http:

//wiki.bsdn。

org/pages/viewpage.action?

pageId=30441763

5).提供基于Eclipse插件开发的流程模版可视化设计器。

6).实现在J2EE环境下B/S应用或C/S应用当中对业务流程的流程控制.

7)。

UFLO还提供了一套基于网页的流程模版设计器,网页版的设计器提供了与Eclipse插件版设计器完全相同的功能。

b。

缺点

1).除公网发布的实例代码,网络其他实例较少,使用不多。

使用时与BDF其他技术集成使用更快捷。

c。

实例

五.技术实现总结

1.开发流程

a.下载相应设计器

b集成到eclipse开发工具

b.下载并部署管理端。

下载相应war包,将其部署到tomcat下(独立部署:

适用于新开发的系统)。

浏览器访问,即可发布流程设计文件。

也可下载发布包,将源码文件拷贝到应用项目路径下(嵌入式部署:

适用于现成系统表单不更改,接口调用),重新进行配置,将其嵌入项目中.此种方式不用部署多个应用,可和应用项目集成在一起,方便进行管理。

部署操作参考:

http:

//blog。

csdn。

net/runming56/article/details/37807589

c.编写流程设计文件.

在eclipse中新建相应流程项目,利用集成好的设计器设计流程文件,包括流程图,xml文件等.

d.将流程设计文件发布到流程管理端。

2.业务整合

在管理端搭建完成后,进行业务和流程引擎的整合。

在业务端表单对应的数据库表设计中,添加流程id(具体流程请求编码),和流程定义id(哪个流程,在流程设计时定义)字段。

在表单提交时,先接收表单提交信息,然后根据流程定义id,启动流程,并将流程id存入表单实体中,最后将信息存入数据库。

六.附件

七.数据字典

1。

Snaker

2.Activiti

Activiti使用到的表都是ACT_开头的.http:

//blog。

csdn。

net/rosten/article/details/35220867

ACT_RE_*:

’RE’表示repository(存储),RepositoryService接口所操作的表.带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。

ACT_RU_*:

‘RU’表示runtime,运行时表-RuntimeService.这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据.Activiti只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录.这就保证了这些运行时的表小且快。

ACT_ID_*:

'ID’表示identity(组织机构),IdentityService接口所操作的表。

用户记录,流程中使用到的用户和组。

这些表包含标识的信息,如用户,用户组,等等.

ACT_HI_*:

’HI’表示history,历史数据表,HistoryService。

就是这些表包含着流程执行的历史相关数据,如结束的流程实例,变量,任务,等等

ACT_GE_*:

全局通用数据及设置(general),各种情况都使用的数据。

1.2、    所有表的含义

序号

表名

说明

act_ge_bytearray

二进制数据表

                   act_ge_property

属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录,

act_hi_actinst

历史节点表

act_hi_attachment

历史附件表

act_hi_comment

历史意见表

act_hi_identitylink

历史流程人员表

act_hi_detail

历史详情表,提供历史变量的查询

act_hi_procinst

历史流程实例表

act_hi_taskinst

历史任务实例表

10

act_hi_varinst

历史变量表

11

act_id_group

用户组信息表

12

act_id_info

用户扩展信息表

13

act_id_membership

用户与用户组对应信息表

14

act_id_user

用户信息表

15. 

act_re_deployment

部署信息表

16。

 

act_re_model

流程设计模型部署表

17

act_re_procdef

流程定义数据表

18

act_ru_event_subscr

throwEvent、catchEvent时间监听信息表

19

act_ru_execution

运行时流程执行实例表

20

act_ru_identitylink

运行时流程人员表,主要存储任务节点与参与者的相关信息

21

act_ru_job

运行时定时任务数据表

22

act_ru_task

运行时任务节点表

23

act_ru_variable

运行时流程变量数据表

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文学研究

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1