




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据卸载技术红皮书NC-UAP 5.0用友NC-UAP2019-11-181第 页目 录第一章前言1第二章功能界面21.数据卸载管理界面22.数据卸载操作向导3第三章插件开发指南51.卸载插件类52.回退插件类8第四章卸载框架API介绍9第 9 页第一章 前言NC目前所有模块使用同一个数据库,因NC没有数据卸出的机制,数据逐年累积,对于部分增长比较快的实体对象,规模变得超大,影响系统运行效率,造成诸多问题。系统中任何一类实体对象都有它自己的生命周期,一旦具体的实体对象走完了它的生命周期,该数据就成为历史数据,除涉及查询类操作外,不再参与别的类型操作。把这类历史数据从当前的存储区域分区出去,存入专门的历史数据存储区域,可以有效地降低数据规模。我们基于一个或多个维度对实体对象的数据进行划分,选择某一划分区间的实体数据进行卸载。这样,不同区间的内容可以放到不同的存储区域。同时,我们提供管理功能,使业务模块能够装入和查询已卸载的实体数据。第二章 功能界面1. 数据卸载管理界面 数据卸载管理界面有以下几个功能:1、选择“卸载”按钮,界面弹出数据卸载的向导对话框,引导用户完成某实体数据的卸载任务。2、组织已卸载实体数据的日志,包括实体对象编码,卸载依赖的维度值,卸载到的历史表等信息。3、选中界面表头中的一项,点击“反卸载”按钮,就可以回退按指定维度值卸载的实体数据。4、对于失败或者部分成功的卸载记录,选中后可以点“预检查日志”查看预检查信息,详细查看为什么不能成功卸载。5、选中失败或者部分成功的卸载记录,此时如果点卸载,不会再弹出向导,可直接进行再次卸载。只有选中成功的卸载记录,才会弹出卸载向导。2. 数据卸载操作向导选择业务实体 参照出注册的所有业务实体,在其中选择需要卸载的业务实体。输入卸载维度值 根据卸载插件类支持的卸载维度,用户可以选择卸载维度并输入具体维度值。但是,如果该业务实体已经卸载过,则只能用原来的卸载维度,不能再进行选择。另外,卸载插件类和反卸载插件类必须支持选择的卸载维度,否则在卸载过程中会报卸载维度不支持的异常。选择历史表 关于要卸载到的历史表,用户可以使用自建历史表,也可以使用由系统根据卸载维度值建立的历史表。对于历史表唯一的实体数据,用户不能再另行选择历史表。对于历史表不唯一的实体数据,用户可以根据其卸载维度,选择相应的历史表后缀规则。系统将取用户指定的卸载维度上的数值,拼成历史表名的后缀,历史表名=业务表名+后缀。当然,对于卸载相同维度且维度值也相同的数据,用户也不能再选择历史表,只能卸载到已有的数据表中。(比如说第一次将数据按维度年2006卸载到了a_2006表中,则以后再按维度年,维度值2006卸载时,只能卸载到表a_2006中,不能再另行选择。)开始卸载 在选定了需要卸载的业务实体、维度值和历史表规则之后,就可以调用插件开始卸载了。这个对话框最好能够加上卸载进度条,需要完善工作。卸载完指定业务实体指定维度值的数据之后,在数据卸载管理界面上就会出现相应的一项记录。第三章 插件开发指南1. 卸载插件类卸载插件类需要实现接口nc.itf.uap.dum.IDataMove接口。该接口的方法:/* * 检查是否可以卸载,如果不可以卸载请返回不能卸载的原因 * 通过DumResult.appendErrorMsg(String errorMsg)添加错误信息 * 通过DumResult.setCanBeContinue(boolean value)设置出现错误时是否继续卸载 * throws BusinessException */public DumResult beforeMove() throws BusinessException;对于数据量大、业务复杂的单据,建议先做预检查,以提高卸载质量。/* * 卸载事件 * param ctx 传递给卸载插件的上下文信息,包括卸载维度的值,历史表信息等 * return * throws BusinessException */public int move(DumContext ctx) throws BusinessException;具体的数据卸载任务在方法move(DumContext dumCtx)中完成。开发人员从卸载上下文dumCxt中得到业务表、历史表及各维度的值DimensiondataVO,根据维度值将业务表的数据进行过滤卸载到相应的历史表里。对于实体涉及单表情形,如单子表,直接根据维度信息值和原业务表名称,拼成SQL查询语句,然后将执行后的结果直接插入到目标业务表(相应历史表)即可;对于实体涉及到多表的情形,如多子表,先根据维度信息值和原业务主表名称,拼成SQL语句,执行后得到结果集。循环取结果集的主键,然后在原业务子表(可能多个)查找出所有以取得的主表主键值为外键的记录,插入到目标业务子表中。最后将之前得到的主表结果集插入到目标业务主表中。/* * 卸载后事件 * throws BusinessException */public void afterMove() throws BusinessException;暂时无需实现。/* * 历史表是否唯一,如果返回true,则所有数据都会卸载到一个历史表里 * return */public boolean isHistableUnique();/* * 返回业务实体对应的数据库表名 * return */public String getBusiTables();/* * 返回业务实体卸载维度PK * 例如以下返回值表示按年卸载: * return new StringDUMConstants.DIM_YEAR * return */public String getDimensionPKs();卸载插件举例说明:public class PsnclDataMoveClass implements IDataMove public DumResult beforeMove() throws BusinessException DumResult res = new DumResult(); res.appendErrorMsg(单据1错误,期间未结帐.); res.appendErrorMsg(单据2错误,期间未结帐.); res.appendErrorMsg(单据3错误,数据有关联.); res.setCanBeContinue(true); return res; public int move(DumContext ctx) throws BusinessException / 只有一个表 TablerecordVO tableVOs = (TablerecordVO) ctx.getTableRecords() .toArray(new TablerecordVO0); String dstTable = tableVOs0.getHistable(); / 多个维度 DimensionDataVO dimDataVOs = (DimensionDataVO) ctx .getDimensionData().toArray(new DimensionDataVO0); StringBuffer whereParts = new StringBuffer(); for (int i = 0; i dimDataVOs.length; i+) if (i != 0) / 非第一次 whereParts.append( and ); String pk_dim = dimDataVOsi.getPk_dimension(); String dimvalue = dimDataVOsi.getDimensionValue(); whereParts.append(getWherePart(pk_dim, dimvalue); / 查询出要卸载的数据 BaseDAO dao = new BaseDAO(); PsnclVO psnclVOs = (PsnclVO) dao.retrieveByClause(PsnclVO.class, whereParts.toString().toArray(new PsnclVO0); / 插入到历史表中 PsnclDataMoveDAO psnclDAO = new PsnclDataMoveDAO(); try psnclDAO.insertVOsToTable(psnclVOs, dstTable); catch (DbException e) Logger.error(e.getMessage(), e); throw new BusinessException(e.getMessage(); / 删除业务表中的数据 dao.deleteVOArray(psnclVOs); return DUMConstants.SUCCESS; private String getWherePart(String pk_dim, String dimvalue) if (DUMConstants.DIM_YEAR.equals(pk_dim) / 年度 return createdate like + dimvalue + %; else if (DUMConstants.DIM_CORP.equals(pk_dim) return pk_corp = + dimvalue + ; else return null; public void afterMove() throws BusinessException /*历史表是否唯一。*/public boolean isHistableUnique()return false;/* 返回业务表。*/public String getBusiTables()return new String bd_psncl;/* 返回卸载这种数据的可用维度。*/public String getDimensionPKs()return new String DUMConstants.DIM_YEAR,DUMConstants.DIM_CORP;2. 回退插件类 回退插件类实现接口nc.ift.uap.dum.IDataRestore接口。beforeRestore()方法和afterRestore()方法分别对应于反卸载前事件和反卸载后事件。回退事件方法restore(DumContext dumCtx)的实现与卸载插件类的move(DumContext)方法类似,只是一个相反过程,从历史表中查得数据后往原业务表中插。第四章 卸载框架API介绍nc.itf.uap.dum.IDataMoveQueryService.queryUsedDimensionVOByBusiPK(String pk_busi)1. 方法说明:根据需要卸载的实体对象的PK值pk_busi得到实体对象的历史卸载维度。2. 参数和返回值说明:参数pk_busi表示业务实体的主键。返回历史卸载维度信息DimensionVO,如果该业务实体存在历史卸载维度的话,否则返回null值。3. 示例:nc.itf.uap.dum.IDataMoveQueryService.queryHisTablesByCondition(String busicode, DimensiondataVO dimdatavos)1. 方法说明:根据业务编码及具体的维度值查询卸载历史表,以供业务对象做包含历史表的查询。如果没有卸载记录,则返回null值。2. 参数和返回值说明:参数busicode表示业务实体的编码(此处是否需要改为pk_busi?);参数dimdatavos表示具体维度值数据。返回该业务实体在指定维度值上的卸载历史表记录,如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 4 Natural Disasters主题词汇专项练习(含答案)-2025-2026学年高中英语人教版(2019)必修第一册
- 2025年事业单位工勤技能-湖南-湖南政务服务办事员二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北水工监测工二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北有线广播电视机务员二级(技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-湖北-湖北工程测量员二级(技师)历年参考题库含答案解析
- 2025-2030中国纸模切盖子行业发展趋势与前景动态预测报告
- 2025年事业单位工勤技能-湖北-湖北保安员五级(初级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北不动产测绘员一级(高级技师)历年参考题库典型考点含答案解析
- 2025-2030中国竹炭包行业竞争态势及未来前景规划报告
- 2025年事业单位工勤技能-河南-河南电工五级(初级工)历年参考题库典型考点含答案解析
- C919飞机试飞机组机务培训-空调系统课件
- 承插型盘扣式钢管支架课件
- 出血风险评估表
- 露天矿山课件
- 以书为伴 以书为友PPT模板
- 285号附件4市社区文化活动中心社会化专业化管理费用参考
- 部编版八年级语文上册《身边的文化遗产》课件
- 带式输送机出厂检验报告
- DB11-T 1828-2021文物保护工程资料管理规程
- 供应室pdca质量提高腔镜器械包装合格率品管圈ppt模板课件
- 某大楼建设工程-监理规划
评论
0/150
提交评论