nc创建树管理型nc单据开发,如何做到自动刷新节点

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
NC开发问题集NC开发问题集.doc 19页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:200 &&
你可能关注的文档:
··········
··········
论坛问题集
?四、nc5中下拉框不能返回其内容的问题
在单据模板和查询模板中,将一个字段的数据类型设置为“下拉框”,并且设置参照名称为“I,01,02,03,04,05”。运行时下拉框的内容可以显示出来,?但是返回的却是所选值的索引序号,即0,1,2,3,4。 在查询模板中设置了返回类型和显示类型都没有效果。?求助:这是V5的bug还是哪里设置的不对? 我用的是V501
答:换成 SX,01,02,03,04,05?
前面设置的参数都有哪些?分别有什么作用??
答:设置查询模板某一字段的数据类型是“下拉” ,然后在参照类型中输入字符串“IX,自由态,游离态,...” ? IX,UPP024=外部单位,UPP040=内部核算单位,UPP041=内部法人单位,UPP042=内部渠道成员?? CX,UC000-0001589=客户,UC000-0000275=供应商,UC000-0001574=客商?? I,工行,招行,人行,建行???字符串的前缀有 I IX C CX S SX 六种代表不同的含义:?? I??将下拉框的索引号作为整型返回?? IX??将下拉框的索引号作为整型返回?? C??将下拉框的索引号作为Char类型返回?? CX??将下拉框的索引号作为Char类型返回?? S??返回下拉框中显示的内容?? SX??可设置返回值和显示内容的对应关系,选择某一个显示值则会返回该显示值对应的返回值 格式 “SX,自由态=6,审核通过=7,审核不通过=9” ? 以上六种类型中两个字母的(IX、CX、SX)可通过“=”号设置对应关系,而剩下的类型会把整个字符串包括“=”号都显示出来。?
五、关于树的问题
一个左树右表结构的管理界面的单据不知道如何把树的ROOT根结点改成其它的名字,? 还有我对右表里面的数据增加、保存、删除后`如何能同一时间刷新左边的树``用的是V501?答:对于树卡片类界面,调用父类BillTreeCardUI的modifyRootNodeShowName方法修改根节点名称,?对于树管理类界面,调用父类BillTreeManageUI的modifyRootNodeShowName方法修改根节点名称,?UI类对应的Control类的isAutoManageTree方法返回值是true可以在编辑卡片或列表界面后自动刷新树的节点。
在ui类中 可以? ((TableTreeNode)getBillTree().getModel().getRoot()).setUserObject(&name&);
六、怎样编写代码在待办事务中发送一条消息?
答:可以参考下, 后台代码,就是往数据库插入一条记录?////////////////////////////// ? ? ? ? PFMessageBO pfm = new PFMessageBO(); ? ? ? ? CommonMessageVO comvo = new CommonMessageVO(); ? ? ? ? UserNameObject usvo = new UserNameObject(&a&); ????usvo.setUserPK(&000000VJ&); ????usvo.setUserCode(&a&); ????usvo.setUserName(&a&); ????????comvo.setSender(&a&); ????comvo.setReceiver(new UserNameObject[]{usvo}); ????comvo.setMessageContent(&导入数据演示&); ? ? ? ? comvo.setTitle(&外部平台导入数据&); ? ? ? ? comvo.setType(MessageTypes.MSG_TYPE_INFO); ? ? ? ? pfm.insertCommonMessage(comvo); ? ? ? ? ? ? ? ? ///////////////////////////////
参见类? nc.ui.uap.sf.SFClientUtil ? ? showNode(String nodecode)
七、报表开发中遇到的问题在报表中,需要对 XX率(比如兑现率) 进行小计合计, 兑现率 = 实发量 / 计划量 , 是一个百分比数, 现在点击&小计合计&qu
正在加载中,请稍后...用友nc(52)
&nc & uap中树卡节点编码树与pk树有什么区别
pk树就是用pk来标识上下级关系,那么每条数据里面要有2个字段,pk和parentpk这样才能标识出上下级关系。
还有一种编码树,这个时候就需要编码规则,比如2/2/2编码规则,表示每级编码2位,例如01,这样的数据按照这个规则就能构成编码树,即按编码构成树。
开发的时候,编码树需要指定编码规则,编码字段。pk树需要指定pk字段,parentpk字段。当然两种构建树实现的接口不一样。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:45501次
积分:1601
积分:1601
排名:千里之外
原创:116篇
评论:11条
(10)(4)(4)(1)(2)(8)(15)(7)(12)(5)(6)(14)(17)(13)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'NC6.1&的生产制造子系统的设计与实现&(二)
系统的实现与测试&
4.1& 系统实现&
4.1.1& 生产订单管理模块的实现&
4.1.1.1& 基础设置子模块的实现&
“班组定义维护”,“轮班制度定义维护”和“轮班生成维护”都是比较简
单的节点,这三个点定义车间工作班组和班组内成员,设定轮班次数安排轮班
班组。“轮班制度定义维护”节点中修改功能的程序流程图如图4-1 所示。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&
轮班制度修改程序流程图&
选择页面一条数据后,点击“修改”按钮后,XML 框架调用ModifyAciton
类中的doAction 方法,同时实例化LBManageModel 模型类,在该方法中通过调
用LBManageModel 类中的getSelectedOperaData 方法获得页面数据,然后调用
LBValidationService 接口中的modifyCheck 方法进行校验,在此方法中需要调用
平台引用接口IReferenceValidation&
检查该条轮班制度是否已被引用,如果被引
用则向用户提示被引用信息,停止修改操作。如果没有被引用则调用ILockData
接口进行锁定,然后将界面变为可编辑模式供用户修改。轮班制度定义维护实
际界面如下图4-2 所示。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
图4-2& 轮班制度定义维护界面&
“接收类型设置”是对完工产品进行更加细致的分类,并对每类完工产品
进行相应的后续处理,主要包括合格处理、缺失处理、超差处理、返工处理、
报检处理、接受处理和倒冲处理。&
“收发类别对照”定义某种物料或者某类物料在生产入库和备料出库时对
应的收发类别。如果设置了收发类别对照,则系统为生产订单生成备料计划时
就会按照收发类别分单。&
4.1.1.2& 车间任务管理子模块的实现&
生产订单建立就是将计划订单通过直接、合并、拆分方式生成生产订单,
并对订单进行模拟投放,产生缺料报告及替代料明细表。&
生产订单是计划部门下达给生产部门的任务,是车间管理的入口。生产订
单维护提供了丰富的功能,增删改、修订、模拟下达、业务流程单据联查等。&
在生产订单维护节点中,只有通过“投放”按钮,生产订单才可以生成属
于自己的备料计划单数据。生产订单投放操作的程序流程图如图4-3 所示。&
选择页面一条数据然后点击投放按钮,首先实例化生产订单维护节点的管
理模型MoManageAppModel&
类,然后调用该模型的getSelectedOperaData& 方法
从页面获得已选的欲投放的数据,然后实例化IMOValidationService 生产订单验
证接口,调用该接口的checkRelease& 方法检查是否满足投放要求,如果没有满
足投放要求,则将ValidationException 异常投放到页面上,告诉用户该操作无法
执行的原因。如果没有捕获到ValidationException 异常,则说明满足投放要求。
这时候系统自动初始化备料计划单 PickmVO,然后将该生产订单中的数据及
MoVO 中的数据储存到备料计划单PickVO 中。&
然后调用基础数据模块中的工厂级参数接口
IFactoryParameter&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
isAutoAudit& 方法检查“备料方式审核方式”是否是自动审核方式,如果是自动
审核,则系统调用MoBusinessService 接口中的auditMO 方法,将PickmVO 中
“是否审核字段”改为true,然后将MoVO 中的“是否投放”字段改为True,
完成投放。如果审核方式不是自动审核的话就需要手动审核,那这时候该操作
就结束了。需要点击生产订单维护界面的审核按钮,将该条数据审核,则系统
自动将该条数据改为以投放状态,至此整个投放的业务操作完成了。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
生产订单投放程序流程图&
在生产订单维护节点提供了联查功能,在点击“联查”按钮后,系统会根
据生产订单号查询到来源计划订单号和与之对应的备料计划号,而计划订单号
也会向上查询到销售订单号。联查内容显示如图4-4
所示。&&&&&&&&&
联查功能演示图&
“生产订单维护”节点新增状态界面如图4-5。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
生产订单新增状态界面&
“生产订单统计”可以按照生产订单、生产部门、工作中心、产品为依据
进行统计,统计的内容包括计划数量、完工数量、入库数量、订单数量、完工
订单数量、及时完工率等。&
“生产报告”节点主要用来记录生产完工情况,以及对完工产品的一些后
续处理,例如返工、倒冲发料、报检、报废、入库等。生产报告实际界面如图
4-6 所示。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&
生产报告实际界面&
“订单完工维护”当由于特殊原因需要提前终止生产时,可在此节点强制
完工。订单完工后,与其相关的业务单据均不允许再修改和删除(比如生产报
告),如果需要重新修改这些相关业务单据,则需要在此取消完工。成本核算完
成后可以自动将生产订单置为结束状态,由于特殊原因不需要核算成本时,也
可在此强制结束。&
4.1.1.3& 车间物料管理子模块的实现&
车间物料管理跟车间任务管理相辅相成,两者不可或缺,包括备料计划单
维护、生产订单调料、生产订单交接、倒冲发料和备料计划汇总发料。&
“倒冲发料”是指有的物品在生产前没有统计需要多少材料,只有当生产
完毕后根据生产件数计算所需材料。&
“生产订单交接”接收下级订单转移过来的完工自制半成品,然后将剩余
物料返回给上级生产订单,使生产订单可以将物料分配给其他备料计划。生产
订单交接单分为表头和表体两部分,表头数据在生产报告中生成,在该节点产
生生产订单交接点表体。生成生产订单交接单的程序流程图如图4-7 所示。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
图4-7& 交接操作程序流程图&
选择一条备料计划单数据后,系统首先实例化IAppEventHandler& 监听类,
调用该类中的isBackData& 方法,在该类中实例化生产订单交接单节点的管理模
型JhManageAppModel 类,然后调用该模型的getSelectedOperaData 方法从页面
获得已选的欲交接的备料计划单数据,调用查询接口IJhQueryService 查询是否
有生产订单号等于备料计划单号 VO& 中生产订单号的交接单数据,如果没有则
返回空数据,页面显示为空,如果有生产订单表头数据,则通过模型的intModel
方法将该条数据显示在页面的右上角。这时双击交接单表头数据或者点击选择
按钮,将调用addAction 类中的doAction 方法,在该方法中初始化交接单JhVO,
然后将备料计划VO 中的数据存储在交接单表体JhVO 表体中。在页面表体中将
欲转移的数量输入到“转移数量”中。然后点击“确定”按钮系统会将交接单
表头中剩余物料减去表体中输入的物料,将剩余数量更新到交接单VO 表头中,
自此完成交接操作。生产订单交接实际界面如图4-8 所示。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
图4-8& 生产订单交接界面&
“备料计划汇总发料”& 提供批量操作的功能,并不是将生成的材料出库单
合并。系统提供两种汇总发料方式:(1)选择发料:先查询出备料计划,然后
选择其中的一部分或者全部进行发料。(2)条件发料:不需要查询备料计划,
只需要输入要发的物料和汇总日期范围,系统自动将汇总范围内的这些物料的
备料计划全部发出。&
“生产订单调料”为某个生产订单领用的物料有节余或者暂且不使用时,
可以调整给其它生产订单使用,支持多订单调料、单订单调料两种模式调整料
并且可对调料结果进行查询。生产订单调料功能的程序流程图如图4-9 所示。&
选择页面一条数据后,系统将实例化TLAppEventHander 监听类,在该类中
实例化TLManageModel 模型类,通过模型类的getSelectData 方法获得页面数据,
然后再调用订单查询接口IMOService 查询是否有生产订单可以调料,如果没有
则返回空值。如果有生产订单可以进行调料,选择可调料生产订单后,点击“调
用”按钮,系统会调用TLValidationService 接口中的tlCheck 方法进行校验,查
看被调料订单是否满足调料条件,如果不满足则停止操作,提示信息。如果满
足调料条件则调用
ILockData&&&&&&&&&&&&&
接口进行锁定,然后调用
ITLService&&&&&&&&&&&&&&&&&&
getExchange 方法完成订单调料。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
图4-9& 生产订单调料程序流程图&
生产订单调料实际界面如下图4-10 所示。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&
图4-10 生产订单调料界面&
4.1.2& 最终装配计划模块的实现&
最终装配计划子模块包括装配BOM 和生成装配订单。&
装配BOM 总是与销售订单绑定在一起,以销售订单来跟踪不同的配置。装
配BOM 由带有配置信息的销售订单记入工厂时系统生成,修改销售订单的装配
BOM,首先取消销售订单记入工厂,然后在供应链系统销售管理模块销售订单
维护节点中修改销售订单的配置信息,最后再重新记入工厂。&
装配订单是生产订单的一种,装配订单的备料计划依据装配BOM 生成,其
它类型的生产订单的备料计划依据生产BOM 生成。销售订单生成装配订单后,
本功能不允许修改,必须使用生产订单管理中生产订单节点维护功能进行修改
或删除(删除后可以使用本功能再次生成)。装配订单的界面如图4-11 所示。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
图4-11& 装配订单界面&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
4.1.3& 车间作业管理模块的实现&
“工序计划”主要包括编制工序计划和生成派工单两个功能。具体包括生
产订单的查询,工序计划的编制、修改、调整,派工单的生成等操作。&
工序计划节点中的“不执行”按钮的功能是取消该道工序,比如某产品的
加工过程如下:车&D铣&D热处理。第二道工序标识为不执行时,该产品的加工
过程变为以下路线:车&D热处理。程序流程图如图4-12 所示。&
选择一条工序计划后,点击“不执行”按钮,系统首先实例化cancelOpAction
类,调用该类中的
doAction&&&&&&&&&&&
方法,在该类中实例化工序类型节点的管理模型
WOManageAppModel&
类,然后调用该模型的getSelectedOperaData& 方法从页面
获得已选的欲交接的工序类型数据,调用查询接口IWOQueryService& 查询该条
工序是否已经生成派工单,如果已经生成派工单,则调用cancelOp 操作将该条
工序类型中的“状态”改为冻结态。如果没有生成派工单,则直接将“是否执
行”复选框取消选择,完成“不执行”操作。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
图4-12& 不执行操作程序流程图&
“工序计划”节点实际界面如图4-13&
图4-13& 工序计划界面&
“派工单维护”完成手工增加派工单的操作,以及对系统生成或手工添加
的派工单的修改、删除等维护操作,支持派工单的联查。实际界面如图4-14 所
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
图4-14& 派工单维护界面&
“在制查询”是查询在制品的明细(派工单)信息和汇总(按物料和工序)
信息。查询的数据来源是派工单,在制品是已经开工还未完工的正在加工的产
“车间任务指示”功能节点主要使用在车间现场,通过车间LED 大屏幕显
示各班组、工序的实时状态,便于现场管理者进行调度。该功能点提供实时的
目前工序状态、前工序状态、下工序准备和剩余工序数。&
“工序派工维护”& 对派工单进行排序、修改优先级、分解班次、转移/委外、
下达等操作。&
“工序执行情况”功能节点以醒目的颜色标示出生产订单截至到当前日期
的各个工序的作业状态,共有计划、计划超期、正常完工、提前完工和超期完
工五种状态。数据统计的依据是生产订单。&
4.2& 缓存技术使用&
4.2.1& 粒度和存储结构的选择&
关系数据库中通常以一条记录为一个单位,每个记录又由多个属性组成。
我们在数据库设计阶段就将一个功能节点所设计的数据编写在一组数据库表
中,为现在缓存粒度提供了理想的选择,例如备料计划节点,就有备料计划主
表和子表构成,这样我们就可以采用一条数据库表中的记录作为缓存的粒度。
每次都从数据库中读取至少一条备料计划数据(包括备料计划主表和相应子表
数据),传送给系统,供用户使用。&
因为生产制造子系统使用了MDF 元数据技术生成数据库表和缓存VO,这
就导致 VO& 的结构和数据库表结构完全一致,每次从数据库中读取一条数据都
可以存储在一条VO& 供系统使用。由于该系统属于B/S&
结构,用于企业内部,
而企业内部网络传输条件非常好,可以满足该粒度的要求。粒度的合理选择为
后期的缓存使用打下了坚实的基础。&
使用缓存技术就要面对命中率问题,在本系统中命中率通过两方面进行提
高。缓存技术主要使用与数据量比较大的点,例如生产订单生成、备料计划维
护、完工报告等。在本系统中供使用两种方法来保证命中率,由于使用原理几
乎一样,这里只介绍备料计划在命中率方面的设定。&
(1)对上一次操作进行分析。在用户每次关闭备料计划维护节点时,将最
后一条数据进行分析,其关键字段如表4-1 所示。&
&&&&&&&&&&&&&&&&&&&&&&&&
表4-1& 备料计划维护关键字段表&
数据项名称&&&&&&&&&&&&
数据项名称&&&&&&&&&&&
数据项名称&&&&&&&&&&&&
集团&&&&&&&&&&&&&&&
发料组织&&&&&&&&&&&&
库管员名称&&&&&&&&&&&&&&
工厂&&&&&&&&&&&&&&&
序号&&&&&&&&&&&&&&
计划出库数量&&&&&&&&&&&
备料计划单号&&&&&&&&&&&
材料编码&&&&&&&&&&&&
累计出库数量&&&&&&&&&&&
来源单据号&&&&&&&&&&&&
材料名称&&&&&&&&&&&&
已发未出数量&&&&&&&&&&&
批次号&&&&&&&&&&&&&&
材料版本号&&&&&&&&&&&
计划出库主数量&&&&&&&&&&
备料计划类型&&&&&&&&&&&
规格&&&&&&&&&&&&&&
累计出库主数量&&&&&&&&&&
备料状态&&&&&&&&&&&&&
型号&&&&&&&&&&&&&&
已发未出主数量&&&&&&&&&&
物料编码&&&&&&&&&&&&&
单位&&&&&&&&&&&&&&
是否可发料&&&&&&&&&&&&
物料名称&&&&&&&&&&&&&
主单位&&&&&&&&&&&&&
是否倒冲&&&&&&&&&&&&&
物料版本号&&&&&&&&&&&&
换算率&&&&&&&&&&&&&
供应方式&&&&&&&&&&&&&
规格&&&&&&&&&&&&&&&
需要日期&&&&&&&&&&&&
计划出库数量&&&&&&&&&&&
型号&&&&&&&&&&&&&&&
需用时间&&&&&&&&&&&&
累计出库数量&&&&&&&&&&&
计划数量&&&&&&&&&&&&&
定额用量&&&&&&&&&&&&
审核人&&&&&&&&&&&&&&
累计报出库套数&&&&&&&&&&
需用工序&&&&&&&&&&&&
审核时间&&&&&&&&&&&&&
主单位&&&&&&&&&&&&&&
工作中心编码&&&&&&&&&&
创建人&&&&&&&&&&&&&&
计划主数量&&&&&&&&&&&&
工作中心名称&&&&&&&&&&
创建时间&&&&&&&&&&&&&
累计报出库主套数&&&&&&&&&
投料点编码&&&&&&&&&&&
修改人&&&&&&&&&&&&&&
换算率&&&&&&&&&&&&&&
投料点名称&&&&&&&&&&&
修改时间&&&&&&&&&&&&&
换算方向&&&&&&&&&&&&&
子项类型&&&&&&&&&&&&
字符&&&&&&
版本号&&&&&&&&
生产部门&&&&&&&&&&&&&
备料来源&&&&&&&&&&&&
工艺路线版本&&&&&&&&&&&
销售订单号&&&&&&&&&&&&
出库仓库编码&&&&&&&&&&
审核人&&&&&&&&&&&&&&
对上表数据结合需求进行分析可以得出几个关键字段,集团,工厂,工作
中心编码,批次号。当用户下次打开节点时就会将符合这三个字段的所有数据
从数据库中读取存入缓存中。&
(2)对下次预读数据进行分析。&
数据预取可以大大提高缓存的命中率。它可以通过软件与硬件的方法来实
现,软件预取在很多系统中都使用到,许多程序设计语言系统通过预取指令来
实现,如 C++编译器就提供预取函数。在该系统数据库中,也使用这种技术。
由于节点内数据的组织在存入时组织成树型结构,其数据具有一定的“父子”
关系,因此当涉及到对某一个的信息进行读取的时候,可采用树型遍历算法将
父子节点中的数据一并读入缓存,这种方法关键可以大大提高命中率。我们可
以采用一些启发性预测规则来对下一步最有可能被读取的数据进行预测,将这
部分数据一并提前读入缓存。&
例如一个自行车的生产可以为车轮,车架和车座的生产,其中车轮又可以
分为轮圈,压条和车带组成。在实际运行中可以将一个完整产品的组成进行分
组最下级的为无法拆分的部分,每向上一级都组成一个部件,最上级为最终成
品。这个结构可以完全符合树型结构。备料计划中通过查看是否有子表数据来
判断是否有子项,同时通过“来源单据号”判断是否有父项。缓存中的一条数
据的树型结构如图4-15 所示。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
图4-15& 节点树型结构图&
4.2.2& 缓存失效算法的改进&
TS 算法属于经典缓存失效算法。在该算法中,缓存失效报告包含最近W 秒
内被更新数据项的最新时间戳。&
算法的基本思想是客户端在联机时,从服务器以固定的广播区间L& 不断接
收失效报告,根据失效报告(IR)来更新缓存内容。对于缓存中的每一个对象,
如果失效报告的时间戳提前于缓存中该对象的时间戳,则从缓存中清除该对象;
如果失效报告中没有该对象相应的时间戳,则把缓存中的时间戳更新为此次失
效报告的时间戳。&
如果接收到失效报告,客户端需要比较缓存中的对象,决定是否在缓存中
保存该对象。客户机还包含查询对象列表和上一个接收失效报告的时间戳 T ,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
如果当前失效报告的时间戳T&
之差大于W,则将整个缓存都作废。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
4.2.2.1& 服务器端算法&
&&&&&&&&&&&&&&&&&&
上述的TS 算法 ,对于每个缓存报告都有固定长度的广播区间,这样的广
播区间很难确定。如果区间过短,则会导致客户端与服务器端频繁数据传输,
缓存的数据频繁置入置出使主机产生更多的对服务器数据请求从而浪费了大量
的通信带宽,严重的情况下会使整个上行带宽不足,整个系统瘫痪。但过长的
广播区间也会导致缓存失效报告过长,从而使得占用带宽过大。因此本系统按
照用户对数据的访问频率高低将数据分为“高频率”和“低频率”数据,这样
就将查询数据分为以下两组&
(1)高频率更新数据D1:更新次数最多的前20%数据。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
(2)低频率更新数据D2:更新次数最少的后20%数据。&
服务器针对上两组数据定义不同的失效报告IRD1 和IRD2。这两个不同的失
效报告有分别对应两个不同的广播区间LD1 和LD2,其中LD1&LD2。服务器端可
以根据对应的广播区间广播数据。&
改进的服务器端算法实现过程如下:&
(1)在广播区间LD1 和LD2 结束时,构造对应的实效报告IRD1 和IRD2;&
(2)广播对应的实效报告IRDI 及请求数据:&
请求数据& data = &O;&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
(3)接收来自客户端Ci
的请求Rdata:Rbcast&&&&&&&&&&&&&&&&
4.2.2.2& 客户端端算法&
客户端的更新也是很重要的一项,在本系统中,我们将缓存中的数据储存
成树型结构,一颗完整的树构成一个产品,这样缓存中存储的就是森林。由于
本系统采用缓存VO& 来存储数据,只有VO&
中的表体数据与树中的子节点有关
因此客户端的更新采用以下更新策略:&
(1)当树中叶子结点数据发生变化时,则只更新该叶子结点。&
(2)当树中非叶子结点数据发生变化且该结点表头VO 数据发生变化时,
则只更新本节点及其父节点,叶子以下节点不予更新。&
(3)当树中非叶子结点数据发生变化时且该结点表体VO 数据发生变化时,
则需要更新该结点和所有子节点。&
由于树型结构都是通过主键进行连接,因此可以使用树型遍历算法快速上
下寻找节点,实现更新。&
改进客户端算法实现过程如下:&
(1)当一个客户端Ci 接收到对应的失效报告和广播数据Rbcast 时:&
if(T &T -W*L ) //L&
的取值为对应的广播区间&
&&&&&&&&&&&&&
&&&&&&&&&&&&&&
放弃存放在缓存中对应的该组数据D&
&&&&&&&&&&&&&&
for each data item in the cache do&
&&&&&&&&&&&&&&
if(结点信息被更新)&
&&&&&&&&&&&&&&
{& 该结点信息失效;&
&&&&&&&&&&&&&&&&&
if(该结点表体VO 被更新)&
&&&&&&&&&&&&&&&&&&&
使缓存中的该点所有子节点失效;&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
使缓存中的该节点的父节点失效;&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
for each Rbcast do&
&&&&&&&&&&&&&&&&
if(Rdata 是请求的数据)&
&&&&&&&&&&&&&&&&&&&&&&&
download;&
&&&&&&&&&&&&&&&&
使用该数据回答查询请求;&
&&&&&&&&&&&
&&&&&&&&&&
保存最近接受IR& 的时间戳作为新的时间戳;&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&
if(a request is issued)&
&&&&&&&&&&&
query(Q);&
(2)Procedure query(Q)&
当一个客户端发布一个查询Q& :&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if(查询所需数据的树型结构信息已经失效){&
&&&&&&&&&&&&&&
检查对应的数据信息;&
&&&&&&&&&&&&&&
if(对应的数据信息是有效的)&
&&&&&&&&&&&&&&&&&&&
Rdata&&&&&&
结构信息;&
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
Rdata&&&&&&
全部所需树型数据;&
使用缓存中的数据;&
data&&&&&&&
send request(Rdata);&
改进后的算法的流程图如图4-16 所示。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
图4-16& 改进算法流程图&
4.3& 系统测试&
4.3.1 系统功能测试&
生产制造子系统由三个大模块共25 个功能节点,每个节点有很多相识处,
因此在此功能测试中,采取一些有代表性功能给予测试。在功能测试阶段,以
生产订单建立,生产订单维护,工序计划界面为例子进行功能测试。&
生产订单建立测试结果如表4-2 所示。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
表4-2& 生产订单建立功能测试结果表&
步骤&&&&&&
操作描述&&&&&&&&&
输入数据&&&&&&&&&&&&&&&&&&&&&&&
期望结果&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
查询&&&&&&&&&
输入条件&&&&&&&&&&&&&&&&&&
符合条件结果&&&&&&&&&&&&&&
合并&&&&&&&&&
两条计划订单数据&&&&&&&&&&&&&&
生成一条生产订单&&&&&&&&&&&&
拆分&&&&&&&&&
一条计划订单数据&&&&&&&&&&&&&&
生成两条生产订单&&&&&&&&&&&&
批合并&&&&&&&&
五条计划订单数据&&&&&&&&&&&&&&
生成一条生产订单&&&&&&&&&&&&
模拟投放&&&&&&&
一条生产订单&&&&&&&&&&&&&&&&
获得模拟投放数据&&&&&&&&&&&&
生产订单维护节点功能测试结果如表4-3 所示。&
&&&&&&&&&&&&&&&&&&&&&&
表4-3& 生产订单维护功能测试结果表&
步骤&&&&&&
操作描述&&&&&&&&&&&
输入数据&&&&&&&&&&&&&&&
期望结果&&&&&&&&&&&&&&
查询&&&&&&&&&&&&&
输入查询条件&&&&&&&&&&&&&
获得符合条件结果&&&&&&&&&&
修改&&&&&&&&&&&&&
修改“工作中心”&&&&&&&&&&&
修改成功&&&&&&&&&&&&&&
删除&&&&&&&&&&&&&
删除选择数据&&&&&&&&&&&&&
删除成功&&&&&&&&&&&&&&
模拟下达&&&&&&&&&&&
一条备料计划&&&&&&&&&&&&&
下达成功&&&&&&&&&&&&&&
联查明细数据&&&&&&&&&
一条生产订单&&&&&&&&&&&&&
联查到单据明细&&&&&&&&&&&
修订&&&&&&&&&&&&&
一条生产订单&&&&&&&&&&&&&
系统更新历史记录&&&&&&&&&&
投放&&&&&&&&&&&&&
一条生产订单&&&&&&&&&&&&&
产生一条备料计划&&&&&&&&&&
取消投放&&&&&&&&&&&
一条生产订单&&&&&&&&&&&&&
状态改为“未投放”&&&&&&&&&
委外&&&&&&&&&&&&&
一条生产订单&&&&&&&&&&&&&
生成请购单&&&&&&&&&&&&&
工序计划节点功能测试结果如表4-4 所示。&
&&&&&&&&&&&&&&&&&&&&&&&&
表4-4& 工序计划功能测试结果表&
步骤&&&&&&
操作描述&&&&&&&&&&&
输入数据&&&&&&&&&&&&&&&
期望结果&&&&&&&&&&&&&&
查询&&&&&&&&&&&&&
查询条件&&&&&&&&&&&&&&&
获得符合条件结果&&&&&&&&&&
修改&&&&&&&&&&&&&
修改“工作中心”&&&&&&&&&&&
修改成功&&&&&&&&&&&&&&
删除&&&&&&&&&&&&&
一条工序计划&&&&&&&&&&&&&
删除成功&&&&&&&&&&&&&&
新增表体行&&&&&&&&&&
一条工序计划&&&&&&&&&&&&&
表体增加一行&&&&&&&&&&&&
删除表体行&&&&&&&&&&
一条工序计划&&&&&&&&&&&&&
表体删除一行&&&&&&&&&&&&
编制&&&&&&&&&&&&&
一条生产订单&&&&&&&&&&&&&
生成一条工序计划&&&&&&&&&&
调整&&&&&&&&&&&&&
已派工的工序计划&&&&&&&&&&&
无法调整&&&&&&&&&&&&&&
调整&&&&&&&&&&&&&
未派工的工序计划&&&&&&&&&&&
弹出调整界面&&&&&&&&&&&&
4.3.2 系统性能测试&
性能测试属于软件系统级测试,其最终目的是验证系统的性能需求是否达
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
到预定标准,通过性能测试,可以识别系统瓶颈和产生瓶颈的原因,最优化和
调整平台的配置(包括硬件和软件)来达到最高的性能,判断一个新的模块是否对
整个系统的性能有影响。测试结果如表4-5 所示。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
表4-5& 性能测试结果表&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
期望&&&&&&&&&&
操作节点&&&&&&&&&&
操作描述&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
结果&&&&&&&&&&
生产订单建立&&&&&&&&
查询&&&&&&&&
条数据&&&&&&&&&&&&
内完成&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
查询 500& 条数据,每
生产订单维护&&&&&&&&
查询&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
内完成&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
条数据带2 条子表&
生产订单维护&&&&&&&&
联查&&&&&&&&
查询一个生产订单&&&&&&&&&&&&&
内完成&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
选择有交接点的备料
生产订单交接&&&&&&&&
获得表头&&&&&&&&&&&&&&&&&&&&&&&&&&&&
内完成&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
生成装配订单&&&&&&&&
生成&&&&&&&&
选择一条销售订单&&&&&&&&&&&&&
内完成&&&&&&
工序派工&&&&&&&&&&
编制&&&&&&&&
选择一条生产订单&&&&&&&&&&&&&
内完成&&&&&&
工序派工&&&&&&&&&&
下达&&&&&&&&
选择一条工序计划&&&&&&&&&&&&&
内完成&&&&&&
生产订单调料&&&&&&&&
打开界面&&&&&&
条权限数据&&&&&&&&&&&
内完成&&&&&&
任务查询&&&&&&&&&&
查询&&&&&&&&
条数据&&&&&&&&&&&&&
内完成&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
工序完工报告&&&&&&&&&&&&&&&&&&&
条中选择后工序&&&&&&&&&
内完成&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1000& 条备料计划中查
生产订单交接&&&&&&&&
查询&&&&&&&
询出对应的交接单表& 1S
内完成&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
班组定义维护&&&&&&&&
新增&&&&&&&&
新增一条班组数据&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
到数据库中&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
从数据库中获得一条& 读取数据
生产订单维护&&&&&&&&
查询&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
数据&&&&&&&&&&&&&&&&&&&
4.3.3 缓存技术应用效果测试&
系统在“备料计划维护”功能节点使用了一个改进的TS 算法和树型VO 来
改善缓存失效和缓存中信息更新的问题,以提高数据查询速度。为了衡量这一
算法与没有使用算法时的差别,这里使用了三组备料计划数据,并通过查询操
作获得时间数据,并比较最后的结果。&
在本小节为了反应缓存使用效果的特点,采用三种查询环境,分别为使用
一个产品数据下的备料计划,不同产品的数据的备料计划以及查询目前显示数据的子数据。&
该三种查询环境的比较结果如表4-6 所示。&
&&&&&&&&&&&&&&&&&&&&&&&&&
表4-6& 缓存使用结果比较表&
&&&&&&&&&&&&&&&
查询一个产品数据&&&&&&&&&&&&&
查询不同产品数据&&&&&&&&&&&
查询子结点数据&
&&&&&&&&&&&&&&&
没有使用&&&&&&&
使用&&&&&&&
没有使用&&&&&&
使用&&&&&&
没有使用&&&&&&&
&&&&&&&&&&&&&&&
缓存技术&&&&&&&
算法&&&&&&&
缓存技术&&&&&&
算法&&&&&&
缓存技术&&&&&&&
1S&&&&&&&&&
接近0S&&&&&
1S&&&&&&&&
1S&&&&&&&&&
3S&&&&&&&&&
接近0S&&&&&
3S&&&&&&&&
1S&&&&&&&&&
5S&&&&&&&&&
接近0S&&&&&
5S&&&&&&&&
2S&&&&&&&&&
从以上表格中可以看出,对三个不同的查询条件,在一定条件下可以大大
提高查询速度。&
在缓存技术在本系统中的应用还是有一定意义,数据量越大的节点查询效
率就越高。&
4.4& 本章小结&
本章根据NC6.0& 的生产制造子系统的设计内容,进行了系统实现。然后对
缓存技术在本系统的应用给予了说明,改进了传统TS 算法。最后给出了本系统
模块的功能测试、性能测试和缓存技术应用效果测试的结果。&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
近年以来,越来越多企业意识到信息化管理对提高企业市场竞争力的重要
性,开始引入ERP 系统来提高企业运行效率。制造行业的广阔空间给予ERP 公
司极大的利润空间,使越来越多的IT 企业进入ERP 产品领域谋求发展,企业用
户对ERP 软件的服务质量要求随着产品可选性的增加也迅速提高。&
各大ERP 产品公司开始面对严峻的挑战,发展自己产品,公司间的竞争也
全面展开。用友软件公司为了提升产品的竞争实力,为企业顾客提供更优质的
服务开始NC6.0 系统的开发,本论文系统就是其中一个系统。&
论文通过对NC6.0& 的生产制造子系统的业务进行分析研究,结合数据库理
论、缓存技术的应用,配合平台开发工具实现系统开发。&
生产制造子系统的主要工作在于:&
(1)通过对生产制造行业最新业务分析研究,建立合理的数据库表结构。
例如将上一版本备料计划单复杂单表拆分成主子表结构,将上一版本中班组定
义维护主子表合并成单表结构。&
(2)将上一版本中的复杂功能节点根据业务流程进行拆分,例如将上一版
本中生产订单维护拆分成生产订单建立和生产订单维护两个功能节点。&
(3)使用平台开发工具实现班组信息设定、生产订单的维护及产生相对应
备料发料和完工报告的生产订单管理模块;实现管理订单装配的最终装配计划
模块;管理车间生产和反应车间工作状态的车间作业管理模块三个模块的开发。&
(4)在本系统中尝试使用了树型VO 存储结构和缓存优化技术,改善大数
据量读取缓慢的问题。&
本系统使用了三层B/S 体系结构,首先在数据层中运用EMF 元数据技术
生成数据表和缓存VO,为树型存储结构的应用和系统三层B/S 结构间数据稳定
传输提供了有力的技术保证,其次使用EJB 和轻量级框架Spring 技术完成业务
层开发,最后使用JAVA Swing 技术完成视图层开发,这些技术的合理搭配使系
统具有很好的人机交互能力,方便用户使用。同时本系统将缓存 VO& 以树型结
构进行存储,为缓存优化技术的实现提供了合适的粒度,同时结合实际应用的
需要,对经典的TS 缓存失效算法进行了改进,系统的实际应用中取得了较好的
建立一个完整的生产数据子系统并对客户提供稳定高效的服务要研究和学
习的内容还很多。目前,在生产制造领域内还没有可供参照的实际系统,缓存
技术的研究成果日新月异,所涉及的范围和内容也相当的广泛且不断更新。本
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
文只是进行了生产制造方面的研究探索,在缓存应用方面上只对树型存储结构
和缓存失效算法进行了应用研究和实现,在视图界面的实时刷新、数据库查询
算法、业务层的业务算法等方面还没有更多涉足,对缓存技术在教育考试领域
中更广泛、更深入的应用也还来不及做更多的应用研究和探索。以上不足,将
是今后进一步完善改进的目标和方向。&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 nc单据模板显示公式 的文章

 

随机推荐