应用程序生命周期管理

一个Salesforce系统可以有多个版本,最常见的有:

  • production版本:终端用户实际使用的版本
  • sandbox版本:沙盒环境,用于开发、测试等

在对Salesforce系统的功能持续开发的过程中,有些功能可以直接在production版本中直接更新,比如增减报表、建立视图等,不用担心对整个系统造成潜在的风险。而有些功能或应用程序则必须通过复杂的步骤来实现,比如增减自定义对象、字段、添加Apex类等。这些功能在开发之后必须经过详细的测试,并且如果没有对用户进行合适的培训,新的功能可能造成用户的误解,从而对系统造成潜在的风险。

对于Salesforce应用程序生命周期合理的管理,有助于将风险减小至最低,这一点在商业逻辑复杂的大企业系统的开发中尤其重要。

应用程序生命周期

一个应用程序的生命周期大体可以分为以下几部分:

  1. 计划:在开发之前对于需求进行详细的规划设计
  2. 开发:开发相应的应用程序或功能,最好使用sandbox版本进行
  3. 测试:测试开发出的功能,将问题反馈给开发者进行修复,最好使用sandbox版本进行
  4. 部署:当开发的应用程序或功能经过完整的测试之后,可以部署上线,比如从sandbox版本部署到production版本中,供终端用户使用

大型开发环境的构建

对于大型开发环境,需要多个开发者共同开发,每一个开发者都有自己的sandbox开发环境。

当开发者完成功能后,可以通过版本控制软件将功能整合到质量管理的sandbox环境中。

开发者的功能整合后,可以上传到用户测试的环境中。

当测试通过后,可以上传到真正的production环境中。

沙盒的类型

沙盒(sandbox)可以看作是production环境的一个拷贝,供开发和测试使用。沙盒可以刷新,即从production中重新拷贝一次,得到最新的系统和数据,而此前在沙盒中的任何更改都将丢失。

沙盒分为多种类型:

  • Developer:只包含系统的设置,不包含数据库。开发者可以在其中添加或载入不多于200MB的数据用于开发和测试。每天可以刷新一次。
  • Developer Pro:和Developer类似,不过可存储的数据量达到了1GB。每天可以刷新一次。
  • Partial Copy:是一种特殊的Developer类型的沙盒,可以在其中预定义一些存在于production环境中的数据作为样例数据。在预定义样例数据时,只能选择哪些类型的对象会存在样例数据中,无法选择具体的记录。可存储的数据量是5GB,每个对象可容纳的样例数据最多10000条记录。每5天可以刷新一次。
  • Full:从production环境的完全拷贝,系统功能、设置、数据都完全一样。每29天可以刷新一次。

在production环境中的设置界面,可以设置此系统的沙盒。

当沙盒被创建成功之后,其中的用户的登录名会在后面加上“.沙盒名”。比如一个用户在production环境中的用户名是“user1@test.com”,那么在一个名为“dev”的沙盒中,其用户名变为“user1@test.com.dev”。其密码不变。

同样的对象记录可以从production环境被拷贝到沙盒中,但是要注意:它们的ID已经改变了。所以在代码或其他地方要读取某记录时,要尽量避免使用写死的ID值,而要使用其他方法来查询、读取。

更改集(Change Sets)

如果要将设置的改变从一个系统拷贝到另一个系统,可以使用更改集。

关于更改集:

  • 更改集只包括能从“设置”界面中做出的更改,而非所有的更改。
  • 在两个系统间发送和接收更改集需要它们拥有“部署链接”(Deployment Connection)。
  • 在两个系统间发送和接收更改集需要它们使用更改集的权限。
  • 使用更改集的两个系统必须从属于同一个production环境,比如同一个production环境下的不同沙盒系统,或者某沙盒和production环境。

改变部署的最佳实践

当开发者在开发用的沙盒中完成了功能的开发和其他设置之后,就需要将这些改变部署在生产环境中。

在这个过程中,有以下几点最佳实践:

  • 不允许在生产环境中进行任何改变。生产环境中的改变必须始终从开发沙盒中部署。
  • 使用Metadata API来部署各组件的改变。
  • 只允许一个管理员在生产环境中进行“设置”界面的更改。
  • 对于需要经常向生产环境中部署的情况,制定定期的计划任务。

Salesforce 应用生命周期管理的更多相关文章

  1. ASP.NET Core中的依赖注入(4): 构造函数的选择与服务生命周期管理

    ServiceProvider最终提供的服务实例都是根据对应的ServiceDescriptor创建的,对于一个具体的ServiceDescriptor对象来说,如果它的ImplementationI ...

  2. 【转】Tomcat组件生命周期管理

    Tomcat组件生命周期管理 Tomcat中Server,Service,Connector,Engine,Host,Context,它们都实现了org.apache.catalina.Lifecyc ...

  3. Castle IOC容器组件生命周期管理

    主要内容 1.生命处理方式 2.自定义生命处理方式 3.生命周期处理 一.生命处理方式 我们通常创建一个组件的实例使用new关键字,这样每次创建出来的都是一个新的实例,如果想要组件只有一个实例,我们会 ...

  4. Java实现生命周期管理机制

    先扯再说 最近一直在研究某个国产开源的MySQL数据库中间件,拉下其最新版的代码到eclipse后,启动起来,然后做各种测试和代码追踪:用完想要关闭它时,拉出它的STOP类想要运行时,发现这个类里赫然 ...

  5. 6、Khala的登录生命周期管理

    khala能够对设备进行生命周期管理,并提供了与生命周期相关的接口,用户只需在具体的设备类型实现类中重写这些生命周期接口,即可享受khala对于生命周期管理的同时定制与业务相关的操作.具体接口解释如下 ...

  6. 依赖注入及AOP简述(十一)——生命周期管理 .

    2.     生命周期管理 各种依赖注入框架提供了替开发者管理各种Scope的便利功能,随之而来的就必然是被管理的依赖对象的生命周期管理的问题.所谓生命周期管理,就是一个对象在它所属的Scope中从被 ...

  7. Windows 8 动手实验系列教程 实验5:进程生命周期管理

    动手实验 实验5:进程生命周期管理 2012年9月 简介 进程生命周期管理对构建Windows应用商店应用的开发者来说是需要理解的最重要的概念之一.不同于传统的Windows应用(它们即使在后台仍然继 ...

  8. 快速构建Windows 8风格应用30-应用生命周期管理

    原文:快速构建Windows 8风格应用30-应用生命周期管理 引言 Windows 8 中可以启动多个应用并在其中切换,我们没有必要担心降低系统速度或消耗电池电量. 因为系统会自动挂起(有时会终止) ...

  9. Akka(2):Actor生命周期管理 - 监控和监视

    在开始讨论Akka中对Actor的生命周期管理前,我们先探讨一下所谓的Actor编程模式.对比起我们习惯的行令式(imperative)编程模式,Actor编程模式更接近现实中的应用场景和功能测试模式 ...

随机推荐

  1. For、Foreach、和Parallel.For等简单的速度检测

    控制台代码  直接复制即可 static void Main(string[] args) { List<int> testData = new List<int>(); Ra ...

  2. Spring详解(六)------AspectJ 实现AOP

    上一篇博客我们引出了 AOP 的概念,以及 AOP 的具体实现方式.但是为什么要这样实现?以及提出的切入点表达式到底该怎么理解? 这篇博客我们通过对 AspectJ 框架的介绍来详细了解. 1.什么是 ...

  3. Maven私服nexus

    部署私服 xenus  下载https://www.sonatype.com/download‐oss‐sonatype 我下载了两个版本的nexus: nexus-3.13.0-01-unix.ta ...

  4. VMware Workstation Pro网络配置(WiFi配置等)

    常用技巧 连续按两下ctrl+alt,实现鼠标脱离 VMware Workstation Pro网络配置有几种模式: 桥接模式: 网络上的独立主机 占用路由器新IP资源 通过VMware Networ ...

  5. html标签详解(1)

     http标签详解及讲解        1.基础标签 <!DOCTYPE html> <!--表示文本类型--> <html> <!--<html> ...

  6. linux定时任务执行没结果,手动执行有结果问题总结

    今天写了个脚本手动执行有结果,但是放到系统定时任务跑却没结果,之前也遇到这种问题解决了没记录后面又懵逼了一次~~~ 如下图: 手动执行有结果 放到定时任务中每五分钟执行一次 解决方法: 脚本中加载系统 ...

  7. IdentityServer(13)- 使用 JavaScript 客户端

    本文使用的授权码模式,已更新至 .NET Core 2.2 本快速入门将展示如何构建基于浏览器的 JavaScript 客户端应用程序(SPA). 用户将登录 IdentityServer,使用 Id ...

  8. selenium python 一些操作和定位收集

    (—)滚动条操作 python中selenium操作下拉滚动条方法汇总 selenium_webdriver(python)控制浏览器滚动条 selenium+Python(select定位) Sel ...

  9. 三方面搞定http协议之“请求方法”

    我所熟知的请求方法一共有六种: GET 请求指定的页面信息,并返回实体主体. POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件) PUT 从客户端向服务器传送的数据取代指定的文档的内 ...

  10. HashTable原理与源码分析

    本文版权归 远方的风lyh和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作,如有错误之处忘不吝批评指正! HashTable内部存储结构 HashTable内部存储结构为数组+单向链 ...