다음 샘플 스크립트를 사용하여 비관적 방식의 레코드 잠금을 사용 및
관리할 수 있습니다.
BASE 조치 Action_Initialization 후크의 레코드 잠금 스크립트
sub Defect_Initialization {
my($actionname, $actiontype) = @_;
# $actionname as string scalar
# $actiontype as long scalar
# action is LockRecord
# record type name is Defect
# Do any setup for the action here.
$entity->LockRecord(0);
}
RECORD_SCRIPT_ALIAS 조치의 레코드 잠금 스크립트
sub Defect_LockRecord {
my($result);
my($param) = @_;
# record type name is Defect
$entity->LockRecord(0);
return $result;
}
RECORD_ALIAS 조치의 레코드 잠금 해제 스크립트
sub Defect_Unlock {
my($result);
my($param) = @_;
# record type name is Defect
$result = "";
my $locked_by = $entity->GetLockOwner();
if ($locked_by ne "") {
my $do_unlock = $session->IsUserSuperUser();
if (! $do_unlock) {
# If the current user holds the lock, let them unlock it.
my $username = $session->GetUserLoginName();
if ($username =~ /^$locked_by$/i) {
$do_unlock = 1;
}
if (! $do_unlock) {
# Additional options to "authorize" unlocking:
# 1) allow if user is a member of an "unlock" group
# get user's groups, check if member
#
# 2) allow for some privileged users, e.g. Security Administrator
# check session for the chosen privilege
#
# 3) many other possibilities
$do_unlock = 1;
}
if ($do_unlock) {
$entity->UnlockRecord();
}
else {
$result = "You are not allowed to unlock this record.";
}
}
return $result;
}