包 | mx.data |
类 | public class DataService |
继承 | DataService ![]() ![]() |
子类 | DataService |
语言版本: | ActionScript 3.0 |
产品版本: | Adobe Digital Enterprise Platform Data Services for Java EE 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
将构造 DataService 实例以指定所需的目标。目标通常是在 services-config.xml 文件中配置的,但也可以使用运行时配置来动态配置,如模型驱动的开发。
有两组不同的方法可用于从指定的远程目标检索数据。第一组方法适用于集合托管对象。第二组方法适用于单个托管对象。
对于集合托管对象,使用 DataService.fill()
方法。此方法使用该服务管理的对象填充 ArrayCollection。
要获取单个受管理对象,请使用 DataService.getItem()
和 DataService.createItem()
方法。
如果不再需要以前填充的 ArrayCollection,或者该集合中的项不应再接收或创建更新,则调用 DataService.releaseCollection()
方法。
当不再需要之前使用 DataService.getItem()
或 DataService.createItem()
检索到的项,或相应项不应接收或创建更新时,调用 DataService.releaseItem()
方法。DataService.createItem()
和 DataService.getItem()
方法将返回一个 ItemReference 实例,您可以使用该实例来释放单个托管对象的特定实例。与 DataService.releaseItem()
方法不同,调用 ItemReference.releaseItem()
方法将释放单个托管对象的特定实例。DataService.releaseItem()
方法释放其根据匹配指定标识找到的第一个单个托管对象。只要调用 DataService.getItem()
和 DataService.createItem()
方法的次数与调用 DataService.releaseItem()
方法的次数匹配,这种方法就可行。
第一次调用任何需要连接的方法时,将自动创建到远程目标的连接。例如,当存在未提交的更新时调用 DataService.fill()
方法或 DataService.commit()
方法,DataService 实例会尝试建立到远程目标的连接。要强制断开 DataService 实例的连接,请调用 DataService.disconnect()
方法。可以使用 DataService.disconnect()
方法来清理不再需要的远程目标资源。其它服务可能也使用同一物理连接,因此调用 DataService.disconnect()
方法可能会终止此连接。
可绑定的 connected
属性指示关联的 DataService 连接的当前状态。
如果远程目标已声明了某个操作的任何安全性约束,则必须调用 DataService.setCredentials()
方法以提供凭据。调用 DataService.setCredentials()
方法将会转到远程目标的登录命令。要更改凭据或使当前会话无效,请调用 DataService.logout()
方法,该方法将释放所有本地托管数据。调用 DataService.logout()
方法等同于调用 DataService.release()
方法。
每个 DataService 实例都具有 dataStore
属性,该属性可返回类型为 mx.data.DataStore
的对象。此对象存储一个或多个 DataService 实例的未提交的更改。默认情况下,如果 DataService 实例和其它 DataService 实例管理了关联属性并共享同一组通道,则它们将共享同一个 DataStore 实例。共享 DataStore 实例时,针对一个 DataService 实例调用 commit()
方法会使用共享 DataStore 实例提交对所有 DataService 实例所做的更改。如果关联的 DataService 实例中各个更改之间存在相关性,它会保留操作顺序。
DataService 和 DataStore 实例为需要远程调用的所有操作调度 result 和 fault 事件。
注意:如果您创建两个指向同一目标的 DataService 实例,这两个实例将共享同一个托管对象集合,并调度同一组事件。例如,如果您为某个目标向一个 DataService 实例中添加事件侦听器,但使用另一个实例启动操作,则第一个 DataService 实例仍会收到这些事件。您在 DataService 实例上启动的每个操作都会返回 AsyncToken 实例。您可以为该 AsyncToken 实例添加事件响应器以接收特定于该操作的 result 事件。此方法产生的代码通常比为给定目标全局添加一个结果或错误事件处理程序而产生的代码更简洁。
您可以针对 DataService 实例的任何托管对象的属性使用数据绑定。当对任何托管对象执行远程操作时,DataService 实例还会调度“message”事件。例如,当远程进程更新本地托管项时,将向仍然管理该项的所有 DataService 实例推送消息。此消息作为 MessageEvent.MESSAGE
事件进行调度。
当远程目标响应 DataService 实例提交的更改,或推送的更改与本地未提交的更改冲突时,检测到冲突即会调度冲突事件。可以通过侦听 DataConflictEvent.CONFLICT
来处理冲突事件。使用数据绑定,通过将用户界面控件绑定到 DataService.conflicts.resolved
属性来更新这些控件。
DataService 类支持下列数据同步配置模式:
-
autoCommit
- 如果为 true,则每当检测到更改时就会立即将其发送到远程目标。如果为false
,则必须显式调用commit()
方法。使用可绑定的DataService.commitRequired
属性来确定是否存在未提交的更改。 -
autoSyncEnabled
- 这将影响所有fill()
、getItem()
或createItem()
方法调用,并确定托管实例是否侦听由其它客户端或 DataServiceTransaction 服务器在远程目标上推送 API 对这些对象所做的更改。 -
autoMerge
- 控制从远程目标收到的更改是立即应用,还是排队等候直至调用DataService.merge()
方法时再应用。
使用 DataService.revertChanges()
方法来还原对特定项或所有项所做的更改。如果远程目标操作发生错误,则将已提交的更改放回到未提交的队列中,以使数据和远程目标上的数据保持同步。如果更改发生错误,在故障处理程序的处理过程中通常会调用 DataService.revertChanges()
方法来撤消更改。
mx.data.mxml.DataService 类是 mx.data.DataService 类(允许绑定到 DataService 实例的属性)的特定于 MXML 的子类。
MXML 语法
The <mx:DataService> element accepts the following attributes:
<mx:DataService Properties autoCommit="true" autoMerge="true" autoSaveCache="false" autoSyncEnabled="true" conflictDetector="No default." dataStore="No default." destination="No default." pageSize="No default." id="No default." Events conflict="No default." fault="No default." message="No default." propertyChange="No default." result="No default." />
相关 API 元素
mx.data.Conflicts
mx.data.Conflict
mx.data.ItemReference
mx.data.IManaged
mx.data.utils.Managed
mx.data.IChangeObject
方法 | 由以下参数定义 | ||
---|---|---|---|
![]() |
表示对象是否已经定义了指定的属性。 | Object | |
![]() |
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | |
![]() |
表示指定的属性是否存在、是否可枚举。 | Object | |
![]() |
设置循环操作动态属性的可用性。 | Object | |
![]() |
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | |
![]() |
返回指定对象的字符串表示形式。 | Object | |
![]() |
返回指定对象的原始值。 | Object |
Tue Jun 12 2018, 11:04 AM Z