是否可以使用 TaskService 获取所有流程或任务变量:
processEngine.getTaskService.createTaskQuery().list();
我知道有机会通过
processEngine.getTaskService().getVariable()
或
processEngine.getRuntimeService().getVariable()
但是上面的每一个操作都进入了数据库。如果我有 100 个任务的列表,我将对 DB 进行 100 个查询。我不想使用这种方法。 有没有其他方法可以获取任务或流程相关的变量?
最佳答案
不幸的是,没有办法通过“官方”查询 API 来做到这一点!但是,您可以按照此处所述编写自定义 MyBatis 查询:
https://app.camunda.com/confluence/display/foxUserGuide/Performance+Tuning+with+custom+Queries (注意:本文中描述的所有内容也适用于裸 Activiti,您不需要 fox 引擎!)
这样您就可以编写一个查询,一步选择任务和变量。在我的公司,我们使用了这个解决方案,因为我们遇到了完全相同的性能问题。
此解决方案的缺点是需要维护自定义查询。例如,如果您升级您的 Activiti 版本,您将需要确保您的自定义查询仍然适合数据库模式(例如,通过集成测试)。
关于java - Activiti BPM 在任务中获取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13881024/