NCV6X信息交换平台技术红皮书解读.docx
- 文档编号:14864790
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:121
- 大小:1.78MB
NCV6X信息交换平台技术红皮书解读.docx
《NCV6X信息交换平台技术红皮书解读.docx》由会员分享,可在线阅读,更多相关《NCV6X信息交换平台技术红皮书解读.docx(121页珍藏版)》请在冰点文库上搜索。
NCV6X信息交换平台技术红皮书解读
信息交换平台
实施技术红皮书
NC-UAP6.0
用友NC-UAP
2022-04-27
第一章总体概述
1.信息交换平台总体结构
图1.1.1信息交换平台总体结构图
信息交换平台主要用于外部系统和NC系统进行集成。
利用信息交换平台,可以将外系统的基本档案和业务数据发送到NC系统中,并进行相关的业务操作,如审批、弃审,也可以通过发送XML格式的查询条件导出NC系统的数据(需业务插件支持),导出的数据可以附着在回执文件中,也可以直接向外部系统回发HTTP请求。
2.信息交换平台功能特点
⏹采用XML格式作为统一的数据交换标准,为数据访问提供简便、统一的模式。
XML格式在数据表达和描述方面有着很大的优势,逐渐成为业界的标准,采用XML格式作为交换标准格式可以很好的保护企业投资。
⏹面向服务的架构。
这使得第三方系统可以随时随地向NC系统发送相关的业务数据,NC内部的预警服务及工作流引擎使得NC系统可以在合适的时候向第三方系统传送需要的数据,并且满足第三方系统的格式规范。
⏹灵活配置。
数据转换的规则可灵活定义,独立于应用集成和业务逻辑,也就是说根据不同的外部数据结构,直接通过修改交换规则文件的定义,即可达到各种异构数据无缝集成的目的。
⏹自由扩充。
对于标准产品不支持的业务单据,如果有集成需求,信息交换平台提供了向导式的二次开发工具,集成了所有与二次开发相关的功能及配置,支持动态部署,可以在用户环境上进行快速有效的开发。
3.信息交换平台V50版新增功能
与信息交换平台V3序列产品相比,V50版信息交换平台在功能上得到了进一步的完善,在易用性上也有了很大改进。
1)单据交换规则的定义更加丰富和灵活。
可以为某一单据模型中的某一字段定义路径,也可以为一个集合中的实体元素定义路径,甚至可以为某个字段定义XML结构查询的公式。
这些都得益于对XPath功能的模拟,使得XML文件间结构转换的能力更强,但这个交换规则的学习成本可能比较大,后续版本需要图形化和简洁化。
2)为基于信息交换平台的自定义单据的集成提供了一个快速开发工具。
这个工具以向导方式将集成一个自定义单据所要做的工作贯穿起来,包括:
单据信息注册、校验文件生成、样本数据导出、辅助信息格式配置、业务插件类代码生成和编写,甚至还包括业务插件类代码的实时编译和部署,样本数据的导入测试和结果展示等。
3)启用NCV50新缓存机制。
这不但使得外部系统设置、辅助信息设置和基础数据对照表的设置能够实时地作用于外部数据导入过程中,而且对于基本档案数据的访问也实现了实时性,效率得到了更高的优化。
4)基础数据对照导入功能更加丰富。
基础数据对照在V35版根据基本档案自动增加的基础上,新增了基础数据对照的XML文件增加和EXCEL文件增加的功能。
5)信息交换平台总体参数配置功能更加丰富和完整。
这部分配置主要包括单据导入方式、接收公司匹配规则、导入过程是否记录中间文件、回执和导出文件编码格式、设置客户端IP范围等,这些功能的可配置性极大地提高了信息交换平台的灵活性和可扩展性。
6)对单据导入过程中的并发程度进行控制。
对于某一单据类型,一共给出了四种并发控制程度,实施人员可根据具体情况设置合理的并发控制级别,避免单据并发导入引发的错误。
7)外系统数据实现后台异步发送。
借助预警平台的定时触发功能,系统可以自动将保存在服务端某个目录下的外系统数据导入NC系统中,实现了异步驻留的数据发送方式。
8)对数据导入过程中的异常进行了重新划分,对于错误信息进行了编码。
前者带来的好处就是错误提示信息更加明确化,后者主要用于第三方系统程序内部识别导入过程中是否出现错误以及具体的错误信息。
9)进一步约束信息交换平台导入单据的语义。
对每个单据需要定义一个组织字段,用于确保往某个接收方,比如说A公司做加载数据时,导入的数据能真正进入A公司,这个组织字段一般是公司或者主体账簿。
为单据定义组织字段之后,如果数据里相应组织字段的值不为空,则要求其值与接受方保持一致,如果数据里相应组织字段的值为空,则取接受方的内容为组织字段的值。
10)易用性改进。
【手动加载界面】对文件目录、回执目录、目标URL地址、加载成功转移目录的配置增加记忆功能,就是说以相同公司相同用户登陆时,上述各项的配置内容默认显示为最后一次用户设置的值,避免用户每次都需要重新设置。
【交换规则定义】增加了查找、定位字段的功能,单据交换规则树上的右击菜单也更加简练明确,同时为字段的导入导出公式定义增加新版本的公式编辑器,定义公式更加方便简洁。
上述功能我们在接下来的内容中会具体提到。
4.信息交换平台V55版新增功能
1)最大传输上限界面最大20M
2)业务插件扩展功能见第七章扩展
3)基础数据对照界面EXCEL内外对照数据导入分为两列,其中第一列为外系统值,第二列为NC所对应值,系统会自动检查NC值的合法性,不合法则置空。
4)交换规则增加合并功能
5)Ufinterfacevo填充NC操作员信息
6)增加日志统计和输入流监控,便于进行日志分析,定位网络错误
5.信息交换平台V60版新增功能
7)信息交换平台全面支持NCV60元数据进行数据处理。
8)增加自定义翻译器注册界面,可以建立自定义的翻译器。
9)插件开发向导支持通过元数据和VO类生产交换规则。
10)对枚举类型数据的自动转换。
第二章实施简介及相关注意点
NC信息交换平台的主要功能就是将不同外系统的数据导入NC系统。
由于不同系统之间对于相同单据的数据在表示上千差万别,需要信息交换平台对单据的XML格式的外系统数据进行格式转换和数值翻译,然后将转换后生成的XML格式的NC标准数据实例化为NC系统对应单据的数据对象,并调用业务模块的接口(服务)进行保存或者更新。
NC系统在后台有一个Servlet伺候服务,等待并处理客户端的POST方法请求(信息交换平台提供界面客户端和预警客户端,对于同步集成方式,外系统可以自定义发送客户端)。
客户端往根据Servlet的URL建立的连接的输出流中写待发送数据文件的内容,而后台服务端则从请求的输入流中读取数据文件内容,然后再进行后续处理。
关于客户端发送数据的具体内容请参考2.3节。
2.1节介绍了要将某个外系统的某种单据类型的数据文件导入至NC系统的最简单方法。
其余小节介绍了在实施数据导入过程中容易混淆而需要注意的地方,或者是一些常用的工具等。
1.实施方法简介
外系统数据导入的一般步骤
外系统根据单据类型将相同单据类型的数据组织在一个XML文件中,然后将其发送到NC系统的某个账套下的某个组织中。
一般来说,如果需要发送某种单据类型的数据至NC系统中,需要如下几步:
一、注册外部系统。
如果不存在可用的外系统的话,请在“外部系统信息设置”界面中注册一个外部系统。
二、准备外系统数据。
这份数据可能是外系统直接输出的,也可能是二次开发人员通过写程序从第三方系统数据库中抓出来的,或者由Excel格式或其他格式文件转换过来的。
写这份数据时,可以参考NC安装盘附带的XML模板,XML文件头或者说文档头的属性项请参照2.2节详细说明。
三、配置辅助信息(可选)。
如果要导入的单据数据需要辅助信息配置,在“辅助信息配置”界面根据外部系统、单据类型、接收组织为此次文件发送配置辅助信息。
四、设置基础数据对照(可选)。
如果要导入的单据数据需要作基础数据对照(对于需要参照基本档案的字段,如果其值不能按名称或者编码自动翻译过来的话,在导入过程中系统会自动提示必须为该值做基础数据对照),在“基础数据对照”界面根据需要参照的外部系统、需要参照的基本档案、组织为需要对照的值做基础数据对照。
六、配置Servlet的URL地址。
将要发送至的帐套编码作为account属性值写入要发送到的Servlet的URL中(或者写入XML文件的头中);将接收集团编码作为groupcode属性写入要发送到的Servlet的URL中(或者写入XML文件的头中);将接收组织的代码作为orgcode属性写入要发送到的Servlet的URL中(或者XML文件的头中)。
详细说明请参见2.2节。
最后,就可以利用客户端触发该单据类型的数据文件的发送了。
NC信息交换平台内置了常用单据类型数据的导入功能,对于这些单据类型,如果外系统数据遵照了这些单据类型的交换规则定义(即如果外系统的数据严格按照NC安装盘附带的相应单据的XML模板生成),那么按上述步骤相对比较简单地就可以导入数据。
但是如果外系统数据未能遵照单据类型的交换规则定义,则需要修改该单据类型的交换规则定义。
做法就是将该单据的普通交换规则定义文件另存为特定该外部系统的交换规则定义文件,并根据单据交换规则定义规范修改该特定交换规则定义文件,具体需要参见第三章[单据交换规则定义],然后再行导入。
对于非系统内置或者自定义的单据的导入,需要基于信息交换平台做二次开发,这部分内容可参见第四章。
信息交换平台服务器端文件目录结构
信息交换平台服务端的目录结构安排如图2.1.1所示,其中NC_COMMON为安装盘根目录,也是中间件的工作目录。
从上图可以看出,信息交换平台配置文件目录pfxx与webapps一样同在安装盘根路径下,其中:
pfxxtemp目录,存贮信息交换平台接受到的原始数据文件、转换翻译完毕的标准XML文件、传送失败的文件。
exportbills目录,存放信息交换平台发送给外系统的数据文件。
billdefine目录,存放所有需要交换的档案和单据的交换规则文件。
auxiregister目录,每个模块在这个目录下注册一个文件,文件的内容是模块所涉及单据的辅助信息格式。
详细情况参考4.3节辅助信息项设置。
businessprocessor目录,每个模块在这个目录下注册一个文件,文件的内容是模块所涉及单据在信息交换平台的注册信息,如单据类型、业务插件类名称、元数据ID、单据加锁级别等。
详细内容参考4.1节注册单据相关信息。
globalset.xml用于存放信息交换平台的全局参数,如默认帐套、单篇最大传输上限等。
图2.1.1信息交换平台服务端文件目录结构
2.Servlet的URL地址参数与XML交换文档头属性的关系
在外系统的单据数据的导入过程中需要用到一些初始化信息,如帐套、接收集团、数据所属外部系统(发送方)、单据类型等。
这部分数据可以在Servlet的URL地址的参数中指定,也可以在XML数据文件的文档头属性中指定,但是在Servlet的URL地址的参数中指定的信息比在XML数据文件的文档头属性中指定的信息有更高的优先级别。
比如在Servlet的URL地址参数中指定groupcode=yk,而在XML数据文件的文档头属性中指定groupcode=yy,则最终还是将数据发送到yk组织。
下面我们依据实例来逐一介绍各个常用属性。
图2.2.1是一个典型的NC服务器的Servlet的URL地址,“http:
//10.7.3.226:
80/service/XChangeServlet”是后台Servlet的服务名。
“?
”号之后的“account=0001&groupcode=xx&orgcode=yy”就是设置的URL地址参数,一般情况下这个地方只设置帐套编码(account)、接收集团(groupcode),接收组织(orgcode)。
至于这些属性的含义下面会介绍到。
图2.2.1典型Servlet的URL地址
图2.2.2是一个典型的XML文档头,文档头的根标签名是ufinterface,后面跟着就是各种初始化信息的设置。
我们将这些属性分为三类:
必须设置的属性、根据Servlet的URL参数设置决定是否必设的属性和根据需要决定是否设置的属性。
图2.2.2典型XML文档头
【必须设置的属性】:
billtype属性,这个属性值决定了这个XML文件(文档)中所有单据的单据类型,信息交换平台所有的处理都是围绕单据类型的。
sender属性,这个属性值设置的是外系统编码,指定的是数据的来源系统,即习惯上所说的发送方。
【根据Servlet的URL参数设置决定是否必设的属性】:
这些属性其实也是必设属性,但如果Servlet的URL参数里面设置了这几个属性的话,XML文档头里面可以不设置这几个属性值,即使设置了也不会起作用。
account属性,这个属性指定要将数据导入至NC系统的哪个帐套。
groupcode属性,这个属性值指定接收集团的编码。
orgcode属性,这个属性值指定接收组织的编码。
【根据需要决定是否设置的属性】:
filename属性,在数据导入过程中,对于每张单据我们都可以记录其原始数据、翻译后数据,对整个文档我们也可以记录其导入后的回执信息,这个filename属性的值就是用于记录上述数据文件时的文件名。
当然,如果您没有设置的话,系统会为每个导入的文档默认生成文件名。
isexchange属性,这个属性值决定了在外系统的数据在导入NC系统的过程中,是否使用信息交换平台提供的翻译转换和校验功能。
正常情况下应将这个属性设置为“Y”,或者干脆不设。
除非从其他NC系统产生的符合NC转换后标准的XML数据直接导入NC系统,并且很多基础档案数据字段直接用的是PK值,此时可以设置属性为“N”和“n”,可避免无谓的翻译转换。
replace属性,这个属性值决定是否允许将相同单据往同一个接收方重复导入。
V50版的插件一般允许相同单据重复导入,除了将第一次导入视作新增之外,其余导入视作更新。
关于这方面的具体内容请参见2.6节内容。
如果不允许相同单据的重复导入,那么将这个属性值设置为“N”或者“n”。
否则将其设置为“Y”或者干脆不设。
operator属性,这个属性指定当前发送方对应的nc操作员pk,在手工加载界面会自动使用当前登陆用户pk,无需设置。
对于外系统发送到NC系统,需要在其发送url里加上对应得NC操作员pk
总的来说,XML文档头的【必须设置的属性】和【根据Servlet的URL参数设置决定是否必设的属性】,均为在外系统交换文档发送过程中必须得到的初始化信息,可以在Servlet的URL地址参数中设置,也可以在XML文档头属性中设置,但必须进行设置。
而对于XML文档头的【根据需要决定是否设置的属性】,也可以在Servlet的URL地址的参数中设置,但一般不推荐这么做。
3.向NC系统发送数据方式
NC信息交换平台支持客户端以同步和异步两种方式发送(加载)外部数据。
其中NC信息交换平台为异步加载方式内置了两类客户端:
界面和预警,而对于同步加载方式,外系统需要编写往NC后台Servlet发送文件的代码,下面分别介绍它们:
手动界面发送
这是外部数据最简单也最常用的一种客户端发送方式,点击:
[集成平台]-[数据交换管理]-[手动加载界面],在打开的界面中选择需要发送的文件,如有必要,修改目标URL地址的groupcode参数值,选择“发送”菜单即可。
详细内容请参考信息交换平台的用户手册。
图2.3.1手动加载界面
后台预警发送
点击:
[开发平台]→[开发配置工具]→[后台任务类型注册]→[增加],在弹出的后台任务类型注册对话框中配置一个类型为“外部交换数据后台发送”的后台任务条目。
图2.3.2后台任务类型注册
其预警条件的配置如图2.3.2所示。
在该预警条件标签页中内置了四个预警条件:
⏹待发送文件目录
该预警条件阈值用于设置用户数据文件目录(不能为空);
⏹回执目录
该预警条件阈值用于设置存放单据导入之后的回执信息的目录,每张单据一个回执文件,如果用户不设置这个阈值,系统在待发送文件目录下默认创建目录/logdir作为回执目录;
⏹发送后文件转移目录
该预警条件阈值对于想将能够成功加载的文件备份走的用户有用(一般不用设置);
⏹发送配置信息
该预警条件阈值是一个可扩展的预警条件阈值,它用于配置将什么样的文件发送到哪个URL地址(不能为空)。
这个配置值的格式如下:
第一部分是单据类型:
第二部分是外系统编码:
第三部分是目的URL地址:
上面所列发送配置信息项取值的意思就是将单据类型是“Test1”,外部系统编码为“1101”的文件发送到NC外部数据接收的Servlet地址:
urladdress=http:
//localhost:
80/service/XChangeServlet?
account=0001&groupcode=zz。
这个地方如果我们将单据类型的取值设为“XX”或“xx”的话,表示任何单据类型的文件都可以往某个地址发送,相当于通配符的意思,但对于外部系统编码没有通配符。
后台任务配置:
[企业建模平台]→[系统平台]→[后台任务中心]→[后台任务部署]中点击增加按钮
图2.3.3任务条目部署
发送配置信息是一个可扩展的预警条件阈值,其意思就是用户可以在预警平台的类型注册对话框中修改名为“外部交换数据后台发送”的预警类型定义,增加作为预警条件的发送配置信息项,以实现数据文件的多点发送。
点击:
[开发平台]→[开发配置工具]→[后台任务类型注册]→[选中“外部数据交换后台发送”行]→[修改],弹出“类型注册”对话框,如图2.3.4所示,为其增加了一个发送配置信息阈值项。
需要注意的是该新增阈值项的名称必须以字符串“postconfig”打头,如“postconfig1”、“postconfig2”,……等。
这样配置更多的发送配置信息,使得能有选择地将某个特殊单据类型特殊外部系统的数据文件能够发送到某个指定服务器地址去。
图2.3.4后台任务类型注册
配置完毕,即可由预警平台调度和执行发送任务。
另请注意,在待发送文件目录、回执目录和发送后转移目录的设置上本地客户端和服务器端文件系统的差别,如目录“c:
/aaa”指的是服务器端文件系统路径而非客户端文件系统地址。
自定义程序发送
以Java代码为例,介绍外系统作为客户端如何向NC系统发送数据:
为简单起见,以下代码未处理异常,close方法也未放入finally里,具体写代码时请修改。
//获取Servlet连接并设置请求的方法
Stringurl="http:
//10.7.3.225:
8080/service/XChangeServlet";
URLrealURL=newURL(url);
HttpURLConnectionconnection=(HttpURLConnection)realURL.openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-type","text/xml");
connection.setRequestMethod("Post");
//将Document对象写入连接的输出流中
Filefile=newFile("C:
/samples/psndoc.xml");
BufferedOutputStreamout=newBufferedOutputStream(connection.getOutputStream());
BufferedInputStreaminput=newBufferedInputStream(newFileInputStream(file));
intlength;
byte[]buffer=newbyte[1000];
while((length=input.read(buffer,0,1000))!
=-1){
out.write(buffer,0,length);
}
input.close();
out.close();
//从连接的输入流中取得回执信息
InputStreaminputStream=connection.getInputStream();
DocumentresDoc=XMLUtil.getDocumentBuilder().parse(inputStream);//解析为Doc对象
//对回执结果的后续处理…
也可以调用nc.vo.pfxx.pub.PostFile来发送
publicstaticintsendFile(Filefile,Stringurl,Stringbackdir,
Stringmovedir,booleanbcompress)
//fileQueue传空即可
publicstaticSendResultsendFileWithResults(Filefile,Stringurl,Stringbackdir,Stringmovedir,booleanbcompress,FileQueuefileQueue)
publicstaticStringsendDocument(Documentdoc,Stringurl,StringoutputEncoding,booleanbcompress)throwsException
publicstaticStringsendDocument(Documentdoc,Stringurl,StringoutputEncoding)throwsException
[说明]关于XML操作可以用XMLUtil类,关于发送的API,如果您的程序可以依赖uap的jar包,也可以直接用PostFile类
4.回执及异常出错信息
回执格式
加载外部系统数据时,对于导入的数据文件中的每张单据,都会给客户端返回一个回执信息,记录单据导入成功与否,以及失败的原因。
回执信息也是一个XML文件,其一般格式如下:
xmlversion="1.0"encoding='UTF-8'?
>
(1)单据翻译转换错误:
根据基础档案[部门档案]无法翻译[pk_deptdoc]字段,待翻译值:
部门yk,翻译方式:
按名称.,翻译参照的公司:
yk。
(2)单据翻译转换错误:
根据基础档案[岗位档案]无法翻译[pk_om_job]字段,待翻译值:
测试,翻译方式:
按名称.,翻译参照的公司:
yk。
(3)单据翻译转换错误:
根据基础档案[人员类别]无法翻译[pk_psncl]字段,待翻译值:
测试人员yk,翻译方式:
按名称.,翻译参照的公司:
yk。
单据12315601022323处理错误:
单据翻译转换错误:
单据校验转换失败
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NCV6X 信息 交换 平台 技术 红皮书 解读