ThingWorx Flow > Создание триггеров и управление ими > Создание и вызов рабочего процесса с помощью веб-перехватчика
Создание и вызов рабочего процесса с помощью веб-перехватчика
Используйте веб-перехватчик, чтобы запускать рабочие процессы из внешних систем. Веб-перехватчик предоставляет URL-адрес, который может вызываться из других систем для вызова сервера ThingWorx, чтобы запустить рабочий процесс.
Добавление веб-перехватчика
Чтобы добавить веб-перехватчик в рабочий процесс, выполните следующие шаги.
1. Откройте рабочий процесс, в который нужно добавить веб-перехватчик.
2. Щелкните , а затем щелкните или дважды щелкните . Откроется окно триггера.
3. Выберите Веб-перехватчик. Откроется окно конфигурации для веб-перехватчика.
URL-адрес, который следует использовать для выполнения рабочего процесса, отображается в поле URL.
4. Установите флажок Асинхронно для асинхронного выполнения веб-перехватчика.
При асинхронном выполнении вызов веб-перехватчика приводит к немедленному возврату, и веб-перехватчик не ожидает завершения рабочего процесса.
5. В разделе Входные данные щелкните Добавить, чтобы указать входные параметры, которые передаются в рабочий процесс при вызове веб-перехватчика. Для каждого параметра введите следующую информацию:
a. Имя - имя входного параметра.
b. Описание - описание входного параметра.
c. Базовый тип - базовый тип входного параметра.
Нажмите кнопку Добавить несколько раз, чтобы добавить несколько входных параметров. Щелкните значок , чтобы удалить любые добавленные входные параметры.
6. Нажмите кнопку Готово.
После определения веб-перехватчика в рабочем процессе можно определить параметр, возвращаемый из рабочего процесса. Внешняя система может получить и обработать результаты из результата выполнения рабочего процесса. Убедитесь, что задано синхронное выполнение веб-перехватчика, чтобы внешняя система получала возвращаемый параметр.
Чтобы определить возвращаемый параметр, выполните следующие действия.
1. Щелкните , а затем щелкните или дважды щелкните . Откроется окно "Вывод".
2. Выберите Базовый тип для возвращаемых данных.
3. В поле Данные сопоставьте выходные данные последнего действия в рабочем процессе, чтобы возвращать значение в веб-перехватчик.
4. Нажмите кнопку Готово.
Вызов веб-перехватчика
После определения веб-перехватчика в рабочем процессе используйте URL-адрес веб-перехватчика, чтобы инициировать выполнение рабочего процесса. Используйте HTTP-запрос со стандартным механизмом для вызова интерфейсов ThingWorx REST API.
В следующей таблице представлена информация о настройке HTTP-запроса:
Компонент HTTP-запроса
Значение
Метод
POST
Заголовки
Accept: application/json
Content-Type: application/json
Authorization: Basic <кодированное имя пользователя/пароль>
или
appkey: <укажите ваш предопределенный ключ приложения>
* 
Чтобы удостовериться, что проверка подлинности веб-перехватчика в конечном счете заканчивается, PTC рекомендует использовать ключ приложения с подходящими датой и временем окончания срока действия.
Основной текст
application/json - информационное наполнение JSON с входными данными для рабочего процесса, где наименования должны совпадать с наименованиями входных параметров, указанными в веб-перехватчике.
Например, если рабочий процесс определен с помощью веб-перехватчика, то следующие два входных параметра:
Имя: "param1", Тип: "STRING"
Имя: "param2", Тип: "XML"
и возвращает значение типа STRING, тогда информационное наполнение JSON в теле HTTP-запроса имеет вид:
{"param1": "This is a string parameter", "param2": "<xml><field1>helloworld</field1></xml>"}
Для тестирования можно вызвать рабочие процессы, у которых есть веб-перехватчики, используя такие инструменты, как Postman или curl. Следующий пример используется для вызова веб-перехватчика:
curl --request POST \
--url https://<server>/Thingworx/Things/FlowThing/Services/webhook_flow \
--header 'Accept: application/json' \
--header 'Authorization: Basic <encoded_user_name_password>'
--header 'Content-Type: application/json' \
--header 'cache-control: no-cache' \
--data '{ "param1": "This is a string parameter", "param2": "<xml><field>helloworld</field></xml>"}
Если для веб-перехватчика задано асинхронное выполнение, то ответ на запрос вызова веб-перехватчика будет возвращен немедленно и никакие данные из рабочего процесса не будут возвращены в ответе HTTP.
Если для веб-перехватчика задано синхронное выполнение, то запрос вызова веб-перехватчика будет ожидать завершения рабочего процесса и возвращения данных из рабочего процесса в ответе HTTP. Формат ответа должен соответствовать соглашениям для вызова сервисов ThingWorx и определяется заголовком Accept в HTTP-запросе.
В данном случае отклик будет сформирован в формате JSON следующим образом:
{
"dataShape": {
"fieldDefinitions": {
"result": {
"name": "result",
"description": "result",
"baseType": "STRING",
"ordinal": 0,
"aspects": {}
}
}
},
"rows": [
{
"result": "<workflow result here>"
}
]
}
Было ли это полезно?