JAVAWEB开发之⼯作流详解(⼀)——Activiti的环境搭建、
插件安装、核⼼API
⼯作流的概念
⼯作流(Workflow),就是“业务过程的部分或整体在计算机应⽤环境下的⾃动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递⽂档、信息或任务的过程⾃动进⾏,从⽽实现某个预期的业务⽬标,或者促使此⽬标的实现”。
⼯作流管理系统(Workflow Management System, WfMS)是⼀个软件系统,它完成⼯作量的定义和管理,并按照在系统中预先定义好的⼯作流逻辑进⾏⼯作流实例的执⾏。⼯作流管理系统不是企业的业务系统,⽽是为企业的业务系统的运⾏提供了⼀个软件的⽀撑环境。
⼯作流管理联盟(WfMC,Workflow Management Coalition)给出的关于⼯作流管理系统的定义是:⼯作流管理系统是⼀个软件系统,它通过执⾏经过计算的流程定义去⽀持⼀批专门设定的业务流程。⼯作流管理系统被⽤来定义、管理、和执⾏⼯作流程。
⼯作流管理系统的⽬标:管理⼯作的流程以确保⼯作在正确的时间被期望的⼈员所执⾏在⾃动化进⾏的业务过程中插⼊⼈⼯的执⾏。
常见的⼯作流框架
Activity5.1.3、JBPM4.4、OSWorkFlow、WorkFlow
⼯作流框架的底层需要有数据库提供⽀持,activiti5.13版本,有23张表。JBPM4.4框架底层有数据库⽀持,18张表。JBPM底层使⽤hibernate操作数据库。Activiti框架底层使⽤的mybatis操作数据库。
Activiti介绍
Activiti5是由Alfresco软件在2010年5⽉17⽇发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、⼯作流、服务协作等领域的⼀个开源的、灵活的、易扩展的可执⾏流程语⾔框架。Activiti基于Apache许可的开源BPM平台,创始⼈Tom Baeyens是JBoss jBPM的项⽬架构师,它特⾊是提供了eclipse 插件,开发⼈员可以通过插件直接绘画出业务流程图。
⼯作流引擎
⼯作流引擎是Activiti⼯作的核⼼。负责⽣成流程运⾏时的各种实例以及数据、监控和管理流程的运⾏。
BPMN2.0*
业务流程建模与标注(Business Process Model And Notation, BPMN) ,描述流程的基本符号,包括这些图元如何组合成⼀个业务流程图(Business Process Diagram)
数据库
Activiti的后台是有数据库的⽀持,所有的表都以ACT_开头。第⼆部分表⽰⽤途的两个字母标识。⽤途也和服务的API对应。
(1) ACT_RE_*:'RE' 表⽰repository。这个前缀的表包含了流程定义和流程静态资源(图⽚,规则,等等)。
(2) ACT_RU_*:'RU' 表⽰runtime。这些运⾏时的表,包含流程实例,任务,变量,异步任务,等运⾏中的数据。Activiti只在流程实例执⾏过程中保存这些数据,在流程结束时就会删除这些记录。这样运⾏时表可以⼀直很⼩速度很快。
(3) ACT_ID_*:'ID' 表⽰identity。这些表包含⾝份信息,⽐如⽤户,组等等。
(4) ACT_HI_*:'HI' 表⽰history。这些表包含历史数据,⽐如历史流程实例,变量,任务等等。
(5) ACT_GE_*:通⽤数据,⽤于不同场景下。
资源库流程规则表
(1) act_re_deployment  部署信息表。
(2) act_re_model          流程设计模型部署表。
(3) act_re_procdef        流程定义数据表。
运⾏时数据库表
(1) act_ru_execution    运⾏时流程执⾏实例表。
(2) act_ru_identitylink  运⾏时流程⼈员表,主要存储任务节点与参与者的相关信息。
(3) act_ru_task            运⾏时节点表
(4) act_ru_variable      运⾏时流程变量数据表
历史数据库表
(1) act_hi_actinst          历史节点表
(2) act_hi_attachment    历史附件表
(3) act_hi_comment      历史意见表
(4) act_hi_identitylink    历史流程⼈员表
(5) act_hi_detail            历史详情表,提供历史变量的查询
(6) act_hi_procinst        历史流程实例表
(7) act_hi_taskinst        历史⼈物实例表
(8) act_hi_varinst          历史变量表
mysql下载jar包注意:inst 是instance 实例 的缩写
组织机构表
(1) act_id_group            ⽤户组信息表
(2) act_id_info              ⽤户扩展信息表
(3) act_id_membership ⽤户与⽤户组对应的信息表
(4) act_id_user              ⽤户信息表
这四张表很常见,基本的组织机构管理,关于⽤户认证⽅⾯建议⾃⼰开发⼀套,组件⾃带的功能太简单,很难满⾜项⽬中的很多需求。
通⽤数据表
(1) act_ge_bytearray  ⼆进制数据表
(2) act_ge_property    属性数据表中存储整个流程引擎级别的数据,初始化表结构时,会默认插⼊三条记录。
l
Activiti核⼼配置⽂件,配置流程引擎创建⼯具的基本参数和数据库连接池参数。
定义数据库配置参数:
jdbcUrl: 数据库的JDBC URL。
jdbcDriver: 对应不同数据库类型的驱动。
jdbcUsername: 连接数据库的⽤户名。
jdbcPassword: 连接数据库的密码。
基于JDBC参数配置的数据库连接 会使⽤默认的MyBatis连接池。 下⾯的参数可以⽤来配置连接池(来⾃MyBatis参数):
jdbcMaxActiveConnections: 连接池中处于被使⽤状态的连接的最⼤值。默认为10。jdbcMaxIdleConnections: 连接池中处于空闲状态的连接的最⼤值。jdbcMaxCheckoutTime: 连接被取出使⽤的最长时间,超过时间会被强制回收。 默认为20000(20秒)。
jdbcMaxWaitTime: 这是⼀个底层配置,让连接池可以在长时间⽆法获得连接时, 打印⼀条⽇志,并重新尝试获取⼀个连接。(避免因为错误配置导致沉默的操作失败)。 默认为20000(20秒)。
⽰例数据库配置:
1<!-- 配置流程引擎创建⼯具参数 -->
2<bean id="processEngineConfiguration" class="ine.impl.cfg.StandaloneProcessEngineConfiguration">
3 <!-- 数据库连接配置,默认使⽤MyBatis连接池 -->
4 <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti"/>
5 <property name="jdbcDriver" value="sql.jdbc.Driver"/>
6 <property name="jdbcUsername" value="root"/>
7 <property name="jdbcPassword" value="root"/>
8 <!--
9  databaseSchemaUpdate: 设置流程引擎启动和关闭时如何处理数据库表
10  false:(默认) 检查数据库的版本和依赖库的版本,如果版本不匹配就抛出异常。
11  true:构建流程引擎时,执⾏检查,如果需要就执⾏更新,如果不存在就创建
12  create-drop:构建流程引擎时创建数据库表,关闭流程引擎时就删除这些表
13  -->
14  <property name="databaseSchemaUpdate" value="true"/>
15  <!-- 是否启动任务调⽤ -->
16  <property name="jobExecutorActivate" value="false"/>
17  <!-- 邮件服务器配置 -->
18  <property name="mailServerHost" value=""/> <!-- 邮件服务器地址 -->
19  <property name="mailServerPort" value=""/> <!-- 邮件服务器端⼝ -->
20  <property name="mailServerUsername" value=""/> <!-- 邮件服务器的⽤户名 -->
21  <property name="mailServerPassword" value=""/>
22</bean>
也可以使⽤第三⽅的连接池 ⽐如Apache的DBCP连接池
1<!-- ⽅式⼆:使⽤别的数据源 -->
2<!-- 配置DBCP连接池基本参数 -->
3<bean id="dataSource" class="org.apachemons.dbcp.BasicDataSource">
4 <property name="driverClassName" value="sql.jdbc.Driver"/>
5 <property name="url" value="jdbc:mysql://localhost:3306/activiti"/>
6 <property name="username" value="root"/>
7 <property name="password" value="root"/>
8</bean>
9
10<bean id="processEngineConfiguration" class="ine.impl.cfg.StandaloneProcessEngineConfiguration">
11 <!-- 配置第三⽅连接池 -->
12 <property name="dataSource" ref="dataSource"/>
13 <!--
14  databaseSchemaUpdate: 设置流程引擎启动和关闭时如何处理数据库表
15  false:(默认) 检查数据库的版本和依赖库的版本,如果版本不匹配就抛出异常。
16  true:构建流程引擎时,执⾏检查,如果需要就执⾏更新,如果不存在就创建
17  create-drop:构建流程引擎时创建数据库表,关闭流程引擎时就删除这些表
18  -->
19  <property name="databaseSchemaUpdate" value="true"/>
20  <!-- 是否启动任务调⽤ -->
21  <property name="jobExecutorActivate" value="false"/>
22  <!-- 邮件服务器配置 -->
23  <property name="mailServerHost" value=""/> <!-- 邮件服务器地址 -->
24  <property name="mailServerPort" value=""/> <!-- 邮件服务器端⼝ -->
25  <property name="mailServerUsername" value=""/> <!-- 邮件服务器的⽤户名 -->
26  <property name="mailServerPassword" value=""/>
27</bean>
log4j.properties
⽇志配置⽂件
准备环境
activiti5 软件环境
(1)JDK1.6或者更⾼版本
(2)⽀持的数据库有:h2, mysql, oracle, postgres, mssql, db2等。
(3)⽀持activiti5运⾏的jar包
(4)开发环境为Eclipse3.7或者以上版本,myeclipse为8.6版本
相关资源下载
1)JDK可以到sun的官⽹下载
acle/technetwork/java/javase/downloads/index.html 2)数据库,例如:mysql可以在官⽹上下载。
sql
3)activiti也可以到Activiti官⽅⽹站下载得到。
/download.html
4)Eclipse3.7或者MyEclipse8.6也可以到相应的⽹站上获得下载。
安装流程设计器(eclipse插件)
在有⽹络的情况下,安装流程设计器步骤如下:
(1)打开 Help -> Install New Software
(2)在如下的Install界⾯,点击Add按钮
配置新装插件的地址和名称
(3)然后填⼊下列字段
Name: Activiti BPMN 2.0 designer
Location: /designer/update/
如图所⽰:
(4)回到Install界⾯,在⾯板正中列表中把所有展⽰出来的项⽬都勾上:
(5)点击复选框
在Detail部分记得选中 "Contact all updates sites.." , 因为它会检查所有当前安装所需要的插件并可以被Eclipse下载.
(6)安装完以后,点击新建⼯程new->Other…打开⾯板,如果看到下图内容:
注意:MyEclipse是⽆法安装此插件的,即使安装成功 也⽆法保存图⽚
另⼀种⽅法直接将下载好的activiti-eclipse-plugin.zip解压后 放⼊Eclipse安装⽬录的dropins⽂件夹 重启即可。
流程设计器的使⽤说明
打开菜单Windows->Preferences->Activiti->Save下流程流程图⽚的⽣成⽅式:
虽然流程引擎在单独部署bpmn⽂件时会⾃动⽣成图⽚,但在实际开发过程中,⾃动⽣成的图⽚会导致和BPMN中的坐标有出⼊,在实际项⽬中展⽰流程当前位置图会有问题。
所在完成以上配置后,会由我们⾃⼰来管理流程图⽚。在发布流程时把流程规则⽂件和流程图⽚⼀起上传就⾏了。
准备Activiti5开发环境
添加Activiti5的jar包

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