활동 잠금 워크플로우

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기2분
  • 잠금 활동은 잠금이 해제될 때까지 이 워크플로우의 다른 인스턴스가 이 활동을 지나 계속되는 것을 방지합니다.

    동일한 워크플로우의 여러 인스턴스가 동시에 실행될 수 있습니다. 예를 들어 특정 테이블에 기록이 추가될 때 워크플로우가 트리거되는 경우입니다. 이 워크플로우는 여러 기록이 차례로 추가되는 경우 각 기록 삽입에 의해 한 번씩, 여러 번 트리거됩니다. 잠금 작업을 사용하여 워크플로의 다른 인스턴스가 진행하기 전에 이 워크플로 인스턴스가 하나 이상의 작업을 완료했는지 확인할 수 있습니다.

    워크플로는 잠금 해제 작업을 사용하여 잠금을 명시적으로 해제할 수 있습니다. 최대 기간에 도달하면 잠금을 해제할 수도 있습니다.

    워크플로의 인스턴스가 잠금 작업에 도달하면 잠금 작업에 지정된 키를 사용하여 잠금을 가져오려고 합니다. 다른 인스턴스가 이미 잠금을 획득하고 아직 해제하지 않은 경우 이 잠금 시도는 실패합니다. 인스턴스는 최대 시도 횟수에 도달할 때까지 잠금을 계속 시도하고 있습니다.

    주:

    잠금 작업 전에 1초 타이머 작업을 배치하는 것이 좋습니다. 이렇게 하면 잠금 작업이 한 워크플로 인스턴스를 다른 워크플로 인스턴스와 구분할 수 없는 드문 상황을 방지할 수 있습니다. 이 조건은 잠금을 소유하는 엔터티가 특정 워크플로 인스턴스가 아니라 해당 인스턴스가 실행 중인 코드 실행 스레드이기 때문에 발생할 수 있습니다. 대부분의 경우 각 워크플로 인스턴스는 서로 다른 스레드에서 실행됩니다. 타이머 활동을 추가하면 이러한 상황이 보장됩니다.

    그림 1. 타이머 활동 앞에 오는 잠금 활동의 예
    잠금 활동 전에 타이머 활동이 있는 워크플로우
    잠금 작업은 다른 워크플로 인스턴스의 처리를 일시적으로 방지할 수 있으므로 워크플로가 잠금잠금 해제 작업 블록 사이에 대기하도록 하는 작업을 추가하지 마십시오. 이로 인해 잠금 해제 작업이 잠금을 획득하지 못하고 완료하는 데 60초가 걸릴 수 있습니다. 제한된 대기 활동에는 다음이 포함됩니다.
    • 승인 활동
    • 작업 활동
    • 타이머 활동
    • 조건 활동 대기
    • WF 이벤트 활동 대기
    • PowerShell 스크립트와 같은 MID 서버 활동

    결과

    표 1. 활동 결과 잠금
    결과 설명
    성공 활동이 잠금을 성공적으로 획득했습니다. 이 워크플로 인스턴스는 이 시점을 지나 진행할 수 있지만 잠금이 해제될 때까지 다른 인스턴스는 진행할 수 없습니다.
    실패 잠금 최대 시도 횟수를 얻으려고 시도한 후 활동에서 잠금을 얻을 수 없습니다.

    입력 변수

    입력 변수는 활동의 초기 동작을 결정합니다.

    표 2. 활동 입력 변수 잠금
    필드 설명
    고유한 뮤텍스 키입니다. 활동 잠금 해제 활동은 이 키를 사용하여 잠금을 해제합니다.
    지속 시간
    최대 기간 잠금이 지속되는 최대 시간입니다. 잠금은 이 기간에 도달하면 해제됩니다. 이 방법으로 잠금을 해제하는 것은 잠금 해제 작업을 실행하는 것과 같습니다.
    잠금 시도

    잠금 시도가 거부될 경우 활동의 행동 방식을 지정합니다. 마지막 잠금 시도가 실패하면 활동 상태가 'timeout'으로 설정되고 활동 결과는 '실패'로 설정됩니다.

    최대 시도 횟수 활동에서 잠금 획득을 시도할 수 있는 최대 횟수를 지정합니다.
    시도 간 지연 잠금 시도가 실패한 후 다른 잠금 시도가 허용되기 전에 필요한 시간입니다.

    상태

    활동 상태는 활동으로 수행할 작업을 워크플로우 엔진에 알려줍니다.

    표 3. 활동 상태 잠금
    상태 설명
    대기 중 워크플로우 엔진이 잠금을 얻기 위해 대기 중입니다.
    마침 활동이 잠금을 성공적으로 획득했습니다.
    시간 제한 활동이 최대 시도 횟수 입력 변수에 지정된 시도 횟수 내에서 잠금을 확보할 수 없습니다.