您可以在以下位置以编程方式访问 Salesforce 用户界面的许多功能 Apex,您可以与外部 SOAP 和 REST Web 服务集成。您可以运行 Apex 代码 使用多种机制。Apex 代码在原子事务中运行。
- 调用 Apex 您可以使用触发器、异步或作为 SOAP 或 REST Web 服务运行 Apex
代码。 - Apex 事务和调速器限制
Apex 事务可确保数据的完整性。Apex 代码作为原子事务的一部分运行。Governor 执行限制可确保有效利用 Lightning 平台多租户平台上的资源。 - 将 Salesforce 功能与 Apex 结合使用 Salesforce 用户界面的许多功能都在 Apex
中公开,以便您可以在 Lightning Platform 中以编程方式访问它们。例如,您可以编写 Apex 代码以发布到 Chatter 摘要,或使用审批方法提交和批准流程请求。 - 集成和 Apex 实用程序
Apex 允许您使用标注与外部 SOAP 和 REST Web 服务集成。您可以使用用于 JSON、XML、数据安全和编码的实用程序。还为带有文本字符串的正则表达式提供了一个通用实用程序。
调用 Apex
您可以使用触发器运行Apex代码,也可以异步运行,也可以作为SOAP或REST Web运行 服务业。
- 匿名块 匿名块
是 Apex 代码,它不会存储在元数据中,但可以编译和执行。 - 触发器 可以使用触发器
调用 Apex 触发器使您能够在更改 Salesforce 记录之前或之后执行自定义操作,例如插入、更新或删除。 - 异步 Apex 提供了多种异步运行 Apex
代码的方法。选择最适合您需求的异步 Apex 功能。 - 将 Apex 方法公开为 SOAP Web 服务 您可以将 Apex 方法公开为 SOAP Web 服务
,以便外部应用程序可以访问您的代码和应用程序。 - 将 Apex 类公开为 REST Web 服务
您可以公开 Apex 类和方法,以便外部应用程序可以通过 REST 体系结构访问您的代码和应用程序。 - Apex 电子邮件服务 您可以使用电子邮件服务
来处理入站电子邮件的内容、标题和附件。例如,您可以创建一个电子邮件服务,该服务根据邮件中的联系人信息自动创建联系人记录。 - 使用 InboundEmail 对象 对于 Apex 电子邮件服务域收到的每封电子邮件,Salesforce 都会创建一个单独的 InboundEmail 对象
,其中包含该电子邮件的内容和附件。您可以使用实现接口的 Apex 类来处理入站电子邮件。使用该类中的方法,可以访问 InboundEmail 对象以检索入站电子邮件的内容、标头和附件,以及执行许多功能。Messaging.InboundEmailHandlerhandleInboundEmail - Visualforce 类
除了使开发人员能够向 Salesforce 系统事件(如按钮单击和相关记录更新)添加业务逻辑外,Apex 还可用于通过自定义 Visualforce 控制器和控制器扩展为 Visualforce 页面提供自定义逻辑。 - JavaScript 远程处理
使用 Visualforce 中的 JavaScript 远程处理从 JavaScript 调用 Apex 控制器中的方法。创建具有复杂动态行为的页面,这是标准 Visualforce AJAX 组件无法实现的。 - AJAX
中的 Apex AJAX 工具包包括对通过匿名块或公共方法调用 Apex 的内置支持。webservice
匿名区块
匿名块是 Apex 代码,它不会存储在元数据中,但可以 被编译和执行。
用户权限 需要 | |
---|---|
要执行匿名 Apex:(匿名 Apex 通过 API 允许在没有“作者顶点”的情况下限制访问 权限。 | “API 已启用”和“作者顶点” |
如果匿名 Apex 标注引用命名凭据作为 端点: | 自定义应用程序 |
使用以下方法之一编译和执行匿名块:
- 开发者控制台
- 适用于 Visual Studio Code 的 Salesforce 扩展
- The SOAP API 叫:executeAnonymous()
ExecuteAnonymousResult executeAnonymous(String code)
您可以使用匿名块来快速评估 Apex,例如在 开发人员控制台或 Visual Studio Code 的 Salesforce 扩展。您还可以使用 匿名块,用于编写在运行时动态更改的代码。例如,让我们 假设您编写了一个客户端 Web 应用程序,该应用程序从用户那里获取输入,例如名称和 地址。然后,您可以使用 Apex 的匿名块插入具有该名称的联系人 并地址到数据库中。请注意以下有关匿名块的内容(对于 String):
executeAnonymous()code
- 可以包括用户定义的方法和异常。
- 用户定义的方法不能包含关键字 。static
- 您不必手动提交任何数据库更改。
- 如果 Apex 触发器成功完成,则任何数据库更改都是 自动提交。如果您的 Apex 触发器未完成 成功后,将对数据库所做的任何更改回滚。
- 与类和触发器不同,匿名块以当前用户和 如果代码违反用户的对象级和字段级,则可能无法编译 权限。
- 没有本地以外的范围。例如,尽管使用访问修饰符是合法的,但它没有 意义。该方法的范围仅限于匿名块。global
- 当您在匿名块中定义类或接口(自定义类型)时, 默认情况下,当匿名块时,类或接口被视为虚拟的 执行。即使自定义类型未使用修饰符定义,也是如此。保存您的课程或 界面,以避免这种情况发生。类和接口 在匿名块中定义的内容不会保存在您的组织中。virtual
即使用户定义的方法可以引用自身或更高版本的方法,而无需 对于正向声明,变量不能在其实际声明之前引用。 在以下示例中,Integer 必须 被声明,而 not:intmyProcedure1
Integer int1 = 0;
void myProcedure1() {
myProcedure2();
}
void myProcedure2() {
int1++;
}
myProcedure1();
匿名区块的返回结果包括:
- 调用的编译和执行阶段的状态信息,包括任何 发生的错误
- 调试日志内容,包括对方法的任何调用的输出(请参阅调试日志System.debug)
- 任何未捕获的代码执行异常的 Apex 堆栈跟踪,包括 每个调用堆栈元素的类、方法和行号
有关更多信息,请参阅使用 SOAP API 部署 Apex。另请参阅在开发人员控制台和 Visual Studio 的 Salesforce 扩展中使用日志 代码。executeAnonymous()
通过 API 和 Author Apex 权限执行 Anonymous Apex
要使用 API 调用运行任何 Apex 代码,包括保存在组织中的 Apex 方法, 用户必须具有 Author Apex 权限。对于没有 Author Apex 的用户 权限,API 允许限制匿名 Apex 的执行。此例外 仅当用户通过 API 或工具执行匿名 Apex 时才适用 ,但不在开发者控制台中使用。允许此类用户运行 以下内容在匿名块中。executeAnonymous()
- 他们在匿名块中编写的代码
- 保存在组织中的 Web 服务方法(使用 关键字声明的方法)webservice
- 属于 Apex 语言的任何内置 Apex 方法
当用户没有作者 Apex 时,不允许运行任何其他 Apex 代码 许可。例如,调用保存在 不允许组织使用自定义类作为内置的参数 方法。
当没有 Author Apex 权限的用户以匿名方式运行 DML 语句时 块,触发器可能会因此被触发。