ConnectApi 类、DataWeave、Data 360 与平台特性
ConnectApi/DataWeave/Data 360平台特性:ConnectApi输入输出类(18字符ID)、限制(DML/API计入/RateLimitException/Test.startTest重置)、打包(Chatter依赖NoAccessException)、序列化(JSON/REST/RemoteAction、仅输出可序列化)、版本管理(getBuildVersion/版本匹配属性/构建版本不等)、casting(instanceof/default分支)、通配符(*/?)、测试(setTest注册数据/不支持runAs/SeeAllData=true)、与其他类差异(忽略sharing/异步操作/无XML/无VARIABLE_ASSIGNMENT/无webservice)、Chatter私信审核(before insert/5字段/addError)、Data 360 DMO SOQL(静态SOQL=callout/仅对象级权限/describeSObjects)、Mock SOQL测试(SoqlStubProvider/createStubQueryRow/Stub限制)、DataWeave(.dwl脚本/createScript/execute/ScriptName内部类/DataWeaveScriptException/3版本支持/7条限制)、FeedItem审核(PendingReview)和External Services(注册API规范→强类型调用)。
本课程共有 3 个章节
好,同学,我们来看这一页的内容。这页讲的是几个比较高级的集成和数据处理的工具,挺有意思的。 首先,说说ConnectApi类。你可以把它想象成一个专门用来和Chatter、Experience Cloud这些社交功能打交道的工具箱。它用起来有个特点:必须用特定的输入对象来传参数,然后返回的也是包装好的输出对象。这和咱们平时写的标准Apex代码限制不太一样,比如有些操作不能直接DML,而是得通过它提供的专门方法。所以,用ConnectApi的时候,要多留意文档里的特殊要求。 接着,这章还会讲到Data 360。Data 360是在Salesforce里用SOQL查询数据,然后还能做模拟测试的一套东西,帮你在不动真实数据的情况下,验证数据逻辑对不对,就像在沙盘上演练一样。 然后还有DataWeave,这是一个专门做数据转换的工具。假如你拿到一份JSON或者CSV文件,想把里面的字段映射、格式变一变再传到Salesforce里,DataWeave就能用声明式的方式帮你轻松搞定,不用写一大堆代码。 再往下,是Chatter和Feed的审核触发器。你可以理解为,当有人在 Chatter 里发帖、评论的时候,你可以用触发器自动检查内容,比如拦截不合适的词,或者批准后才能发布。这样能确保公司内部的交流环境更安全。 另外,这章也涉及Experience Cloud网站。就是说,你对外公开的门户网站或者社区,也可以用这些API和触发器来管理用户互动、信息展示。 还有电子邮件集成。你可以让Salesforce收发邮件,做自动化的邮件处理,比如从邮件里创建案例、记录往来,这些都会讲到。 最后一个是外部服务,这个很有意思。它让你用声明式的方式去调用外部的API,不用写代码,在界面上配一配就行了,像拖拽一样把Salesforce和外部系统连起来。这样一来,很多集成工作就简单多了。 好了,这页大概就是这些内容。后面我们会一个一个深入去看它们具体怎么用。有什么问题随时提出来。
好,我们来看一下这一页的内容,讲的是ConnectApi类的一些关键特性,用起来的时候需要注意的几个地方。 首先,ConnectApi的方法可以接收两种类型的参数:一种是简单的基元类型,比如普通的字符串、Id;另一种是复杂的ConnectApi输入对象,相当于一个包含多个字段的数据结构。实际开发时,你可以根据需求灵活选择。 当方法调用成功,它会返回可嵌套的输出对象。也就是说,返回给你的对象里面可能还装着其他对象,层级可以套得很深,你需要一层一层地去解析里面的信息。 然后,这里有两个配额相关的概念要记住。每个ConnectApi写操作都会消耗一个TLR声明,这算是一种额外的内部资源限制。同时,绝大多数调用都会计入你组织24小时的API请求总配额。所以如果你在循环里频繁调用,很容易就超限。 特别要注意的是,那些依赖于Chatter功能的方法,还受到更细的速率限制:按每个用户、每个命名空间、每小时来计次。一旦超过了限制,系统就会抛出RateLimitResponse异常,你的代码里得做好异常处理,不然用户体验会很差。 还有一个容易踩坑的地方:ConnectApi类是可以在没有启用Chatter的Org中被打包部署的,也就是说打包时Chatter不是强制的。但是,如果运行时那个Org把Chatter禁用了,调用相关方法就会抛出一个运行时异常,有时候我们叫它Nothing异常,程序就会中断。所以封装组件时,最好先判断一下Chatter是否可用。 最后,输出对象序列化之后,生成的格式和Connect REST API返回的JSON格式很像。这一点很方便,你在调试或者跟REST API对接时,结构基本上是一致的,可以互相参考。 好,这张幻灯片的核心点就这些,记住这些限制和特性,以后用ConnectApi就会顺手很多。
各位同学,咱们来看这一页内容,它讲的是 Apex 里几个能让你开发效率翻倍的好帮手。我会一个一个给你拆开讲清楚。 首先,Data 360。这玩意儿能让咱们在 Apex 中直接使用数据模型对象,也就是你可以在代码里像操作普通对象一样去查数据,完全支持 SOQL 查询。而且它还有一个很大的好处,就是在写单元测试的时候,你可以用 SOQL 桩——也就是 Stub 来模拟数据,不用真的碰数据库,测试跑得快,也稳定多了。 接着是 DataWeave。它是一个很强大的数据转换脚本工具,现在可以直接在 Apex 里调用了。比如你要把 JSON 转成 XML,或者把一种数据结构映射成另一种,以前可能要写不少循环和判断,现在用 DataWeave 几行转换脚本就能搞定,从 Apex 里一调用,干淨利落。 再往下,关于 Chatter 消息和 Feed 帖子的审核触发器。这里说的 ChatterMessage 和 FeedPost,其实就是咱们系统里的即时消息和动态信息。以前想在有人发帖或发消息的时候做内容审核,比如检测敏感词,可能需要自己去写触发器、写类。现在可以直接利用审核触发器来自动执行内容策略,也就是说,你可以定制规则,系统会自动过滤或拦截违规内容,省心不少。 最后,外部服务。这个功能把你在 Salesforce 里注册的外部 API,直接映射成强类型的 Apex 类。你就不用再手动去处理 HTTP 请求啦、解析 JSON 或者 HTML 啦,直接像调用本地类的方法一样去调用外部服务,参数和返回值都是强类型的,编译时就能发现错误,代码又安全又干净。 这几个特性,总结起来就是让 Apex 更擅长数据操作、数据转换、内容管控以及外部集成,而且都朝着“少写重复代码、多用类型安全”的方向走。大家记住这些点,以后遇到相应场景就知道去哪里找工具了。好了,这张幻灯片我们就说到这儿。