springboot集成Camunda审核流程(一):Springboot集成配置

Springboot集成Camunda

​ Camunda 是一种轻量级的商业流程开源平台。Camunda是一个基于Java的框架,支持用于工作流和流程自动化的BPMN、用于案例管理的CMMN和用于业务决策管理的DMN。
同类型的产品有 osworkflow、jbpm、activiti、flowable。其中:Jbpm4、Activiti、Flowable、camunda四个框架同宗同源,祖先都是Jbpm4由于jbpm、activiti、flowable这几个流程引擎出现的比较早,大家对camunda流程引擎认识的不多,实际上camunda在功能上、稳定性、性能、轻量化方面和jbpm、activiti、flowable一样优秀。
下图是Jbpm,Activiti,Camunda,Flowable发展历程:

在这里插入图片描述

一、Springboot集成依赖配置

​ 项目中需要用到工作流引擎来设计部分业务流程,框架选型最终选择了 Camunda7,关于 Camunda以及 Activity 等其他工作流 引擎的介绍及对比不再介绍,这里只介绍与现有Springboot项目的集成以及具体使用及配置。

  • 流程(PROCESS): 通过工具建模最终生成的BPMN文件,里面有整个流程的定义
  • 流程实例(Instance):流程启动后的实例
  • 流程变量(Variables):流程任务之间传递的参数
  • 任务(TASK):流程中定义的每一个节点
  • 流程部署:将之前流程定义的.bpmn文件部署到工作流平台

1、整合相关配置

  • Maven中需要的相关依赖
<!-- Springboot 集成 Camunda-->
        <!--流程引擎-->
        <dependency>
            <groupId>org.camunda.bpm.springboot</groupId>
            <artifactId>camunda-bpm-spring-boot-starter</artifactId>
            <version>7.18.0</version>
        </dependency>

        <!--# Camunda控制台访问路径:  http://192.168.0.145:8080/workflow--> <!--Web管理平台-->
        <dependency>
            <groupId>org.camunda.bpm.springboot</groupId>
            <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
            <version>7.18.0</version>
        </dependency>
        <!--依赖中定义了一系列操作camunda的 rest api 这api的实现是通过jersey实现--> <!--rest api操作接口包-->
        <dependency>
            <groupId>org.camunda.bpm.springboot</groupId>
            <artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
            <version>7.18.0</version>
        </dependency>
  • application.yml配置文件相关配置
camunda:
  bpm:
    webapp:
      application-path: /workflow  #设置管理控制台的访问上下文
    auto-deployment-enabled: false #禁止自动部署resource下的bpmn文件
    # 配置登录管理控制台的用户
    admin-user:
      id: admin
      password: admin
    filter:
      create: All tasks
    #数据库类型
    database:
      type: mssql
      #是否自动更新表信息
      schema-update: false
    deployment-resource-pattern: classpath:/BPMN/*.bpmn  #【不配置路径反而可以读取到我们的.bpmn文件!!】

​ 在Maven中导入的 ‘camunda-bpm-spring-boot-starter-webapp’ 依赖,就是我们Camunda的全局控制台,通过application.yml中配置的 访问路径 ‘application-path’ 已经配置的 ‘admin-user’ 信息登录后即可检测到我们整个Camunda项目的所有流程运行情况:流程定义模板、流程运行实例数、流程运行节点情况…等

2、Camunda APIService

在这里插入图片描述

import org.camunda.bpm.engine.*;

/**
 * @Description: 流程引擎实现类可以通过他获取相关service,里面集成了很多相关service,默认实现如下:
 * @ClassName: ProcessEngineImpl
 */
public class ProcessEngineImpl implements ProcessEngine {

    //流程引擎实现类可以通过他获取相关service
     protected ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    //此服务提供用于管理和操作部署和流程定义的操作,使用camunda的第一要务
    protected RepositoryService repositoryService = processEngine.getRepositoryService();
    //运行相关,启动流程实例、删除、搜索等
    protected RuntimeService runtimeService = processEngine.getRuntimeService();
    //所有围绕任务相关的操作,如完成、分发、认领等
    protected TaskService taskService = processEngine.getTaskService();
    --taskService.getTaskDefinitionKey()得到ACT_ID_等同与HistorictivityInstance.getActivityId()
        
    //提供引擎搜集的历史数据服务
    protected HistoryService historyService = processEngine.getHistoryService();
    --已经审核过的单据需要HistoryService去查询
    --已经审核结束的Task节点 需要通过HistricVariable才能获取之前设置的Variable参数
    
    //用户相关,实际中用不太到
    protected IdentityService identityService = processEngine.getIdentityService();
    // 操作流程表单
    protected FormService formService = processEngine.getFormService();
    //执行cmd以及job相关服务
    protected ManagementService managementService = processEngine.getManagementService();
    //过滤相关服务
    protected FilterService filterService = processEngine.getFilterService();
    //外部任务相关服务
    protected ExternalTaskService externalTaskService = processEngine.getExternalTaskService();
    //CMMN相关操作
    protected CaseService caseService = processEngine.getCaseService();
    //DMN相关服务
    protected DecisionService decisionService = processEngine.getDecisionService();
    //授权相关服务
    protected AuthorizationService authorizationService = processEngine.getAuthorizationService();
    
}

本次我使用的是:

Spring-Boot: (v2.7.6)
Camunda Platform: (v7.18.0)

3、Camunda 常用数据表

​ 在我们相关配置依赖以及数据库相关配置设置好之后,第一次启动服务,就会自动在数据库给我们生成Camunda流程相关的数据表格。大致分为一下几种,分别列出了常见的一些数据表。大体上和flowAble审核流框架所用到的数据表格是大同小异的。

select * from ACT_GE_BYTEARRAY   delete ACT_GE_BYTEARRAY
select * from ACT_GE_PROPERTY
select * from ACT_GE_SCHEMA_LOG

select * from ACT_ID_USER --applilcation配置文件中的用户信息(web管理平台用户信息)
---【ACT_RE】
select ID_,KEY_,* from ACT_RE_PROCDEF --流程定义数据表!!
select * from ACT_GE_BYTEARRAY --流程部署字节码表,与deployMent 部署实例表有字段主键关联,必须先清除字节数组表  (变量数据又可能生成字节类型,通过BYTEARRAY_ID_字段关联存入该表中)
SELECT * FROM ACT_RE_DEPLOYMENT  --自动部署,springboot每次启动都会重新部署,生成记录
--delete ACT_RE_DEPLOYMENT

---【ACT_HI_】
select PROC_INST_ID_,* from ACT_HI_PROCINST  --流程实例表
select * from ACT_HI_ACTINST --执行的活动历史  delete ACT_HI_ACTINST
select * from ACT_HI_TASKINST --执行任务历史
select * from act_hi_varinst  --流程变量历史表!!!
select * from ACT_HI_DETAIL  --历史详情表 (流程中产生的变量详细,包括控制流程流转的变量,业务表单中填写的流程需要用到的变量等。)
select * from ACT_HI_COMMENT  --流程审核意见提交表

---【ACT_RU_】
select  * from ACT_RU_EXECUTION  --运行时流程实例(这个表会体现主干与分支流程实例的概念,所以才有了执行实例这个叫法。如果流程有会签多实例时,以及并行网关时,这时候它就有流程实例和执行实例,一对多的关系)
select PROC_INST_ID_,* from ACT_RU_TASK  --当前运行时结点
select * from ACT_RU_VARIABLE --运行时的流程变量  --变量最终会存在 act_ru_variable 这个表里面---包括流程中产生的变量信息,包括控制流程流转的变量,网关、业务表单中填写的流程需要用到的变量等。很多地方都要用到
select * from ACT_RU_IDENTITYLINK  --运行时流程人员表,主要存储当前节点参与者的信息


--调用接口删除任务的情况!--原数据不会删除,只会改变 act_hi_taskinst/procinst 两个表中的delete_reason字段为删除时添加的信息
--delete ACT_HI_TASKINST where DELETE_REASON_='手动删除'
--delete ACT_HI_PROCINST where DELETE_REASON_='手动删除'

--【IdentityService】
--camunda\flowAble内部都自带了用户相关的信息表,但是在实际开发中我们需要整合自己的人员数据信息,所有一般都很少使用审核流框架自带的用户相关的数据库表。
select * from ACT_ID_GROUP  --存放组信息
select * from ACT_ID_MEMBERSHIP  --存放用户与组的的关联信息
select * from ACT_ID_USER  --存放用户
select * from ACT_ID_INFO  --存放用户个人信息(淘汰)
select * from ACT_ID_TENANT --存放租户信息
select * from ACT_ID_TENANT_MEMBER --租户与个人/与组的关系
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值