U9 并发错误处理范例说明 版 本 号 :V1.0 作者:刘东峰 版本记录 【此部分要记录该文档形成过程中的历次版本变更过程及变更的内容】 版本 修改与参与人 修改时间 修改原因 修改概述 审批人1.0 刘东峰 2008/06/30 原始文档建立 一.问题域说明 并发控制: 避免多人对同一实体的数据同时修改。 二.基本原理 实体上用 SysVersion 字段来做并发控制。 每次实体的数据修改后 SysVersion 都会改变,如果另外一个用户同时修改同一实体, 系统会发现 SysVersion 字段不同,报“xxx 已经被其他人修改”的并发错误异常,此时用户只能重新加载数据修改保存。 1. 前台要求: 前台 UIModel 上一定要保留 SysVersion 字段,涉及到并发的 BP 调用要传递SysVersion。 2. 后台要求: 必须对传递过来的 SysVersion 做校验,如果不等,一定要抛并发异常。 三.关键代码及说明 前台代码样例: 在调用 BP 传递 SysVersion 信息 RMALineUIVerDTOData paraLine = new RMALineUIVerDTOData(); paraLine.RMALineKey = line.ID; //传递SysVersion paraLine.UISysVersion = (long)line.SysVersion; 参见U9UICode\U9.VOB.PD.SCM\SD\Code\RMAUI\Action\RMAUIModelActionExtend.cs中第584行。 后台代码样例: 在BP的DO方法入口,做校验: //对比SysVersion是否相等 if (paraKey.UILineSysVersion != docLine.SysVersion) { //抛并发异常 throw new RMABPVersionException(); } 四.源代码使用说明 下载:http://u9scm91/isvdoc/download/U9 研发体系(并发错误处理范例).rar详细代码参见《并发错误处理范例代码.rar》 五.组装发布说明(可选)