HTTP API#
Для работы с компонентом Workflow (UIWF) по HTTP используются только POST-запросы. Вся информация, необходимая Workflow Machine, передается в URL запроса. Тело запроса может быть любым (желательно JSON) и обрабатывается в прикладном коде. HTTP-ответ Workflow Machine соответствует универсальному формату.
Все доступные методы приведены в таблице ниже:
URL | Java-аналог | Наличие body | Назначение |
|---|---|---|---|
|
| Да | Старт нового процесса Workflow начиная с flow — flowName |
|
| Да | Старт с переходом в произвольное состояние |
|
| Да | Вызов события |
|
| Нет | Откат истории |
|
| Нет | Завершение текущего flow (для subflow это означает возврат в родительский flow) |
|
| Нет | Завершение процесса (полное завершение всех flow процесса) |
|
| Нет | Получение информации о шаге истории |
|
| Нет | Получение списка доступных событий из текущего состояния |
Существуют несколько вариантов ответа на POST-запрос: успешный, неуспешный, сообщение о необходимости перехода или возврата.
Формат успешного ответа Workflow
{
"success": true,
"body": {
"result": "SUCCESS",
"pid": "<идентификатор процесса>",
"flow": "<имя текущего flow>",
"state": "<имя текущего состояния>",
"output": {
"<бизнес-специфичный объект с выходными данными>"
},
"hints": {
"boStepCode": "<код шага бизнес операции>",
"hints": [
{
"elementCode": "<код элемента>",
"hintTexts": [
{
"text": "Текст подсказки",
"hintTextType": "FIELD"
}
]
}
]
},
"history": [
{
"id": "<идентификатор «хлебной крошки»>",
"flow": "<имя flow>",
"flowId": <идентификатор flow>,
"state": "<имя состояния>",
"title": "<заголовок «хлебной крошки»>",
"value": "<значение «хлебной крошки»>",
"status": "<статус «хлебной крошки»>"
}
]
},
"messages": [{
"title": "<заголовок_сообщения>",
"text": "<текст_сообщения>",
"type": "<тип_сообщения>"
}]
}
Примечания к ответу:
шагов истории может быть любое количество, но обязательно присутствует один — текущий;
body присутствует только в успешном ответе от Workflow —
"success": true;messages могут присутствовать только в успешном ответе от workflow —
"success": true.
Формат ошибки в Workflow
{
"success": false,
"error": {
"uuid": "<uuid исключения>",
"code": "<код ошибки>",
"system": "<код подсистемы>",
"title": "<заголовок ошибки>",
"text": "<текст ошибки>"
}
}
Процесс завершен
{
"success": true,
"body": {
"pid": "<идентификатор процесса>",
"result": "END"
}
}
Формат ответа о необходимости перехода на внешний subflow
{
"success": true,
"body": {
"result": "EXTERNAL_ENTER",
"pid": "<идентификатор процесса>",
"url": "<URL для перехода>"
}
}
Формат ответа о необходимости возврата в родительский flow
{
"success": true,
"body": {
"result": "EXTERNAL_RETURN",
"pid": "<идентификатор процесса>",
"url": "<URL для возврата>"
}
}