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/

相关文章:

java - 如何将项目添加到arraylist并修改功能

java - RecyclerView 上拉刷新

business-process-management - 卡蒙达 7.2 : how to configure camunda-webapp to work on a different host than engine

.net - 我可以在没有SharePoint的情况下使用K2 Blackpearl吗?

java - 在Activiti Workflow Engine上部署: NullPointerException Error

java - Spring Boot CORS过滤器不适用于AngularJS

java - 如何在 Activiti JavaDelegate 任务中访问 Spring Bean

Arraylist中的Java内存分配

java - 为什么通过JNI在Java和C++之间传递了不正确的值?

java - Java-Spring框架-状态机