- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个要求,可以在给定时间为用户分配数千(1000 - 5000)个任务,这些任务属于不同的流程实例(1000 - 5000 个相同的用户任务)实例。我有一个自定义任务列表屏幕,我需要在其中加载所有任务及其基本信息(ID、名称、流程实例 ID 等)以及每个任务的一些流程变量。
首先,我使用过滤器/列表 REST 服务,即 engine-rest/filter/{filter-id}/list 来获取带有流程变量的任务。 (我在 Camunda 任务列表中创建了一个过滤器)。但是,当有超过 1000 个有问题的流程实例时,此 REST 服务需要永远返回。大约 2000 个流程实例需要 7-8 分钟。可能是因为此服务返回了很多我不需要的信息。
所以我决定使用 Camunda Java api 编写自己的 REST 服务。这就是我所做的-
List<Task> tasks = taskService.createTaskQuery().processDefinitionKey(processDefinitionKey).taskAssignee(assignee).list();
if(tasks != null && !tasks.isEmpty()){
for(Task task : tasks){
.....
.....
Map<String, Object> variables = taskService.getVariables(task.getId(), variableNames);
.....
}}
这有效并且比过滤器服务快得多。但是对于大约 1000 个实例,它需要大约 25 秒。 (我的服务器现在不是生产级,Tomcat Xms -1gb Xmx - 2gb)。
但我担心的是,这段代码是否在内部访问了 DB 1000 次(对于 taskquery 返回的每个任务)以获取变量?更糟糕的是,它是否为每个变量多次查询数据库,这取决于变量的数量?我的意思是对于 5 个变量,我们是否达到 DB 5000 次?
1) 如果是这样,我有什么办法可以改进这项服务吗?比如我可以编写一个 NativeTaskQuery 来加入 act_ru_task、act_ru_process 和 act_ru_variable 表来获取我需要的数据吗?那是正确的方法吗?2) Camunda 中没有任何内置缓存可以帮助解决这个问题吗?
预先感谢您的帮助。
最佳答案
您可以为此使用自定义查询。编写您的 native sql 查询并添加 mybatis 映射。这个例子解释了这个概念:https://github.com/camunda-consulting/code/tree/master/snippets/custom-queries
关于camunda - 如何在 Camunda 中获取用户任务列表及其过程变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34346573/
我是一名优秀的程序员,十分优秀!