我正在创建一个使用Bonita的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)不是一个好的编程实践,我需要另一个解决方案。
发布于 2017-10-13 15:17:14
很明显,在创建实例时和将实例的详细信息保存到数据库之间,您正在经历一种竞争状态。
因为您从start命令返回了ProcessInstance。为什么不直接使用ProcessAPI检索实例的活动(任务)?
List<ActivityInstance> activities = App.getProcessAPI().getActivities(processId, 0, 10);这个API应该使用当前的进程状态,而不是查询数据库。
https://stackoverflow.com/questions/46714438
复制相似问题