概述
什么是Apex?
Apex是Salesforce.com开发的专有语言。 根据官方定义,Apex是一种强类型,面向对象的编程语言,允许开发人员在Force.com平台服务器上执行流和事务控制语句,同时调用Force.com API。
它具有类似Java的语法,就像数据库存储过程一样。 它使开发人员能够为大多数系统事件添加业务逻辑,包括按钮单击,相关记录更新和Visualforce pages.Apex代码可以由Web服务请求和对象上的触发器启动。 Apex包含在Performance Edition,Unlimited Edition,Enterprise Edition和Developer Edition中。
Apex作为一种语言的特点
现在让我们讨论Apex作为语言的特征 -
集成 (Integrated)
Apex内置了对INSERT,UPDATE,DELETE等DML操作的支持以及DML异常处理。 它支持内联SOQL和SOSL查询处理,它返回一组sObject记录。 我们将在以后的章节中详细研究sObject,SOQL,SOSL。
Java喜欢语法并且易于使用
Apex易于使用,因为它使用Java之类的语法。 例如,变量声明,循环语法和条件语句。
与数据紧密结合
Apex专注于数据,旨在将多个查询和DML语句一起执行。 它在Database上发出多个事务语句。
强类型
Apex是一种强类型语言。 它使用对sObject等模式对象的直接引用,如果删除任何无效引用或者数据类型错误,则会快速失败。
多租户环境
Apex在多租户环境中运行。 因此,Apex运行时引擎旨在密切防范失控代码,防止它独占共享资源。 任何违反限制的代码都会因易于理解的错误消息而失败。
自动升级
Apex作为Salesforce版本的一部分进行了升级。 我们不必手动升级它。
易于测试
Apex为单元测试的创建和执行提供内置支持,包括指示覆盖了多少代码的测试结果,以及代码的哪些部分可以更高效。
开发人员何时应该选择Apex?
当我们无法使用预先构建的和现有的开箱即用功能来实现复杂的业务功能时,应该使用Apex。 以下是我们需要使用apex而不是Salesforce配置的情况。
Apex应用程序
我们可以在需要时使用Apex -
通过集成其他系统来创建Web服务。
为电子邮件或电子邮件设置创建电子邮件服务
同时对多个对象执行复杂验证以及自定义验证实现。
创建现有工作流功能或流不支持的复杂业务流程。
创建自定义事务逻辑(在整个事务中发生的逻辑,而不仅仅是单个记录或对象),比如使用Database方法更新记录。
修改记录时执行某些逻辑,或者在某些事件导致触发器触发时修改相关对象的记录。
Apex的工作结构
如下图所示(参考:Salesforce Developer Documentation),Apex完全按需运行Force.com平台
行动的流程
当开发人员保存代码时以及当最终用户执行调用Apex代码的某个操作时,有两个操作序列,如下所示 -
开发者行动
当开发人员将Apex代码写入并保存到平台时,平台应用程序服务器首先将代码编译为Apex运行时解释器可以理解的一组指令,然后将这些指令保存为元数据。
最终用户行动
当最终用户通过单击按钮或访问Visualforce页面触发Apex的执行时,平台应用程序服务器从元数据中检索已编译的指令,并在返回结果之前通过运行时解释程序发送它们。 与标准应用程序平台请求相比,最终用户观察到执行时间没有差异。
由于Apex是Salesforce.com的专有语言,因此它不支持通用编程语言所具有的某些功能。 以下是Apex不支持的一些功能 -
它无法显示用户界面中的元素。
您无法更改标准SFDC提供的功能,也无法阻止标准功能执行。
您无法更改标准SFDC提供的功能,也无法阻止标准功能执行。
创建多个线程也是不可能的,因为我们可以用其他语言来创建它。
了解Apex语法
Apex代码通常包含许多我们可能熟悉的其他编程语言。
变量声明
作为强类型语言,您必须在Apex中声明具有数据类型的每个变量。 如下面的代码(下面的屏幕截图)所示,lstAcc被声明为数据类型为List of Accounts。
SOQL查询
这将用于从Salesforce数据库中获取数据。 下面的屏幕截图中显示的查询是从Account对象获取数据。
Loop 语句
此循环语句用于迭代列表或迭代一段代码指定的次数。 在下面的屏幕截图中显示的代码中,迭代将与我们拥有的记录数相同。
Flow Control 语句
If语句用于此代码中的流控制。 基于某些条件,决定是执行还是停止执行特定代码。 例如,在下面显示的代码中,它检查列表是否为空或包含记录。
DML 语句
对数据库中的记录执行记录插入,更新,升级,删除操作。 例如,下面给出的代码有助于使用新字段值更新帐户。
以下是Apex代码段的外观示例。 我们将在本教程中进一步研究所有这些Apex编程概念。