安全审查(2)安全战略

学习目标

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

  • 确定你的团队中谁负责安全。
  • 列出将帮助您学习开发安全软件的资源。
  • 描述在开发产品时何时考虑安全性。

安全需要所有权

贵公司有关谁可以访问哪些信息的规则。当你今天来工作时,也许你使用钥匙或徽章进入办公室。您可能知道邀请家人和供应商参观的程序。希望你不会经常目睹整个陌生人在周围徘徊,但如果发生了,你就知道该怎么办了!

具体人员负责制定和执行这些规则。有时候甚至有一位负责人像首席安全官那样拥有一个特别的头衔。那个人一直在想你公司信息的安全性。

谁拥有产品的安全性?

您的应用或组件中的客户数据也需要保护,就像公司中的信息一样。你的开发团队是否有首席安全官?

诚然,安全是每个人的责任,但开发人员是忙碌的人,事情可能会因为准备好产品市场而忙碌。为确保安全仍然是重中之重,请考虑为您的团队任命安全倡导者。安全倡导者是您的团队的首席安全官,他们始终都在考虑产品的安全性。

学习编写安全代码

在让团队考虑安全性之后,下一步就是要了解有关构建安全软件的更多信息。有几种可用的资源,其中一些我们在最后一个单元中提到过:

资源 它提供什么
开放Web应用安全项目(OWASP)前10名列表 最常见的网络应用程序漏洞列表
CRUD和字段级安全 Salesforce中的记录级别和字段级别权限
Salesforce安全编码指南 安全审计中常见的一系列网络安全缺陷
Salesforce安全要求清单 技术和产品类型解释的问题

弄脏你的手

如果您真的想要安全编码的全面培训,请查看Develop Secure Web Apps踪迹。它提供了各种Web应用程序漏洞的详细说明和交互式示例。您还可以实时利用每个漏洞并修改源代码以防止它受到影响。

每个人都有责任

您的安全倡导者可以成为您团队的资源,但请记住,安全是每个人的责任。您的开发人员对这些问题越熟悉,他们在解决这些问题时就越好。

安全是关键功能,而不是附加组件

嘿,你正在编写的应用听起来很棒!尽管如此,世界在它启动之前不会看到它。什么时候准备好了?

没有人希望成为产品与其发布之间的一员。你的销售和营销团队不喜欢意外的延迟,他们不会让你忘记它。所以想象一下,如果您的发布日期因为Salesforce产品安全团队发现漏洞而被推回,那么情况会如何紧张。如果这是一个小问题,很容易解决。但是,如果由于基本的安全漏洞而必须回去改变设计,那么您将面临额外的工作,并可能导致很长的延迟。

考虑每个发展阶段的安全性

无论您使用什么方法编写软件,都要确保您的团队从一开始就考虑安全问题。在开发的每个阶段应用安全设计模式和编程实践,并测试您的应用程序是否受到攻击。在整个开发过程中,您可以采取以下几项措施来提高安全性:

  • 设计:最好的错误是你不必修复的错误。没有好的软件设计的替代品,安全的设计每天都会打败不安全的设计。请注意您希望用户如何与功能交互,并确保识别相关的漏洞。然后定义突出显示这些漏洞的特定用例。
  • 实施:如果您每天都有Scrum,请让您的安全倡导者与团队成员一起参与安全的编码策略。代码评论是讨论安全问题的另一个重要论坛。将安全编码指南纳入您的编码风格指南。 (你有一个风格指南,是吗?)
  • 测试:您需要一个特定的计划来测试您的产品的攻击漏洞。设计测试,以便它们具有可重复性,并在应用程序的整个开发过程中一致地应用它们。

要全面了解网络安全和测试,请查看OWASP测试指南。它可以帮助你把自己的计划放在一起。

保护整个产品

当我们谈论构建安全产品时,我们的意思是整个事情。 这包括生活在我们平台之外的部分,比如您在Salesforce之外托管的组件或服务。 别忘了将您可爱的原生移动应用包含在您的安全计划中。 他们也需要保护。

记得:

  • 攻击者只需要一个无人防守的入口点就可以毁掉你的一天。 还是一个月。 一致的安全策略可帮助您创建防弹产品。
  • 安全是每个人的责任,但您可以通过拥有安全拥护者来帮助您的团队记住它。
  • 您的团队可以使用我们提供的交互资源了解安全软件开发。
  • 每个发展阶段都有自己的安全考虑。

安全审查(1)理解安全性

学习目标

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

  • 描述你的产品的安全性危害。
  • 解释安全审查的商业价值。
  • 描述最常见的网络漏洞。
  • 识别独特的Salesforce安全问题。

我们重视您的合作关系

作为Salesforce的AppExchange合作伙伴,您选择通过我们的平台进行创新,为我们的所有客户创造出优质的产品。您的创新激励着我们,您的合作关系对我们的持续成功至关重要。

在Salesforce,我们的最高优先级是我们客户的信任。正如Salesforce联合创始人兼技术执行副总裁Parker Harris所说:“对我们公司而言,没有什么比我们客户的隐私数据更重要。”信任需要安全。

互联网时代的安全

你有没有听到这个消息?黑客利用最新的安全漏洞成功攻击了一家大公司。成千上万的私人客户记录被盗,包括个人和财务信息。作为回应,该公司承诺为受影响的每个人支付3年的信用保护费用。你收到他们的来信吗?

每周我们都会听到这样的故事。也许你或你认识的人甚至收到了其中一家公司的来信。我们看到有关勒索软件危害医院病人或扰乱公共交通的新闻报道。攻击者窃取公司内部文件并将其出售给竞争对手。这些事件变得非常频繁,我们现在几乎期待他们。

根据Ponemon研究所的研究,不安全的软件每次事件的平均成本为400万美元。根据战略与国际研究中心(CSIS)的另一项调查,美国公司每年共同为网络犯罪损失1000亿美元。

Insecure software costs businesses a lot of money

没有安全,没有信任

这使我们重新回到了信任,Salesforce的头号价值。以前的数据意在考虑重建客户信任的间接成本,但信任本身很难量化。

Salesforce通过说服企业客户将其数据存储在云中来改变商业世界。起初这是一项艰难的销售,因为这些客户中有许多担心数据的安全性。但是经过多年的创新,建立客户的信任,并且一次又一次地成功,Salesforce证明了云计算是最好的商业平台。

在Salesforce,我们客户的成功就是我们的成功 – 而您的成功就是我们的成功。 Salesforce客户通过订阅模式购买我们的服务。如果他们不能相信我们和你 – 以保护他们的数据,他们没有理由坚持!

安全需要承诺

作为Salesforce合作伙伴,您有一个优势:您正在Salesforce平台上构建应用程序。我们在我们的平台中构建安全性,以便您不必从头开始。但是,我们依靠您使用该平台以保护客户数据的方式构建应用程序。为了帮助您,Salesforce安全团队在对AppExchange进行绿色照明之前,对所有产品进行严格审查。

对于我们的AppExchange合作伙伴来说,通过安全审查需要进行规划和努力,但收益非常可观。通过等级表明您对客户的承诺,并为您的产品增加真正的价值。客户知道AppExchange上的任何产品都可以为他们的数据提供最高级别的保护。

帮助我们帮助你

在Salesforce,我们为保护客户数据发挥的作用感到自豪。我们知道数据安全是团队努力。因此,我们为您提供实施安全所需的工具,您可以依靠它们来构建安全的产品。

学会识别和消除威胁

Salesforce安全审查侧重于应用程序对最常见攻击的漏洞。产品安全团队通过一系列这些攻击来触发您的应用。他们尽最大努力获得产品中宝贵的数据。如果他们不能入侵,你通过审查!

在本单元中,我们向您提供有关如何在AppExchange上列出的应用程序中毫发无损的内部信息。

十大网络安全威胁

开放式Web应用程序安全项目(OWASP)包含最常见Web攻击的综合列表。前三项是:

  • Injection: 查询将错误数据发送到系统以尝试造成损害。
  • Session hacking: 攻击者通过截取证书获得进入安全会话的入口。
  • Cross-site scripting: 应用程序将未验证的数据传递给Web浏览器,允许恶意代码运行。

要通过安全审查,您必须保护您的应用免受OWASP列表中的这些和其他攻击。使用该列表作为指导,在您的应用程序中开发最低级别的安全性。要了解有关这些恶意攻击的更多信息,请查看Develop Secure Web Apps踪迹。

特定于Salesforce的安全性

Salesforce平台的独特安全功能之一是CRUD / FLS:创建/读取/更新/删除和字段级安全。此功能(在此详细描述)决定谁可以访问单个组织中的单个对象和字段。由于CRUD / FLS与对象在应用中的交互方式有关,因此在设计应用时必须考虑它。

做对,没有人会注意到

花时间设计和开发出色的功能是很有意义的。你的销售人员肯定会重视这一努力,因为它使你的产品易于销售。当然,您的客户会欣赏这一努力,因为他们可以享受这些结果。

安全工作并不那么高调和富有魅力。尝试与客户讨论SSL或MD5哈希,并注视他们的眼睛。如果你喜欢为自己的工作获得赞誉,那么很难为加强产品安全性而感到兴奋。因为当你做好你的工作时,没有人注意到。

但不要让这阻止你。我们都知道,任何阻止攻击者的人都是超级英雄。您的客户可能永远不知道您投入了多少工作。但他们会感谢您为您的业务提供的服务 – 并向其他人推荐您的应用。这不是那些最好的赞美吗?

在下一个单元中,我们将向您介绍如何创建构建安全应用程序的计划。

应用程序部署(4)测试应用程序

学习目标

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

  • 列出使用Apex时的测试覆盖率要求。
  • 描述创建AppExchange应用程序时要执行的特定测试。
  • 列出您的测试必须解决的安全漏洞类型,以通过安全审查。

测试和您的AppExchange应用程序

要明确,我们知道你知道测试的重要性。在本单元中,我们将探讨一些关于测试的特定于Salesforce的标准,更重要的是针对您的一些AppExchange测试需求。

Apex测试框架

Apex拥有内置的测试框架,这是任何开发人员的必备工具。 Salesforce还需要使用框架来确保没有代码占用其资源份额。

一个基本要求是您的测试必须至少覆盖包装中所有Apex代码的75%。不过,我们建议您尽可能接近100%覆盖率。您可以在Apex开发人员指南的Apex Testing Trailhead模块或了解Apex测试部分了解其他要求。每当你上传一个包时,所有的测试都会运行。如果即使一次测试失败,上传失败。

平台陷阱

有一些糟糕的编码习惯,你可以在单个组织中摆脱困境,但它们会导致AppExchange应用程序失败。一些最常见的“陷阱”是硬编码值的结果。特别是,从来没有硬编码:

  • 记录在整个组织中唯一的ID
  • 引用客户可以更改的值,如选取列表值或记录类型名称

还要考虑到你的客户可能正在使用平台加密。记录您在应用程序中依赖的标准对象的标准字段。如果您想支持使用平台加密的客户,请测试您的应用在这些字段是否加密时不会中断。然后,您可以将您的应用标记为支持AppExchange上的加密字段。查看我们的帮助和培训文档的平台加密部分了解更多信息。

日常测试

我们建议您采用每日合并所有代码的标准做法,以确保修改和添加不会破坏现有代码。

我们建议您设置一个源代码管理系统(1),开发人员可以在其中检查他们创建或修改的元数据文件。然后将源代码管理系统中的元数据每天推送到一个普通合作伙伴开发人员组织(2),并针对该应用运行自动化测试。

Diagram with developer orgs feeding to source control feeding to a single developer org
开发者组织将饲料供应给单一开发者组织的源控制
在开发任何一款软件时,请确保您的测试验证:

  • 您的Apex代码正常工作,通过所有测试并符合测试要求。
  • 您的自定义UI会按照您的预期显示和反应。
  • 您的业​​务逻辑符合要求,不会做任何额外的事情。

预发布包测试

由于您将应用分发给软件包中的客户,因此为AppExchange合作伙伴发布测试包括测试处于打包状态的应用。您希望确保软件包的安装正确,并且安装后所有功能都按预期工作。

一些组件,例如审批流程,无法打包。记录任何所需的配置或设置,并在作为测试的一部分时包括查看这些说明。

在您发布软件包的后续版本时,测试包括确保现有客户可以安装新版本的应用程序。验证新版本是否同时适用于新鲜组织和已安装以前版本的组织。

托管测试版 – 软件包

对于初始软件包测试,首先使用托管Beta版软件包。当您的应用程序处于测试版软件包中时,您可以进行任何类型的更改。

使用beta包的流程看起来像这样。

  1. 将来自源代码管理系统的更改推送到您的测试版包装组织。
  2. 创建托管测试版 – 包含您的应用的软件包。
  3. 上传软件包。
  4. 在测试组织中:
    1. 安装软件包并进行测试。
    2. 如果发现问题:
      1. 卸载测试组织中的软件包。
      2. 在测试版包装组织中更新您的应用,并在必要时编辑您的包裹内容
      3. 返回到第2步。
    3. 如果没有问题发生并且开发完成,是时候转向一个托管 – 发布的包。

请注意,在构建和测试周期中,您将卸载测试版软件包并在测试组织中安装新的测试版软件包。 Beta软件包不可升级,因此您无法将一个版本的Beta软件包安装在另一个版本上。有关更多信息,请参阅卸载软件包和安装软件包。

注意这个命名空间

打包应用程序后,请确保您检查了您是否正确使用了名称空间。应用程序中对组件的JavaScript引用不会自动使用程序包的名称空间进行更新。验证所有涉及JavaScript的自定义,无论是在Visualforce页面还是在Lightning组件(使用JavaScript)中,都仍然正常工作。

保证安全

在AppExchange上发布您的应用程序之前,它必须经过安全审查。在整个开发周期中解决安全问题,如需求清单中所述。

清单包括以下项目:

  • 您的代码尊重由组织的Salesforce管理员指定的字段级别和对象安全性。请特别关注此主题,因为它会导致在安全审查期间标记许多应用程序。
  • 您已编写JavaScript和HTML以防止跨站脚本攻击(XSS)攻击。
  • 在平台上传输数据和从平台传输数据以及将平台上的敏感信息(例如登录证书和客户数据)存储在外时,您已经实施了加密。

安全审查包括针对您的应用运行多个测试。您可以在提交应用程序之前运行一些测试。将它们合并到您的测试周期中。

包装和客户修改

当您上传您的软件包时,您可以设置客户组织必须满足的软件包和对象要求才能成功安装您的应用程序。如果您不知道在这里选择什么,请不要担心。它带有经验,而且风险很低 – 通常情况下,默认值都很好。

Screen with package requirements
Screen showing object requirements

一些值是基于你的软件包中的内容自动启用的。验证此列表是否具有适用于您的应用的正确值,以便在安装该软件包时不会发生错误。

例如,可以自动选择与Chatter相关的组件或社区。如果客户的组织禁用了这些功能,则尝试安装您的软件包失败。

托管 – 发布的软件包

当您认为您的应用在打包状态下无缺陷时,现在可以在您的测试版打包组织中创建托管 – 发布的软件包了。你如何创建一个发布的包?这只是您上传包装时的一个选项。

Screen with radio button to create Managed - Released package

然后通过一轮测试发送包裹。

现在是时候把它的应用程序包装在它的金色包裹里了

当一切都很好时,就该使用金色包裹组织了。

  1. 使用迁移工具将您的应用程序移至您的黄金包组织。
  2. 设置您的面向客户的名称空间。
  3. 打包你的组件。
  4. 创建您的托管 – 发布的软件包。
  5. 然后,是的,再做一轮测试。

完成所有工作后,现在是时候发送应用以进行安全审查。在您的应用程序通过安全审查后,该出售了。

概要

平台上的大多数测试都遵循标准的最佳实践。测试确定您已经:

  • 满足功能要求
  • 书面测试来验证你的代码
  • 解决了安全漏洞
在测试一个包时,请验证:

  • 外部代码正确引用名称空间
  • 安装说明
  • 包和对象要求

你做到了!您现在知道使用AppExchange合作伙伴工具开发应用程序的所有基本知识。出发。学到更多。写那个惊人的应用程序

应用程序部署(3)打包

学习目标

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

  • 列出命名空间的关键功能。
  • 描述为AppExchange合作伙伴使用托管 – 发布的软件包的好处。
  • 描述安装Managed-Beta软件包与Managed-Released软件包的影响。

Package里有什么?

一个包是用于组件的容器,例如Java JAR文件或Ruby GEM,用于将应用程序分发给客户。它包含一组具有唯一名称空间的元数据。一个软件包可以包含像个别组件一样小或与一组相关应用程序一样大的东西。

Salesforce平台就其本质而言鼓励一种敏捷开发模型,在该模型中,您可以逐步进行测试,并随时调整设计。 Managed-Beta软件包支持这种测试和修改方法。

托管 – 发布的软件包用于实时产品。您的客户期望一个稳定的应用程序随着时间的推移而不断发展,而不会破坏他们在其之上构建的业务流程。托管 – 发布的软件包有助于确保您不会破坏客户的定制并为您的知识产权提供保护。

管理发布的软件包的优点

托管 – 发布的软件包提供:

  • Apex的知识产权保护
  • 内置对API可访问组件的版本支持
  • 能够分支和修补以前的版本
  • 能够无缝地将补丁和主要更新推送给订户
  • 所有组件的唯一命名以确保无冲突安装
  • 能够通过许可证控制用户访问

客户组织中的包生命周期

我们来看看您的应用程序的打包和分发生命周期。

  1. 您在托管 – 发布的软件包中发布您的应用的第1版。
  2. 客户安装包装。
  3. 客户定制您的应用程序。
  4. 您在托管 – 发布的软件包中发布您的应用的第2版。
  5. 客户在现有软件包的顶部安装新版本的软件包。

我们说一个托管 – 发布的软件包是可升级的,因为客户可以在他们现有的版本上安装新版本。非托管软件包(合作伙伴通常不使用)和托管 – Beta软件包不可升级。

Salesforce平台具有高度可定制性,您的客户可能会定制您的应用。当您发布新版本时,它们取决于应用程序的一定程度的一致性,以使其定制不会中断。

托管 – 发布的软件包具有内置的安全措施,可以最大限度地减少新版本的影响。例如,您不能删除已提供给客户或对象的Apex方法。有关更多详细信息,请参阅ISVforce指南中的“托管软件包中可用的组件”部分。

创建一个简单的应用程序来打包

我们将在此打破我们自己的规则,并在创建包的同一组织中设置一个简单的应用程序。您只能在合作伙伴开发版(PDE)或Developer Edition组织中创建软件包。因此,请使用我们在最后一个单元中创建的PDE组织。

让我们通过创建一个世界上最简单的应用程序来完成一些实践包装的步骤。我们将创建一个显示自定义对象的单页应用程序。

  1. 转到设置菜单。
  2. 在Lightning Platform主页上,单击 Add App.
  3. 如下填写App Quick Start页面。
    字段
    App Trail Tracker
    Label Trail
    Plural Label Trails
    Screen of app quick start
  4. 点击 Create.
  5. 点击 Go To My App

而已。让我们试试这个应用程序。

  1. 点击 New.
  2. 对于Trail名称,输入 AppExchange Partner Basics.
  3. 点击 Save.

您已经使用您的应用创建了一条记录。十分简单。

包和命名空间

对于所有AppExchange应用程序和一些OEM嵌入式应用程序,客户将您的应用程序安装在具有自定义设置的现有组织中。考虑以下情况。

  • 客户已经使用API​​名称Vendor__c创建了一个自定义对象。
  • 您的应用有一个API名称为Vendor__c的自定义对象。

将安装您的应用程序覆盖您的客户的对象?不,谢天谢地。命名空间将我们从命运中解救出来。

为了防止冲突,托管包总是有一个名称空间。命名空间在Salesforce中是唯一的,因此托管软件包的安装不会与客户和其他合作伙伴所做的自定义设置相冲突。

开发组织只能有一个名称空间。您只能使用该名称空间创建一个包,但可以对该包进行更新并发布新版本。

命名空间如何被添加到您的应用程序?

当您在组织中创建名称空间时,它将附加到组织中的每个组件。如果您在该组织中创建了一个包,则添加到包中的每个组件都随附该命名空间。以下自定义对象显示(1)组织具有命名空间TrailApp_Test1,以及(2)Trail对象的API名称是TrailApp_Test1__Trail__c。

Screen showing Namespace Prefix and API Name using namespace

但是,添加名称空间时,Salesforce不会更新非Salesforce工件,如JavaScript,其中包含对对象或字段的引用。您必须自己更新这些参考。

选择一个名字空间

因为名称空间是唯一的,所以首先为你的黄金包org选择名字空间。您的客户会看到您用于上传到AppExchange的包的名称空间。如果您的公司名称是AW Computing,则需要命名空间,如awc或awcomputing。

不要在您的测试版包装组织中使用该名称空间,因为那么它不适用于您的黄金包组织。

创建一个名字空间

让我们创建您的名称空间,以便您可以打包您的应用程序。

注意

Trailhead不支持命名空间组织,因此请确保您正在开发新版开发人员版或合作伙伴开发人员版组织。如果您在用于完成Trailhead挑战的组织中创建名称空间,那么您将无法使用它获得新徽章。

  1. 从安装程序中,在快速查找框中输入软件包,然后单击 Packages.
  2. 在页面的开发者设置部分,点击 Edit.
  3. 要确认您要设置命名空间,请单击 Continue.
  4. 为名称空间前缀输入一个值。请记住,不要使用稍后可能要使用的名称。
    Screen for setting up namespace
  5. 点击 Check Availability. 重复步骤4和5,直到找到可用的名称空间。
  6. 点击 New.
  7. 点击 Review My Selections.
  8. 点击 Save.

软件包和测试

使托管 – 发布的软件包成为销售和发布应用程序的最佳选择的因素也使得它成为测试的不好选择。将某些组件添加到托管包后,您无法修改它们。比方说,在开发应用程序时,您会创建四个自定义对象,Larry,Curly,Moe和John。当你去测试你的应用时,你决定约翰是不必要的。抱歉!如果对象John在您的托管 – 发布包中,则无法删除它。

为了解决这个问题,我们提供了Managed-Beta软件包。 Beta软件包的组件可在您的软件包组织中编辑,直到创建一个托管 – 已发布的软件包。

注意

您只能在沙箱或Developer Edition组织或通过环境中心创建的测试组织中安装测试版软件包。

创建一个Managed-Beta包

继续并按照以下步骤创建您的Managed-Beta软件包。
  1. 如果您不在软件包页面上,请从安装程序中,在快速查找框中输入软件包,然后单击 Packages.
  2. 在Packages部分中,单击 New.
  3. 对于Package Name,输入 Trail App.
  4. 选择托管复选框以启用该选项。出现提示时,单击 OK.
    Screen showing creating managed package
  5. 点击 Save.
  6. 在“组件”子选项卡中,单击 Add.
  7. 选择 Trail Tracker 应用程序,然后点击 Add to Package. 请注意,包中添加了几个相关组件。
  8. 点击 Back to Package List.
注意,默认情况下创建了一个托管 – 测试版包,正是我们想要的。
Beta版本不被视为主要版本,因此软件包版本号不会更改。

使您的软件包可用于安装

当你准备在另一个组织中安装你的软件包时,你需要上传它。
  1. 从软件包列表中单击您的软件包名称。
  2. 点击 Upload.
  3. 如下所示填写Package Details部分。
    字段
    Version Name Trail App Test 1
    Description 我通过构建应用程序创建了一个AppExchange合作伙伴跟踪的简单应用程序的测试版包。
    Screen for uploading a package
  4. 点击 Upload. 如果上传成功,您会收到包含安装URL的消息。
    Screen for package with installation URL
  5. 复制安装URL以用于安装软件包。
  6. 退出您的组织。

将您的软件包安装到测试组织中

  1. 将安装URL粘贴到浏览器中。
  2. 在出现的登录页面上,输入在单元2中创建的Trailhead Test组织的凭证。
  3. 在出现的页面上,点击 Install.
    Screen for installing package
  4. 点击 Done.
  5. 从应用程序菜单中选择您的应用程序,确认您的应用程序已安装。
    Force.com App menu with new app

概要

你现在知道关于软件包的基础知识。

  • 您必须在Partner Developer Edition或Developer Edition组织中创建软件包。
  • 要创建包,请选择一个唯一的名称空间。
  • 不要在测试组织上占用你的好名字空间,否则你会后悔的。
  • 在测试周期中使用Managed-Beta软件包,因为它很容易修改其内容。
  • 仅使用托管 – 发布的软件包进行最终测试。

恭喜,您拥有在开发周期中使用Managed-Beta软件包的所有技能。挑战让你多练习一下。

Flower icon used to indicate that the content is for Salesforce Classic

请记住,该模块适用于Salesforce Classic。当您启动动手组织时,请切换至Salesforce Classic以完成此挑战。

应用程序部署(3)打包

学习目标

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

  • 列出命名空间的关键功能。
  • 描述为AppExchange合作伙伴使用托管 – 发布的软件包的好处。
  • 描述安装Managed-Beta软件包与Managed-Released软件包的影响。

Package里有什么?

一个包是用于组件的容器,例如Java JAR文件或Ruby GEM,用于将应用程序分发给客户。它包含一组具有唯一名称空间的元数据。一个软件包可以包含像个别组件一样小或与一组相关应用程序一样大的东西。

Salesforce平台就其本质而言鼓励一种敏捷开发模型,在该模型中,您可以逐步进行测试,并随时调整设计。 Managed-Beta软件包支持这种测试和修改方法。

托管 – 发布的软件包用于实时产品。您的客户期望一个稳定的应用程序随着时间的推移而不断发展,而不会破坏他们在其之上构建的业务流程。托管 – 发布的软件包有助于确保您不会破坏客户的定制并为您的知识产权提供保护。

管理发布的软件包的优点

托管 – 发布的软件包提供:

  • Apex的知识产权保护
  • 内置对API可访问组件的版本支持
  • 能够分支和修补以前的版本
  • 能够无缝地将补丁和主要更新推送给订户
  • 所有组件的唯一命名以确保无冲突安装
  • 能够通过许可证控制用户访问

客户组织中的包生命周期

我们来看看您的应用程序的打包和分发生命周期。

  1. 您在托管 – 发布的软件包中发布您的应用的第1版。
  2. 客户安装包装。
  3. 客户定制您的应用程序。
  4. 您在托管 – 发布的软件包中发布您的应用的第2版。
  5. 客户在现有软件包的顶部安装新版本的软件包。

我们说一个托管 – 发布的软件包是可升级的,因为客户可以在他们现有的版本上安装新版本。非托管软件包(合作伙伴通常不使用)和托管 – Beta软件包不可升级。

Salesforce平台具有高度可定制性,您的客户可能会定制您的应用。当您发布新版本时,它们取决于应用程序的一定程度的一致性,以使其定制不会中断。

托管 – 发布的软件包具有内置的安全措施,可以最大限度地减少新版本的影响。例如,您不能删除已提供给客户或对象的Apex方法。有关更多详细信息,请参阅ISVforce指南中的“托管软件包中可用的组件”部分。

创建一个简单的应用程序来打包

我们将在此打破我们自己的规则,并在创建包的同一组织中设置一个简单的应用程序。您只能在合作伙伴开发版(PDE)或Developer Edition组织中创建软件包。因此,请使用我们在最后一个单元中创建的PDE组织。

让我们通过创建一个世界上最简单的应用程序来完成一些实践包装的步骤。我们将创建一个显示自定义对象的单页应用程序。

  1. 转到设置菜单。
  2. 在Lightning Platform主页上,单击 Add App.
  3. 如下填写App Quick Start页面。
    字段
    App Trail Tracker
    Label Trail
    Plural Label Trails
    Screen of app quick start
  4. 点击 Create.
  5. 点击 Go To My App

而已。让我们试试这个应用程序。

  1. 点击 New.
  2. 对于Trail名称,输入 AppExchange Partner Basics.
  3. 点击 Save.

您已经使用您的应用创建了一条记录。十分简单。

包和命名空间

对于所有AppExchange应用程序和一些OEM嵌入式应用程序,客户将您的应用程序安装在具有自定义设置的现有组织中。考虑以下情况。

  • 客户已经使用API​​名称Vendor__c创建了一个自定义对象。
  • 您的应用有一个API名称为Vendor__c的自定义对象。

将安装您的应用程序覆盖您的客户的对象?不,谢天谢地。命名空间将我们从命运中解救出来。

为了防止冲突,托管包总是有一个名称空间。命名空间在Salesforce中是唯一的,因此托管软件包的安装不会与客户和其他合作伙伴所做的自定义设置相冲突。

开发组织只能有一个名称空间。您只能使用该名称空间创建一个包,但可以对该包进行更新并发布新版本。

命名空间如何被添加到您的应用程序?

当您在组织中创建名称空间时,它将附加到组织中的每个组件。如果您在该组织中创建了一个包,则添加到包中的每个组件都随附该命名空间。以下自定义对象显示(1)组织具有命名空间TrailApp_Test1,以及(2)Trail对象的API名称是TrailApp_Test1__Trail__c。

Screen showing Namespace Prefix and API Name using namespace

但是,添加名称空间时,Salesforce不会更新非Salesforce工件,如JavaScript,其中包含对对象或字段的引用。您必须自己更新这些参考。

选择一个名字空间

因为名称空间是唯一的,所以首先为你的黄金包org选择名字空间。您的客户会看到您用于上传到AppExchange的包的名称空间。如果您的公司名称是AW Computing,则需要命名空间,如awc或awcomputing。

不要在您的测试版包装组织中使用该名称空间,因为那么它不适用于您的黄金包组织。

创建一个名字空间

让我们创建您的名称空间,以便您可以打包您的应用程序。

注意

Trailhead不支持命名空间组织,因此请确保您正在开发新版开发人员版或合作伙伴开发人员版组织。如果您在用于完成Trailhead挑战的组织中创建名称空间,那么您将无法使用它获得新徽章。

  1. 从安装程序中,在快速查找框中输入软件包,然后单击 Packages.
  2. 在页面的开发者设置部分,点击 Edit.
  3. 要确认您要设置命名空间,请单击 Continue.
  4. 为名称空间前缀输入一个值。请记住,不要使用稍后可能要使用的名称。
    Screen for setting up namespace
  5. 点击 Check Availability. 重复步骤4和5,直到找到可用的名称空间。
  6. 点击 New.
  7. 点击 Review My Selections.
  8. 点击 Save.

软件包和测试

使托管 – 发布的软件包成为销售和发布应用程序的最佳选择的因素也使得它成为测试的不好选择。将某些组件添加到托管包后,您无法修改它们。比方说,在开发应用程序时,您会创建四个自定义对象,Larry,Curly,Moe和John。当你去测试你的应用时,你决定约翰是不必要的。抱歉!如果对象John在您的托管 – 发布包中,则无法删除它。

为了解决这个问题,我们提供了Managed-Beta软件包。 Beta软件包的组件可在您的软件包组织中编辑,直到创建一个托管 – 已发布的软件包。

注意

您只能在沙箱或Developer Edition组织或通过环境中心创建的测试组织中安装测试版软件包。

创建一个Managed-Beta包

继续并按照以下步骤创建您的Managed-Beta软件包。
  1. 如果您不在软件包页面上,请从安装程序中,在快速查找框中输入软件包,然后单击 Packages.
  2. 在Packages部分中,单击 New.
  3. 对于Package Name,输入 Trail App.
  4. 选择托管复选框以启用该选项。出现提示时,单击 OK.
    Screen showing creating managed package
  5. 点击 Save.
  6. 在“组件”子选项卡中,单击 Add.
  7. 选择 Trail Tracker 应用程序,然后点击 Add to Package. 请注意,包中添加了几个相关组件。
  8. 点击 Back to Package List.
注意,默认情况下创建了一个托管 – 测试版包,正是我们想要的。
Beta版本不被视为主要版本,因此软件包版本号不会更改。

使您的软件包可用于安装

当你准备在另一个组织中安装你的软件包时,你需要上传它。
  1. 从软件包列表中单击您的软件包名称。
  2. 点击 Upload.
  3. 如下所示填写Package Details部分。
    字段
    Version Name Trail App Test 1
    Description 我通过构建应用程序创建了一个AppExchange合作伙伴跟踪的简单应用程序的测试版包。
    Screen for uploading a package
  4. 点击 Upload. 如果上传成功,您会收到包含安装URL的消息。
    Screen for package with installation URL
  5. 复制安装URL以用于安装软件包。
  6. 退出您的组织。

将您的软件包安装到测试组织中

  1. 将安装URL粘贴到浏览器中。
  2. 在出现的登录页面上,输入在单元2中创建的Trailhead Test组织的凭证。
  3. 在出现的页面上,点击 Install.
    Screen for installing package
  4. 点击 Done.
  5. 从应用程序菜单中选择您的应用程序,确认您的应用程序已安装。
    Force.com App menu with new app

概要

你现在知道关于软件包的基础知识。

  • 您必须在Partner Developer Edition或Developer Edition组织中创建软件包。
  • 要创建包,请选择一个唯一的名称空间。
  • 不要在测试组织上占用你的好名字空间,否则你会后悔的。
  • 在测试周期中使用Managed-Beta软件包,因为它很容易修改其内容。
  • 仅使用托管 – 发布的软件包进行最终测试。

恭喜,您拥有在开发周期中使用Managed-Beta软件包的所有技能。挑战让你多练习一下。

Flower icon used to indicate that the content is for Salesforce Classic

请记住,该模块适用于Salesforce Classic。当您启动动手组织时,请切换至Salesforce Classic以完成此挑战。

应用程序部署(2)管理环境

学习目标

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

  • 描述您从Environment Hub执行的任务。
  • 定义我的域名。
  • 描述如何设置单一登录到环境中的成员组织。

什么是环境中心?

现在是时候开始创建组织了。 Environment Hub应用程序是您创建组织和组织管理的一站式商店。

使用Environment Hub应用程序,您可以将现有组织连接到集线器。您可以创建标准和合作伙伴版本组织来开发,测试和打包您的应用程序。您可以设置从您的集线器org到其连接组织的单点登录,以便轻松访问开发和测试组织。

如果您想尝试本单元中的步骤,则需要使用Environment Hub应用程序的组织结构。

使用环境Hub所需的权限

如果您拥有系统管理员配置文件,则您拥有使用所有Environment Hub功能所需的权限。我们假设你有这些超级大国,并且你迫不及待地想创建一个组织。

但是,如果您希望其他用户访问集线器,或者您没有这些权限,则可以立即进行设置。在ISVforce指南的“配置环境中心”部分中了解有关集线器访问权限的更多信息。您或您的Salesforce管理员可以设置新配置文件,修改现有配置文件或使用正确权限创建权限集。

在开发管理组织中启用我的域

在开始之前,让我们使用Salesforce My Domain设置自己的域。是否要设置我的域名?对于AppExchange合作伙伴,这是肯定的。 Salesforce需要我的域作为安全措施来帮助防止恶意攻击 – 以防安全漏洞深藏在第三方或自定义组件中。
如果您的DE组织已启用“我的域”,或者您使用了Trailhead Playground组织,请跳过此部分。您已经设置了“我的域名”。

当您设置我的域名时,您会标记您的网址。例如,您可以创建像https://yourDomain.my.salesforce.com这样的自定义网址,而不是像https://na30.my.salesforce.com这样的网址。

Salesforce我的域向导将引导您完成这些步骤。My Domain wizard

  1. 选择你的域名。
    1. 从设置中,在快速查找框中输入我的域名,然后选择My Domain.
    2. 在https://后输入您的域的名称,然后单击Check Availability. 如果此名称已被使用,请选择另一个名称。
    3. 点击 Register Domain.
    Salesforce使用您的新域名更新其域名注册中心。完成后,您将收到一封电子邮件,其中包含“您的开发人员版本域可供测试”这个主题,它只需几分钟。

    注意

    在获得激活电子邮件之前,您无法进入下一步。

  2. 将我的域名推广到您的组织。
    1. 在激活电子邮件中,单击链接登录到您的Salesforce域并返回到向导。
    2. 请注意,浏览器地址栏中的网址显示您的新域名。URL of subdomain
    3. 点击您的组织,确保链接指向您的新域名。您可能尚未在您的DE组织中创建链接,因此我们可以继续。 (在生产组织中创建域时,这一重要步骤很容易被忽略。)
    4. 单击 Deploy to Users, 然后单击 OK.
    5. 点击 OK.
    在您的生产组织中,部署域会在您的组织中推出域URL。使用原始网址的请求会重定向到您的新网域。
恭喜,你已经建立了我的域名。在生产组织中设置“我的域”时,您需要执行几个步骤。通过完成用户认证模块的我的域单元了解更多信息。既然您已经使用域名保护了您的组织并将其品牌化,那么让我们继续。

感受力量:创建你的第一个组织

现在让我们创建一个开发组织,您可以在其中创建一个简单的应用程序。

  1. 从App菜单中选择 Environment Hub.
  2. 从ITEMS列表中选择 Environment Hub.
  3. 点击 Create Org.
  4. 为了目的,选择 Development .
  5. 在组织名称中,输入Trailhead Development Org.
    Screen for creating an org
  6. 填写剩余的必填字段。由于这是一个新的组织,所以您必须输入新的用户名,因为用户名不能在Salesforce组织中重复使用。
  7. 阅读主认购协议并选择是否接受。
  8. 点击 Create.
当您的组织准备就绪时,您会收到一封电子邮件确认,并且该组织出现在您的中心成员名单中。当电子邮件到达时,点击验证帐户以激活组织。

简要说明……

在继续之前,请确保您拥有环境Hub的AppExchange合作伙伴版本。
  1. 点击 Create Org.
  2. 为了目的,选择 Test/Demo.
  3. 确认您的版本选择列表看起来像这个。
    Edition menu with Partner versions of editions
  4. 点击 Cancel.
如果您没有看到突出显示的版本选项,请在合作伙伴社区提交案例以获取AppExchange合作伙伴环境中心。合作伙伴版本持续一年。非合作版本的使用寿命较短。

设置单点登录(SSO)

当您的组织准备就绪时,它将在环境中心中列为已连接的组织。

List of hub members with action menu highlight

注意右侧的下拉菜单。它有一个登录选项。如果您还没有设置SSO,登录只会将您带到登录页面。让我们激活SSO以充分利用Environment Hub。

  1. 从环境列表中选择组织名称。
  2. 点击 Enable SSO.
  3. 通过在新的屏幕上点击启用SSO,确认您想要 Enable SSO
  4. 转到单点登录用户映射相关列表,然后选择 New SSO User Mapping.
  5. 对于会员组织的用户名,请在环境中心查找用户。对于Environment Hub User,请输入您用于设置Trailhead Development Org的用户名。
    New SSO User Mapping screen
  6. 点击 Save.
  7. 选择 Login.

您现在已登录到相关组织。有用,不是吗?当您登录到成员组织时,您没有提供密码。因为您使用Environment Hub创建了组织,所以无需密码即可连接。

查看ISVforce指南的Environment Hub部分中的Single Sign-on,了解可用于连接组织的其他SSO方法。

让我们再来一次

它从不伤害练习,对吧?实际上,我们需要一个测试组织,用于在下一个单元中加载包含您的应用的软件包。所以,在这里。

  1. 从App菜单中选择 Environment Hub.
  2. 从ITEMS列表中选择 Environment Hub.
  3. 点击 Create Org.
  4. 为了目的,选择 Test/Demo.
  5. 在组织名称中,输入 Trailhead Test.
  6. 填写剩余的必填字段。请记住,这必须是新用户名,因为它必须在所有Salesforce组织中都是唯一的。
  7. 阅读主认购协议,然后选择是否接受。
  8. 点击 Create.
别忘了。找到您的电子邮件确认,并等待您的组织出现在您的中心成员名单中。在您确认并验证了您的帐户后,请继续并设置SSO以使您的生活更轻松。

保持有组织

您将在您的业务生命周期中创建许多组织。通过Environment Hub应用程序使用自定义列表视图,可以帮助您快速找到组织,从而让您的生活更轻松。

当您创建自定义列表视图时,您可以设置过滤器来确定您看到哪些组织并指定要显示的列。

将其他组织连接到集线器

也许你是一位发烧友,在你成为AppExchange合作伙伴之前,他们开始在Developer Edition org中创建你的应用。或者,您可能还有其他一些围绕您希望从环境中心访问的组织。没问题。就是这样。
  1. 登录到环境中心,然后选择 Connect Org.
  2. 输入您要连接的组织的管理员用户名,以及可选的简短说明。描述使得后来更容易找到组织,特别是如果您的中心有许多成员。
  3. 默认情况下,为您连接的组织启用单点登录(SSO)。要禁用SSO,请取消选择 Auto-enable SSO for this org.
  4. 再次选择 Connect Org.
  5. 在弹出窗口中,输入组织的管理员用户名和密码。如果您没有看到弹出窗口,请暂时停用浏览器的广告拦截软件,然后重试。
  6. 选择 Log In, 然后选择 Allow.

将Orgs从一个集线器移到另一个集线器

在某个时候,你的公司可能会发展到你希望在环境中心拥有另一个组织。使用Remove命令可以很容易地断开组织与环境Hub的连接。

并且很容易再次将它连接到同一个Environment Hub。但是,要将其连接到新的环境中心,请向合作伙伴支持提交一个案例,以断开与以前的环境中心的关联。

概要

你现在知道如何:

  • 设置我的域名。
  • 使用Environment Hub创建组织。
  • 将现有组织连接到环境中心。
  • 设置SSO。
  • 使用自定义列表视图来帮助您保持组织。

布拉沃。参加测验,然后进入下一个单位,在那里你可以使用这些组织。

应用程序部署(2)管理环境

学习目标

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

  • 描述您从Environment Hub执行的任务。
  • 定义我的域名。
  • 描述如何设置单一登录到环境中的成员组织。

什么是环境中心?

现在是时候开始创建组织了。 Environment Hub应用程序是您创建组织和组织管理的一站式商店。

使用Environment Hub应用程序,您可以将现有组织连接到集线器。您可以创建标准和合作伙伴版本组织来开发,测试和打包您的应用程序。您可以设置从您的集线器org到其连接组织的单点登录,以便轻松访问开发和测试组织。

如果您想尝试本单元中的步骤,则需要使用Environment Hub应用程序的组织结构。

使用环境Hub所需的权限

如果您拥有系统管理员配置文件,则您拥有使用所有Environment Hub功能所需的权限。我们假设你有这些超级大国,并且你迫不及待地想创建一个组织。

但是,如果您希望其他用户访问集线器,或者您没有这些权限,则可以立即进行设置。在ISVforce指南的“配置环境中心”部分中了解有关集线器访问权限的更多信息。您或您的Salesforce管理员可以设置新配置文件,修改现有配置文件或使用正确权限创建权限集。

在开发管理组织中启用我的域

在开始之前,让我们使用Salesforce My Domain设置自己的域。是否要设置我的域名?对于AppExchange合作伙伴,这是肯定的。 Salesforce需要我的域作为安全措施来帮助防止恶意攻击 – 以防安全漏洞深藏在第三方或自定义组件中。
如果您的DE组织已启用“我的域”,或者您使用了Trailhead Playground组织,请跳过此部分。您已经设置了“我的域名”。

当您设置我的域名时,您会标记您的网址。例如,您可以创建像https://yourDomain.my.salesforce.com这样的自定义网址,而不是像https://na30.my.salesforce.com这样的网址。

Salesforce我的域向导将引导您完成这些步骤。My Domain wizard

  1. 选择你的域名。
    1. 从设置中,在快速查找框中输入我的域名,然后选择My Domain.
    2. 在https://后输入您的域的名称,然后单击Check Availability. 如果此名称已被使用,请选择另一个名称。
    3. 点击 Register Domain.
    Salesforce使用您的新域名更新其域名注册中心。完成后,您将收到一封电子邮件,其中包含“您的开发人员版本域可供测试”这个主题,它只需几分钟。

    注意

    在获得激活电子邮件之前,您无法进入下一步。

  2. 将我的域名推广到您的组织。
    1. 在激活电子邮件中,单击链接登录到您的Salesforce域并返回到向导。
    2. 请注意,浏览器地址栏中的网址显示您的新域名。URL of subdomain
    3. 点击您的组织,确保链接指向您的新域名。您可能尚未在您的DE组织中创建链接,因此我们可以继续。 (在生产组织中创建域时,这一重要步骤很容易被忽略。)
    4. 单击 Deploy to Users, 然后单击 OK.
    5. 点击 OK.
    在您的生产组织中,部署域会在您的组织中推出域URL。使用原始网址的请求会重定向到您的新网域。
恭喜,你已经建立了我的域名。在生产组织中设置“我的域”时,您需要执行几个步骤。通过完成用户认证模块的我的域单元了解更多信息。既然您已经使用域名保护了您的组织并将其品牌化,那么让我们继续。

感受力量:创建你的第一个组织

现在让我们创建一个开发组织,您可以在其中创建一个简单的应用程序。

  1. 从App菜单中选择 Environment Hub.
  2. 从ITEMS列表中选择 Environment Hub.
  3. 点击 Create Org.
  4. 为了目的,选择 Development .
  5. 在组织名称中,输入Trailhead Development Org.
    Screen for creating an org
  6. 填写剩余的必填字段。由于这是一个新的组织,所以您必须输入新的用户名,因为用户名不能在Salesforce组织中重复使用。
  7. 阅读主认购协议并选择是否接受。
  8. 点击 Create.
当您的组织准备就绪时,您会收到一封电子邮件确认,并且该组织出现在您的中心成员名单中。当电子邮件到达时,点击验证帐户以激活组织。

简要说明……

在继续之前,请确保您拥有环境Hub的AppExchange合作伙伴版本。
  1. 点击 Create Org.
  2. 为了目的,选择 Test/Demo.
  3. 确认您的版本选择列表看起来像这个。
    Edition menu with Partner versions of editions
  4. 点击 Cancel.
如果您没有看到突出显示的版本选项,请在合作伙伴社区提交案例以获取AppExchange合作伙伴环境中心。合作伙伴版本持续一年。非合作版本的使用寿命较短。

设置单点登录(SSO)

当您的组织准备就绪时,它将在环境中心中列为已连接的组织。

List of hub members with action menu highlight

注意右侧的下拉菜单。它有一个登录选项。如果您还没有设置SSO,登录只会将您带到登录页面。让我们激活SSO以充分利用Environment Hub。

  1. 从环境列表中选择组织名称。
  2. 点击 Enable SSO.
  3. 通过在新的屏幕上点击启用SSO,确认您想要 Enable SSO
  4. 转到单点登录用户映射相关列表,然后选择 New SSO User Mapping.
  5. 对于会员组织的用户名,请在环境中心查找用户。对于Environment Hub User,请输入您用于设置Trailhead Development Org的用户名。
    New SSO User Mapping screen
  6. 点击 Save.
  7. 选择 Login.

您现在已登录到相关组织。有用,不是吗?当您登录到成员组织时,您没有提供密码。因为您使用Environment Hub创建了组织,所以无需密码即可连接。

查看ISVforce指南的Environment Hub部分中的Single Sign-on,了解可用于连接组织的其他SSO方法。

让我们再来一次

它从不伤害练习,对吧?实际上,我们需要一个测试组织,用于在下一个单元中加载包含您的应用的软件包。所以,在这里。

  1. 从App菜单中选择 Environment Hub.
  2. 从ITEMS列表中选择 Environment Hub.
  3. 点击 Create Org.
  4. 为了目的,选择 Test/Demo.
  5. 在组织名称中,输入 Trailhead Test.
  6. 填写剩余的必填字段。请记住,这必须是新用户名,因为它必须在所有Salesforce组织中都是唯一的。
  7. 阅读主认购协议,然后选择是否接受。
  8. 点击 Create.
别忘了。找到您的电子邮件确认,并等待您的组织出现在您的中心成员名单中。在您确认并验证了您的帐户后,请继续并设置SSO以使您的生活更轻松。

保持有组织

您将在您的业务生命周期中创建许多组织。通过Environment Hub应用程序使用自定义列表视图,可以帮助您快速找到组织,从而让您的生活更轻松。

当您创建自定义列表视图时,您可以设置过滤器来确定您看到哪些组织并指定要显示的列。

将其他组织连接到集线器

也许你是一位发烧友,在你成为AppExchange合作伙伴之前,他们开始在Developer Edition org中创建你的应用。或者,您可能还有其他一些围绕您希望从环境中心访问的组织。没问题。就是这样。
  1. 登录到环境中心,然后选择 Connect Org.
  2. 输入您要连接的组织的管理员用户名,以及可选的简短说明。描述使得后来更容易找到组织,特别是如果您的中心有许多成员。
  3. 默认情况下,为您连接的组织启用单点登录(SSO)。要禁用SSO,请取消选择 Auto-enable SSO for this org.
  4. 再次选择 Connect Org.
  5. 在弹出窗口中,输入组织的管理员用户名和密码。如果您没有看到弹出窗口,请暂时停用浏览器的广告拦截软件,然后重试。
  6. 选择 Log In, 然后选择 Allow.

将Orgs从一个集线器移到另一个集线器

在某个时候,你的公司可能会发展到你希望在环境中心拥有另一个组织。使用Remove命令可以很容易地断开组织与环境Hub的连接。

并且很容易再次将它连接到同一个Environment Hub。但是,要将其连接到新的环境中心,请向合作伙伴支持提交一个案例,以断开与以前的环境中心的关联。

概要

你现在知道如何:

  • 设置我的域名。
  • 使用Environment Hub创建组织。
  • 将现有组织连接到环境中心。
  • 设置SSO。
  • 使用自定义列表视图来帮助您保持组织。

布拉沃。参加测验,然后进入下一个单位,在那里你可以使用这些组织。

应用程序部署(1)部署环境

学习目标

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

  • 定义一个包并描述在开发生命周期中如何使用Managed-Beta和Managed-Released包。
  • 列出AppExchange应用程序开发中使用的组织类型以及每个组织的使用。
  • 描述为什么要谨慎对待黄金包组织。

开发和分发您的应用程序

准备好开发你的应用,测试并发送给客户?作为AppExchange合作伙伴,您可以使用许多不同的组织来发布您的应用。本模块介绍开发应用程序时使用的环境,如何创建和管理它们以及如何在这些组织之间移动应用程序。

设立开发管理组织

作为AppExchange合作伙伴,您拥有开发,测试,分期和打包,演示,市场营销,销售和分发您的应用的组织。要创建和管理开发组织,请使用Environment Hub应用程序。

Environment Hub安装在您的业务组织中。业务组织还拥有适合您的营销,销售,运营和联盟团队完成工作的所有应用程序和功能。

作为Salesforce合作伙伴向您提供的业务组织有两个许可证,通常分配给运营您业务的人员。

您可以创建合作伙伴开发人员版本组织,以充当开发管理组织,并要求在那里安装Environment Hub应用程序。该组织拥有20个许可证。您可以将这些许可证分配给开发和质量保证团队成员,以便他们可以创建和管理他们自己的组织。

要设置您的开发管理组织:

  1. 使用业务组织中的Environment Hub(1)创建合作伙伴开发版(PDE)组织(2)。
  2. 当您拥有新的PDE组织时,请在合作伙伴社区中提交案例以请求新组织(3)中的Environment Hub应用程序。这可能需要几天时间。
Diagram showing business org with environment hub creating developer org, which then gets environment hub

开发,Beta包装和测试组织

在整个业务中,您将使用许多不同类型的组织。目前,我们专注于您在应用程序开发中使用的开发,打包和测试组织。包装是将您的应用分发给客户的第一步。

以下是在开发过程中使用这三种组织的简单示例。

  • 您和您的团队在Partner Development Edition(PDE)组织(1)中开发您的应用程序。你设置了多少个PDE组织?这取决于您的需求和团队中的开发人员数量。
  • 您可以使用Salesforce迁移工具将来自PDE组织的配置合并到单个测试版包装组织(2)中。请参阅了解部署工具选项Trailhead单元中的Force.com IDE或Ant迁移工具。

    注意

    与我们的客户不同,AppExchange合作伙伴在开发过程中不使用沙箱,因此更改集不能用于您的组织之间的部署。

  • 在测试版包装组织(3)中,您将创建托管 – 测试版软件包以测试您的应用程序。
  • 您将测试版软件包安装在测试组织(4)中。测试组织版基于您的目标客户的版本。你可以有多个测试组织。
  • 如果你发现问题,你和你的团队回到PDE组织的发展。
Diagram showing application moving from developer org to beta package org to test org

开发完成后,在您的测试版包装组织中创建一个托管 – 发布的软件包。将其发送给新的测试组织进行最终检查。

金包组织

当您的应用程序准备启动时,您将创建最终的包装组织。我们把这个组织称为“黄金包”组织,因为它在你的应用程序的生命周期中很重要。无论产品有多少个版本,每个产品只有一个黄金包组织。

您可以使用迁移工具将您的应用程序移至Golden Package org(1)。然后创建一个托管 – 发布的软件包(2),并通过将软件包安装到新的测试组织(3)中执行至少一次质量保证运行。

Diagram showing app going from developer org to beta package org to golden package org to test org

关闭AppExchange

当您的应用高兴地捆绑在托管软件包中时,您可以在AppExchange(1)上私下发布它。然后它会通过安全审查,我们已经从图中省略了。获得批准后,您可以公开发布该应用。客户从那里安装包装(2)。

Diagram showing app going from golden package org to AppExchange to customers

这些组织如何映射到非云开发模式?

查看此表以了解您的组织如何映射到非云开发环境。

非云环境 Salesforce Org Edition 为什么?
个人开发 合作伙伴开发人员版组织 开发人员 这些组织提供了创建您的应用程序的全部功能。
连续构建 合作伙伴开发者版org-beta测试版包装组织 发布经理 使用此组织将开发代码汇集在一起​​,打包并将其推送到测试组织。它必须是一个PDE组织来创建托管软件包。
测试 Group Edition, Professional Edition, Enterprise Edition orgs 质量保证工程师或业务分析师 在客户使用的组织版本中测试您的应用程序。
分期,包装和发行 合作伙伴开发版org – 黄金包装组织 发布经理 这个组织不是一个临时环境,但它是您的应用程序将从中启动的启动板!它必须是一个PDE组织来创建托管软件包。
用户验收测试 Group Edition, Professional Edition, Enterprise Edition orgs 产品经理 在您的应用上线之前,使用此组织进行最终签名。

虽然我们没有在我们的简化路径中显示它,但我们强烈建议将元数据存储在源代码管理系统中,特别是在与多个开发人员一起工作的情况下。您可以使用Github或SVN等系统,并且可以在专为Salesforce设计的AppExchange上找到应用程序。

注意

如果您正在查看AppExchange,请确保版本控制系统支持合作伙伴开发。正如我们前面提到的,我们的客户在开发中使用沙箱,这有点不同。

一些问题的答案

为什么企业组织拥有Environment Hub应用程序?

您可以使用Environment Hub应用创建多种类型的组织。例如,您的销售团队可以创建演示组织,而您的运营团队可以创建试用版管理组织。由于这些团队通常在业务组织中,因此在业务组织中安装Environment Hub应用程序非常有用。

为什么我不能将相同的合作伙伴开发版组织用于我的环境中心应用程序,开发和打包?

根据用例维护单独的组织支持正确的发布过程并增加安全性。包含环境中心的组织 – 开发管理组织 – 用于创建和管理组织。你可能不希望每个人都使用它。并允许在该组织的发展导致混乱!

使用专为开发而设计的组织,开发人员可以探索Salesforce并构建您的应用程序,而无需踩在任何人的脚趾上。

您的包装组织就像货币版。您希望将此组织保持原始的稳定状态,并且只在应用准备好发布或更新时才对其进行修改。记住,当你从这个组织中释放你的应用程序时,你使用这个组织来永久打包你的应用程序。所以你想尽可能锁定这个组织。

最后一点:在包含托管软件包的组织中安装Environment Hub应用程序可能会在创建软件包版本或向客户推送软件包升级时导致问题。因此,甚至不要考虑开发管理组织中的包装。

尽管如此,一些小团队使用相同的组织来开发和打包。我们在这个模块中使用相同的组织来使您的生活更轻松,但我们不建议将其作为一般惯例。

如果我的团队习惯于不同的环境配置,该怎么办?

我们在这里描述的配置仅仅是一个例子。您可以根据您的需要使用不同的配置。

 

总结一下

这里描述的配置仅仅是一个例子。您可以根据您的需要使用不同的配置。

  1. 从您的企业组织创建一个PDE组织用于开发管理。
  2. 在开发管理组织中启用Environment Hub应用程序。
  3. 创建用于开发的PDE组织。
  4. 创建一个PDE组织,用于组合配置并创建用于测试的测试版包。
  5. 创建与您的目标版本相匹配的测试组织。
  6. 创建一个PDE组织用作您的Golden Package组织。
  7. 创建UAT(测试)组织来测试你的黄金包。

这个过程包括七个不同的组织 – 你可能会使用更多。

我们没有谈到AppExchange合作伙伴可以使用的所有组织,只是在开发过程中使用的那些组织。我们只介绍了Environment Hub应用程序,而不是用于销售应用程序的其他应用程序,例如许可证管理应用程序。

 

下一步是什么

在接下来的单元中,我们将深入使用Environment Hub应用程序,创建软件包并设置测试组织。为了充分利用这些设备,请确保执行以下操作。

去做 怎么样?
注册为AppExchange合作伙伴 请参阅AppExchange合作伙伴基础知识模块中的AppExchange合作伙伴计划入门
确保你有一个与环境中心应用程序的组织 请参阅AppExchange合作伙伴基础模块中的AppExchange合作伙伴的工具和资源优势

拿到你的徽章,然后你就可以和环境中心一起玩了。

应用程序策略(3)确定应用工具

学习目标

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

  • 描述可用于在Salesforce组织中创建应用程序的工具。
  • 列出Salesforce为与其他系统集成而提供的技术。
  • 描述Chatter促进协作的方式。
  • 确定Salesforce社区的适当用例。
  • 描述Salesforce为使您的应用移动就绪而提供的技术。

Salesforce Technologies

在本单元中,我们将简要介绍可用于构建应用程序的工具和技术。我们还重点介绍吸引更广泛客户群和改进设计的技术。我们希望您找到解决方案,解决您认为无法解决的问题并构建您一直梦寐以求的应用程序!
如果您使用Salesforce,我们提供的一些内容可能会很熟悉。但是谁知道?你可以学到一件新的东西,它提供了额外的优势,让你的应用在市场上闪耀。

平台基础

Lightning Platform平台是构建应用程序的基础,具有丰富的配置,创建和自定义应用程序的功能。例如,您可以轻松地:

  • 存储,操作和保护数据
  • 自动化业务流程
  • 管理用户及其对应用程序的访问权限
  • 创建用户界面

Salesforce提供用于配置和自定义的点击式工具。声明性工具,我们称之为,非常强大。它们旨在尽快让您的应用程序正常运行。

假设您需要存储活动管理应用的场地信息。在短短几分钟内,您就可以创建该对象来保存该数据并设置该对象的安全性。 Salesforce还会自动为最终用户提供UI页面,以查看,创建,编辑和删除存储在该对象中的数据。

但是,一些自定义过于复杂或专门在声明性界面中实现。因此,Salesforce还为应用程序开发提供了编程工具。这些工具包括:

  • Apex是Salesforce的基于云的编程语言,它在语法上类似于Java或C#。 Apex与作为应用程序骨干的对象和用户操作一起工作。
  • Visualforce是一种类似于HTML的基于标签的标记语言,用于构建UI页面和组件。像Apex一样,它可以处理对象和用户操作。它也适用于第三方库,如jQuery和AngularJS。
  • Lightning组件,一个用于构建可重用组件的JavaScript框架。这些组件可以呈现UI,处理客户端事件以及与Salesforce服务器进行通信。您可以使用这些组件来构建和增强应用程序。如果它们太棒了,无法忍受,那么你可以在AppExchange上销售它们!

以下是我们有关何时使用声明式和编程式工具的建议。

我们推荐 为什么?
首先尝试声明
  • 更容易创建和维护
  • 更好地利用新的Salesforce功能
  • 更容易测试(我们已经测试过这个功能,你测试它对你的解决方案有效。)
用声明式编程方式
  • 您的业​​务逻辑太复杂,无法以声明方式实施。
  • 你想建立一个自定义的用户体验。
  • 将程序化和声明式结合起来通常可以产生最佳的解决方案。
完全程序化 有时你需要做你需要做的事情。

要了解更多信息,请从此线索开始进行声明,并为程序化开发此线索。

作为合作伙伴,您还可以注册合作伙伴在线培训以访问我们的电子教学目录。

  1. 登录到合作伙伴社区。
  2. 点击 https://partners.salesforce.com/partnerTraining.
  3. 注册合作伙伴培训帐户。

选择适合你的东西,并学习!

将Salesforce连接到外部系统

许多Salesforce客户和AppExchange合作伙伴将其组织与外部系统集成在一起。 Salesforce有许多用于构建集成的选项。我们在这里简要介绍几个。在为您的应用确定最佳集成选项时,请查看developer.salesforce.com上的这些资源,并向我们的专家和Salesforce合作伙伴社区中的同行发布问题。

The APIs

在Salesforce,我们一直遵循API优先的方法。数据和元数据 – 我们存储的关于配置的数据 – 可通过API获得。例如,当您创建数据对象时,使用REST和SOAP API立即可用描述该对象的元数据。当用户使用该对象创建数据时,该数据也可以立即使用API​​提供。我们有通用的API和特殊用途的API,并且我们提供了构建自定义API的选项。

通过使用通用SOAP API或REST API,代码可以将数据从数据库记录中提取和推送到数据库记录中,并反省数据的结构。假设您已经在Java应用程序中为交易进度预测器开发了预测算法。您希望将来自客户组织的数据提供给您的程序,然后返回结果。您可以使用SOAP API或REST API来解决此问题。

您还可以使用简单的批注将在Apex中编写的方法作为SOAP或REST服务启用。

要为您的应用选择正确的API,请检查此列表。

其他一体化机制

可是等等! Salesforce拥有API以外的集成工具。我们在这里强调一些。

Outbound Messaging 当客户的组织中的数据被修改时,出站消息传送通知到外部应用程序。出站消息使用工作流进行声明配置。工作流规则监视指定的字段更改并触发自动操作,例如创建任务记录或向外部系统发送出站消息。

Apex Callouts 直接从您的Apex代码调用外部SOAP或RESTful服务。

Salesforce Connect, 是一款使用OData协议的工具,可在Salesforce内部公开外部数据对象。用户将像存储在平台对象中的数据一样与外部数据交互。 Salesforce Connect需要支付额外费用。

Heroku Connect 使用Postgres数据库在Salesforce和在Heroku上运行的外部应用程序之间来回交换数据。 Heroku Connect需要支付额外费用。

Canvas 是构建复合应用程序的好方法。例如,您可以从外部系统嵌入订单页面,并与Salesforce共享数据。

与Chatter合作

Chatter使用户能够以个人身份进行协作和沟通,围绕常见的主题进行交流,并获得有用的数据!

Chatter解决了人们传统上参与商业讨论的低效率问题。假设您是销售团队的成员。您聘请一些公司专家来纠正关键潜在客户机会记录的数据。您发送一封电子邮件,附带超链接,开始讨论。危险标志!很快你会有一个长线程,然后分成三个线程。这次谈话发生在错误的地方。

或者,您可能会向团队成员发送有关重要项目状态的手动更新,因为他们无法每隔15分钟查看记录。

Chatter解决了这些问题。与其他社交协作工具一样,Chatter拥有私人和公共的用户个人资料,供稿和群组。当对象启用了Feed跟踪时,基于该对象的记录具有Chatter Feed。当记录中的字段发生变化时,帖子会出现在Chatter Feed中。如果用户追踪记录,他们将被发送帖子。

A screenshot of a Chatter

我们刚刚谈到了Chatter的一些功能。 Chatter可帮助您的应用程序变得更加关键。您的客户的组织会自动拥有Chatter,因此请使用它来帮助您销售您的应用!

Salesforce社区

Salesforce Communities是客户分享信息并与客户和合作伙伴协作的好方法。社区支持需要登录的安全信息以及任何人都可以看到的公共信息。

A screenshot of a Salesforce Community
这里有一些使用社区的绝佳机会。

  • 分包商合规性管理应用跟踪分包商已通过项目的所有合规性要求。员工指出分包商必须符合的合规要求。分包商负责提供合规性文件。然后员工检查要求以允许分包商完成工作。
  • 产品信息应用程序,由直接向消费​​者销售的公司使用,提供产品信息以及评分和客户反馈。它根据客户购买的产品进行产品推荐。它提供了一个公共论坛,让消费者可以提供反馈意见,建议改进产品,甚至回答彼此的问题。
对您而言,AppExchange合作伙伴(包括您解决方案中的社区用户)扩展了您的用户群,这意味着您可以获得更多许可证和更多收入。该表查看了Salesforce Customer Community和Customer Community Plus类型。

客户社区 客户社区Plus
最大用户数 700万 300,000
听众 顾客 合作伙伴或其他业务
常见用途
  • 自助服务内容
  • 客户互相学习的论坛
企业对企业流程,如转售
强调
  • 无法访问(大多数)标准对象,例如商机和潜在客户
  • 简单的安全模式
  • 不能包含在业务流程配置中
  • 高级共享模式
  • 可以包含在业务流程配置中

ISVforce应用程序还可以支持公司社区,如IT内联网,允许您的客户支持其员工。 OEM应用可以包括客户或合作伙伴社区,但不包括公司社区。

公司也使用混合用途社区。例如,一家销售打印机的公司可能会有一个社区,为寻求支持的客户提供服务,并为打印机提供服务的合作伙伴。

在构建ISVforce应用程序时,您可以为您的客户提供一个应用程序,以增强其现有社区或提供新社区。但是,客户必须从Salesforce购买社区用户许可证。

要查看Salesforce社区或Chatter的实际操作,请查看Salesforce合作伙伴社区!

使它移动!

从移动设备上做生意可能是最终达成交易的优势。使用平板电脑设备上的应用的现场技术人员可以快速查找信息和文件报告。在移动设备上访问您的应用通常是必要的。 Salesforce可轻松创建适用于移动设备的应用程序。它还提供了创建自己的Salesforce连接的移动应用程序的选项。

Salesforce Mobile应用程序

Salesforce移动应用程序已准备好用于iOS和Android(即将推出Windows)。标准页面适用于Salesforce应用程序。自定义Visualforce用户界面需要调整才能使页面响应。但是,为了在移动设备上获得最佳用户体验,请使用Salesforce的声明性工具来优化移动导航,简化布局以及针对移动用户的操作。无需移动应用程序开发经验!在Salesforce Mobile Basics trail中了解更多信息。

在此处了解Salesforce移动应用程序对Salesforce Communities的支持。

闪电组件

Lightning组件是增强或构建新的移动应用程序并支持Lightning Experience的好方法。基于组件的方法使您能够快速组装移动应用程序。并且,请记住,您可以在AppExchange上提供可供销售的组件。

Salesforce Mobile SDK

Salesforce移动应用几乎适用于所有情况。但是,您可能想使用设备本机功能或提供广泛的脱机功能。 Salesforce Mobile SDK简化了iOS和Android(以及Windows)设备的应用程序开发。通过处理用户身份验证,安全性等,可以轻松与后端的Salesforce平台配合使用!

最后总结

结局在眼前!让我们回顾一下我们所涵盖的内容。
技术 他们用于什么? 我们的两美分
声明性工具 配置和构建您的应用程序 尽可能多使用!
Apex,Visualforce,Lightning组件 配置和构建您的应用程序 当陈述性不够时,引入程序化。
API和其他集成工具 Salesforce与外部系统的集成 选择最符合您需求的选项。
Chatter 合作 这是一个卖点!
社区 与客户,合作伙伴和员工进行合作 轻松地将您的应用的覆盖面扩大到更大的受众。
Salesforce移动应用程序,Lightning组件,Salesforce Mobile SDK 让您的应用移动就绪 企业喜欢移动。

我们所涵盖的所有技术都在那里等着你来构建一个真棒应用程序! 完成测验。 拿到你的徽章。 就行了!

应用程序策略(2)确定应用版本

学习目标

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

  • 描述ISVforce应用程序支持的版本之间的基本区别。
  • 根据一系列要求,确定您的产品可以支持的版本。
  • 描述为什么确定目标组织中的Salesforce版本和Salesforce许可证非常重要。
  • 描述AppExchange合作伙伴何时确定要定位哪些Salesforce版本。

确定正确的版本

现在可以确定要支持哪些Salesforce版本。再一次,想象你是一位设计了漂亮沙发的家具设计师。根据您的设计,您有几个预购单。工厂制造沙发。第一次发货时,您发现沙发不适合通过前门。它的尺寸比大多数门口都大。不是一个好的结果。多一点计划本可以为你和你的顾客节省一点头痛。
我们希望您在构建AppExchange应用程序时避免此类结果。您可以在为AppExchange合作伙伴配置的特殊开发人员版(DE)组织中设计您的应用。它有一切支持为不同的受众开发不同类型的应用程序。但是,您的目标客户的环境可能不包含所有这些功能。如果您不将解决方案中的功能限制为目标组织中可用的功能,则必须重新考虑计划。

什么是Salesforce版本?

我们提供不同版本的Salesforce,为我们的客户提供不同级别的功能和资源。作为AppExchange合作伙伴,您需要了解四个版本。

A diagram showing how editions build on each other
版本是分层的,每个版本都建立在前一版本上。升级可增加可用功能并提高某些功能的限制。例如,GE组织不支持记录类型,但PE,EE,PXE,UE和DE都可以。 GE组织具有五个用户许可证的限制。 PE或更高版本组织可以拥有无​​限数量的用户许可证。

注意

Salesforce正在逐步淘汰GE并用Salesforce IQ取而代之。现有客户继续得到支持。

选择Salesforce版本的重要性

您定位的版本决定了您在应用中使用哪些功能。它还定义了您的应用可以使用的资源限制。你不限于支持一个版本。例如,您可以为不同版本提供不同的软件包。或者您可以设计您的解决方案,以便对其安装的版本敏感。请记住,您的商业计划也会影响您选择的目标版本。
如果您正在构建一个OEM嵌入式应用程序,那么您可以提供全新客户的唯一类型的组织是EE。现有客户只有在拥有EE或更高版本的组织时才能安装您的应用。

组织,版本和许可证

Salesforce云环境经常与办公楼相比较。每个人都拥有管道和电力等基础设施,但每个企业都有自己的专用空间,其他租户无法进入 – 它的组织。当顾客选择一个版本时,他们选择他们的办公空间。有些房客选择一些没有接待区或厨房的房间。其他人则选择整个楼层与接待区,厨房和行政办公室。较小的办公空间就像一个PE组织;整个地板就像一个EE组织。
当客户购买用户许可证时,他们正在确定谁可以访问“办公室”以及他们获得什么类型的访问权限。标准用户许可证提供允许访问所有组织功能的“密钥”。其他用户许可提供更有限的访问权限例如,拥有客户社区许可证的用户无法访问潜在客户和机会对象,因此无法在工作流程中提及。

客户还为非标准功能购买功能或权限集许可证。例如,在Sales Cloud中使用Salesforce Knowledge需要许可集许可证。

选择支持哪些版本

让我们看看不同版本的受众群体。
版本 低谷…
小组版(GE) 适用于拥有五个或更少用户的企业版本。 功能很小。
专业版(PE) 中型客户使用PE。 它拥有客户所需的所有CRM,并且对用户许可证没有限制。 它不包括所有的花里胡哨的东西,而且很难实施粗糙的业务流程。
企业版(EE) EE是我们最受欢迎的版本。 它包括所有核心工具和技术。
无限版(UX)和性能版(PXE) UX和PXE类似于类固醇EE。 大型企业购买这些版本。

注意

对于您的内部架构,OEM嵌入式应用程序组织与EE相当。 但客户有合同限制。 他们无法看到与销售或服务云功能相关的数据或对象。 他们不能使用功能来构建更多的应用程序。 有关详细信息,请参阅ISVforce指南。

大多数客户使用EE或更高版本。拥有这些更高版本的客户通常会购买最多的许可证,因此它们代表着最大的市场。 EE和更高的组织拥有最多的内置功能,这可以使您的设计更容易实现。

与许多大型企业客户不同,PE版本的客户往往有一个短的购买周期,这可以帮助您更快地销售您的应用。如果你考虑将PE添加为另一版本,请考虑相对于潜在市场的努力。

确定可用的声明性功能

将设计和开发限制为仅使用目标组织中可用的功能是至关重要的。我们建议定期检查您的ISVforce指南和其他Salesforce文档,以便您不必回溯。

例如,假设您正在考虑GE或PE客户。该表格来自ISVforce指南,列出了AppExchange合作伙伴使用的一些最受欢迎的功能。

特征 小组版 专业版
资产 No Yes
广告活动 No Yes
合同 No Yes (使用销售云)
预测 No Yes (没有机会拆分或自定义字段预测)
思路 No Yes
制品 No Yes
解决方案 No Yes
记录类型 No Yes
权限集 Yes Yes
自定义配置 No Yes
自定义报告类型 No Yes
工作流程和批准 No No(见注意)
Apex 代码 See note. See note.
共享规则 No Yes (对于某些功能)
API See note. See note.
Sites No No

注意

  • 所有列出的功能都可在DE中找到。
  • 作为合作伙伴,您的应用程序中的工作流程运行在专业版组织中。但是,客户无法创建自己的工作流程。他们必须直接从Salesforce购买该功能。
  • 客户端ID允许您的应用使用API​​集成到复合应用。有关更多信息,请参阅在群组和专业版中使用Apex以及在群组和专业版中使用API​​。

这份清单并非详尽无遗。为确保您使用的功能可用,请检查出现在文档页面上的版本列表。查看关于知识的这个页面:

Help page showing Salesforce Knowledge

小组版没有列出,所以它们不支持记录类型。

确定可用的编程功能

我们所描述的特性和功能都是在声明式自定义 – 这些可以在Salesforce的点击式界面中完成。您还可以使用Salesforce的基于云的编程语言Apex以编程方式自定义组织。 GE和PE组织无法访问Apex或API。但是,作为AppExchange合作伙伴,允许您批准的应用程序在客户的GE和PE组织中使用Apex和下表中列出的API。
API 访问GE和PE
Web服务(SOAP) Yes, 带有token
作为Web服务公开的Apex方法(SOAP) No
Web服务(REST) Yes, 连接的应用程序消费者列入白名单
作为Web服务公开的Apex方法(REST) 是的,连接的应用程序消费者列入白名单
Chatter REST API Yes
Metadata API Yes, 带有token
Bulk API No
Data Loader工具(使用SOAP Web服务)

No, 不能设置token

限制和您的目标组织

所有Salesforce组织都共享基础架构。为了确保没有org消耗过多的资源,我们强制执行限制。这是Salesforce确保您和我们客户的信任的一种方式。限制因版本而异。例如,请考虑验证规则的这些限制,这是验证输入字段值的功能。
特征 小组版 专业版 企业版 无限制和性能版本
每个对象的活动验证规则数 20 20 200 200

当现有客户安装您的应用程序时,除了他们已经使用的任何资源之外,它们还会承担资源使用的开销。假设一个PE组织中的客户在账户对象上有18个有效的验证规则,并且你的应用程序增加了3个。您的应用程序无法安装到客户的组织中,因为超出了活动验证规则的限制。

但是,符合条件的AppExchange合作伙伴的应用程序确实具有三种特定功能的余地。当应用程序通过安全审查时,程序包中包含的应用程序,对象和选项卡不会计入客户的限制。

有关声明限制的更多信息,请查看我们的帮助文档。

注意代码执行的限制。如果超出交易限制,整个交易将失败,并且您的客户不是一个快乐的露营者。要了解有关编程限制的更多信息,请访问此页面。

确保您的应用程序在您选择的版本中运行

您可以使用环境中心创建特定于版本的测试组织。

A diagram showing moving from development to test orgs

我应该瞄准哪些版本?

现在让我们通过一些场景来练习选择版本。

Icons representing scenarios we will review.

情景#1:交易进度预测器

应用类型:
ISVforce
基于云:
Sales Cloud
目标版本:
企业版
应用功能:
通过以下方式为Salesforce中的商机添加洞察:

  • 分析过去的相关交易
  • 分析整体使用情况
  • 将分析与销售代表的机会生命周期的当前状态联系起来

这个应用程序的甜蜜点是具有EE或更高版本组织的客户,因为他们有大量数据集供分析。你可以设计你的应用程序为GE和PE组织工作吗?看看这个表格有一些考虑。

如果您想…. 客户能否将您的ISVforce应用程序安装在他们的GE或PE组织中?
使用角色层次来限制一些信息 No. 角色层次结构在这两个版本中都不可用。
创建10个自定义对象 Yes! 您创建的应用程序,对象和选项卡不计入客户限制。
使用REST API进行集成 Yes! 尽管您的GE和PE客户无法使用REST API连接到他们的组织,但您可以!

场景#2:支持代理时间跟踪

应用类型:
ISVforce
基于云:
使用服务云控制台的服务云
目标版本:
企业版
应用功能:
在Service Cloud Console中为支持代理提供时间跟踪日历。日历保持代理人的意识:

  • 时间表
  • 工作案例
  • 可用性

服务云控制台仅适用于EE,PXE和UE组织(请参阅文档),因此您无法将此应用出售给GE或PE客户。您可以将其出售给Sales Cloud Customers,但他们的受众较少。 Sales Cloud PXE客户默认具有控制台。 EE和UE客户可以购买控制台。

情景#3:供应商采购

应用类型:
OEM嵌入式
基于云:
Salesforce平台
目标版本:
企业版
应用功能:
通过帮助员工支持复杂项目的供应申请流程:

  • 跟踪零件的要求
  • 确定合适的供应商
  • 跟踪出价并选择出价

窍门问题! OEM嵌入式应用只能用于EE和更高版本的组织。

你抓住了所有这一切?

目标客户的版本,用户许可以及功能和权限集许可会影响您的应用的设计。
无论您是在构建ISVforce应用程序还是OEM嵌入式应用程序,都要问问自己:

  • 您想要在您的目标版本中使用的声明性功能是否可用?
  • 您想要使用的编程功能可用于目标版本中的AppExchange合作伙伴吗?
  • 您的设计是否停留在目标版本的限制范围内?

恭喜!你做到了,你准备好了测验!