2012-05-21 88 views
1

我有一個程序,用於取消Salesforce Case對象以及它們的CaseCommentSolution對象。此外,我有一套過濾器,可以讓我減少結果(關鍵字,從日期到日期等)。我遇到的問題是Salesforce功能在我編輯或爲該案例創建新評論時不會更新案例LastModifiedDateSystemModstamp字段。當子對象更新時Salesforce更新主記錄

最直接的解決方案單獨拉取案例,評論和解決方案然後從評論和解決方案中提取ParentId(CaseId),手動修改這些CaseID與案例或解決方案的最大lastModifiedDate,然後合併所有案例。但是這個過程有點常規,所以我尋找另一個解決方案,Salesforce和客戶端。

回答

4

如果你想避免使用觸發器,您可以使用工作流做「接觸」。截至salesforce.com的Spring '12 release支持跨對象工作流程。因此,您可以在案例評論中創建工作流規則,以更新父案例中的字段。您可以專門爲這個觸摸過程創建一個自定義字段,或重新使用任何其他字段。

例如,要使用「案例描述」字段作爲觸摸字段,您可以執行以下操作。

  1. 在案例註釋對象上創建一個新的工作流規則,以在創建或編輯記錄時觸發。
  2. 指定創建日期不等於空時工作流規則的標準。
  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是唯一無法爲其設置值的審計字段。

+0

感謝您的回答,您的解決方案的工作,但你有任何想法如何做到這一點不是在SF方? – mishadoff

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; 
}