Salesforce学习--接触Apex;

学习目标:

1、描述出Apex程序语言的关键特点;

2、保存一个Apex类并用另一个Apex类来调用它的方法;

3、使用Developer Console检查debug日志;

开始学习Apex:

Apex是一个使用类Java语法并且使用上类似于数据库的存储过程的编程语言,Apex允许开发者向系统事件中添加业务逻辑,比如点击按钮,更新相关记录,以及Visualforce页面;

作为一个语言,Apex:
1、服务器托管--保存、编译和运行都在Force.com平台上;
2、自动升级--因为编译过后的代码是作为元数据存储在Salesforce平台上;
3、面向对象--Apex支持类、接口和继承;
4、强类型--在编译时会进行强类型的验证;
5、Apex运行在一个组织多用户共享的平台上,它强制监控代码防止独占共享资源;
6、与数据库结合--存储和操作记录很简单,Apex提供记录和字段的直接存取,也提供报表和查询语言去操作这些记录;
7、数据集中--Apex提供数据库的事物操作,允许回滚操作;
8、使用简单--Apex基于类Java术语;
9、测试简单--Apex提供内置的单元测试,创建、执行和代码覆盖率,Salesforce确保所有的自定义Apex代码在推向平台之前通过执行测试而按照预期来运行;
10、版本控制--Apex可以保存不同版本的API;

Apex语言的亮点:

就像其他面向对象的编程语言,Apex支持以下语言结构:
1、支持类、接口、配置文件和集合(包括数组);
2、对象和数组符号;
3、表达式、变量和常量;
4、条件语句(if-then-else)和控制循环语句(for循环和while循环);
不同于其他面向对象语言,Apex支持:
1、云开发,即Apex是在云上存储、编译和执行的;
2、触发器,类似于数据库中的触发器;
3、数据库语句允许进行直接的调用,支持查询数据;
4、事务和回滚;
5、global访问修饰符,比public修饰符更加宽松,允许在命名空间和应用程序之间访问;
6、自定义代码的版本控制;

此外,Apex是不分大小写的;

开发工具:

  可以直接在浏览器中用Salesforce的Development Console开发;也可以用Eclipse配合Force.com提供的插件来开发;

数据类型概览:

Apex支持各种各样的数据类型,包括一种Salesforce特殊的数据类型--sObject数据类型;
Apex支持以下数据类型:
1、最基础的,例如Integer、Double、Long、Date、Datetime、String、ID、Boolean等;
2、sObject,有一般的sObject和特殊的sObject,比如一个账户,一个联系,或者一个自定义的sObject;
3、一个集合,包括:
①一个存放基础类型数据、sObject、用户自定义的sObject、Apex创建的sObject的list集合(或数组);
②一组基础类型数据;
③一个基础类型-基础类型、基础类型-sObject的map集合;
4、一个固定类型值得list集合,也被称为枚举;
5、用户自定义的Apex类;
6、系统提供的Apex类;


Apex集合:list;
list保存的是有序的对象,Apex中的list和数组是同义的,这两个可以交换使用;
通常,创建一个list比数组容易因为list不要求提前决定分配多少元素;
你可以在创建list时或创建完成之后,调用add()方法来向list中添加元素;
list中的元素可以通过在一对方括号中指定下标来读取,就像数组的元素一样;同样,你也可以通过get()方法来获取list元素;
Apex同样支持另外两种集合类型:set和map;

Apex类:

Apex类的方便之一就是代码的复用性,类中的方法能被触发器或其他类调用;


练习:

创建并保存一个EmailManager的Apex类;Salesforce会自动编译你的类在你保存的时候;

public class EmailManager {

// Public method
public void sendMail(String address, String subject, String body) {
// Create an email message object
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
String[] toAddresses = new String[] {address};
mail.setToAddresses(toAddresses);
mail.setSubject(subject);
mail.setPlainTextBody(body);
// Pass this email message to the built-in sendEmail method
// of the Messaging class
Messaging.SendEmailResult[] results = Messaging.sendEmail(
new Messaging.SingleEmailMessage[] { mail });

// Call a helper method to inspect the returned results
inspectResults(results);
}

// Helper method
private static Boolean inspectResults(Messaging.SendEmailResult[] results) {
Boolean sendResult = true;

// sendEmail returns an array of result objects.
// Iterate through the list to inspect results.
// In this class, the methods send only one email,
// so we should have only one result.
for (Messaging.SendEmailResult res : results) {
if (res.isSuccess()) {
System.debug('Email sent successfully');
}
else {
sendResult = false;
System.debug('The following errors occurred: ' + res.getErrors());
}
}

return sendResult;
}

}

下一步,用debug调用上述类中的方法来进行测试;
在Developer Console左上角,点击Debug下的Open Execute Anonymous Window,在打开的新窗口中,输入一下代码:
EmailManager em = new EmailManager();
em.sendMail('Your email address', 'Trailhead Tutorial', '123 body');

当然,要将Your email address 的位置写成一个有效的邮箱地址;

点击窗口右下角的execute执行,现在上述类中的方法以及被执行了,debug中您所填写的邮箱应该会收到一封邮件,内容是“123 body”,主题为“Trailhead Tutorial”;检查你的邮箱吧;

查看Debug日志:

Debug日志对调试你的代码非常有用,当Apex方法被调用时,过程都会被记录在Debug过程中,当然你也可以自己往日志中写debug信息,来帮你调试你的代码看具体哪里有问题;

在Developer Console页面的下方,点击Logs,选择最近的日志双击查看具体信息;点击选择Debug Only筛选日志,即可只显示System.debug()的行;
当然,您也可以通过自己输入关键字来搜索想要的日志信息;
在上述Debug测试中,我们能看到的日志信息是 16:22:01:433 USER_DEBUG [23]|DEBUG|Email send Successfully;

静态方法的调用:
因为在上述类中,sendMail()方法没有使用类中的成员变量,因此它不需要是一个实例方法;现在我们将这个方法改成静态方法,即在方法的声明中加上static关键字;
静态方法的调用比实例方法更加容易,因为不需要先去实例化这个类,而可以直接通过类名来调用;

将sendMail()方法改为静态方法之后,在Execute Anonymous窗口中就不需要通过先实例化类再来调用方法了,直接调用:

EmailManager.sendMail('Your email address', 'Trailhead Tutorial', '123 body');

点击execute执行,效果将会一样;

附:因为新公司需要我去研究Salesforce,自己也就开始慢慢摸索,刚刚接触,时间紧,跟着官方的英文文档边翻译边看,可能存在很多翻译和技术上的问题,也欢迎同行的指正和交流学习,谢谢!

Salesforce自主学习(一)的更多相关文章

  1. Salesforce开发者学习笔记之一:基本知识

    本文介绍了Salesforce开发平台的基本知识, 包括如下内容: Salesforce平台介绍 Salesforce基本术语 定制和扩展Salesforce平台 创建一个简单的应用程序 Salesf ...

  2. salesforce 零基础学习(六十一)apex:component简单使用以及图片轮转播放的实现

    有的时候,我们项目有可能有类似需求:做一个简单的图像轮转播放功能,不同的VF页面调用可以显示不同的图片以及不同的图片描述.这种情况,如果在每个页面单独处理相关的图像轮转播放则显得代码特别冗余,此种情况 ...

  3. salesforce 零基础学习(五十五)java通过SOAP方式定时访问某个文件然后插入到sObject中

    项目源码:https://github.com/zhangyueqidlmu/SOAP-Access-SFDC.git 项目背景:salesforce端相关数据需要其他系统提供,其他系统可以提供相关数 ...

  4. salesforce 零基础学习(五十四)常见异常友好消息提示

    异常或者error code汇总:https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_con ...

  5. salesforce 零基础学习(五十三)多个文件生成一个zip文件(使用git上封装的代码)

    此篇参考git代码:https://github.com/pdalcol/Zippex 学习salesforce可以访问一个朋友的网站:https://www.xgeek.net 首先感谢git上提供 ...

  6. Salesforce的sharing Rule 不支持Lookup型字段解决方案

    Salesforce 中 sharing rule 并不支持Look up 字段 和 formula 字段.但在实际项目中,有时会需要在sharing rule中直接取Look up型字段的值,解决方 ...

  7. 微软要如何击败Salesforce?Office365、Azure、Dynamics365 全面布局AI | 双语

    微软在上月宣布组建自己的 AI 研究小组.该小组汇集了超过 5000 名计算机科学家和工程师,加上微软内部研究部门,将共同挖掘 AI 技术. 与此同时,亚马逊,Facebook,Google,IBM ...

  8. SalesForce 记录级别安全性

    对象级安全性 简档 对象级安全性提供了控制 Salesforce.com 中数据的最简单方式.使用对象级安全性 您可以防止用户查看.创 建.编辑或删除特殊类型对象的任何实例 如潜在客户或业务机会.对象 ...

  9. Salesforce Apex 使用JSON数据的示例程序

    本文介绍了一个在Salesforce Apex中使用JSON数据的示例程序, 该示例程序由以下几部分组成: 1) Album.cls, 定了了封装相关字段的数据Model类 2) RestClient ...

随机推荐

  1. Easyui布局

    Easyui入门视频教程 第03集---Easyui布局 Easyui入门视频教程 第03集---Easyui布局 目录 -----------------------   Easyui入门视频教程 ...

  2. 【xcode插件介绍】Alcatraz ----The package manager for Xcode

    对于许多iOS开发者而言,Alcatraz并不陌生,甚至是相当的喜闻乐见.Alcatraz是一款开源的Xcode包管理器,由Marin Usalj.Delisa Mason和Jurre Stender ...

  3. Web API 2中的属性路由

    Web API 2中的属性路由 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.ht ...

  4. [转]Even when one byte matters

    Source:http://kernelbof.blogspot.jp/2009/07/even-when-one-byte-matters.html Common Vulnerabilities a ...

  5. ruby gsub gsub! chomp chomp! 以及所有类似函数用法及区别

    ruby中带“!"和不带"!"的方法的最大的区别就是带”!"的会改变调用对象本身了.比方说str.gsub(/a/, 'b'),不会改变str本身,只会返回一个 ...

  6. 公众平台Bee.WeiXin

    微信公众平台Bee.WeiXin开发介绍 阅读目录 开始 预览 配置项说明 调用链方式的应答 理解调用链上下文 自定义MVC响应 总结 我们来看一下如何通过Bee.WeiXin开发微信公众平台.关于微 ...

  7. 调WScript.Shell时报错:Automation 服务器不能创建对象

    我们经常需要通过生成ActiveXObject("WScript.Shell");来调某一exe文件, 如 //设置网页打印的页眉页脚为空 var HKEY_Root,HKEY_P ...

  8. this关键字、访问修饰符、super关键字

    this关键字.访问修饰符.super关键字 Java关键字this只能用于方法方法体内,而且只能用在非静态方法内.当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个 ...

  9. iOS抽奖程序

    iOS抽奖程序 代码下载地址: http://vdisk.weibo.com/s/HKehU http://pan.baidu.com/share/link?shareid=893330225& ...

  10. QT 初试 MainWindow简易窗体

    1.创建一个空的QT工程文件 2 建立程序文件 MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include<QMainWind ...