【问题标题】:Providing notifications to the current user from an Apex trigger in Salesforce从 Salesforce 中的 Apex 触发器向当前用户提供通知
【发布时间】:2011-08-12 02:18:09
【问题描述】:

我正在尝试找出一种用户友好的方式来从我的 Apex 代码向用户传递消息。我有一个触发器,它在插入/更新潜在客户后触发,然后过滤更新列表并触发 @future 方法,该方法将潜在客户数据推送到外部 Web 服务并使用一些返回的值更新转换后的帐户。

我想执行以下操作(其中 X、Y 和 Z 是从 1 到 50 的任意数量的潜在客户)

  • 通知用户转换导致 X、Y 和 Z 的潜在客户将被导出(我会在触发器执行期间知道这一点)。
  • 通知用户导出是成功还是失败(当@future 方法运行时,对于 X、Y 和 Z 中的每一个都会知道)。

将这些信息传回给用户的推荐方法是什么?我更喜欢 not 使用电子邮件(因为这会触发每条记录一封电子邮件,这非常垃圾邮件且令人不快)。还有另一种方法可以将通知消息注入页面吗?我试过 ApexPages.addMessage() 但它似乎对我没有任何作用(没有错误,但也没有通知)。

【问题讨论】:

    标签: salesforce apex-code


    【解决方案1】:

    addMessage() 在当前页面处于活动状态时适用于 Visualforce 页面和标准页面,因此如果用户从按钮/VF 页面触发操作,则在触发器中使用它应该可以正常工作。但是,您的 @future 方法无法使用它,因为它在后台异步运行。

    也许最好的解决方案是使用自定义消息对象,该对象具有修改的字段列表、何时修改,并查找适当的用户(或将其用作所有者)。然后,您可以创建一个简单的 VF 页面和控制器,当查看该对象中与当前用户相关的记录的查询时,并提供删除它们的选项(您可以在从数据库中提取它们后自动删除它们,但您会冒用户实际上没有注意到消息)。然后,您可以将此页面用作仪表板组件的一部分,因此无论何时用户查看其主页,他们都可以看到通知列表。

    最后另一种选择可能是使用 Chatter,将消息发送给用户,然后这些消息也会显示在摘要电子邮件等中。

    【讨论】:

    • 即使在保存对潜在客户的更改时从触发器调用时,addMessage() 也会出现错误。其他两种解决方案听起来都可行,但我真的很想将消息显示给用户,而不是让他们去其他地方寻找它。
    • 触发器是如何被触发的?例如,他们是否正在更新记录并点击保存?我想不出任何方法可以从异步过程中将消息发送到屏幕上,如果用户运行 Chatter 桌面,那么如果你走那条路线,他们会在他们的流更新时看到通知。
    • 是的,他们只是在编辑线索并点击保存;该错误表明 addMessage() 只能从 visualForce 页面调用。关于 Chatter 方法的要点;我会检查经纪人是否在使用它,如果是,那么它会很好地工作。您能否指出一些有关如何将内容注入 Chatter 的适当文档?
    • 你说的完全正确,我在周五下午输掉了剧情!它们不适用于触发器!关于 Chatter,您需要查看 wiki.developerforce.com/index.php/Chatter_Code_Recipes,使用 5 为用户订阅对象的提要,然后使用 6 稍后发布到该提要!祝你好运:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    相关资源
    最近更新 更多