运行 Apex

您可以在以下位置以编程方式访问 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运行 服务业。

  1. 匿名块 匿名块
    是 Apex 代码,它不会存储在元数据中,但可以编译和执行。
  2. 触发器 可以使用触发器
    调用 Apex 触发器使您能够在更改 Salesforce 记录之前或之后执行自定义操作,例如插入、更新或删除。
  3. 异步 Apex 提供了多种异步运行 Apex
    代码的方法。选择最适合您需求的异步 Apex 功能。
  4. 将 Apex 方法公开为 SOAP Web 服务 您可以将 Apex 方法公开为 SOAP Web 服务
    ,以便外部应用程序可以访问您的代码和应用程序。
  5. 将 Apex 类公开为 REST Web 服务
    您可以公开 Apex 类和方法,以便外部应用程序可以通过 REST 体系结构访问您的代码和应用程序。
  6. Apex 电子邮件服务 您可以使用电子邮件服务
    来处理入站电子邮件的内容、标题和附件。例如,您可以创建一个电子邮件服务,该服务根据邮件中的联系人信息自动创建联系人记录。
  7. 使用 InboundEmail 对象 对于 Apex 电子邮件服务域收到的每封电子邮件,Salesforce 都会创建一个单独的 InboundEmail 对象
    ,其中包含该电子邮件的内容和附件。您可以使用实现接口的 Apex 类来处理入站电子邮件。使用该类中的方法,可以访问 InboundEmail 对象以检索入站电子邮件的内容、标头和附件,以及执行许多功能。Messaging.InboundEmailHandlerhandleInboundEmail
  8. Visualforce 类
    除了使开发人员能够向 Salesforce 系统事件(如按钮单击和相关记录更新)添加业务逻辑外,Apex 还可用于通过自定义 Visualforce 控制器和控制器扩展为 Visualforce 页面提供自定义逻辑。
  9. JavaScript 远程处理
    使用 Visualforce 中的 JavaScript 远程处理从 JavaScript 调用 Apex 控制器中的方法。创建具有复杂动态行为的页面,这是标准 Visualforce AJAX 组件无法实现的。
  10. 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 语句时 块,触发器可能会因此被触发。

ref