gpt4 book ai didi

camunda - 如何在 Camunda 中获取用户任务列表及其过程变量

转载 作者:行者123 更新时间:2023-12-05 07:51:55 26 4
gpt4 key购买 nike

我有一个要求,可以在给定时间为用户分配数千(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com