Salesforce Integration 概览(七) Data Virtualization数据可视化
本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf
Salesforce实时访问外部数据。这样就不需要在Salesforce中保存数据,然后在Salesforce和外部系统之间协调数据。
一.上下文
您可以使用Salesforce跟踪销售线索、管理销售渠道、创建销售机会,并捕获将销售线索转换为客户的订单详细信息。然而,Salesforce不是包含或处理订单的系统。订单由外部(远程)系统管理。但是销售代表希望在Salesforce中查看和更新实时订单信息,而不必学习和使用外部系统。
二. 问题和考虑因素
问题: 在Salesforce中,如何查看、搜索和修改存储在Salesforce外部的数据,而不将数据从外部系统移动到Salesforce中?
考虑因素:当基于这种模式应用解决方案时,需要考虑各种各样的因素:
•是否要在Salesforce中构建声明式/点击式出站集成或UI mashup?
•是否有大量数据并且不想复制到Salesforce组织中?
•是否需要同时访问少量远程系统数据?
•是否需要实时访问最新数据?
•是否将数据存储在云端或后台系统中,但希望在Salesforce组织中显示或处理这些数据?
•在Salesforce中存储某些类型的数据时,您是否有数据驻留问题?
三. 解决方案
|
解决方案 |
适配程度 |
介绍 |
|
Salesforce Connect |
Best |
使用Salesforce Connect访问来自外部源的数据以及Salesforce数据。实时从传统系统(如SAP、Microsoft和Oracle)中提取数据,而无需在Salesforce中复制数据。Salesforce Connect将外部系统中的数据表映射到组织中的外部对象。外部对象与自定义对象类似,只是它们映射到Salesforce组织外部的数据。Salesforce Connect使用到外部数据的实时连接来始终保持外部对象的最新状态。 访问外部对象从外部系统实时获取数据。Salesforce Connect允许您: •查询外部系统中的数据。 •在外部系统中创建、更新和删除数据。 •通过列表视图、详细信息页、记录提要、自定义选项卡和页面布局访问外部对象。 •定义外部对象与标准或自定义对象之间的关系,以集成不同来源的数据。 •在外部对象页面上启用Chatter提要以进行协作。 •对外部数据运行报告(有限)。 •查看Salesforce移动应用程序上的数据。 要使用Salesforce Connect访问存储在外部系统上的数据,可以使用以下适配器之一: •OData 2.0适配器或OData 4.0适配器-连接到任何OData 2.0或4.0生产商公开的数据。 •跨组织适配器-连接到存储在另一个Salesforce组织中的数据。跨组织适配器使用标准的Lightning Platform REST API。与OData不同,跨组织适配器直接连接到另一个组织,而不需要中间web服务。 •通过Apex创建的自定义适配器-如果OData和跨组织适配器不适合您的需要,请使用Apex连接器框架开发您自己的适配器。 也可以参考: |
|
Request and Reply |
Suboptimal |
使用Salesforce web服务API发出特殊数据请求以访问和更新外部系统数据。此解决方案包括以下方法: 使用Salesforce SOAP API。自定义Visualforce页面或按钮以同步方式启动Apex SOAP调用。在Salesforce中,您可以使用WSDL并生成最终的代理Apex类。此类提供调用远程服务所需的逻辑。Visualforce页上用户启动的操作然后调用Apex控制器操作,该操作执行此代理Apex类以执行远程调用。Visualforce页面需要定制Salesforce应用程序。 使用Salesforce REST API。自定义Visualforce页面或按钮以同步方式启动Apex HTTP调用(REST服务)。在Salesforce中,可以使用标准的GET、POST、PUT和DELETE方法调用HTTP服务。可以使用几个HTTP类与RESTful服务集成。Visualforce页上用户启动的操作然后调用Apex控制器操作,该操作执行这些代理Apex类以执行远程调用。Visualforce页面需要定制Salesforce应用程序。 这种操作适用于特殊场景,需要过滤或者需要做数据的格式转换等操作,之所以次优因为需要有沟通、开发以及联调的工作,耗时长,稳定性取决于代码质量等等。 |
四. 流程草图

在这种情况下:
1.浏览器执行一个AJAX调用,该调用依次对相应的外部对象适配器执行一个操作。
2.适配器将操作转换为OData请求,并通过集成层和服务层向远程系统发出HTTP GET请求。
3.远程系统通过集成层和服务层向Salesforce返回JSON响应。
4.将响应从OData转换为外部对象并呈现回浏览器。
五. 其他关键点
|
调用机制 |
描述 |
|
External Objects |
Salesforce Connect将Salesforce外部对象映射到外部系统中的数据表。Salesforce Connect不是将数据复制到组织中,而是按需实时访问数据。即使数据存储在组织外部,Salesforce Connect也能与Lightning平台无缝集成。Salesforce工具可以使用外部对象,例如全局搜索、查找关系、记录源和Salesforce移动应用程序。外部对象也可用于Apex、SOSL、SOQL查询、salesforceapi,以及通过元数据API、变更集和包进行部署。 |
|
Lighting Components or Visualforce Pages |
当远程进程作为涉及用户界面的端到端进程的一部分触发时使用,并且结果必须在Salesforce记录中显示或更新。例如,向外部支付网关提交信用卡支付并立即返回显示给用户的支付结果的过程。由用户界面事件触发的集成通常需要创建自定义Lightning组件或Visualforce页面。 |
六. 常见考题
Given the diagram below, a Salesforce org, middleware, and Historical data store (with 20milIion records and growing) exists with connectivity between them.

Historical records are archived from Salesforce and moved to Historical Data store (which houses 20M records and growing; fine tuned to be performant with search queries). Call center agents use Salesforce, when reviewing occasional special cases, have requested access to view the related historical case items that relate to submitted cases. Which mechanism and patterns are recommended to maximize declarative configuration?
Use ESB tool with Data Virtualization pattern, expose OData endpoint, and then use Salesforce Connect to consume and display the External Object along side with the Case object.
Universal Containers (UC) wants to connect their on-premise ERP system to view Order data in Salesforce. UC is considering a solution to integrate the on-premise system using Salesforce Connect via OData. Which three considerations should an Architect keep in mind when recommending use of Salesforce Connect? Salesforce Connect的优点
Customer wants the ability to query external data using Global Search and reports.
Customer needs to query small amounts of data at any time and display using a related list.
Customer has a large amount of data that they do not want to load into Salesforce.
Customer does not want real-time access to the ERP data and is willing to wait for hourly refreshes.
Customer wants to create a master-detail relationship between Opportunity and the external object.
总结:此种场景针对大数据不能落在SF并且满足需要查看等的需求,还是很好的解决方案。至此所有的集成模式都已经描述完。篇中有错误欢迎指出,有不懂欢迎留言。
Salesforce Integration 概览(七) Data Virtualization数据可视化的更多相关文章
- salesforce Integration 概览(一) 杂篇
本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 我们在做sales ...
- Salesforce Integration 概览(四) Batch Data Synchronization(批量数据的同步)
本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 前两篇博客讲了一下 ...
- Salesforce Integration 概览(五) Remote Call-In(远程操作 外部->salesforce)
本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 本篇博客介绍 Re ...
- Salesforce Integration 概览(六) UI Update Based on Data Changes(UI自动更新基于数据变更)
Salesforce用户界面必须由于Salesforce数据的更改而自动更新.这个场景其实在我所经历的项目中用到的不是特别多,因为客户可能直接点击刷新按钮就直接看到了最新的数据,而不是那种一直不刷新然 ...
- Salesforce Integration 概览(二) Remote Process Invocation—Request and Reply(远程进程调用--请求和响应)
本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 我们在项目中,经常 ...
- Salesforce Integration 概览(三) Remote Process Invocation—Fire and Forget(远程进程调用-发后即弃)
本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 我们在上一篇讲了远 ...
- python爬虫+数据可视化项目(关注、持续更新)
python爬虫+数据可视化项目(一) 爬取目标:中国天气网(起始url:http://www.weather.com.cn/textFC/hb.shtml#) 爬取内容:全国实时温度最低的十个城市气 ...
- 【Data Visual】一文搞懂matplotlib数据可视化
一文搞懂matplotlib数据可视化 作者:白宁超 2017年7月19日09:09:07 摘要:数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.但是,这并不就意味着数据可视化就一定因为 ...
- 《python for data analysis》第七章,数据规整化
<利用Python进行数据分析>第七章的代码. # -*- coding:utf-8 -*-# <python for data analysis>第七章, 数据规整化 imp ...
随机推荐
- 六QT使用mqtt
QT官方的mqtt是qmqtt,头文件是 #include <qmqttclient.h> 官方的文档地址 https://doc.qt.io/QtMQTT/qmqttclient.htm ...
- 【PC桌面软件的末日,手机移动端App称王】写在windows11支持安卓,macOS支持ios,龙芯支持x86和arm指令翻译
面对这场突如其来的变革,作为软件开发者,应该如何选择自己今后的发展方向?桌面软件开发领域还有前景吗? 起源 自从苹果发布m1处理器,让自家Mac支持IOS移动端app运行之后,彻底打破了移动端app和 ...
- keycloak~自定义rest接口
rest资源 对于我们集成keycloak来说,你可能会遇到它没有实现的功能,这时需要对kc进行扩展,资源的扩展是其中一个方面,它需要实现RealmResourceProvider和RealmReso ...
- XCTF csaw2013reversing2
题目描述:听说运行就能拿到Flag,不过菜鸡运行的结果不知道为什么是乱码 一.先运行看看. 果然乱码. 二.查壳 三.是pe文件,可以拖入od和ida进行动态和静态分析. 1.对主函数进行反编译一下. ...
- SwaggerHub 更快,标准化的API设计软件
更快,标准化的API设计 在功能强大且直观的编辑器中设计API,该编辑器旨在提高速度和效率,而不会损失设计一致性. SwaggerHub帮助我们简化了设计和实现API的方式-作为一名架构师,我喜欢良好 ...
- 如何用jmeter监控内存,CPU(1)
要jmeter的运行环境配置好就可以: 打开这个小工具的步骤很简单,如果你已经配置好了Jmeter运行的环境,那么你也就不用去做其他的配置,直接 点击:开始-->运行-->输入cmd--& ...
- Python 的上下文管理器是怎么设计的?
花下猫语:最近,我在看 Python 3.10 版本的更新内容时,发现有一个关于上下文管理器的小更新,然后,突然发现上下文管理器的设计 PEP 竟然还没人翻译过!于是,我断断续续花了两周时间,终于把这 ...
- Http2.0详解
前言 HTTP/1.1协议为现在网络提供了20年的支持.从那时起,网站已经从静态的.文本驱动的文档发展为交互式的.富媒体的应用程序.在此期间底层协议保持不变这一事实正好说明了它的通用性和能力.但随着网 ...
- 【Spring】Spring中的循环依赖及解决
什么是循环依赖? 就是A对象依赖了B对象,B对象依赖了A对象. 比如: // A依赖了B class A{ public B b; } // B依赖了A class B{ public A a; } ...
- .h .cpp区别
首先,我们可以将所有东西都放在一个.cpp文件内. 然后编译器就将这个.cpp编译成.obj,obj是什么东西? 就是编译单元了.一个程序,可以由一个编译单元组成, 也可以有多个编译单元组成. 如果你 ...