Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Salesforce在记录删除时触发工作流_Salesforce - Fatal编程技术网

Salesforce在记录删除时触发工作流

Salesforce在记录删除时触发工作流,salesforce,Salesforce,每当SF对象(添加/更新/删除)发生任何更改时,我都希望侦听旧系统中的更改。因此,我创建了出站消息和工作流。但在工作流中,若对象被删除,我看不到任何激发的方法 我是否可以在记录删除时触发出站消息?我知道,我听说它可以通过触发器来完成。但我不想为此编写apex代码。据我所知,这是无法做到的,工作流操作与工作流规则是解耦的(您甚至可以重用它们)因此,他们可能不会收到事务范围,当他们执行时,记录已经消失,操作中的任何引用都将指向不存在的数据。因此,我知道的唯一方法是通过触发器。也许一种折衷的体系结构是

每当SF对象(添加/更新/删除)发生任何更改时,我都希望侦听旧系统中的更改。因此,我创建了出站消息和工作流。但在工作流中,若对象被删除,我看不到任何激发的方法


我是否可以在记录删除时触发出站消息?我知道,我听说它可以通过触发器来完成。但我不想为此编写apex代码。

据我所知,这是无法做到的,工作流操作与工作流规则是解耦的(您甚至可以重用它们)因此,他们可能不会收到事务范围,当他们执行时,记录已经消失,操作中的任何引用都将指向不存在的数据。因此,我知道的唯一方法是通过触发器。

也许一种折衷的体系结构是编写一个非常小且简单的删除后触发器,它只需将所删除的记录复制到某个新的自定义对象。这个新的自定义对象触发您的工作流规则,从而发送您正在查找的出站消息。唯一的问题是定期清理自定义对象数据,当您从其他对象中删除记录时,这些数据的大小会增加。换句话说,你的“刮擦”对象只需要定期清理——这可以通过batch Apex在夜间完成

下面是一个使用Opportunity的delete触发器:

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;
}
在Opportunity上触发AfterDelete(删除后)
{
List co=新列表();
for(机会o:触发器。旧)
{
CustObj_uuc=新的CustObj_uc();
c、 名称=o.名称;
c、 金额c=o.金额;
c、 CloseDate\uuu c=o.CloseDate;
c、 说明uu c=o.说明;
//等等。
co.add(c);
}
插入co;
}

这并不理想,但至少可以避免编写自己的基于触发器的出站消息。这些只能使用@Future注释来完成,顺便说一句,因为禁止直接从触发器调用。希望有帮助。

在触发器删除事件中编写一封电子邮件。不到1小时就可以完成。

这里有一个解决方法。但是,这将只能捕获通过标准Salesforce用户界面进行的删除

1.创建自定义复选框字段“已删除”
2.使用自定义VF页面覆盖Del链接,该页面首先将记录状态更新为“已删除”,并删除记录

3.使用“已删除”字段编写工作流规则。

很好的解释!我同意,你必须写一个删除触发器。这是一个参考。你能提供一个例子或一些关于如何创建触发器删除事件的附加信息吗?你的回答重复了问题“我知道我听说触发器可以完成”的一部分