在流程中调用 JAVA Class

在本章中我们将学到如何使用流程的 Service task(服务任务) 中调用JAVA类。

将 Service Task 添加到流程中

打开 Camunda Modeler ,在左侧工具架中选择 Task(矩形),拖动到“检查申请单”后面,双击命名为“发放贷款”

image-20210530095026791

点击新创建的节点,点击右侧弹出的扳手按钮,将类型修改为 Service Task。

image-20210530095147567

实现 JavaDelegate 类

现在我们需要添加 Service Task 可以调用的实现类,将类添加到 org.example.loanapproval 包下,命名为 OfferLoan,这里我们希望打印贷款人信息到日志,具体代码如下:

package org.example.loanapproval;

import java.util.logging.Logger;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;

public class OfferLoan implements JavaDelegate {

    private final static Logger LOGGER = Logger.getLogger("LOAN-REQUESTS");

    @Override
    public void execute(DelegateExecution execution) {
        LOGGER.info("offer " + execution.getVariable("lenderId") + " loans");
    }
}

配置 Service Task

回到 Camunda Modeler ,选择“发放贷款”节点,在右侧的属性面板中,选择 ImplementationJava Class ,Java Class 为我们刚才创建的类 org.example.loanapproval.OfferLoan

image-20210530100557989

保存流程

测试一下

重新编译并运行项目,浏览器中打开 http://localhost:8080/ ,点击 Tasklist 进入,点击右上角 Start Process,启动一个新流程

image-20210530100856310

刷新页面,完成人工任务

image-20210530101045803

检查 Spring Boot 程序控制台输出,可以看到贷款人信息已经被打印出来了

INFO 3156 --- [nio-8080-exec-6] LOAN-REQUESTS    : offer 张三 loans

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

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