0

我正在创建一个使用 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)不是一个好的编程习惯,我需要另一个解决方案。

4

1 回答 1

0

您显然在创建实例和将其详细信息持久保存到数据库之间遇到了争用情况。

由于您有从 start 命令返回的 ProcessInstance 。为什么不直接使用 ProcessAPI 直接检索实例的活动(任务)?

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

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

于 2017-10-13T15:17:14.147 回答