ToB企服应用市场:ToB评测及商务社交产业平台

标题: Spring Boot 整合 Camunda 实现工作流 [打印本页]

作者: 锦通    时间: 2024-4-8 08:21
标题: Spring Boot 整合 Camunda 实现工作流
工作流是我们开发企业应用几乎必备的一项功能,工作流引擎发展至今已经有非常多的产品。最近正好在接触Camunda,所以来做个简单的入门整合介绍。如果您也刚好在调研或者刚开始计划接入,希望本文对您有所帮助。如果您是一名Java开发或Spring框架爱好者,欢迎关注我程序猿DD,持续非常技术干货。
Camunda简介


Camunda是一个灵活的工作流和流程自动化框架。其核心是一个运行在Java虚拟机内部的原生BPMN 2.0流程引擎。它可以嵌入到任何Java应用程序和任何运行时容器中。
动手整合Camunda

下面就来一步步动手尝试一下吧。
准备工作


如上图,包名之类的根据自己需要做好配置,最后输入管理账号和密码,点击Generate Project按钮,自动下载工程。

  1. <dependency>
  2.     <groupId>org.camunda.connect</groupId>
  3.     <artifactId>camunda-connect-core</artifactId>
  4. </dependency>
  5. <dependency>
  6.     <groupId>org.camunda.bpm</groupId>
  7.     <artifactId>camunda-engine-plugin-connect</artifactId>
  8. </dependency>
复制代码
由于Camunda Automation Platform 7 Initializr默认的Spring Boot版本已经是3.1了,所以如果要做一些降级调整,可以手工修改pom.xml中dependencyManagement配置,比如下面这样:
  1. <dependencyManagement>
  2.     <dependencies>
  3.       <dependency>
  4.         <groupId>org.springframework.boot</groupId>
  5.         <artifactId>spring-boot-dependencies</artifactId>
  6.         <version>2.6.4</version>
  7.         <type>pom</type>
  8.         <scope>import</scope>
  9.       </dependency>
  10.       <dependency>
  11.         <groupId>org.camunda.bpm</groupId>
  12.         <artifactId>camunda-bom</artifactId>
  13.         <version>7.15.0</version>
  14.         <scope>import</scope>
  15.         <type>pom</type>
  16.       </dependency>
  17.     </dependencies>
  18. </dependencyManagement>
复制代码
  1. spring.datasource.url: jdbc:h2:file:./camunda-h2-database
  2. camunda.bpm.admin-user:
  3.   id: transduck
  4.   password: 111111
复制代码
创建一个简单的工作流

下面我们尝试创建一个简单的工作流:
第一步,我们将请求用户提供两个输入:name和message
第二步,我们将这些输入传递给我们的服务以创建消息输出
开始编码:
  1. public class model {
  2.    
  3.     private String message;
  4.     private String name;
  5.    
  6.     public model() { }
  7.    
  8.     public String getMessage() {
  9.         return message;
  10.     }
  11.    
  12.     public void setMessage(String message) {
  13.         this.message = message;
  14.     }
  15.    
  16.     public String getName() {
  17.         return name;
  18.     }
  19.    
  20.     public void setName(String name) {
  21.         this.name = name;
  22.     }
  23.    
  24.     @Override
  25.     public String toString() {
  26.         return "" + message + ", " + name;
  27.     }
  28. }
复制代码
  1. @RequestMapping("/")
  2. @RestController
  3. public class controller {
  4.     Logger logger = Logger.getLogger(this.getClass().getName());
  5.     @PostMapping("/message")
  6.     public model createMessage(@RequestBody model model) {
  7.         logger.info("-------Message Creator Initialized-------");
  8.         model m = new model();
  9.         m.setMessage(model.getMessage());
  10.         m.setName(model.getName());
  11.         logger.info("Message created --> " + m.toString());
  12.         return m;
  13.     }
  14. }
复制代码

图中带有小人的框称为User Tasks,是执行与用户相关的操作的步骤。如前面部分所述,在工作流程的第一步中,我们将请求用户输入两个输入:姓名和消息。无需添加新任务,更新现有的User Tasks即可解决问题。单击User Tasks,打开属性面板,在打开的面板中定义适合我们案例内容。


这是定义呈现给用户的表单选项卡。由于我们需要用户输入姓名和消息,因此我们定义两个名为“name”和“message”的表单字段。要定义表单字段,请单击“表单字段”旁边的加号图标。在打开的表单中,相应地填写 ID、类型和标签字段。对每个表单字段重复相同的步骤。
具体操作方法:单击左侧菜单中的Create Task图标,然后将任务拖放到随机位置。单击任务后,单击Change Type图标,然后从菜单中选择Service Task。




启动测试

在完成了上面的编码和工作流程配置后,我们就可以在调试模式下运行项目了。
启动完成后,在浏览器上访问地址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技术交流群,参与交流与讨论,更好的学习与进步!更多Spring Boot教程可以点击直达!,欢迎收藏与转发支持!
欢迎关注我的公众号:程序猿DD。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4