У вас есть несколько различных опций для извлечения значений из внешнего источника для использования в таблице решений. В этом ответе я предполагаю, что ваш внешний источник является конечной точкой REST API. Вот эти варианты:
- Вы можете вызвать таблицу принятия решений из определения процесса и получить внешние значения в определении процесса до вызова таблицы принятия решений. Например, вы можете использовать задачу службы, настроенную как «http-коннектор», чтобы получить значения.
- Вы можете расширить свою таблицу решений таким образом, чтобы она стала DRD (Диаграмма требований к решениям) и использовать буквенное выражение принятия решений для извлечения этих данных.
- Наконец, вы можете встроить свой код для извлечения данных из внешнего источника в 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.