1.Activiti的初步认知
Activiti是一个开源的Java工作流引擎,它实现了BPMN2.0规范,可以发布设计好的流程定义并通过api进行流程调度。Activiti是一个遵从Apache许可的工作流和业务流程管理开源平台,它可以很好的融合spring。
2.Activiti底层设计
activiti以activiti.cfg.xml作为核心配置文件,该文件集成在Spring的IOC容器当中。可以产生ProcessEngineConfiguration对象,该对象就是流程引擎的配置对象。ProcessEngin为流程引擎对象。该对象是工作流业务系统的核心,所有的业务操作都是由这个对象所派生出来的对象实现。
获取流程引擎对象的代码:
private ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
Activiti提供了七大service接口,均可以通过ProcessEngine来获得,且支持链式编程。比如:
Deployment deployment = processEngine.getRepositoryService()
.createDeployment()
.name("请假")
.addClasspathResource("askforleave.bpmn")
.deploy();
Activiti工作流包含了23张表。建表语句在activiti-engine.jar包中有。SQL语句在org.activiti.db.create包下,初始化方法在org.activiti.engine.impl.db.DbSchemaCreate的main方法之中。
为了提升性能,activiti持久层使用的是mybatis。
虽然activiti包含了23张表,但是在使用的过程中,有些表到现在我还没使用到--还在探索中。
3.一个简单的使用例子
该实例为一个请假流程定义。BPMN图如下:
将.bpmn文件的文件名加上.xml即可将BPMN文件转为xml文件。比如:ask-for-leave.bpmn改为ask-for-leave.bpmn.xml即可将此文件转为xml文件。
以下为对应的xml文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:tns="http://www.activiti.org/test" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" expressionLanguage="http://www.w3.org/1999/XPath" id="m1550938130630" name="" targetNamespace="http://www.activiti.org/test" typeLanguage="http://www.w3.org/2001/XMLSchema">
<process id="myProcess_1" isClosed="false" isExecutable="true" name="请假" processType="None">
<startEvent id="_2" name="StartEvent"/>
<userTask activiti:assignee="person11" activiti:exclusive="true" id="_10" name="请假申请"/>
<userTask activiti:assignee="person12" activiti:exclusive="true" id="_9" name="主管审批"/>
<endEvent id="_5" name="EndEvent"/>