网站首页 > 精选教程 正文
工作流是我们开发企业应用几乎必备的一项功能,工作流引擎发展至今已经有非常多的产品。最近正好在接触Camunda,所以来做个简单的入门整合介绍。如果您也刚好在调研或者刚开始计划接入,希望本文对您有所帮助。如果您是一名Java开发或Spring框架爱好者,欢迎关注:程序猿DD,持续非常技术干货。
#Camunda简介
Camunda是一个灵活的工作流和流程自动化框架。其核心是一个运行在Java虚拟机内部的原生BPMN 2.0流程引擎。它可以嵌入到任何Java应用程序和任何运行时容器中。
- 官网网站: https://www.camunda.org/
- 入门文档: https://docs.camunda.org/get-started/
#动手整合Camunda
下面就来一步步动手尝试一下吧。
#准备工作
- 使用Camunda提供的项目初始化工具(Camunda Automation Platform 7 Initializr)[https://start.camunda.com/]
如上图,包名之类的根据自己需要做好配置,最后输入管理账号和密码,点击Generate Project按钮,自动下载工程。
- 解压下载后的工程,使用IntelliJ IDEAopen in new window打开,其项目结构
- 打开pom.xml文件,添加camunda依赖:
<dependency>
<groupId>org.camunda.connect</groupId>
<artifactId>camunda-connect-core</artifactId>
</dependency>
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine-plugin-connect</artifactId>
</dependency>
由于Camunda Automation Platform 7 Initializr默认的Spring Boot版本已经是3.1了,所以如果要做一些降级调整,可以手工修改pom.xml中dependencyManagement配置,比如下面这样:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.6.4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-bom</artifactId>
<version>7.15.0</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
- 打开配置文件application.yaml,可以看到类似下面的内容
spring.datasource.url: jdbc:h2:file:./camunda-h2-database
camunda.bpm.admin-user:
id: transduck
password: 111111
- spring.datasource.url:工作流引擎使用的数据库配置,您也可以根据官网文档去调整到其他数据库中(尤其生产环境)。
- camunda.bpm.admin-user:管理员账户配置,可以在这里修改用户名和密码
#创建一个简单的工作流
下面我们尝试创建一个简单的工作流:
第一步,我们将请求用户提供两个输入:name和message 第二步,我们将这些输入传递给我们的服务以创建消息输出
开始编码:
- 创建第一步提到的数据模型
public class model {
private String message;
private String name;
public model() { }
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "" + message + ", " + name;
}
}
- 根据第二步,创建接收消息的接口
@RequestMapping("/")
@RestController
public class controller {
Logger logger = Logger.getLogger(this.getClass().getName());
@PostMapping("/message")
public model createMessage(@RequestBody model model) {
logger.info("-------Message Creator Initialized-------");
model m = new model();
m.setMessage(model.getMessage());
m.setName(model.getName());
logger.info("Message created --> " + m.toString());
return m;
}
}
- 下面我们可以开始创建工作流程图。在Camunda Modeleropen in new window中打开我们项目的resources下的process.bpmn,我们将看到类似下面的流程图:
图中带有小人的框称为User Tasks,是执行与用户相关的操作的步骤。如前面部分所述,在工作流程的第一步中,我们将请求用户输入两个输入:姓名和消息。无需添加新任务,更新现有的User Tasks即可解决问题。单击User Tasks,打开属性面板,在打开的面板中定义适合我们案例内容。
- 完成基本信息填写后,转到Form选项卡。
这是定义呈现给用户的表单选项卡。由于我们需要用户输入姓名和消息,因此我们定义两个名为“name”和“message”的表单字段。要定义表单字段,请单击“表单字段”旁边的加号图标。在打开的表单中,相应地填写 ID、类型和标签字段。对每个表单字段重复相同的步骤。
- 开始配置第二步,调用我们的接口。添加Service Task。
具体操作方法:单击左侧菜单中的Create Task图标,然后将任务拖放到随机位置。单击任务后,单击Change Type图标,然后从菜单中选择Service Task。
- 填写基本信息
- 切换到Connector选项卡。这是定义 HTTP 信息和有关服务的数据的选项卡,在这里配置刚才定义的接口,具体如下图所示:
- 将Service Task连接到工作流程中。先删除User Tasks和End Event之间的箭头。然后,单击User Tasks并从菜单中选择箭头图标。将箭头连接到Service Task。最后,再连接Service Task和End Event。
#启动测试
在完成了上面的编码和工作流程配置后,我们就可以在调试模式下运行项目了。
启动完成后,在浏览器上访问地址http://localhost:8080/,您将看到 Camunda 登录页面:
输入您在application.yaml中配置的管理员配置信息,进入后台:
从应用程序主页中选择Tasklist,可看到如下界面:
然后在任务列表页面上单击Add a simple filter选项。单击后,您将看到名为All Tasks (0)的过滤器已添加到列表中,继续单击Start process选项来运行我们准备好的工作流程。
选择您的工作流进程,然后单击Start button,无需提供任何其他信息。
最后,单击Created下列出的Get Input任务。如果您没有看到该任务,请刷新页面。
您将看到我们在第一步中定义的表单。要填写表格,请单击右上角Claim选项。然后,根据您的喜好填写表格并单击Complete按钮。
当工作流执行Service Task并且服务运行时,您将看到列表再次变空。如果工作流成功执行了第二步,我们应该能够在控制台中看到输出。
#小结
本文介绍了使用Spring Boot和Camunda创建一个简单工作流的完整步骤,希望对您有所帮助。如果您学习过程中如遇困难?可以加入我们超高质量的Spring技术交流群:https://www.didispace.com/jiaqun.html,参与交流与讨论,更好的学习与进步!更多Spring Boot教程:https://www.didispace.com/spring-boot-2/,欢迎收藏与转发支持!
来源:https://www.didispace.com/spring-boot-2/10-6.html
- 上一篇: 如何实现工作流?有完整的项目案例
- 下一篇: java审批工作流(flowable工作流)
猜你喜欢
- 2024-12-20 手把手教你用 Jenkins + K8S 打造流水线环境
- 2024-12-20 自助搭建工作流的流程引擎梳理详解
- 2024-12-20 开源微服务编排框架:Netflix Conductor
- 2024-12-20 告别繁琐操作,Skyvern用LLM和CV自动化浏览器工作流
- 2024-12-20 开源SpringBlade微服务开发平台,用来做毕设接私活是真的香
- 2024-12-20 一款开源、前后端分离的低代码开发框架(集成flowable工作流)
- 2024-12-20 Java 分布式任务调度平台:PowerJob 快速开始+配置详解
- 2024-12-20 一个基于.Net+Vue开发的开源权限工作流系统
- 2024-12-20 分布式定时任务框架—PowerJob
- 2024-12-20 springboot+activiti+angular 集成activiti工作流实现,源码分享
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)