一.简介
Camunda是一个开源的工作流引擎,可以用于设计、执行和监控各种业务流程。它使用BPMN和DMN标准来建模和定义业务流程,同时提供了丰富的API和工具,用于与其他系统进行集成和扩展。
以下是一些Camunda工作流的主要特点:
-
强大的建模工具:Camunda提供了一系列建模工具,如Camunda Modeler,使用户能够轻松地创建和编辑BPMN和DMN模型,以便更好地理解和管理业务流程。
-
易于集成:Camunda具有广泛的集成能力,可以很容易地与其他系统进行连接。它提供了多种API和插件,可用于与Java、Spring等技术进行集成,同时还支持REST API和消息队列等通信机制。
-
强大的任务管理:Camunda具有灵活的任务管理功能,支持多种任务类型(如用户任务、服务任务、定时任务等)和任务分配方式(如组任务、候选人任务等),可以根据不同的条件自动分配和处理任务。
-
高效的流程执行:Camunda具有高效的流程执行能力,可以处理大量的流程实例和并发任务,并提供了可配置的线程池和异步执行机制,以提高性能和可伸缩性。
-
实时监控和管理:Camunda提供了强大的监控和管理工具,如Cockpit和Tasklist,使用户能够实时监控和管理运行中的流程实例、任务、变量等信息,以及执行历史记录和统计数据。
-
可扩展性:Camunda具有良好的可扩展性,可以通过编写自定义插件、监听器、表单渲染器等,来满足特定的业务需求。
二.使用简介
1.设计工作流程图
下载安装Camunda Modeler 详见 https://www.jianshu.com/p/d07439a3fe1c。安装好流程设计软件后就可以设计流程图了。
2.搭建java环境
1).引入jar包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter</artifactId>
<version>7.19.0</version>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
<version>7.19.0</version>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
<version>7.19.0</version>
</dependency>
2).配置配置文件
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://172.16.15.18:3306/camunda719?useSSL=false
password: test
username: test
camunda:
bpm:
# 配置账户密码来访问Camunda自带的管理界面
admin-user:
id: admin
password: admin
first-name: admin
filter:
create: All tasks
#指定数据库类型
# database:
# type: mysql
#禁止自动部署resources下面的bpmn文件
auto-deployment-enabled: false
#禁止index跳转到Camunda自带的管理界面,默认true
# webapp:
# index-redirect-enabled: false
3.部署工作流程图
将设计好的流程文件拷贝到java项目resources文件夹下(流程文件一般是.bpmn格式的文件)
4.启动流程实例
部署好后就可以启动流程实例。
proKey为流程设计时流程名称。
busKey为业务表单的唯一键。
对应设置流程变量的流程可以以HashMap类型设置变量值。
ProcessInstance instance = runtimeService.startProcessInstanceByKey(proKey,busKey, new HashMap<>());
runtimeService.setVariable(instance.getId(), "day", "5");
4.审批流程
调用一下代码完成流程审批
Task task = taskService.createTaskQuery().processDefinitionKey(proKey).processInstanceBusinessKey(busKey).singleResult();
taskService.setAssignee(task.getId(),opUid);
String comment = "同意";
taskService.createComment(task.getId(), task.getProcessInstanceId(), comment);
taskService.complete(task.getId());
三.CRM和Camunda工作流存在问题及解决方案
1.CRM工作流问题
1).CRM流程流转依赖于业务表flag标识逻辑,一个流程只能配置一个标识。无法满足多条件判断。camunda可以设置多个流程变量灵活多变。
2).CRM流程处理逻辑都是人员编码稳定性不高。流程配置无可视化配置,配置不直观。camunda有可视化配置界面。
3).CRM流程固定无法动态加入流程步骤。camunda可是实现加签和会签。
4).CRM流程审批完成逻辑每次都得修改通用审核提交方法,容易出问题。camunda可以设置服务任务,监听器来完成,符合开闭原则。
2.Camunda工作流问题
1).流程审批不支持多人,必须设置具体审批人,否则需要领取步骤。设置审批人可以通过监听器来灵活配置。
2).流程代办信息存储的信息比较少,无法像CRM那样灵活的组合sql查询代办已办。
3).流程需要java程序,无法内嵌到CRM(.net)中。
4).流程设置具体审批人,人员离职需要预留处理逻辑。camunda可以重新设置审批人。
四.参考文档
1.Camunda 7工作流引擎 API 以及与Springboot集成实现工作流配置全纪录_camunda7-CSDN博客
3.camunda数据库表结构介绍camunda数据库表结构介绍_camunda 表结构-CSDN博客
4.Camunda 流程引擎API介绍
Camunda 流程引擎API介绍_camunda api-CSDN博客
5.Camunda流程平台 中文站