Flex blazeds数据管理的实现和问题


Flex blazeds数据管理的实现和问题
2010年06月23日
  本文适应于对Flex、blazeds有一定认识(当然对lcds熟悉也可,本文提到的balzeds完全可由lcds替代),尤其对于blazeds至少要熟悉其remoting-config.xml、service-config.xml等文件的配置,可参考adobe的官方文档“BLAZEDS
  Developer Guide”。本文强调的是datamanager和datastore的了解和使用。
  1、 flex客户端快速配置数据服务
  开发人员在flex开发环境中(插件或者builder)的数据/服务视图中,点击“数据连接/服务”按钮,选择服务类型,这里选择blazeds,会自动列出service-config.xml配置文件中配置的所有service,这里需要注意的是需要在java web项目的web.xml配置文件增加如下配置,否则可能出错。
  
  RDSDispatchServlet
  RDSDispatchServlet flex.rds.server.servlet.FrontEndServl et
  
  useAppserverSecurity
  false
  
  10
  
  
  RDSDispatchServlet
  /CFIDE/main/ide.cfm
  
  当用户选择了某个server(假设为TestService)之后,用户即可拖动该service与datagrid等进行绑定,可实现快速的数据查询,增、删、改变更提交。
  Flex_4_Tutorials,Chapter 6: Using data management to synchronize server updates,详细地并且图形并茂地描述了step操作,唯一遗憾是其基于
  ColdFusion。
  2、 数据管理的实现
  数据管理在我看来就是查、增、删、改,简单来说就是数据查询和变动数据提交,通常情况下flex UI是用datagrid来展示数据的,因此可以说数据管理就是datagrid如何填充数据,datagrid的数据变动如何抓取出来并且提交到java服务,直至数据库,这里重点强调的是增、删、改数据如何提交及数据如何恢复。
  1) 启用数据服务的数据类型的数据管理功能,所谓数据类型可以简单理解为填充datagrid的item(行记录,比如订单行项目、用户信息等);
  2) 指定其创建项的操作,1中选定的数据服务的某个函数,建议命名为insertItem;
  3) 指定其更新项的操作,1中选定的数据服务的某个函数,建议命名为updateItem;
  4) 指定其删除项的操作,1中选定的数据服务的某个函数,建议命名为deleteItem;
  至此,datagrid的数据变动已经可以提交给java服务了,有2种提交方式。
  1)DataManager.autocommit = true时,通过调用TestService. insertItem, TestService. updateItem, TestService. deleteItem即可将增删改的item提交给java服务,每次只提交一个item;
  2)DataManager.autocommit = false时,用户调用TestService.commit(),即可把所有的增、删、改记录都提交给java服务。
  用户可以调用testService.revertChanges();来恢复任何变动的数据,恢复到上次查询的显示结果。
  3、 使用注意事项
  虽然flex blazeds提供的这个数据管理功能一定程度上给开发人员带来了方便、特别是有利于制定flex开发规范,但是个人觉得flex blazeds提供的数据管理太鸡肋,想用好的话还不如参考此思想自行实现。
  1) 每次只提交一条记录,假设对datagrid新增了5条记录、修改了4条记录、删除了1条记录,那么做数据提交的时候flex就需要访问java服务10次,大大增加连接开销。
  2) 可扩展性极差,用户无法在flex端获取变更记录(虽可通过datastore. uncommittedBatches获取所有未提交的变更项,但是没有增、删、改的标记),因此用户无法自行批量提交变更项(除非java服务中cache了原始记录集合)。
  3) 状态管理没开放,既然其可抓取变更项,一定是有状态改变的,但是flex未开放状态管理api,只是说存在如下状态变更:
  testService查出数据后其状态为初始状态;
  有增、删、改时其状态变为未提交;
  Commit成功后状态变回初始状态;
  revertChanges之后也变回初始状态;

猜你喜欢

转载自ulod91ulod.iteye.com/blog/1571967
今日推荐