经验及第

专注于IT技术经验

导航

一个轻量的ajax和页面生成框架

      在一般中小企业的信息系统中,主要是基础数据的维护和数据的查询和报表.看了一些开源的程序,代码基本都是写
  死的,如名称,字段.而且基本是一个功能一个页面.在小企业里有时客户是根本不知道自己需要什么,因此需求总是在不
  停的变,如增加一个查询字段.
   写死的代码维护起来非常费时,分析一下就会发现一般简单的mis程序页面主要是有由工具栏,form,数据表格组成.
  页面的变化不大,主要是里面数据的变化.
   于是有了下面的想法,主要分2步,第一步是页面的生成,主要是根据配置文件生成基本的页面结构,第二步是数据的
  加载.图如下:
  
  页面的生成如下图:
  
  在第一步中 必须的配置文件有2个PageConfig.xml和Local.xml
  PageConfig.xml为页面信息的配置,格式为
  Code
  <?xml version="1.0" encoding="utf-8"?>
  <Pages>
   <Page>
   <!--页面的id,惟一-->
   <PageId>Customers</PageId>
   <!--页面的样式模板-->
   <PageTemplate>SingleEntity.xml</PageTemplate>
   <!--如果是页面的数据单表就是表名,是proc为空-->
   <Table>Customers</Table>
   <!--form里生成的字段,用于查询-->
   <FormString>CustomerID,ContactName</FormString>
   <!--添加和修改时需要的字段-->
   <EditFormString>CustomerID,CompanyName,ContactName,ContactTitle,Address,City,Region,PostalCode,Country,Phone,Fax</EditFormString>
   <Comment>Customers</Comment>
   </Page>
   <Page>
   <PageId>CustOrderHist</PageId>
   <PageTemplate>SingleEntity.xml</PageTemplate>
   <FormString>CustomerID</FormString>
   <!--当页面数据为proc时进行查询的proc-->
   <Selectp>CustOrderHist</Selectp>
   <Comment>CustOrderHist</Comment>
   </Page>
  </Pages>
  local.xml为字段的中文化和类型信息.格式为:
  Code
  <?xml version="1.0" standalone="yes"?>
  <Locals>
   <Local>
   <!--字段名 惟一,不唯一的话只取第一个-->
   <Name>Region</Name>
   <!--要显示的中文名-->
   <LocalName>区域</LocalName>
   <!--字段类型-->
   <TypeName>varchar</TypeName>
   <!--在添加和编辑时判断是否为空-->
   <IsNull>Y</IsNull>
   <!--控件的类型(txt,ddl(下拉框),ddlby(根据ddlcontrol表里生成的下拉框),date,checkbox)-->
   <ControlType></ControlType>
   <!--ControlType为ddl时用的表名,为ddlby时为识别id-->
   <DsString>
   </DsString>
   <!--ddl时的显示字段-->
   <FieldText>
   </FieldText>
   <!--ddl时的数据字段-->
   <FieldValue>
   </FieldValue>
   <Comment>
   </Comment>
   </Local>
  </Locals>
  通过这2个配置文件,新页面或原有页面的字段更改都只需要更改配置文件,不需要更改程序.极大的方便了程序的维护.
  
  第2步为数据的请求和更新
  
  其中客户端的请求为:
  
  上4个为必须,分别为页面id,操作,返回格式(xml或table),数据页数.然后是数据的参数.
  数据的返回格式也是xml.参看学习zk的xml返回形式
  
  demo下载 https://files.cnblogs.com/zhangfei814/Zer0.rar
  
  现在也有部分问题,欢迎大家提供意见
   现在页面和数据都没有缓存,主要是不知道数据变脏后的维护机制,如我的数据返回table分页都是重新查询,再取需要的部分,
   实现缓存主要问题在于数据何时失效,以及数据在其他用户更改后变脏如何通知.看过企业库的,好像每个都需要自己重新写代
   码,有没有可配置的,不需代码的开源组件或想法.

posted on 2007-12-18 09:10  梵天  阅读(1309)  评论(0编辑  收藏  举报