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;

Apex的对象共享的更多相关文章

  1. redis 系列15 数据对象的(类型检查,内存回收,对象共享)和数据库切换

    一.  概述 对于前面的五章中,已清楚了数据对象的类型以及命令实现,其实还有一种数据对象为HyperLogLog,以后需要用到再了解.下面再了解类型检查,内存回收,对象共享,对象的空转时长. 1.1 ...

  2. [C++] 所有该类的对象共享静态类成员变量

    问:智能指针可以对指针的引用数量进行计数,一个智能指针释放时,别的智能指针怎么知道的? 同一类的对象共享同一变量最简单的方法是静态变量: 不像普通的变量,静态成员变量是被所有类对象共享的,不同的对象可 ...

  3. 【SpringMVC】域对象共享数据

    使用ModelAndView向request域对象共享数据 index.html <a th:href="@{/testModelAndView}">使用ModelAn ...

  4. Java并发-对象共享

    我们不仅希望防止某个线程正在使用对象状态而其他的线程正在修改该状态,而且希望当一个线程修改了对象状态后,其他的线程能够看到发生的状态变化. 可见性:当读操作和写操作在不同的线程中进行时,他们的动作是共 ...

  5. java多线程学习-多个线程访问对象共享数据的方式

    public class MulitThreadShareData { public static void main(String[] args) { final ShareData1 data1 ...

  6. 跨 Appdomain 对象共享

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  7. SpringCloud微服务架构分布式组件如何共享session对象

    一.简单做一个背景说明1.为说明问题,本文简单微服务架构示例如下 2.组件说明分布式架构,每个组件都是集群或者主备.具体说明如下:zuul service:网关,API调用都走zuul service ...

  8. 面试官:Redis的共享对象池了解吗?

    我正在面试间里焦急地等待着,突然听到了门外的脚步声,随即门被打开,穿着干净满脸清秀的青年走了进来,一股男士香水的淡香扑面而来. 面试官:"平时在工作中用过Redis吗?" 我:&q ...

  9. Salesforce 开发整理(三)权限共享

    Salesforce提供对象的访问权限可以通过 安全性控制 → 共享设置,可以查看每个对象在系统内部默认的访问权限 共用读写:对象的记录任何用户都可以进行读写操作 公用只读:对象的记录任何用户都可以查 ...

随机推荐

  1. axios的Get和Post方法封装及Node后端接收数据

    最近有做一个Vue的小项目,其中用到了尤大大推荐使用的axios,但是使用的过程中遇到了各种各样的问题,所以这次也是将一些心得分享出来. 安装的流程我就简单说一下下吧,在一个自己新建的文件夹中命令行中 ...

  2. C#中关于as关键字的使用

    我们在实际编码中有时会用到as关键字来将对象转换为指定类型,与is类型不同的是,is关键字是用于检查对象是否与给定类型兼容,如果兼容就返回true,如果不兼容就返回false.而as关键字会直接进行类 ...

  3. 求一个集合的所有真子集 Python

    给定一个集合,元素均为正整数且不重复,求该集合的所有子集 # -*- coding: utf-8 -*- """ Created on Tue Oct 10 09:04: ...

  4. 课程四(Convolutional Neural Networks),第一周(Foundations of Convolutional Neural Networks) —— 2.Programming assignments:Convolutional Model: step by step

    Convolutional Neural Networks: Step by Step Welcome to Course 4's first assignment! In this assignme ...

  5. python计算数组中对象出现的次数并且按照字典输出

    解决的问题如题,如果对Python不是很熟悉,解决的办法可能如下: test_array=[1,2,3,1,2,3]; def count_object1(array): result_obj={} ...

  6. python3中的range函数返回的是列表吗?

    注意,这里说的Python3里面的range函数,和Python2是不同的,返回的不是列表,是可迭代对象. 在python3中,如果执行下面的语句 print(range(10)) 得到结果是 ran ...

  7. vc++开发安装程序实例

    前言 市面上有很多安装程序制作软件:但是,要实现个性化安装程序,还是自己动手来写一个更为妥当.本文介绍基本的安装程序制作的步骤. 安装程序界面: 安装程序可以分为几个功能点:1 资源的嵌入.释放.2 ...

  8. Django+JWT实现Token认证

    对外提供API不用django rest framework(DRF)就是旁门左道吗? 基于Token的鉴权机制越来越多的用在了项目中,尤其是对于纯后端只对外提供API没有web页面的项目,例如我们通 ...

  9. Eureka自我保护模式——难点重点

    一.开启Eureka自我保护模式访问Eureka主页时,如果看到这样一段大红色的句子: EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ...

  10. kafka server管理

    kafka启动以来zookeeper  kafka启动之前,首先要启动zookeeper 1.1.kafka启动单个节点 -daemon 表示程序以守护进程的方式后台云心 --override pro ...