包 | mx.data |
类 | public class DataService |
继承 | DataService DataManager Object |
子类 | 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 语法隐藏 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
属性 | 由以下参数定义 | ||
---|---|---|---|
adapter : DataServiceAdapter = null
控制与服务器交互的类的实例。 | DataManager | ||
autoCommit : Boolean
指示是否自动提交对本地缓存进行的更改。 | DataManager | ||
autoConnect : Boolean
指示此服务是否应为需要连接的任何操作尝试连接。 | DataManager | ||
autoMerge : Boolean
如果设置为 false,则当将更改从远程目标推送到客户端时不会立即应用。 | DataManager | ||
autoSaveCache : Boolean
可以将数据和更改的本地缓存保存到磁盘中。 | DataManager | ||
autoSyncEnabled : Boolean
如果为 true,fill()、createItem() 和 getItem() 请求将返回负责侦听对远程目标中的项进行的更新的项。 | DataManager | ||
cacheID : String
提供对此服务的缓存标识的访问。 | DataManager | ||
channelSet : ChannelSet
提供对服务使用的 ChannelSet 的访问。 | DataService | ||
commitRequired : Boolean [只读]
指示是否存在未提交的更改以及是否应该调用 commit() 方法。 | DataManager | ||
conflictDetector : ConflictDetector
提供对当前实现的访问,此实现正用于检测推送到 DataManager 实例的远程操作的冲突。 | DataManager | ||
conflicts : Conflicts [只读]
包含 Conflicts 对象,即 Conflict 实例的 ArrayList。 | DataManager | ||
connected : Boolean [只读]
指示 DataService 是否已连接到远程目标。 | DataManager | ||
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
dataStore : DataStore
包含一个 mx.data.DataStore 类型的对象。 | DataManager | ||
deleteItemOnRemoveFromFill : Boolean
默认情况下,当您对托管填充集合调用 removeItemAt() 方法时,它会向服务器发出一个删除项调用以物理删除该项。 | DataManager | ||
destination : String [只读]
指示此服务与哪个远程目标关联。 | DataService | ||
encryptLocalCache : Boolean
指示是否应为使用 SQL 脱机适配器的 AIR 客户端加密脱机存储。 | DataManager | ||
fallBackToLocalFill : Boolean
此标志确定当应用程序断开连接时是否对本地存储进行查询。 | DataManager | ||
hierarchicalEventsDefault : Boolean
关联选择性地列出关联实例属性上的属性更改事件。 | DataManager | ||
ignoreCollectionUpdates : Boolean
指示是否忽略对托管集合所做的更改,而不针对提交与服务器通信。 | DataManager | ||
indexReferences : Boolean
要调整应用程序的速度,如果您对此 DataManager 所管理的、其它项的关联属性中的项进行了少量的填充或引用,请将此属性设置为 false。 | DataManager | ||
isInitialized : Boolean [只读]
指示是否初始化与此 DataManager 实例相关联的元数据。 | DataManager | ||
manualSync : ManualSyncConfiguration
为每个 DataManager 实例提供对 ManualSyncConfiguration 实例的访问。 | DataManager | ||
maxFrequency : uint
确定 DataManager 实例可以每秒收到的最大消息数。 | DataManager | ||
mergeRequired : Boolean [只读]
指示是否存在必须合并的挂起更改。 | DataManager | ||
offlineAdapter : DataServiceOfflineAdapter
返回一个 mx.data.DataServiceOfflineAdapter 类型的对象。 | DataManager | ||
pageSize : int
提供对所有集合的当前页面大小设置的访问。 | DataManager | ||
pagingEnabled : Boolean [只读]
指示是否将远程目标配置为允许分页请求。 | DataManager | ||
priority : int
DataManager 实例发送的消息的默认消息优先级。 | DataManager | ||
requestTimeout : int
提供对操作的请求超时(以秒为单位)的访问。 | DataManager | ||
resetCollectionOnFill : Boolean
如果属性为 true,则在 fill 操作完成后,将发送 RESET 事件。 | DataManager | ||
resubscribeAttempts : int
控制已断开连接的 DataManager 实例尝试重新订阅目标的次数。 | DataManager | ||
resubscribeInterval : int
控制重新订阅尝试之间的延迟(以毫秒为单位)。 | DataManager | ||
saveCacheRequired : Boolean [只读]
指示是否存在尚未保存至本地缓存的更改,以及是否应该调用 saveCache() 方法。 | DataManager | ||
subscribed : Boolean [只读]
指示 DataManager 实例是否已订阅到远程目标。 | DataManager | ||
throwItemPendingErrors : Boolean
如果您要在访问松散访存的数据或未分页的数据时禁止项挂起错误,请将此属性设置为 false。 | DataManager |
方法 | 由以下参数定义 | ||
---|---|---|---|
DataService(destination:String)
使用指定目标构造 DataService 实例。 | DataService | ||
清除以前调用 saveCache() 方法或将 autoSaveCache 方法设置为 true 时存储到磁盘中的所有数据
| DataManager | ||
清除由从本地存储传递的描述符指定的数据。 | DataManager | ||
提交当前由与此 DataManager 实例关联的 DataStore 实例管理的所有集合的挂起更改。 | DataManager | ||
指示是否存在此特定对象的挂起更改。 | DataManager | ||
强制此服务尝试连接到远程目标。 | DataManager | ||
调用远程目标上的计数方法。 | DataManager | ||
请求在远程存储中创建指定项。 | DataManager | ||
请求从远程存储中删除指定项。 | DataManager | ||
断开 DataManager 实例的网络连接。 | DataManager | ||
使用提供的名称和自变量执行查询。 | DataManager | ||
根据目标的关联 fill 方法填充指定的 ListCollectionView(集合)实例。 | DataManager | ||
根据目标的关联 fill 方法填充指定的 ListCollectionView(集合)实例。 | DataManager | ||
执行一个返回单个项的查询。 | DataManager | ||
返回本地存储中的 ArrayCollection 或单个托管对象。 | DataManager | ||
getCacheDescriptors(view:ListCollectionView, options:uint = 0, item:Object = null):mx.rpc:AsyncToken
使用 CacheDataDescriptor 实例填充指定的 ListCollectionView(集合)实例。 | DataManager | ||
使用之前在应用程序中使用的所有缓存标识符来填充指定的 ListCollectionView(集合)实例。 | DataManager | ||
对与指定标识匹配的项发出异步请求。 | DataManager | ||
使用给定的标识查找所提供的项。 | DataManager | ||
返回指定集合的页面信息。 | DataManager | ||
返回消息缓存中针对指定项的挂起操作。 | DataManager | ||
表示对象是否已经定义了指定的属性。 | Object | ||
强制初始化 DataStore。 | DataManager | ||
如果传递的集合由此服务管理,则返回 true。 | DataManager | ||
如果传递的集合要使用分页功能,则返回 true。 | DataManager | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
如果将提供的项范围全部页入,则返回 true。 | DataManager | ||
根据关联的 <fill-method> 元素基于本地存储上的数据填充指定的 ListCollectionView。 | DataManager | ||
将用户从 DataService 的目标中注销。 | DataService | ||
将所有挂起更新合并到托管对象集中。 | DataManager | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
刷新由此 DataManager 实例管理的所有数据。 | DataManager | ||
刷新先前使用 fill 方法填充或作为托管关联进行管理的集合。 | DataManager | ||
释放 DataManager 实例的所有托管集合和项。 | DataManager | ||
releaseCollection(view:ListCollectionView, clear:Boolean = false, copyStillManagedItems:Boolean = true):void
使指定集合中的所有项脱离此 DataManager 实例的管理。 | DataManager | ||
releaseItem(item:IManaged, copyStillManagedItems:Boolean = true, enableStillManagedCheck:Boolean = true):IManaged
使指定的项脱离此 DataManager 实例的管理。 | DataManager | ||
释放集合中的一系列项。 | DataManager | ||
释放单值关联的值。 | DataManager | ||
还原对指定项进行的所有未提交的更改。 | DataManager | ||
还原指定集合中包含的、应由此 DataManager 实例管理的所有项的更改。 | DataManager | ||
此方法保存当前状态的 DataManager 实例缓存。 | DataManager | ||
指示是否存在对此特定对象所做的未保存至本地缓存的暂挂更改。 | DataManager | ||
为此 DataService 目标设置凭据。 | DataService | ||
设置循环操作动态属性的可用性。 | Object | ||
为此 DataService 目标的第三方设置凭据。 | DataService | ||
获取之前在此数据服务(数据管理器)上执行的所有填充的已更改项。 | DataManager | ||
[静态]
允许所有本地数据的同步的简便方法:针对每个数据服务(数据管理器)调用 synchronizeAllFills(),以便仅当所有单个 synchronizeAllFills() 调用完成后,才完成最终结果标记。 | DataManager | ||
获取上一次调用 fill 或 synchronizeFill 后在服务器上更改的已更改项。 | DataManager | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
触发指定项目的更新。 | DataManager | ||
返回指定对象的原始值。 | Object |
事件 | 摘要 | 由以下参数定义 | ||
---|---|---|---|---|
如果在挂起的本地更改和其它客户端提交的更改之间检测到冲突,或者此客户端提交的更改与远程目标中的更改发生冲突,则调度 DataConflictEvent.CONFLICT 事件。 | DataService | |||
当由于错误而导致服务调用失败时,将调度 DataServiceFaultEvent.FAULT 事件。 | DataService | |||
当远程目标推送数据操作的通知时,将调度 MessageEvent.MESSAGE 事件。 | DataService | |||
此服务的属性发生更改时,将调度 PropertyChangeEvent.PROPERTY_CHANGE 事件。 | DataService | |||
当服务调用成功返回时,将调度 ResultEvent.RESULT 事件。 | DataService |
channelSet | 属性 |
channelSet:ChannelSet
语言版本: | ActionScript 3.0 |
产品版本: | Adobe Digital Enterprise Platform Data Services for Java EE 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
提供对服务使用的 ChannelSet 的访问。可以手动构造并分配 ChannelSet,否则将动态创建 以使用为此服务的
配置的通道。
实现
public function get channelSet():ChannelSet
public function set channelSet(value:ChannelSet):void
destination | 属性 |
DataService | () | 构造函数 |
logout | () | 方法 |
public function logout():void
语言版本: | ActionScript 3.0 |
产品版本: | Adobe Digital Enterprise Platform Data Services for Java EE 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
将用户从 DataService 的目标中注销。从目标中注销适用于使用在服务器配置中指定的同一 ChannelSet 连接的所有对象。例如,如果您通过 my-rtmp 通道连接,并使用其中一个 DataService 实例注销,则会注销通过同一个 ChannelSet 连接的所有对象。
注意:Adobe 建议使用 mx.messaging.ChannelSet.logout() 方法而不是此方法。
相关 API 元素
setCredentials | () | 方法 |
setRemoteCredentials | () | 方法 |
conflict | 事件 |
mx.data.events.DataConflictEvent
属性 DataConflictEvent.type =
mx.data.events.DataConflictEvent.CONFLICT
语言版本: | ActionScript 3.0 |
产品版本: | Adobe Digital Enterprise Platform Data Services for Java EE 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
如果在挂起的本地更改和其它客户端提交的更改之间检测到冲突,或者此客户端提交的更改与远程目标中的更改发生冲突,则调度 DataConflictEvent.CONFLICT
事件。每个 DataService 实例仅为此特定目标的项发送冲突事件。
如果您需要同时为一组相关目标处理冲突,请使用 DataService 上的冲突事件。
CONFLICT
常量定义 conflict
事件的事件对象的 type
属性值。
事件对象的属性有下列值:
属性 | 值 |
---|---|
bubbles | false |
cancelable | false |
currentTarget | 用于定义处理该事件的事件侦听器的对象。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。 |
conflict | 保存发生的冲突的 Conflict 对象。 |
message | 与此事件相关联的 Message。 |
target | 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。 |
fault | 事件 |
mx.data.events.DataServiceFaultEvent
属性 DataServiceFaultEvent.type =
mx.data.events.DataServiceFaultEvent.FAULT
语言版本: | ActionScript 3.0 |
产品版本: | Adobe Digital Enterprise Platform Data Services for Java EE 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
当由于错误而导致服务调用失败时,将调度 DataServiceFaultEvent.FAULT
事件。例如,如果 fill()
方法调用失败,则该调用会调度此事件。对于在提交结果中生成错误的各个项,也会获得此事件。在这种情况下,DataServiceFaultEvent 包含 commit 返回的标记,但是故障中的项和错误消息字符串特定于导致该错误的项。
FAULT
常量定义 fault
事件的事件对象的 type
属性值。
事件对象的属性有下列值:
属性 | 值 |
---|---|
bubbles | false |
cancelable | true,通过关联标记的 responder.fault 方法调用 preventDefault() 将防止服务或操作调度此事件。 |
currentTarget | 用于定义处理该事件的事件侦听器的对象。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。 |
fault | 保存发生的冲突的 Fault 对象。 |
item | 生成错误的项。 |
identity | 生成错误的项的标识。 |
message | 与此事件相关联的 Message。 |
token | 表示方法调用的标记。用于异步完成标记模式。 |
target | 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。 |
message | 事件 |
mx.messaging.events.MessageEvent
属性 MessageEvent.type =
mx.messaging.events.MessageEvent.MESSAGE
语言版本: | ActionScript 3.0 |
产品版本: | Adobe Digital Enterprise Platform Data Services for Java EE 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
当远程目标推送数据操作的通知时,将调度 MessageEvent.MESSAGE
事件。例如,在远程目标上更新数据时,会将更新操作发送给所有正在侦听的客户端,然后在此 DataService 实例上将此操作转换为 message 事件。
此常量的值为 "message"
。
事件对象的属性有下列值:
属性 | 值 |
---|---|
bubbles | false |
cancelable | false |
currentTarget | 用于定义处理该事件的事件侦听器的对象。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。 |
message | 与此事件相关联的消息。 |
target | 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。 |
propertyChange | 事件 |
mx.events.PropertyChangeEvent
属性 PropertyChangeEvent.type =
mx.events.PropertyChangeEvent.PROPERTY_CHANGE
语言版本: | ActionScript 3.0 |
产品版本: | Adobe Digital Enterprise Platform Data Services for Java EE 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
此服务的属性发生更改时,将调度 PropertyChangeEvent.PROPERTY_CHANGE
事件。下列属性会出现这种情况:
commitRequired
mergeRequired
connected
PropertyChangeEvent.PROPERTY_CHANGE
常量可为 PropertyChange
事件定义事件对象的 type
属性的值。
事件对象的属性有下列值:
属性 | 值 |
---|---|
bubbles | 由构造函数确定;默认值为 false。 |
cancelable | 由构造函数确定;默认值为 false。 |
kind | 更改类型;PropertyChangeEventKind.UPDATE 或 PropertyChangeEventKind.DELETE。 |
oldValue | 原始属性值。 |
newValue | 新属性值(如果有)。 |
property | 更改的属性。 |
source | 包含更改属性的对象。 |
currentTarget | 用于定义处理该事件的事件侦听器的对象。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。 |
target | 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。 |
result | 事件 |
mx.rpc.events.ResultEvent
属性 ResultEvent.type =
mx.rpc.events.ResultEvent.RESULT
语言版本: | ActionScript 3.0 |
产品版本: | Adobe Digital Enterprise Platform Data Services for Java EE 3 |
运行时版本: | Flash Player 9, AIR 1.1 |
当服务调用成功返回时,将调度 ResultEvent.RESULT
事件。例如,如果 fill()
方法调用成功,则该调用会调度此事件。
事件对象的属性有下列值:
属性 | 值 |
---|---|
bubbles | false |
cancelable | true,通过关联标记的 responder.result 方法调用 preventDefault() 将防止服务或操作调度此事件。 |
currentTarget | 用于定义处理该事件的事件侦听器的对象。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。 |
message | 与此事件相关联的 Message。 |
target | 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。 |
result | RPC 调用返回的结果。 |
token | 表示对方法单独调用的标记。用于异步完成标记模式。 |
Tue Jun 12 2018, 11:04 AM Z