学习目标
- 解释Salesforce如何帮助您在不中断客户的情况下提供更新。
- 列出可以向客户提供升级的不同方式。
- 描述可用于使客户更容易升级的工具。
最新版本,请!
在最后一个单元中,您了解了软件包版本号,该软件包标识了托管软件包的唯一版本。
相同包的不同版本可以是不同的。应用程序中的主要版本更改可能会大幅改变其行为。即使是轻微的版本更改也可以在后面修改几件事情。软件包版本号帮助您通过强制您考虑更改对他们的影响来保护您的客户免受破坏性更改。
正如我们所提到的,维护您的产品的不同版本并不理想。尽量让您的所有客户都保留在您的产品的单一版本(最新版本)上。这为每个人提供了相同的体验,最新的错误修复以及所有最酷的功能。
让我们看看如何完成。
推动升级给你的客户
如果您真的希望您的客户使用您的产品的最新版本,有一个简单的方法可以确保他们:使用推送升级。在推送升级中,您可以将最新版本的产品推送给客户。他们不需要做任何事情来完成升级 – 他们只要使用新版本就可以完成升级。
您可以对升级(主要或次要)和补丁使用推送升级。推送升级完成后,客户会在其产品的“包装详细信息”页面上看到新的版本号。当然,他们也会看到你所有的酷炫新功能。
沟通,沟通,沟通
我们希望到现在为止,我们已推销推送升级。现在您可以将这个词传递给您的客户 – 他们当然希望在获得它之前了解即将推出的推送升级!
在升级中,与大多数活动一样,通信至关重要。有关管理预期和最小化影响的一整套指导方针,请查阅ISVforce指南。
如何成为推手
以下是推送升级的工作原理:
- 您选择一个或多个客户组织进行升级。
- 您选择要在这些组织上安装的产品版本。
- 您计划给定日期和时间的升级。
- 您可以跟踪升级的进度。检查它是否成功完成,或者如果要重新计划,请中止待定的升级。
这是高层次的观点。您可以决定升级如何工作 – 哪些组织会先更新,以及每个组织会发生什么情况。
拥有权利的同时也被赋予了重大的责任
推送升级可以让您控制。您可以分发任何内容,从简单的修补程序到对产品进行大修。您可以升级单个客户或全部客户。
正确完成,推送升级可以无缝 – 每个人都可以获得新版本并使用它。做得不好,呃……每个使用电脑的人都知道一个拙劣的升级是什么样的。
使用你的判断。如果您添加了许多功能或组件,请考虑影响:
- 这些组件是否适用于现有的安装?
- 您的升级是否会影响常见的定制?
- 您的升级是否以破坏性的方式修改客户数据?
新功能易于管理 – 您的客户在升级之前不会使用它们。现有的功能更棘手。尝试保持事物的运作方式,让您的客户保持高效。
AppExchange合作伙伴需要特殊权限才能推送升级。在Salesforce合作伙伴社区中记录案例以请求推送主要升级和修补程序权限。
大国不是绝对权力
推送升级有其局限性:
- 升级的权限集不包含选项卡可见性设置。
- 安装后无法自动激活远程站点设置。
当您计划部署时,请牢记这些 – 您必须与客户协调这些类型的升级。
自动化细节
升级比全新安装更复杂,因为它们会对现有系统进行更改。谁知道客户组织中发生了什么?
有时您需要在安装后执行安装后的工作任务。例如,您可以修改客户数据以适应更新的公式或解决不一致问题。使用我们新的Apex元数据API,您可以在向包中添加新的自定义字段时更新页面布局。
Salesforce允许您为安装后工作编写一个Apex类。在升级安装到组织中后,此类将执行其工作。
这样的班级是什么样的?这里有一个简单的例子:
global class PostInstallClass implements InstallHandler {
global void onInstall(InstallContext context) {
if(context.previousVersion() == null) {
//这意味着该软件包是第一次安装
// 执行首次安装所需的活动
Account a = new Account(name='NewAccount');
insert(a);
}
else if(context.previousVersion().compareTo(new Version(1,0)) == 0) {
// 这意味着以前的版本是1.0
}
if(context.isUpgrade()) {
// 这意味着软件包正在升级
// 执行包升级所需的活动
}
if(context.isPush()) {
//这意味着该软件包正在被推送
//执行推送升级所需的活动
}
}
}
@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');
}
周到的自动化
自动化在工作时很棒。考虑如何最好地使用它与现有的和新的功能。
要增强现有功能,请使用安装后类自动将功能组件的任何新权限分配给现有用户。这样,每个人都可以不间断地使用软件包。
不要使用安装后的Apex脚本为新功能自动分配组件权限。相反,请提醒客户管理员注意这些功能,并让他们弄清楚细节。
安排您的升级
现在您已经定义了升级,现在是时间安排了。谁获得升级,什么时候?您可以交互式部署升级,或使用企业API自动升级客户。
以交互方式安排推送升级:
- 登录到您的包装组织。
- 从“设置”中,在快速查找框中输入软件包,然后选择 Packages.
- 选择要推送的托管软件包的名称。
- 在Package Details页面上,选择Versions并点击Push Upgrades。
- 点击 Schedule Push Upgrade.
- 从 Patch Version 选择列表中选择一个软件包版本。
- 如果要安排开始日期,请在“计划开始日期”字段中输入日期。
- 在“选择目标组织”部分中,选择要升级的组织。您已经升级的组织不会出现在此列表中。点击 Schedule.
使用过滤器来选择要更新的组织列表。您可以通过以下方式过滤orgs:
- 他们的部分或全名,或通过组织ID
- 无论他们是沙箱还是生产组织
- 他们已安装的软件包版本
使用企业API调度升级
当您根据各种规则和过滤器一次升级很多客户时,交互式调度变得困难。 Enterprise API允许您以编程方式安排和控制升级,并跟踪他们的进度。通过企业级API,您可以:
- 使用SOQL查询查找使用您的软件包的客户
- 计划推送升级到这些客户
- 监视升级状态,并检查错误
该API为您部署升级提供了充分的灵活性。例如,您可以创建一个允许客户升级到新版本的Web表单。点击表单上的按钮可以安排这些客户的推送升级。
我们在这里没有描述如何使用企业级API–它涉及更多一点。 ISVforce指南有详细的步骤和代码示例,您可以使用它们来安排自己的推送升级。
跟踪更改
在您向客户发送更新时,您可以跟踪已经拥有最新版本软件包的用户。要查找收到推送升级的客户,请执行以下操作:
- 从您的开发组织中,单击 Setup.
- 在快速查找框中输入软件包并选择Packages.
- 点击包装的名称,然后点击 Push Upgrades.
- 单击目标的名称以查看“推送升级历史记录”页面。
- 此页面包含有关推送升级的信息:其状态,任何计划开始日期,完成需要多长时间等等。
- 导航到组织部分,其中显示了所有要升级的组织的列表。
- 使用搜索框将组织过滤到您要搜索其升级状态的客户列表。
要筛选组织,请在搜索框中输入一个表达式。搜索部分或全部组织的名称或完整的组织ID。您还可以使用选取列表按推送升级的状态进行搜索。
改变:唯一不变
当你开发软件时,事情就会改变。 错误得到修复,功能被添加,算法和结构发展。 您已经在自己的开发团队中处理了更改。 现在您已经看到了如何将这些更改提供给您的客户。
Salesforce可以帮助您:
- 通过为您提供两种机制来实现它们来构建您的更改:修补程序和升级
- 通过合理的版本编号系统管理客户对变更的期望
- 通过推送升级保持客户最新状态,从而简化维护工作
使用这些工具为您的客户提供及时和无缝的更新。 作为Salesforce的客户,他们期望软件即服务的所有好处。 保持SaaS的承诺,你可以让他们高兴。