我正在寻找一种方法来设置Activiti进程的Business键,以便将其保存在执行表和历史表中。我发现我们可以在流程实例的启动过程中设置它。
ExecutionEntity processInstance= (ExecutionEntity) processEngine.getRuntimeService().startProcessInstanceByKey("abcProcess",*"123456"*,variables);
但是,在进程正在进行时,任何UserTask都没有保存它。我们被迫使用任务监听器手动保存它。
是否有任何自动方法将业务键连接到流程实例,以便它自动保存在运行时表和历史记录表中?
答案 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}">