6.7. 시간 초과
OpenShift Serverless Logic은 다양한 시나리오에서 워크플로우 실행에 대한 최대 시간을 구성하는 데 사용할 수 있는 여러 시간 초과 구성을 정의합니다. 지정된 상태 또는 워크플로우의 최대 실행 시간이 있을 때 이벤트가 전달될 때까지 워크플로에서 대기하는 시간을 구성할 수 있습니다.
정의된 위치와 관계없이 시간 초과는 참조된 워크플로우 요소가 활성 상태가 될 때 시작되는 시간 또는 기간으로 구성해야 합니다. 시간 초과는 ISO 8601 데이터 및 시간 표준을
사용하여 시간 기간을 지정하고 일을 정확히 24시간으로 간주하며 PnDTnHnMn.nS
형식을 따릅니다. 예를 들어 PT15M
은 15분을 구성하고 P2DT3H4M
은 2일, 3시간, 4분을 정의합니다.
P2M
또는 두 달의 기간과 같은 월 기반 타임아웃은 월 기간이 달라질 수 있으므로 유효하지 않습니다. 대신 PT60D
를 사용하십시오.
6.7.1. 워크플로우 제한 시간
워크플로우를 취소하기 전에 실행할 수 있는 최대 시간을 구성하려면 워크플로우 제한 시간을 사용할 수 있습니다. 취소되면 워크플로우가 완료된 것으로 간주되며 GET 요청을 통해 더 이상 액세스할 수 없습니다. 따라서 인터럽트가 기본적으로 true
인 것처럼 작동합니다.
워크플로우 시간 초과는 최상위 시간 초과
속성으로 정의됩니다. 두 가지 유형, string
및 object
가 있을 수 있습니다. 문자열
유형은 워크플로우 시간 초과 정의를 포함하는 JSON 또는 YAML 파일을 가리키는 URI를 정의합니다. 오브젝트
유형은 시간 초과 정의를 인라인으로 정의하는 데 사용됩니다.
예를 들어 1시간의 실행 후 워크플로우를 취소하려면 다음 구성을 사용합니다.
워크플로우 시간 초과 예
{ "id": "workflow_timeouts", "version": "1.0", "name": "Workflow Timeouts", "description": "Simple workflow to show the workflowExecTimeout working", "start": "PrintStartMessage", "timeouts": { "workflowExecTimeout": "PT1H" } ... }
6.7.2. 이벤트 시간 초과
워크플로우에서 상태를 정의할 때 timeouts
속성을 사용하여 이 상태를 완료하는 최대 시간을 구성할 수 있습니다. 시간이 초과되면 상태가 시간 초과로 간주되고 엔진은 이 상태에서 계속 실행됩니다. 실행 흐름은 상태 유형(예: 다음 상태로의 전환)에 따라 달라질 수 있습니다.
이벤트 기반 상태는 하위 속성 이벤트 시간 초과를 사용하여 이벤트가
도착될 때까지 대기할 최대 시간을 구성할 수 있습니다. 이는 현재 구현에서 지원되는 유일한 속성입니다.
이벤트 시간 초과는 콜백 상태 시간 초과, 전환 상태 타임아웃 및 이벤트 상태 타임아웃을 지원합니다.
6.7.2.1. 콜백 상태 시간 초과
콜백
상태는 일반적으로 외부 서비스를 호출하기 위해 작업을 실행하고 이벤트 형태로 비동기 응답을 기다려야 하는 경우 사용할 수 있습니다.
응답 이벤트가 소비되면 워크플로우는 실행을 계속하며 일반적으로 transition 속성에 정의된 다음 상태로 이동합니다.
콜백
상태는 이벤트가 사용될 때까지 실행을 중지하므로 eventTimeout을 구성할 수 있으며, 이벤트가 구성된 기간에 도달하지 않으면 워크플로는 전환에 정의된 다음 상태로 계속 실행됩니다.
시간 초과를 사용한 콜백
상태 예
{ "name": "CallbackState", "type": "callback", "action": { "name": "callbackAction", "functionRef": { "refName": "callbackFunction", "arguments": { "input": "${\"callback-state-timeouts: \" + $WORKFLOW.instanceId + \" has executed the callbackFunction.\"}" } } }, "eventRef": "callbackEvent", "transition": "CheckEventArrival", "onErrors": [ { "errorRef": "callbackError", "transition": "FinalizeWithError" } ], "timeouts": { "eventTimeout": "PT30S" } }
6.7.2.2. 전환 상태 시간 초과
특정 조건에 따라 작업을 수행해야 하는 경우 Switch
상태를 사용할 수 있습니다. 이러한 조건은 워크플로우 데이터, dataConditions
또는 이벤트인 eventConditions
를 기반으로 할 수 있습니다.
eventConditions
를 사용하면 워크플로우 실행이 구성된 이벤트가 도달하고 조건과 일치할 때까지 결정을 내립니다. 이 경우 이벤트의 조건이 일치될 때까지 대기할 최대 시간을 제어하는 이벤트 시간 초과를 구성할 수 있습니다.
이 시간이 만료된 경우 워크플로우는 defaultCondition
속성에 정의된 상태로 이동합니다.
시간 초과를 사용하는 스위치 상태 예
{ "name": "ChooseOnEvent", "type": "switch", "eventConditions": [ { "eventRef": "visaApprovedEvent", "transition": "ApprovedVisa" }, { "eventRef": "visaDeniedEvent", "transition": "DeniedVisa" } ], "defaultCondition": { "transition": "HandleNoVisaDecision" }, "timeouts": { "eventTimeout": "PT5S" } }
6.7.2.3. 이벤트 상태 타임아웃
이벤트
상태는 워크플로우에서 하나 이상의 이벤트가 수신될 때까지 기다린 다음 작업 집합을 실행한 다음 실행을 계속하는 데 사용됩니다. 이벤트 상태가 시작 상태이면 새 워크플로우 인스턴스가 생성됩니다.
timeouts
속성은 이 상태에서 구성된 이벤트가 전달될 때까지 워크플로에서 대기하는 최대 시간을 구성하는 데 사용됩니다.
이 시간이 초과되고 이벤트가 수신되지 않으면 워크플로우는 전환 속성에 정의된 상태로 이동하거나 작업을 수행하지 않고 최종 상태의 경우 워크플로우 인스턴스를 종료합니다.
시간 초과가 있는 이벤트 상태 예
{ "name": "WaitForEvent", "type": "event", "onEvents": [ { "eventRefs": [ "event1" ], "eventDataFilter": { "data": "${ \"The event1 was received.\" }", "toStateData": "${ .exitMessage }" }, "actions": [ { "name": "printAfterEvent1", "functionRef": { "refName": "systemOut", "arguments": { "message": "${\"event-state-timeouts: \" + $WORKFLOW.instanceId + \" executing actions for event1.\"}" } } } ] }, { "eventRefs": [ "event2" ], "eventDataFilter": { "data": "${ \"The event2 was received.\" }", "toStateData": "${ .exitMessage }" }, "actions": [ { "name": "printAfterEvent2", "functionRef": { "refName": "systemOut", "arguments": { "message": "${\"event-state-timeouts: \" + $WORKFLOW.instanceId + \" executing actions for event2.\"}" } } } ] } ], "timeouts": { "eventTimeout": "PT30S" }, "transition": "PrintExitMessage" }