UAP6.3 安装盘配置与升级 关键技术说明

sy3349 2021-09-08 10:33:46

 

 

 

 

 

 

 

 

 

 

UAP6.3

安装盘配置与升级

关键技术说明

 

 

 

 

 

 

 

 

 

 

目录

1. 前言

2. 安装盘结构及配置文件说明

2.1. 安装盘结构

2.2. 产品结构

2.3. 模块结构

2.4. 配置文件说明

3. 安装升级方案说明

3.1. 安装流程

3.2. 安装检查及代码调整

4. 附录:au.xml文件示例

 

前言

此文档为安装盘结构说明,对升级产品功能中涉及到的表结构升级、业务数据升级调用原理做介绍。通过本文档可以明白产品安装盘配置文件内容及格式,在产品使用升级功能时根据安装盘配置逐个调用脚本、类完成代码、数据库表结构、业务数据升级功能。

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

UAP安装盘分为新安装盘和补丁盘两种,新装盘会在uaphome下生成ncscript文件夹,而补丁盘则会在uaphome下生成update文件夹,新盘和补丁盘结构大同小异,下面就介绍下安装盘的结构。

安装盘结构

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

图1-1

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

产品结构

一个产品包含一个到多个模块。产品的目录结构为下图所示:

图1-2

对于一个产品来说,其配置文件(setup.ini)中的内容为:

code=10                       产品编码

name=客户化                   产品名称

version=5.0                     产品版本号

disk.type=new             是否是全新安装,new为全新安装,patch为补丁安装

previous.generation.code=10    自身依赖的前一个版本号

required.related.module=        依赖的其他产品

模块结构

模块下面包含着该模块相关的多个jar包。

运行安装程序,将解压模块下的所有jar包到指定的安装根目录下,形成UAP的目录结构(如下图所示)。所以在压缩jar包时需要安装该目录结构进行压缩。

图1-3

配置文件说明

上文中,每个产品和每个模块的目录下都必须存在一个对于该产品或者模块的描述文件,即setup.ini文件。当进入UAP的安装界面后,会看见产品安装树,此树中信息就是从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

数据多语脚本目录名

是

安装盘和补丁盘

 

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

安装升级方案说明

安装流程

UAP产品安装分为以下几个步骤:

  1. 运行客户化安装盘的安装程序,把代码及数据库脚本安装到指定目录作为系统运行环境。
  2. 以超级管理员的身份进入系统管理界面,创建业务中心(5系帐套的概念),运行数据库安装脚本及初始化数据。
  3. 保存客户化版本信息和账套信息。

第一步安装代码实质就是代码解压过程,此过程无特殊之处,下文将对创建和升级业务中心,即数据库安装升级进行详细描述。

图2-1

新增(升级)业务中心时,会读取NCScript(update)中脚本,构造产品树,如下所示:

图2-2

蓝色圆点的是新安装盘,而半圆为补丁盘,安装程序会比较setup.ini中version的属性值和数据库中sm_product_version中记录的版本新旧,如果setup.ini中版本较新则该模块可以升级。

升级时会按照树结构以及setup.ini中的依赖关系来决定脚本的执行顺序。会先执行在树上靠前的模块脚本,如果该模块对其他模块有依赖,先执行被依赖的模块。

在安装盘里,初始化脚本都是insert语句,这样在执行升级操作的时候就会产生唯一键冲突的情况,UAP对此种情况有如下几种策略:

  1. 将insert语句转化为update语句,对数据进行更新;
  2. 将insert语句装化为update语句,只对部分字段更新;
  3. 忽略该语句,该表的预置数据将不会被执行;
  4. 抛出违反唯一性约束异常。

语句使用何种策略由业务人员根据业务需要制定,如果没有指定,默认按照抛异常的策略执行,策略注册到.\ierp\install\sqlTransConf目录下,该目录下直接放xml文件,不要再放文件夹,格式参考(示例文件)。

sqlTransConf.xml文件中,table标签表示对一个表策略的描述,name属性为表名称,pk为主键字段,operate表示策略,值如下:

  1. 若无值使用策略1;
  2. 若无值且存在ignorefield标签,则使用策略2,ignorefield中name属性表示不会被更新的字段名;
  3. 值为ignore表示使用策略3;
  4. 值为notranslate表示使用策略4。

sqlTransConf.xml示例文件如下所示:

<? xml version="1.0" encoding="gb2312"?>

<sqltransconf>

<table>

<table name="ntb_sp_datatype" pk="pk_obj"  />

<table name="md_module" pk="id"  >

      <ignorefield  name="versiontype" />

</table>

<table name="bd_defquote" pk="pk_defquote"  operate="ignore" />

<table name="hr_defdoc" pk="pk_hr_defdoc"  operate="notranslate" />

</tables>

</sqltransconf>

安装检查及代码调整

在很多时候,需要在安装升级过程中,只是执行脚本并不能完全解决问题,需要进行一些安装检查和代码调整,在UAP中对以下几种情况做了相应处理:

  1. 新盘升级时检查

当系统升级时,需要检查某些单据的状态等需要符合要求,否则可能会造成错误数据,升级程序提供了这个时机。请实现nc.bs.sm.accountmanage.IUAPUpdateCheck接口,升级程序会在升级UAP前调用该接口,来校验是否可以进行升级。该接口实现类注册到.\ierp\acccheck下,文件示例:

<?xml version="1.0" encoding="UTF-8"?>

<root>

<acccheckconf>

<productcode>3607</productcode >  

<module>cmp</module>  

<classes>

<name>nc.bs.cmp.updatedata.CmpUpdateCheck</name>

</classes>

</acccheckconf>

</root>

  1. 新装时代码调整

请实现nc.bs.sm.accountmanage.INewInstallAdjust接口,将实现类注册到setup.ini的adjust.class属性值(setup.ini文件说明)。该接口提供void adjust(String newVersion)方法,会在本模块安装过程都结束后调用该方法。

  1. 升级时代码调整

请实现nc.bs.sm.accountmanage.IUpdateAccount接口,该接口提供了3个方法,可以在不同时机进行代码调整。

  1. doBeforeUpdateDB(String oldVersion , String newVersion)在数据库表结构升级之前调用;
  2. oBeforeUpdateData(String oldVersion, String newVersion)在数据库表结构升级之后,数据初始化之前调用;
  3. doAfterUpdateData(String oldVersion, String newVersion)在做升级的最后阶段调用。

该接口的实现类可以注册到两个地方:

  1. 注册到setup.ini的dataupdateclass属性值(setup.ini文件说明),若如此,那么该实现类只会在升级本模块时调用;
  2. 注册到.\ierp\install\au.xml中,若如此,那么在升级每一个模块的时候都会调用。(au.xml说明见附录)。

附录:au.xml文件示例

.\ierp\install\au.xml文件示例如下:

<?xml version="1.0" encoding="gb2312"?>

<!--UAP数据库升级时默认执行的代码升级类注册

下列脚本注册一个升级代码

    <classUpdateReg>

      <index>0</index>

      <module>module</module>

      <className>className</className>

      <conds>nn, nu</conds>

    </classUpdateReg>

    

其中<index>0</index>          表明多个注册类执行的顺序

<module>module</module>      表明注册的代码类所存在的模块,如uap等,程序根据他来加载代码类

<className>className</className>  表明代码类的名称

<conds>nn, nu</conds>      表明注册的代码类执行的条件,多个条件用逗号分隔

代码执行的条件由系统指定,合法的条件如下:

nn  表示新盘新安装时执行该代码调整

nu  表示新盘升级安装时执行该代码调整类

pu  表示补丁盘升级安装时执行该代码调整类

all 表示任何条件都需要执行该代码调整类

-->

<classUpdateRegs>

  <regs>

    <classUpdateReg>

      <index>0</index>

      <module>uap</module>

      <className>nc.impl.uap.template.install.TemplateUpdate</className>

      <conds>nu</conds>

    </classUpdateReg>

  </regs>

</classUpdateRegs>

...全文
2257 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack990585 2021-10-04
  • 打赏
  • 举报
回复

朋友你厉害

内容概要:本文档是《Video for Linux Two API 规范》第0.24版的中文手册,系统性地介绍了V4L2(Video for Linux 2)的核心API及其使用方法。内容涵盖设备打开与关闭、能力查询、视频与音频输入输出管理、调谐器与调制器配置、视频标准选择、用户与扩展控制、数据格式协商、图像裁剪缩放、流控参数设置,以及多种I/O传输方式(如read/write、内存映射、用户指针等)。手册还详细定义了各类图像像素格式(如YUV、RGB、压缩格式)、缓冲区管理机制和ioctl控制接口,并附有编程示例和驱动开发指导,全面支持从基础捕获到高级视频处理的应用开发。; 适合人群:从事Linux平台下音视频驱动或应用程序开发的工程师,尤其是具备C语言基础并熟悉系统级编程的研发人员;适用于1-5年经验的嵌入式、多媒体或驱动开发者。; 使用场景及目标:① 开发基于摄像头、电视卡、视频采集卡等设备的Linux视频应用;② 实现视频采集、格式转换、流媒体传输、overlay叠加显示等功能;③ 调试和优化V4L2兼容硬件的驱动程序;④ 理解并运用ioctl接口进行设备控制与状态查询。; 阅读建议:建议结合实际硬件环境边学边练,优先通过VIDIOC_QUERYCAP确认设备能力,再逐步配置输入源、数据格式与I/O方式;注意各结构体字段的初始化与对齐要求,关注版本变更带来的兼容性问题,可参考附录示例代码进行调试验证。
数据集可视化效果见下方。 【数据集概况】 · 检测类别(中文):[自行车(bicycle), 公交车(bus), 汽车(car), 行人(person), 骑行者(rider), 踏板车(scooter), 卡车(truck)] · 训练集:1334 张 · 验证集:571 张 · 测试集:0 张 · 总计:1905 张 该数据集基于激光雷达点云生成的二维投影图像,真实还原了城市道路复杂交通场景下的多目标检测需求。图像呈现为典型的鸟瞰视角或前视视角的点云密度图,清晰捕捉到包括汽车、卡车、公交车、自行车、踏板车及行人等各类交通参与者在城市街道中的动态分布。数据集聚焦于高密度交通环境下的目标识别,具备高度的现实应用价值,可有效支撑智能交通系统、自动驾驶感知模块及城市安防监控等领域的技术开发。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 100 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.6355** mAP50-95 | 0.3557 Precision | 0.6116 Recall | 0.6067 train/box_loss | 1.3609 train/cls_loss | 1.1274 val/box_loss | 1.5101 val/cls_loss | 1.2023 【训练过程分析】 100 轮训练后 mAP50 仅 0.6355,模型收敛不充分。Loss 曲线前期下降后进入平台期,mAP 提升缓慢。mAP50-95 为 0.3557,定位精度同样偏低。 【模型性能评估】 Precision 0.6116、Recall ...
代码转载自:https://pan.quark.cn/s/a4b39357ea24 一、背景 对近一年以来(2024年H2~2025年H1),在部门非雇员OD管理中出现的主动管理、计划外离职等数据进行整理和复盘,提炼出OD招聘和管理中的经验教训,指导我们在选、用、育、留等各环节的改进,尤其在综合面试环节需要强化一些面试要素,持续优化面试环节的标准和管理过程中差异化的管理方案,提升OD的有效留存率。 二、问题/事件描述 部门近一年时间(2024年H2~2025年H1),出现约9例OD离职(含主动管理)情况,占比约7%,一定程度影响了OD的有效贡献率,本文对数据进行整理和提炼,识别风险因素,提炼共性原因,思考改进方案。 三、分析与对策 WXX - 基本数据:2002年生人,独生子女,流转资源,OD在岗4个月,985学校毕业,非软件专业(金融类专业) - 特征:自学习了一些Python就通过考试进入面试环节 - 面试环节复盘:综面环节第一次没有通过,但因业务需求紧迫,XM对人力补充比较迫切,再三沟通后,综面勉强通过 - 工作中结果:工作中与人交流不多,工作几个月攒到一些收入就准备离职出去玩。 主动离职 FXX - 基本数据:2002年生人,独生子女,流转资源,OD工作3个月,成绩较好,专业对口,父母为国企职工 - 特征:候选人沟通积极,思路清晰 - 面试环节复盘:综面意见较好,沟通比较积极,入职体检正常。 当时团队交付压力大,需要补充新鲜力量。 综面正常通过 - 工作中结果:入职后就经常生病(感冒等),工作后就隔三差五请假看病,整体出勤率低于50%时间,无法有效安排工作。 后主动管理 SXX - 基本数据:2001年生人,独生子女,OD工作2年,985大学环境专业,有一段时...

11,847

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧