Loading
시스템 관리자에 대한 피싱 방지 MFA 및 전 직원사용자 MFA 적용 안내 더 많이 읽기
고급 승인에서 레코드에 대한 임시 액세스 공유

고급 승인에서 레코드에 대한 임시 액세스 공유

트리거를 설정하여 관련 레코드에 대한 임시 액세스를 승인자와 공유합니다. 승인 작업이 완료되면 트리거를 사용하여 레코드 액세스를 철회합니다.

승인을 위해 레코드를 제출할 때 승인자에게 레코드의 관련 개체에 대한 액세스 권한이 있어야 승인 요청에 대한 작업을 수행할 수 있습니다. 개체의 내부 조직 전체 공유 기본값이 비공개인 경우 트리거를 사용하여 승인자에게 액세스 권한을 부여하는 공유 개체를 만들 수 있습니다. 레코드가 승인되면 트리거를 사용하여 공유 레코드를 삭제하여 레코드 액세스를 철회할 수 있습니다.

  1. Apex 트리거를 만들어 레코드의 관련 개체에 대한 액세스를 공유합니다. 보안 아래에서 승인자의 프로필을 선택합니다. Apex 트리거 정의를 참조하십시오.
    팁
    팁

    사용자 정의 개체에 대한 액세스를 공유하는 경우 Apex 공유 이유를 만들고 트리거에 포함할 수 있습니다. Apex 공유 이유는 레코드 액세스를 특정 사용 사례로 제한합니다.

  2. 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
    }
    }
    }
    }
    
 
로드 중
Salesforce Help | Article