Force.com是一个多租户平台,因此每个客户在一个共享的平台上都有自己的环境(组织)。每个环境都包含客户想要存储的数据。然而有时客户可能想在自己的公司的不同Salesforce系统之间共享数据,或是和两个合作伙伴之间可能想分享相关的数据。
Salesforce to Salesforce可以用来创建这种数据共享关系。Salesforce to Salesforce是Force.com平台自身的特性,很容易开启并让合作伙伴之间共享彼此的数据。
本文将介绍如何启用Salesforce to Salesforce,如何在两个不同的环境创建一个连接,以及如何在两个环境中共享数据。
启用Salesforce to Salesforce
在你使用Salesforce to Salesforce(S2S)前,你需要先启用它。而且是双方都需要启用,在你的环境中,以及在你要共享数据的环境中都需开启。系统管理员可以通过设置面板来启用Salesforce to Salesforce,但是需要注意的是,一旦启用,你将无法关闭它。
启用的步骤: Setup -> App setup -> Customize -> Salesforce to Salesforce -> Settings。点击编辑,选择启用,然后点击保存
一旦你已经在环境中启用了Salesforce to Salesforce,你就可以通过发送邀请和另外一个环境建立数据共享关系(后面的部分我们将会将发送邀请的内容)。你用通过修改发件人地址,显示名称以及电子邮件模板来自定义邀请来来个性化的发送邀请邮件。
作为初始设置的最后一步,您需要确保用户有适当的权限来管理S2S连接。特别是在用户的Profile中启用“管理连接”的权限。系统管理员可以创建一个新的Profile,例如“S2S管理”,并将其分配给将管理连接的用户。在较小的公司,系统管理员自己可能会管理连接,在这种情况下,你就不需要创建一个单独的Profile。
建立一个连接
假设现在你的公司以及另外一个公司已经启用了Salesforce to Salesforce。虽然两个公司都已经启用了S2S,但你还是需要在共享前建一个正式的连接。
我们用两个公司来运行这个例子:
1. Acme Corp-这是初始启用连接的公司
2. Appirio-这是接受连接的公司
作为最佳实践,在Acme Corp,创建一个代表能够接收连接的客户(Appirio),然后在Appirio客户下创建一个带有Email地址的联系人。这个联系人是用来发送S2S连接邀请的用户。
为开始使用Salesforce to Salesforce, 你需使用Connections tab.如果你的应用中没有这个tab的话,通过在你的Salesforce右上角点击 My Settings -> Go to Display & Layout -> Customize My Tabs,然后将Connection加入到应用中。在Connection tab,点击新建按钮创建于其他组织的连接。
选择你想要共享的特定客户下的联系人,点击“保存并发送邀请”按钮。邀请邮件将发送给你选择的联系人邮件中。
连接的所有人也需要定义。连接所有人将会接收到所有的邮件提醒,包括当插入或更新记录报错的系统通知。此外连接所有者将会是所有新纪录的所有者,但是他也会被其他的分配规则所覆盖。
在此例子中,当你点击“保存并发送邀请”按钮后,Appiro的系统管理员(Joe Partner) 将会接收到一封邮件。Joe Partner 需要点击邮件中的URL并登录到Salesforce中接收连接邀请。下面是是一个邀请的例子:
一旦登录到 Appirio的环境,系统管理员需要点击接收按钮去开始于Acme Corp共享记录。
一旦要求被接受了,与Acme Corp的连接将被建立,但是还没有对象(标准或自定义)被共享,只有你选择共享的数据才会被共享—这是下一部分我们会主要提到的部分
一旦连接被建立,下一步就是发布和订阅对象。Acme和Appirio都可以发布和订阅对方的对象和字段。
那现在让我们从Appirio发布对象。通过点击Connection tab下的发布按钮,并选择你想要发布的对象。你可以发布大部分的标准对象和所有的自定义对象。我们选择客户,附件,个案,个案备注,联系人。
点击对象旁边的编辑按钮选择哪些字段可以发布到其他的环境中
如下图所示,我们只发布了客户下的一些必要的字段
修改每个对象希望发布的字段。这就完成了Appirio环境的发布设置。现在让我们去其他的环境去订阅这些对象。
接收环境(Acme Org)不能自动访问Appirio发布的数据。如果需要访问的话首先需要订阅这些对象。
登录到Acme Corp并订阅相关的对象。这是通过导航到Connections tab,选择Appirio connection,点击“订阅”。你现在可以看到可以被订阅的对象
另外我们可以看到自动接收的选项。如果这个选项被选择了的话,记录就会从发布的环境自动接收-这个流程将会完全自动完成。如果你不选择这个复选框,那系统管理员将在记录被接受前进行检查。有的复选框无法点击,特别是如果母对象被接受了,子对象也会被自动接受,另外连接对象也不可用此功能。
现在点击保存。这就完成了对象级的映射。现在我们已经定义从Appirio环境中映射了哪些对象到Acme环境中。
现在你需要映射字段。通过点击对象旁边的编辑按钮。现在我们操作下客户对象。
现在将发布环境的客户字段映射到你的环境中
如上图所示,我们已经将所有的字段都映射到接收环境中相应的字段中
现在两个环境都已经设置好了Salesforce to Salesforce,现在让我们看下如何使用这个功能。在两个环境中单向的共享信息是通过源系统发布,目标系统订阅的方式。源系统将作为一个主环境,并会在源系统共享的数据改变的时候覆盖之前共享的数据信息。目标系统所做的更改将都会被主环境所覆盖。
两个环境的双向共享是通过在两个环境中发布和订阅彼此的对象。现在两个环境的数据在任何一次更新后都会同步到彼此的系统中。
在这两种情况下,Salesforce to Salesforce 映射决定哪些字段从一个系统流入到另一个系统,记录可以用两种方式来共享,手动或编程。
客户,联系人以及大部分的标准以及所有的自定义对象可以通过S2S共享到外部,进入到对象的视图中,选择相应的记录并点击forward to Connections.
选择可选的连接以及连接相关的相关对象,保存。
注意只有那些有管理连接权限的用户会看到 "Forward to connection"选项。另外,用户只可以转发所有者是自己或自己下级的记录。系统管理员可以共享任何记录。
当记录被转发后,记录将会自动在的目标环境中创建,前提是已经设置了自动接收已经被启用。如果没有被启用的话,如下图所示,需要系统管理员去进行确认接收的操作。
点击"Accept"接收目标环境的记录
通过Apex编程共享记录
记录可以通过编程的方式共享(通过Triggers, batch process等等)。编程共享的方式提供了更高级别的控制力,下面是一个同过S2S编程的方式共享联系人的一段代码:
PartnerNetworkRecordConnection newConnection =
new PartnerNetworkRecordConnection(
ConnectionId = networkId,
LocalRecordId = newContact.Id,
SendClosedTasks = false,
SendOpenTasks = false,
SendEmails = false,
ParentRecordId = newContact.AccountId);
insert newConnection;
当然,这端代码可以升级为共享多个记录和更复杂的场景,包括lookup和母子关系等。
一个最佳实践是增加"External Sharing" 相关列表到你的业务布局中,去查看外部共享的状态。进入详细页面,然后点击编辑布局
在相关信息项中将"external sharing" 相关列表拖入到页面中,点击保存
总结