UAPV63安装盘配置与升级技术红皮书整理后.docx
《UAPV63安装盘配置与升级技术红皮书整理后.docx》由会员分享,可在线阅读,更多相关《UAPV63安装盘配置与升级技术红皮书整理后.docx(18页珍藏版)》请在冰豆网上搜索。
UAPV63安装盘配置与升级技术红皮书整理后
安装盘配置与升级技术红皮书NC-UAP6.1
UAP中心编著
目录
第一章安装盘结构及配置文件说明2
1.1安装盘结构2
1.2产品结构2
1.3模块结构3
1.4配置文件说明4
第二章安装升级方案相关说明9
2.1安装流程9
2.2创建升级业务中心9
2.3代码调整12
附录13
安装盘结构及配置文件说明
本章内容概要:
●安装盘结构
●产品结构
●模块结构
●配置文件说明
NC安装盘分为新安装盘和NC安装盘分为新安装盘和补丁盘两种,新装盘会在nchome下生成ncscript文件夹,而补丁盘则会在nchome下生成update文件夹,新盘和补丁盘结构大同小异,下面就介绍下安装盘的结构。
1.1安装盘结构
安装盘包含一个到多个产品,安装盘的目录结构如下图所示:
图1-1
安装盘下面可以放一个到多个产品,表现形式上为一个目录。
目录的名称必须为产品的模块标识名称,如客户化为uap。
1.2产品结构
一个产品包含一个到多个模块。
产品的目录结构为下图所示:
图1-2
对于一个产品来说,其配置文件(setup.ini)中的内容为:
code=10产品编码
name=客户化产品名称
version=5.0产品版本号
disk.type=new是否是全新安装,new为全新安装,patch为补丁安装
previous.generation.code=10自身依赖的前一个版本号
required.related.module=依赖的其他产品
1.3模块结构
模块下面包含着该模块相关的多个jar包。
运行安装程序,将解压模块下的所有jar包到指定的nchome目录下,形成ncv5的目录结构(如下图所示)。
所以在压缩jar包时需要安装该目录结构进行压缩。
图1-3
1.4配置文件说明
上文中,每个产品和每个模块的目录下都必须存在一个对于该产品或者模块的描述文件,即setup.ini文件。
当进入nc的安装界面后,会看见产品安装树,此树中信息就是从setup.ini中读取的。
树的结构是根据产品文档结构构成的,同一节点下的子结点按照setup.ini中的编码属性进行排序。
图1-4
在产品下的setup.ini中只需要配置编码、名称、版本等属性,不需要配置脚本存放目录等信息,而模块下的setup.ini需要配置相关信息,配置文件setup.ini中配置着该模块的属性请参见下表:
配置项
含义
必选
使用范围
备注
code
模块编码
是
安装盘和补丁盘
name
模块名称
是
安装盘和补丁盘
desc
描述
否
安装盘和补丁盘
一般对于补丁盘,应该使用该项来描述其功能
module.stamp
模块标签
否
安装盘和补丁盘
该项是描述模块名称的,例如:
uap,arap,安装程序通过该名称来加载升级类,如果没有配置,安装盘取其父目录名称,补丁盘取其父父目录名称
version
版本号
是
安装盘和补丁盘
disk.type
盘类型
是
安装盘和补丁盘
安装盘取值为new,补丁盘取值为patch
need.update.db
是否需要升级数据库
否
安装盘和补丁盘
默认值为false,该标志仅仅是在安装结束时提示用户哪些盘或补丁需要对数据进行升级。
特别对那些需要升级数据库的补丁,比较有用。
need_deploy_ejb
是否需要重新部署ejb
否
安装盘和补丁盘
表示是否需要重新部署ejb
delete.loginjar
是否删除NC_Login_v50.jar
否
客户化的安装盘和补丁盘
该配置仅对客户化的安装盘有效
previous.generation.code
表明该模块以前的编码值
否
安装盘
该值的配置可以影响安装盘安装时模块是否是新安装还是升级安装
must.selected
模块是否必须安装
否
安装盘
当安装对应产品是,该模块为必选
preversion
模块自身依赖的以前的版本号
否
安装盘
表示该模块依赖自己的前一个版本号
required.related.module
依赖的其他的安装盘
否
安装盘和补丁盘
该项的配置内容必须是其他的安装盘,表明需要先安装了这些盘才能在安装本盘。
格式为
[code,name,version1,version2,...]&[code,name,version1,version2,...]
注意该项配置不能和其他的盘的配置成环。
required.related.patch
依赖的其他补丁盘
否
安装盘和补丁盘
该项的配置内容必须是其他的补丁盘。
格式为
[code,name,version1,version2,...]&[code,name,version1,version2,...]
required.sametime.install
表示同时安装的补丁
否
补丁盘
该项表示必须同时安装的补丁,每个补丁都需要将其他的补丁在此进行描述。
product.package
模块的代码包名称
否
安装盘和补丁盘
help.package
帮助文件的目录名
否
安装盘和补丁盘
db.create.script
数据库建库脚本包
否
安装盘和补丁盘
bill.templet.script
单据模板脚本的目录名
否
安装盘和补丁盘
query.templet.script
查询模板脚本的目录名
否
安装盘和补丁盘
report.templet.script
报表模板脚本的目录名
否
安装盘和补丁盘
print.templet.script
打印模板脚本的目录名
否
安装盘和补丁盘
sys.templet.script
默认模板脚本的目录名
否
安装盘和补丁盘
bill.type.script
单据类型脚本的目录名
否
安装盘和补丁盘
busi.type.script
业务类型脚本的目录名
否
安装盘和补丁盘
system.type.script
系统类型脚本的目录名
否
安装盘和补丁盘
subj.class.script
科目分类脚本的目录名
否
安装盘和补丁盘
voucher.templet.script
凭证模板脚本的目录名
否
安装盘和补丁盘
project.templet.script
项目模板脚本的目录名
否
安装盘和补丁盘
business.script
产品组内脚本的目录名
否
安装盘和补丁盘
menu.script
菜单脚本的目录名
否
安装盘和补丁盘
ml.script
多语言脚本的目录名
否
安装盘和补丁盘
ddc.initdata
数据字典初始化数据目录名
否
安装盘和补丁盘
hasdynamictempletdata
是否有动态模版数据
否
安装盘和补丁盘
containproductcode
包含的产品编码
否
安装盘和补丁盘
dataupdateclass
数据升级程序的类名
否
安装盘和补丁盘
在升级安装时执行,需实现接口nc.bs.sm.accountmanage.IUpdateAccount,
adjust.class
新安装时执行的调整类
否
安装盘
nc.bs.sm.accountmanage.INewInstallAdjust接口,在安装盘新安装时执行
resourceupdateclass
安装盘解压代码时执行的升级类
安装盘和补丁盘
nc.newinstall.update.IUpdateResource接口,在解压安装盘时执行
dbml.script
数据多语脚本目录名
是
安装盘和补丁盘
表1-1
另:
详细也可参考ConfigKey接口里的说明。
安装升级方案相关说明
本章内容概要:
●安装流程
●创建升级业务中心
●代码调整
2.1安装流程
NC产品安装分为以下几个步骤:
●运行客户化安装盘的安装程序,把代码及数据库脚本安装到指定目录作为系统运行环境。
●以超级管理员的身份进入系统管理界面,创建业务中心(5系帐套的概念),运行数据库安装脚本及初始化数据。
●保存客户化版本信息和账套信息。
第一步安装代码实质就是代码解压过程,此过程无特殊之处,下文将对创建和升级业务中心,即数据库安装升级进行详细描述。
2.2创建升级业务中心
在NC6系列,用户需要以超级管理员(root)的身份登陆系统,在系统管理节点可以增加业务中心,安装时会根据所选的语种顺序来更新数据多语。
图2-1
新增(升级)业务中心时,会读取NCScript(update)中脚本,构造产品树,如下所示:
图2-2
蓝色圆点的是新安装盘,而半圆为补丁盘,安装程序会比较setup.ini中version的属性值和数据库中sm_product_version中记录的版本新旧,如果setup.ini中版本较新则该模块可以升级。
升级时会按照树结构以及setup.ini中的依赖关系来决定脚本的执行顺序。
会先执行在树上靠前的模块脚本,如果该模块对其他模块有依赖,先执行被依赖的模块。
在安装盘里,初始化脚本都是insert语句,这样在执行升级操作的时候就会产生唯一键冲突的情况,NC对此种情况有如下几种策略:
●将insert语句转化为update语句,对数据进行更新
●将insert语句装化为update语句,只对部分字段更新
●忽略该语句,该表的预置数据将不会被执行
●抛出违反唯一性约束异常
语句使用何种策略由业务人员根据业务需要制定,如果没有指定,默认按照抛异常的策略执行,策略注册到NCHOME\ierp\install\sqlTransConf目录下,该目录下直接放xml文件,不要再放文件夹,格式参考(示例文件)。
sqlTransConf.xml文件中,table标签表示对一个表策略的描述,name属性为表名称,pk为主键字段,operate表示策略,值如下:
●若无值使用策略1;
●若无值且存在ignorefield标签,则使用策略2,ignorefield中name属性表示不会被更新的字段名;
●值为ignore表示使用策略3
●值为notranslate表示使用策略4
sqlTransConf.xml示例文件如下所示:
xmlversion="1.0"encoding="gb2312"?
>
2.3安装检查及代码调整
在很多时候,需要在安装升级过程中,只是执行脚本并不能完全解决问题,需要进行一些安装检查和代码调整,在NC中对以下几种情况做了相应处理:
●新盘升级时检查:
当系统升级时,需要检查某些单据的状态等需要符合要求,否则可能会造成错误数据,升级程序提供了这个时机。
请实现nc.bs.sm.accountmanage.IUAPUpdateCheck接口,升级程序会在升级UAP前调用该接口,来校验是否可以进行升级。
该接口实现类注册到NCHome\ierp\acccheck下,文件示例:
xmlversion="1.0"encoding="UTF-8"?
>
3607
cmp
nc.bs.cmp.updatedata.CmpUpdateCheck
●新装时代码调整:
请实现nc.bs.sm.accountmanage.INewInstallAdjust接口,将实现类注册到setup.ini的adjust.class属性值(setup.ini文件说明)。
该接口提供voidadjust(StringnewVersion)方法,会在本模块安装过程都结束后调用该方法。
●升级时代码调整:
请实现nc.bs.sm.accountmanage.IUpdateAccount接口,该接口提供了3个方法,可以在不同时机进行代码调整。
ØdoBeforeUpdateDB(StringoldVersion,StringnewVersion)在数据库表结构升级之前调用;
ØdoBeforeUpdateData(StringoldVersion,StringnewVersion)在数据库表结构升级之后,数据初始化之前调用;
ØdoAfterUpdateData(StringoldVersion,StringnewVersion)在做升级的最后阶段调用。
该接口的实现类可以注册到两个地方:
●注册到setup.ini的dataupdateclass属性值(setup.ini文件说明),若如此,那么该实现类只会在升级本模块时调用;
●注册到NCHOME\ierp\install\au.xml中,若如此,那么在升级每一个模块的时候都会调用。
(au.xml说明见附录)
附录
au.Xml文件样:
xmlversion="1.0"encoding="gb2312"?
>
--NC数据库升级时默认执行的代码升级类注册
下列脚本注册一个升级代码
0
module
className
nn,nu
其中0表明多个注册类执行的顺序
module表明注册的代码类所存在的模块,如uap等,程序根据他来加载代码类
className表明代码类的名称
nn,nu表明注册的代码类执行的条件,多个条件用逗号分隔
代码执行的条件由系统指定,合法的条件如下:
nn表示新盘新安装时执行该代码调整
nu表示新盘升级安装时执行该代码调整类
pu表示补丁盘升级安装时执行该代码调整类
all表示任何条件都需要执行该代码调整类
-->
0
uap
nc.impl.uap.template.install.TemplateUpdate
nu