java - Activiti BPM 在任务中获取变量

标签 java business-process-management activiti

是否可以使用 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/

相关文章:

grails - FormService中的未知类型 'processDefinition'

java - Java 货币 API 中缺少一些货币符号

java - Heavy DB 读写操作的设计选项

Java Process Servers 好主意与否?

javascript - 从 javascript 内部抛出异常

java - 主Activiti中没有从内部Activiti接收到异常

java - h2 数据库 : Unsupported database file version or invalid file header in file

java - 如何从序列中停用消息处理器?

java - ESB/BPM 能否允许除了包装 Web 服务之外完全摆脱编码?

大数据的java bpm和子工作流的多实例化