Таблица решений Camunda Modeler: можем ли мы получить предопределенные значения (InputValues) для строкового ввода из внешней конечной точки? - PullRequest
0 голосов
/ 04 июня 2019

У меня есть конечная точка API, которая возвращает набор значений.Я хочу использовать эти значения в качестве источника для предопределенных значений для полей ввода в таблице решений.

На данный момент я вижу только возможность добавления этих значений в качестве статических значений в Modeler.Проверил документацию камунды, не смог найти ничего подходящего для этого требования.

Любые указатели были бы полезны. enter image description here

1 Ответ

1 голос
/ 04 июня 2019

У вас есть несколько различных опций для извлечения значений из внешнего источника для использования в таблице решений. В этом ответе я предполагаю, что ваш внешний источник является конечной точкой REST API. Вот эти варианты:

  1. Вы можете вызвать таблицу принятия решений из определения процесса и получить внешние значения в определении процесса до вызова таблицы принятия решений. Например, вы можете использовать задачу службы, настроенную как «http-коннектор», чтобы получить значения.
  2. Вы можете расширить свою таблицу решений таким образом, чтобы она стала DRD (Диаграмма требований к решениям) и использовать буквенное выражение принятия решений для извлечения этих данных.
  3. Наконец, вы можете встроить свой код для извлечения данных из внешнего источника в Java-бин, который известен обработчику процессов в текущем контексте, и вызывать этот бин из вашей таблицы решений.

Я знаю, что там много; если что-то звучит чуждо, пожалуйста, ознакомьтесь с документацией Камунды по https://docs.camunda.org.

Позвольте мне сосредоточиться на # 2 выше и дать вам конкретный пример ... Если вы выбрали этот маршрут, ваше буквенное выражение Decision может содержать следующий код:

//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. Вы сможете использовать эту переменную "creditScore" в любых таблицах решений, которые зависят от литерального выражения этого решения в вашей DRD.

...