【问题标题】:Salesforce update master record when child objects updated更新子对象时 Salesforce 更新主记录
【发布时间】:2012-05-21 12:49:40
【问题描述】:

我有一个程序可以提取 Salesforce Case 对象,以及它们的 CaseCommentSolution 对象。我还有一组过滤器,可以减少结果(关键字、fromDate、toDate 等)。我遇到的问题是 Salesforce 功能在我为该案例编辑或创建新评论时既不更新案例 LastModifiedDate 也不更新 SystemModstamp 字段。

最直接的解决方案是分别提取案例、评论和解决方案,然后从评论和解决方案中提取 ParentId (CaseId),使用案例或解决方案的最大 lastModifiedDate 手动修改这些案例 ID,然后合并所有案例。但是这个过程有点例行公事,所以我在寻找另一个解决方案,Salesforce 和客户端。

【问题讨论】:

    标签: java salesforce


    【解决方案1】:

    如果您想避免使用触发器,您可以使用 Workflow 进行“触摸”。从 salesforce.com 的 Spring '12 release 开始,支持跨对象工作流。因此,您可以在案例评论上创建一个工作流规则,以更新父案例上的字段。您可以专门为这个感人的过程创建一个自定义字段或重复使用任何其他字段。

    例如,要将案例描述字段用作触摸字段,您可以执行以下操作。

    1. 在案例注释对象上创建一个新的工作流规则,以便在创建或编辑记录时触发。
    2. 将工作流规则的条件指定为创建日期不等于 null 时的条件。
    3. 为字段更新创建新的工作流操作。
    4. 指定对象应为大小写和字段说明
    5. 在公式中输入 Parent.Description 作为值。这会将案例描述设置为它自己的值。有效地不更改记录。

    关于通过 API 更改 LastModifiedDateSysetemModstamp,我不确定这是否可以作为正在进行的界面的一部分进行。 Salesforce 将允许您通过 API 更新这些审计字段,但您必须联系他们才能启用该功能。

    salesforce 在线文档涵盖the audit fields in more detail。它说:

    如果您将数据导入 Salesforce 并需要设置审计字段的值,请联系 salesforce.com。一旦 salesforce.com 为您的组织启用此功能,您就可以为以下对象设置审计字段值:Account、CampaignMember、Case、CaseComment、Contact、FeedComment、FeedItem、Idea、IdeaComment、Lead、Opportunity 和 Vote。唯一不能设置值的审计字段是 systemModstamp。

    【讨论】:

    • 感谢您的回答,您的解决方案有效,但您知道如何在 SF 方面做到这一点吗?
    【解决方案2】:

    我能想到的最简单的方法是在创建或编辑 CaseComment 时只“触摸”(更新而不对数据进行任何修改)案例记录。这可以通过触发 CaseComment 来完成:

    trigger CaseCommentAIAU on CaseComment (after insert, after update) {
        Set<Id> caseIds = new Set<Id>();
        for ( CaseComment cc : Trigger.new ) {
            caseIds.add(cc.ParentId);
        }
        Case[] caseUpdates = [select id from Case where Id in :caseIds];
        update caseUpdates;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多