Bonita BPM 不等待 Bonita 的功能结束
Bonita BPM do not wait for Bonita's function end
我正在创建一个使用 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)
不是一个好的编程习惯,我需要另一个解决方案。
您显然在创建实例和将其详细信息保存到数据库之间遇到了竞争条件。
因为您有从启动命令返回的 ProcessInstance。
为什么不直接使用 ProcessAPI?
直接检索实例的活动(任务)
List<ActivityInstance> activities = App.getProcessAPI().getActivities(processId, 0, 10);
这个API应该使用当前进程状态而不是查询数据库。
我正在创建一个使用 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)
不是一个好的编程习惯,我需要另一个解决方案。
您显然在创建实例和将其详细信息保存到数据库之间遇到了竞争条件。
因为您有从启动命令返回的 ProcessInstance。 为什么不直接使用 ProcessAPI?
直接检索实例的活动(任务)List<ActivityInstance> activities = App.getProcessAPI().getActivities(processId, 0, 10);
这个API应该使用当前进程状态而不是查询数据库。