아키텍처 개요

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기12분
  • 내에서 작동하는 Now Platform 방식을 워크플로우 스튜디오 이해하여 흐름과 작업을 활성화, 트리거 및 처리합니다.

    플로우는 하나의 트리거 와 하나 이상의 작업으로 구성됩니다. 트리거는 플로우를 시작할 시점을 지정하며, 기록 기반, 일정 기반 또는 애플리케이션 기반이 될 수 있습니다. 기록 기반 트리거는 기록 생성, 업데이트 또는 삭제 후에 플로우를 실행합니다. 플로우는 트리거 기록을 작업에 대한 입력으로 사용할 수 있습니다. 일정 기반 트리거는 지정된 날짜와 시간에 흐름을 실행합니다. 플로우는 실행 시간을 작업에 대한 입력으로 사용할 수 있습니다. 애플리케이션 트리거는 연결된 애플리케이션이 활성화될 때 추가됩니다. 예를 들어, 트리거는 MetricBase 애플리케이션이 활성 상태일 때 MetricBase 존재합니다.

    플로우 처리

    플로우 처리는 이 순서대로 수행됩니다.
    1. 플로우 트리거 조건이 발생하거나 API가 플로우를 직접 호출하면 시스템이 이벤트 큐에 항목을 생성하여 플로우를 시작합니다.
    2. 스케줄러가 이벤트를 처리하고 백그라운드에서 플로우를 시작합니다.
    3. 시스템이 흐름에서 프로세스 계획을 작성합니다.
    4. 시스템이 흐름을 트리거한 레코드를 사용하여 프로세스 계획을 실행합니다.
    5. 시스템이 컨텍스트 기록에 실행 상세 정보를 저장합니다.

    플로우 프로세싱 다이어그램

    1. 프로세스 흐름 트리거 및 API 호출
    트리거 조건이 충족될 때마다 또는 API가 플로우를 직접 호출할 때마다 는 워크플로우 스튜디오 이벤트 항목을 생성합니다. 시스템 프로세스는 데이터베이스 작업 후 트리거됩니다. 자세한 내용은 스크립트 및 엔진의 실행 순서를 참조하세요. 일반적으로 트리거된 플로우 전에 동기식으로 실행되는 비즈니스 규칙의 작동 방식워크플로우 엔진 작업 순서 입니다.
    2. 큐에서 이벤트 처리
    각 플로우 이벤트에는 시작할 플로우에 대한 참조와 함께 트리거 기록 또는 실행 시간에 대한 참조가 포함됩니다. 시스템은 스케줄러가 현재 항목이 추가된 순서대로 이벤트 큐의 현재 항목을 주기적으로 처리하는 이벤트를 사용하여 이러한 이벤트를 처리합니다. 큐에 어떤 다른 이벤트가 있는가에 따라 시스템이 플로우를 즉시 시작하지 않을 수 있습니다. Flow Designer는 트리거 조건이 발생하는 시점과 플로우가 실제로 시작되는 시점 사이에 약간의 지연 시간이 있음을 예상해야 합니다.
    3. 공정 계획 수립

    큐에서 이벤트를 끌어오면 워크플로우 스튜디오 실제로 플로우를 실행하는 프로세스 계획이 빌드됩니다. 프로세스 계획에는 게시된 작업 또는 하위 플로우 시퀀스, 각 하위 플로우 또는 작업에 대한 입력 값, 각 작업에 대해 실행할 작업 단계, 트리거 또는 하위 플로우 출력에서 제공하는 데이터와 같이 플로우를 실행하는 데 필요한 모든 정보가 포함됩니다.

    워크플로우 스튜디오 은 JIT(Just-In-Time) 컴파일 체계를 사용하여 프로세스 계획에 플로우, 하위 플로우 및 작업에 대한 최신 변경 내용이 포함되도록 합니다. 변경 내용이 탐지되지 않으면 프로세스 워크플로우 스튜디오 계획의 캐시된 복사본을 사용합니다. 그렇지 않으면 새 공정 계획이 작성됩니다.

    프로세스 계획을 워크플로우 스튜디오 사용하여 업데이트된 플로우, 하위 플로우 및 작업을 자동으로 검사하면 현재 플로우를 편집하지 않고도 업데이트 세트 및 업그레이드의 변경 내용을 적용할 수 있습니다. 게시된 작업을 대상 인스턴스로 이동하면 게시된 작업을 사용하는 모든 플로우가 다음에 실행될 때 자동으로 업데이트됩니다.

    경고:
    활성화된 플로우에 사용되는 하위 플로우 또는 작업을 변경하는 경우 하위 플로우 또는 작업에 사용되는 입력과 출력을 변경하지 마십시오. 입력 및 출력을 변경하면 활성화된 플로우가 다음에 트리거될 때 새 입력과 출력을 사용하도록 구성되지 않았기 때문에 오류가 발생할 수 있습니다. 플로우는 프로세스 계획에서 컴파일된 하위 플로우와 작업을 사용하므로 현재 실행 중인 모든 플로우는 입력 또는 출력에 대한 변경 사항의 영향을 받지 않습니다.
    4. 프로세스 계획 실행

    워크플로우 스튜디오 플로우 속성에 지정된 사용자로 프로세스 계획을 실행하고 플로우 애플리케이션 범위 내에서 실행합니다.

    기록 기반 트리거 워크플로우 스튜디오 로 플로우를 실행할 때 트리거링 기록을 인터페이스에서 데이터 알약으로 표시되는 인스턴스로 메모리에 저장합니다.

    작업을 플로우에 추가할 때마다 Flow Designer가 결과를 저장할 데이터 정제를 추가합니다. 데이터 정제 이름은 플로우에서의 순서와 데이터 유형을 나타냅니다. Flow Designer는 작업 결과 데이터 알약을 사용하여 다른 플로우, 작업 또는 하위 플로우에 대한 입력을 제공합니다. 플로우 설계자는 데이터 정제 이름의 순서 값을 사용하여 올바른 데이터 정제를 입력 값으로 선택할 수 있습니다. 플로우에서 작업을 실행할 때 데이터 알약 실행 시간 값이 사용될 때 이 값이 생성됩니다.

    5. 플로우 실행 상세 정보 저장

    워크플로우 스튜디오 이 정보가 포함된 플로우 컨텍스트 기록에 플로우 실행 세부 정보를 저장합니다.

    • 플로우 결과 상태
    • 플로우 런타임 기간
    • 플로우 로그 메시지
    • 플로우 구성 및 런타임 값
    플로우가 실행될 워크플로우 스튜디오 때마다 플로우 실행 목록에 항목을 추가합니다. 각 항목에는 자체 컨텍스트 기록과 일치하는 실행 상세 정보 페이지가 있습니다.
    주:
    플로우 실행 컨텍스트는 단일 스레드에서 실행됩니다. 그러나 인스턴스의 자원을 더 많이 사용하더라도 별도의 컨텍스트 내에서 플로우를 실행해야 하는 경우가 있을 수 있습니다. 동일한 플로우 내의 개별 플로우 컨텍스트에서 하위 플로우를 실행하려면 동적 플로우를 참조하십시오.

    플로우의 결과 상태는 다음 중 하나일 수 있습니다.

    상태 설명
    완료 플로우가 성공적으로 완료되었습니다.
    진행 중 플로우가 실행 중입니다. 기본적으로 트랜잭션 할당량 규칙은 플로우가 1시간 넘게 실행되지 않도록 합니다.
    대기 중 다른 이벤트가 발생할 때까지 플로우가 대기 중입니다. 예를 들어 사용자가 작업 또는 승인을 업데이트하거나 기록이 특정 상태에 도달해야 합니다. 대기 상태일 때는 플로우가 정지되고 컨텍스트 기록으로 직렬화됩니다.
    취소됨 사용자가 플로우를 취소했습니다.
    오류 플로우에 오류가 발생하여 실행이 중지되었습니다. 예를 들어 작업에 입력 값이 없거나 할당량 트랜잭션 규칙으로 인해 플로우가 중지되었습니다.

    플로우, 하위 플로우 및 작업 수명주기

    워크플로우 스튜디오 는 플로우 또는 작업 상태를 사용하여 구성 변경의 현재 상태를 설명합니다.

    플로우 및 하위 플로우 상태와 활성화 상태

    상태 필드는 플로우 또는 하위 플로우와 연관된 프로세스 계획이 있는지 여부를 나타냅니다.

    플로우 상태 설명
    수정됨 플로우 또는 하위 플로우에 저장되지 않은 변경 사항이 있음을 나타냅니다. 수정된 플로우 또는 하위 플로우가 저장되지 않았습니다.
    초안 공정 계획에 저장되지 않은 흐름 또는 하위 흐름에 저장된 변경 사항이 있음을 나타냅니다. 초안 플로우가 저장되었지만 활성화되지 않았습니다. 초안 하위 플로우가 저장되었지만 게시되지 않았습니다.
    게시됨 플로우 또는 하위 플로우에 대해 저장된 프로세스 계획이 있음을 나타냅니다. 게시된 플로우가 활성화 또는 비활성화되었습니다.

    활성 필드는 시스템이 플로우 또는 하위 플로우를 실행하는지 여부를 나타냅니다.

    활성 설명
    플로우 또는 하위 플로우가 활성 상태이고 트리거 또는 호출 시 실행됨을 나타냅니다. 플로우가 활성화되었거나 하위 플로우가 게시되었습니다. 활성 플로우는 트리거 조건이 충족되거나 호출될 때 실행됩니다. 활성 하위 플로우는 호출 시 실행됩니다.
    거짓 플로우가 비활성 상태이며 트리거 또는 호출 시 실행되지 않음을 나타냅니다. 비활성 플로우는 활성화된 적이 없거나 비활성화되었습니다. 비활성 하위 플로우가 게시된 적이 없습니다.
    플로우를 사용하여 작업할 때 다음을 수행할 수 있습니다.
    • 플로우 저장: 플로우의 초안을 생성합니다.
    • 플로우 활성화: 플로우 트리거를 활성화하고 플로우를 프로세스 계획으로 변환합니다.
    • 플로우 비활성화: 플로우 트리거를 비활성화하고 새 플로우 실행을 방지합니다. 현재 실행 중인 플로우는 계속 실행됩니다.

    하위 플로우를 사용하여 작업할 때 다음을 수행할 수 있습니다.

    • 하위 플로우 저장: 하위 플로우의 초안을 작성합니다. 하위 플로우가 게시된 후 수정되면 하위 플로우가 초안 상태로 전환됩니다. 하위 플로우를 사용하는 모든 활성 플로우는 게시된 하위 플로우만 실행합니다.
    • 하위 플로우 게시: 하위 플로우가 포함된 플로우를 활성화할 수 있습니다. 게시하면 플로우에서 사용 가능한 하위 플로우 목록에 하위 플로우가 추가됩니다.

    플로우 수명주기 다이어그램
    동작 상태

    인터페이스에는 워크플로우 스튜디오 작업의 구성 상태가 표시되지 않습니다. 작업 상태를 보려면 작업 유형 테이블 [sys_hub_action_type_definition]으로 이동하여 초안 상태 필드를 표시합니다.

    작업 초안 상태 설명
    초안 게시되지 않은 작업에 변경 내용이 있음을 나타냅니다. 초안 작업은 초안 작업 표시 옵션이 활성화된 경우에만 플로우에 사용할 수 있습니다. 초안 작업이 포함된 플로우는 활성화할 수 없습니다.
    게시됨 작업이 게시되었음을 나타냅니다. 게시된 작업은 모든 플로우에서 사용할 수 있으며 플로우를 활성화할 수 있습니다.

    작업을 수행할 때 다음을 수행할 수 있습니다.

    • 작업 저장: 초안 작업 표시가 활성화된 경우 플로우에서만 사용할 수 있는 작업의 초안을 생성합니다. 작업이 게시된 후 수정되면 작업이 초안 상태로 전환됩니다. 이 작업을 사용하는 모든 활성 플로우는 게시된 작업만 실행합니다.
    • 작업 게시: 작업이 포함된 플로우를 활성화할 수 있습니다. 게시하면 플로우에서 사용 가능한 작업 목록에 작업이 추가됩니다. 게시된 상태의 작업만 플로우 실행 중에 실행됩니다.

    작업 수명주기 다이어그램

    애플리케이션 개발

    작업 또는 플로우를 설계할 때 다음과 같은 일반 가이드라인을 사용합니다.

    표준 Now Platform 애플리케이션 개발 기능을 사용하여 콘텐츠를 생성, 관리, 보호 및 배포 워크플로우 스튜디오 합니다. 플로우 디자이너와 작업 디자이너는 일반적으로 다음과 같은 애플리케이션 개발 작업을 수행합니다.
    • 플로우와 작업을 저장할 사용자 지정 애플리케이션을 만듭니다.
    • 애플리케이션 권한을 설정하여 애플리케이션 데이터에 대한 액세스를 공유하거나 제한합니다.
    • 애플리케이션 개발자에게 에 대한 액세스 권한을 부여합니다 워크플로우 스튜디오.
    • 사용자 지정 애플리케이션을 애플리케이션 리포지토리에 게시하여 다른 인스턴스에 플로우와 작업을 배포합니다.

    충돌 방지

    워크플로우 스튜디오 충돌 방지를 지원합니다. 충돌 방지를 사용하면 사용자가 다른 업데이트 세트에서 수정 중인 객체를 수정할 수 없습니다. 예를 들어, 사용자 A가 특정 업데이트 세트의 플로우를 편집하고 있습니다. 다른 업데이트 세트에서 작업 중인 사용자 B가 같은 플로우를 열려고 합니다. 이 경우 시스템은 충돌을 감지하고 사용자 B에게 경고합니다. 그러면 사용자 B는 취소 또는 계속을 선택할 수 있습니다. 취소를 선택하면 사용자 B가 워크플로우 스튜디오 홈페이지로 돌아갑니다. 계속을 선택하면 플로우가 읽기 전용 모드로 열립니다.

    충돌 방지가 작동하려면 두 사용자가 모두 동일한 애플리케이션 범위에 있어야 하며 전역이 아닌 애플리케이션 범위여야 합니다. 또한 수정 중인 애플리케이션을 소스 제어에 연결해야 합니다. 자세한 내용은 충돌 방지를 참조하십시오.

    보안

    프로세스와 기록에 대한 액세스를 제어합니다 워크플로우 스튜디오 .

    • 관리자는 애플리케이션을 만들고 워크플로우 스튜디오 사용자를 위임된 개발 권한이 있는 개발자로 할당하여 사용자에게 플로우에 워크플로우 스튜디오 대한 액세스 권한을 부여할 수 있습니다. Delegated Development를 사용하면 관리자는 Flow Designer가 일반적으로 관리자 사용자로 제한된 기능(예: 사용자 역할 할당, 접근 제어 생성 또는 스크립트 생성)에 액세스할 수 있는지 여부를 제어할 수 있습니다. 자세한 내용은 개발자 권한을 참조하세요.
    • 관리자는 사용자에게 플로우 실행 상세 정보를 볼 수 있는 역할이 포함된 flow_designer 사용자 역할을 직접 할당하여 플로우에 대한 워크플로우 스튜디오 액세스 권한을 부여할 수 있습니다.
      경고:
      사용자에게 flow_designer 역할을 직접 부여하는 것은 사용자에게 관리자 역할을 부여하는 것과 같습니다. 시스템 사용자로서 플로우를 실행할 수 있고 모든 테이블과 모든 데이터베이스 작업에 액세스할 수 있기 때문입니다 워크플로우 스튜디오 .
    • 플로우 디자이너와 작업 디자이너는 표준 애플리케이션 접근 설정을 사용하여 콘텐츠가 다른 애플리케이션과 상호작용하는 방식을 관리할 수 있습니다.

    작업 제한

    기본적으로 플로우에는 50개 이하의 작업이 있을 수 있습니다. 기본 동작을 변경하려면 시스템 속성의 sn_flow_designer.max_actions 값을 늘립니다. 하지만 큰 플로우가 인스턴스에 미칠 수 있는 성능 영향을 고려해야 합니다.

    기록 업데이트에 대한 트리거 옵션

    Flow Designer는 트리거 실행 옵션을 사용하여 흐름에서 특정 기록을 업데이트할 수 있는 빈도를 지정할 수 있습니다. 플로우를 한 번만 실행하려면 한 번 옵션을 사용합니다. 기록이 처음 업데이트될 때 플로우가 실행되지만 추가 기록 업데이트는 플로우를 트리거하지 않습니다. 기록이 업데이트될 때마다 플로우를 실행하려는 경우와 아직 실행 중인 활성 플로우가 없는 경우 항상 옵션을 사용합니다. 예를 들어, 인시던트 기록을 한 번만 실행하도록 할당하는 플로우를 설정하고, 인시던트 감시 목록에 항상 실행하도록 알림을 보내는 플로우를 설정할 수 있습니다. 트리거 실행 필드는 다음 트리거 유형에만 사용할 수 있습니다.
    • 생성 또는 업데이트됨
    • 업데이트됨

    직접 재귀 방지 및 간접 재귀 제한

    인스턴스 중단 및 시스템 자원 워크플로우 스튜디오 소비를 방지하기 위해 는 직접 재귀의 결과인 플로우 또는 하위 플로우를 시작하기 위한 모든 요청을 무시합니다. 이러한 조건에서는 직접 재귀가 발생합니다.
    • 작업은 자신이 속한 것과 동일한 플로우를 호출합니다. 예를 들어, 스크립트 단계는 플로우에 대한 API 호출을 수행합니다.
    • 작업 또는 하위 플로우는 플로우 트리거와 일치하는 결과를 생성합니다. 예를 들어, 인시던트 기록이 업데이트될 때 실행되는 플로우에는 인시던트 기록을 업데이트하는 기록 업데이트 작업이 포함되어 있습니다.
    워크플로우 스튜디오 또한 간접 재귀에서 플로우를 시작할 수 있는 횟수도 제한합니다. 간접 재귀는 이러한 조건에서 발생합니다.
    • 동일한 플로우가 하위 플로우 호출 체인에서 여러 번 호출됩니다. 예를 들어 하위 플로우 A가 하위 플로우 B를 호출하고 하위 플로우 B가 하위 플로우 A를 호출하는 경우 하위 플로우 중 하나를 호출하면 간접 재귀가 생성됩니다.
    • 하위 플로우 체인에서 동일한 플로우가 여러 번 트리거됩니다. 예를 들어 기록 생성에 의해 트리거되는 두 개의 플로우가 있다고 가정합니다. 기록 A를 만들면 플로우 A가 트리거되고 기록 B도 생성된다고 가정합니다. 또한 기록 B를 만들면 플로우 B가 트리거되고 기록 A가 만들어집니다. 두 기록 유형 중 하나를 만들면 간접 재귀가 생성됩니다.

    기본적으로 시스템은 실행 횟수가 간접 재귀 제한인 3회 실행에 도달한 후 플로우 실행 트리거를 중지합니다. 관리자는 시스템 속성을 com.glide.hub.flow_engine.indirect_recursion_limit 1보다 크거나 같은 정수 값으로 설정하여 제한을 변경할 수 있습니다. 시스템은 1보다 작은 속성 값을 무시하고 대신 1의 제한을 사용합니다. 간접 재귀 제한을 늘리면 인스턴스에 미칠 수 있는 성능 영향을 고려합니다.

    주:
    기본적으로 트랜잭션 할당량 규칙은 플로우가 1시간 넘게 실행되지 않도록 합니다.

    플로우 및 작업 테스트

    흐름을 테스트하면 트리거 조건이 무시되고 즉시 실행됩니다. 기록 기반 트리거로 플로우를 테스트하려면 트리거 역할을 할 특정 기록을 선택해야 합니다. Flow Designer는 테스트 전에 적절한 샘플 기록을 생성해야 합니다. 플로우 테스트에 대한 자세한 내용은 다음 문서를 참조하십시오 플로우 테스트.

    설계 단계 중에 플로우에 초안 작업 표시 를 설정하여 게시되지 않은 작업을 테스트할 수 있습니다. 초안 작업으로 테스트하는 경우 다음 지침을 사용합니다.

    • 비프로덕션 인스턴스에 대한 설계 플로우 및 작업 프로덕션 인스턴스에는 활성 작업 플로우만 배포하십시오.
    • 초안 작업이 최종 상태가 될 때까지 초안 작업 표시 를 true로 설정된 상태로 둡니다. 최종이 완료되면 각 작업을 게시하고, 초안 작업 표시 를 false로 설정하고, 플로우를 활성화합니다.
      경고:
      작업을 게시하기 전에 초안 작업 표시 를 비활성화하면 플로우에서 모든 초안 작업이 제거됩니다.
    • 활성 플로우 또는 게시된 작업을 변경하면 초안 상태로 돌아갑니다. 플로우가 트리거되면 시스템은 활성화된 플로우와 게시된 작업만 실행하며 플로우 실행 상세 정보에는 실행된 내용만 표시됩니다. 활성 플로우의 초안이 있는 경우 플로우 실행 세부 정보에 나열된 트리거 및 작업은 초안 플로우에 나열된 것과 다를 수 있습니다.