Salesforce是一款很是强大的CRM(Customer Relationship Management)系统,国外企业使用十分频繁,而国内目前仅有几家在使用(固然,国内外企使用的依旧较多),所以相对来说,中文资料相对较少。这里,结合以前参加的培训和本身的一些理解,说说Salesforce的相关知识,若有误之处,还请各位大佬们多多指点。html
在刚接触Salesforce时,本身申请个试用版(https://login.salesforce.com/.),注册后便急急火火参考官网各类教程(https://trailhead.salesforce.com),但总以为云里雾里,总结起来就是乱(主要概念和配置太多)学起来至关吃力,直到清楚相关概念后,再回过头学习,发现轻松很多,因此下面先谈谈Salesforce的几个基本概念。java
在学习salesforce,常常会看到Org这一名词,其实就是Organization(组织)。若是一家企业想要使用Salesfroce产品,首先得向Salesforce公司购买一个Org instance,其实就是给你一个用户名和密码,登陆后,能够建立用户,配置业务逻辑以及二次开发等等。web
当购买Org instance后,它会限制存储空间外,主要分为Data Storage, File Storage以及Big Object Storage(若是不够用,可加钱扩展空间,相似国内的某些云盘)数据库
每一个Org都会配置制定数量的License,每建立一个User都须要消耗一个User License(通常建立用户时使用Salesforce License)并发
这里须要注意的是,除了Storage和License外,Salesforce还有API的数量限制,毕竟高请求意味着高并发,消耗的性能更多,因此这确定是个卖点指标啦。正常状况下,API Request是够用的,可是若是设计大量数据的操做仍是要关注的,防止请求数量被使用完。高并发
PS: 固然,在Org的信息中,还有Language, Time Zone, Fiscal Year以及Currencies等相关概念,但这些相对简单,你们看一眼就明白,这里就不说了。性能
user,某个可登录该Org的人,能够是developer, sales也能够是Partner。通常主要包含一下几个属性:personal, Security & Access, Locale学习
其中,最重要的概念是Role,User Liencese, Profilespa
PS: User一经建立便没法删除,只能去掉Active选项,该设计理念是为了方便查询某些历史记录。固然,inactive后,License 便会释放掉。设计
profile,其实就是一组settings和Permissions,用来决定该用户登陆时能够见到什么,以及能够作些什么。
PS: 每一个User都归属于某一Profile,而且User与Profile是多对一的关系,详情请点击(http://www.javashuo.com/article/p-kordlntf-ce.html)
在私有或者混合模型中,Role层次结构容许更高级别的User继承了直系底层User的权限。好比:若是EMEA Sales Rep是某个case的owner,那么他的直系领导们(EMEA Sales Director, VP of Global Sales, CEO)都拥有访问这个case的权限,而且权限的继承是单项的。
这里可能会有人疑问,什么是私有或者混合模型?那么就得提出sharing的概念。(详细内容:http://www.javashuo.com/article/p-xuogdafw-gs.html)
针对全部的sObjects,除了对该sObject schema的访问权限外(对该sObject具备增删改查权限),对其中的某条记录也有严格的控制。如上述的role中所说,EMEA Sales Rep是某个case的owner,那么在Case这个Object中,EMEA Sales Rep便有该条记录的访问权限,其余的case记录对他来讲是不感知的。
那么问题来了,除了该条记录的owner以外,还有谁能够该条记录的增删该查权限呢?
这里能够看出,针对每一个sObject咱们均可以设置访问权限:Private, Public Read Only, Public Read/Write。
PS: 固然,这里的设置只是默认的访问权限,除此以外,还有Role hierarchy,Sharing Rules,Team and Manual Sharing这几种方式来分享记录的访问权限。(详细内容:http://www.javashuo.com/article/p-xuogdafw-gs.html)
sObjects(Salesforce Objects), 是Salesforce平台封装的对象,与传统的数据库table有殊途同归之妙。
sObject分为标准对象和自定义对象,标准对象是平台自动生成的对象例如:Account, Contact, Lead, Opportunity;而自定义对象能够按照各自业务需求自行设置,可是Salesforce为在API Name中自动加上“__c”这样的后缀(customize)。
每一个对象均可以定义多个字段,而且每一个字段能够是字符串,数字,公式,日期等类型。
针对每一个字段,均可经过Field-Level Security设置访问权限。
固然,你能够设置Trigger,相似于数据库操做,before/after insert/update/del,例如:
trigger PairPtAttachToAccount on Pt_Attach__c (before insert) { for(Pt_Attach__c ptAttach: trigger.New) { List<Webex_Account__c> accounts = [select Id, Account_Id__c from Webex_Account__c]; for(Webex_Account__c account: accounts) { if(ptAttach.Account_Id__c == account.Account_Id__c){ ptAttach.Webex_Account__c = account.Id; break; } } ptAttach.Site_Name__c = ptAttach.Site_Name__c + '.webex.com'; } }
上面仅是本身的一些简单梳理,如有纰漏之处,望各位大佬们不令赐教,抱拳了~