제한시간 기능으로 레코드 잠금 해제
잠긴 레코드를 식별하여 자동으로 잠금 해제할 수 있도록 하는 스크립트를 작성할 수 있습니다. 제한시간 스크립트는
이러한 태스크를 수행해야 합니다.
- 스키마가 정의한 레코드 유형 세트를 수집합니다.
- 각 레코드 유형의 잠긴 레코드를 모두 식별하는 데이터 구조를 빌드합니다. 구조에는 잠금을 보유한 사용자,
잠긴 버전 및 잠김이 관찰된 시간과 같은 정보가 포함됩니다. 처음에는 이 구조가 비어 있습니다.
- 레코드 ID, locked_by 및 lock_version 열을 선택하여 현재 잠긴 레코드를 찾도록 조회를 빌드합니다.
- 현재 잠긴 레코드 세트와 데이터 구조에서 이미 알려져 기록된 레코드를 비교합니다. 같은 사용자가 잠궜지만 새 버전의 레코드에 있는지 아니면 다른 사용자가 잠궜는지를 분별하도록 잠긴 레코드 버전과 잠근 사용자 둘 모두에 일치하는지 검사해야 합니다.
- 선택된 간격보다 오래 유지되는 잠금이 있는 경우 엔티티를 로드하고 API 잠금 해제 메소드를 호출하여 잠금을 제거하십시오.
- 새로 잠긴 레코드의 참조는 추가하고 더 이상 잠기지 않은 레코드의 참조는 제거하여 데이터 구조를 업데이트합니다.
스크립트는 사용자가 보유했던 잠금을 제거하면 사용자에게 알리거나 해당 활동을 로그해야 합니다.
스크립트는 정기적으로 실행되도록 설정되어야 합니다. 스크립트가 스캔을 수행하는 빈도 및 선택된 제한시간 간격이 잠금의 제한시간이 초과할 최소 및 최대 예상 시간을 판별합니다. 이 값은 다음에 영향을 주므로 사용자에게 알려야 합니다.
- 사용자가 잠금을 잃기 전에 레코드 편집 작업을 수행할 수 있는 시간
- 방치된 잠금이 자동으로 해제될 때까지 사용자가 대기해야 하는 시간