有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Bonita BPM不要等待Bonita的函数结束

我正在创建一个使用Bonita BPM API的JAVA应用程序,我正在使用以下简单代码:

ProcessInstance processInstance = App.getProcessAPI().startProcess(App.getProcessDefinitionId(),App.getListOperation(), listVariablesSerializable);
processId = processInstance.getId();
Thread.sleep(1000);
App.getBuilder().filter(ProcessInstanceSearchDescriptor.STARTED_BY, App.getAPISession().getUserId());
App.setPendingTasks(0, 30, null);

这段代码启动一个新流程,并将新任务设置给用户。但是只适用于Thread.sleep(1000),因为App.setPendingTasks(0, 30, null)不想等待App.getProcessAPI().startProcess(App.getProcessDefinitionId(),App.getListOperation(), listVariablesSerializable);结束

我知道Thread.sleep(1000)不是一个好的编程实践,我需要另一个解决方案


共 (1) 个答案

  1. # 1 楼答案

    很明显,在创建实例和将实例的详细信息持久化到数据库之间,您正在经历一种竞争条件

    因为您已经从start命令返回了ProcessInstance。 为什么不直接使用ProcessAPI检索实例的活动(任务)

    List<ActivityInstance> activities = App.getProcessAPI().getActivities(processId, 0, 10);
    

    此API应使用当前进程状态,而不是查询数据库