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