@Future & @InvocableMethod

DEX455 - Apex 类、对象与接口完全指南

📄 第 140 页 🎬 视频课程

课程章节介绍

同学们,咱们今天来看两个在Apex里很实用的注释,@Future和@InvocableMethod。别看它们只是小小的标记,但用好了能帮你处理后台任务,还能让你的代码被流程、REST接口甚至Agentforce直接调用。 先说@Future。这个注释是用来告诉Salesforce:“嘿,这个方法不用马上跑完,等平台有空闲资源的时候,你帮我在后台异步执行就行。”所以它很适合处理那些耗时比较长、但又不需要立刻出结果的操作,比如调用外部Web服务、做复杂的计算等等。 不过呢,Salesforce现在更推荐大家使用Queueable Apex,也就是可排队的Apex,来替代这种未来的方法。为什么?因为可排队Apex比@Future更强大——它能返回一个作业ID,方便你跟踪任务跑完了没;支持传递复杂的非原始类型参数,不像@Future只能传基本类型;而且还能把作业串成链,一个跑完了自动触发下一个,逻辑清晰多了。所以如果你刚开始学异步处理,可以直接学Queueable,@Future作为了解就好。 再来看@InvocableMethod。这个注释就更有意思了,它能让你的方法变成一个“可调用操作”。啥意思呢?就是标记了这个注释的方法,可以被Apex代码、REST API、Flow(也就是咱们的流)甚至新出的Agentforce代理像搭积木一样直接调起来。这样,写好的逻辑就能在不同的地方重复使用,不用重复写代码。 调用的时候,输入和输出都是动态的,非常灵活。它还能支持描述信息,告诉调用方我需要什么参数、会返回什么。但有一点要特别注意:如果你的操作是批量处理的,那么输出的第i项必须严格对应输入的第i项。就是说,给第一个客户的计算结果,一定要放在输出的第一位,别搞乱了顺序,这样批量处理才能正确无误。 总结一下,@Future帮你异步,但现在更推荐用Queueable;@InvocableMethod让你的方法变成万能调用块,为流程和智能体服务,注意输入输出顺序就行。好,这页Slide的内容就讲这么多,咱们做个小练习巩固一下?

关键词

Apex Salesforce Developer Guide