5错误的Salesforce开发人员可以承诺或应该避免

5错误的Salesforce开发人员可以承诺或应该避免

这款Salesforce博客是开发商在Force.com开发和定制方面的经验。日常开发人员面临的问题以及它们犯下的错误有时对广泛的开发人员和管理员有助于有趣。

所以让我们开始史诗!

不要纠结:

曾几何时 我正在VF页面上开发,并提供了一个报告的链接(VisualForce页面中的标准Salesforce报告:

因此,我在我的vf页面中硬编码了报告的网址。 URL在沙箱中正常工作,我很开心。一旦我完成了开发,我将迁移到生产环境的更改,最后当我在网站上测试了应用程序时,我无法查看单击链接的报告。

但我稍后知道我无法修改生产环境中的APEX类,我需要尽快修复它,所以这一切都是一个大的烂摊子!

在仔细审查障碍之后,我发现我已经硬编码了我的报告网址,因为环境发生了改变了URL已停止工作。

所以我终于想到了使用动态URL的概念,并使用下面的一些代码片段:

“url.getsalesforceBaseURL()。ToexternalForm()+'/'+ ReportId”

最后的判决:> DO NOT HARDCODE!!!

避免SOQL错误:

在开发中,您遇到了错误的错误,例如“system.limitexception:太多SOQL查询:101”?

这个错误 system.Limitexception. :太多SOQL查询:101是由于事实,您正在击中州长限制。

我们尊敬的州长限制说,您可以在上下文中运行总共100个SOQL查询,您正在击中限制。

在对同一个彻底的研究之后,我发现触发的所有触发器将在单个上下文或呼叫中进行计数。我们需要确保触发的SOQL总数应小于100。

为了通过这一点,我多次更改了我的代码,以这样的方式触发必须小于100。

有时我也喜欢如果(只有我们需要更改上下文)在需要异步运行代码时,使用@future注释。

我肯定总是那个我使用的SOQL查询不应该在循环中。

有一些最佳实践,您必须遵循避免此错误(以避免击中调速器限制)。

//wiki.developerforce.com/page/Best_Practice:_Avoid_SOQL_Queries_Inside_FOR_Loops

http://salesforcedeveloperblog.blogspot.com/2011/05/best-practices-of-triggers.htmhttp://www.salesforce.com/us/developer/docs/apexcode/Content/apex_triggers_bestpract.htm

http://wiki.developerforce.com/page/Apex_Code_Best_Practices

//www.salesforce.com/us/developer/docs/apexcode/Content/apex_gov_limits.htm

 始终遵循上述实践,以确保您在工作场所享受微笑..

具有挑战性的部分是人们无法增加总督限制,只能遵循最佳实践。

Streamline在同一对象上的多个触发器

 所以这是一个更棘手的情况:

一旦我在尊重的对象案例上工作(简而言之),可以自动为客户经理分配。所以我写了一个“在插入前的”触发器。

我发现有时分配的客户经理正如预期的那样,有时候不会!

我被困惑了!!

就像始终我开始挖掘检查调试日志,手动测试等等。

最后,调试日志是一个“Maseeha”告诉我,我确实有两个触发器,因为哪个系统无法识别执行顺序。 可能这些代码由其他一些开发商起草(当然是我当前和以前的同事)起草。 我坐在他们身边,最后突出了一个触发器,对象上具有相同的事件。

因此,在实践中,避免对象上具有相同事件的多个触发器,因为它可能有时脱掉您。

ullkify代码

因此,在我的Salesforce发展职业的最初日期,我遇到了非常可怕和良好的学习当然为我。

让我们开始给你一些瞥见我的书面代码,只处理一个记录 :

trigger BeforeInsert_Account on Account (before insert){

//This only handles the first record in the Trigger.new collection but if more than 1 Account initiated this trigger, those             additional records will not be processed

Account objAccount= Trigger.new[0];

List<Contact> contacts = [SELECT ID,salutation,firstName,lastName,email FROM Contact WHERE
 accountId = :acct.Id];

//and something something

} 

我测试了触发器,它的工作正常,我的工作是由我的工作完成的,然后突然有一天触发器击中了调速器的限制。

就像总是我被困惑了。我知道,我的一个甜蜜的同事已经写了一批插入账户,这是整个唯一的原因。

因为我无法问我的甜蜜同事撤消批处理课程,我需要做点什么。

挖掘后,我发现如果一批记录调用我的APEX代码,则所有这些记录都需要作为批量处理,击中调控器限制。

问题是,只有一个帐户记录被处理,因为代码仅在触发器中仅明确访问触发器中的第一个记录.New [0]。相反,触发器应正确处理触发器中的整个帐户集合。

以下是如何从批处理处理所有传入记录的示例:

trigger BeforeInsert_Account on Account (before insert){

//This only handles the first record in the Trigger.new collection but if more than 1 Account initiated this trigger, those additional records will not be processed

Account objAccount= Trigger.new[0];

List<Contact> contacts = [select ID, salutation,firstName,lastName,email FROM Contact 
WHERE accountId = :acct.Id];
//and something something……
}

请注意,该代码的该修订版本如何遍历整个触发器。使用用于循环的整个触发器。现在,如果使用单个帐户或最多200个帐户调用此触发,则所有记录将被正确处理。

所以始终缩小策略来写宽容的代码。这是练习,虽然它不容易但是很好!

遵循申请表现的一般设计指南

根据我在设计VisualForce的经验,您可以使用良好的弹出窗口和图像开发一个非常丰富的UI,但是当用户开始使用它时,它将成为NetTlesome用于单击或导航到按钮。

我已经写了这些一般指导方针以避免绩效影响:

  • 始终在特定任务周围设计页面,在任务之间具有明智的工作流程和导航。该点应在任何地方连接。
  • 切勿使用功能和数据过载页。 VisualForce页面具有无界数据或大量组件,行和字段具有较差的能力和性能,并且它们冒着击中调速器限制的视图状态,堆大小,记录限制和总页面大小。
  • 始终尝试推回请求以包括非基本功能。
  • 必须构建原型以验证疑虑。

 参考:

//developer.salesforce.com/blogs/developer-relations/2015/01/apex-best-practices-15-apex-commandments.html

Salesforce Sandboxes  - 管理中的主要播放器&部署定制

Salesforce沙箱es - 管理中的主要播放器&部署定制

什么是沙箱?

对于开发人员/管理员的沙箱就像一个用于孩子的游乐场,它允许开发人员/管理员自定义,播放和配置应用程序开发环境,而不会影响实际的生产发布版本。 Salesforce中的沙箱用于应用程序开发,代码管理,版本控制,测试和培训,而不会影响Salesforce生产组织中的实际数据和应用程序。

沙箱的类型:

  开发人员沙箱 Developer Pro Sandbox. 部分复制沙箱 全沙箱
他们的用法是什么? 用于孤立环境中的编码和测试 用于孤立环境中的编码和测试 用于测试环境和质量保证任务 用于测试环境和性能和负载测试和分期
它们包括生产环境的内容是什么? 生产组织配置(元数据)副本。 生产组织配置(元数据)副本。它们具有比显影剂沙箱更大的存储限制。 生产组织配置(元数据)的副本,以及Sandbox模板定义的生产数据的子集。 生产组织的复制品。
您可以创建沙箱的许可证  ·完整沙箱·PartialCopy沙箱·开发人员专业沙箱·开发人员沙箱 ·全沙箱·PartialCopy沙箱·开发人员专业沙箱 ·全沙箱·PartialCopy沙箱 ·全沙箱

SDLC过程中的沙箱

在Salesforce App开发生命周期中,采用各个阶段的代码开发,单元测试,UAT等。一个简单的例子是: 

   在不同的团队同时在多个领域工作的情况下,最终必须合并到一个组织中,这是一个单一的生产环境,随着时间的推移变得相当复杂。它克服了这个暂存平台,以压抑地测试性能而不影响生产版本。相同的示例如下所示: 

管理Sandboxes释放管理过程

虽然没有拇指规则或框流程,但在哪些组织依赖于处理其发布管理系统的过程中。但是仍有一些点来考虑运行该过程的沙箱:

  • 每次释放后做出刷新沙箱,以便我们确保利用新功能并确保我们的环境与新的更改兼容。
  • 此外,它’S推荐使用策略使ORG发布与Salesforce版本对齐,以减少刷新沙箱的努力。
  • 应准备好刷新后运行列表,并在新版本后刷新沙箱。很少应该包括的东西是:
    • 数据屏蔽需求
    • 用户配置文件修改
    • 测试数据加载
    • 部署计划
    • 关闭计划的作业
    • 管理出站电子邮件。

希望这可以帮助您概述Salesforce Sandboxes的概述。

在AppExchange上发布应用程序

在AppExchange上发布应用程序

什么是appexchange?

appexchange.是世界上第一个按需应用共享服务。它提供了一种方法来浏览,测试驱动器,共享和安装在Salesforce的按需AppExchange平台上开发的应用程序。合作伙伴,开发人员以及选择参与的任何人都可以在AppExchange目录上提供他们的应用程序。此目录为Salesforce用户提供了一种简单的方法来查找和安装应用程序,以扩展其使用AppExchange平台到客户关系管理(CRM)和超越的新领域。

注册为Salesforce.com合作伙伴

这样做,去 http://www.salesforce.com/partners/join/  并填写表格。您将通过电子邮件发送到Salesforce.com Partner Portal的电子邮件,这允许您在合作伙伴生命周期中进行各种必要的东西,例如创建特殊ORG,日志记录合作伙伴支持案例,并获得特殊培训材料等。

安装许可证管理应用程序

如果您将在AppExchange上发布应用程序,请安装免费许可证管理应用程序(LMA)应用程序。使用LMA,您可以每次安装或卸载包装(应用程序)时自动接收通知,从而让您跟踪用户并轻松地通知它们您发布的任何升级。

在AppExchange上发布应用程序

要在AppExchange上提供您的应用程序或咨询服务,您必须创建一个列表:

  1. 登录后,将您的AppExchange发布组织(APO)或组织登录。
  2. 创建提供者配置文件。
  3. 创建一个新的列表。
  4. 如果您的列表是应用程序而不是服务,请提交应用程序包以获取安全审核。
  5. 应用程序批准后,单击“公开”以使您的列表可供AppExchange社区使用。公共咨询服务不需要审查。

创造apo.

签名作为合作伙伴后,创建一个AppExchange发布ORG(apo.)。在合作伙伴门户中,您将在标有屏幕顶部看到一个大按钮,“创建测试org”。对于ORG类型,选择“Partner Developer Org”。您将通过电子邮件收到新凭据。在继续之前,请务必登录并设置密码。请注意,系统将为您选择用户名。如果你不喜欢它,请随时改变它。此组织的目的是帮助您在AppExchange上发布列表。

appexchange.发布组织在集线器上运行并发出辐条模型。 apo是集线器。它包含有关您公司的所有信息,但不包含有关您应用的任何信息。应用程序应始终在您的APO以外的org中开发。当您准备发布应用程序时,只需点击“您的组织”链接并添加将应用程序包到APO的开发人员版本。连接ORG后,您将能够在Hub APO ORG中查看辐射符号的信息。

创建提供者配置文件

创建AppExchange提供程序配置文件将允许您列出并发布您的AppExchange应用程序。浏览您的列表的人员有关提供程序选项卡的配置文件信息。您还可以为链接组织创建提供者配置文件,尽管此配置文件不会公开。要创建AppExchange配置文件,请登录您的伴侣Dev Org,然后单击最新包的详细信息页面上提供的链接;然后单击“开始发布”按钮以创建AppExchange提供程序配置文件。

创建一个新的列表

列表是在AppExchange上推广您的应用程序或咨询服务的主要营销工具。您添加到您的列表中的信息越多,用户就可以找到它的可能性越有可能。

有一个AppExchange提供程序配置文件,您可以进入发布选项卡,您可以在其中创建新列表。在应用程序通过安全审核之前,新的列表始终是私密的。私人,您的应用程序在AppExchange上有一个链接(您可以发送给潜在用户),但它未公开列出,并没有显示在搜索中。

要在AppExchange上创建列表,您必须登录网站的发布控制台。如果您是应用程序的开发人员和负责创建列表内容的人(AKA“发布者),则只需使用Developer Edition凭据登录AppExchange即可启动列表。或者,如果委派这些角色,开发人员和列表发布者都可以在应用程序上运行并并行列出,以其各自的凭据登录发布控制台,然后将两个链接在一起。

安全评论

在Salesforce批准任何列表之前,该应用程序必须从安全审查团队中进行测试。从“提供”选项卡中,我们可以将与列表相关联的程序包提交给AppExchange进行批准。自动生成电子邮件并发送到提交者询问要完成的​​CheckMarx安全测试和调查问卷。如果存在APEX类和VisualForce组件等,则包括一些关于应用程序的一般问题。如果应用程序失败第一轮,则别担心;返回并修复CheckMarx测试或从AppExchange团队注意到的问题。

安全审核过程按照以下步骤操作。

1)准备安全审查。
  • 阅读本章中的安全指南。
  • 查看我们的安全云开发站点上列出的免费资源。
  • 查看合作伙伴社区的安全审查中心以进行准备提示。
  • 查看要求清单。
  • 查看OWASP十大清单。
  • 在Force.com平台上开发的代码运行免费自助服务源代码分析:
  • 对与Force.com集成的外部Web应用程序进行免费Web应用程序扫描。
  • 手动测试您的应用程序,以确保它符合工具未找到的审核要求
  • 修复测试期间发现的任何问题。
 2)启动安全审查。
  1. 使用APO的凭据登录AppExchange。
  2. 单击右上角的名称,然后从下拉菜单中选择发布控制台。
  3. 如果您的应用程序包含托管包,请单击要提交的包版旁边的“开始审核”。
  4. 如果您的应用程序使用Salesforce API并且不包含托管包,请完成以下步骤。
    - 单击私人列表中的“提供”选项卡。
    - 选择您的应用程序不是包,只使用Salesforce API。
    - 单击开始审核。
  1. 对于每个应用程序,您将完成安全检查表和问卷。提供具有完全配置的测试环境的审核团队,包括访问信息,登录凭据以及所有必需的自动扫描。
  2. 支付年度上市费(对于付费应用程序)和一次性安全审查费用。

如果您的应用是由于随后的安全审查,请在合作伙伴社区中记录案例。

3)审查结果

有三种可能的结果。

  • 得到正式认可的:您将立即允许在AppExchange上列出您的应用程序。您可能会提供API令牌来访问专业版帐户。有关合作伙伴计划的更多信息,包括资格要求,请访问www.salesforce.com/partners。
  • 临时批准:  确定了低或中等风险问题,可以很容易地解决,不会对Salesforce或其客户构成重大风险。您将被允许在AppExchange上创建一个公众列表。但是,未能在指定时间段内纠正未指出的问题将导致从AppExchange删除应用程序。您可能会提供API令牌来访问专业版帐户。
  • 不批准:  在测试阶段确定了高风险问题。在AppExchange安全团队的解决和审核所有问题之前,您将不得在AppExchange上列出您的应用程序。如果应用程序已在AppExchange上列出,您将提供60天来解决问题。您不会收到API令牌以访问专业版帐户。

 去公众

一旦您通过了安全审查,您可以登录AppExchange并使您的列表直播。这是从上面的屏幕截图的发布选项卡完成的。在此选项卡上您的公共列表和您的私人列表。在私人列表选项卡上,该应用程序将有一个链接说“公开”。此时,该应用程序可在AppExchange上找到任何和所有才能查看。此外,Salesforce在分发的每周AppExchange摘要电子邮件中包含此最新添加,为社区中的应用程序提供了一些免费新闻。

Demand Tools

需求工具

什么是需求工具

需求工具是领先的数据质量&Salesforce.com客户的数据清理工具集。需求工具是一套10个以上的个人数据质量模块,可控制,标准化,重复,导入和通常操作Salesforce和/或Force.com数据。旨在在开发人员,专业,企业和无限版本的Salesforce中工作。需求工具是基于客户的应用程序,即Salesforce管理员在其Microsoft Windows计算机上安装。

如何安装需求工具: -

Step 1: Go to //www.crmfusion.com page.

步骤2:单击“下载跟踪”选项卡。

步骤3:下载需求工具2.7(32位或64位)。

步骤4:双击“需求”工具设置,然后按步骤步骤遵循说明。

安装成功后,窗口出现如下: -

现在,如果您想使用带有Sandbox的Sandbox进行踪迹,首先需要单击代理/端点设置,然后单击“使用自定义端点”复选框,然后输入“自定义端点”,然后按“确定”按钮,然后单击“沙箱登录”复选框,然后单击“沙箱登录”复选框然后输入您的Salesforce用户名和密码,然后单击“登录沙箱”按钮。

笔记: 自定义端点如 -   //test.salesforce.com/services/Soap/c/39.0
在此之后,新窗口已打开如下: -

在此,请输入您的Salesforce.com组织ID和填写此后,单击“创建试用帐户”按钮。此试用帐户仅在创建日期仅有五天。

需求工具模块

需求工具具有模块的数量,但下面描述了一些重要的模块: -

需求工具按摩器模块用于修改数百或数千个现有记录,而无需导入或导出。喜欢,使用商业地址字段的数据更新送货地址字段。该模块可用于执行数据标准化函数,以将数据跨越记录和将帐户地址信息传输到相关联的联系人和从多个字段的字段值转换为一个。您可以创建并保存自定义方案以供将来使用。

MasSeffect模块用于执行Salesforce中的Insert / Import,Update,Upsert,Delete,导出操作。此模块用于许多重要的情况,如您希望将数据从传统系统迁移到Salesforce并插入驻留在PC上本地的Salesforce内容(在.csv文件中),并且您可以通过创建以来将来创建和保存现场映射以供将来使用用于所有导入和更新的模板。

电网模块用于更新质量记录,易于使用基于网格的数据视图。在这里,可以在将更新推送到Salesforce之前,直接在网格内直接更新字段。它主要设计用于一次最多约20 k录制。如果您录制了超过20 k,您也可以使用它,但需要更多处理时间。您还可以在Salesforce中的记录上执行删除操作。

重新分配的所有权模块可用于使用一组用户指定的条件或ID的输入文件来批量传输Salesforce及其相关子对象中的任何对象的所有权,以确定应重新分配哪些记录。可以指定单个新所有者,或者可以随机分配给多个新所有者或通过指定匹配条件分配一组记录。您还可以创建任务或摘要事件以跟踪父对象记录上的所有权更改。

需求工具MassBackup模块允许用户使用用户友好的界面备份,它会在本地计算机上创建Salesforce数据的.mdb备份文件。创建的.mdb数据库是完全关系的,可用于不同类型的集成。使用32位的需求工具支持此模块。但结果.mdb文件的总体大小也不能超过2GB。

Bulkbackup模块还用于备份Salesforce数据,但它使用批量API导出数据并保存到.mdb(仅限32位)或.csv文件。它具有用户友好的界面,此模块不适用于Salesforce专业版(PE)用户,因为Salesforce在专业版中不支持Bulk API。

报告编辑模块是一个简单的模块,提供对所有自定义Salesforce报告的访问,允许使用重命名报告,更新报告说明和删除报告等一些基本操作。只有在其Salesforce配置文件上的“修改所有数据”的用户将能够使用报表编辑,因为Salesforce的复杂报告权限结构。