部署BPMN2.0流程
在本章中,我们将要为刚才的Spring Boot项目部署流程,并使用监听器,在流程部署时发起流程
编辑流程
下载并打开 Camunda Modeler,编辑只包含一个人工节点的简单流程
点击空白处,编辑流程id为 loan-approval
,Name 为 Loan approval
如果你对流程编辑不熟悉,可以阅读快速入门中的编辑流程部分
流程编辑完成后,保存流程模型到项目的 src/main/resources
文件夹中,命名为 loan-approval.bpmn
,然后重新编译运行项目。
浏览器中打开 http://localhost:8080/ ,点击 cockpit 可以看到流程已经部署到流程引擎中了
如果遇到报错:
src-resolve: 无法将名称 ‘XXXX’ 解析为 ‘element declaration’ 组件。
请检查项目路径是否有中文,这里要求路径不能包含中文。
为项目启用流程支持
现在我们在 Camunda Spring Boot 项目中添加 @EnableProcessApplication
注解,这会提供更多可配置项,以及启用更多流程相关注解。
package org.example.loanapproval;
import org.camunda.bpm.spring.boot.starter.annotation.EnableProcessApplication;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableProcessApplication // 新增
public class WebappExampleProcessApplication {
public static void main(String... args) {
SpringApplication.run(WebappExampleProcessApplication.class, args);
}
}
添加完注解后,需要新建 Camunda 配置文件——src/main/resources/META-INF/processes.xml
,META-INF
文件夹可能不存在,需要新建后,在其中增加processes.xml
,这个文件暂时留空,但对于 Camunda 来说却是必要的。
流程部署时发起流程测试
下一步是一项测试,我们希望在流程部署完成后发起一次流程,需要用到事件监听注解@EventListener
,监听的类型为 PostDeployEvent
(流程部署),修改后的 WebappExampleProcessApplication
如下:
@SpringBootApplication
@EnableProcessApplication
public class WebappExampleProcessApplication {
public static void main(String... args) {
SpringApplication.run(WebappExampleProcessApplication.class, args);
}
// >>新增
@Autowired
private RuntimeService runtimeService;
@EventListener
private void processPostDeploy(PostDeployEvent event) {
runtimeService.startProcessInstanceByKey("loanApproval");
}
// <<
}
修改后,我们再次重启项目,浏览器中打开 http://localhost:8080/ ,点击 Tasklist 进入,可以看到新创建的流程实例人工任务
到此第三部分结束,如果想直接获取到现在为止的进度,可以下载zip包,或者使用如下命令
git clone https://gitee.com/zoollcar/camunda-get-started-spring-boot-and-dmn.git git checkout -f Step-3