DLRS核心功能解析:实时与定时汇总如何改变你的Salesforce数据管理
【免费下载链接】declarative-lookup-rollup-summariesDeclarative Lookup Rollup Summaries (DLRS) is a community built and maintained Salesforce application that allows you to create cross object roll-ups declaratively - no code! For install instructions and documentation, visit our website https://sfdo-community-sprints.github.io/DLRS-Documentation/项目地址: https://gitcode.com/gh_mirrors/de/declarative-lookup-rollup-summaries
Declarative Lookup Rollup Summaries (DLRS) 是一款由社区构建和维护的Salesforce应用,它允许你以声明式方式创建跨对象汇总,无需编写代码!通过DLRS的实时与定时汇总功能,你可以轻松实现Salesforce数据的高效管理与分析。
一、DLRS核心汇总模式解析
DLRS提供三种主要的汇总计算模式,每种模式都有其独特的应用场景和优势:
1.1 实时汇总(Realtime):即时响应数据变化
实时汇总意味着当子记录被创建或更新时,汇总计算会立即在保存时运行。从技术上讲,只有当汇总的聚合字段或条件字段被编辑时,它才会运行。这种模式由DLRS在子对象上安装的Apex触发器触发,如unpackaged/config/qa/triggers/OpportunityContactRoleTrigger.trigger中定义的RollupService.triggerHandler(OpportunityContactRole.SObjectType);。
实时汇总的优势在于数据的即时性,例如当你处理一个机会时,记录的任务数量会立即更新到父机会上,避免用户产生数据延迟的困惑。但需要注意的是,实时汇总可能会略微降低Salesforce性能,尤其是在与其他自动化工具(如Flow或Process Builder)一起使用时,可能会导致循环自动化并最终达到Salesforce的 governor 限制。
要将汇总设置为实时模式,你必须部署子触发器,并将计算模式选择器设置为"Realtime"。
1.2 定时增量汇总(Scheduled):平衡性能与数据新鲜度
定时增量汇总不会立即运行。DLRS安装的触发器会记录每个被更改的子记录,并将其存储在"Lookup Rollup Summary Schedule Items"对象中。然后,每当Apex类"RollupJob"运行时,所有这些项目都会被处理,处理完成后计划项目会被删除。
DLRS的定时汇总配置界面,可设置重复计算作业的时间和筛选条件
你可以在Setup>Custom Code>Apex Classes中点击"Schedule Apex"来安排RollupJob的运行时间。例如,你可以将RollupJob类设置为在上午9点、中午、下午3点和6点运行,确保在工作日内汇总数据的陈旧度不超过三小时。
要将DLRS设置为定时模式,你必须部署子触发器,并将计算模式选择器设置为"Scheduled"。
1.3 完全计算(Full Calculate):全面更新历史数据
完全计算是指DLRS循环遍历所有现有子记录,并对父记录进行汇总,无论子记录是否已被编辑。在DLRS应用中,你可以通过点击"Full Calculate"按钮来启动此操作。这通常是在创建新汇总时需要执行的操作。
完全计算会使用服务器资源,可能需要一些时间。如果在工作日对大量记录运行完全计算,可能会导致"行锁"错误——当计算和用户同时尝试编辑同一记录时。计划完全计算的主要用例是具有相对时间过滤器的汇总(如"上周"),因为从本周到下周的时间变化不是记录的编辑,因此不会触发定时汇总。
对于仅需要完全计算(无论是一次性还是定期)的情况,不需要子触发器。计算模式选择器设置为"Process Builder"。
二、如何选择适合的汇总模式
2.1 实时汇总适用场景
- 需要即时数据反馈的业务流程
- 子记录更新频率不高的情况
- 用户需要实时看到数据变化的场景
2.2 定时增量汇总适用场景
- 子记录更新频繁,实时汇总可能影响性能
- 可以接受一定程度的数据延迟
- 需要在非工作时间集中处理汇总计算
2.3 完全计算适用场景
- 新创建汇总后需要初始化历史数据
- 汇总包含时间相关条件,如"上一财年"
- 需要定期重新计算所有记录以确保数据准确性
三、DLRS汇总的技术实现
DLRS的汇总功能主要通过dlrs/main/classes/RollupService.cls实现,这是DLRS的核心服务类。实时汇总通过触发器调用RollupService.triggerHandler()方法,而定时汇总则通过RollupService.runJobToProcessScheduledItems()方法处理计划任务。
完全计算则由RollupCalculateJob类处理,如dlrs/main/classes/RollupCalculateJob.cls所示,它实现了Database.Batchable接口,可以批量处理大量记录。
四、最佳实践与注意事项
4.1 性能优化建议
- 对于大型数据集,优先考虑定时汇总而非实时汇总
- 合理设置定时汇总的运行频率,平衡数据新鲜度和系统负载
- 对完全计算,尽量安排在非工作时间运行,避免行锁冲突
4.2 错误监控与处理
DLRS提供了Lookup Rollup Summary Log对象来记录汇总过程中的错误。你可以定期检查这些日志,也可以通过自动化工具设置错误警报。失败的父记录更新项目会保留在队列中,直到父记录成功更新。
4.3 触发器管理
DLRS需要在子对象上部署触发器以支持实时和定时增量汇总。你可以在unpackaged/config/qa/triggers/目录下找到各种对象的触发器示例。
通过合理配置和使用DLRS的实时与定时汇总功能,你可以显著提升Salesforce数据管理的效率和准确性,为业务决策提供更可靠的数据支持。无论是需要即时数据反馈还是大规模数据处理,DLRS都能满足你的需求,让你专注于业务逻辑而非复杂的代码实现。
【免费下载链接】declarative-lookup-rollup-summariesDeclarative Lookup Rollup Summaries (DLRS) is a community built and maintained Salesforce application that allows you to create cross object roll-ups declaratively - no code! For install instructions and documentation, visit our website https://sfdo-community-sprints.github.io/DLRS-Documentation/项目地址: https://gitcode.com/gh_mirrors/de/declarative-lookup-rollup-summaries
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考