具体实施方式
本发明的技术构思是,考虑到XML作为一种可扩展的通用标记语言标准,目前广泛应用于多个信息系统之间进行数据交换,因此,为了方便与各种信息系统集成,提高留痕信息的独立性和兼容性,在本发明中利用XML技术来描述电子文件的修改历史信息、留痕信息和认证信息,其中,修改历史信息记录每个修改过程的信息,包括每个修改版本的版本标识、修改人和修改时间等信息,每个修改版本的留痕信息包括该次修改增加和/或删除的文字内容和/或对某些文字进行批注的文字内容,认证信息包括用于认证修改内容的真实性的数字签名及其证书。以下,将结合附图和实施例对本发明进行详细描述。
(一)XML文件的创建
首先,需要创建一个XML文件来记录修改历史信息和留痕信息。在根据本发明创建的XML文件中,定义一个“文件正文”元素,该元素为一个容器元素,包括“修改历史”、“正文留痕”和“认证信息”这三个元素,其中,“修改历史”和“正文留痕”元素是必选元素,“认证信息”是可选元素。“文件正文”元素的XML结构如图9a所示。以下将分别对“修改历史”、“正文留痕”和“认证信息”元素的结构进行描述。
(1)“修改历史”元素
“修改历史”元素记录电子文件的各个修改过程的信息。
如图9b所示,“修改历史”元素包括一个或多个“修改版本”,一个修改过程用一个修改版本来表示。
如图9c所示,“修改版本”元素具有用于为每个修改版本赋予一个唯一的版本标识的“版本标识”属性,并且包括“修改人”元素、“处理类型”元素、“开始时间”元素和“结束时间”元素,其中,“修改人”元素、“处理类型”元素、“开始时间”元素和“结束时间”元素分别表示当前修改版本的修改人、修改性质、开始时间和结束时间。这里,“处理类型”元素、“开始时间”元素和“结束时间”元素均是可选元素,可根据实际需要自由选择。
例如,对于机关事业单位的公文起草,一般包括拟稿、初审、复审、审签、签发等各个修改过程。因此,“修改人”可定义为文书修改过程中的责任人或处理人,例如,初稿时为拟文人,审稿时为审阅人,等等;“处理类型”可包括拟稿、初审、复审、审签、签发等。这里,可将一个处理人在一定时期内或者在其负责的整个修改过程中对电子文件所作的连续多次修改看作一个修改版本,也就是说,电子文件可以多次被打开、修改和保存,只要处理人相同,那么连续的多次修改都是同一个修改版本的修改。当然,也可定义一个修改版本为一个处理人在一次打开、保存电子文件操作期间所作的连续多个修改。
(2)“正文留痕”元素
“正文留痕”元素包含对电子文件的所有编辑、修改的文字内容信息。
如图10a所示,“正文留痕”元素包括一个或多个“文本”元素,一个“文本”元素记录某个修改版本的一个修改,其值为一次增加、删除或被批注的文字内容。
如图10b所示,“文本”元素具有“版本标识引用”、“修改类型”、“修改时间”和“批注”属性,其中,“版本标识引用”属性指定当前文本为哪一个版本的修改;“修改类型”属性标识当前版本的修改是增加文字、删除文字、还是对文字进行批注;“修改时间”属性记录修改发生的时间;当“修改类型”属性的值为批注时,“批注”属性的值为批注的文字内容。
这里,为了能够长期有效地维护留痕信息,可以以文本方式保存留痕信息中的修改文字内容。具体地,可使用UTF8编码或使用GBK、GB18030等其它编码将“文本”元素的值转换为二进制数据流进行保存,当“文本”元素的“修改类型”标识修改为批注时,还使用UTF8编码或使用GBK、GB18030等其它编码将“文本”元素的“批注”属性值转换为二进制数据流进行保存。
(3)“认证信息”元素
“认证信息”元素是用于通过技术手段维护内容修改的真实性和不可抵赖性。“认证信息”元素是一个可选的元素,可根据组织机构的实际需要选择记录。
如图11a所示,“认证信息”元素包括一个或多个“修改签名”元素,一个“修改签名”维护一个修改版本的修改内容的真实性。
如图11b所示,“认证信息”元素包括一个或多个用于维护一个修改版本的修改内容真实性的“修改签名”元素,其中,“修改签名”元素具有用于指定被维护的修改版本的“版本标识引用”属性,并且包括“签名结果”元素、“证书”元素、“签名人”元素和“签名时间”元素,其中,“签名结果”元素的值为指定的修改版本的修改内容的数字签名结果的base64编码;“证书”元素的值为所述数字签名结果所对应的公钥或私钥证书的base64编码;“签名人”元素和“签名时间”元素的值分别为签名的责任人和签名的时间。这里,“签名人”元素和“签名时间”元素为可选元素。
从以上结构可看出,一个“文本”元素记录某个修改版本的一个修改,而一个修改版本的修改内容则可以通过将具有该修改版本标识的“文本”元素中所记录的修改内容进行累加来计算。图1是计算一个修改版本的修改内容的过程的流程图,具体如下:
步骤S101、指定修改版本;
步骤S102、找出指定版本的所有修改,即,找出具有指定版本标识的所有“文本”元素;
步骤S103、从找出的所有修改中依次获取一个修改,即,从找出的所有“文本”元素中依次获取一个“文本”元素;
步骤S104、判断在步骤S103中获取的修改是否是指定版本的最后一个修改,即,判断在步骤S103中获取的“文本”元素是否是指定版本的最后一个“文本”元素,如果不是最后一个“文本”元素,则执行步骤S105,否则执行步骤S106;
步骤S105、计算一个修改的修改内容,这里,考虑修改内容时,既要考虑修改类型,又要考虑修改的文字内容,因此,在该步骤中,从“文本”元素的“修改类型”属性值获取修改的修改类型,从“文本”元素的值获取修改的文字内容,包括增加、删除或被批注的文字内容,当修改类型为批注时,还需从“文本”元素的“批注”属性值获取批注的文字内容;然后,跳转到步骤S103;
步骤S106、按照电子文件正文中出现的先后次序将所有修改的修改内容进行累加,从而得到一个修改版本的修改内容。
(二)修改信息的记录
在按照以上结构创建XML文件之后,每次对电子文件进行修改时,将该次修改的修改历史信息和留痕信息记录到所述XML文件中。具体地讲,例如,在每次打开电子文件时,确定该次修改的版本标识、修改人、处理类型和开始时间,并将这些信息写入到一个“修改版本”元素中,并将该“修改版本”元素插入到“修改历史”元素中。然后,在每个修改处,根据确定的版本标识将该修改的修改内容和修改时间写入到一个“文本”元素,并将该“文本”元素插入到“正文留痕”元素中。最后,在关闭电子文件时,将结束时间写入到打开电子文件时所插入的“修改版本”元素中,从而完成一次修改过程的记录。在需要认证的情况下,还应写入“认证信息”元素。这里,为了简化留痕信息的表示,还可将连续的同一类修改的留痕信息进行合并,所述同一类修改是指修改版本的版本标识相同并且修改类型相同的“文本”元素。
图2是将一个修改的修改内容写入到一个“文本”元素的示例性过程的流程图,具体如下:
步骤S201、获取修改的文字内容,包括增加、删除或被批注的文字内容;
步骤S202、将修改文字变为UTF8编码,并将这些编码赋予“文本”元素的值;
步骤S203、判断修改的修改类型,如果修改类型为增加文字,则执行步骤S204,如果修改类型为批注,则执行步骤S205和S206,如果修改类型为删除文字,则执行步骤S207;
步骤S204、形成增加文字的修改标记,即,将“文本”元素的“修改类型”属性值设置为标识增加文字的值;
步骤S205、形成增加批注的修改标记,即,将“文本”元素的“修改类型”属性值设置为标识批注的值;
步骤S206、形成批注内容,即,将“文本”元素的“批注”属性值设置为批注的文字内容;
步骤S207、形成删除文字的修改标记,即,将“文本”元素的“修改类型”属性值设置为标识删除文字的值;
步骤S208、形成一个修改的修改内容,即,形成一个“文本”元素。
以下是一个示例性的XML文件:
<?xml version=″1.0″encoding=″UTF-8″?>
<文书正文>
<修改历史>
<修改版本版本标识=″00000001″>
<责任人>张某某</责任人>
<处理类型>起草</处理类型>
<开始时间>2010-0717T09:30:00.0Z</开始时间>
<结束时间>2010-07-17T17:20:47.0Z</结束时间>
</修改版本>
<修改版本版本标识=″00000002″>
<责任人>李某某</责任人>
<处理类型>核稿</处理类型>
<开始时间>2010-07-18T09:10:17.0Z</开始时间>
<结束时间>2010-07-18T10:40:56.0Z</结束时间>
</修改版本>
<修改版本版本标识=″00000003″>
<责任人>赵某某</责任人>
<处理类型>审核</处理类型>
<开始时间>2010-07-18T13:30:17.0Z</开始时间>
<结束时间>2010-07-18T14:50:56.0Z</结束时间>
</修改版本>
</修改历史>
<正文留痕>
<文本版本标识引用=″00000001″修改时间=″2010-07-17T09:40:00.0Z″修改类型=″增加″>××厂关于召开
计划生育工作会议的通知
所属各单位:
为了总结交流经验,研究分析存在的问题,</文本>
<文本版本标识引用=″00000002″修改时间=″2010-07-18T09:47:00.0Z″修改类型=″增加″>进一步</文本>
<文本版本标识引用=″00000001″修改时间=″2010-07-17T09:40:00.0Z″修改类型=″增加″>贯彻落实省、市
计划生育工作会议精神,做好今年计划生育工作,经研究决定召开计划生育工作会议。现将有关事项通知如下:
一、会议内容:×××
二、参加人员:×××
三、会议时间、地点:×××
四、要求:×××
××厂
×年×月×日
</文本>
<文本版本标识引用=″00000003″修改时间=″2010-07-18T14:45:00.0Z″修改类型=″批注″批注=″同意″/>
</正文留痕>
<认证信息>
<修改签名版本标识引用=″00000001″>
<签名结果>UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</签名结果>
<证书>UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</证书>
<签名人>张某某</签名人>
<签名时间>2010-07-17T17:10:47.0Z</签名时间>
</修改签名>
<修改签名 版本标识引用=″00000002″>
<签名结果>UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</签名结果>
<证书>UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</证书>
<签名人>李某某</签名人>
<签名时间>2010-07-18T10:36:50.0Z</签名时间>
</修改签名>
<修改签名版本标识引用=″00000003″>
<签名结果>UjBsR09EbGhjZ0dTQUxNQUFBUUNBRUltQ1p0dU1GUXhEUzhi</签名结果>
<证书>UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</证书>
<签名人>赵某某</签名人>
<签名时间>2010-07-18T14:45:56.0Z</签名时间>
</修改签名>
</认证信息>
</文书正文>
从以上XML文件可看出,一共有3个修改版本,分别为起草人张某某的修改版本、核稿人李某某的修改版本和审核人赵某某的修改版本。张某某增加文字两次,李某某增加文字一次,赵某某批注一次,并且分别有张某某、李某某和赵某某的签名结果和证书。
(三)留痕信息的显示
在记录所有修改之后,可根据创建的XML文件显示指定的修改版本的留痕信息和/或指定的修改人的留痕信息和/或全部或部分修改历史的列表。以下,将对各种显示方法进行描述。
(1)最终版本的留痕信息显示
显示最终版本的留痕信息,即依次显示“正文留痕”元素中具有最终版本标识的所有“文本”元素中所记录的修改内容。这里,可采用显示文字的方式和标识显示文字的方式来进行留痕信息显示。
显示文字的方式是指仅显示正文应出现的修改文字,包括增加的文字和批注的文字,但是不包括删除的文字。例如,可设置修改文字的颜色为黑色或其它颜色。
标识显示文字的方式是指用不同的颜色显示不同的修改版本和修改类型,以进行标识。具体地,根据修改版本的版本标识确定标识该版本的颜色,当修改类型为增加、删除时,设置文字颜色为分配的颜色;当修改类型为批注时,设置文字背景颜色为分配的颜色,文字颜色为分配颜色的反色;增加、删除、被批注的文字都显示;对删除的文字还在文字上加上相同颜色的删除线;对批注的文字还在正文显示区域外显示批注内容,并用虚线二者连接起来。
图3a是采用显示文字的方式显示以上XML文件中所记录的最终版本的留痕信息的示例性视图,图3b是采用标识显示文字的方式显示以上XML文件中所记录的最终版本的留痕信息的示例性视图。
(2)早期版本的留痕信息显示
早期版本相关显示的关键就是形成一个临时的“正文留痕”,在该留痕中指定要显示的早期版本为最后一个修改版本,即把正文留痕恢复到指定的早期版本的原状,然后采用与上述显示最终版本的留痕信息相同的方法进行显示。
早期版本的还原为一循环处理的过程,采用逆向操作的方式。在一次还原处理中,仅把最后一个修改版本从留痕中移除,即,将所有具有最后版本标识的“文本”元素从“正文留痕”中移除,循环处理,直到指定的早期版本停止。图4是修改版本还原的过程的流程图,具体如下:
步骤S401、指定早期版本,即,需要还原到的版本;
步骤S402、获取最后一个版本的版本标识;
步骤S403、根据最后一个版本的版本标识判断最后一个版本是否是指定的早期版本,如果是,则结束还原处理,如果不是,则执行步骤S404;
步骤S404、移除最后一个版本,即,将所有具有最后版本标识的“文本”元素移除,并跳转到步骤S402。
图5是移除最后一个修改版本的过程的流程图,具体如下:
步骤S501、从最后一个版本的所有修改中依次获取一个修改,即,从具有最后版本标识的所有“文本”元素中依次获取一个“文本”元素;
步骤S502、判断在步骤S501中获取的修改的修改类型,即,判断在步骤S501中获取的“文本”元素的“修改类型”属性值,如果标识为删除文字或批注,则执行步骤S503至S505,如果标识为增加文字,则执行步骤S505;
步骤S503、获取修改文字,即,删除的文字或被批注的文字;
步骤S504、将修改文字合并到前一个修改版本的正文中;
步骤S505、删除当前处理的修改,即,删除当前处理的“文本”元素;
步骤S506、判断是否还有未被处理的修改,即,判断是否还有具有最后版本标识的“文本”元素,如果没有,则执行步骤S507,如果还有未被处理的修改,则跳转到步骤S501;
步骤S507、合并连续的修改类型相同的修改,即,“文本”元素。
图6a是采用显示文字的方式显示以上XML文件中所记录的第一个修改版本的留痕信息的示例性视图,显示的内容仅为第一个修改版本结束时的内容。图6b是采用标识显示文字的方式显示以上XML文件中所记录的第二个修改版本的留痕信息的示例性视图,标识显示的内容仅为第二个修改版本结束时的内容,而对于第一个修改版本的内容,没有做标识显示。
(3)某个修改人的留痕信息显示
显示某个修改人的留痕信息的步骤如下:
A)根据修改人确定标识显示的修改版本;
B)依次显示“正文留痕”中具有该修改版本标识的“文本”元素中所记录的修改内容,对不需要标识显示版本的修改采用显示文字的方式,对需要标识显示版本的修改采用标识显示文字的方式。
例如,张某某的处理版本是第一个修改版本,其留痕信息的显示可参见图6a,李某某的处理版本是第二修改版本,其留痕信息的标识显示可参见图6b。
(4)修改历史的列表显示
第一个修改版本为初稿,在修改历史的列表中不列出。从第二个修改版本开始依次列出各个版本的修改。具体步骤如下:
A)在“正文留痕”中按版本对“文本”进行分类。
B)对各个修改版本中的所有“文本”元素进行信息累加。
C)列表显示版本的修改信息,版本的修改信息可包括:修改人、处理类型、修改时间以及修改项等信息,一个修改项可包括:修改类型,修改内容和时间等信息。
图7是以上XML文件中所记录的修改历史的列表显示的示例性视图。
从以上描述可看出,本发明集中维护修改历史,并通过合并连续同一类修改(即,修改版本和修改类型相同的连续修改)的方法,简化了留痕信息的表示。
此外,可通过拆分被修改的元素来简化留痕信息的结构,即,在修改处,将原XML元素分成两个独立的XML元素,再将修改内容相关的XML元素放在其中间。
以以上XML文件为例来说,张某某修改结束时相应的“文本”元素应该为:
<文本 版本标识引用=″00000001″修改时间=″2010-07-17T09:40:00.0Z″修改类型=″增加″>××厂关于召开计划生育工作会议的通知
所属各单位:
为了总结交流经验,研究分析存在的问题,贯彻落实省、市计划生育工作会议精神,做好今年计划生育工作,经研究决定召开计划生育工作会议。现将有关事项通知如下:
一、会议内容:×××
二、参加人员:×××
三、会议时间、地点:×××
四、要求:×××
××厂
×年×月×日
</文本>
接着,李某某在进行修改时,将文字“进一步”添加到“贯彻落实”的前面。此时,通过将以上“文本”元素拆分成两个“文本”元素,并将记录增加文字“进一步”修改的“文本”元素插在拆分的两个“文本”元素之间,如下所示:
<文本 版本标识引用=″00000001″修改时间=″2010-07-17T09:40:00.0Z″修改类型=″增加″>××厂关于召开计划生育工作会议的通知
所属各单位:
为了总结交流经验,研究分析存在的问题,</文本>
<文本 版本标识引用=″00000002″修改时间=″2010-07-18T09:47:00.0Z″修改类型=″增加″>进一步</文本>
<文本 版本标识引用=″00000001″修改时间=″2010-07-17T09:40:00.0Z″修改类型=″增加″>贯彻落实省、市计划生育工作会议精神,做好今年计划生育工作,经研究决定召开计划生育工作会议。现将有关事项通知如下:
一、会议内容:×××
二、参加人员:×××
三、会议时间、地点:×××
四、要求:×××
××厂
×年×月×日
</文本>
这样,就避免了XML元素的嵌套,即,避免了将第二个修改版本
的修改内容嵌套在第一个修改版本中,从而简化了留痕信息的表示。
以下,将参照图8对根据本发明实施例的电子文件留痕信息的记录装置进行描述。参照图8,该装置包括:XML文件创建单元100,其用于创建记录电子文件正文的修改历史信息和留痕信息的XML文件,所述修改历史信息包括每个修改版本的版本标识和修改人信息,所述留痕信息包括与每个版本标识相关联的每个修改版本的一个或多个修改的修改类型和修改文字内容;和记录单元200,其用于每次对电子文件进行修改时,将该次修改的修改历史信息和留痕信息记录到所述XML文件中。此外,该装置还可包括留痕信息显示单元300,其用于根据创建的XML文件显示指定的修改版本的留痕信息和/或指定的修改人的留痕信息和/或全部或部分修改历史的列表。
以上各个单元的具体操作与上述方法中的相应步骤相同,因此,省略其详细描述。这里,应该理解,以上记录装置仅仅是根据本发明所记录的电子文件留痕信息的一个示例性应用,也就是说,根据本发明所记录的电子文件留痕信息不仅仅是用于显示,还可用于其它需要利用电子文件留痕信息或者对电子文件留痕信息进行处理的应用。
以上已参照附图和实施例对本发明进行了详细描述,但是,应该理解,本发明并不限于以上所公开的具体实施例,任何本领域的技术人员在此基础之上容易想到的修改和变型都应包括在本发明的保护范围内。