Apex - 概述

什么是 Apex?

Apex 是 Salesforce.com 开发的专有语言。 根据官方定义,Apex 是一种强类型、面向对象的编程语言,允许开发人员结合调用 Force.com API 在 Force.com 平台服务器上执行流和事务控制语句。

它具有类似 Java 的语法,并且行为类似于数据库存储过程。 它使开发人员能够向大多数系统事件添加业务逻辑,包括按钮单击、相关记录更新和 Visualforce pages 代码。Apex 代码可以通过 Web 服务请求和对象上的触发器启动。 Apex 包含在 Performance Edition、Unlimited Edition、Enterprise Edition 和 Developer Edition 中。

Apex 代码执行场景

Apex 作为语言的功能

现在让我们讨论一下 Apex 作为语言的特点 −

集成

Apex 内置了对 DML 操作的支持,例如 INSERT、UPDATE、DELETE 以及 DML 异常处理。 它支持内联 SOQL 和 SOSL 查询处理,返回 sObject 记录集。 我们将在以后的章节中详细研究 sObject、SOQL、SOSL。

类似 Java 的语法且易于使用

Apex 很容易使用,因为它使用类似于 Java 的语法。 例如,变量声明、循环语法和条件语句。

与数据紧密集成

Apex 以数据为中心,旨在一起执行多个查询和 DML 语句。 它在数据库上发出多个事务语句。

强类型

Apex 是一种强类型语言。 它使用对 sObject 等架构对象的直接引用,如果删除或数据类型错误,任何无效引用都会很快失败。

多租户环境

Apex 在多租户环境中运行。 因此,Apex 运行时引擎旨在严密防范失控代码,防止其独占共享资源。 任何违反限制的代码都会失败,并显示易于理解的错误消息。

自动升级

Apex 作为 Salesforce 版本的一部分进行升级。 我们不必手动升级它。

轻松测试

Apex 为单元测试创建和执行提供内置支持,包括指示覆盖了多少代码以及代码的哪些部分可以更高效的测试结果。

开发者什么时候应该选择 Apex?

当我们无法使用预构建和现有的开箱即用功能来实现复杂的业务功能时,应使用 Apex。 以下是我们需要使用 apex over Salesforce 配置的情况。

Apex 应用程序

我们可以在需要时使用 Apex −

  • 通过集成其他系统创建 Web 服务。

  • 创建用于电子邮件群发或电子邮件设置的电子邮件服务。

  • 同时对多个对象执行复杂的验证以及自定义验证实现。

  • 创建现有工作流程功能或流程不支持的复杂业务流程。

  • 创建自定义事务逻辑(在整个事务中发生的逻辑,而不仅仅是单个记录或对象),例如使用数据库方法更新记录。

  • 在修改记录时执行一些逻辑,或者在存在导致触发器触发的事件时修改相关对象的记录。

Apex的工作结构

如下图所示(参考:Salesforce开发者文档),Apex完全按需运行Force.com平台

Apex 代码的 Apex 编译

操作流程

当开发人员保存代码时以及当最终用户执行某些调用 Apex 代码的操作时,有两个操作序列,如下所示 −

开发者操作

当开发人员编写 Apex 代码并将其保存到平台时,平台应用程序服务器首先将代码编译为 Apex 运行时解释器可以理解的一组指令,然后将这些指令保存为元数据。

最终用户操作

当最终用户通过单击按钮或访问 Visualforce 页面触发 Apex 的执行时,平台应用程序服务器从元数据中检索已编译的指令,并通过运行时解释器发送它们,然后返回结果。 与标准应用程序平台请求相比,最终用户观察到执行时间没有差异。

由于 Apex 是 Salesforce.com 的专有语言,因此它不支持通用编程语言所支持的某些功能。 以下是 Apex 不支持的一些功能 −

  • 无法显示用户界面中的元素。

  • 您无法更改标准 SFDC 提供的功能,也无法阻止标准功能的执行。

  • 创建多个线程也是不可能的,因为我们可以在其他语言中做到这一点。

了解 Apex 语法

Apex 代码通常包含许多我们可能在其他编程语言中熟悉的内容。

变量声明

作为强类型语言,您必须在 Apex 中声明每个变量的数据类型。 如下面的代码(下面的屏幕截图)所示,lstAcc 的数据类型声明为"帐户列表"。

SOQL 查询

这将用于从 Salesforce 数据库获取数据。 下面的屏幕截图中显示的查询正在从 Account 对象获取数据。

循环语句

此循环语句用于迭代列表或迭代一段代码指定的次数。 在下面屏幕截图所示的代码中,迭代将与我们拥有的记录数相同。

流程控制语句

此代码中使用 If 语句进行流程控制。 根据一定的条件,决定是否继续执行或停止执行该特定代码段。 例如,在下面所示的代码中,它检查列表是否为空或包含记录。

DML语句

对数据库中的记录执行记录插入、更新、更新插入、删除操作。 例如,下面给出的代码有助于使用新字段值更新帐户。

以下是 Apex 代码片段的示例。 我们将在本教程中进一步研究所有这些 Apex 编程概念。

Apex 示例代码语法