6.7. 시간 초과


OpenShift Serverless Logic은 다양한 시나리오에서 워크플로우 실행에 대한 최대 시간을 구성하는 데 사용할 수 있는 여러 시간 초과 구성을 정의합니다. 지정된 상태 또는 워크플로우의 최대 실행 시간이 있을 때 이벤트가 전달될 때까지 워크플로에서 대기하는 시간을 구성할 수 있습니다.

정의된 위치와 관계없이 시간 초과는 참조된 워크플로우 요소가 활성 상태가 될 때 시작되는 시간 또는 기간으로 구성해야 합니다. 시간 초과는 ISO 8601 데이터 및 시간 표준을 사용하여 시간 기간을 지정하고 일을 정확히 24시간으로 간주하며 PnDTnHnMn.nS 형식을 따릅니다. 예를 들어 PT15M 은 15분을 구성하고 P2DT3H4M 은 2일, 3시간, 4분을 정의합니다.

참고

P2M 또는 두 달의 기간과 같은 월 기반 타임아웃은 월 기간이 달라질 수 있으므로 유효하지 않습니다. 대신 PT60D 를 사용하십시오.

6.7.1. 워크플로우 제한 시간

워크플로우를 취소하기 전에 실행할 수 있는 최대 시간을 구성하려면 워크플로우 제한 시간을 사용할 수 있습니다. 취소되면 워크플로우가 완료된 것으로 간주되며 GET 요청을 통해 더 이상 액세스할 수 없습니다. 따라서 인터럽트가 기본적으로 true 인 것처럼 작동합니다.

워크플로우 시간 초과는 최상위 시간 초과 속성으로 정의됩니다. 두 가지 유형, stringobject 가 있을 수 있습니다. 문자열 유형은 워크플로우 시간 초과 정의를 포함하는 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"
}

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.