25

我们正在研究建立一个适当的部署过程。

从我读过的内容来看,似乎有 4 种方法可以做到这一点。

  1. 复制和粘贴——我们不想这样做
  2. 使用 Salesforce Web 界面中内置的“包”机制
  3. Eclipse Force IDE“部署到服务器”选项
  4. Ant Script(这个还没试过)

有没有人对各种方法的限制提出建议。

您可以将所有内容都包含在 Web Interface 包中吗?

我们正在寻找部署以下项目:

  • 顶点课程

  • Apex 触发器

  • 工作流程

  • 电子邮件模板

  • MailMerge 模板——在 Eclipse 中似乎找不到这些

  • 自定义字段

  • 页面布局

  • RecordTypes(在网站或 Eclipse 中似乎找不到这些)

  • 选择列表项目?

  • 控制

4

7 回答 7

15

我推荐Force.com 迁移工具

以供参考:

迁移工具允许您使用 ant 目标在 salesforce.com 组织之间移动元数据。

于 2009-02-23T18:38:55.553 回答
15

我可以从最近的痛苦经历中谈到这一点。

打包:这是一种非常古老的方法,早于 Ant 和 Eclipse 所依赖的元数据 API。根据我们的经验,打包的唯一好处是定义您的项目。如果您使用的是 Eclipse(我们这样做,我推荐),您可以将您的项目定义为基于特定包。只要你记得在你的包中添加新组件,你的项目就会挂在一起

顺便说一句,让我们感到困惑的一件事是 package.json 的多种用途。我们注意到以下几点:

已安装的软件包:这些软件包有托管和非托管两种类型,用 SFDC 板上最近的一篇文章的话来说,它们确实是 ISV 将他们的东西部署到“外面”的各种未知组织中。托管包和非托管包都有限制,因此它们不适合和不需要在组织内从开发部署到生产,或者在您进行自定义开发并且不打算将代码分发到大型匿名库的任何情况下。

未安装的包:这是您在 Web UI 中单击“包”时看到的内容。这些,我们有时称为“开发包”,似乎只是将项目定义放在一起的一种方便方式。

无论如何,我得出的结论是我们的团队(定制开发,而不是 ISV)不需要任何形式的包。

其他形式的部署,包括 Eclipse 和 Ant,都依赖于元数据 API。从理论上讲,它们能够做完全相同的事情。实际上,它们似乎是互补的。Force.com 迁移工具,内置于 Eclipse 的 Force.com IDE 中,使部署尽可能简单(这不是很容易),并让您很好地了解它打算部署的内容。另一方面,我们看到 Ant 做了一些 IDE 做不到的事情。因此,两者都值得学习。

我们倾向于将所有项目保留在 SVN 中,并使用 SVN 结构作为项目定义(Eclipse 将使用它并尊重它)。我们使用 Eclipse,有时还使用 Ant 进行迁移。任何地方都没有明显的包装需求。

顺便说一句,还有一件事需要注意——并非所有组件都是可迁移的。有些东西必须在目标环境中手动重新配置。一个例子是基于时间的工作流。我认为队列和组也需要手动创建。同样,元数据 API 不能直接处理字段删除,因此如果您在源中删除了字段,则需要在目标中手动将其删除。还有其他情况。

希望有用——

——史蒂夫·莱恩

于 2009-03-20T03:49:16.527 回答
2

从 Spring '09 开始,元数据中不支持邮件合并模板,但记录类型支持。您会在文件中找到记录类型作为它们所属对象的 XML 元素。您列表中的所有其他内容均受支持,但有一个小例外。在 Spring '09 中无法编辑标准字段的选项列表值。请继续关注 Summer '09 功能公告的新闻。

更新:标准对象上的标准选项列表现在公开了元数据(从 API v16 开始): http: //www.salesforce.com/us/developer/docs/api_meta/Content/meta_picklist.htm

否则,Steve Lane 的反应是相当准确的。使用非托管包(Steve 称之为非安装包)的优势在于,当您将元数据添加到包时,它所依赖的元数据将自动添加。因此,更容易获取包含所有依赖项的全套元数据。如果您反复将元数据从一个组织(沙盒)移动到另一个(生产),Steve 的方法可能是最好的方法,当然也是当今最常见的方法。我经常使用非托管的“开发人员”包将我在一个组织中开发的东西移动到另一个不相关的组织。出于我的目的,我喜欢在 org 中定义包,而不是 Eclipse 项目/SVN。但这可能不会

杰斯珀

于 2009-03-24T22:12:52.097 回答
2

如果要将元数据从沙盒移动到生产环境,另一种选择是使用变更集。

当前对如何使用变更集有一些限制:

在两个组织之间发送更改集需要部署连接。目前,变更集只能在隶属于生产组织的组织之间发送,例如,生产组织和沙箱,或从同一组织创建的两个沙箱。

于 2012-02-28T23:44:42.027 回答
0

从文档:

必须管理软件包才能在 AppExchange 上公开发布并支持升级。一个组织可以创建一个可以由许多不同组织下载和安装的受管软件包。它们与非受管软件包的不同之处在于,某些组件被锁定,允许稍后升级受管软件包。非受管软件包不包括锁定的组件并且无法升级。此外,托管包会混淆订阅组织上的某些组件(如 Apex),以保护开发者的知识产权。

托管包的优势在于它允许您轻松地在多个 SFDC 组织中进行版本控制和分发。

于 2009-07-17T15:24:25.007 回答
0

我自己仍在为此苦苦挣扎。Migration Tool的IDE都没有解决我面临的主要问题,如下:

  1. 已安装的包无法部署到 Developer Org。您必须在 Dev Org 中手动安装它们。

    如果一个包无法安装在组织中(例如,因为它需要密码,如 Marketo Sales Insight,或者因为它已被弃用,如 Salesforce for Google Adwords)并且我们的应用程序依赖于它(如对对象中的字段的引用属于包),那么我们将无法部署该应用程序。

    解决方法:如果无法在 DEv Org 中手动安装包,则每个开发人员都需要自己的 Developer Sandbox。可以从 Salesforce 订购其他开发人员沙盒。(不过,客户必须愿意为它们付费……)

  2. 当沙箱从生产中刷新并且我们从服务器刷新我们的本地项目(连接到 SVN)时,旧沙箱中但不在生产中的所有其他文件/代码将被移动到新沙箱。

    解决方法:生产中所做的所有更改都必须在沙盒和开发者组织中复制。(有点痛,但还好……)

于 2012-11-27T18:05:16.127 回答
-1

在任何 Salesforce 生产部署中,元数据 API 都是更好的选择之一。有一些工具可以简化工作。查看这篇文章:https ://www.deploypkg.com/deploy-to-production/

于 2016-09-07T06:47:08.787 回答