DataManagement服务也是有配置文件进行描述的。由于是数据管理服务所以DataManagement需要一组支持数据添、删、改、查的Java DAO(Data Accesee Object)。然后通过在data-management-config.xml文件当中配置这个Java DAO能够使Flex调用。
data-management-config.xml文件的格式如下所示。
<?xml version="1.0" encoding="UTF-8"?>
<service class="flex.data.DataService" id="data-service">
<adapters>
<adapter-definition class="flex.data.adapters.ASObjectAdapter" default="true" id="actionscript"/>
<adapter-definition class="flex.data.adapters.JavaAdapter" id="java-dao"/>
</adapters>
<destination id="studentJava">
<channels>
<channel ref="my-rtmp"/>
</channels>
<adapter ref="java-dao"/>
<properties>
<use-transactions>true</use-transactions>
<source>com.lcdsstu.dao.dao.StudentAssembler</source>
<scope>application</scope>
<cache-items>false</cache-items>
<metadata>
<identity property="id"/>
</metadata>
<network>
<session-timeout>0</session-timeout>
<paging enabled="false" pageSize="5"/>
<throttle-inbound max-frequency="500" policy="ERROR"/>
<throttle-outbound max-frequency="500" policy="REPLACE"/>
</network>
</properties>
</destination>
</service>
上面代码中同样使用了destination标签描述了Java类的位置以及被远程调用时使用的别名。不同之处在于使用的是Java数据管理类,对于数据的同步性也进行了配置。并针对服务器端的数据库主键也进行了配置。
在Flex中通过ActionScript 3.0的类库和MXML标签调用数据服务。这些ActionScript类和MXML分别位于mx.data包和mx.data的子包下。最常用的ActionScript 3.0远程调用类为mx.data包下的DataService类和mx.data.mxml.DataService标签。标签与类的使用方式几乎一致。DataService类的常用属性和方法如表所示。
表 DataService常用的属性和方法
名称 | 分类 | 说明 |
autoCommit | 属性 | Boolean类型,是否自动提交数据变化。 |
autoMerge | 属性 | Boolean类型,是否接受服务端推送数据。 |
commitRequired | 属性 | Boolean类型,只读属性。是否需要更新数据时提交。 |
destination | 属性 | String类型,远程服务的名称。 |
pageSize | 属性 | int类型,每页显示的条目数。 |
commit | 方法 | 无参数,返回值为AsyncToken类型。进行提交操作。 |
DataService | 方法 | 构造方法。参数为dest是String类型,关联远程对象的名称。 |
createItem | 方法 | 参数为Item是Object类型,返回值为ItemReference类型。创建一条数据。 |
deleteItem | 方法 | 参数为Item是Object类型,返回值为AsyncToken类型。删除指定的一条数据。 |
fill | 方法 | 参数为value是ListCollectionView类型。返回值为AsyncToken类型。将记录填充到指定的ListCollectionView中。 |
getItem | 方法 | 参数为identity是Object类型,defaultValue是Object类型缺省值为null,返回值为ItemReference类型。返回指定id的数据记录。 |
在Flex中可以使用<mx:DataService>标签替代直接只用类库调用远程对象,<mx: DataService >使用如下代码所示。
<mx:DataService
autoCommit="缺省为true"
autoSyncEnabled="缺省为true"
autoMerge="缺省为true"
conflictDetector="没有缺省值"
dataStore="没有缺省值."
destination="没有缺省值"
pageSize="没有缺省值"
id="没有缺省值"
/>