部署BPMN2.0流程

在本章中,我们将要为刚才的Spring Boot项目部署流程,并使用监听器,在流程部署时发起流程

编辑流程

下载并打开 Camunda Modeler,编辑只包含一个人工节点的简单流程

image-20210529114736508

点击空白处,编辑流程id为 loan-approval ,Name 为 Loan approval

如果你对流程编辑不熟悉,可以阅读快速入门中的编辑流程部分

流程编辑完成后,保存流程模型到项目的 src/main/resources 文件夹中,命名为 loan-approval.bpmn,然后重新编译运行项目。

浏览器中打开 http://localhost:8080/ ,点击 cockpit 可以看到流程已经部署到流程引擎中了

image-20210529172207409

如果遇到报错:

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.xmlMETA-INF文件夹可能不存在,需要新建后,在其中增加processes.xml,这个文件暂时留空,但对于 Camunda 来说却是必要的。

image-20210529180648434

流程部署时发起流程测试

下一步是一项测试,我们希望在流程部署完成后发起一次流程,需要用到事件监听注解@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 进入,可以看到新创建的流程实例人工任务

image-20210529180604050

到此第三部分结束,如果想直接获取到现在为止的进度,可以下载zip包,或者使用如下命令

git clone https://gitee.com/zoollcar/camunda-get-started-spring-boot-and-dmn.git
git checkout -f Step-3