Activiti⼯作流学习之流程图应⽤详解
Activiti⼯作流学习之流程图应⽤详解
1.⽬的
了解Activiti⼯作流是怎样应⽤流程图的。
2.环境准备
2.1.相关软件及版本
jdk版本:Jdk1.7及以上
IDE:eclipse
数据库:mysql及navicat for mysql
下载demo:kft-activiti-demo-no-maven
lipse中安装Activiti插件
eclipse打开help->install new software,单击add:
Name: Activiti BPMN2.0 designer
进⾏安装即可。(如下图,我的已经安装过了)
2.3.引⼊jar包
新建⼯程Act_test,将kft-activiti-demo-no-maven\WebContent\WEB-INF\lib(activiti相关包)导⼊⼯程lib⽬录下
2.4.activiti数据库默认的23张表
这⾥我们使⽤配置⽂件来创建activiti的表
(1)在类路径resources下创建l⽂件,⽂件内容为:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="/schema/beans"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/schema/bea
<bean id="processEngineConfiguration" class="ine.impl.cfg.StandaloneInMemProcessEngineConfiguration"
<!-- 数据库连接配置 -->
<property name="jdbcDriver" value="sql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/test1?
createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8"/>
<property name="jdbcUsername" value="root"/>
<property name="jdbcPassword" value="root"/>
<property name="databaseSchemaUpdate" value="true"/>
</bean>
</beans>
说明:
a. #useUnicode 是否使⽤unicode输出,true/false缺省为false
b. #characterEncoding如果useUnicode,该参数制定encoding类型,建议使⽤utf8缺省为⽆
c. #createDatabaseIfNotExist当JDBC连接指定数据库,如果此数据库不存在,此参数值为true时,则⾃动创建此数据库
(2)通过测试代码来加载配置⽂件中内容:(⾃动建表)
//使⽤配置⽂件来创建数据库中的表
@Test
public void testDBByProperties() throws Exception{
//通过让⼯作流引擎的全部配置对象来执⾏配置⽂件中的内容来创建流程引擎对象
ProcessEngine processEngine = ProcessEngineConfiguration.
createProcessEngineConfigurationFromResource("l").buildProcessEngine();
System.out.println(processEngine);
}
执⾏后,打开navicat for mysql,可看到test1及23张表创建成功
3.知识了解
createprocessa
3.1.关键对象
1) Deployment:流程部署对象,部署⼀个流程时创建。
2) ProcessDefinitions:流程定义,部署成功后⾃动创建。
3) ProcessInstances:流程实例,启动流程时创建。
4) Task:任务,在Activiti中的Task仅指有⾓⾊参与的任务,即定义中的UserTask。
5) Execution:执⾏计划,流程实例和流程执⾏中的所有节点都是Execution,如UserTask、ServiceTask等。
3.2.服务接⼝
1) ProcessEngine:流程引擎的抽象,通过它我们可以获得我们需要的⼀切服务。
2) RepositoryService:Activiti中每⼀个不同版本的业务流程的定义都需要使⽤⼀些定义⽂件,部署⽂件和⽀持数据(例如
BPMN2.0 XML⽂件,表单定义⽂件,流程定义图像⽂件等),这些⽂件都存储在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中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化。
4.测试代码实例讲解
4.1.⼯程⽬录
主要包括:(1)测试类helloWorld
(2)配置⽂件l
(3)流程图⽂件MyProcess.bpmn和MyProcess.png
4.2.流程图
我们通过流程设计器(Activiti插件)就可以拖拖拽拽出我们的流程,同时设置相关属性,保存后会⽣成两个⽂件,分别是MyProcess.bpmn和MyProcess.png
(1)新建Activiti Diagram,命名为MyProcess
(2)进⾏相关操作,得到流程图:
(3)MyProcess.bpmn(实际是⼀个xml⽂件)部分代码:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="/spec/BPMN/20100524/MODEL"
xmlns:xsi="/2001/XMLSchema-instance"
xmlns:xsd="/2001/XMLSchema"
xmlns:activiti="/bpmn"
xmlns:bpmndi="/spec/BPMN/20100524/DI"
xmlns:omgdc="/spec/DD/20100524/DC"
xmlns:omgdi="/spec/DD/20100524/DI"
typeLanguage="/2001/XMLSchema"
expressionLanguage="/1999/XPath"
targetNamespace="/test">
<process id="myProcess" name="My process" isExecutable="true">
<startEvent id="startevent1" name="Start"></startEvent>
<userTask id="提交申请" name="提交申请" activiti:assignee="张三"></userTask>
<userTask id="usertask2" name="审批【部门经理】" activiti:assignee="李四"></userTask>
<userTask id="usertask3" name="审批【总经理】" activiti:assignee="王五"></userTask>
<endEvent id="endevent1" name="End"></endEvent>
<sequenceFlow id="flow1" sourceRef="startevent1" targetRef="提交申请"></sequenceFlow>                <sequenceFlow id="flow2" sourceRef="提交申请" targetRef="usertask2"></sequenceFlow>
<sequenceFlow id="flow3" sourceRef="usertask2" targetRef="usertask3"></sequenceFlow>                <sequenceFlow id="flow4" sourceRef="usertask3" targetRef="endevent1"></sequenceFlow>          </process>
......

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