Activiti 工作流入门+源码

定义

工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。

自动生成数据表

Activiti可以通过代码自动创建需要的23张表。 

运行下面的main方法就可以自动创建Activiti需要的表。

package com.xsz.demo;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;

public class InitActiviti {

    public static void main(String[] args) throws Exception {

        ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
        //定义连接mysql数据库
        configuration.setJdbcDriver("com.mysql.cj.jdbc.Driver");
        configuration.setJdbcUrl("jdbc:mysql://localhost:3306/db_activitidemo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true");
        configuration.setJdbcUsername("root");
        configuration.setJdbcPassword("XSZ202006a");

       /*  public static final String DB_SCHEMA_UPDATE_FALSE = "false";操作activiti23张表的时候,如果表不存在,就抛出异常,不能自动创建23张表
         public static final String DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";每次操作,都会先删除表,再创建表
         public static final String DB_SCHEMA_UPDATE_TRUE = "true";
         如果表不存在,就创建表,如果表存在,就直接操作		*/

        configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_CREATE_DROP);
        //activiti核心对象(流程引擎)
        ProcessEngine processEngine = configuration.buildProcessEngine();
        System.out.println("processEngine:"+processEngine);

    }
}

数据表介绍

表结构操作:

3.3.1:资源库流程规则表
1) act_re_deployment 部署信息表

2) act_re_model   流程设计模型部署表

3) act_re_procdef   流程定义数据表

3.3.2:运行时数据库表
1) act_ru_execution 运行时流程执行实例表

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

3) act_ru_task 运行时任务节点表

4) act_ru_variable 运行时流程变量数据表

3.3.3:历史数据库表
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 历史变量表

3.3.4:组织机构表
1) act_id_group 用户组信息表

2) act_id_info 用户扩展信息表

3) act_id_membership 用户与用户组对应信息表

4) act_id_user 用户信息表

这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足

3.3.5:通用数据表
1) act_ge_bytearray 二进制数据表

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

获取bpmn文件

可以通过画图工具,把业务流程画好,然后导出xml文件。 再把xml文件的后缀名改成bpmn就可以。

最终导出的bpmn文件内容

文件名:process.bpmn20.bpmn

<?xml version='1.0' encoding='UTF-8'?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 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" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef">
  <process id="process2021729" isExecutable="true">
    <startEvent id="start"/>
    <exclusiveGateway id="sid-8F55A260-8EB3-415D-A873-2E34E916216E"/>
    <userTask id="sid-3D71CBED-A50E-4B50-A4D2-D20763A51D66" name="经理审批2" activiti:candidateGroups="manageGroup"/>
    <userTask id="sid-850B7D8F-AABD-49FE-9CFB-843513146281" name="总监审批2" activiti:candidateGroups="dirGroup"/>
    <endEvent id="sid-A8887E8A-9ADE-43D0-91A2-B20450113D41"/>
    <sequenceFlow id="sid-AF3E3C93-B7F4-40BD-9ACF-699C31E5B034" sourceRef="sid-3D71CBED-A50E-4B50-A4D2-D20763A51D66" targetRef="sid-A8887E8A-9ADE-43D0-91A2-B20450113D41"/>
    <sequenceFlow id="sid-1CAA4B9B-E7B0-41D8-ADC4-19F0F21DF11F" sourceRef="sid-850B7D8F-AABD-49FE-9CFB-843513146281" targetRef="sid-A8887E8A-9ADE-43D0-91A2-B20450113D41"/>
    <sequenceFlow id="sid-AD5B6BBA-E3ED-4E2F-B67E-DC2FDB2DF204" sourceRef="sid-8F55A260-8EB3-415D-A873-2E34E916216E" targetRef="sid-850B7D8F-AABD-49FE-9CFB-843513146281">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${days <= 3}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-AC1BD940-A9EB-4E3C-B91A-DD1774F30F60" sourceRef="sid-8F55A260-8EB3-415D-A873-2E34E916216E" targetRef="sid-3D71CBED-A50E-4B50-A4D2-D20763A51D66">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${days > 3}]]></conditionExpression>
    </sequenceFlow>
    <userTask id="sid-7F648C16-A3F9-4836-BC07-7289719F732A" name="申请请假" activiti:candidateGroups="empGroup"/>
    <sequenceFlow id="sid-054FF766-3536-464F-8FD5-8567FD76721C" sourceRef="start" targetRef="sid-7F648C16-A3F9-4836-BC07-7289719F732A"/>
    <sequenceFlow id="sid-D5DC465E-DD41-4011-9AA9-5C5627A87FE6" sourceRef="sid-7F648C16-A3F9-4836-BC07-7289719F732A" targetRef="sid-8F55A260-8EB3-415D-A873-2E34E916216E"/>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_process">
    <bpmndi:BPMNPlane bpmnElement="process" id="BPMNPlane_process">
      <bpmndi:BPMNShape bpmnElement="start" id="BPMNShape_start">
        <omgdc:Bounds height="30.0" width="30.0" x="30.0" y="162.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-8F55A260-8EB3-415D-A873-2E34E916216E" id="BPMNShape_sid-8F55A260-8EB3-415D-A873-2E34E916216E">
        <omgdc:Bounds height="40.0" width="40.0" x="390.0" y="137.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-3D71CBED-A50E-4B50-A4D2-D20763A51D66" id="BPMNShape_sid-3D71CBED-A50E-4B50-A4D2-D20763A51D66">
        <omgdc:Bounds height="80.0" width="100.0" x="609.0" y="50.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-850B7D8F-AABD-49FE-9CFB-843513146281" id="BPMNShape_sid-850B7D8F-AABD-49FE-9CFB-843513146281">
        <omgdc:Bounds height="80.0" width="100.0" x="617.0" y="222.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-A8887E8A-9ADE-43D0-91A2-B20450113D41" id="BPMNShape_sid-A8887E8A-9ADE-43D0-91A2-B20450113D41">
        <omgdc:Bounds height="28.0" width="28.0" x="943.0" y="163.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-7F648C16-A3F9-4836-BC07-7289719F732A" id="BPMNShape_sid-7F648C16-A3F9-4836-BC07-7289719F732A">
        <omgdc:Bounds height="80.0" width="100.0" x="180.0" y="137.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="sid-054FF766-3536-464F-8FD5-8567FD76721C" id="BPMNEdge_sid-054FF766-3536-464F-8FD5-8567FD76721C">
        <omgdi:waypoint x="60.0" y="177.0"/>
        <omgdi:waypoint x="180.0" y="177.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-AF3E3C93-B7F4-40BD-9ACF-699C31E5B034" id="BPMNEdge_sid-AF3E3C93-B7F4-40BD-9ACF-699C31E5B034">
        <omgdi:waypoint x="709.0" y="104.59731543624162"/>
        <omgdi:waypoint x="943.5610106253332" y="173.07653665907378"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-D5DC465E-DD41-4011-9AA9-5C5627A87FE6" id="BPMNEdge_sid-D5DC465E-DD41-4011-9AA9-5C5627A87FE6">
        <omgdi:waypoint x="280.0" y="171.44444444444446"/>
        <omgdi:waypoint x="392.0" y="159.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-AC1BD940-A9EB-4E3C-B91A-DD1774F30F60" id="BPMNEdge_sid-AC1BD940-A9EB-4E3C-B91A-DD1774F30F60">
        <omgdi:waypoint x="426.2278481012658" y="153.22784810126583"/>
        <omgdi:waypoint x="609.0" y="103.5814889336016"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-1CAA4B9B-E7B0-41D8-ADC4-19F0F21DF11F" id="BPMNEdge_sid-1CAA4B9B-E7B0-41D8-ADC4-19F0F21DF11F">
        <omgdi:waypoint x="717.0" y="247.3448275862069"/>
        <omgdi:waypoint x="943.565200385607" y="180.93778609387383"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-AD5B6BBA-E3ED-4E2F-B67E-DC2FDB2DF204" id="BPMNEdge_sid-AD5B6BBA-E3ED-4E2F-B67E-DC2FDB2DF204">
        <omgdi:waypoint x="424.0" y="163.0"/>
        <omgdi:waypoint x="617.0" y="241.62962962962962"/>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

测试

源码

https://gitee.com/bseaworkspace/study_java_web/tree/master/springboot-activiti

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值