고급 승인에서 레코드에 대한 임시 액세스 공유
트리거를 설정하여 관련 레코드에 대한 임시 액세스를 승인자와 공유합니다. 승인 작업이 완료되면 트리거를 사용하여 레코드 액세스를 철회합니다.
승인을 위해 레코드를 제출할 때 승인자에게 레코드의 관련 개체에 대한 액세스 권한이 있어야 승인 요청에 대한 작업을 수행할 수 있습니다. 개체의 내부 조직 전체 공유 기본값이 비공개인 경우 트리거를 사용하여 승인자에게 액세스 권한을 부여하는 공유 개체를 만들 수 있습니다. 레코드가 승인되면 트리거를 사용하여 공유 레코드를 삭제하여 레코드 액세스를 철회할 수 있습니다.
-
Apex 트리거를 만들어 레코드의 관련 개체에 대한 액세스를 공유합니다. 보안 아래에서 승인자의 프로필을 선택합니다. Apex 트리거 정의를 참조하십시오.

-
Apex 트리거를 만들어 공유 레코드를 삭제하고 승인 요청이 완료된 후 레코드 액세스를 취소합니다. 보안 아래에서 승인자의 프로필을 선택합니다.
특정 사용 사례에 맞게 샘플 코드 조각을 사용자 정의할 수 있습니다.
trigger AWIUpdate on ApprovalWorkItem(after update) { List<ApprovalWorkItem> awiList = new List<ApprovalWorkItem>(); // Get the related opportunities for the accounts in this trigger awiList = [SELECT Id, RelatedRecordId, AssignedToId FROM ApprovalWorkItem WHERE Id IN :Trigger.new]; for (ApprovalWorkItem awi : awiList) { // Use the related record id, to delete the share record created for the user Id relatedRecordId = awi.RelatedRecordId; Id assignedToId = awi.AssignedToId; SObjectType relatedRecordType = relatedRecordId.getSObjectType(); if (relatedRecordType.getDescribe().isCustom()) { Map<String, Schema.SObjectType> tokens = Schema.getGlobalDescribe(); String relatedRecordShareName = relatedRecordType.getDescribe().getName().removeEnd('__c') + '__Share'; if(tokens.containsKey(relatedRecordShareName)) { // Share object exists SObject[] customShare = Database.query('SELECT Id FROM ' + relatedRecordShareName + ' WHERE ' + ' RowCause = \'AdvancedApprovalTriggerShareReason__c\' ' + ' AND ParentId = :relatedRecordId' + ' AND UserOrGroupId = :assignedToId'); } else { // OWD is Public Read Write } } } }
이 기사를 통해 문제를 해결했습니까?
개선을 위한 의견을 보내주세요.
