通过 Camunda 的 Rest API 检索属于流程定义一部分的所有任务的列表

Retrieve a list of all tasks that are part of a process-definition via Camunda's Rest API

我正在开发一个应用程序,我想向用户展示一个界面,向他们展示他们需要完成的过程并突出显示他们当前在该过程中的位置。我似乎找不到可以提供此类信息的 REST API。

例如,工作流有 4 个步骤,他们已完成第 1 步,现在处于第 2 步。

> 第 1 步 > 第 2 步 > 第 3 步 > 第 4 步

我可以通过 /task 端点为用户获取当前任务 Step 2,我可以从 /history/task 端点获取 Step 1,但是我似乎无法获得 Step 3Step 4。我可以从各自的端点拉出 xml 并解析它,但这似乎有点过分了。

我是不是漏掉了什么?

您不需要解析 xml,您可以使用 bpmn.io 渲染过程并突出显示实际的 activity。 camunda REST API.

提供了所有必要的信息

你可以在这里找到一个简单的例子https://github.com/camunda/camunda-consulting/tree/master/snippets/jsf-simple-tasklist

列出的 bpmn.io 选项将提供任务列表,但根据我的经验,这并不真正代表流程的 "Milestones"。一般是用户希望看到的里程碑。 例如,在贷款发放流程中,可能有 30 个具有多个审批级别的用户任务。客户不想看到每个任务,他们想看到的是他们所处的流程阶段。 例如启动、承保、履行等

如果这是您正在寻找的,我建议您在流程实例中维护一个变量,该变量保存流程中的当前里程碑。

我倾向于使用 "none" 消息抛出事件和关联的侦听器来设置里程碑。

我并不是说原来的答案不正确,但根据我的经验,这并不是最终用户真正希望看到的。

希望这对您有所帮助, 格雷格

您可以通过 Camunda REST API

获取 bpmn.xml 文件中定义的所有作业定义

GET: /job-definition?activityIdIn=ServiceTask1,ServiceTask2

您还可以传递此 link 中列出的其他查询参数。

Refer Camunda REST API Documentation

而不是使用 xml 方式,找到了获取特定流程定义键的所有任务的新方法。

using key, pd = repositoryService.PDQuery.PDKey(key).singleresult();

从上面的值中,得到 PD Id。这样可以从同一个 repoService 中获取 modelInstance。

BpmnModelInstance ins = repositoryService.getBpmnModelInstance(pd.getId());

使用上面的ins,我们可以得到所有的任务。