Get Super Badge - Apex Specialist

前言

Apex Specialist是我们要拿到的第一个Super Badge,在这部分内容中我们将主要去学习使用不同的异步调用方式去完成业务挑战。

组件介绍

  • Standard & Custom sObject
  • Master-Detail Relationship
  • Rest Callout (Http Callout)
  • Remote Site Settings
  • Apex Trigger
  • Schedulable Interface
  • Future Annotation
  • JSON & Inner Class
  • Test Class (Trigger Test, Mock Test, Asynchronous Test)

以上组件是我们本模块使用到的相关组件,我们在下面一一介绍。

sObject

sObject是Salesforce中的数据库表总称,同时也是System NameSpace下的一个Class。在CRM中,常见的对象有Account,Contact,Lead等,这些都是sObject。在Apex Code中,我们可以以

sObject so = new Account();

这种方式进行声明。这样的方式在做底层通用接口、服务的时候用处很大。sObject分为Standard和Custom两种类型(其实大多数的Component都分这两类),Custom和Standard的类型区别在于Custom sObject以__c结尾。比如,你在系统中创建了一个Plan sObject,那么它的API Name为Plan__c。

Master-Detail Relationship

在Salesforce中,sObject之间的关联关系分为两大类:Lookup和Master-Detail。其中Lookup为弱连接关系,不存在强制的联系。而Master-Detail为强连接关系,意味着Master端完全控制Detail端的权限,例如,Opportunity与OpportunityLineItem__c为Master-Detail关系,那么OpportunityLineItem__c的权限由Opportunity控制,并且在删除Opportunity的时候,相关联的OpportunityLineItem__c会同时进行删除。Master-Detail关系可以实现Rollup Summary类型的字段,可以方便的将Detail端的数据以多种汇总、计算方式实现在Master的一端而不需要额外的开发。

Rest Callout

这类方式是以Http Callout进行实现,具体实现方式如下,

Http h = new Http();
HttpRequest req = new HttpRequest();
HttpResponse res = h.send(req);

与其他语言中实现的Http Call基本类似,需要注意的是这是Salesforce提供的基础Http Callout方式。实际业务过程中可以基于这种形式进行不同程度的封装。

Remote Site Settings

在Salesforce中不允许对未知的URL进行访问。如果需要对某个URL进行访问,需要在Remote Site Settings中增加相关的配置。

Apex Trigger

类似于数据库中的Trigger,不同的是可以直接调用Apex Code。基本写法如下,

trigger trigger_name on sObject_type (before/after dml_operation) {
  //implement your logic
}
Schedulable Interface

Salesforce中计划调度任务接口,唯一方法为execute。实现接口后,在Apex页面中点击Schedule Apex实现具体定时调度方式。

Future Annotation

异步调用方式,等同于另起线程。实际使用中,在方法上加@Future进行标注,示例如下,

@Future
public static void test (params) {
  //implement your logic
}

Future类型的function返回值只能为void,并且参数类型只能为基础类型或者集合类型,不能为sObject或者VO。

JSON & Inner Class

JSON解析和内部类,使用方式上并没有特别的方式,和其他语言类似。

Test Class

Test class具体是指在Salesforce中加入@isTest或者testMethod标注的方法,这些类是不计入Salesforce中Code Character中的。实际上,Test Class主要用于测试Apex Class/Trigger的逻辑,并要求覆盖率在75%以上。

需求介绍

HowWeRoll公司为了迎合业务发展,需要实现自动创建Maintenance Request,并定期从仓储系统实现数据同步。从仓储拉取的数据需要根据External Id进行upsert。详见:link

实现

代码编写讲解放在明天。详情参见github:https://github.com/ericann/Super-Badge---Apex-Specialist。周末有时间进行重构。

有问题请留言,笔者也会把自己遇到的问题整理出来分享。

你可能感兴趣的:(Get Super Badge - Apex Specialist)