Назначение
Отправляет HTTP-запрос по адресу, вычисленному формулой. Используется для интеграции с внешними системами и для вызова REST API самого портала (например, копирования элементов).
Сведения о типе действия
| Параметр | Значение |
|---|---|
| Название в портале | Вызов внешнего сервиса |
| Activity в Elsa (обработчик) | Вызов внешнего сервиса (ExtServiceActivity) |
| ID типа элемента действия | 23b0d24a-dea5-42b0-ada3-7dc545f5bfac |
| Проверка условий правила | Да |
| Поддержка «Исходный элемент(ы) (формула)» | Да |
Атрибуты действия
| Атрибут | Обязательный | Описание | Пример |
|---|---|---|---|
| Название | Да | Текст. Название действия. | Скопировать папки внутри вложения процесса |
| Сервис обработки | Да | Формула, возвращающая полный URL веб-сервиса. Вычисляется в контексте целевого элемента. | Format('{0}/api/...', Cfg('Site.PortalUrl')) |
Запрос
- Метод — POST, тело — JSON:
Тело запроса
{
"itemIdList": ["<GUID элемента, на котором выполняется действие>"],
"actionId": "<GUID действия автоматизации>"
}
- Запрос выполняется с токеном сессии системного пользователя портала.
- Ответ с кодом, отличным от 2xx, считается ошибкой: текст ответа передаётся в сообщение об ошибке, цепочка прерывается.
- Время ожидания ответа — до 30 минут.
Пример: копирование содержимого вложения процесса
Сервис обработки
Format('{0}/api/automation/post?baseUrl={0}/api/item/copy/{1}¶m={2}', Cfg('Site.PortalUrl'), Id(This('destination')), '[{' + Replace(Join('},{', Select(GetList(Id(), false), 'Format(\"#id#:#{0}#,#isChildListCopy#:true,#isFileCopy#:true,#isMetadataCopy#:true,#isPermissionCopy#:false\", Id(Ref('Вложение процесса')))')), '#', '\"') + '}]')
Копирует все папки (включая подпапки) из папки — вложения процесса в папку/список, идентификатор (GUID) которой указан в поле destination текущего процесса.
Особенности
- Внешний сервис должен быть доступен с сервера приложения Workflow.Manager.
- Сервис получает только идентификаторы; данные элемента он должен запросить сам (например, через REST API портала).
- Длительные операции задерживают всю цепочку и сохранение, породившее событие. Для долгих операций предпочтительна асинхронная обработка на стороне сервиса.