外部对象(External Object)

在Salesforce中,管理员或开发者可以通过“外部对象”将其他系统中的数据虚拟地展现为Salesforce的对象。每个外部对象都要连接到一个外部数据源(External Data Source)。

在开发的时候,外部对象和Salesforce内部的标准或自定义对象没有不同,可以和标准或自定义对象一样使用,也可以用SOQL查询。但是Salesforce本身不存储这些外部对象的数据,而是通过其对应的外部数据源的连接来进行CRUD操作。

外部数据源(External Data Source)

在设置界面中搜索“外部数据源”,点击“外部数据源”链接,即可进入“外部数据源”的页面。

点击“新建外部数据源”按钮,即可进入“新建外部数据源”界面。在此界面中,用户除了设定基础的名称属性外,还需要选择“类型”,比如OData等。

以建立一个OData为例:

OData定义

引自维基百科:

OData协定,英文全名是Open Data Protocol(OData),它是一个开源的协定,以简单和标准的方法,来建造或消除可查询和可操作的RESTful API。它创始于2007年的微软公司。

新建外部数据源步骤

  1. 在新建外部数据源界面中,填入外部数据源的名称,并将类型选择为“Salesforce Connect: OData 2.0”
  2. 在URL输入框中填入OData的URL。这里使用Salesfore Trailhead中的示例URL:http://orderdb.herokuapp.com/orders.svc
  3. 点击保存按钮,保存外部数据源

至此,一个新的OData外部数据源就建立完成了。Salesforce可以从URL中的外部数据源中获得数据。

验证与同步

在新建的OData外部数据源详细界面中,可以看到“外部对象”部分是空的。要让Salesforce得到外部数据源的数据,需要点击“验证与同步”按钮。

然后,Salesforce会与外部数据源通信,并得到外部数据源中的数据,列出来。

在出现的列表中会有外部数据源包含的表格名称等属性,并有“已同步”列,代表了该数据是否已经同步。刚开始此列是空的。

选择所有列,并点击“同步”按钮。然后Salesforce会将外部数据源中的数据同步过来,并在“外部对象”部分显示出来。管理员可以编辑或删除这些对象。

外部对象详细信息

虽然Salesforce本身不存储外部对象的数据,而是通过外部数据源的连接来进行CRUD操作,但是在Salesforce同步了外部数据源的对象后,会在系统中建立一个对象的定义。

接着上面的例子,在同步了示例的OData外部数据源后,在“外部对象”部分点击“OrderDetails”,就可以看到此外部对象的详细信息。

外部对象的详细信息和Salesforce标准或自定义对象非常相似。有一点不同的是外部对象的“API名称”是以“__x”结尾,而非自定义对象的“__c”。但是其字段的结尾还是“__c”。

在外部对象的使用过程中,也需要和Salesforce中已经存在的对象进行联系。外部对象的字段在同步时默认是数字、日期、字符串等基本类型。它们可以被更改为查找关系类型(Lookup),从而与标准或自定义对象建立联系。

外部对象相关的关系类型有两种。

  • 间接查找关系(Indirect Lookup Relationship):子对象是外部对象,父对象是内部对象
  • 外部查找关系(External Lookup Relationship):父对象是外部对象,子对象可以是内部或外部对象

在外部对象中建立间接查找关系(Indirect Lookup Relationship)

当一个外部对象的字段类型被设置为“间接查找关系”时,此外部对象会作为子对象连接到另一个对象中。

间接查找关系的要求父对象拥有一个同时是“外部ID”和“唯一”的字段。此字段会作为父对象中和外部对象建立联系的字段。

继续上面的例子。我们要将刚才建立的外部对象“Orders”中“API 名称”为“customerID__c”的字段链接到标准对象“客户”中。

  1. 在“客户”对象中建立自定义字段,类型选择为“数字”(和外部对象的“customerID__c”字段类型一致),API名称设置为“Ext_Customer_ID__c”,并在第二步勾选“独有”和“外部ID”复选框

  1. 继续完成自定义字段的建立

  1. 进入刚才建立的外部对象“Orders”的详细信息页面
  2. 点击字段“customerID”左边的“编辑”按钮
  3. 在字段的编辑页面点击“更改字段类型”按钮
  4. 选择“间接查找关系”,点击“下一步”

  1. 在“相关项”下拉列表中选择“客户”,这是间接查找关系字段将要连接的对象

  1. 在“目标字段”下拉列表中选择“Ext_Customer_ID__c”,也就是刚才在“客户”对象中建立的字段。这个字段是间接查找关系的目标字段

  1. 继续完成字段的建立

这样,“客户”对象就成为了外部对象“Orders”的父对象。在“客户”对象详细信息页面可以看到“Orders”的相关列表。

在外部对象中建立外部查找关系(External Lookup Relationship)

当一个外部对象的字段类型被设置为“外部查找关系”时,此外部对象会作为子对象连接到另一个外部对象中。

继续上面的例子。我们要将刚才建立的外部对象“OrderDetails”中“API 名称”为“orderID__c”的字段链接到外部对象“Orders”上。

  1. 进入刚才建立的外部对象“OrderDetails”的详细信息页面
  2. 点击字段“orderID”左边的“编辑”按钮
  3. 在字段的编辑页面点击“更改字段类型”按钮
  4. 选择“外部查找关系”,点击“下一步”
  5. 在“相关项”下拉列表中选择“Orders”
  6. 继续完成字段的建立

这样,“Orders”对象就成为了外部对象“OrderDetails”的父对象。

Salesforce 外部对象的更多相关文章

  1. Javascript外部对象

    Window 浏览器: - location:地址 - history:历史 - Document:文档 - screen:窗口 - navigator:帮助 > 1.外部对象就是浏览器提供的A ...

  2. 对内存分配的理解 自动变量 局部变量 临时变量 外部变量 字符串长度 C语言可以看成由一些列的外部对象构成

    Status ListInsert_Sq(SqList *L,int i,LElemType_Sq e) { LElemType_Sq *newbase; LElemType_Sq *p,*q; if ...

  3. Unit06: 外部对象概述 、 window 对象 、 document 对象

    Unit06: 外部对象概述 . window 对象 . document 对象 小代码演示: <!DOCTYPE html> <html> <head> < ...

  4. ISO/IEC 9899:2011 条款6.9.2——外部对象定义

    6.9.2 外部对象定义 语义 1.如果对一个对象的标识符的声明具有文件作用域以及一个初始化器,那么该声明是对该标识符的一个外部定义. 2.对于具有文件作用域且没有一个初始化器.没有一个存储类说明符, ...

  5. Salesforce的对象关系

    对象关系 Salesforce中的对象关系和一般的关系数据库不同. 在关系数据库中对象间的关系是由主键.外键等加以定义.而在Salesforce中,对象之间的关系是由自定义字段来确定. 这么做的原因是 ...

  6. Salesforce的对象和字段

    对象 Salesforce默认提供了很多功能,可以用于销售.市场开发.客服等.为了实现这些功能,Salesforce提供了一系列的标准对象,比如"客户"(Account).&quo ...

  7. 为什么在匿名内部类中引用外部对象要加final修饰符

    当所在的方法的形参需要被内部类里面使用时,该形参必须为final. 为什么必须要为final呢? 首先我们知道在内部类编译成功后,它会产生一个class文件,该class文件与外部类并不是同一clas ...

  8. Salesforce Integration 概览(七) Data Virtualization数据可视化

    本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf Salesforc ...

  9. Salesforce Integration 概览(五) Remote Call-In(远程操作 外部->salesforce)

    本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 本篇博客介绍 Re ...

随机推荐

  1. core跨域问题

    #region 跨域问题 app.UseCors(builder => builder .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() ...

  2. Spring 静态代理+JDK动态代理和CGLIB动态代理

    代理分为两种:静态代理 动态代理 静态代理:本质上会在硬盘上创建一个真正的物理类 动态代理:本质上是在内存中构建出一个类. 如果多个类需要进行方法增强,静态代理则需要创建多个物理类,占用磁盘空间.而动 ...

  3. yii学习笔记--url解析

    在通过yiic命令生成了一个app之后,我们通过浏览器访问会看到这样的一个页面.   点击home时,url为:http://localhost/blog/index.php?r=site/index ...

  4. kibana6.2.4版本更新x-pack认证

    我在上一次介绍了如何安装时基本使用elk留下了一个问题,这次来解决这个问题,相必大家也想知道,接下来就看详细过程. 上次说到,直接看图吧. 因为x-pack是收费的,所以试用期只有一个月.长期使用就必 ...

  5. sql server 备份与恢复系列五 完整模式下的备份与还原

    一.概述 前面介绍了简单恢复模式和大容量恢复模式,这篇继续写完整恢复模式下的备份与还原.在完整恢复模式里最大的优点是只要能成功备份尾日志,就可以还原到日志备份内包含的任何时点("时点恢复&q ...

  6. How Tomcat works — 一、怎样阅读源码

    在编程的道路上,通过阅读优秀的代码来提升自己是很好的办法.一直想阅读一些开源项目,可是没有合适的机会开始.最近做项目的时候用到了shiro,需要做集群的session共享,经过查找发现tomcat的s ...

  7. 第5章 Linux上管理文件系统

    5.1 机械硬盘 机械硬盘由多块盘片组成,它们都绕着主轴旋转.每块盘片上下方都有读写磁头悬浮在盘片上下方,它们与盘片的距离极小.在每次读写数据时盘片旋转,读写磁头被磁臂控制着不断的移动来读取其中的数据 ...

  8. DLCI 简介

    数据链路连接标识(Data Link Connection Identifier) 帧中继协议是一种统计复用的协议,它在单一物理传输线路上能够提供多条虚电路.每条虚电路都是用DLCI(Data Lin ...

  9. 基础篇:1.JavaScript运行在html中,引用有几种方式?—— 6.js中常用的输出方式?

    书接上文,上文提到若干条JavaScript的基础性知识,大部分都是一些概念性的东西,本着认真严谨的态度,我们要认真对待,有些条目的问题是某个知识点的周边延伸,为节约篇幅,就一起整理了,如有描述不对的 ...

  10. [转]使用Git Submodule管理子模块

    本文转自:https://blog.csdn.net/qq_37788558/article/details/78668345 实例代码: 父项目:https://github.com/jjz/pod ...