使用 REST 的 XOR 网关的 Camunda GET 机会

Camunda GET opportunities of XOR Gateway using REST

提问人:CrazyEight 提问时间:6/29/2020 更新时间:7/5/2020 访问量:839

问:

我有以下情况:enter image description here

我想做的是在我的 Angular 应用程序中获取一个下拉菜单,其中列出了所有书籍的机会。所以我可以在《哈利波特》、《白鲸》和《鲁滨逊漂流记》之间进行选择。当我选择一本书并按提交时,我通过 REST 发送了 POST。/complete

它应该看起来像这样,其中选项应该始终与 Camunda 模型中的选项相同:enter image description here

我的问题是:我怎样才能获得可以通过REST选择哪些书籍的信息?这甚至可能吗,这是应该做的吗?

Angular Rest BPMN 卡蒙达

评论

0赞 YaakovHatam 7/1/2020
什么是卡蒙达模型?
0赞 CrazyEight 7/1/2020
BPMN 图
0赞 YaakovHatam 7/1/2020
有些不清楚,书籍阅读的数据在哪里?
0赞 CrazyEight 7/2/2020
我想从“独占”网关的传出箭头接收信息。我是卡蒙达的新手,所以我不确定这是否可能

答:

0赞 rahulP 7/3/2020 #1

我从您的问题中了解到,您想要访问网关路由值并在到达那里之前将其转换为下拉菜单。 据我所知,这是不可能的。网关只是查找执行路由的 if-else 条件。 您可以通过将此下拉列表传递给进程执行、将其保留在某个脚本中或通过 REST API 获取数据来创建此下拉列表。

0赞 abestrad 7/5/2020 #2

有一个选项可能会对您有所帮助。这个想法是获取流程定义的 BPMN 2.0 XML。您可以解析 xml 并获取网关或任何元素。

标准结果是一个转义的 XML 字符串,其中包含部署此定义时使用的 XML。

版本 7.0 和 7.13

Camunda 的 API 具有以下端点。它返回流程定义的 XML。/process-definition/{id}/xmlBPMN 2.0

版本 7.13

添加了其他端点,

返回不属于任何租户的最新版本的进程定义的 XML

获取/process-definition/key/{key}/xml

返回租户的最新版本的进程定义的 XML

获取/process-definition/key/{key}/tenant-id/{tenant-id}/xml

结果

请求

http://localhost:5115/engine-rest/process-definition/Process_16yhb92:1:1605d9ef-be29-11ea-a3af-0242ac160003/xml

enter image description here

您的 XML 应如下所示:

"bpmn20Xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bpmn:definitions xmlns:bpmn=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:di=\"http://www.omg.org/spec/DD/20100524/DI\" id=\"Definitions_0tnus7x\" targetNamespace=\"http://bpmn.io/schema/bpmn\" exporter=\"Camunda Modeler\" exporterVersion=\"3.5.0\">\n  <bpmn:process id=\"Process_16yhb92\" isExecutable=\"true\">\n    <bpmn:startEvent id=\"StartEvent_1\">\n      <bpmn:outgoing>SequenceFlow_05h0ut0</bpmn:outgoing>\n    </bpmn:startEvent>\n    **<bpmn:exclusiveGateway id=\"ExclusiveGateway_1\">\n**      
...
...
sourceRef=\"Task_1mivaws\" targetRef=\"ExclusiveGateway_1\" />\n 

评论

0赞 CrazyEight 7/6/2020
我抓住你了。因此,可能有一种方法可以通过正则表达式从 xml 中读出信息,例如......还是感觉有点“骇人听闻”。我试图定义一个类型枚举,其中可以选择所有可能的值。我不知道这是否是一种“干净”的方法?有了我,我至少可以找出表单是否包含布尔值或枚举等。通过我可以获取表单的 HTML。目前,我尝试将 HTML 包含在我的代码中,而不是像在 Camunda Tasklist 中那样的下拉列表。我可以这样做吗???Form FieldC#, C, Camunda/task/{id}/form-variables/task/{id}/rendered-form
0赞 abestrad 7/6/2020
当然,这是“hacky”,这只是向您展示读取该值是可能的。另一件事是你是否应该追求这一点,以及你将如何保持这些价值观。什么对你来说更容易?并且需要较少的维护。您的要求和时间在这里起着重要作用。
0赞 CrazyEight 7/6/2020
但必须有一种干净的方法来做到这一点。在 Camunda Tasklist 中,表单也会被可视化,并且值会转发到网关。我想做到这一点,不同的是不是通过 Camunda Cockpit 选择,而是在我的 Angular 应用程序中选择。在最好的情况下,以一种非黑客的方式;)
0赞 abestrad 7/6/2020
然后,camunda sdk 对您有用>github.com/camunda/camunda-bpm-examples/tree/master/sdk-js/...... <
0赞 CrazyEight 7/9/2020
我没有在我的 Angular 7 应用程序中运行它。我现在所做的是将 xml 从我的 BPMN 解析为 JSON 并提取我需要的信息。这很骇人听闻,但我不知道还能做什么......