第三章 二次开发成果安装升级方案相关说明

小编:此文是搬运,将小编收集的资料分享到这,是为了和像我一样的开发人能更快速、更轻松地解决问题,欢迎大家分享自己的内容。
使用对象:NC-V5系列

1. 概述

目前大部分的二次开发成果,都是手工方式通过这两步“补到”标准产品上去的,即打开数据库执行脚本;把代码添加到产品代码Jar包里。带来的后果很严重:
 过程不规范,只有直接执行者才知道当前用户系统加了哪些东西。
 次数一多,即使直接执行者也弄不清到底打上了哪些功能、哪些版本的代码。
 带来重复测试、比对文件日期、甚至比对源码的工作量;同时降低客户满意度。
 无法耐受二次开发和实施顾问的人员变更。
以上存在的问题类同于标准产品升级维护过程中遇到的补丁管理,因此也需要提供二次开发安装盘/补丁盘安装工具,实现脚本自动执行、代码自动拷贝,使二次开发成果部署过程标准化和易实施,并可以记录安装日志;提供二次开发产品安装信息查询和显示,以便项目人员直观、确切地了解系统安装状况。

2. 解决方案

 以上标准产品安装盘配置与升级技术描述也适用于行业产品和二次开发产品。新衍生模块开发成果(例如行业产品开发或大型的定制型项目开发)可以制作安装盘,大部分的二次开发成果只能以标准产品补丁盘方式制作
 二次开发安装盘按照扩展代码的具体情况把jar包放置在同级产品代码目录的extension子目录下,例如针对收付模块进行的二次开发代码就放在收付产品目录的extension子目录下。标准产品在升级安装时不会覆盖该目录内容。
 建议规范:二次开发安装盘版本号可以参照产品补丁盘版本命名规范再加具体项目简称方式管理。例如:中国电信基于NC V5.011的二次开发成果盘版本号为NC V5.011版本号+ zgdx)。
 二次开发安转盘只要把他的代码按照标准安装盘的做法进行相应的打包即可(code.jar,可以把code.jar当成nc_home目录),二次开发脚本也是这样一种方式。

3. 其他说明

 目前不支持二次开发成果升级。
 要求二次开发内容无论繁简、多少,都要以标准补丁盘或安装盘方式交付和安装,要象标准产品发布一样提供发版说明和安装说明;禁止直接开库执行脚本和手工覆盖代码。
第一章 安装盘结构及配置文件说明
第二章 安装升级方案相关说明

第二章 安装升级方案相关说明

小编:此文是搬运,将小编收集的资料分享到这,是为了和像我一样的开发人能更快速、更轻松地解决问题,欢迎大家分享自己的内容。
使用对象:NC-V5系列

1. 新建账套

步骤:
1. 运行客户化安装盘的安装程序,把代码安装到指定目录作为系统运行环境。
2. 进入新建帐套界面录入帐套信息再新建账套。
3. 判定是否可以安装。
4. 利用./ncscript/目录下的建库脚本来建库表。
5. 利用./ncscript/init_data/目录下指定安装语种的初始化数据脚本安装库表数据。
6. 利用./ierp/bin/InitAccount.dat配置文件中注册的初始化数据接口nc.bs.pub.IInitData的initAccountData方法依次初始化数据。
7. 保存客户化版本信息和账套信息。

接口描述:
nc.bs.pub.IInitData:
initAccountData(String dataSourceName)表示建帐时初始化数据,在新建账套时使用;
initCorpData(String pkCorp)表示初始化公司数据,在新建账套时没有作用,在建公司账时会使用该接口方法。

接口注册在./ierp/bin/InitAccount.dat文件中,目前只有nc.bs.sm.cmenu.CustomMenuBO;格式如下:
total=1
1=nc.bs.sm.cmenu.CustomMenuBO, “插入图片”

备注:
对于需要进行分语种安装的数据脚本,在制作安装盘时就需要将这些脚本分语种目录放置,在新建账套或账套升级时,会根据账套的默认语种选择安装。

2. 升级账套

步骤:
1. 运行客户化安装盘的安装程序,把代码安装到系统运行环境目录下,便完成客户化的代码升级。
2. 进入帐套管理界面升级账套。
3. 对数据库物理布局进行校验,判定是否可以升级。
4. 处理3.1以前版本的帐套默认语种问题,将其语种名称改为语种编码。
5. 利用./au/accountupdate.ini文件中注册的升级接口nc.bs.sm.config.IUpdateAccount的方法doBeforeUpdateDB依次在数据库表结构升级前执行某些处理。
6. 利用./ncscript/目录下的建库脚本来升级库表。
7. 利用./au/accountupdate.ini文件中注册的升级接口nc.bs.sm.config.IUpdateAccount的方法doBeforeUpdateData依次在数据库初始化数据升级前执行某些处理。
8. 进行数据字典的升级。
9. 删除客户化模板中的数据和更新实时凭证数据,以及删除单据模板数据。
10. 利用./ncscript/init_data/目录下指定安装语种的初始化数据脚本升级库表数据。
11. 其他的数据调整。
12. 利用./au/accountupdate.ini文件中注册的升级接口nc.bs.sm.config.IUpdateAccount的方法doEndUpdateAccount依次在数据库初始化数据升级级后执行某些处理。
13. 保存客户化版本信息。

接口描述:
nc.bs.sm.config.IUpdateAccount:
doBeforeUpdateDB(String dsName, String khhOldVersion , String khhNewVersion)表示在数据库表结构升级前执行某些处理;
doBeforeUpdateData(String dsName, String khhOldVersion, String khhNewVersion)表示在数据库初始化数据升级前执行某些处理;
doEndUpdateAccount(String dsName, String khhOldVersion, String khhNewVersion)表示在数据库初始化数据升级后执行某些处理。

接口注册在./au/accountupdate.ini文件中,目前内容如下:
nc.bs.pf.install.ConvertFileInfoBO
nc.bs.bd.service.BDUpdata300sp2To310
nc.bs.pub.cquery.UptoDDCBO
nc.bs.fipf.pub.AccountPFUpgradeBO
nc.bs.pf.update.IsWriteUpdate
nc.bs.sm.config.AdjustGroupFlag
nc.bs.sm.grouppower.PowerUpgrade4OrgBook

3. NC业务产品的安装升级

业务产品的安装不区分新安装和升级安装,即只有一套安装盘。
1. 安装步骤
A. 运行客户化安装盘的安装程序,将其解压到指定的临时目录。
B. 登录系统,在“产品安装”节点中进行产品的升级安装
2. 升级步骤
A. 从指定的临时目录中复制代码到应用服务器进行代码的安装升级。
B. 对数据库物理布局进行校验,判定是否可以安装升级。
C. 利用临时目录中的ncscript/目录下的建库脚本来安装升级库表。
D. 进行数据字典的升级
E. 删除安装产品模板中的数据和更新实时凭证数据,以及删除单据模板数据。
F. 从临时目录中读出sql脚本进行初始化数据的安装升级,在执行这些sql脚本前会根据当前数据库中的数据调整sql语句,即对有主键冲突的sql脚本自动转换为update语句,然后进行数据升级。
G. 分语种安装的初始化数据,这也是根据正在升级的账套的默认语种选择对应的脚本进行升级。
H. 执行代码升级程序,凡是需要在最后对数据进行一些处理的,都可以实现nc.bs.sm.install.IUpdateData的updateData方法。实现类注册在安装盘的配置文件中的dataupdateclass项
I. 处理已建帐公司的初始化数据。(有必要进行优化,见“安装改进”)
J. 对安装产品的单据模板和查询模板数据进行调整,对报表模板数据进行调整。(现在每次安装都执行,势必影响效率,是否要优化??)
K. 删除安装源文件

接口描述:
nc.bs.sm.install.IUpdateData:
updateData(String khhOldVersion , String khhNewVersion)表示产品安装升级后的相关数据升级。
该接口注册在安装盘的配置文件中的dataupdateclass项。

4. 新建公司账

步骤:
1. 根据选中模块读取./ierp/bin/InitCorp/目录中的dat文件中的初始化数据接口nc.bs.pub.IInitData和建帐接口nc.bs.sm.createcorp.ICreatecorpAccount。
2. 判断选中模块的初始化前提。
3. 先执行ICreatecorpAccount的方法beforeCreatecorpAccount,再执行IInitData的方法initCorpData,再执行ICreatecorpAccount的方法afterCreatecorpAccount。
4. 保存公司启用的功能模块。
5. 为结算类公司建立一个结算单位。
6. 更改公司目录的建帐标志。

接口描述:
nc.bs.pub.IInitData:
initAccountData(String dataSourceName)在建公司账时不使用;
initCorpData(String pkCorp)表示初始化公司数据,在建公司账时会使用该接口方法。

nc.bs.sm.createcorp.ICreatecorpAccount:
String beforeCreatecorpAccount (String pkCorp)初始化公司数据之前的检查等操作,返回非null表示错误信息,不再执行后续操作,返回null表示可以执行初始化数据;
String afterCreatecorpAccount(String pkCorp)初始化公司数据之后的检查等操作,返回非null表示错误信息,不再执行后续操作,返回null表示可以执行初始化数据。

这两个接口都注册在./ierp/bin/InitCorp/目录的相应模块文件中,目前客户化10模块的格式如下:
total=5
1=nc.bs.pf.pub.PfDataCopy1BO,”客户化-参数设置初始化数据”
2=nc.bs.pf.pub.PfDataCopy2BO,”客户化-凭证模板初始化数据”
3=nc.bs.pf.pub.PfDataCopy3BO,”客户化-项目单据模板初始化数据”
4=nc.bs.pf.pub.PfDataCopyBO,”客户化-流程平台初始化数据”
5=nc.bs.gl.initdata.GlInitDataBO,”客户化-总账初始化数据”

5. 安装改进

对于业务产品的安装升级,不再执行PfDataCopy,而在建公司账时根据注册自动执行。

第一章 安装盘结构及配置文件说明
第三章 二次开发成果安装升级方案相关说明

第一章 安装盘结构及配置文件说明

小编:此文是搬运,将小编收集的资料分享到这,是为了和像我一样的开发人能更快速、更轻松地解决问题,欢迎大家分享自己的内容。
使用对象:NC-V5系列

1. 安装盘结构

安装盘包含一个到多个产品,安装盘的目录结构如下图所示:
nc-v5-安装配置-安装盘结构

安装盘下面可以放一个到多个产品,表现形式上为一个目录。目录的名称必须为产品的模块标识名称,如客户化为uap,

2. 产品结构

nc-v5-安装配置-产品结构一个产品包含一个到多个模块。产品的目录结构为下图所示:

对于一个产品来说,其配置文件(setup.ini)中的内容为
code=10 产品编码
name=客户化 产品名称
version=5.0 产品版本号
disk.type=new 是否是全新安装,new为全新安装,patch为补丁安装
previous.generation.code=10 自身依赖的前一个版本号
required.related.module= 依赖的其他产品

3. 模块结构

模块下面包含着该模块相关的多个jar包,
运行安装程序,将解压模块下的所有jar包到指定的nchome目录下,形成ncv5的目录结构(如下图所示)。所以在压缩jar包时需要安装该目录结构进行压缩。
nc-v5-安装配置-模块结构

配置文件setup.ini中配置着该模块的相关信息。
“code” * 该模块的编码
“name” * 该模块的名称
“version” * 该模块的版本号
“disk.type”
* 该模块安装盘的类型,
* new 表示全新的安装盘
* patch表示为补丁盘
“previous.generation.code” *依赖的前一个产品编码,目前主要用于客户化
“must.selected”
* 表示该模块是否必须被选中
* 取值为true/false 或 y/n
* 默认为false 或 n
“preversion” * 该模块自身依赖的版本号
“required.related.module” * 依赖其它的模块
* 表示为[code,name, version1, version2,…]&[code,name, version1, version2,…]
“product.package” * 代码和文件包

“help.package”;
* 帮助压缩文件的文件名或目录名
“db.create.script”;
* 数据库建库脚本包

“dataupdateclass”;
/**数据升级程序的类名。如果需要注册多个升级调整程序,可以在
dataupdateclass后面附加序数来指定,例如
dataupdateclass01= classname1
dataupdateclass02=classname2
dataupdateclass03=classname3

“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”;
/** 是否有动态摸板数据*/

“need_deploy_ejb”;
/** 是否需要重新部署ejb*/
“containproductcode”;
/**包含的产品编码*/

“resourceupdateclass”
/** 产品代码复制时的代码调整注册类*/

详细也可参考ConfigKey接口里的说明。

第二章 安装升级方案相关说明
第三章 二次开发成果安装升级方案相关说明