STUDIO生成主子孙单据开发说明书.docx
《STUDIO生成主子孙单据开发说明书.docx》由会员分享,可在线阅读,更多相关《STUDIO生成主子孙单据开发说明书.docx(55页珍藏版)》请在冰豆网上搜索。
STUDIO生成主子孙单据开发说明书
主子单据开发说明
一.元数据设计
主子单据需要设计如上图的元数据模型,现在以上图元数据模型为例,叙述开发主子单据过程
设计主子元数据,实体之间的对应关系都为组合关系,这和设计主子表单据类似。
只是有几点需要注意:
1.点击主表实体(任务)设计如下
访问策略设置为bodyOfAggVOAccess
2.点击子表实体(分摊任务接收方)设计如下,
访问策略需要设计为PojoAccessor
2.点击表实体(接收方子表)设计如下
3.只有主表实体的类型为AggVO,子表实体和表实体都为NCVO
二.生成VO
点击生成Java代码,会生成如图
几个VO类,需要注意的几点,
必须在子表VO类中加上:
如图的表的属性,属性名字必须和单据模板对应的页签名字一样(这个是SendVO中加的,RecieveVO也是同样的加上),加上这个属性时为了在保存的时候,能够把表的信息一块存入表中.
同时还需要再表的VO类中加上
如图的属性(这个是SendChildVO中加的,RecieveChildVO也同样)。
三.设计模板
设计完元数据和生成VO后,开始进行手工配置,这个节点没法使用向导生成,需要自行进行功能节点注册,菜单注册,单据模板初始化等等操作。
这里需要说明是在设计单据模板。
根据元数据,首先设计一个如下图样的主子表的模板
接着再设计一个表模板:
因为这里表实体是两个,所以还需要再设计一个表模板
最后进行功能节点默认模板设置:
如下图:
这里需要注意,节点标示一定要写,这里会在之后的xml配置中用到这个节点标识。
四.Xml配置
1.设计model,主子界面需要设计如下图的model
2.元数据转换工厂:
一个是主表和子表用,一个是表用
3.数据模型和模板容器,如下图,其中nodekeies和之前配置的节点标识对应上
4.界面元素xml:
--界面元素-->
--是否自动增行-->
--表体行操作按钮注册,与表体右键菜单保持一致-->
--提供了一组默认实现-->
--列表视图-->
init-method="initUI">
class="ponents.grand.action.GrandBodyAddLineAction">
--是否自动增行-->
class="ponents.grand.valueStrategy.GrandPanelValueAdapter"/>
class="ponents.grand.action.GrandBodyAddLineAction">
--是否自动增行-->
--表体页签编码按钮-->
--key为页签的tabcode-->
--最大化最小化Action-->
class="ponents.grand.action.MaxMinCardGrandAction">
init-method="initUI">
--主子列表界面-->
init-method="initUI">
--主子的面板-->
--主子的MODEL-->
--主子的对应关系-->
--主子的协调关系-->
--表的提示信息,默认为"表信息",可以不配-->
--主子卡片界面-->
init-method="initUI">
--主子的面板-->
--主子的MODEL-->
--主子的对应关系-->
--主子的空行过滤>-->
--主子的协调关系-->
--表的提示信息,默认为"表信息",可以不配-->
--维持主子中间关系调停者的处理-->
class="ponents.grand.mediator.MainGrandMediator">
--主子的BillForm-->
--主子的MODEL-->
--主子的关系-->
以下这个是表空行过滤,对应的页签code,一定要和你单据模板初始化中的页签code一样
--子之间对应模板关系配置-->
class="ponents.grand.MainGrandRelationShip">
--列表的对应关系-->
--key为子表的tabcode-->
--表的ListForm-->
--key为子表的tabcode-->
--表的ListForm-->
--卡片的对应关系-->
--key为子表的tabcode-->
--表的BillForm-->
--key为子表的tabcode-->
--表的BillForm-->
--页签与VO的对应关系-->
--key为页签的tabcode(下同)-->
--value为页签对应的VO(下同)-->
5.单据操作代理
这里的页签code和上面的一样,必须和单据模板里面设置的页签code一样
--单据操作代理-->
--key为页签的tabcode、value为页签对应的VO-->
以上XML是比较重要的部分,全部的XML有附件,这里就不全部给出了。
五.开发中需要注意的问题:
XML配置完之后,就能够出现如图的主子界面了。
不过主子单据开发和平常的单据会有些区别,这里一一说明:
1.界面初始化数据:
界面初始化会用到ModelDataManager类,这个类又会调用代理类,来执行查询的数据,返回的数据才通过ModelDataManager来初始化到界面上:
首先代理类必须继承AbstractGrandQueryService类
然后开始远程调用查询。
后台查询方法如下:
需要注意的是:
这里会专门用到查询表的方法,不然查询出来的数据没有表数据。
如果不用这个封装好的类,那可以自己定义一个查询出封装好vo的方法,使其是主子VO:
Override
publicAggMgsSchoolVO[]queryAllData(StringwhereSql)throwsBusinessException{
AggMgsSchoolVO[]aggVOs=null;
//EfficientBillQuery是根据sql条件(以and开始)进行单据VO高效查询的工具类
EfficientBillQueryefq=newEfficientBillQuery(AggMgsSchoolVO.class);
try{
aggVOs=efq.query(whereSql);
}catch(Exceptione){
thrownewBusinessException(e.getMessage());
}
if(aggVOs.length<1){
//如果查询出的aggVOs数据没有数据,那么直接返回null
returnnull;
}
StringBufferpk_c_a_list=ne