Activiti BPM在Task中获取变量

Tim*_*fei 4 java business-process-management activiti

是否可以使用TaskService获取所有进程或任务变量:

processEngine.getTaskService.createTaskQuery().list();

我知道有机会通过变量获取变量 processEngine.getTaskService().getVariable()

要么

processEngine.getRuntimeService().getVariable()

但上面的每个操作都进入数据库.如果我有100个任务的列表,我将向DB提出100个查询.我不想使用这种方法.有没有其他方法来获取任务或过程相关的变量?

小智 5

不幸的是,没有办法通过"官方"查询API做到这一点!但是,您可以执行的操作是编写自定义MyBatis查询,如下所述:

https://app.camunda.com/confluence/display/foxUserGuide/Performance+Tuning+with+custom+Queries (注意:文章中描述的所有内容也适用于裸Activiti,你不需要狐狸引擎!)

通过这种方式,您可以编写一个查询,在一个步骤中选择任务以及变量.在我的公司,我们使用此解决方案,因为我们有完全相同的性能问题.

此解决方案的缺点是需要维护自定义查询.例如,如果升级Activiti版本,则需要确保自定义查询仍然适合数据库模式(例如,通过集成测试).