Kakao i Agent::Service Agent Interface::Workflow

페이지 이동경로

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(밀리세컨드)
이 문서가 만족스러운 이유를 알려주세요.
이 문서에 아쉬운 점을 알려주세요.
평가해주셔서 감사합니다.

더 자세한 의견은 contact.dkt@kakaocorp.com 으로 제보해주세요.