Apex 教程
什么是Apex?
Apex是由Salesforce.com开发的专有语言。 根据官方定义,Apex是一种强类型,面向对象的编程语言,允许开发人员在Force.com平台服务器上执行流量和事务控制语句,同时调用Force.com API。
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。下面的情况下,我们需要在Salesforce配置使用Apex。
APEX应用程序
我们可以使用Apex,当我们想:
- 通过集成其他系统来创建Web服务。
- 为电子邮件创建电子邮件服务或电子邮件设置。
- 同时对多个对象执行复杂的验证以及自定义验证实现。
- 创建现有工作流功能或流不支持的复杂业务流程。
- 创建自定义事务逻辑(在整个事务上发生的逻辑,而不仅仅是单个记录或对象),例如使用Database方法更新记录。
- 当有一些事件导致触发器触发时,当记录被修改或修改相关对象的记录时,执行一些逻辑。
Apex的工作结构
如下图所示(参考:Salesforce开发人员文档),Apex完全按需运行Force.com平台:
操作流程:
当开发人员保存代码并且最终用户执行调用Apex代码的一些操作时,有两个操作序列,如下所示:
- 开发人员操作:当开发人员将Apex代码写入并保存到平台时,平台应用程序服务器首先将代码编译为一组可由Apex运行时解释程序理解的指令,然后将这些指令保存为元数据。
- 最终用户操作:当最终用户触发Apex的执行时,通过单击按钮或访问Visualforce页面,平台应用程序服务器从元数据检索编译的指令,并在返回结果之前通过运行时解释器发送它们。与标准应用程序平台请求相比,最终用户观察到执行时间没有差异。
由于Apex是Salesforce.com的专有语言,它不支持一般编程语言支持的某些功能。例如,以下是Apex不支持的一些功能:
- 它不能在用户界面中显示元素。
- 您不能更改标准SFDC提供的功能,也不能防止标准功能的执行。
- 不支持创建临时文件。
- 创建多个线程也是不可能的,因为我们可以在其他语言中做到。
了解Apex语法
Apex代码通常包含许多我们可能从其他编程语言熟悉的东西。
变量声明:作为强类型语言,必须使用Apex中的数据类型声明每个变量。如下面的代码(下面的截图)所示,lstAcc被声明为数据类型为帐户列表。
SOQL查询:这将用于从Salesforce数据库获取数据。下面屏幕截图中显示的查询是从Account对象获取数据。
循环声明:此循环语句用于迭代一个列表或迭代一段代码指定的次数。在下面的屏幕截图中显示的代码中,迭代将与lstAcc中的记录数相同。
流控制语句:If语句用于此代码中的流控制。基于特定条件,决定是执行还是停止执行特定代码段。例如,在下面显示的代码中,它检查列表是否为空或者它包含记录。
DML语句:对数据库中的记录执行记录插入,更新,上升,删除操作。例如,以下代码正在使用新字段值更新帐户。
以下是Apex代码段的外观示例。我们将在本教程中进一步研究所有这些Apex编程概念。
适用人群
本教程是针对开始学习的Salesforce的Apex编程。本教程将带给你知识的中级心尖规划覆盖了所有的Apex的重要方面完全动手代码的经验。
学习前提
需要Salesforce的平台和开发的基本知识。Apex是具有到与Salesforce使用的编程语言。本教程假设你已经安装将被用来做我们的Apex编程的Salesforce实例。