gpt4 book ai didi

java - 刷新通过 BusinessProcess 设置的变量

转载 作者:行者123 更新时间:2023-11-30 11:28:55 25 4
gpt4 key购买 nike

当我通过 org.camunda.bpm.engine.cdi.BusinessProcess.setVariable() 设置流程变量时,该值似乎不会自动刷新。

有没有办法在不完成当前用户任务的情况下刷新变量?我认为 BusinessProcess.signalExecution() 将是解决方案,但它似乎完成了当前任务,就像 BusinessProcess.completeTask() 所做的那样。

signalExecutioncompleteTask 到底有什么区别?

最佳答案

变量会缓存在请求或对话中,直到工作单元结束,例如通过调用 completeTask()。目前没有用于手动刷新缓存变量的开箱即用的解决方案。您可以通过编写一个注入(inject) ContextAssociationManager 并执行刷新的 Cdi Bean 来解决这个问题:

@Inject
private ContextAssociationManager contextAssociationManager;

@Inject
private TaskService taskService;

public void flushCachedVariables() {
String taskId = contextAssociationManager.getTask().getId();
taskService.setVariables(taskId, contextAssociationManager.getCachedVariables());
}

signalExecutioncompleteTask的区别如下:

  • completeTask:将使用 TaskService 完成当前关联的任务
  • signalExecution:更抽象:它向当前关联的执行发送信号以继续执行。在这种情况下,效果是一样的:任务完成并继续执行。但是 signalExecution 也可以在不涉及人工任务的情况下工作(即 ReceiveTask )。

关于java - 刷新通过 BusinessProcess 设置的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18714720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com