SalesForce 入门

Salesforce.com 一开始是一个云端的销售自动化(Sales Force Automation, SFA)以及客户关系管理工具(Customer Relationship Management, CRM),但经过这么多年的演化,它已经成为一个可以构建任何企业应用的通用平台。Salesforce 这个名字是一个历史遗留产物,Salesforce1 平台虽然仍提供 SFA 和 CRM 的应用,但更是一个构建现代企业系统的基础平台。

价格和功能

Salesforce1 平台上提供了许多不同版本的产品,像 CRM 应用 Sales Cloud ,客服应用 Service Cloud 以及 Platform 等等。不同的产品在内置功能上会有所不同,在 http://www.salesforce.com/crm/editions-pricing.jsp 上可查看所有产品和价格表。此外还有专门提供给开发者的免费版本,可在 https://developer.salesforce.com 申请。

下面我们从不同视角来看 Salesforce1 平台的组成。

元数据驱动的数据模型 (Metadata-driven Data Model)

在 Salesforce1 平台的核心是一个云端数据库,通过元数据可以对数据库进行自定义和配置。元数据定义了数据模型,Salesforce 支持两种不同的方式来修改元数据,一种是在 web 界面上点击拖拽等操作来修改,另一种是通过 XML 格式的定义文件来修改。Salesforce1 平台是一个多租户架构的平台,每一个租户(也叫做 Organization 或者 Org)的元数据(也就是数据模型)都支持版本控制、可打包、可测试。

数据库中的每一个对象或表都叫做 SObject,每一个 SObject 都内置了下面的功能:

自定义字段 (Custom Field)

验证逻辑 (Validation Logic)

字段级别的安全性 (Field Level Security)

引用关系和选项列表 (Reference and Picklist)

Derived Values

所有的 SObject 都提供了:

SOAP 和 REST 的 API

基本的增删改查界面

通过 Salesforce1 的移动端增删改查界面

加索引的搜索

SObject 的字段类型包含:

自动编号 (Auto Number)

公式 (Formula)

累计汇总 (Rollup Summary)

Lookup 关系 (Lookup Reference)

Master-Detail 关系 (Master-Detail Reference)

复选框 (Checkbox)

货币 (Currency)

日期和日期时间 (Date and Date/Time)

电子邮件 (Email)

地理位置 (Geolocation)

数字和百分比 (Number and Percent)

电话 (Phone)

选项列表和多选的选项列表 (Picklist)

文本框、文本区域、加密的文本 (Text, Text Area, Encrypted Text)

URL

平台上每一个新注册的 Org 都内置一些标准SObject,具体依版本不同而定。比如说 Sales Cloud 版的 Org自带了联系人、线索、业务机会。

Salesforce 数据模型内置了一些安全上的特性,比如数据更改的审计(change auditing),字段级别的安全性。

编写代码来实现自定义扩展

在Salesforce1 平台上,用户可以完全依靠 web 界面拖拽点击来构建应用。但有一些用例需要编程来实现自定义,比如自定义的界面、trigger、scheduled jobs。

Salesforce1 平台支持的编程语言:

Visualforce:服务器端模版语言,用来自定义用户界面

Apex:用来编写 trigger,visualforce controller,scheduled jobs 等代码逻辑

SOQL:用于数据库查询的领域专用语言(Domain Specific Language, DSL)

Visualforce 使用了类似 JSP 语法用来创建自定义的 HTML 页面,内嵌在 Salesforce 或者 Salesforce1 移动应用中。Visualforce 中的页面使用了传统的服务器端 MVC 架构,其中 Visualforce 是 View,Apex Class 是 Controller,SObjects 是 Model。Visualforce 页面可以使用任何的 JavaScript,包括 JavaScript Remoting 和各种 RESTful 的 web service。

一个典型的 Visualforce 页面长这样:

<apex:page>
    hello, world</apex:page>

Apex 是一种语法和 Java 类似的,运行在平台上受管的、单独分隔的、安全的运行时中。Salesforce 提供了 Eclipse 插件 Force.com IDE 和基于 Web 的 Developer Console 用来编写 Apex 代码。Apex trigger 绑定在每个 SObject 的事件上,比如 update、delete、create。Batch jobs 和 scheduled jobs 也是用 Apex 编写。

一个简单的 trigger 长这样:

trigger Foo on Contact (after insert) {
    for (Contact newItem : trigger.new) {
        System.debug(‘Contact Created: ‘ + newItem.Name)
    }
}

SOQL 查询可以在 Developer Console 中运行或者在内嵌在 Apex 中,比如:

Contact contact = [SELECT Id FROM Contact LIMIT 1];

Apex 包含了一个类似 JPA/Hibernate 的访问数据库的语法,有助于方便地在 Apex 中对 SObject 进行增删改查。

一个典型的例子:

Contact c = new Contact(LastName=‘Bar‘);
insert c;
c.FirstName = ‘Foo‘;
update c;
delete c;

Apex 代码支持版本控制、可打包、可测试。Apex Runtime 包含了单元测试,达到 75% 以上覆盖率的代码才能部署到生产环境。这种代码覆盖率的要求有助于保持平台升级的稳定性,因为 Salesforce 通过运行用户编写的测试代码来进行平台升级时的回归测试。

除了编写 Apex 代码外,许多业务流程和规则可以通过 Workflow 等来创建。像 SObject 的元数据一样,workflows 可以通过 web 界面来点击创建,Workflows 也是一组 XML 格式的定义文件,支持版本控制、可打包。

Salesforce.com UI,Salesforce1 手机应用,Apex 运行时,Workflow 引擎都是用来构建企业后台应用,面向和企业员工的交互。而在面向客户的界面上和 Salesforce 进行数据交互,Salesforce1 平台提供了 Heroku 服务,让开发者容易地创建、部署、扩展自定义的 web 应用、移动应用、以及Web/RESTful service。Heroku 应用可以使用任何语言编写(Java、Ruby、Node.js,etc),并部署在一个完全受管的 PaaS 平台上,传统上开发者得自己从头搭建一个运行环境和相应的服务。而在 Heroku 上,像负载均衡、失效转移、集中化日志、持续交付、可扩展性这些功能都是开箱即用的。

集成和 ETL

Salesforce1 平台提供了许多方式和其他系统进行集成或者数据迁移同步。数据集成的主要方法有:

Heroku Connect: 一个高性能 Salesforce 数据的标准 SQL 接口

SOAP APIs: 强数据类型的 web service

REST APIs: 支持 JSON 格式的 web service

Streaming APIs: 事件驱动的消息 service

Data Import & Export: 非常多的工具,向导,以及 web service 提供了对 salesforce 数据的导入导出

电子邮件提醒:Apex 和 Workflow 可以用来从 Salesforce 向用户发送邮件提醒

移动端提醒:移动端提醒是内嵌入 Salesforce1 手机应用的,支持自定义的提醒

OAuth 2.0:Salesforce web service 支持 OAuth 2.0 认证,其他应用可以用 access token 来调用 Salesforce 的 web service

SAML: 支持企业应用间的单点登录

Mobile SDKs: Salesforce 的 Mobile SDK 支持 Native, Hybrid 和 HTML5 的移动应用开发

第三方集成服务提供商:许多平台集成服务提供商像 Informatics,Boomi,Cast Iron,MuleSoft 都有一些开箱即用的解决方案支持和 Salesforce 的集成

平台的生态

围绕 Salesforce1 平台有许多服务、应用、框架、工具库。其中包括:

AppExchange:Salesforce1 平台的应用商店

Data.com:全球的联系人目录

ExactTarget:Marketing Cloud

开源的框架,SDKs,工具库,示例,可见 github @forcedotcom 和 @developerforce

可信赖的平台

作为企业数据和应用的基础,Salesforce1 平台必须是值得信赖的(可以参考:https://trust.salesforce.com)。Salesforce 的许多方面体现了企业系统的可信赖,包括系统正常工作和响应都是公开在网上可查询的,多层的安全机制,隐私和证书服务。

如何开始?

准备进入 Salesforce 吗?最好的方式是自己动手做,Salesforce Developer Workshop(http://ccoenraets.github.io/salesforce-developer-workshop/) 提供了一个简单的教程,帮助新手通过使用来理解平台上的组件。



本文是译文,原文如下:

An Architects Guide to the Salesforce Platform

https://www.jamesward.com/2014/08/19/an-architects-guide-to-the-salesforce1-platform

时间: 2024-10-29 12:46:06

SalesForce 入门的相关文章

Salesforce的数据权限机制

本文主要介绍了 Salesforce 对于系统中数据的访问控制是如何设计的,然后也了解了下 Alfresco 和 Oracle VPD 的数据权限机制.希望对一些业务系统的数据权限的访问控制设计能有所参考和启发. Salesforce 1. 产品功能 salesforce是基于 SaaS 的客户关系管理系统(CRM),该系统提供的功能覆盖了众多不同的业务领域,例如:客户资料存储,销售业务管理,协同办公等.在此基础上,Salesforce又提供了一个开发平台以帮助其客户根据自身的需求对核心系统进行

salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载

https://www.cnblogs.com/zero-zyq/p/5275134.html 目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新公司,主要做的就是salesforce,不过当时想要看一些相关资料确实比较难.为了避免想要零基础学习的人少走一点弯路,所以整理一下这几天学到的简单的东西,包括登录salesforce后如何操作,如何下载配置IDE等简单入门操作. 一)给大家一些链接方便学习,查找和提问. 1)salesforce开发者官网:

salesforce 零基础开发入门学习(八)数据分页简单制作

本篇介绍通过使用VF自带标签和Apex实现简单的数据翻页功能. 代码上来之前首先简单介绍一下本篇用到的主要知识: 1.ApexPages命名空间 此命名空间下的类用于VF的控制. 主要的类包括但不限于以下: ApexPages.StandardController:当为一个标准Controller定义扩展的时候使用此类.StandardController对象为Salesforce提供的预构建VF的控制器对象引用; ApexPages.Action:使用Action类和方法用于VF自定义控制器和

salesforce 零基础开发入门学习(九)Approval Process 介绍

在阅读此篇文章前,可以先参考阅读一个前辈总结的关于Approval Process的操作.以下为参考的链接: http://www.cnblogs.com/mingmingruyuedlut/p/3765777.html Approval Process用于流程审批,Apex主要涉及到的命名空间和类为Approval命名空间以及System命名空间下的Approval类. 其中Approval命名空间下主要的类为: ProcessRequest ProcessSubmitRequest Proc

salesforce 零基础开发入门学习(十三)salesforce中JSON的使用

JSON作为一种目前流行的轻量级数据交换格式,salesforce也对其有良好的类对其进行封装处理.salesforce中前后台交互时,使用JSON可以将apex的Object对象进行序列化和反序列化. 主要有三个类处理JSON:1.System.JSON;2.System.JSONGenerator;3.System.JSONParser 这些方法如果调用出现错误则抛出JSONException异常. 一) System.JSON 使用JSON类和方法执行往返的序列化和反序列化JSON内容,这

salesforce 零基础开发入门学习(十二)with sharing 、without sharing 、无声明区别

在salesforce中,声明类大概可以分成三类:分别是可以声明为with sharing,without sharing,以及两者均不声明. 1 public with sharing class A {} 2 3 public without sharing class B{} 4 5 public class C{} 三者区别如下: with sharing:类声明称with sharing类型,则需要走sharing settings中的sharing rules: without sh

salesforce 零基础开发入门学习(十一)sObject及Schema深入

sObject在salesforce中占有举足轻重的位置,除了在数据库中数据以外,我们还应该关心一下他的元信息.元信息封装在Schema命名空间内. 作为面向对象语言,我们可以畅想一下如果我们是设计人员,应该封装哪些方法.下图为自定义的一个Object. 通过图中的简短描述,我们可以猜测应该封装以下方法: 1.可以获取sObject的label名称,api名称,是否可以访问等; 2.可以获取field的label名称,api名称,字段类型等; 3.如果sObject作为父sObject,可以获取

salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句

salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex语言和java很多的语法类似,今天总结的是一些简单的Apex的变量等知识. 有如下几种常用的基本变量Integer,String,Decimal,Double,Long,Boolean,ID. 集合常用的对象:List<T>,Set<T>,Map<T>. 时间日期常用对象:Datetime,Time,Date. 其他:Object,sObject(与数据库相关

salesforce 零基础开发入门学习(七)PickList的value值获取

之前介绍过PickList类型的声明以及赋值,但是如何取出呢?一个sObject对象可以理解为一条数据.通过sObject直接取恐怕很难做到,因为他只会显示一个值.这时候就要用到Schema命名空间中的类与方法以及System命名空间下的Schema类来实现. Schema类 Schema命名空间和Schema类不是同一个概念.Schema类属于System命名空间下,Schema命名空间包含很多类处理Schema元数据信息. Schema类的方法包含schema 信息描述. Schema类主要