本篇参考: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连接器框架开发您自己的适配器。

也可以参考:

salesforce零基础学习(九十八)Salesforce Connect & External Object

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数据可视化的更多相关文章

  1. salesforce Integration 概览(一) 杂篇

    本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 我们在做sales ...

  2. Salesforce Integration 概览(四) Batch Data Synchronization(批量数据的同步)

    本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 前两篇博客讲了一下 ...

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

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

  4. Salesforce Integration 概览(六) UI Update Based on Data Changes(UI自动更新基于数据变更)

    Salesforce用户界面必须由于Salesforce数据的更改而自动更新.这个场景其实在我所经历的项目中用到的不是特别多,因为客户可能直接点击刷新按钮就直接看到了最新的数据,而不是那种一直不刷新然 ...

  5. Salesforce Integration 概览(二) Remote Process Invocation—Request and Reply(远程进程调用--请求和响应)

    本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 我们在项目中,经常 ...

  6. Salesforce Integration 概览(三) Remote Process Invocation—Fire and Forget(远程进程调用-发后即弃)

    本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 我们在上一篇讲了远 ...

  7. python爬虫+数据可视化项目(关注、持续更新)

    python爬虫+数据可视化项目(一) 爬取目标:中国天气网(起始url:http://www.weather.com.cn/textFC/hb.shtml#) 爬取内容:全国实时温度最低的十个城市气 ...

  8. 【Data Visual】一文搞懂matplotlib数据可视化

    一文搞懂matplotlib数据可视化 作者:白宁超 2017年7月19日09:09:07 摘要:数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.但是,这并不就意味着数据可视化就一定因为 ...

  9. 《python for data analysis》第七章,数据规整化

    <利用Python进行数据分析>第七章的代码. # -*- coding:utf-8 -*-# <python for data analysis>第七章, 数据规整化 imp ...

随机推荐

  1. 9、ssh服务详解及优化

    ssh是"secure shell protocol"的简写,在进行数据传输之前,ssh先对练级数据包通过加密技术进行加密处理, 加密后再进行数据的传输,从而确保了数据的安全: s ...

  2. swing设置观感

    1.先获取当前系统支持的观感样式 1 UIManager.LookAndFellInfo[] infos = UIManager.getInstalledLookAndFeels(); 2 3 Str ...

  3. ctf实验吧天网管理系统

    这明显不可能登上的,所以直接看源代码 这里如果不懂得,php中处理哈希值的方式,是只要是0e开头的哈希值,都认为是0,通过输入一个这样的0e开头的字符串,会被php解释成0. 这个可以去在线工具上得到 ...

  4. linux学习之路第八天(linux文件权限详解)

    建议和我上一篇博客一起通读,效果更加 1.权限的基本介绍 通过一张图片解决疑惑(重点) rwx权限详解 rwx作用到文件 1)[r]代表可读(read) :可以读取,查看 2)[w]代表可写(writ ...

  5. VMware中的虚机如何挂载U盘

    1.将U盘插入到宿主机上. 2.在VM Client上,点击宿主机,右键,扫描存储设备(目的是为了发现新USB存储) 3.在需要的虚拟机上编辑配置,添加硬件,添加USB设备(如果不进行以上2个步骤,此 ...

  6. 安装GLPI

    Centos7安装GLPI资产管理软件 系统信息 环境说明 下面的命令可以查看系统的版本信息,本次使用的是centos7 cat /etc/redhat-release uname -a IP地址信息 ...

  7. 使用 Java 和 Maven (JBake) 生成静态网站

    使用 JBake("mvn generate-resources")构建您的静态网站或博客.使用布局.宏和数据文件. 我们迁移了整个www.optaplanner.org网站(13 ...

  8. python使用笔记17--异常处理

    什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常. 异常是Python对象,表示一个错误. 当Pyth ...

  9. C语言typedef的用法详解

    C语言允许为一个数据类型起一个新的别名,就像给人起"绰号"一样. 起别名的目的不是为了提高程序运行效率,而是为了编码方便.例如有一个结构体的名字是 stu,要想定义一个结构体变量就 ...

  10. C语言变量 类型判断

    变量三要素: 一个变量有三个基本的要素,变量的名称,变量的类型,变量的值.所以int a = 10; 变量名为a,变量的存储类型为int型,变量的值为10. 变量还有一些属性如作用范围和存储类型. 变 ...