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