springboot项目集成activiti工作流引擎

这篇具有很好参考价值的文章主要介绍了springboot项目集成activiti工作流引擎。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、目前我所了解到的activiti工作流想要在项目中使用分为两种:

一、一种较为简单,只需要使用idea的插件来画流程图。(我所使用的的插件是Activiti BPMN visualizer)

springboot集成工作流,activit工作引擎,java,spring boot

二、另一种就是可以使用(在线流程设计器)或者(页面设计器部署到自己项目中)来画流程图。

本文是将流程设计页面部署到了项目中

2、先来看看两种方式的效果吧,是否满足您所需要的结果。

一、使用idea的插件来画流程图。

springboot集成工作流,activit工作引擎,java,spring boot

 二、流程设计页面画流程图。 springboot集成工作流,activit工作引擎,java,spring boot

springboot集成工作流,activit工作引擎,java,spring boot

3、那么现在开始实现上面两种流图以及部署启动流程

一、先来第一种方式(比较简单)好入手,对于第一次接触的可以很好的去了解到这个Activiti流程引擎的过程。

首先你需要了解activiti的 25张表(这里就不多说了,网上很好找到)

1)、先导入相关的activiti依赖(一定要注意版本号)

<dependencies>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-basic</artifactId>
            <version>5.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-rest</artifactId>
            <version>5.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-diagram-rest</artifactId>
            <version>5.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring</artifactId>
            <version>5.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-json-converter</artifactId>
            <version>5.22.0</version>
        </dependency>
    </dependencies>

2)、配置相关 activiti.xml 文件连接数据库,用来生成 25张表

        需要注意(xml文件名和xml中id="processEngineConfiguration"不要乱改)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/contex
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 这里可以使用 链接池 dbcp-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/activiti?serverTimezone=Asia/Shanghai"/>
        <property name="username" value="*****" />
        <property name="password" value="*****" />
        <property name="maxActive" value="3" />
        <property name="maxIdle" value="1" />
    </bean>

    <bean id="processEngineConfiguration"
          class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="dataSource" ref="dataSource" />
        <property name="databaseSchemaUpdate" value="true"/>
    </bean>

</beans>

3)、配置好需要测试类启动生成表

package com.atxinxin;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.junit.jupiter.api.Test;

/**
 * @author weixinxin 2023-06-28
 **/
public class TestCreateTable {

    @Test
    public void testCreat(){
        ProcessEngineConfiguration processEngineConfiguration =
                ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.xml","processEngineConfiguration");
        ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
        System.out.println("processEngine = " + processEngine);
    }
}

 4)、结构目录

springboot集成工作流,activit工作引擎,java,spring boot

 5)、生成的数据表

springboot集成工作流,activit工作引擎,java,spring boot

 6)、接下来需要画流程图,插件开头已经提过,这里不说了,在resources包下创建一个bpmn包用来放流程图的xml文件和bpmn文件,右键新建一个文件例如(activiti.bpmn20.xml)

springboot集成工作流,activit工作引擎,java,spring boot

 7)、右键最下面打开Diagram界面

springboot集成工作流,activit工作引擎,java,spring boot

springboot集成工作流,activit工作引擎,java,spring boot

8)、再空白页面右键有各个事件(介绍三个必不可少的)启动、节点、结束

 springboot集成工作流,activit工作引擎,java,spring boot

 springboot集成工作流,activit工作引擎,java,spring boot

 springboot集成工作流,activit工作引擎,java,spring boot

 10)、到这里会玩的大概也差不多了,怎么画就不详细说了,我这里把我的 evection.bpmn20.xml 放出来。对于png文件把后缀名改成png就可以

springboot集成工作流,activit工作引擎,java,spring boot

<?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="evection" name="出差申请" isExecutable="true">
    <startEvent id="sid-918d4c76-a682-4a1d-8160-c853a2293fc0" name="myEvection"/>
    <userTask id="sid-efbbfc5f-d4af-4e5b-9f2c-6ac2be4fb0de" name="创建出差申请" activiti:assignee="zhangsan"/>
    <sequenceFlow id="sid-01be7034-9f59-4812-9d89-42603748a9f7" sourceRef="sid-918d4c76-a682-4a1d-8160-c853a2293fc0" targetRef="sid-efbbfc5f-d4af-4e5b-9f2c-6ac2be4fb0de"/>
    <endEvent id="sid-728c4461-5967-42d9-99dd-973e989dc6b9" name="endEvection"/>
    <sequenceFlow id="sid-6381cc34-a651-4d8e-aa9e-1639bd0c765a" sourceRef="sid-efbbfc5f-d4af-4e5b-9f2c-6ac2be4fb0de" targetRef="sid-34a543c6-7f56-4717-81e3-ac3e9f781f68"/>
    <userTask id="sid-34a543c6-7f56-4717-81e3-ac3e9f781f68" name="经理审批" activiti:assignee="lisi"/>
    <userTask id="sid-7bc0b739-807a-449f-9280-efad4650434d" name="总经理审批" activiti:assignee="wangwu"/>
    <userTask id="sid-8ac9a522-b178-4536-bf6c-3354a303301b" name="财务审批" activiti:assignee="zhaoliu"/>
    <sequenceFlow id="sid-6c096aae-97dd-4a4b-bac9-d14f540a960f" sourceRef="sid-34a543c6-7f56-4717-81e3-ac3e9f781f68" targetRef="sid-7bc0b739-807a-449f-9280-efad4650434d"/>
    <sequenceFlow id="sid-e7022864-0523-4dd4-a652-04a80dd83730" sourceRef="sid-7bc0b739-807a-449f-9280-efad4650434d" targetRef="sid-8ac9a522-b178-4536-bf6c-3354a303301b"/>
    <sequenceFlow id="sid-2e3106c8-c44e-436d-8873-20c1351f8041" sourceRef="sid-8ac9a522-b178-4536-bf6c-3354a303301b" targetRef="sid-728c4461-5967-42d9-99dd-973e989dc6b9"/>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_evection">
    <bpmndi:BPMNPlane bpmnElement="evection" id="BPMNPlane_evection">
      <bpmndi:BPMNShape id="shape-0398c401-36bb-469a-8d7d-2f7cc9c4155e" bpmnElement="sid-918d4c76-a682-4a1d-8160-c853a2293fc0">
        <omgdc:Bounds x="-65.0" y="-55.0" width="30.0" height="30.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="shape-759f1834-be0a-4ca0-bca5-8c4ca232b22a" bpmnElement="sid-efbbfc5f-d4af-4e5b-9f2c-6ac2be4fb0de">
        <omgdc:Bounds x="0.0" y="-80.0" width="100.0" height="80.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-e9e3e744-8b73-4c26-8266-1534dd6f6e0e" bpmnElement="sid-01be7034-9f59-4812-9d89-42603748a9f7">
        <omgdi:waypoint x="-35.0" y="-40.0"/>
        <omgdi:waypoint x="0.0" y="-40.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-81cdb314-1800-4251-bf37-c5905fa74294" bpmnElement="sid-728c4461-5967-42d9-99dd-973e989dc6b9">
        <omgdc:Bounds x="-75.0" y="45.0" width="30.0" height="30.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-b3dae946-cff0-4424-85da-d5a1663bab38" bpmnElement="sid-6381cc34-a651-4d8e-aa9e-1639bd0c765a">
        <omgdi:waypoint x="100.0" y="-40.0"/>
        <omgdi:waypoint x="170.0" y="-40.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-e5dcff26-8968-49b2-9ffb-e8af02dde13d" bpmnElement="sid-34a543c6-7f56-4717-81e3-ac3e9f781f68">
        <omgdc:Bounds x="170.0" y="-80.0" width="100.0" height="80.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="shape-dc398d5e-7227-4a25-8787-51e4544d9c31" bpmnElement="sid-7bc0b739-807a-449f-9280-efad4650434d">
        <omgdc:Bounds x="170.0" y="20.0" width="100.0" height="80.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="shape-54b39e0b-98ac-4d20-88dc-df942e84e52d" bpmnElement="sid-8ac9a522-b178-4536-bf6c-3354a303301b">
        <omgdc:Bounds x="0.0" y="20.0" width="100.0" height="80.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-33a2f259-0113-4f01-adf2-bcc42e680591" bpmnElement="sid-6c096aae-97dd-4a4b-bac9-d14f540a960f">
        <omgdi:waypoint x="220.0" y="0.0"/>
        <omgdi:waypoint x="220.0" y="20.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-14615a3e-cad3-4f3d-a378-e8fff55ddc33" bpmnElement="sid-e7022864-0523-4dd4-a652-04a80dd83730">
        <omgdi:waypoint x="170.0" y="60.0"/>
        <omgdi:waypoint x="100.0" y="60.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-a275de64-4c05-4b3b-a719-70fa26145a5a" bpmnElement="sid-2e3106c8-c44e-436d-8873-20c1351f8041">
        <omgdi:waypoint x="0.0" y="60.0"/>
        <omgdi:waypoint x="-45.0" y="60.0"/>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

springboot集成工作流,activit工作引擎,java,spring boot

 这里 创建申请-zhansan  经理-lisi  总经理-wangwu  财务-zhaoliu

11)、部署流程图 部署完成查看act_re_deployment表

@Test
    public void testDeployment(){
        // 1.创建processEngine
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        // 2.获取RepositoryService
        RepositoryService repositoryService = processEngine.getRepositoryService();
        // 3.使用service进行流程部署 ,定义流程名,把 bpmn 和 png 部署到数据库
        Deployment deployment = repositoryService.createDeployment()
                .name("出差申请流程")
                .addClasspathResource("bpmn/evection.bpmn20.xml")
                .addClasspathResource("bpmn/evection.png")
                .deploy();
        System.out.println("流程部署id = " + deployment.getId());
        System.out.println("流程部署name = " + deployment.getName());
    }

 12)、启动流程实例

/**
    *@Description 启动流程实例
    *@author weixinxin
    *@Date   17:17 2023/6/28
    **/
    @Test
    public void testStartProcess(){
        // 1. 创建ProcessEngine
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        // 2. 获取RuntimeService
        RuntimeService runtimeService = processEngine.getRuntimeService();
        // 3. 根据流程定义的id启动流程
        ProcessInstance myEvection = runtimeService.startProcessInstanceByKey("evection");
        System.out.println("流程定义id = " + myEvection.getProcessDefinitionId());
        System.out.println("流程实例id = " + myEvection.getId());
        System.out.println("当前活动id = " + myEvection.getActivityId());
    }

 13)、查询个人待办任务

/**
    *@Description 查询个人待执行的任务
    *@author weixinxin
    *@Date   17:33 2023/6/28
    **/
    @Test
    public void testFindPersonalTaskList(){
        // 1.获取流程引擎
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        // 2.获取taskService
        TaskService taskService = processEngine.getTaskService();
        // 3.根据流程key 和 任务负责人 查询任务
        List<Task> list = taskService.createTaskQuery()
                .processDefinitionKey("evection")
                .taskAssignee("zhangsan")
                .list();
        for (Task task : list) {
            System.out.println("流程实例id = " + task.getProcessInstanceId());
            System.out.println("任务id = " + task.getId());
            System.out.println("任务负责人id = " + task.getAssignee());
            System.out.println("任务名称 = " + task.getName());
        }
    }

 14)、完成个人任务,依次完成zhangsan、lisi、wangwu、zhaoliu的任务

/**
    *@Description 完成个人任务
    *@author weixinxin
    *@Date   17:45 2023/6/28
    **/
    @Test
    public void completTesk(){
        // 1.获取流程引擎
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        // 2.获取taskService
        TaskService taskService = processEngine.getTaskService();
        
      /*Task task = taskService.createTaskQuery() //完成zhangsan任务
                .processDefinitionKey("evection")
                .taskAssignee("zhangsan")
                .singleResult();*/

        /*Task task = taskService.createTaskQuery() //完成lisi任务
                .processDefinitionKey("evection")
                .taskAssignee("lisi")
                .singleResult();*/

        /*Task task = taskService.createTaskQuery() //完成wangwu任务
                .processDefinitionKey("evection")
                .taskAssignee("wangwu")
                .singleResult();*/

        Task task = taskService.createTaskQuery() //完成zhaoliu任务
                .processDefinitionKey("evection")
                .taskAssignee("zhaoliu")
                .singleResult();

        System.out.println("流程实例id = " + task.getProcessInstanceId());
        System.out.println("任务id = " + task.getId());
        System.out.println("任务负责人id = " + task.getAssignee());
        System.out.println("任务名称 = " + task.getName());

        taskService.complete(task.getId());
    }

 以上是idea的插件简单的activiti工作引擎的使用过程

 (页面设计器部署到自己项目中)来画流程图。下篇文章文章来源地址https://www.toymoban.com/news/detail-690637.html

到了这里,关于springboot项目集成activiti工作流引擎的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Activity工作流引擎

    目录 一、了解工作流 1、什么是工作流 2、工作流引擎 3、常见工作流引擎 4、Activiti7概述 4.1、Activiti介绍 4.2、建模语言BPMN 4.3、Activiti使用流程 二、Activiti7 1、Activiti使用 1.1、数据库支持 1.2、Activiti环境 1.3、Activiti常用Service服务接口 1.4、流程设计工具 2、Activiti流程操作 2.1、

    2024年02月13日
    浏览(48)
  • 【工作流】Activiti工作流简介以及Spring Boot 集成 Activiti7

    什么是工作流? 工作流指通过计算机对业务流程进行自动化管理,实现多个参与者按照预定义的流程去自动执行业务流程。 文章源码托管:https://github.com/OUYANGSIHAI/Activiti-learninig Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、

    2024年02月08日
    浏览(53)
  • Activiti7工作流引擎:在线流程编辑器Activiti Modoler5.x

    有的时候我们的流程图需要业务人员自己绘制,然后使用自己绘制的流程图,此时就需要一个在线流程图编辑器需要集成到我们的web系统中。Activiti Modoler是Activiti官方推出的在线流程编辑器。 https://github.com/Activiti/Activiti/tree/5.x 将整个项目下载下来。不同版本的目录结构区别

    2024年02月09日
    浏览(55)
  • 若依框架SpringBoot+Activiti工作流的使用

    使用简介:本技术点主要是针对类审批的业务流程的建模,可以有:任务发布(即流程开始)到一级一级的审批到最终结束(即流程结束)一整套完备的模型 1、idea下载activiti插件 ider以前版本下载actiBPM,但是新版ider这个插件已经被淘汰,已经被下面这个替代     2、单独起

    2024年02月11日
    浏览(38)
  • 模仿Activiti工作流自动建表机制,实现Springboot项目启动后自动创建多表关联的数据库与表的方案

    文/朱季谦 熬夜写完,尚有不足,但仍在努力学习与总结中,而您的点赞与关注,是对我最大的鼓励! 在一些本地化项目开发当中,存在这样一种需求,即开发完成的项目,在第一次部署启动时,需能自行构建系统需要的数据库及其对应的数据库表。 若要解决这类需求,其实

    2024年01月24日
    浏览(57)
  • SpringBoot整合Activiti实现工作流的低代码系统(附源码+文档)

    activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求。 springboot+vue+activiti集成了activiti在线编辑器,流行的前后端分离部署开发模式,快速开发平台,可插拔工作流服务。工作流表单

    2024年04月09日
    浏览(46)
  • SpringBoot整合Activiti实现工作流的低代码系统(附源码和配套文档)

    activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求。 springboot+vue+activiti集成了activiti在线编辑器,流行的前后端分离部署开发模式,快速开发平台,可插拔工作流服务。工作流表单

    2024年03月15日
    浏览(73)
  • SpringBoot集成Flowable工作流

    官方文档: https://tkjohn.github.io/flowable-userguide/#_introduction Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据,等等

    2024年02月15日
    浏览(48)
  • Springboot整合Camunda工作流引擎实现审批流程实例

    环境:Spingboot2.6.14 + camunda-spring-boot-starter7.18.0 依赖配置 应用程序配置 通过上面的配置后访问控制台: http://localhost:8100/workflow/ 默认是没有上面的tasks中的内容,这里是我之前测试数据 环境准备好后,接下来就可以设计工作流程。 上面的 camunda-bpm-spring-boot-starter-rest依赖中定义

    2024年02月09日
    浏览(52)
  • 一个开源的汽修rbac后台管理系统项目,基于若依框架,实现了activiti工作流,附源码

    为了更加熟悉activiti工作流的使用和实战而改造的项目,欢迎大家参考和提出问题建议一起学习~ 源码gitee仓库地址:Yuzaki-NASA / Activiti7_test_car_rbac master分支是稳定版,dev分支是后来加了个新的并行审核流程和客户管理,个人测了多遍没啥问题,建议拉dev的代码。 sql文件在car

    2024年03月23日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包