활동 잠금 워크플로우
잠금 활동은 잠금이 해제될 때까지 이 워크플로우의 다른 인스턴스가 이 활동을 지나 계속되는 것을 방지합니다.
동일한 워크플로우의 여러 인스턴스가 동시에 실행될 수 있습니다. 예를 들어 특정 테이블에 기록이 추가될 때 워크플로우가 트리거되는 경우입니다. 이 워크플로우는 여러 기록이 차례로 추가되는 경우 각 기록 삽입에 의해 한 번씩, 여러 번 트리거됩니다. 잠금 작업을 사용하여 워크플로의 다른 인스턴스가 진행하기 전에 이 워크플로 인스턴스가 하나 이상의 작업을 완료했는지 확인할 수 있습니다.
워크플로는 잠금 해제 작업을 사용하여 잠금을 명시적으로 해제할 수 있습니다. 최대 기간에 도달하면 잠금을 해제할 수도 있습니다.
워크플로의 인스턴스가 잠금 작업에 도달하면 잠금 작업에 지정된 키를 사용하여 잠금을 가져오려고 합니다. 다른 인스턴스가 이미 잠금을 획득하고 아직 해제하지 않은 경우 이 잠금 시도는 실패합니다. 인스턴스는 최대 시도 횟수에 도달할 때까지 잠금을 계속 시도하고 있습니다.
잠금 작업 전에 1초 타이머 작업을 배치하는 것이 좋습니다. 이렇게 하면 잠금 작업이 한 워크플로 인스턴스를 다른 워크플로 인스턴스와 구분할 수 없는 드문 상황을 방지할 수 있습니다. 이 조건은 잠금을 소유하는 엔터티가 특정 워크플로 인스턴스가 아니라 해당 인스턴스가 실행 중인 코드 실행 스레드이기 때문에 발생할 수 있습니다. 대부분의 경우 각 워크플로 인스턴스는 서로 다른 스레드에서 실행됩니다. 타이머 활동을 추가하면 이러한 상황이 보장됩니다.
- 승인 활동
- 작업 활동
- 타이머 활동
- 조건 활동 대기
- WF 이벤트 활동 대기
- PowerShell 스크립트와 같은 MID 서버 활동
결과
| 결과 | 설명 |
|---|---|
| 성공 | 활동이 잠금을 성공적으로 획득했습니다. 이 워크플로 인스턴스는 이 시점을 지나 진행할 수 있지만 잠금이 해제될 때까지 다른 인스턴스는 진행할 수 없습니다. |
| 실패 | 잠금 최대 시도 횟수를 얻으려고 시도한 후 활동에서 잠금을 얻을 수 없습니다. |
입력 변수
입력 변수는 활동의 초기 동작을 결정합니다.
| 필드 | 설명 |
|---|---|
| 키 | 고유한 뮤텍스 키입니다. 활동 잠금 해제 활동은 이 키를 사용하여 잠금을 해제합니다. |
| 지속 시간 | |
| 최대 기간 | 잠금이 지속되는 최대 시간입니다. 잠금은 이 기간에 도달하면 해제됩니다. 이 방법으로 잠금을 해제하는 것은 잠금 해제 작업을 실행하는 것과 같습니다. |
| 잠금 시도 잠금 시도가 거부될 경우 활동의 행동 방식을 지정합니다. 마지막 잠금 시도가 실패하면 활동 상태가 'timeout'으로 설정되고 활동 결과는 '실패'로 설정됩니다. |
|
| 최대 시도 횟수 | 활동에서 잠금 획득을 시도할 수 있는 최대 횟수를 지정합니다. |
| 시도 간 지연 | 잠금 시도가 실패한 후 다른 잠금 시도가 허용되기 전에 필요한 시간입니다. |
상태
활동 상태는 활동으로 수행할 작업을 워크플로우 엔진에 알려줍니다.
| 상태 | 설명 |
|---|---|
| 대기 중 | 워크플로우 엔진이 잠금을 얻기 위해 대기 중입니다. |
| 마침 | 활동이 잠금을 성공적으로 획득했습니다. |
| 시간 제한 | 활동이 최대 시도 횟수 입력 변수에 지정된 시도 횟수 내에서 잠금을 확보할 수 없습니다. |