Salesforce改变了以前企业运行业务的传统CS架构的企业应用模式,变成现在的随需应变,多租户的Web平台——Force.com.这个平台能让组织运行和自定义他们自己的应用程序,比如销售自动化,客户服务支持和其他满足组织特有业务的自定义应用。
Salesforce提供了很多UI让用户自定义设置他们的应用,例如定义新对象新字段,工作流和审批流等等。但是尽管如此,程序员还是可以通过从CS结构的程序调用SOAP API来执行数据操作命令。
尽管这些CS程序能提供很高的灵活性,但如果这些代码不在Force.com平台上的话,会受到以下的限制:
- 远程调用性能上的Cost
- CS程序服务器的稳定性cost
为了解决这些问题,Salesforce提供了Apex。第一个多租户,按需编程语言。
APEX是SFDC中用于开发的语言。语法上类似JAVA等面向对象的语言,运行起来类似数据库中的存储过程。可以在SFDC事件中添加业务逻辑,操作相关数据和用在Visual Force页面中。它拥有以下特点。
- 保存,编译和运行都在Force.com平台上。
- 由于代码是作为元数据存在平台上,会随着平台的升级而自动升级
- 面向对象,支持类,接口和继承
- 强类型,编译的时候会检查引用对象
- 由于是Force.com平台采用多租户架构,大家共享系统资源,所以导致APEX代码必须要拥有限制,来防止独占所有资源。
- 直接集成数据库,拥有直接操作记录和字段的语句
- 数据操作支持事务性,支持回滚
- 自定义代码可以保存为不同API的版本
- 不区分大小写
APEX与其他面向对象的语言相比,相似之处在于:
- 类,接口,属性,集合,数组
- 对象和数组下标
- 表达式,变量,常量
- 条件和循环语句
不同之处在于:
- 保存编译执行都在云端
- Triggers,类似数据库中的触发器
- 有能直接操作数据库的数据库语句
- 支持事务和回滚
- global修饰符能支持比public更大的自由度
- 代码版本
APEX支持以下数据类型:
- 原始的基本数据类型,比如Integer, Double, Long, Date, Datetime, String, ID, Boolean等
- SFDC专有的数据类型 SObject,比如客户,联系人,业务机会等
- 集合
- 枚举
- 其他APEX类型
在APEX中,LIST和ARRAY是相同的概念
什么时候需要用到APEX?
如果你的组织有现有功能模块无法支持的比较复杂的业务过程,则Force.com平台提供的Apex,Visualforce和SOAP API就能派上用场了。
APEX可以用来:
- 创建Web service
- 创建邮件服务
- 执行涉及多个对象的复杂验证
- 创建工作流不支持的复杂业务流程
- 创建自定义的业务操作逻辑(不止涉及一个对象或一条记录)
- 在一个操作上添加额外的自定义逻辑,例如保存一条记录的时候,无论这个操作是从UI还是Visualforce页面或者SOAP API来的。