具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种自动开标的方法的流程图,本实施例提供的一种自动开标的方法适用于任一种电子招投标系统。该方法可以由本发明实施例提供的自动开标的装置执行,该装置可以通过软件和/或硬件的方式实现,并集成在执行本方法的服务器中。该方法具体包括如下步骤:
S110,根据任务量使用多个线程并行接收上传的多个投标文件,并存储至服务文件夹。
具体的,在现有的电子招投标系统中,各个投标单位在投标截止时间之前通过招投标系统上传投标文件,在公告的开标时间当天,项目开标需要每家投标单位手动对上传的投标文件进行解密,在解密成功后由工作人员对所有解密后的投标文件进行导入,只有将解密后的投标文件全部导入完毕才可以查看标书,根据具体的唱标项进行唱标。如果参与投标的单位数量过多或者投标文件过大,都会导致开标过程中的解密和导入步骤耗费大量的时间,降低开标速度,也耗费了投标参与人员的时间。
现有技术的开标速度比较慢,为了提高投标文件的开标速度,本发明实施例利用分布式和高并发技术,通过至少一个服务器使用多个线程并行对上传的投标文件进行处理,其中服务器的数量不做限定。示例性的,本实施例将服务器数量设置为3个,在开标过程中通过3个服务器对上传的投标文件同时进行处理。可选的,分布式服务是通过.NET操作平台实现的,也就是Microsoft XML Web services平台,允许应用程序通过网络进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。其中,Web service是一个平台独立的、低耦合的、自包含的、基于可编程的web的应用程序,可使用开放的可扩展标记语言XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式服务的互操作的应用程序。具体的,可扩展标记语言XML是标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
进一步的,投标单位在招投标系统上上传投标文件时,系统会通过分发机制将上传的投标文件均匀分配给分布式服务器进行处理。具体的,在招投标系统进行投标文件的上传阶段,根据每个服务器任务量的大小,将上传的投标文件平均分配给不同的服务器进行处理。优选的,在上传阶段,系统通过文件流的方式将上传的投标文件复制到服务文件夹中。其中,服务文件夹可以位于进行文件处理的服务器中,也可以位于另外设置的一个文件服务器中,专用于存储上传的投标文件。进一步的,每个服务器均根据需要将整个开标阶段流程切分为不同的线程组,对投标文件进行处理。其中,每个线程组可以通过配置不同的线程数来控制多线程的数量。具体的,每个服务器通过多个线程并行对上传的投标文件进行处理。
进一步的,在上传阶段,投标单位在招投标系统上上传投标文件,每个服务器根据自身已经被分配的任务量,使用多个线程并行接收上传的投标文件,并通过文件流的方式将接收到的上传投标文件存储到服务文件夹中。此为开标阶段切分的不同线程组中的复制过程,通过配置线程组中的线程数,实现对上传的投标文件的多线程并行复制处理,提高上传阶段投标文件的存储速度,并通过分发机制对应分配每个服务器处理的投标文件,提高服务器对投标文件后续的处理速度。
S120,使用多个线程并行对服务文件夹中的投标文件进行解密,得到解密后的各投标文件。
具体的,在投标截止后,服务文件夹里存储各个投标单位上传的所有投标文件,并分配给不同的服务器进行处理。其中,为了实现开标过程的公平公正性,上传的投标文件都是经过加密的。优选的,加密算法采用三重数据加密标准(Triple Data EncryptionStandard,3DES),使用3条56位的密钥对数据块进行3次加密,相当于对每个数据块应用三次DES加密算法。进一步的,在开标当天,工作人员在招投标系统上进行项目开标,分布式服务器并行对对应存储的投标文件进行解密,其中,解密算法与加密算法对应,优选的,采用3DES解密。
进一步的,在项目开标阶段,为了防止招标人与投标人进行暗箱操作,而对投标文件进行更改,将开标时间与投标截止时间设为同一时间,当评标系统(招投标系统)判断达到开标时间后及时进行自动开标,分布式服务器同时对各个对应分配的经过3DES加密的投标文件进行3DES解密。此为开标阶段切分的不同线程组中的解密过程,具体的,在每一个服务器上均使用多线程并行对各个加密的投标文件进行3DES解密,得到解密后的各个投标文件。其中,生成的解密后的投标文件包括XML版标记文件,方便后续唱标导入。
S130,使用多个线程并行显示各投标文件的唱标项。
具体的,生成的解密后的投标文件包括一种可扩展标记语言XML版的标记文件,使投标文件具有一定的结构性,通过解析拆分XML文件的节点,可以获取到每个投标文件的唱标项信息。进一步的,服务器使用多个线程并行对解密后的投标文件进行解析拆分,得到唱标项信息,并使用多个线程并行显示各投标文件的唱标项。唱标项信息为在开标过程中,为了表示开标的公平公正性,需要公开宣读的在投标文件中包含的信息,例如:投标单位、投标报价及需要时长等。
进一步的,对于开标阶段切分成的不同线程组,包括:复制、解密,还可以包括唱标和导入。在每个线程组中配置不同的线程数控制多线程的数量,每个线程组优先处理对应职能下的任务,若对应职能下无任务,则可以继续处理其他职能下的任务,减轻不同线程组的任务处理负担,提高处理速度。示例性的,复制线程组可以对上传的投标文件进行存储,若无上传的投标文件,不再进行存储,则复制线程组还可以对投标文件进行解密,执行解密线程组的功能,减轻解密线程组的负担,提高开标过程中投标文件的解密速度。进一步的,服务器采用JAVA的定时任务Quartz作业调度系统,对各个投标文件在开标过程中对应的不同线程组的任务进行处理,并通过起多个JOB任务来驱动服务。其中,Quartz是一个完全由java编写的开源作业调度框架。Quartz是开源组织(Open Symphony)在任务调度(Jobscheduling)领域又一个开源项目,它可以与java2平台企业版(J2EE)和java2平台标准版(J2SE)中的应用程序相结合也可以单独使用。Quartz可以用来创建简单的或运行十个、百个,甚至是好几万个任务调度Jobs这样复杂的程序,其中,Jobs可以做成标准的Java组件或Java企业服务调度(Enterprise Java Beans scheduling,EJBs)。本实施例为了兼容JAVA及.NET两套系统,在job中作了此类的分流。
本实施例提供的技术方案,通过分布式服务使用多个线程并行对上传的投标文件进行复制、解密和唱标项显示,实现投标文件的自动开标,提高了开标速度,解决了现有技术中开标过程耗时长的问题。
实施例二
图2为本发明实施例二提供的一种自动开标的方法的流程图。本实施例是在上述实施例的基础上进行优化。参照图2,本实施例的方法具体包括:
S210,根据任务量使用多个线程并行接收上传的多个投标文件,并存储至服务文件夹。
S220,将投标文件对应的服务器地址及投标单位存储到数据库中,并进行文件挂载。
具体的,投标单位在招投标系统上上传投标文件时,系统会通过分发机制将上传的投标文件均匀分配给分布式服务器进行处理。具体的,为上传的投标文件分配好待处理的服务器后,将该投标文件所在的服务器地址及对应的投标单位存储到数据库中。进一步的,为了在服务器中快速对对应的投标文件进行处理,需要在将投标文件存储到服务文件夹后对其进行文件挂载,也就是将对应投标文件的存储路径保存到数据库中。其中,分发的服务器在数据库中可以根据每个服务器中的任务量进行灵活分配。数据库中不仅存储各个投标文件对应的服务器及投标单位,还存储了对应的存储路径,可以在发送任务时,直接对对应的投标文件进行处理。
S230,使用多个线程并行对挂载的投标文件进行解密,得到投标文件的唱标项。
具体的,投标截止后,评标系统对上传的投标文件进行开标,数据库根据其中存储的各个投标文件对应的服务器地址及投标单位向对应的服务器发送各个线程组执行的任务,服务器中不同的线程组根据保存的存储路径使用多个线程直接对相应的投标文件进行对应任务的处理。具体的,各个服务器使用多个线程并行对挂载的投标文件进行3DES解密,得到解密后的各投标文件,且解密后的投标文件包括XML版标记文件,通过解析拆分XML版标记文件,得到各投标文件中包含的唱标项信息。
S240,使用多个线程并行显示各投标文件的唱标项。
S250,从解密后的各投标文件中导入各投标文件的其他投标项。
具体的,使用对个线程并行显示各个投标文件的唱标项后,需要对各解密后的投标文件进行导入,而一些经济标和技术标由于内容较多,导入耗时较长。因此,在得到各投标文件的唱标项后可以选择优先唱标,唱标完成后再使用多个线程并行导入各投标文件的其他投标项,例如:耗时较长的经济标和技术标等,进一步提高开标速度,实现标书秒开的目的。进一步的,如图3所示,在对投标文件进行开标时,服务器与评标系统之间交互使用WebService及数据库,以实现开标过程中的复制、解密、唱标和导入。同时,如图4所示,对不同线程组执行失败的任务进行标注,数据库可以对标注的任务重新发送,使服务器重新执行,提高了开标中出错任务的速度。
本实施例提供的技术方案,通过分布式服务使用多个线程并行对上传的投标文件进行复制、解密和唱标项显示,实现投标文件的自动开标,并通过在导入前优先唱标,实现标书秒开,进一步提高了开标速度,解决了现有技术中开标过程耗时长的问题。
实施例三
图5为本发明实施例三提供的一种自动开标的方法中线程监测方法的流程图。本实施例是对上述实施例中的方法的执行状态的监测。参照图5,该方法具体包括:
S310,监测各线程的状态。
具体的,为了防止在开标过程中服务器出现故障,需要对每台服务器进行监听。示例性的,采用每5秒调用一下评标系统中的Web Servise的方式,如果调用成功则说明该服务器无故障;如果调用延时则说明该服务器出现故障。其中,为了兼容JAVA和.NET两套系统,分别采用了两种调用方式。例如,对于JAVA系统,采用CXF代理类调用;对于.NET系统,采用Axis2动态代理调用。
进一步的,对服务器中不同线程组的多线程状态进行监测,判断是否出现故障,防止某个县城由于程序问题卡死,影响投标文件的开标速度。
S320,判断各线程是否出现故障。若是,执行S330;若否,执行S310。
S330,终止出现故障的线程的任务,并启动新的线程执行故障线程的任务。
具体的,对出现故障的线程,需要使用监听服务来手动终止该线程的任务,释放该线程,并启动新的线程执行该故障线程的任务。可选的,还可以对该线程的任务进行标注,表示执行失败,通过数据库重新发送失败的任务,再次进行处理。
本实施例提供的技术方案,通过对服务器及各线程的故障状态进行监测,对故障线程及时释放,重新执行任务,解决了线程存在的故障,提高了开标过程中的文件处理速度。
实施例四
图6为本发明实施例四提供的一种自动开标的装置的结构示意图,该装置可以执行上述任意实施例提供的自动开标的方法,具备执行方法相应的功能模块和有益效果。如图6所示,该装置包括:
文件接收模块410,用于根据任务量使用多个线程并行接收上传的多个投标文件,并存储至服务文件夹。
文件解密模块420,用于使用多个线程并行对服务文件夹中的投标文件进行解密,得到解密后的各投标文件。
唱标项显示模块430,用于使用多个线程并行显示各投标文件的唱标项。
本实施例提供的技术方案,通过分布式服务使用多个线程并行对上传的投标文件进行复制、解密和唱标项显示,实现投标文件的自动开标,提高了开标速度,解决了现有技术中开标过程耗时长的问题。
进一步的,上述文件解密模块420可以具体用于:使用多个线程并行对服务文件夹中的投标文件进行解密,得到投标文件的唱标项。
进一步的,上述装置还可以包括:投标项导入模块440,用于在使用多个线程并行显示各投标文件的唱标项之后,从解密后的各投标文件中导入各投标文件的其他投标项。
进一步的,上述装置还可以包括:文件挂载模块450,用于在使用多个线程根据任务量并行接收上传的多个投标文件,并存储至服务文件夹之后,将投标文件对应的服务器地址及投标单位存储到数据库中,并进行文件挂载。
进一步的,上述文件解密模块420可以具体用于:使用多个线程并行对挂载的投标文件进行解密。
进一步的,上述装置还可以包括:线程监测模块460,用于监测各线程的状态,终止出现故障的线程的任务,并启动新的线程执行所述故障线程的任务。
实施例五
图7为本发明实施例五提供的一种服务器的结构示意图。如图7所示,该服务器包括处理器40、存储装置41和通信装置42;服务器中处理器40的数量可以是一个或多个,图7中以一个处理器40为例;服务器的处理器40、存储装置41和通信装置42可以通过总线或其他方式连接,图7中以通过总线连接为例。
存储装置41作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的自动开标的方法对应的模块(例如,用于自动开标的装置中的文件接收模块410、文件解密模块420和唱标项显示模块430)。处理器40通过运行存储在存储装置41中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述的自动开标的方法。
存储装置41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置41可进一步包括相对于处理器40远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
通信装置42可用于实现网络连接或者移动数据连接。
本实施例提供的一种服务器可用于执行上述任意实施例提供的自动开标的方法,具备相应的功能和有益效果。
实施例六
本发明实施例六还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可实现上述任意实施例中的自动开标的方法。该方法具体包括:
根据任务量使用多个线程并行接收上传的多个投标文件,并存储至服务文件夹;
使用多个线程并行对服务文件夹中的投标文件进行解密,得到解密后的各投标文件;
使用多个线程并行显示各投标文件的唱标项。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的自动开标的方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。