理解Adobe Flash Builder 在创建 Force.com 程序时的数据管理

这是一篇来自Adobe开发者中心的文章,由RIAMeeting翻译小组成员Santiago翻译,原文地址是:
http://www.adobe.com/devnet/salesforce/articles/salesforce_architecture_overview.html

Force.com 是业界领先的云计算平台。Adobe Flash 平台是富互联网程序(RIA)界的领先者。使用两者,开发者可以开发出既受益于基于云计算而且又拥有友好界面的应用程序。

在本文中,你可以学到使用 Adobe Flash Builder 为 Force.com开发程序时的数据管理和迁移。想了解创建这些程序的有关技术,请阅读技术概览的文章。

数据管理组件

以下术语是使用 Flash Builder 为 Force.com 创建程序时的数据管理的主要组件。

  1. Force.com:这是 salesforce.com 在业界领先的基于云平台的数据集中业务程序。它可以让你不需要任何硬件或者软件设施而迅速创建和发布程序。
  2. Salesforce.com 数据库:这是由 salesforce.com 保存和管理所有对象和相关联记录的主要数据存储点。这些可以是 Force.com 平台的标准对象或者是个人用户自定义的对象。作为一个开发者,你不能在 salesforce.com 之外直接读取这些数据。
  3. Force.com web 服务:这是基于 SOAP 的 web 服务 API,它提供了到 Force.com 数据库的存取。它提供了你进行操作数据的标准 CRUD(增删改查)操作的映射。所有的这些操作需要一个有效的 “session id”,这个 session id 在你登录的时候获得的。
  4. Stratus:这是新的数据存取和同步化框架的代码名。它作为 Adobe Flash Builder 开发 Force.com 插件的一部分。它使开发者可以很容易地使用 Adobe Flex 和 AIR 创建出可以跟 salesforce.com 数据进行交互的应用程序。Stratus 建立在客户端的数据管理(包括 Adobe LiveCycle Data Services)的基础上,但不包括 LCDS 服务器端数据管理功能。Stratus 提供了:登录功能,网络检测和上线、下线数据的同步,冲突解决服务,与 salesforce.com 的数据输入框相似外观与动作的UI 组件。开发者可以使用 Stratus 的公共 API 来读取 salesforce.com 上的记录。
  5. 本地的 SQLite 数据库:Adobe AIR 运行时内置了一个 SQLite 数据库并提供了 salesforce.com 上的数据的离线数据缓存功能。
  6. 类型化对象:当你创建一个 Force.com Stratus 项目时,Force.com 版本的 Flash Builder会自动生成 salesforce.com 定义的对象映射的 ActionScript 类。这些类型化的对象包含了与它们对应的 salesforce.com 对象的元数据,包括字段名和验证规则。这些对象是你作为一个开发者使用 Stratus 框架 API 来管理数据时使用的。

数据的迁移

在本节我们会学习:使用 Force.com 版本的 Flash Builder 创建的程序的生命周期中的数据迁移。这是一个 Force.com 的 Flex 桌面应用程序(如图所示)。

Figure 1. Force.com 的 Flex 桌面应用程序中的数据迁移

程序的启动

当程序启动时,Stratus 框架中的代码促使一系列事件的发生而无需开发者进行初始化或者控制过程。首先,程序会通过一个登录窗口要求用户输入用户名和密码。这些证明被程序用来调用一个 Force.com 登录的 web 服务。如果验证成功便可以建立一个有效的 session。
然后,程序会检查本地的 SQLite 数据库有没有数据缓存。如果没有,它调用 Force.com 的元数据 web 服务将放在 Force.com 离线公文包中的对象数据库拉取下来。(你创建一个 salesforce.com 网站的一个离线公文包的话,它会定义一个 salesforce.com 数据的一个子集,该子集可以被桌面应用程序读取)。程序然后会在本地数据库创建对应的表来保存这些对象类型的记录和一些其它的配置表。之后,它调用 Force.com 的 web 查询服务来取得那些对象的记录并将它们保存到本地数据库(这是一个完全同步的实现)。这时,程序的启动阶段已完成并且本地数据库与 salesforce.com 的数据库是同步的。

如果程序在登录的时候发现已存在本地缓存时,它需要同步数据。它会检查任意一方的数据库在用户离线且没有连接到 Force.com 云平台时是否发生改变。如果有发生改变,它会尝试将数据相应地提交到 salesforce.com 数据库或者本地数据库(这是一个部分同步的实现)。如果一个记录的在线与离线都发生改变,这时会显示一个冲突解决的界面让用户选择应该使用哪一个值提交到本地或者 salesforce.com 的数据库。

用户在第一次运行该程序时必须要连接到互联网,以便本地数据库可以创建并且用 salesforce.com 的数据填充。之后,如果程序在启动时没有连接到互联网的话,那么同步的操作会延迟到下一次网络已连接的时候。

数据查询

在程序启动后,程序一般都是查询一些数据并显示给用户看。要做到这一点,开发者要使用 Stratus  API 中的查询方法从本地数据库中取得数据。即使在连接到互联网时,所有查询都是在本地数据库进行的,而不是 salesforce.com 的数据库。这是因为每天可以使用 web 服务访问 salesforce.com 的API 调用是有数量限制的。一个程序很可能发出许多的查询来获取数据,所以不用 API 调用来查询 Force.com 云平台,而是查询本地数据库,因为本地数据库通过 Stratus 框架自动与 salesforce.com 数据库保持同步的。

这些查询的结果是类型化对象的实例,它们是当你在使用 Force.com 版本的 Flash Builder创建一个 Force.com Stratus 项目时生成的。这些对象是 salesforce.com 对象的客户端版本,它们被实现成类型化的 ActionScript 类。例如,一个叫 Contact 的salesforce.com 对象,它包含 name, lastContactDate 和 phoneNumber 字段,那么就会存在一个相应的有相同属性和数据类型的 ActionScript 类。

查询的结果会绑定到任何 UI 组件,包括像 DataGrid  的Flex 组件和像LabelAndField 的 Force.com Stratus UI 组件。LabelAndField 组件是一个包含了一个数据输入、输出 UI 组件的表格。

记录修改

更新记录时,用户只需要更改一个类型化对象的一个属性。例如,一个 Contact 对象的 phoneNumber 属性可以设置为一个新的字符串。开发者然后调用 Stratus API 的保存方法来提交更改到本地数据库。如果用户是在线的,会提交到 salesforce.com。如果用户是离线的,程序会在用户上线时尝试提交更改。如果在那里检测到冲突,冲突解决 UI 会显示。

你也可以告诉程序稍后再提交更新到 Force.com 云平台。因为 salesforce.com 对 API 调用数量的限制,如果用户提交太多的数据更新(增、改、删)的话,你要先将更新保存到本地数据库并稍后才使用一个 web 服务将所有更新提交到 salesforce.com。

增加记录到数据库的过程与修改记录大致相同,除了:开发者必须先创建一个适当的类型化对象的类(如:Contact)的实例并提供一个供用户设置它的属性的 UI。更新记录与保存新记录是使用相同的 Stratus  保存 API 的。

数据同步

默认情况下,程序会每隔 20 分钟检查客户端与服务器端的新数据的(你可以以编程的方式更改这个值)。如果程序在客户端发现新的或者更新的记录,它会在 salesforce.com 生成对应的更新和创建。同样,如果在最近的更新后,salesforce.com 的记录发生更改的话,它是在本地数据库生成对应的更新。当然,这个过程只有在网络可用时才发生。

总结

在本文中,你学到了在Force.com 的 Flex 桌面程序是如何在本地数据库和 Force.com 云平台中管理和迁移数据的。Stratus 框架是 Force.com 版本的 Flash Builder 的一部分,它大大地简化了两个数据库之间的数据同步过程并处理检测和解决冲突。这让开发者更专注于程序的架构、设计和表现而不是数据的管理。开发者可以查询、更新、创建和删除本地数据库中存在的记录。这个简单创建连接程序的特性提高了基于云数据平台的 Force.com 和 Adobe 的表现平台的应用,并使所有商业程序(包括土地服务操作、医学记录、土地买卖管理等等)受益。

学习更多

了解更多关于 Force.com 的 Adobe Flash Builder 版本并想知道这类技术是如何一齐工作的,请访问 Adobe 开发者联系中的 Salesforce.com 技术中心,或者 Salesforce 网站上的 Adobe 页面。

了解更多关于 Force.com,请访问 Force 开发者网站。

了解更多关于 Flex,请访问 Adobe Labs 上的 Flex 4 和 Flash Builder 4 资源页。

riadevID: 
您给予的分值: None 平均分: 5.5 ( 2 票)

请问国内有没有人用Flash Builder做过force.com应用程序的实例

请问国内有没有人用Flash Builder做过force.com应用程序的实例。哪位高人共享出来大家看看?

Andy