摘要
1 platform是metadata-driven
声明式开发
面向对象:封装、抽象、
数据类型
string是基本类型
Enum的序号从0开始
集合类型只要三种 list set map
set:无序但内容不重复
map用于快速基于key找到某个值
VF:
view state
apex: 它与数据库高度耦合, 所以删除一个字段时如果代码引用它,则会报错
unit test是必须的
没有solution / project / config file 不需定义路由
class library比较小。 有些功能会找不到。可考虑用heroku实现。
编写工具:developer console, VS code, salesforce CLI
数据集成
REST/SOAP web service
Email automation / outbound messages
执行环境
系统执行的除了你写的代码之外 还会有其他东西
触发apex执行的方式:
trigger, anonymous apex, async apex (future之类),web service, email service, VF / Lightning
除了apex之外,页面操作也会触发其他action,这些action也是在一个执行环境中运行。
另注意,代码是以谁的身份运行。默认是以system context. 在with sharing的情况下,会考虑当前用户的sharing rule。
Trigger:
它的几种event
另有一些automation tools可以替代它
最佳实践是每个object只用一个trigger
Log中,Code_Unit_Started和Code_Unit_Finished之间的,就是 execution context
这些代码在同一个context中,共享同一个limit
避免limit
1. 批量操作
2.避免在循环中dml
并没有application / session这样的概念用于共享数据,可以用static 变量来共享数据,但是这只能在同一个transaction中。
异步apex
1.处理大量数据
2. call out, 它可能处理时间比较长,trigger不能直接调用
3. 给用户快速体验,避免不必要的等待
future方法
1.不能跟踪运行情况
2. 参数只能是基本类型或基本类型的集合
3. 不能future call future
batch / scheduled apex
用于处理大批数据
缺点:不容易定位错误
运行时间不确定
queueable
1. 参数比future更灵活,允许object
2. 可以有一个job Id用于跟踪
3. 可嵌套调用
Apex Flex Queue 避免了5个concurrent batches的limit
Debug
1. 有各种debug level
2. developer console中关于Debug > Switch Perspective界面的设置
3. check point的使用