Salesforce部署最佳实践?

时间:2011-08-09 20:19:10

标签: salesforce

我们目前正在尝试使用Salesforce平台来替换多个内部CRM工具,并且已经部署了一些代码。随着我们的代码库的增长,我们开始感受到其他人在代码组织方面所描述的一些痛苦(没有良好的命名空间/包装等)。我们是企业级客户,虽然我们目前的实验目前只涉及一个部门,但我们希望它最终会成长为整个公司。

在一个拥有3-4个完全不同的销售团队的组织中,每个团队都有不同的业务流程,因此编码不同(在SF术语中:记录类型,布局,触发器等),管理部署的好方法是什么? “套餐”是否适合这种情况,或者整个公司是否应该在同一个SF Org /名称空间内运行良好?

2 个答案:

答案 0 :(得分:5)

通常,您不会享受开发体验,因为您有三个团队,每个团队都会尝试建立自己的系统。每个人的发展都会略有不同,因为他们会找到不同的解决办法来解决将要出现的许多问题。

您必须找到一种方法来命名您的触发器和类:为每个团队选择一个前缀来分隔他们的代码。

使用较少的大类:在使用传统OOP(例如Java)编程时,我喜欢小型有意义的类。但在Salesforce中,管理类需要很大的开销。此外,所有课程只有一个大文件夹(yuck)。所以,我现在构建更大的类文件。在每个文件中,我都包含测试代码。我将触发器测试代码放入一个对同一对象进行操作的类(例如控制器)中。

要跟踪更改并执行代码审核,您可以使用以下技术: 使用Force IDE结合版本控制系统,如CVS,SVN,Mercurial或Git 设置主要生产项目以包括所有内容(右键单击项目... Force.com ...项目属性。在首选项对话框中展开Force.com并选择项目内容。按添加/删除并添加所有内容)。我没有以这种方式将配置文件更改从IDE部署回生产。这样做可能不是一个好主意。但我确实推回了顶级类,触发器和页面。每次保存的往返都很慢! 现在使用源代码管理系统记录更改,但也比较版本。

从沙箱部署到生产:我放弃了使用UI部署工具。它们适用于简单的事情,但我发现它无法处理更复杂的更改(新对象,选项卡,应用程序,触发器,类,页面,布局)。我将更改从沙箱逐个迁移到生产中。有三个团队,这意味着您可能需要一个部署最终变更的中央团队?

有很多方法可以隔离您的系统,包括记录类型。这些要求代码包括硬编码的SF Id或使用字符串执行查找。在这两种情况下,您都不希望在整个代码中分发这些字符串或ID。想想你需要重构时的噩梦。相反,创建一个Globals类并在此处放置所有硬编码的名称和ID。至少你可以进行更合理的搜索和替换。

我喜欢SF。有些事情很容易做到。但是一些开发任务似乎需要很长时间。祝你好运

答案 1 :(得分:2)

通常,您希望确保每个人都在一个特定的沙箱中运行其代码和配置,因此您可以确保所有不同的部分一起正常工作,并且不会导致不必要的影响。记录类型是一种特别方便的机制,因为您可以使用它们来确定在特定记录的触发器内运行哪些逻辑,结合良好的命名方案,如果已存在某些内容,人们将知道将代码放在何处,例如更新前触发帐户比两个更容易维护。调用触发器“Account_BeforeUpdate”将让每个人都知道它是什么,所以如果他们需要使用它们,他们就可以将他们的代码放入现有的触发器中,只在需要时才对某些记录类型进行操作。

在部署之前,我总是要做的一件事就是在Eclipse中沿着沙箱设置生产项目,确保它拥有我需要的一切(布局等)。然后,您可以使用diff工具来准确检查沙箱和生产之间存在哪些变化,这些变化是非常有价值的知识。然而,需要注意的是,在切换沙箱后,布局等通常会在生产中更新,这意味着您可能必须小心部署它们。

通常,对象是我移动的第一件事,因为API是非破坏性的,您可以确定不会从生产中移除任何重要字段!

就我个人而言,我真的很期待在Salesforce中有一些不错的版本控制,如果你有多个开发人员在同一个区域工作,你总是需要警惕,即使它试图防止你覆盖别人的变化它已经发生了有几次给我们。希望其中一些有用!