Создание и вызов рабочего процесса с помощью веб-перехватчика
Используйте веб-перехватчик, чтобы запускать рабочие процессы из внешних систем. Веб-перехватчик предоставляет 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>"
}
]
}