多个开发人员如何有效地在一个force.com应用程序上工作?

时间:2010-08-02 15:43:30

标签: eclipse-plugin salesforce visualforce force.com

我所工作的公司正在构建一个托管的force.com应用程序,作为与我们提供的服务的集成。

由于force.com Eclipse插件提供的伪劣工具,我们在同一组文件上同时工作时遇到问题。如果2个开发人员正在处理同一个文件,则会给出一个他无法保存的消息 - 一旦他合并,他必须手动强制插件将他的更改推送到服务器,同时点击2“你真的确定吗”消息。

基本上,如果另一个人修改了他正在处理的文件,那么每次开发人员想要保存时,工具都会在变更中进行粗暴的工作并强制工作分钟。

我们目前正在通过让同事知道谁正在编辑文件来基本上“锁定”单个文件来解决这个问题。

感觉在这个时代必须有一个更好的方式。有没有人知道我们可以使用的不同工具集,我们可以改变的流程,或者我们可以做些什么来使这更容易?

6 个答案:

答案 0 :(得分:7)

在使用Force.com平台时,我目前的组织已经发现许多不同的方法可以根据具体情况而有效。我们都没有问题地使用Eclipse Force.com插件,并且发现以下设置可以正常运行。

我们有一个集中式版本控制系统,我们使用一系列ant命令部署到开发人员组织实例。然后我们根据工作范围将它分成几块,每个开发人员都有自己的开发组织,合并更改并定期测试它们,或者在一个开发组织中一起工作(如果你有2个开发人员应该不是主要问题)让你几乎立即整合。

如果你们都试图处理同一个文件,那么你应该进行结对编程,但如果同时处理类似系统的两个组件,共享相同的组织可以让你通过创建快速灵活的方式进行开发您希望使用的系统骨架,然后单独充实细节。

我已广泛使用这两种方法而且我说,根据具体情况,工作得非常好。

答案 1 :(得分:6)

每个开发人员都可以在单独的开发沙箱中工作(如果您有企业版,我认为费用中包含10个完整配置沙盒和数量有限的数据?)。您可能会不时合并您的更改(来自任何版本控制系统的diff工具应该足够)并在集成环境中测试它们。链开发 - >整合 - >系统测试 - > Q& A->生产也可以用于其他原因。

如果例如2个人在同一个触发器上工作,可以使用单独的技巧来考虑。我在开发人员的“DEV 401”课程中学到了这一点。

  1. 将所有逻辑移至课程。认真。它们也可以更简单地进行单元测试。
  2. 向User对象添加自定义字段(多选选项列表)。值应该等于人们正在处理的每个单独的功能。它最多可容纳500个值,因此您应该是安全的。
  3. 对于开发者1的用户帐户,在选项列表中设置“feature1”。为另一个人设置“feature2”。
  4. 在触发器中写一个if来测试每个选项列表值的存在,并进入或离开相关类的调用。这会浪费1个查询,但您确定只会调用您想要的代码。
  5. 每个开发人员都在他自己的类文件中继续工作。
  6. 对于两种功能的集成测试,只需将多选项设置为包含两种功能。
  7. 我发现这个技巧特别有用,因为其他人的代码被证明是非最优的并且吃了太多资源。我刚刚在我的用户帐户上停用了他的功能并继续工作。

    这个技巧也可以在某种程度上应用于Visualforce页面(如果你可以将它们分成组件)。

    如果您不想浪费查询 - 请使用“用户的名字包含X”之类的逻辑;)

答案 2 :(得分:6)

我们遇到了完全相同的问题,我们有一个由10个开发团队组成的团队在force.com应用程序上工作,该应用程序包含大量顶级类(> 300)和VF页(> 300)。

我们开始使用Eclipse插件但发现它:

  1. 每次调用保存时,在美国境外工作的速度太慢> 5节
  2. 与10位开发人员组成的许多合并问题
  3. 接下来,我们尝试在我们自己的沙箱中进行开发,然后合并代码。对于一个小项目来说这是可以的,但是当你有很多文件并且需要在沙箱之间进行更改时,就不可能像force.com开发工具那样进行管理,这是force.coms部署/构建工具。没有自动化所有手册。也没有简单的方法在沙盒之间移动数据。

    我们的第三种方法是在浏览器中编辑所有VF页面和Apex代码。 (不使用他们的嵌入式编辑器显示在页面的下半部分,因为这是错误和缓慢的)但只是使用常规编辑器设置>开发> Apex课程。这工作正常。为了补充这一点,我们还有一个预定的工作,它将下载我们的所有代码并将其保存到我们的SVN存储库中。我们还构建了一个工具,允许我们单击桌面上的文件夹并压缩其内容并将其作为静态资源部署给我们。

    然而,这种方法仍有其缺点,即在云中开发是缓慢而痛苦的,他们(开发即服务)的(salesforce)理念是疯狂的。此外,我们没有真正的SCM我们只将它作为备份。

    底线是force.com是CRM而不是开发平台,如果可以的话?跑,逃跑,尽可能快地离开它。将它用于除CRM以外的任何事情都比较麻烦。甚至他们的口号“无软件”也让我每次都笑了

答案 3 :(得分:1)

我不熟悉force.com,但您无法使用源代码管理并将所有文件从force.com下载到您的存储库中。然后你们都可以完成你的工作,并将你的更改合并回主线。然后,只要有必要将主线推送到force.com?

答案 4 :(得分:1)

查看“开发生命周期指南:Force.com平台上的企业开发”。您可以在developer.force.com的documentation page上找到它。

答案 5 :(得分:0)

您可能需要考虑处理单独的静态资源和页面,然后在编辑对象,类等时要小心。如果您的大部分开发都发生在客户端代码(页面,静态资源,闪电组件/应用程序)上,您可能会对此项目感兴趣:https://github.com/bvellacott/salesforce-build。无论如何,我强烈建议使用版本控制。如果不是在服务器上,那么至少在你的机器本地,以防你的同伴覆盖你的工作。