Salesforce自主学习(一)
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自主学习(一)的更多相关文章
- Salesforce开发者学习笔记之一:基本知识
本文介绍了Salesforce开发平台的基本知识, 包括如下内容: Salesforce平台介绍 Salesforce基本术语 定制和扩展Salesforce平台 创建一个简单的应用程序 Salesf ...
- salesforce 零基础学习(六十一)apex:component简单使用以及图片轮转播放的实现
有的时候,我们项目有可能有类似需求:做一个简单的图像轮转播放功能,不同的VF页面调用可以显示不同的图片以及不同的图片描述.这种情况,如果在每个页面单独处理相关的图像轮转播放则显得代码特别冗余,此种情况 ...
- salesforce 零基础学习(五十五)java通过SOAP方式定时访问某个文件然后插入到sObject中
项目源码:https://github.com/zhangyueqidlmu/SOAP-Access-SFDC.git 项目背景:salesforce端相关数据需要其他系统提供,其他系统可以提供相关数 ...
- salesforce 零基础学习(五十四)常见异常友好消息提示
异常或者error code汇总:https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_con ...
- salesforce 零基础学习(五十三)多个文件生成一个zip文件(使用git上封装的代码)
此篇参考git代码:https://github.com/pdalcol/Zippex 学习salesforce可以访问一个朋友的网站:https://www.xgeek.net 首先感谢git上提供 ...
- Salesforce的sharing Rule 不支持Lookup型字段解决方案
Salesforce 中 sharing rule 并不支持Look up 字段 和 formula 字段.但在实际项目中,有时会需要在sharing rule中直接取Look up型字段的值,解决方 ...
- 微软要如何击败Salesforce?Office365、Azure、Dynamics365 全面布局AI | 双语
微软在上月宣布组建自己的 AI 研究小组.该小组汇集了超过 5000 名计算机科学家和工程师,加上微软内部研究部门,将共同挖掘 AI 技术. 与此同时,亚马逊,Facebook,Google,IBM ...
- SalesForce 记录级别安全性
对象级安全性 简档 对象级安全性提供了控制 Salesforce.com 中数据的最简单方式.使用对象级安全性 您可以防止用户查看.创 建.编辑或删除特殊类型对象的任何实例 如潜在客户或业务机会.对象 ...
- Salesforce Apex 使用JSON数据的示例程序
本文介绍了一个在Salesforce Apex中使用JSON数据的示例程序, 该示例程序由以下几部分组成: 1) Album.cls, 定了了封装相关字段的数据Model类 2) RestClient ...
随机推荐
- MVC与Validate验证提示的样式修改
MVC中使用Validate的验证,要修改错误提示样式一共有3处需要修改,否则就不太完美了: MVC中的Validate的验证机制只用在后台写一次,就可以完成前台和后台的完美验证,前台的验证主要是依靠 ...
- 后台XML处理
public void GetInfo() { string message = @"<?xml version='1.0' encoding='utf-8' ...
- elasticsearch文档-modules
elasticsearch文档-modules modules 模块 cluster 原文 基本概念 cluster: 集群,一个集群通常由很多节点(node)组成 node: 节点,比如集群中的每台 ...
- 对 Linux 新手有用的 20 个命令
你打算从Windows换到Linux上来,还是你刚好换到Linux上来?哎哟!!!我说什么呢,是什么原因你就出现在我的世界里了.从我以往的经验来说,当我刚使用Linux,命令,终端啊什么的,吓了我一跳 ...
- javascript闭包1
javascript闭包 在学习javascript闭包之前,需要先了解一下"作用域链". 每一段javascript代码都有一个与之关联的作用域链(scope chain),这个 ...
- IOS学习之路十四(用TableView做的新闻客户端展示页面)
最近做的也个项目,要做一个IOS的新闻展示view(有图有文字,不用UIwebview,因为数据是用webservice解析的到的json数据),自己一直没有头绪,可后来听一个学长说可以用listvi ...
- tomcat创建一个windows服务
具体步骤如下: 1.把JDK解压到C:\Program Files\Java下,Tomcat解压到D:\tomcat下 2.配置环境变量 JAVA_HOME:C:\Program Files\Java ...
- .NET框架设计—常被忽视的C#设计技巧
.NET框架设计—常被忽视的C#设计技巧 阅读目录: 1.开篇介绍 2.尽量使用Lambda匿名函数调用代替反射调用(走进声明式设计) 3.被忽视的特性(Attribute)设计方式 4.扩展方法让你 ...
- Enlightenment笔记
Enlightenment是一个文件管理器(曾经), 随着发展, 现在的目标已经是创建一个跟xfce, kde等一样的桌面环境. 作为一个用的人不多, 兼容性一般般, bug还不少的桌面环境, E的最 ...
- How to use USB 3G dongle/stick Huawei E169/E620/E800 ( Chip used Qualcomm e1750) in Linux (China and world)
Using this 3G module in Linux is so great. I want it. So I made it. The 3G dongle of Huawei E169/E62 ...