• Apex的对象共享


    Apex的对象共享

    在Apex中,每个对象都有一个“共享”对象,其中存储了该对象的共享设定。

    这种共享对象以“share”结尾。比如Account的共享对象是AccountShare,Contact的共享对象是ContactShare。对于自定义对象,其对应的共享对象是以“__share”结尾,比如“Example_Object__c”对应的共享对象是“Example_Object__share”。

    注意,在“主-详细”(Master-Detail)关系中“详细”方面的对象没有对应的共享对象,因为它的共享设定是由“主”方面的对象决定的。

    注意,只有当对象的“组织范围内默认”(Organizational-wide-default)设置为“专用”(Private)时,共享对象才会启用。如果没有启用,在Apex代码中调用“XXX__share”时会出现该类型不存在的错误。

    这种设定的原因是:共享对象对应的是Salesforce内部数据库中的共享数据表。当对象的“组织范围内默认”设定为“公共”的时候,该对象不存在单独的共享设定,所以对应的共享对象也无法使用。

    共享对象属性

    共享对象包括以下属性:

    • objectNameAccessLevel:这个属性表明了该共享的共享级别,其名字是对象名后面加上“AccessLevel”,比如LeadShare中的属性就是LeadShareAccessLevel。该属性的值可以是Edit、Read、All
    • ParentID:该属性表明了该共享对象对应的数据记录的ID,无法被更改
    • UserOrGroupId:该属性表明了被共享的用户或组的ID,无法被更改
    • RowCause:该属性表明了共享的原因,无法被更改,默认值是“Manual”

    共享原因

    共享原因可以在设置界面中创建。每个对象都可以有自己的共享原因,在每个对象的详细信息页面中有“Apex 共享原因”相关列表。在那里可以创建和编辑共享原因。

    在Apex中使用时,共享原因的名字后面要加“__c”。

    共享对象的代码示例

    首先在设置界面中创建一个自定义对象“Example_Object__c”,然后创建一个“Apex 共享原因”,名为“Example_SR”。

    以下代码可以对该自定义对象创建一个共享对象:

    // 创建示例自定义对象
    Example_Object__c exObj = new Example_Object__c(Name = 'test object');
    insert exObj;
    
    // 创建共享对象
    Example_Object__share exSha = new Example_Object__share();
    
    // 设定共享对象的各个属性值
    exSha.AccessLevel = 'Edit';
    exSha.ParentId = exObj.Id;
    exSha.UserOrGroupId = System.UserInfo.getUserId();
    exSha.RowCause = Schema.Example_Object__share.RowCause.Example_SR__c; // 在这里,使用了Schema来调用共享原因
    
    // 插入共享对象到数据库
    insert exSha;
    
  • 相关阅读:
    WSL中使用npm install报错
    在npm install时node-gyp出现错误
    Chrome禁用隐藏www和m
    Git始终忽略特定文件的某一行内容
    macOS关闭修改扩展名的提示
    解决安装Anaconda后ZSH中使用的依然是系统自带的Python
    macOS上更顺手的终端
    自用的越狱插件
    Tomcat安装后修改路径方法
    TestStack.White安装详解
  • 原文地址:https://www.cnblogs.com/chengcheng0148/p/apex_object_share_basic.html
Copyright © 2020-2023  润新知