Activiti学习

本文介绍了Activiti作为Java工作流引擎的基础知识,包括其BPMN2.0规范实现、与Spring的融合,以及核心配置和流程引擎对象。深入讨论了Activiti的内部设计,如以activiti.cfg.xml为核心的配置,七大service接口,以及使用MyBatis的持久层。通过一个简单的请假流程例子,展示了流程定义、实例和任务等重要概念的应用。
摘要由CSDN通过智能技术生成

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"/>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值