一种多用户并发的电子文档生成装置及方法转让专利

申请号 : CN201210014694.5

文献号 : CN102541829B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 邓洪文徐晓群赵宏鑫陈铁钢戴明海冷怡平吴昊齐蓉苏宝马婕

申请人 : 中国工商银行股份有限公司

摘要 :

本发明公开了一种多用户并发的电子文档生成装置及方法,将DOC格式的电子文档模板转换为XML格式的电子文档,并按XML的方式扫描电子文档中的各节点,将域代码的内容找到并重新组装成域代码,然后依次替换域节点为相应的实际数据,最后生成XML格式的电子文档。由于能够将DOC格式的电子文档转换为XML格式的电子文档进行处理,避免了调用Word的API,启动WINWORD.EXE进程的方式对电子文档进行操作,能够极大提高多用户并发情况下生成电子文档的效率和稳定性,解决了多用户并发下的电子文档生成的效率和稳定性问题。

权利要求 :

1.一种多用户并发的电子文档生成装置,其特征在于,该装置包括:

电子文档模板生成装置(1),用于根据接收自用户的指令生成DOC格式的电子文档模板,并存储到数据存储装置(5)中;

格式转换装置(2),用于访问数据存储装置(5)获取该DOC格式的电子文档模板,将该DOC格式的电子文档模板转换为XML格式的电子文档模板,存储回数据存储装置(5)中;

数据载入装置(3),用于访问外部数据系统(7)获取XML格式的业务数据文件,并对该XML格式的业务数据文件进行数据合法性的效验,以供电子文档生成装置(4)使用该业务数据对XML格式的电子文档模板中的域代码进行赋值;同时,数据载入装置(3)访问数据存储装置(5),选择与当前业务相符的XML格式的电子文档模板载入内存,并进行解析和控制;

电子文档生成装置(4),用于访问内存中经过数据载入装置(3)解析的业务数据文件和XML格式的电子文档模板,遍历XML格式的电子文档模板各节点,将所需内容组装生成域代码,然后根据业务数据文件将域代码赋值为对应的业务数据,生成包含真实数据以及XML格式的电子文档,存储到数据存储装置(5)中;

数据存储装置(5),用于存储电子文档模板生成装置(1)生成的DOC格式的电子文档模板、经过电子文档生成装置(4)进行实际数据赋值后的XML格式的电子文档,以及XML节点与参数的对应关系;以及电子文档输出装置(6),用于访问数据存储装置(5)获取电子文档生成装置(4)进行赋值后的XML格式的电子文档,并将XML格式的电子文档转换为DOC格式的电子文档,再存储回数据存储装置(5)中,供用户选择以email面函、纸质面函或传真电子面函方式进行输出。

2.根据权利要求1所述的多用户并发的电子文档生成装置,其特征在于,所述电子文档模板生成装置(1)根据接收自用户的指令生成DOC格式的电子文档模板,是根据接收自用户的指令设置所需的DOC格式的电子文档模板内容,并设置每一项内容的属性为动态信息项或静态信息项,然后启用域代码功能,对于DOC格式的电子文档模板中的动态信息项,在其文字描述前后分别增加两个域代码,对于DOC格式的电子文档模板中的静态信息项则保持不变,最终生成DOC格式的电子文档模板。

3.根据权利要求2所述的多用户并发的电子文档生成装置,其特征在于,所述动态信息为需要替换为实际数据的信息;所述静态信息为固定的内容,包括格式、电子文档名称和说明。

4.根据权利要求2所述的多用户并发的电子文档生成装置,其特征在于,所述电子文档模板生成装置(1)对于DOC格式的电子文档模板中的动态信息项在其文字描述前后分别增加两个域代码,是在前一个域代码中指定一个动态变量表示该项的取值路径,该路径与外部数据系统(7)生成的XML格式的业务数据文件中对应实际数据项的路径一致;在后一代码域中指定一串特殊的字符表示该动态项的结束标志。

5.根据权利要求1所述的多用户并发的电子文档生成装置,其特征在于,所述格式转换装置(2)在将该DOC格式的电子文档模板转换为XML格式的电子文档模板时,去掉文档里面的XML节点<?mso-application progid="Word.Document″?>,作用是:令存储为XML格式的文档打开后以XML的格式展现,最终生成XML格式的电子文档模板。

6.根据权利要求1所述的多用户并发的电子文档生成装置,其特征在于,所述电子文档生成装置(4)包括域代码组装单元(41)、域代码解析单元(42)、静态单值数据赋值单元(43)、动态多值数据赋值单元(44)、条件判断逻辑单元(45)和自动隐藏处理单元(46),其中域代码组装单元(41)连接于域代码解析单元(42),域代码解析单元(42)分别连接于静态单值数据赋值单元(43)、动态多值数据赋值单元(44)、条件判断逻辑单元(45)和自动隐藏处理单元(46)。

7.根据权利要求6所述的多用户并发的电子文档生成装置,其特征在于,所述域代码组装单元(41)用于分析内存中经过数据载入装置(3)解析的XML格式的电子文档模板中的各个节点,获取相应内容,组装成完整的域代码,然后转发到域代码解析单元(42)进行域代码分析。

8.根据权利要求7所述的多用户并发的电子文档生成装置,其特征在于,所述域代码组装单元(41)的数据处理过程如下:

首先,域代码组装单元(41)访问数据存储装置(5)获取A1-A13所有参数对应的节点,保存在内存中;然后,访问内存中经过数据载入装置(3)解析的XML格式的电子文档模板,按顺序便遍历XML格式的电子文档模板:当查找到节点时,如能在其子节点下查找到节点,则表示此处是域代码的开始;继续按顺序遍历后面的节点,将它们子节点的内容取出来,按顺序拼接在一起,直至找到一个子节点为节点时,代表域代码结束;然后,将查找到的内容按先后顺序以字符的方式拼接在一起,得到完整的域代码;接着,域代码组装单元(41)暂时中止遍历处理,转由域代码解析单元(42)对域代码内容进行分析;待其他单元对这一个域代码进行赋值或处理之后,继续遍历XML格式的电子文档模板,进行下一个域代码的组装;在运用递归算法的XML格式的电子文档模板节点的遍历过程中,当遍历至节点时,代表遍历结束,不再对XML格式的电子文档模板进行遍历。

9.根据权利要求6所述的多用户并发的电子文档生成装置,其特征在于,所述域代码解析单元(42)用于对XML格式的电子文档模板中经过域代码组装单元(41)组装的域代码内容,分析其数据取值路径,并根据域代码格式的不同,确定域代码的类别,从而决定调用静态单值数据赋值单元(43)、动态多值数据赋值单元(44)、条件判断逻辑单元(45)或者自动隐藏处理单元(46)分别对域代码进行赋值处理;赋值完一个域代码后,转回域代码组装单元(41)继续组装下一个域代码。

10.根据权利要求9所述的多用户并发的电子文档生成装置,其特征在于,如果所述域代码解析单元(42)分析得出域代码是以“#”开始的,则为静态单值类型域代码,转到静态单值数据赋值单元(43)进行处理;

如果所述域代码解析单元(42)分析得出域代码是以“#table#”开始,则为动态多值型域代码,转到动态多值数据赋值单元(44)进行处理;

如果所述域代码解析单元(42)分析得出域代码是以“#IF=T#”或“#IF=F#”开始的,则为逻辑判断式类型域代码,转到条件判断逻辑单元(45)进行处理;

如果所述域代码解析单元(42)分析得出静态单值或动态多值域代码中存在的自动隐藏格式设定:&="",则转到自动隐藏处理单元(46)进行处理。

11.根据权利要求6所述的多用户并发的电子文档生成装置,其特征在于,所述静态单值数据赋值单元(43)用于根据域代码解析单元(42)解析得到的静态单值类型域代码中的数据取值路径,访问内存中XML格式的业务数据文件中对应的节点,并取出其数据内容,再根据域代码中规定的数据类型和相应的格式化规定,对业务数据进行格式化处理,然后赋值给内存中的XML格式的电子文档模板中对应的域代码。

12.根据权利要求11所述的多用户并发的电子文档生成装置,其特征在于,所述域代码中规定的数据类型包括:D表示日期型,C表示字符型,N表示数据型,A表示金额类型。

13.根据权利要求11所述的多用户并发的电子文档生成装置,其特征在于,所述静态单值数据赋值单元(43)赋值给内存中的XML格式的电子文档模板中对应的域代码时,是从域代码组装单元(41)暂时中止遍历位置的下一个节点开始,按顺序遍历后面的节点,直至查找到代表结束的域代码;将这一对域代码之间的第一个节点下的子节点的内容赋值为格式化后的业务数据,最后将其余的节点下的子节点的内容全部清空;至此完成了一项静态单值的赋值工作,转到域代码组装单元(41)组装下一个域代码。

14.根据权利要求6所述的多用户并发的电子文档生成装置,其特征在于,所述动态多值数据赋值单元(44)用于根据域代码解析单元(42)解析得到的动态多值类型域代码中的数据取值路径,访问内存中XML格式的业务数据文件中对应的节点,获取其数据内容并赋值给内存中的XML格式的电子文档模板。

15.根据权利要求14所述的多用户并发的电子文档生成装置,其特征在于,所述动态多值数据赋值单元(44)在赋值给内存中的XML格式的电子文档模板时,首先根据动态多值域代码解析出多条静态单值域代码,从而获得多个数据取值路径,根据取值路径查找业务数据文件中的对应节点的业务数据,对找到的多组的业务数据内容进行压栈处理;然后,按顺序遍历XML格式的电子文档模板的节点,计算出其子节点的个数;如果表格的行数即节点的个数比业务数据的组数少,则复制节点及其下面子节点的所有内容,重复在其末尾粘贴,直至的个数和业务数据的组数相等;如果节点的个数比业务数据的组数多,则删除多余的节点;行数增删操作完成后,接着要遍历每一行节点,同时要遍历每行下的每一列节点,按后进先出的原则取堆栈中的内容替换列下的子节点的子节点中的内容,直至表格中的所有的行下的列都已完成赋值操作,转到域代码组装单元(41)组装下一个域代码。

16.根据权利要求6所述的多用户并发的电子文档生成装置,其特征在于,所述条件判断逻辑单元(45)用于根据域代码解析单元(42)解析得到的逻辑判断式类型域代码中的数据取值路径,访问内存中业务数据文件中对应的节点的业务数据内容,与XML格式的电子文档模板的当前域代码中的条件内容进行比较,如果业务数据内容与当前条件不符合,则将XML格式的电子文档模板中这一对条件域代码内的所有内容进行删除;如果业务数据内容与当前域代码中的条件内容符合,则不作删除操作,同时对在条件范围内的域代码,调用域代码解析单元(42)进行再次分析,区分为静态单值和动态多值类型,转到静态单值数据赋值单元(43)或动态多值数据赋值单元(44)进行处理。

17.根据权利要求16所述的多用户并发的电子文档生成装置,其特征在于,所述条件判断逻辑单元(45)将XML格式的电子文档模板中这一对条件域代码内的所有内容进行删除,包括:所述条件判断逻辑单元(45)判断业务数据内容与XML格式的电子文档模板中当前域代码的条件内容是否符合,如果与当前条件内容不符合,按顺序遍历XML格式的电子文档模板后面的节点的子节点,对其进行删除操作,直至遍历到组装出来的域代码是表示条件判断结束的域代码为止,转到域代码组装单元(41)组装下一个域代码。

18.根据权利要求6所述的多用户并发的电子文档生成装置,其特征在于,所述自动隐藏处理单元(46)用于根据域代码解析单元(42)解析得到静态单值类型或动态多值类型域代码中存在的自动隐藏格式设定,将取得的业务数据内容与XML格式的电子文档模板中的隐藏内容作比较,如果内容相同,则对此域代码的内容进行隐藏的处理。

19.根据权利要求18所述的多用户并发的电子文档生成装置,其特征在于,对于判断出需要做隐藏处理的域代码,则按顺序遍历后面的节点,在其子节点中增加子节点,直至到达代表结束的域代码,从而实现这一对域代码之间内容的隐藏功能,然后转到域代码组装单元(41)组装下一个域代码。

20.根据权利要求1所述的多用户并发的电子文档生成装置,其特征在于,所述数据存储装置(5)包括:

电子文档模板存储单元(51),用于存储电子文档模板生成装置(1)生成的DOC格式的电子文档模板,并存储经过电子文档格式转换装置(3)访问并转换后生成的XML格式的电子文档模板;

参数存储单元(52),用于存储XML节点与参数的对应关系,以便电子文档生成装置(4)获得所需要在XML格式模板中寻找到的节点,进行相应处理;以及电子文档存储单元(53),用于存储电子文档生成装置(4)用实际数据进行赋值之后的XML格式的电子文档,供面电子文档输出装置(6)访问进行XML格式的电子文档的输出。

21.根据权利要求1所述的多用户并发的电子文档生成装置,其特征在于,所述电子文档模板生成装置(1)、格式转换装置(2)、数据载入装置(3)和电子文档生成装置(4)依次连接,且数据存储装置(5)分别连接于格式转换装置(2)、数据载入装置(3)、电子文档生成装置(4)和电子文档输出装置(6)。

22.一种多用户并发的电子文档生成方法,应用于权利要求1至21中任一项所述的装置,其特征在于,包括:

电子文档模板生成装置根据接收自用户的指令生成DOC格式的电子文档模板;

格式转换装置将该DOC格式的电子文档模板转换为XML格式的电子文档模板;

数据载入装置选择与当前业务相符的XML格式的电子文档模板载入内存,并进行解析和控制;

电子文档生成装置访问内存中经过数据载入装置解析的业务数据文件和XML格式的电子文档模板,遍历XML格式的电子文档模板各节点,将所需内容组装生成域代码,然后根据业务数据文件将域代码赋值为对应的业务数据,生成包含真实数据以及XML格式的电子文档;以及电子文档输出装置将赋值后的XML格式的电子文档转换为DOC格式的电子文档,供用户选择以email面函、纸质面函或传真电子面函方式进行输出。

23.根据权利要求22所述的多用户并发的电子文档生成方法,其特征在于,所述电子文档模板生成装置根据接收自用户的指令生成DOC格式的电子文档模板,是根据接收自用户的指令设置所需的DOC格式的电子文档模板内容,并设置每一项内容的属性为动态信息项或静态信息项,然后启用域代码功能,对于DOC格式的电子文档模板中的动态信息项,在其文字描述前后分别增加两个域代码,对于DOC格式的电子文档模板中的静态信息项则保持不变,最终生成DOC格式的电子文档模板。

24.根据权利要求23所述的多用户并发的电子文档生成方法,其特征在于,所述动态信息为需要替换为实际数据的信息;所述静态信息为固定的内容,包括格式、电子文档名称和说明。

25.根据权利要求23所述的多用户并发的电子文档生成方法,其特征在于,所述电子文档模板生成装置对于DOC格式的电子文档模板中的动态信息项在其文字描述前后分别增加两个域代码,是在前一个域代码中指定一个动态变量表示该项的取值路径,该路径与外部数据系统生成的XML格式的业务数据文件中对应实际数据项的路径一致;在后一代码域中指定一串特殊的字符表示该动态项的结束标志。

26.根据权利要求22所述的多用户并发的电子文档生成方法,其特征在于,所述格式转换装置将该DOC格式的电子文档模板转换为XML格式的电子文档模板时,去掉文档里面的XML节点<?mso-application progid=″Word.Document"?>,作用是:令存储为XML格式的文档打开后以XML的格式展现,最终生成XML格式的电子文档模板。

27.根据权利要求22所述的多用户并发的电子文档生成方法,其特征在于,所述电子文档模板生成装置根据接收自用户的指令生成DOC格式的电子文档模板后,还包括:将该DOC格式的电子文档模板存储到数据存储装置中;

所述格式转换装置将该DOC格式的电子文档模板转换为XML格式的电子文档模板后,还包括:将该XML格式的电子文档模板存储到数据存储装置中。

28.根据权利要求22所述的多用户并发的电子文档生成方法,其特征在于,所述数据载入装置选择与当前业务相符的XML格式的电子文档模板载入内存,并进行解析和控制的步骤中,所述数据载入装置还访问外部数据系统获取XML格式的业务数据文件,并对该XML格式的业务数据文件进行数据合法性的效验,以供电子文档生成装置使用该业务数据对XML格式的电子文档模板中的域代码进行赋值。

29.根据权利要求22所述的多用户并发的电子文档生成方法,其特征在于,所述电子文档输出装置将赋值后的XML格式的电子文档转换为DOC格式的电子文档,供用户选择以email面函、纸质面函或传真电子面函方式进行输出,包括:所述电子文档输出装置访问数据存储装置获取电子文档生成装置进行赋值后的XML格式的电子文档,并将XML格式的电子文档转换为DOC格式的电子文档,再存储回数据存储装置中,供用户选择以email面函、纸质面函或传真电子面函方式进行输出。

说明书 :

一种多用户并发的电子文档生成装置及方法

技术领域

[0001] 本发明涉及电子文档处理技术领域,尤其是一种多用户并发的电子文档生成装置及方法。

背景技术

[0002] 随着计算机的发展,微软Office Word日趋普及,Word格式的文档成为了电子文档类的主流标准。Word文档的出现,大大促进了人们迈向无纸化办公的里程。特别是运用Word文档制作各种格式文档,并通过XML技术将文档模板中的待填充单元与数据源中的字段信息建立对应关系,生成标准制式的电子文档,可以极大地减少文档重复编制工作量。
[0003] 例如:银行在国际结算业务处理过程中需要出具给客户一种正式的确认或回执文本,称为面函。面函中格式、抬头、规则描述是固定的,根据业务的不同、相同业务所处的处理阶段的不同其具体内容又各自不同。采用Word方式生成面函电子文档,无须通过程序编码设计每一份面函,只需设置好含有域代码的面函模板,就能方便快捷地将实际数据替换到面函模板中,生成相应的面函电子文档。
[0004] 又如:在银行业债券承销发行工作中,需要编制名目繁多的固定格式的电子文档(如组团邀请函、参团回函、申购说明、申购要约、配售确认及缴款通知书、银行间债券市场债券分销协议、债券注册要素表、债券承销额度分配表、发行款到账确认书、发行情况公告、基础数据资料表等),通过此种通过标准文档生成的方法,可以达到一次性录入数据信息、多次生成不同内容和格式的标准文档。此种新式的面函电子文档在银行领域具有极大的使用价值。
[0005] 但在实际应用中发现,该种处理方式在多用户并发情况下(例如:银行系统的数据处理压力大,需要同时处理相当多的电子文档生成事务),会产生严重的效率和稳定性问题,影响文档的正常输出。这是因为要操控Word文档时是以动态库(DLL)的形式调用Word的API进行系统的处理,但调用Word的API对Word进行操控时,必须在服务器的后台启动一个WINWORD.EXE进程,这将占用大量的系统资源,如果同一个服务器同时有多个WINWORD.EXE进程运行,则会造成系统异常缓慢,在需要多用户并发处理文档的应用情况下,会出现各种无法控制的异常,最终无法正常生成电子文档。

发明内容

[0006] (一)要解决的技术问题
[0007] 有鉴于此,本发明的主要目的在于提供一种多用户并发的电子文档生成装置及方法,以对Word格式的电子文档用XML的方式进行操控,解决多用户并发下的电子文档生成的效率和稳定性问题。
[0008] (二)技术方案
[0009] 为达到上述目的,本发明提供了一种多用户并发的电子文档生成装置,该装置包括:电子文档模板生成装置1,用于根据接收自用户的指令生成DOC格式电子文档模板,并存储到数据存储装置5中;格式转换装置2,用于访问数据存储装置5获取该DOC格式的电子文档模板,将该DOC格式的电子文档模板转换为XML格式的电子文档模板,存储回数据存储装置5中;数据载入装置3,用于访问外部数据系统7获取XML格式的业务数据文件,并对该XML格式的业务数据文件进行数据合法性的效验,以供电子文档生成装置4使用该业务数据对电子文档模板中的域代码进行赋值;同时,数据载入装置3访问数据存储装置5,选择与当前业务相符的XML格式的电子文档模板载入内存,并进行解析和控制;电子文档生成装置4,用于访问内存中经过数据载入装置3解析的业务数据文件和电子文档模板,遍历电子文档模板各节点,将所需内容组装生成域代码,然后根据业务数据文件将域代码赋值为对应的业务数据,生成包含真实数据以及相应格式的电子文档,存储到数据存储装置5中;数据存储装置5,用于存储电子文档模板生成装置1生成的DOC格式电子文档模板、经过电子文档生成装置4进行实际数据赋值后的电子文档,以及XML节点与参数的对应关系;以及电子文档输出装置6,用于访问数据存储装置5获取电子文档生成装置4进行赋值后的电子文档,并将XML格式的电子文档转换为DOC格式的电子文档,再存诸回数据存储装置5中,供用户选择以email面函、纸质面函或传真电子面函方式进行输出。
[0010] 为达到上述目的,本发明还提供了一种多用户并发的电子文档生成方法,包括:电子文档模板生成装置根据接收自用户的指令生成DOC格式电子文档模板;格式转换装置将该DOC格式的电子文档模板转换为XML格式的电子文档模板;数据载入装置选择与当前业务相符的XML格式的电子文档模板载入内存,并进行解析和控制;电子文档生成装置访问内存中经过数据载入装置解析的业务数据文件和电子文档模板,遍历电子文档模板各节点,将所需内容组装生成域代码,然后根据业务数据文件将域代码赋值为对应的业务数据,生成包含真实数据以及相应格式的电子文档;电子文档输出装置将赋值后的XML格式的电子文档转换为DOC格式的电子文档,供用户选择以email面函、纸质面函或传真电子面函方式进行输出。
[0011] (三)有益效果
[0012] 从上述技术方案可以看出,本发明具有以下有益效果:
[0013] 1、本发明提供的多用户并发的电子文档生成装置及方法,由于其能够将DOC格式的电子文档转换为XML格式的电子文档进行处理,避免了调用Word的API,启动WINWORD.EXE进程的方式对电子文档进行操作,能够极大提高多用户并发情况下生成电子文档的效率和稳定性,解决了多用户并发下的电子文档生成的效率和稳定性问题。
[0014] 2、本发明提供的多用户并发的电子文档生成装置及方法,支持调整参数与XML节点的对应关系,当XML格式文档的各节点名称发生变动时,只需更改参数表即可,具有灵活性和适应性。
[0015] 3、本发明提供的多用户并发的电子文档生成装置及方法,能够自动按照实际数据的个数,使用动态多值数据赋值单元自动调整电子文档的表格格式,使之适应数据的实际情况,具有强大的自适应功能。

附图说明

[0016] 图1是依照本发明实施例多用户并发的电子文档生成装置的示意图;
[0017] 图2是依照本发明实施例的电子文档生成装置的示意图;
[0018] 图3是依照本发明实施例的数据存储装置的示意图;
[0019] 图4是依照本发明实施例多用户并发的电子文档生成方法的流程图;
[0020] 图5是依照本发明实施例多用户并发的进口信用证面函生成方法的流程图。

具体实施方式

[0021] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0022] 为了解决启动Word进程WINWORD.EXE所带来的效率和不稳定性问题,本发明将DOC格式的电子文档模板转换为XML格式的电子文档,并按XML的方式扫描电子文档中的各节点,将域代码的内容找到并重新组装成域代码,然后依次替换域节点为相应的实际数据,最后生成XML格式的Word电子文档。由于能够将DOC格式的电子文档转换为XML格式的电子文档进行处理,避免了调用Word的API,启动WINWORD.EXE进程的方式对电子文档进行操作,能够极大提高多用户并发情况下生成电子文档的效率和稳定性,解决了多用户并发下的电子文档生成的效率和稳定性问题。
[0023] 如图1所示,图1是依照本发明实施例多用户并发的电子文档生成装置的示意图,该装置包括:电子文档模板生成装置1、格式转换装置2、数据载入装置3、电子文档生成装置4、数据存储装置5和电子文档输出装置6。其中,电子文档模板生成装置1、格式转换装置2、数据载入装置3和电子文档生成装置4依次连接,且数据存储装置5分别连接于格式转换装置2、数据载入装置3、电子文档生成装置4和电子文档输出装置6。本发明还连接着外部数据系统7。
[0024] 电子文档模板生成装置1,用于接收用户指令,生成原始的DOC格式电子文档模板,并存储到数据存储装置5中,供格式转换装置2访问。首先,接收用户的指令设置所需的电子文档模板内容,并设置每一项内容的属性为:动态信息项或静态信息项。动态信息为需要替换为实际数据的信息,以简单的描述来标识,如:客户名称描述为Name、业务金额描述为Amount,等等;静态信息为固定的内容,如格式、电子文档名称、说明等等;然后,电子文档模板生成装置1启用域代码功能(例如Microsoft Word的域代码功能),对于电子文档模板中的动态信息项,在其文字描述前后分别增加两个域代码,在前一个域代码中指定一个动态变量表示该项的取值路径,该路径与外部数据系统7生成的XML格式的业务数据文件中对应实际数据项的路径一致;在后一代码域中指定一串特殊的字符(如#@X@#)表示该动态项的结束标志。对于电子文档模板中的静态信息项则保持不变。电子文档模板生成装置1将生成的DOC格式电子文档模板存放到数据存储装置5中。优选地,电子文档模板可选择使用外部数据系统7中对应的业务处理代码加序号作为主标示来命名及存储。
[0025] 格式转换装置2,用于访问数据存储装置5获取电子文档模板生成装置1生成的DOC格式的电子文档模板,将该DOC格式的电子文档模板转换为XML格式的电子文档模板,然后存储回数据存储装置5中供数据载入装置3访问。格式转换装置2在将该DOC格式的电子文档模板转换为XML格式的电子文档模板时,去掉文档里面的XML节点<?mso-applicationprogid=″Word.Document″?>,作用是:令存储为XML格式的文档打开后以XML的格式展现,最终生成XML格式的Word电子文档模板。
[0026] 数据载入装置3,用于访问外部数据系统7,获取XML格式的业务数据文件,并对该XML格式的业务数据文件进行数据合法性的效验,以供电子文档生成装置4使用该业务数据对电子文档模板中的域代码进行赋值;同时,数据载入装置3访问数据存储装置5的电子文档模板存储单元51,选择与当前业务相符的电子文档模板(例如,可以由业务处理代码加序号来识别)载入内存,进行解析和控制,并供电子文档生成装置4进行访问。
[0027] 电子文档生成装置4,用于访问内存中经过数据载入装置3解析的业务数据文件和电子文档模板,遍历电子文档模板各节点,将所需内容组装生成域代码,然后根据业务数据文件将域代码赋值为对应的业务数据,最后生成包含真实数据以及相应格式的电子文档,存储到数据存储装置5的电子文档存储单元53中,由电子文档输出装置6进行电子文档输出。
[0028] 数据存储装置5,用于存储电子文档模板生成装置1生成的电子文档模板、经过电子文档生成装置4进行实际数据赋值后的电子文档,以及XML节点与参数的对应关系,供各装置进行访问。
[0029] 电子文档输出装置6,用于访问数据存储装置5获取电子文档生成装置4进行赋值后的电子文档,并将XML格式的电子文档转换为DOC格式的电子文档,再存诸回数据存储装置5的电子文档存储单元53中,供用户选择以email面函、纸质面函、传真电子面函等方式进行输出。
[0030] 如图2所示,图2是依照本发明实施例的电子文档生成装置的示意图,该电子文档生成装置包括:域代码组装单元41,域代码解析单元42,静态单值数据赋值单元43,动态多值数据赋值单元44,条件判断逻辑单元45和自动隐藏处理单元46。其中,域代码组装单元41连接于域代码解析单元42,域代码解析单元42分别连接于静态单值数据赋值单元43,动态多值数据赋值单元44,条件判断逻辑单元45和自动隐藏处理单元46。
[0031] 域代码组装单元41,用于分析内存中经过数据载入装置3解析的XML格式电子文档模板中的各个节点,获取相应内容,组装成完整的域代码,然后转发到域代码解析单元42进行域代码分析。
[0032] 此域代码组装单元41的数据处理过程如下:首先,域代码组装单元41访问数据存储装置5的参数存储装置52获取A1-A13所有参数对应的节点,保存在内存中;然后,访问内存中经过数据载入装置3解析的电子文档模板,按顺序便遍历XML格式的电子文档模板:当查找到节点时,如能在其子节点下查找到节点,则表示此处是域代码的开始;继续按顺序遍历后面的节点,将它们子节点的内容取出来,按顺序拼接在一起,直至找到一个子节点为节点时,代表域代码结束。最后,将查找到的内容按先后顺序以字符的方式拼接在一起,得到完整的域代码。然后域代码组装单元41暂时中止遍历处理,转由域代码解析单元42对域代码内容进行分析。待其他单元对这一个域代码进行赋值或处理之后,继续遍历电子文档模板,进行下一个域代码的组装。在运用递归算法的电子文档模板节点的遍历过程中,当遍历至节点时,代表遍历结束,不再对电子文档模板进行遍历。
[0033] 域代码解析单元42,用于对电子文档模板中经过域代码组装单元41组装的域代码内容,分析其数据取值路径;并根据域代码格式的不同,确定域代码的类别,从而决定调用静态单值数据赋值单元43、动态多值数据赋值单元44、条件判断逻辑单元45、或者自动隐藏处理单元46分别对域代码进行赋值处理。赋值完一个域代码后,转回域代码组装单元41继续组装下一个域代码。
[0034] 如果域代码解析单元42分析得出域代码是以“#”开始的,则为静态单值类型域代码,转到静态单值数据赋值单元43进行处理。例如:
[0035] {#DATA\FSDGRP\DRE\NAM,C,%U&C&=″″%#}字符型{#@X@#}[0036] {#DATA\TODAY,D,%YYYY/MM/DD%#}日期型{#@X@#}
[0037] {#DATA\FSDGRP\REC\INTRAT,N,%6&,&.%#}数字型{#@X@#}
[0038] {#DATA\FSDGRP\CBS\DOC1\AMT,A,%CA&,&.%#}金额型{#@X@#}[0039] 如果域代码解析单元42分析得出域代码是以“#table#”开始,则为动态多值型域代码,转到动态多值数据赋值单元44进行处理。例如:{#table#TABLE\SETFEG\LINE#DOCFEETXT,C,%U&C%#CUR,C,%U&C%#AMT,A,%A&,&.%#}Charges Table{#@X@#}
[0040] 如果域代码解析单元42分析得出域代码是以“#IF=T#”或“#IF=F#”开始的,则为逻辑判断式类型域代码,转到条件判断逻辑单元45进行处理。例如:
[0041] {#IF=T#DATA\SETMOD\SETFOLXFLG=″X″#}为真显示内容{#@ENDIF@#}[0042] {#IF=F#DOCLST\BETSET1\AUTHORISE=″X″#}为假显示内容{#@ENDIF@#}[0043] 如果域代码解析单元42分析得出静态单值或动态多值域代码中存在的自动隐藏格式设定:&=″″,则转到自动隐藏处理单元46进行处理。
[0044] 静态单值数据赋值单元43,用于根据域代码解析单元42解析得到的静态单值类型域代码中的数据取值路径,访问内存中XML格式的业务数据文件中对应的节点,并取出其数据内容,再根据域代码中规定的数据类型(D表示日期型,C表示字符型,N表示数据型,A表示金额类型)和相应的格式化规定,对业务数据进行格式化处理,然后赋值给内存中的电子文档模板中对应的域代码。赋值时,静态单值数据赋值单元43从域代码组装单元41暂时中止遍历位置的下一个节点开始,按顺序遍历后面的节点,直至查找到代表结束的域代码(如#@X@#);将这一对域代码之间的第一个节点下的子节点的内容赋值为格式化后的业务数据,最后将其余的节点下的子节点的内容全部清空。至此完成了一项静态单值的赋值工作,转到域代码组装单元41组装下一个域代码。
[0045] 动态多值数据赋值单元44,用于根据域代码解析单元42解析得到的动态多值类型域代码中的数据取值路径,访问内存中XML格式的业务数据文件中对应的节点,获取其数据内容赋值给内存中的电子文档模板。动态多值类型是由多个静态单值类型组合而成,动态多值数据赋值单元44能根据业务数据的多少,进行行数的自动增减和多项业务数据的赋值。赋值时:首先根据动态多值域代码解析出多条静态单值域代码,从而获得多个数据取值路径,根据取值路径查找业务数据文件中的对应节点的业务数据,对找到的多组的业务数据内容进行压栈处理;然后,按顺便遍历电子文档模板的节点,计算出其子节点的个数;如果表格的行数即节点的个数比业务数据的组数少,则复制节点及其下面子节点的所有内容,重复在其末尾粘贴,直至的个数和业务数据的组数相等;如果节点的个数比业务数据的组数多,则删除多余的节点。行数增删操作完成后,接着要遍历每一行节点,同时要遍历每行下的每一列节点,按后进先出的原则取堆栈中的内容替换列下的子节点的子节点中的内容,直至表格中的所有的行下的列都已完成赋值操作,转到域代码组装单元41组装下一个域代码。
[0046] 条件判断逻辑单元45,用于根据域代码解析单元42解析得到的逻辑判断式类型域代码中的数据取值路径,访问内存中业务数据文件中对应的节点的业务数据内容,与电子文档模板的当前域代码中的条件内容进行比较,例如:{#IF=T#DATA\SETMOD\SETFOLXFLG=″X″#}为真显示内容{#@ENDIF@#}域代码中的X,即为用于比较的条件内容。如果业务数据内容与当前条件X不符合,则将电子文档模板中这一对条件域代码(IF和ENDIF之间)内的所有内容进行删除。具体处理如下:条件判断逻辑单元45判断业务数据内容与电子文档模板中当前域代码的条件内容是否符合,如果与当前条件内容不符合,按顺序遍历电子文档模板后面的节点的子节点,对其进行删除操作,直至遍历到组装出来的域代码是表示条件判断结束的域代码(如@ENDIF@)为止,转到域代码组装单元41组装下一个域代码;如果业务数据内容与当前的条件内容符合,则不作删除操作,同时对在条件范围内的域代码,调用域代码解析单元42进行再次分析,区分为静态单值和动态多值类型,转到静态单值数据赋值单元43或动态多值数据赋值单元44进行处理。
[0047] 自动隐藏处理单元46,用于根据域代码解析单元42解析得到静态单值类型或动态多值类型域代码中存在的自动隐藏格式设定,将取得的业务数据内容与电子文档模板中的隐藏内容作比较,如果内容相同,则对此域代码的内容进行隐藏的处理。对于判断出需要做隐藏处理的域代码,则按顺序遍历后面的节点,在其子节点中增加子节点,直至到达代表结束的域代码(如#@X@#),从而实现了这一对域代码之间内容的隐藏功能,然后转到域代码组装单元41组装下一个域代码。
[0048] 如图3所示,图3是依照本发明实施例的数据存储装置的示意图,该数据存储装置包括:电子文档模板存储单元51、参数存储单元52和电子文档存储单元53。
[0049] 电子文档模板存储单元51,用于存储电子文档模板生成装置1生成的电子文档模板,并经过电子文档格式转换装置3访问并转换后生成的XML格式的电子文档模板。优选地,多个不同的电子文档模板可选择使用外部数据系统7中对应的业务处理代码加序号作为主标示来存储。
[0050] 参数存储单元52,用于存储XML节点与参数的对应关系,以便电子文档生成装置4获得所需要在XML格式模板中寻找到的节点,进行相应处理。当XML格式文档的各节点名称发生变动时,只需更改参数表即可,使本系统具有灵活性和适应性。其内容如下:
[0051]
[0052]
[0053] 电子文档存储单元53,用于存储电子文档生成装置4用实际数据进行赋值之后的电子文档,供面电子文档输出装置6访问进行电子文档的输出。
[0054] 基于图1至图3所示的多用户并发的电子文档生成装置,图4示出了依照本发明实施例多用户并发的电子文档生成方法的流程图,该方法包括以下步骤:
[0055] 步骤1:电子文档模板生成装置根据接收自用户的指令生成DOC格式电子文档模板;
[0056] 步骤2:格式转换装置将该DOC格式的电子文档模板转换为XML格式的电子文档模板;
[0057] 步骤3:数据载入装置选择与当前业务相符的XML格式的电子文档模板载入内存,并进行解析和控制;
[0058] 步骤4:电子文档生成装置访问内存中经过数据载入装置解析的业务数据文件和电子文档模板,遍历电子文档模板各节点,将所需内容组装生成域代码,然后根据业务数据文件将域代码赋值为对应的业务数据,生成包含真实数据以及相应格式的电子文档;
[0059] 步骤5:电子文档输出装置将赋值后的XML格式的电子文档转换为DOC格式的电子文档,供用户选择以email面函、纸质面函或传真电子面函方式进行输出。
[0060] 其中,步骤1中所述电子文档模板生成装置根据接收自用户的指令生成DOC格式电子文档模板,是根据接收自用户的指令设置所需的电子文档模板内容,并设置每一项内容的属性为动态信息项或静态信息项,然后启用Microsoft Word的域代码功能,对于电子文档模板中的动态信息项,在其文字描述前后分别增加两个域代码,对于电子文档模板中的静态信息项则保持不变,最终生成DOC格式电子文档模板。所述动态信息为需要替换为实际数据的信息,以简单的描述来标识,包括客户名称描述为Name和业务金额描述为Amount;所述静态信息为固定的内容,包括格式、电子文档名称和说明。所述电子文档模板生成装置对于电子文档模板中的动态信息项在其文字描述前后分别增加两个域代码,是在前一个域代码中指定一个动态变量表示该项的取值路径,该路径与外部数据系统生成的XML格式的业务数据文件中对应实际数据项的路径一致;在后一代码域中指定一串特殊的字符表示该动态项的结束标志。
[0061] 步骤1中所述电子文档模板生成装置根据接收自用户的指令生成DOC格式电子文档模板后,还包括:将该DOC格式电子文档模板存储到数据存储装置中。
[0062] 步骤2中所述格式转换装置将该DOC格式的电子文档模板转换为XML格式的电子文档模板时,去掉文档里面的XML节点<?mso-application progid=″Word.Document″?>,作用是:令存储为XML格式的文档打开后以XML的格式展现,最终生成XML格式的Word电子文档模板。
[0063] 步骤2中所述格式转换装置将该DOC格式的电子文档模板转换为XML格式的电子文档模板后,还包括:将该XML格式的电子文档模板存储到数据存储装置中。
[0064] 步骤3中所述数据载入装置选择与当前业务相符的XML格式的电子文档模板载入内存,并进行解析和控制的步骤中,所述数据载入装置还访问外部数据系统获取XML格式的业务数据文件,并对该XML格式的业务数据文件进行数据合法性的效验,以供电子文档生成装置使用该业务数据对电子文档模板中的域代码进行赋值。
[0065] 步骤5中所述电子文档输出装置将赋值后的XML格式的电子文档转换为DOC格式的电子文档,供用户选择以email面函、纸质面函或传真电子面函方式进行输出,包括:所述电子文档输出装置访问数据存储装置获取电子文档生成装置进行赋值后的电子文档,并将XML格式的电子文档转换为DOC格式的电子文档,再存诸回数据存储装置中,供用户选择以email面函、纸质面函或传真电子面函方式进行输出。
[0066] 下面以进口信用证面函的开立为例对本发明提供的多用户并发的电子文档生成方法(如图5)进行详细描述,其具体包括以下步骤:
[0067] 步骤1:电子文档模板生成装置1接收用户指令,生成DOC格式的进口信用证面函模板,命名为《CONFIRMATION OF LC ISSUANCE》如下:
[0068]
[0069] 步骤2:格式转换装置2将DOC格式的面函模板《CONFIRMATION OF LC ISSUANCE》转换为XML格式的面函模板。
[0070] 首先,格式转换装置2用Word打开DOC格式的面函模板,另存为XML格式文件;然后,再用记事本打开XML格式文件,将文件中的第二行“<?mso-application progid=″Word.Document″?>”去掉。最后保存生成XML格式面函模板到数据存储装置5的电子文档模板存储单元51中,如下:
[0071]
[0072] 步骤3:数据载入装置3访问外部数据系统7(国际结算业务处理系统),获取XML格式的进口信用证业务数据文件,并对此XML文件进行数据合法性的效验;同时,访问数据存储装置5的电子文档模板存储单元51,选择《CONFIRMATION OF LC ISSUANCE》面函模板载入内存,利用CMarkup XML解析器对此XML进行解析和控(CMarkup是基于“压缩”文档对象模型EDOM:″Encapsulated″Document Object Model,,不需要任何外部的XML组件,分析器能相当快的建立索引数组。EDOM方法使创建、导航和修改XML无比的简单。当然也可以运用其它的XML解析器)。获取的XML格式的进口信用证业务数据文件如下:
[0073]
[0074] 步骤4:电子文档生成装置4中的域代码组装单元41分析面函模板并组装生成域代码。首先,域代码组装单元41遍历内存中的《CONFIRMATION OF LC ISSUANCE》面函模板,如下所示的文件片断是去掉了一些无用节点的面函模板片断:
[0075]
[0076]
[0077] 如上面粗体字所示,域代码组装单元41在遍历至第一个节点时,找到子节点,代表域代码的开始,将接下来的三个节点中的子节点#DATA\LIDGRP\REC\OWNREF,C,%U&C&=″″%#中的内容拼接起来,组装成一个完整的域代码内容“#DATA\LIDGRP\REC\OWNREF,C,%U&C&=″″%#”,第五个节点中的子节点代表域代码的结束。至此,一个域代码的组装工作已完成,转到步骤5。如果遍历至节点,则转到步骤10。
[0078] 步骤5:域代码解析单元42对组装出来的域代码内容进行分析,根据分析出来的格式类型,分别进入不同格式处理单元。如果是静态单值型域代码,转到步骤6;如果是动态多值型域代码,转到步骤7;如果是逻辑判断类型域代码,转到步骤8。
[0079] 例如上述“#DATA\LIDGRP\REC\OWNREF,C,%U&C&=″″%#”域代码,经域代码解析单元42分析此域代码是以#开始,类型为静态单值类型,转到步骤6进行处理。
[0080] 步骤6:静态单值数据赋值单元43根据域代码内容中的数据取值路径“DATA\LIDGRP\REC\OWNREF”,从内存中查找进口信用证业务数据文件中的对应的节点,如下面中的业务数据片断:
[0081]
[0082] 根据取值路径找到业务数据中其节点数据为“LC123451100004”,再根据域代码中规定的数据类型(C表示字符型)和相应的格式化规定,对业务数据进行格式化处理后,赋值到面函模板的域代码中。赋值的处理:将步骤4中所示的XML面函模板文件片断,将第六个节点的子节点OWNREF的内容替换为“LC123451100004”,接下来查找第七至第九个节点,组装出来的域代码内容为“#@X@#”,代表此次赋值的结束,至此,完成了一项静态单值数据赋值:{#DATA\LIDGRP\REC\OWNREF,C,%U&C&=″″%#}C123451100004{#@X@#}。转到步骤4继续组装下一个域代码。
[0083] 步骤7:如果组装出来的域代码是以“#table#”开始,如{#table#TABLE\SETFEG\LINE#DOCFEETXT,C,%U&C%#CUR,C,%U&C%#AMT,A,%A&,&.%#}Charges Table{#@X@#}则由动态多值处理单元54进行处理。
[0084] 例如:当DOC格式的面函包含表格如下时,当前模板只有一行三列:
[0085]
[0086] 转换为XML格式的面函后其内容如下:
[0087]
[0088] 其中节点代表一行,节点代表一列,当前模板只有一行三列,所以一个节点下有三个子节点。
[0089] 但根据取值路径在内存中查询业务数据文件时(查的方法和上面单值的类似)得到六个值,也就说应有两行,每行三列,共六个值要填充。因此复制此节点下面的所有内容,并粘贴至此节点后面,形成两列,再将六个值按顺序填充进六个节点中的子节中。
[0090] (此步骤是根据实际数据的个数对表格进行适应性调整,经过此步骤后,最后由面函输出装置6转换为DOC格式后的面函,展现的表格内容如下:
[0091]
[0092] )
[0093] 转到步骤4继续组装下一个域代码。
[0094] 步骤8:如果组装出来的域代码是以“#IF=T#”或“#IF=F#”开始,则由条件判断逻辑单元45进行处理。
[0095] 例如:对于条件为“#IF=F#”的域代码的处理:
[0096] XML格式的面函模板片断如下:
[0097]
[0098] 其组装生成的域代码为{#IF=F#DOCLST\LITAPL1\AUTHORISE=″X″#}THIS IS A COMPUTER GENERATED LETTER,NO SIGNATURE REQUIRED.{#@ENDIF@#}
[0099] 根据域代码中的取值路径,查找内存中业务数据对应节点的值为空,不等于″X″,所以判断为假,继续显示面函模板中域代码条件中的值“THIS IS A COMPUTER GENERATED LETTER,NO SIGNATURE REQUIRED.”;如果查找内存中业务数据对应节点的值等于″X ″,则将域代码#IF=F# DOCLST\LITAPL1\AUTHORISE=″X″#}和域代码为{#@ENDIF@#}之间的所有节点全部删除。
[0100] 条件为“#IF=T#”的处理,与“#IF=F#”的处理逻辑相反。如果业务数据的值不等于″X ″,则判断为假,将域代码之间的所有节点全部删除;如果业务数据的值等于″X ″,则判断为真,继续显示域代码条件中的值。
[0101] 处理完毕,转到步骤4继续组装下一个域代码。
[0102] 步骤9:如果静态单值或者动态多值带有自动隐藏格式设置,则进入自动隐藏处理单元46。
[0103] 例如:域代码{#DATA\LIDGRP\REC\OWNREF,C,%U&C&=″″%#}中有自动隐藏格式设置&=″″,则代表如果从业务数据文件中取值为空,则对面函模板中这条域代码的内容进行隐藏,方法是在这对域代码之间的所有节点的子节点中增加子节点,面函模板片断如下:
[0104]
[0105] 这样就能实现隐藏的功能,当对节点进行删除时,隐藏的内容能再次显现出来。转到步骤4继续组装下一个域代码。
[0106] 步骤10:电子文档输出装置6将赋完值后的XML格式面函模板,保存为DOC格式的面函文档保存到数据存储装置5的电子文档存储单元53中,并可供用户选择发送email、打印纸质面函、传真电子面函等方式进行输出。最后生成的面函如下:
[0107]
[0108] 以下为使用本发明生成面函电子文档,与使用现有调用Word的API,启动WINWORD.EXE进程的技术方案生成面函电子文档的压力测试结果对比(左为本发明测试数据,简称为新,右为现有技术测试数据,简称为旧):
[0109]
[0110] 其中:最高并发用户数:是指同一时刻的并发用户数。
[0111] 耗时:是指最终生成面函平均用到的时间。
[0112] 从上表数据可以观察出以下情况:
[0113] 1、采用本发明提供的技术方案较采用现有技术方案,大幅减少了处理耗时,提高了效率。如在20个用户并发时,现有技术方案同时生成20份,每一份的平均耗时为147.1秒,本发明技术方案仅为2.66秒。
[0114] 2、采用本发明提供的技术方案提高了面函生成的稳定性,减少了面函出错个数。采用现有技术方案随着并发用户数的递增,出错面函份数也大幅增加,本发明技术方案没有出现面函出错的情况。
[0115] 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。