我有一个程序可以提取Salesforce Case
个对象及其CaseComment
和Solution
个对象。此外,我有一组过滤器,可以让我减少结果(关键字,fromDate,toDate等)。我遇到的问题是,当我编辑或创建该案例的新评论时,Salesforce功能既不会更新案例LastModifiedDate
也不会更新SystemModstamp
字段。
单独提取案例,评论和解决方案的最直接的解决方案然后从评论和解决方案中提取ParentId(CaseId),使用案例或解决方案的max lastModifiedDate手动修改这些CaseID,然后合并所有案例。但是这个过程有点常规,所以我在寻找另一个解决方案,包括Salesforce和客户端。
答案 0 :(得分:4)
如果您想避免使用触发器,可以使用Workflow进行“触摸”。截至salesforce.com的Spring '12 release,支持跨对象工作流。因此,您可以在案例注释上创建工作流规则,以更新父案例中的字段。您可以专门为此触摸过程创建自定义字段,也可以重复使用任何其他字段。
例如,要将“案例描述”字段用作触摸的字段,您可以执行以下操作。
关于通过API更改LastModifiedDate
或SysetemModstamp
我不确定这是否可以作为正在进行的界面的一部分。 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。
答案 1 :(得分:3)
我能想到的最简单的方法是只要在创建或编辑CaseComment时“触摸”(更新而不对数据进行任何修改)Case记录。这可以通过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;
}