ThingWorx Flow > 트리거 만들기 및 관리 > 웹후크를 사용하여 워크플로 만들기 및 호출
웹후크를 사용하여 워크플로 만들기 및 호출
웹후크를 사용하여 외부 시스템에서 워크플로를 시작합니다. 웹후크는 ThingWorx 서버가 워크플로를 시작하도록 호출하기 위해 다른 시스템에서 호출될 수 있는 URL을 제공합니다.
웹후크 추가
다음 단계를 완료하여 워크플로에 웹후크를 추가합니다.
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: <사전 정의된 앱 키 입력>
* 
웹후크 인증이 만료되도록 하려면 응용 프로그램 키를 적합한 만료 날짜/시간과 함께 사용하는 것이 좋습니다.
본문
application/json - 워크플로에 대한 입력이 포함된 JSON 페이로드. 여기서 이름은 웹후크에 지정된 입력 매개 변수 이름과 일치해야 합니다.
예를 들어, 다음과 같은 두 개의 입력 매개 변수를 사용하여 워크플로가 웹후크로 정의되어 있습니다.
이름: "param1", 유형: "STRING"
이름: "param2", 유형: "XML"
STRING 출력을 반환하는 경우 HTTP 요청 본문의 JSON 페이로드는 다음과 같습니다.
{"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 서비스 호출 규약을 따르며 HTTP 요청의 Accept 머리글에 따라 결정됩니다.
이 경우 응답은 다음과 같이 JSON 형식으로 제공됩니다.
{
"dataShape": {
"fieldDefinitions": {
"result": {
"name": "result",
"description": "result",
"baseType": "STRING",
"ordinal": 0,
"aspects": {}
}
}
},
"rows": [
{
"result": "<workflow result here>"
}
]
}
도움이 되셨나요?