Workflow
Workflow 인터페이스는 순차적인 명령의 묶음인 워크플로우의 진행 상태를 관리하는 Message를 제공합니다.
Message | 인터페이스 | 설명 |
---|---|---|
Instruction | CheckIn | 워크플로우의 시작을 지시 |
CheckOut | 워크플로우의 종료를 지시 | |
State | WorkflowState | 워크플로우의 상태를 표시 |
Instruction
Event Message의 응답으로 Instruction Message를 수신할 수도 있습니다. Instruction Message 수신을 위한 Down Channel 생성 방식은 다음과 같습니다.
표Instruction Message 호출 방식메서드 | 요청 URL |
---|---|
GET | /{API version}/instructions |
CheckIn
Workflow.CheckIn는 순차적인 명령의 묶음인 워크플로우가 시작할 때 발생하는 Instruction입니다. CheckIn Instruction의 body에 지정된 token으로 1개의 워크플로우를 식별합니다.
클라이언트에서는 해당 Instruction을 전달받으면, CheckIn Instruction의 body에 지정된 ttl이 만료되기 전까지 Workflow.WorkflowState state의 activeWorkflows에는 현재 진행 중인 워크플로우를 항상 표시해야 합니다. CheckIn Instruction의 body에 지정된 ttl이 만료되거나, 동일한 token의 Workflow에 대한 Checkout Instruction이 발생하면 Workflow.WorkflowState state의 activeWorkflows에서 해당 워크플로우가 삭제되어야 합니다.
Request Syntax
코드예제Workflow.CheckIn Request Syntax
{
"instruction": {
"header": {
"type": "Workflow.CheckIn",
"messageId": "3c876d66-f00c-4103-b9e0-a00a2b663492"
},
"body": {
"token": "kakao/5b0e76e01073e9710dcb573e/WORKFLOW.31584.1660604401.alarm",
"ttl": 3600000
}
}
}
Request Header
표Workflow.CheckIn Request Header파라미터 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
type | String | 필수 |
해당 인터페이스 이름 |
messageId | String | 필수 |
특정 메시지를 나타내는 고유 ID - 해당 메시지의 생성 주체가 임의의 UUID로 정의 |
Request Body
표Workflow.CheckIn Request Body파라미터 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
token | String | 필수 |
워크플로우의 식별자 토큰 |
ttl | Long | 필수 |
워크플로우의 유효 시간을 ms 단위로 표시 - 기본값: 3600000=60초로 지정 |
CheckOut
Workflow.CheckOut은 순차적인 명령의 묶음인 워크플로우가 종료될 때 발생하는 Instruction입니다. CheckOut Instruction의 body에 지정된 token으로 1개의 워크플로우를 식별합니다.
클라이언트에서는 해당 Instruction을 전달받으면, CheckOut Instruction의 body에 지정된 token이 Workflow.WorkflowState state의 activeWorkflows에는 포함되어 있으면 Workflow.WorkflowState state의 activeWorkflows에서 해당 워크플로우를 삭제해야 합니다.
코드예제Workflow.CheckOut Request Syntax
{
"instruction": {
"header": {
"type": "Workflow.CheckOut",
"messageId": "0246cc24-bcec-424b-afd8-1db24c28536d"
},
"body": {
"token": "kakao/5b0e76e01073e9710dcb573e/WORKFLOW.31584.1660604401.alarm"
}
}
}
Request Header
표Workflow.CheckOut Request Header파라미터 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
type | String | 필수 |
해당 인터페이스 이름 |
messageId | String | 필수 |
특정 메시지를 나타내는 고유 ID - 해당 메시지의 생성 주체가 임의의 UUID로 정의 |
Request Body
표Workflow.CheckOut Request Body파라미터 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
token | String | 필수 |
워크플로우의 식별자 토큰 |
State
State Message는 모든 Event Message를 전송하는 요청(Request)에 항상 포함되어야 합니다.
WorkflowState
Workflow.WorkflowState는 순차적인 명령의 묶음인 워크플로우 상태를 관리하는 state입니다. 1개의 워크플로우는 token으로 식별되며 Workflow.Checkin Instruction으로 워크플로우가 시작될 때부터 Workflow.Checkout Instruction으로 워크플로우가 종료될 때까지, Workflow.WorkflowState에 해당 token의 워크플로우가 항상 표시되어야 합니다. 해당 워크플로우에 지정한 ttl이 만료되면 Workflow.WorkflowState에서 삭제되어야 합니다.
코드예제Workflow.WorkflowState Request Syntax
{
"header": {
"type": "Workflow.WorkflowState"
},
"body": {
"activeWorkflows": [
{
"token": "kakao/5b0e76e01073e9710dcb573e/WORKFLOW.31584.1660604401.alarm",
"createdAt": 1660604401696,
"ttl": 3600000
}
]
}
}
Request Header
표Workflow.WorkflowState Request Header파라미터 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
type | String | 필수 |
해당 인터페이스 이름 |
Request Body
표Workflow.WorkflowState Request Body파라미터 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
Object | 필수 |
현재 실행 중인 모든 워크플로우의 상태 - 실행 중인 워크플로우가 존재하지 않는 경우 빈 array []로 표시 |
|
token | String | 필수 |
워크플로우 식별자 토큰(CheckIn Instruction에 지정된 토큰) |
createAt | Long | 필수 |
워크플로우 생성 시각(CheckIn Instruction이 발생한 시각)을 Unix timestamp로 표시 - 단위: ms(밀리세컨드) |
ttl | Long | 필수 |
워크플로우 유효 시간(CheckIn Instruction에 지정된 ttl) - 단위: ms(밀리세컨드) |