本篇参考:

https://trailhead.salesforce.com/en/content/learn/modules/lightning_connect

https://help.salesforce.com/articleView?id=platform_connect_about.htm&type=5

我们在做salesforce开发的时候,除了需要了解最基本的前后端开发时,还需要对salesforce的设计以及government limit等有一些基础的了解。比如我们知道salesforce一个表可以创建若干个字段,但是不管当前的字段有多少,这个表的数据每条所占的内存大约是2K,不管当前的表的数据存储了1个字段还是多个字段。

公司根据不同的需求可能选择不同类型的 license,不同的 license有不同的 data storage。
通过查询 salesforce help文档可以查看到, Professional, Enterprise , Unlimited Edition 都是10G的数据内存
当我们的 license购买的 data storage有限时,我们可以给salesforce提case加钱去扩充,plus可以增加200M。然而不是所有的场景都需要各种扩充,因为扩充也意味着在salesforce中的数据不断变多,使用时相关的性能也会受相应的影响。某些case情况下可能我们想使用ERP或者其他的系统的数据,我们最开始想的是在salesforce创建一个 custom object或者一个 big object,然后数据迁移过来,当对端系统有改变,通过rest等方式将改动数据再推送过来。其实这种case下salesforce提供了另外一种可能,就是这篇所说的salesforce connect 以及 External Object.

一. Salesforce Connect

Salesforce Connect是一个可以允许你查看,搜索和修改存储在salesforce系统外部的数据。他获取

以下的大多数场景都适用情况下推荐使用 salesforce connect:

1. 你有大量的存储在外部的数据但是你不想拷贝到你的Salesforce org。
2. 你在任何时候都需要少量的数据
3. 你需要实时访问最新的数据
4. 数据存储在云或后台系统中,但希望在Salesforce org中显示或处理这些数据。

需要注意的是,如果需要频繁地访问大量外部数据,ETL(extract, transform, and load)工具仍然是实现最佳性能的最佳选择。我们在使用 外部对象前需要去评估一下是否需要使用 salesforce connect还是 ETL工具。通过上面的描述我们可以看到,当想要引用外部系统并且满足上面大部分场景时候,才需要用到 Salesforce Connect,其他情况需要按照项目实际情况操作。

二. Salesforce Connect简单设置和集成

官方给了一个实际的业务场景的demo,这里进行简单的描述。系统的客户的订单以及订单详细信息维护在外部ERP系统,系统管理员被要求在客户详情页可以查看到当前的客户对应的订单信息以及订单详细。其中订单信息以及订单详细信息不用维护到salesforce系统,每条顾客信息不会有大量的数据,每次访问需要展示最新的订单信息。这种业务场景我们推荐考虑使用 External Object。 步骤如下:

1. 创建 External DataSource

首先按照trailhead的demo安装一个 app exchange,链接如下:https://login.salesforce.com/packaging/installPackage.apexp?p0=04tE00000001aqG&isdtp=p1. 用来安装一些需要用到的字段以及其他的metadata。安装好以后,切换到classic以后,app选择到External Object,tab选择到 Quickstart,正常会展示一个button叫做Set Customer IDs ,点击这个button以后会展示下面的图了,证明数据初始化成功,这个在实际项目中肯定不需要,只是trailhead为了保证数据可以进行关联而做的初始化操作。

初始化操作结束以后,我们开始进行 external data source的创建,在 setup 处搜索 external data source点击左侧的item即可查看当前系统的external data source信息。点击 New External Data source即可创建。

我们按照要求配置相关信息,需要注意的是,实际的项目中一定要使用认证证书,URL为官方提供的demo数据。

点击Save以后创建好一个External Data Source。

 2.创建 External Object

当我们创建完 External Data Source便可以更方便的创建 External Object了。我们进入刚刚创建的 External Data Source,点击 Validate And Sync按钮。

这里我们针对外部数据只选择了Order 以及Order Detail两个 External Object,点击 Sync,点击以后便可以生成了 External Object。

setup 搜索External Object,点击左侧便可以进入相关的生成的External Object了。

3. 设置各表之间的关系。这步很重要,我们创建了外部对象,绑定了外部的data source,目的是要使用这些数据,所以搞清楚各个表之间的关系,了解外部对象之间以及外部对象和内部对象之间的关联关系很重要。当前的demo中,我们可以看到, Account有一个或者多个Order,一个Order有一个或者多个 Order Detail.其中 Account是 salesforce Object, Order以及Order Detail是外部对象,我们先根据下面的表搞清楚关系。

Type of Relationship(关系类型) Child Object(子Object) Parent Object(父Object)

Must External Data Contain Salesforce IDs?

外部数据是否包含Salesforce Id

 Lookup  Standard, Custom, or External  Standard or Custom  Yes
 External Lookup  Standard, Custom, or External  External  No
 Indirect Lookup  External  Standard or Custom  No

通过上面的图表,我们可以看到 针对外部对象和内部对象以及外部对象和外部对象的关系,可以有三种关系类型,分别是 lookup / External Lookup / Indirect Lookup。

lookup类型用于当父表是salesforce表,字表是External情况,并且External Data Source的数据包含了Salesforce Id情况下,可以在 External Object中创建 lookup类型的字段,关联到salesforce的表上;

External Lookup用于 父表是外部表,并且字表是salesforce内部或者外部情况下,可以创建一个 External Lookup类型字段;

Indirect Lookup用于父表是 salesforce中的表,字表是外部的表,并且不通过salesforce Id关联,通过 外键形式的字段进行关联,可以创建一个Indirect Lookup类型字段。

根据我们现在的场景, Account 和 Order,因为Order是外部表,适用于 Indirect Lookup; Order 和 Order Detail 表都是外部表,父是 External,所以只能是 External Lookup。

知道类型以后,我们对表中的字段进行 change type操作,将 Order表中的 customerId字段修改成 indirect lookup类型,关联到account的customer id字段;同理对 Order Detail的orderID字段修改成 External Lookup类型,关联到Order表的order id。

这几个表创建完关联关系,以后,我们需要更改 account以及order的page layout,将related list相关的信息拖出来,既可以在有外键关联的 account的数据的关联列表中查看到 External Object的Order信息以及点进去Order查看到 Order Detail信息。

总结:篇中主要讲了一下Salesforce Connect以及 External Object的简单使用。项目中不一定使用到,但是涉及到大型项目,有这个概念,知道什么场景使用它即可。Salesforce设计很神奇的地方是不同的功能不同的后缀。自定义表 __c, Big Object使用 __b, External Object使用 __x,如果能了解底层的知识一定是一个很奇妙的体验。篇中有错误地方欢迎指出,有不懂欢迎留言。

salesforce零基础学习(九十八)Salesforce Connect & External Object的更多相关文章

  1. salesforce零基础学习(八十)使用autoComplete 输入内容自动联想结果以及去重实现

    项目中,我们有时候会需要实现自动联想功能,比如我们想输入用户或者联系人名称,去联想出系统中有的相关的用户和联系人,当点击以后获取相关的邮箱或者其他信息等等.这种情况下可以使用jquery ui中的au ...

  2. salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见

    项目中,审批操作无处不在.配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随 ...

  3. salesforce零基础学习(八十七)Apex 中Picklist类型通过Control 字段值获取Dependent List 值

    注:本篇解决方案内容实现转自:http://mysalesforceescapade.blogspot.com/2015/03/getting-dependent-picklist-values-fr ...

  4. salesforce零基础学习(八十九)使用 input type=file 以及RemoteAction方式上传附件

    在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取.salesforce 零基础学习(二十四)解析csv格式内容中有类似的 ...

  5. salesforce零基础学习(八十四)配置篇: 自定义你的home page layout

    当我们进入salesforce系统或者切换app后,默认第一个看到的就是home页面.home页面简单的来说可以包括左侧(narrow component)和右侧(wide component)两部分 ...

  6. salesforce零基础学习(八十五)streaming api 简单使用(接近实时获取你需要跟踪的数据的更新消息状态)

    Streaming API参考链接: https://trailhead.salesforce.com/en/modules/api_basics/units/api_basics_streaming ...

  7. salesforce零基础学习(八十一)更改标准字段的label名称(Admin)

    我们在开发中往往需要考虑国际化功能,salesforce 提供了国际化功能,在search部分搜索translate,便可以找到translate部分,从而对需要的进行translate.比如pick ...

  8. salesforce零基础学习(八十六)Ajax Toolkit (VF页面中使用及javascript action使用)

    Ajax Toolkit 参考文档:https://resources.docs.salesforce.com/212/latest/en-us/sfdc/pdf/apex_ajax.pdf 在项目中 ...

  9. salesforce零基础学习(八十八)项目中的零碎知识点小总结(二)

    通过做项目以及群里面的一些大神的聊天,总结一下关于项目中的两个知识点,以后当做参考. 一. 在custom setting中配置集成接口信息后刷sandbox的问题 我们做项目时,经常会遇见和其他平台 ...

  10. salesforce零基础学习(八十三)analytics:reportChart实现Dashboard(仪表盘)功能效果

    项目中经常会用到Report以及Dashboard来分析汇总数据,Dashboard可以指定view as user,如果针对不同的用户需要显示其允许查看的数据,比如  根据role hierarch ...

随机推荐

  1. C++ format 函数

    转载原文链接:https://blog.csdn.net/nowhaha/article/details/38710571 原博主很有心,文字标有颜色,奥利给!  Thanks C++ format ...

  2. C/C++ typedef用法

    原文来源:https://blog.csdn.net/superhoy/article/details/53504472 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同 ...

  3. Springboot应用使用Docker部署

    首先准备好springboot应用,然后打包,我这里已经准备好了一个jar包 然后上传到服务器,准备一个目录用于存放jar包和Dokerfile文件 编写Dokerfile文件 我这里写的很简单,就简 ...

  4. Scala小记(一)

    Scala小记----初识Scala 一,什么是Scale? Scala是一门面向对象的,使用JVM运行的函数式编程语言,(函数式编程语言:指的就是那些将方法或者说是函数来作为参数 进行传递的编程语言 ...

  5. C#与sql进行图片存取

    1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Da ...

  6. python之线程了解部分

    一.死锁(了解) 死锁产生的4个必要条件: 互斥:一个资源同一时刻只允许一个线程进行访问 占有未释放:一个线程占有资源,且没有释放资源 不可抢占:一个已经占有资源的线程无法抢占到其他线程拥有的资源 循 ...

  7. Eclipse4.5 Mars版本安装activiti插件 亲测可用

    Eclipse4.5 Mars版本安装activiti插件 亲测可用 学习使用activiti 在线安装一直,国内的网络真心的是 很苦 啊:在茫茫网络上面找到了很多插件的离线包 终于找到一个可以使用的 ...

  8. 【全网免费VIP观看】哔哩哔哩番剧解锁大会员-集合了优酷-爱奇艺-腾讯-芒果-乐视-ab站等全网vip视频免费破解去广告-高清普清电视观看-持续更新

    哔哩哔哩番剧解锁大会员-集合了优酷-爱奇艺-腾讯-芒果-乐视-ab站等全网vip视频免费破解去广告-高清普清电视观看-持续更新 前言 突然想看电视,结果 没有VIP 又不想花钱,这免费的不久来啦. 示 ...

  9. swoft 使用协程 初试

    控制器访问 /hi /** * @Swoft\Bean\Annotation\Mapping\Inject("UserService") * @var UserService */ ...

  10. selenium基础--登录简单的网站

    import time from selenium import webdriver from lxml import etree from selenium.webdriver import Act ...