Skip to main content

分发升级

学习目标

完成本单元后,您将能够:

  • 列出您可以向客户提供升级的不同方式。
  • 描述您可以用来让客户更轻松地升级的工具。

最新版本,拜托了!

在上一单元中,您了解了软件包版本号,它标识受管软件包的唯一版本。

正如我们提到的,维护产品的不同版本并不是理想的做法。尽量让您的所有客户都使用产品的同一个版本(即最新版本)。这会为每个人提供相同的体验、最新的错误修复和所有最酷的功能。

让我们看看这是如何做到的。

向您的客户推送升级

如果您真的希望您的客户使用产品的最新版本,有一个简单的方法可以确保他们这样做:使用推送升级。在推送升级中,您将产品的最新版本推送给您的客户。他们无需执行任何操作即可完成升级,只需使用新版本即可。

您可以针对主要或次要升级以及新补丁版本使用推送升级。推送升级完成后,客户会在其软件包详细信息页面上看到产品的新版本号。而且,当然,他们还会看到您所有精彩的新功能。

沟通,沟通,沟通

我们希望到目前为止,您已经愿意尝试推送升级了。现在,您可以将这些话告诉您的客户,他们会愿意在获得推送升级之前先对其有所了解!

怎么实现推送升级

以下是推送升级的过程:

  • 您选择一个或多个要进行升级的客户组织。
  • 您选择要在这些组织中安装的应用版本。
  • 您计划在指定日期和时间进行升级。
  • 您跟踪升级的进度。检查升级是否成功完成,如果要重新计划,则中止待进行的升级。

这是一个宽泛的过程梗概。您可以具体决定升级的形式:首先更新哪些组织,以及每个组织会发生什么等。

备注

Salesforce 强烈建议在非高峰工作时间进行推送升级。

权力越大,责任越大

推送升级为您提供控制权。您可以分发任何内容,从简单的补丁到应用程序的大修。您可以升级单个客户或所有客户。

如果正确执行,推送升级可以做到无缝完成,每个人都能得到新版本并使用。如果执行不当,那……每个使用计算机的人都知道拙劣的升级是什么样的。

运用您的判断。如果您要添加大量功能或组件,请考虑影响:

  • 这些组件是否适用于现有安装?
  • 您的升级是否会干扰常用的自定义?
  • 您的升级是否以破坏性的方式修改了客户数据?

新功能易于管理。在您发布升级之前,没有客户会使用它们。现有功能比较棘手。尽量保持原有的工作方式,以便客户保持高效。

Salesforce 合作伙伴需要特殊权限才能推送升级。要请求访问,请在 Salesforce 合作伙伴社区(需要登录)登记一个支持个案。 

自动化细节

升级比全新安装更棘手,因为它们会对现有系统进行更改。谁知道客户组织中发生了什么?

有时您需要进行安装后工作,即在安装后执行的任务。例如,您可以修改客户数据以适应更新的公式或修复不一致。利用 Apex 元数据,您甚至可以在向软件包中添加自定义字段时更新页面布局。

Salesforce 允许您为安装后工作编写一个 Apex 类。该类会在您的升级安装到组织中后执行其工作。

这样的类是什么样的?这里有一个简单的例子:

global class PostInstallClass implements InstallHandler { 
global void onInstall(InstallContext context) { 
if(context.previousVersion() == null) { 
// This means the package is being installed for the first time // 
Perform required activities for the first time install Account a = new Account(name='NewAccount'); 
insert(a); 
} 
else if(context.previousVersion().compareTo(new Version(1,0)) == 0) { // 
This means the previous version is 1.0
} if(context.isUpgrade()) { 
// This means the package is getting upgraded // 
Perform required activities for package upgrades } 
if(context.isPush()) { 
//This means the package is getting pushed //
Perform required activities for push upgrades
} 
} 
}

每个新的 Apex 类都需要一个测试类,所以我们的示例中也有一个:

@isTest 
static void testInstallScript() { 
PostInstallClass postinstall = new PostInstallClass(); 
Test.testInstall(postinstall, null); 
Test.testInstall(postinstall, new Version(1,0), true); 
List<Account> a = [Select id, name from Account where name ='NewAccount']; 
System.assertEquals(a.size(), 1, 'Account not found'); 
}

使用 Test 类的 testInstall 方法来测试您的 PostInstall 类。该方法中包括什么?由您来决定!

深思熟虑的自动化

自动化在正常工作时很棒。请考虑如何最好地将其与现有功能和新功能结合使用。

要增强现有功能,请使用安装后类自动将功能组件的任何新权限分配给现有用户。这样,每个人都可以不间断地继续使用该软件包。

不要使用安装后 Apex 脚本为新功能自动分配组件权限。相反,要提醒客户管理员注意这些功能,让他们制定详细信息。

计划升级

现在您已经定义了升级,是时候进行计划了。谁获得升级,何时升级?

使用 SOAP API 计划升级

SOAP API 允许您以编程方式计划和控制升级,并跟踪其进度。使用 SOAP API,您可以:

  • 通过 SOQL 查询查找使用您的软件包的客户
  • 为这些客户计划推送升级
  • 监控升级状态,并检查错误

API 为您部署升级提供了足够的灵活性。例如,您可以创建一个 Web 表单,允许客户升级到新版本。单击表单上的按钮可以为这些客户计划推送升级。

我们不在这里介绍如何使用 SOAP API,因为它涉及更多内容。第二代受管软件包开发人员指南概述了如何计划自己的推送升级。

唯一不变的就是变化

当您开发软件时,事情会发生变化。错误得到修复,功能得到添加,算法和结构不断发展。您已经在自己的开发团队中应对过改变。现在您已经了解了如何将这些更改交付给您的客户。

使用这些工具为您的客户提供及时、无缝的更新。作为 Salesforce 客户,他们期待获得软件即服务的所有优势。遵守 SaaS 承诺,您就可以让他们感到满意。

资源

在 Salesforce 帮助中分享 Trailhead 反馈

我们很想听听您使用 Trailhead 的经验——您现在可以随时从 Salesforce 帮助网站访问新的反馈表单。

了解更多 继续分享反馈