Salesforce 外部对象

外部对象(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)

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

间接查找关系的要求父对象拥有一个同时是“外部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”的父对象。

原文地址:https://www.cnblogs.com/chengcheng0148/p/salesforce_external_object.html

时间: 2024-11-01 21:44:41

Salesforce 外部对象的相关文章

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

Unit06: 外部对象概述 . window 对象 . document 对象 小代码演示: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script> //1.确认框 function del() { var b = confirm("确定要删除此数据吗?&qu

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

6.9.2 外部对象定义 语义 1.如果对一个对象的标识符的声明具有文件作用域以及一个初始化器,那么该声明是对该标识符的一个外部定义. 2.对于具有文件作用域且没有一个初始化器.没有一个存储类说明符,或者具有存储类说明符static的对象的标识符的一个声明,构成了一个试验性的定义.如果一个翻译单元对于一个标识符包含了一个或多个试验性的定义,并且该翻译单元不包含对此标识符的外部定义,那么该行为就完全好比该翻译单元包含了对此标识符的一个文件作用域的声明,具有到此翻译单元末尾的复合类型,并且具有一个等

Javascript外部对象

Window 浏览器: - location:地址 - history:历史 - Document:文档 - screen:窗口 - navigator:帮助 > 1.外部对象就是浏览器提供的API -- **BOM** > 2.这些对象由w3c规定,由浏览器开发者设计并开发 > 3.这些对象分为2部分,其中BOM包含了DOM > 4.我们可以通过js访问这些对象 # 外部对象 > BOM (Browser Object Model) 浏览器对象模型,用来访问和操纵浏览器窗口

Salesforce Sobject 对象更新操作

当一条记录对象为Sobject时我们只有这个对象的Id我们应该怎么做?查阅了很多资料,终于着到了.泪奔-- Id d='0030I00001aTa4tQAC'; //Contatc对象记录Id String aa= d.getSobjectType().getDescribe().getName();//首先根据Id获取这条记录是哪个对象的 Schema.sObjectType objectDef = Schema.getGlobalDescribe().get(aa).getDescribe(

Salesforce中通过SOAP API和Metadata API开发java的web server服务

1.下载Salesforce平台中WSDL文件 在Salesforce中创建了自己需要用到的对象后,我们想要在别的应用中读写纪录到对象中,首先需要的是自己Salesforce平台的权限通过.登陆自己的Salesforce,下载WSDL文件. 依次点击右上角你的名字中设置-->应用程序设置-->发展-->API. 如果你的是英文,那么依次点击Your Name --> Setup --> App Setup --> Develop --> API. 到了如下页面后,

C++Primer学习笔记------对象和类(1)

一.有关类的基本知识 1.类型 仔细想想,我们通常用什么标准来判定一个数据的数据类型呢.有两个,第一个是数据的存储方式,比如char站一个自己,int占四个自己,第二个就是这种类型能够做的操作.比如整型数据可以做取余操作,但是浮点数就不可以. 所以在定义一个变量的时候,我们通常完成了下面这几件事: (1)决定要为这个类型的变量分配的内存 (2)决定如何解释内存中的位,比如在定义数组的时候,在数组的索引+1时,到底是移动几个内存单元,是根据这个数组元素的数据类型来确定的. (3)决定了这个变量所能

JS中的内置对象简介与简单的属性方法

JS中的数组: 1.数组的概念: 数组是在内存中连续存储的多个有序元素的结构,元素的顺序称为下标,通过下标查找对应元素 2.数组的声明: ①通过字面量声明var arr1 = [,,,,] JS中同一数组可以储存多种不同的数据类型(但,同一数组一般只用于存放同种数据类型) 例如var arr1 = [1,"2",true,{"name":"啦啦啦"},[1,2]]; ②通过new关键字声明:var arr2 = new Array(参数); &g

JavaScript学习总结(二)——闭包、IIFE、apply、函数与对象

目录 一.闭包(Closure) 1.1.闭包相关的问题 1.2.理解闭包 二.对象 2.1.对象常量(字面量) 2.2.取值 2.3.枚举(遍历) 2.4.更新与添加 2.5.对象的原型 2.6.删除 2.7.封装 三.函数 3.1.参数对象 (arguments) 3.2.构造函数 3.3.函数调用 3.3.1.call 3.3.2.apply 3.3.3.caller 3.3.4.Callee 3.5.立即执行函数表达式 (IIFE) 3.5.1.匿名函数与匿名对象 3.5.2.函数与函数

不变式与根对象

??????? 一个大型的复杂项目而言,模型趋向于越来越大. 当模型发展到了某个规模,将 它作为整体来讨论很困难,理解不同部件之间的关系和交互变得很困难. ??????因此,强化不变量通常也是有必要的. 不变量是在数据发生变化时必须维护的那些规则. 在许多对象持有正在发生变化的数据对象的引用时,不变量是很难实现和维护的.?????使用 根对象可能会将内部对象的临时引用传递给外部对象,作为限制,当操作完成之后,外部对象不能再持有这个引用. 一种简单的实现方式是向外部对象传递值对象的副本.? ???