Salesforce
2022-02-22 17:50:07 0 举报
AI智能生成
Salesforce
作者其他创作
大纲/内容
https://developer.salesforce.com/
开发者官网
https://developer.salesforce.com/forums#!/feedtype=SINGLE_QUESTION_SEARCH_RESULT&id=906F00000008tGJIAY
常见问题解答区
https://developer.salesforce.com/tools/vscode
安装IDE
https://trailhead.salesforce.com/zh-CN
零基础学习
https://trailhead.salesforce.com/zh-CN/content/learn/modules/starting_force_com/starting_tour
登录后Setup主要内容
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_dev_guide.htm
Apex开发者指南
http://www.dba.cn/book/apex/
Apex中文手册
① 资料
字段类型是Lookup 表示关联字段
Setup->Home->Quick Links->Schema Builder
查看数据表之间的关系 Schema Builder
点击New Custom Object
Label:数据表的名称
Plural Label:数据表名称的复数形式
Data Type:字段类型
输入常用字段
Setup->Build->Create->Objects
找到我们创建的Label,点击打开
选择Data Type——> next
填写字段名称->next
Custom Fields & realtionships -> New
添加字段
创建数据表和字段
② 数据表
Enums 枚举
数据类型
与java类似
初始值都为null
apex变量不区分大小写
变量
查
APEX_Customer__c objCust = new APEX_Customer__C();objCust.Name = 'Test ABC';insert objCust;
增
update updatedInvoiceList;
改
delete updatedInvoiceList;
删
upsert CustomerList;
更新插入(有记录则更新,无记录则插入)
undelete invoiceListToDelete;
取消删除操作
DML
Database.insert(listName,False),其中false表示不允许部分更新。
其他类似DML
数据库方法
SOSL
[SELECT id FROM APEX_Customer__c WHERE Name = 'Customer Creation Test' LIMIT 1].id;
遍历关系字段
List<apex_invoice__c> ListOfInvoices = ListCustomers[0].Invoices__r;
获取子记录
获取父记录
AggregateResult[] groupedResults = [SELECT AVG(APEX_Amount_Paid__c)averageAmount FROM APEX_Invoice__c WHERE APEX_Customer__r.Name = 'ABC Customer'];
聚合函数
String CustomerName = 'ABC Customer';
绑定Apex变量
SOQL
trigger triggerName on ObjectName (trigger_events) { Trigger_code_block }
语法
insert
update
delete
merge
upsert
undelete
执行触发器
通常用于在他们被保存在数据库以前更新或者校验数据
Before trigger
通常用于保存后访问系统的字段(Id等)
After trigger
类型
当前Apex代码的上下文环境为trigger环境,而不是VF等则返回true,否则返回false;
isExecuting
当前操作是否为正在执行添加操作,是返回true,否则返回false;
isInsert
当前操作是否为正在执行修改操作,是返回true,否则返回false;
isUpdate
当前操作是否为正在执行删除操作,是返回true,否则返回false;
isDelete
当前操作是否为在save以前操作,是返回true,否则返回false;
isBefore
当前操作是否为在save以后操作,是返回true,否则返回false;
isAfter
当前操作是否为在回收箱中回复数据以后操作,是返回true,否则返回false;
isUndelete
返回sObject的记录的最新的数据的列表;
只适用于执行insert和update的trigger操作时并且类型为before的时候,才可以使用new返回列表;
new
返回一个ID映射到最新的数据列表的Map集合
newMap
返回sObject的记录修改以前的数据的列表
适用于update和delete操作时,才可以使用old以及oldMap。
old
返回一个ID映射到修改以前的数据列表的Map集合
oldMap
在触发器中调用的数据总数,包括new和old
size
上下文变量
触发器
@isTest注释
TestMethod关键字
测试
参考VsCode部署
部署
Number of SOQL queries: 100 -->一次执行SOQL的次数不能超过100次
Number of query rows: 50000 -->一次查出的数据行数不能超过50000条
Number of SOSL queries: 20 -->一次执行SOSL次数不能超过20次
Number of DML statements: 150 -->DML语句不能超过150条
Number of DML rows: 10000 -->一次操作数据行数不能超过10000行
Maximum CPU time: 10000 -->最大的CPU时间不能超过10000ms
Maximum heap size: 6000000 -->堆大小不能超过6000000B
Number of callouts:100 -->一次执行callouts次数不能超过100次
Number of Email Invocations: 10 -->Email调用次数不能超过10次
Number of future calls: 50 -->调用Future次数不能超过50次
Number of queueable jobs added to the queue:50 -->添加到队列的queueable job数量不能超过50次
Number of Mobile Apex push calls: 10 -->移动端Apex push调用最多不能超过10次
批处理的原因:salesforce对于数据操纵有限制
最多可以处理5000万条数据
方式:异步
新建一个实现了Database.Batchable接口的批处理类
用于查询数据,并将查询数据封装到List中
start()
形参中List为start()方法中返回的数据,可以直接对此List进行修改以达到批处理行为
execute()
进行一些后期处理,比如发邮件等操作。
finish()
接口封装了三个方法
1.start()方法执行后,数据便无法修改;
2.execute()原则上可以执行多次,比如在调用的时规定执行次数,则按照规定次数执行execute();
3.finish()方法执行以后,批处理类用到的所有的变量对象都会恢复到最开始的状态,即值回滚到最开始状态;
4.如果批处理类不实现Database.Stateful接口,则变量只在相应方法起作用,当方法执行完成,变量则会回滚到初始状态
注意事项
例子
步骤
批处理
serialize
deserialize
System.JSON
1.public void close():当JSON Generator关闭以后,无法再写入内容。
2.public Boolean isClosed():判断JSON Generator是否关闭,如果关闭返回true,否则返回false。
3.public String getAsString():返回生成的JSON的内容;
4.public Void writeBoolean(Boolean blobValue):写入指定的布尔类型值;
5.public void writeXXX:详情请看API
JSONGenerator
JSONParser
json的使用
③ 开发语言Apex
下载VsCode
Salesforce Extension Pack
配置VsCode开发插件
下载salesforce CLI
打开命令面板Ctrl+Shift+P
输入SFDX:Create Project with manifest (自动提示)
选择标准项目Standard,输入项目名;创建成功
输入SFDX:Create Apex Class
输入名称
创建一个Apex Class
类上加 @isTest
测试方法 static testMethod void main()
写完测试之后提交,然后测试 (如果不提交,会测试失败)
编写测试Apex class
新建项目
打开命令面板Ctrl+Shift+P
输入SFDX:Authorize an Org
选择不同的环境 sandbox是测试环境
点击enter,触发网页请求登录
在单个文件里右键->SFDX: Deploy this source to org
更新单个文件
在manifest下的package.xml右键-> SFDX: Deploy source in manifest to org
更新所有文件
提交代码
从线上拉取项目代码
④ VsCode配置开发环境
通过上面例子可以看出:PRIVELEGEROLE__c表中的PRIVELEGEID__c是表中的一个字段,通过LookUp关系关联到PRIVELEGE__c,则PRIVELEGEID__r则相当于PRIVELEGE__c表的一个引用,通过PRIVELEGEID__r则可以访问PRIVELEGE__c表中的数据,为了更加明确的了解,将数据表查询结果通过JSON形式显示,便会更加的一目了然。通过查询输出的json结果可以看出,PRIVELEGEID__r他的类型为PRIVELEGE__c,并且把此条记录中的PRIVELEGE__c需要的字段信息查出,ROLEID__r类型为ROLE__c,并且将此条记录中ROLE__c表需要的字段信息查出。推荐下方的网页查看json,它可以将输出的混乱的json格式变得整洁,增强可读性。
以从表查询主表信息
Lookup Relationship
声明一个列表类型,类似于HTML中的<select><option></option></select>关系
获取所有的对象的名称到tokens的映射
sObjectDescribeMap.get(sObjectName).getDescribe().fields.getMap();
获取字段的元数据
PickList的Value值获取
Picklist
声明一个列表类型,区别上面的为允许多选
Picklist(Multi-Select)
⑤ 字段类型(Data type)
https://resources.docs.salesforce.com/200/latest/en-us/sfdc/pdf/salesforce_pages_developers_guide.pdf
资料
VF每个页面都是以<apex:page>标签起始</apex:page>结束,每个VF页面都有一个Controller用来控制其业务逻辑
<apex:page>
<apex:inputText>
<apex:inputFile>
按钮,类似于<input type="button"/>;
<apex:commandButton>
下拉框,类似于html中的<select>;
<apex:selectList>
下拉框下元素,类似于html中的<option>;
<apex:selectOptions>
<apex:pageBlockTable>
表格的列元素,用于显示表格每一列的值;
<apex:column>
链接,类似于html中的<a>标签;
<apex:commandLink>
参数传递使用,用于给Controller层传递参数,传递的参数通过键值对传递
<apex:param>
表单元素,类似于html中的form表单
<apex:form>
后台的值在前台可以通过{!object}形式(是不是类似EL表达式)来获取后台object的变量。
{!object}
控件
点击Preview
找到响应的页面
如何查看页面
https://www.cnblogs.com/zero-zyq/p/5343287.html
分页
⑥ 页面构建
https://www.cnblogs.com/zero-zyq/p/5406352.html
⑦ Permission sets 讲解及设置
Schema.sObjectType t = Account.sObjectType;
Account a = new Account();Schema.sObjectType t = a.getSObjectType();
获取token
sObject
Schema.DescribeFieldResult F = Account.Industry.getDescribe();Schema.sObjectField T = F.getSObjectField();
field
使用Schema类的describesSObjects方法获取描述sObject结果.使用此方法可以通过sObject类型名称描述一个或者多个sObject描述信息。
通过使用Schema类的getGlobalDescribe方法可以获取所有的sObject的描述信息token。
describeSObjects
⑧ 元信息
https://www.cnblogs.com/zero-zyq/p/5507940.html
⑨ 自定义报表导出
Apex classes -> Developer Console --> Ctrr+E
编写匿名代码块
setup->Administer->Security Site Settings->Remote Site Settings。
添加需要访问的url
GET方法获取数据
salesforce访问外界站点
新建一个App,然后创建Connected App
设置Enable OAuth Settings为true
sfdc端rest service构建
/services/apexrest/Goods/getGoodsByIdGoodsList?GoodsId=
测试 在workbench测试
salesforce作为REST Service供外部访问
REST方式
https://trailhead.salesforce.com/zh-CN/content/learn/modules/apex_integration_services/apex_integration_soap_callouts
SOAP方式
⑩ 访问数据
salesforce
Salesforce
0 条评论
回复 删除
下一页