Формирование запросов на вызов внешней системы
Чтобы вызвать внешнюю системы (REST, RPC, SOAP) необходимо добавить кубик service Task. После чего сконфигурировать под нужный тип сервиса. На вкладке "Общее" в поле "Имплементация" из выпадающего списка выбрать "Коннектор". После чего на вкладке "Коннектор" произвести настройку под необходимый вид интеграции.
По ссылке ниже можно скачать пример диаграммы со всеми перечисленными интеграциями.
REST
REST Diasoft Archetype Call
Для формирования REST на вкладке "Коннектор" необходимо указать следующее:
- ID коннектора -
rest connector
- Входные параметры:
- service - наименование вызываемого сервиса;
- resource - ссылка на вызов метода сервиса;
- method - метод API (POST, GET, PUT, DELETE);
- payload - тело запроса в виде JSON.
- Выходные параметры (в зависимости от того, что нужно получить/обработать):
- получение параметра сообщения.
Пример: "имя переменной" -${response.get("content").get(0).get("clientCode")}
- получение тела сообщения (тело сообщения автоматически распарсится, параметры тела поместятся в контекст процесса).
Пример: "имя переменной" -${response}
- код ответа.
Пример: "имя переменной" -${statusCode}
- получение параметра сообщения.
Для большинства входящих и исходящих параметров используется "Тип переменной" = "Строка или выражение". Для получения конкретного параметра из тела сообщения или формирование входящего параметра вручную требуется заполнить поля следующим образом:
- Тип переменной - скрипт;
- Формат скрипта - Groovy;
- Пример скрипта:
$(response).get("message").stringValue()
REST not Diasoft Archetype
Для формирования внешнего REST на вкладке "Коннектор" необходимо указать следующее:
- ID коннектора -
http connector
- Входные параметры:
- url - ссылка на вызываемый источник;
- method - метод API (POST, GET, PUT, DELETE);
- payload - тело запроса в виде JSON.
- Выходные параметры (в зависимости от того, что нужно получить/обработать):
Тело сообщения автоматически не парсится, данный параметр будет иметь тип string
- получение тела сообщения, тип string.
Пример: "имя переменной" -${response}
- получение тела сообщения, тип Скрипт Groovy.
Пример: "имя переменной" -connector.getVariable("response")
- код ответа, тип string.
Пример: "имя переменной" -${statusCode}
JSON RPC
Формируется аналогично внешнему REST (not Diasoft Archetype).
- ID коннектора -
http connector
- Входные параметры:
- url - ссылка на вызываемый источник;
- method - метод API (POST, GET, PUT, DELETE);
- payload - тело запроса по спецификации JSON-RPC. Пример (тип переменной: строка или выражение):
{ "jsonrpc": "2.0", "method": "my-method", "params": [ 42, 23 ], "id": 100 }
- Выходные параметры (в зависимости от того, что нужно получить/обработать):
Тело сообщения автоматически не парсится, данный параметр будет иметь тип string
- получение тела сообщения, тип string.
Пример: "имя переменной" -"#{response}"
- получение тела сообщения, тип Скрипт Groovy.
Пример: "имя переменной" -"connector.getVariable("response")"
- код ответа.
Пример: "имя переменной" -"#{statusCode}"
XML RPC
Формируется аналогично внешнему JSON RPC.
- ID коннектора -
http connector
- Входные параметры:
- url - ссылка на вызываемый источник;
- method - метод API (POST, GET, PUT, DELETE);
- payload - тело запроса по спецификации XML-RPC. Пример (тип переменной: строка или выражение):
<?xml version="1.0" encoding="ISO-8859-1"?> <methodCall> <methodName>my.xml.method</methodName> <params> <param> <value><int>17</int></value> </param> <param> <value><int>13</int></value> </param> </params> </methodCall>
- Выходные параметры (в зависимости от того, что нужно получить/обработать):
- получение параметра сообщения. Пример (формат скрипта Groovy):
import static org.camunda.spin.Spin.*; XML(response).xPath("/methodResponse/params/*[1]/message/string").string();
SOAP
Формируется аналогично XML RPC.
- ID коннектора -
http connector
- Входные параметры:
- url - ссылка на вызываемый источник;
- method - метод API (POST, GET, PUT, DELETE);
- payload - тело запроса по спецификации XML-RPC. Пример (тип переменной: строка или выражение):
<?xml version = "1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding"> <SOAP-ENV:Body xmlns:m = "http://www.xyz.org/messages"> <m:GetMessage> <m:MessageName>asdfasdfasdf</m:MessageName> </m:GetMessage> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
- Выходные параметры (в зависимости от того, что нужно получить/обработать):
- получение параметра сообщения. Пример (формат скрипта Groovy):
S(response) .childElement("Body") .childElement("http://www.xyz.org/message", "MessageResponse") .childElement("Message") .textContent()