2011-12-09 47 views
4

每當SF對象發生任何更改(添加/更新/刪除)時,我都想要監聽舊系統中的更改。所以我創建了出站消息和工作流程。但在工作流程中,如果刪除對象,我不會看到任何方法觸發。Salesforce觸發記錄刪除工作流程

無論如何,我可以觸發記錄刪除出站郵件?我知道聽說可以通過觸發完成。但我不想爲此編寫頂點代碼。

回答

5

據我所知,無法完成工作流操作與工作流規則分離(您甚至可以重複使用它們),因此他們可能不會收到事務範圍,並且他們執行記錄時已經過去了,行動中的任何引用都會指向一個不存在的數據。因此,我知道如何去做的唯一途徑就是觸發。

+0

很好的解釋!我同意,你必須寫一個刪除觸發器。這裏有一個[鏈接](http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_triggers_defining.htm)給參考。 –

1

也許一種折中的體系結構會寫一個非常小且簡單的刪除觸發器,該刪除觸發器只是將刪除的記錄複製到某個新的自定義對象中。新的自定義對象觸發您的工作流程規則,從而發送您要查找的出站郵件。與此唯一的問題將定期清理您的自定義對象數據,隨着您從其他對象中刪除記錄,這些數據將會增大。換句話說,您的「劃痕」對象只需要定期清潔 - 這可以通過批量Apex每晚進行。

這裏有一個刪除觸發器,會做使用機會的伎倆爲例:

trigger AfterDelete on Opportunity (after delete) 
{ 
    List<CustObj__c> co = new List<CustObj__c>(); 
    for(Opportunity o : Trigger.old) 
    { 
     CustObj__c c = new CustObj__c(); 
     c.Name = o.Name; 
     c.Amount__c = o.Amount; 
     c.CloseDate__c = o.CloseDate; 
     c.Description__c = o.Description; 
     // etc. 

     co.add(c); 
    } 

    insert co; 
} 

這是不理想,但至少這會節省你不必編寫自己的基於觸發器的出站郵件。這些只能使用@Future註釋來完成,因爲直接來自觸發器的標註是被禁止的。希望有所幫助。

1

在觸發器刪除事件中寫入一封郵件發送。你有不到1個小時。

+0

你能否提供一個關於如何創建一個觸發刪除事件的例子或者一些附加信息?,你的回答重申了「我知道已經聽到它可以通過觸發完成」的部分問題。 – jeremy

2

這是一種解決方法。但是,這將只能捕獲通過std進行的刪除。 Salesforce UI。

1.創建自定義複選框字段「已刪除」
2.使用自定義VF頁面覆蓋Del鏈接,首先將記錄狀態更新爲「已刪除」,然後刪除該記錄。
3.使用「被刪除」字段寫入工作流程規則。