如何在Spring Boot Activiti中设置Business Key

时间:2016-01-04 14:45:00

标签: spring spring-boot activiti bpmn

我正在寻找一种方法来设置Activiti进程的Business键,以便将其保存在执行表和历史表中。我发现我们可以在流程实例的启动过程中设置它。

ExecutionEntity processInstance= (ExecutionEntity) processEngine.getRuntimeService().startProcessInstanceByKey("abcProcess",*"123456"*,variables);

但是,在进程正在进行时,任何UserTask都没有保存它。我们被迫使用任务监听器手动保存它。

是否有任何自动方法将业务键连接到流程实例,以便它自动保存在运行时表和历史记录表中?

3 个答案:

答案 0 :(得分:3)

您刚刚发现了Business Key的一个限制。一旦设置(通常在进程初始化时),除非您在代码中明确设置它(例如监听器),否则它不会改变。

因此,我们通常只使用业务键进行流程实例分类(允许我们根据流程类型和业务密钥进行搜索)。

不是你想要的答案,但仍然是一个答案。

答案 1 :(得分:0)

我知道,这是旧帖子,仅针对遇到此错误的人,请尝试在启动过程后调用此代码:

@Description("update businessKey")
public void updateBusinessKey(String processInstanceId, String businessKey) {
    try {
        runtimeService.updateBusinessKey(processInstanceId, businessKey);
        System.out.println("SIGMIN-LOG-INFO -> Processo atualizado: " + processInstanceId + "novo Business Key: "
                + businessKey);
    } catch (Exception e) {
        e.printStackTrace();
    }

}

答案 2 :(得分:0)

取决于您使用的spring版本,Activiti 5.22.0版本可能会遇到错误

https://github.com/Activiti/Activiti/commit/13ae26eae2656bcbe13a5a2f98f71d9a28898e24

我相信此修补程序是在5.23.0中提供的,但是由于我使用的是Spring Boot,它可以管理Activiti引入的版本,所以据我所知无法对其进行升级。

这里的文档https://www.activiti.org/userguide/#restProcessInstancesGet

说您应该能够执行以下操作:

<callActivity id="callSubProcess" calledElement="checkCreditProcess" activiti:businessKey="${myVariable}">