Рабочий процесс Salesforce Trigger при удалении записи - PullRequest
4 голосов
/ 09 декабря 2011

Я хочу прослушивать изменения в моей прежней системе всякий раз, когда есть какие-либо изменения в объекте SF (добавить / обновить / удалить).Итак, я создал исходящее сообщение и рабочий процесс.Но в рабочем процессе я не вижу способа выстрелить, если объект удален.

Можно ли в любом случае вызвать исходящее сообщение при удалении записи?Я знаю, что слышал, что это может быть сделано триггером.Но я не хочу писать для этого апекс-код.

Ответы [ 4 ]

5 голосов
/ 09 декабря 2011

Насколько мне известно, это невозможно сделать, действия рабочего процесса отделены от правила рабочего процесса (вы даже можете использовать их повторно), поэтому они, вероятно, не получают область транзакции, и когда они выполняют запись, запись уже пропала, и любой ссылка внутри действия будет указывать на несуществующие данные. Таким образом, я знаю, как это сделать, только с помощью триггера.

2 голосов
/ 18 января 2013

Вот обходной путь. Однако это будет возможно только для удаления, сделанного с помощью стандартного ввода. Пользовательский интерфейс Salesforce.

1.Создайте пользовательский флажок «Удалено»
2. Переопределите ссылку Del с пользовательской страницей VF, которая сначала обновляет статус записи на «Удалено» и удаляет запись.
3. Запишите правило рабочего процесса, используя поле «Удалено».

1 голос
/ 19 ноября 2012

написать одно электронное письмо, отправленное в событии удаления триггера.У вас есть это менее чем за 1 час.

1 голос
/ 14 декабря 2011

Возможно, компромиссная архитектура заключалась бы в написании чрезвычайно маленького и простого триггера после удаления, который просто копирует удаленные записи, о которых идет речь, в какой-то новый пользовательский объект.Этот новый пользовательский объект запускает ваше правило рабочего процесса и, таким образом, отправляет искомое исходящее сообщение.Единственная проблема заключается в том, чтобы периодически очищать данные пользовательских объектов, размер которых будет увеличиваться по мере удаления записей из другого объекта.Другими словами, ваш «царапающий» объект просто нуждается в периодической очистке - что может быть выполнено по ночному расписанию с помощью пакетного Apex.

Вот триггер удаления, который бы справился с задачей, используя Opportunity в качестве примера:

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, кстати, поскольку вызовы непосредственно из триггеров запрещены.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...