0

我有一个返回一组值的 api 端点。我想将这些值用作决策表中输入字段的预定义值的来源。

到目前为止,我只能看到将这些值作为静态值添加到 Modeler 中的可能性。检查了 camunda 文档,找不到与此要求相关的任何内容。

任何指针都会有所帮助。在此处输入图像描述

4

1 回答 1

1

您有几个不同的选项可以从外部源中提取值以用于决策表。出于此响应的目的,我假设您的外部源是 REST API 端点。以下是这些选项:

  1. 您可以从流程定义中调用决策表,并且可以在调用决策表之前获取流程定义中的外部值。例如,您可以使用配置为“http-connector”的服务任务来提取值。
  2. 您可以扩展您的决策表,使其成为 DRD(决策需求图)并利用决策文字表达式来提取该数据。
  3. 最后,您可以嵌入代码以从当前上下文中的流程引擎已知的 Java bean 中的外部源中提取数据,并从决策表中调用该 bean。

我知道那里有很多;如果其中任何一个听起来很陌生,请查看https://docs.camunda.org上的 Camunda 文档。

让我暂时关注上面的#2并给你一个具体的例子......如果你选择了这条路线,你的决策文字表达式中可能有以下代码:

//Get access to the Connectors and Spin Objects.
var Connectors = Java.type('org.camunda.connect.Connectors');
var Spin = Java.type('org.camunda.spin.Spin');

//Create an instance of the HTTP Connector and make the request.
var httpConnector = Connectors.http();
var resp = httpConnector.createRequest()
    .post()
    .url('http://localhost:1027/creditscore')
    .contentType('application/json')
    .payload('{"ssn":\"' + ssn + '\"}')
    .execute()
    .getResponse();

//Retrieve the credit score from the response.
var creditScore = Spin.JSON(resp).prop('creditScore').numberValue();

//Return the credit score, setting it to the variable name specified here.
creditScore;

在该示例中,我将变量名称设置为“creditScore”,变量类型设置为“long”,表达式语言设置为“javascript”。它需要一个变量作为输入,即“ssn”。您将能够在依赖于 DRD 中该决策文字表达式的任何决策表中使用该变量“creditScore”。

于 2019-06-04T17:04:07.540 回答