本发明涉及保险信息处理领域,特别是涉及一种处理保单信息的方法和装置。
背景技术:
随着保险业务的发展,越来越多的人有了防患于未然的意识,也越来越多的人开始进行投保,保险公司的保单越来越多,而且很多保单有很多年的保险保障,比如,寿险保单通常有几十年的保险保障,新保单的稳步增长的同时,旧保单的过往保费记录呈非线性增长,庞大的保单,每日存在不同类型的信息数据需要刷新,进行保单信息处理时常常会出现资源争用,导致长时间等待造成数据库异常或脏读脏写问题。
技术实现要素:
基于此,为了解决上述资源争用造成数据库异常或脏读脏写的问题,提出了一种处理保单信息的方法和装置。
一种处理保单信息的方法,所述方法包括以下步骤:获取待处理的保单;获取处理所述保单需要的信息资源,所述信息资源用于更新所述保单的信息;将获取到的所述信息资源进行加锁处理;判断获取到的所述信息资源是否全部加锁成功;若是,则根据获取到的信息资源处理所述保单。
在其中一个实施例中,在所述获取待处理的保单的步骤之前还包括:将待处理的所有保单按照预设的规则进行排序,为每个保单分配一个序号;将待处理保单的保单号和分配的序号进行对应存储。
在其中一个实施例中,所述获取待处理的保单的步骤包括:获取待处理保单的序号;查找与所述序号对应的保单号;根据所述保单号获取待处理的保单。
在其中一个实施例中,在所述判断获取到的所述信息资源是否全部加锁成功的步骤之后还包括:若所述信息资源没有全部加锁成功,则将所述保单记录到锁单。
在其中一个实施例中,在所述将所述保单记录到锁单的步骤之后还包括:当同组中的所有保单都轮询过后,重复上述步骤处理锁单中记录的保单。
一种处理保单信息的装置,所述装置包括:保单获取模块,用于获取待处理的保单;资源获取模块,用于获取处理所述保单需要的信息资源,所述信息资源用于更新所述保单的信息;加锁模块,用于将获取到的所述信息资源进行加锁处理;判断模块,用于判断获取到的所述信息资源是否全部加锁成功;处理模块,用于若信息资源全部加锁成功,则根据获取到的信息资源处理所述保单。
在其中一个实施例中,所述装置还包括:序号分配模块,用于将待处理的所有保单按照预设的规则进行排序,为每个保单分配一个序号;存储模块,用于将待处理保单的保单号和分配的序号进行对应存储。
在其中一个实施例中,所述保单获取模块包括:序号获取单元,用于获取待处理保单的序号;查找单元,用于查找与所述序号对应的保单号;保单获取单元,用于根据所述保单号获取待处理的保单。
在其中一个实施例中,所述装置还包括:记录模块,用于若所述信息资源没有全部加锁成功,则将所述保单记录到锁单。
在其中一个实施例中,所述装置还包括:锁单处理模块,用于当同组中的所有保单都轮询过后,重复上述保单获取模块、资源获取模块、加锁模块、判断模块、处理模块和记录模块处理锁单中记录的保单。
上述处理保单信息的方法和装置,通过获取待处理的保单,获取处理所述保单需要的信息资源,所述信息资源用于更新所述保单的信息,将获取到的所述信息进行加锁处理,判断获取到的所述信息资源是否全部加锁成功,若是,则根据获取到的信息资源处理所述保单。通过获取处理保单需要的信息资源,并将该信息资源进行加锁处理,待所有的信息资源都加锁成功后,才开始进行处理该保单,由于将信息资源进行加锁后,其他程序就不能再更改加锁后的信息资源,这样就避免了处理保单信息时出现长时间等待或者脏读脏写的问题。
附图说明
图1为一个实施例中处理保单信息的方法流程图;
图2为一个实施例中获取待处理保单的方法流程图;
图3为另一个实施例中处理保单信息的方法流程图;
图4为一个实施例中处理保单信息装置的结构框图;
图5为另一个实施例中处理保单信息装置的结构框图;
图6为一个实施例中保单获取模块的结构框图;
图7为再一个实施例中处理保单信息装置的结构框图;
图8为一个实施例中处理保单信息的服务器的内部结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,提出了一种处理保单信息的方法,该方法以下步骤包括:
步骤102,获取待处理的保单。
具体的,将需要进行信息更新的保单进行排序,为每个待处理的保单分配一个序号,并将保单的保单号和分配的序号进行对应存储。按照序号将待处理的保单分为不同的组,不同的组由不同的线程组进行并行处理。每个组按照序号从小到大依次处理,首先获取待处理保单的序号,进而根据该序号获取与该序号对应的保单号,根据保单号来获取待处理的保单。
步骤104,获取处理保单需要的信息资源,信息资源用于更新保单的信息。
在本实施例中,信息资源是指处理保单或更新保单信息所需要的数据资源。获取待处理的保单后,查询更新该保单需要的信息资源,进而去获取处理保单需要的信息资源。具体的,信息资源包括保单续期缴费的信息、保单期限、保险金额、保险费、投保人信息、赔付责任等信息中的一种或多种。
步骤106,将获取到的信息资源进行加锁处理。
具体的,为了避免出现信息资源争用的情况,将获取到的信息资源进行加锁处理,加锁处理就是将获取的信息资源进行锁定,不允许其他程序或其他线程组对该信息资源进行修改。这样通过将处理保单需要的信息资源锁定,在处理该保单时不允许其他程序对信息资源进行修改,很好的解决了处理保单信息时出现的脏读脏写问题。其中,脏读脏写是指对无效数据的读出或写入,比如,在数据库访问中,事务t1将某一值修改,然后事务t2读取该值,此后,事务t1因为某种原因撤销了对该值的修改,这就导致了t2所读取到的数据是无效的。
步骤108,判断获取到的信息资源是否全部加锁成功,若是,则进入步骤110,若否,则结束。
具体的,判断对获取到的所有信息资源是否全部加锁成功,如果全部加锁成功,则说明处理保单所需要的信息资源全部锁定,可以根据获取到的信息资源处理保单;若没有全部加锁成功,则说明还有至少一个信息资源正在被别的线程占用,目前还不能利用该部分信息资源,那么暂时对该保单不作处理。
步骤110,根据获取到的信息资源处理保单。
具体的,判断获取到的信息资源全部加锁成功后,也就是说,处理保单所需要的信息资源已经被全部锁定,那么此时就可以根据获取到的信息资源对保单进行处理,更新对应的保单信息。
上述处理保单信息的方法,通过获取待处理的保单,获取处理所述保单需要的信息资源,所述信息资源用于更新所述保单的信息,将获取到的所述信息进行加锁处理,判断获取到的所述信息资源是否全部加锁成功,若是,则根据获取到的信息资源处理所述保单。通过获取处理保单需要的信息资源,并将该信息资源进行加锁处理,待所有的信息资源都加锁成功后,才开始进行处理该保单,由于将信息资源进行加锁后,其他程序就不能再更改加锁后的信息资源,这样就避免了处理保单信息时出现长时间等待或者脏读脏写的问题。
在一个实施例中,在获取待处理的保单的步骤之前还包括:将待处理的所有保单按照预设的规则进行排序,为每个保单分配一个序号,将待处理保单的 保单号和分配的序号进行对应存储。
在本实施例中,将需要进行更新的所有保单按照应交日进行临时排序,为每个保单相应的分配一个序号,比如,可以简单的按照1、2、3......这样的顺序依次为每个保单分配一个序号。按照序号将待处理保单分给多个线程进行并行处理。比如将序号为1-10的保单分为一组,将序号11-20的保单分为一组,将序号21-30的保单分为一组,依次类推。在每个组内按照序号的从小到大依次处理。此外,将待处理保单的保单号和为每个待处理保单分配的序号进行对应存储,这样处理保单时,就可以根据分配的临时序号找到对应的保单号,进而获取对应的保单。
如图2所示,在一个实施例中,获取待处理的保单的步骤包括:
步骤102a,获取待处理保单的序号。
具体的,预先将所有待处理的保单进行临时排序,为每个保单分配一个序号,按照序号将待处理的保单分为多个不同的组,为每个组内分配一定数量的保单,比如10个。将保单的保单号和分配的序号进行对应存储。按照序号的大小顺序依次处理待处理的保单。所以获取待处理保单的第一步是获取当前将要处理的保单的序号。
步骤102b,查找与所述序号对应的保单号。
具体的,预先存储了保单的保单号和序号之间的对应关系,根据获取到的待处理保单的序号查找对应的保单号,每一个保单号对应唯一的一个保单。
步骤102c,根据所述保单号获取待处理的保单。
具体的,根据查找到的保单号获取与该保单号对应的保单,进而获取处理该保单需要的信息资源,并将获取到的信息资源进行加锁处理,进而根据锁定的信息资源处理相应的保单。
如图3所示,在一个实施例中,在所述判断获取到的所述信息资源是否全部加锁成功的步骤之后还包括:
步骤112,若所述信息资源没有全部加锁成功,则将所述保单记录到锁单。
具体的,若处理保单所需要的信息资源没有全部加锁成功,说明还有一些信息资源当前正在被别的程序占用,此时还不能处理该保单,可以将该保单的 保单号或者是序号记录到锁单,然后按照顺序继续处理同组内的下一个保单,同样的,如果下一个保单需要的信息资源能够加锁成功则更新该保单,如果不能加锁成功,则将该保单的保单号或者序号记录到锁单,然后继续按照顺序处理下下一个保单,直到将同一个线程组内的所有保单都轮询一遍。
如图3所示,在一个实施例中,将保单记录到锁单的步骤之后还包括:
步骤113,当同组中的所有保单都轮询过后,重复上述步骤102-112处理锁单中记录的保单。
具体的,当同一个线程组中的所有保单都依次轮询过后,开始重新处理锁单中记录的保单,重复步骤102-112进行处理上述保单,循环轮询锁单中的尚未处理的保单,当超过了轮询的上限次数该线程组不再对该保单进行处理。最后一个线程组除了处理本线程锁单的常规轮询外,还需要发起所有线程剩余锁单的终极轮询处理,直至达到上限轮询次数。最终处理失败的保单将等待几个小时后重新发起处理,也可在后续发起的信息处理中重新被抓取处理进行处理。
在一个实施例中,处理锁单中记录的保单的步骤之前还包括:判断轮询锁单中记录的保单的次数是否大于预设的阈值;若否,则继续处理该保单。
具体的,同组线程按照顺序依次轮询待处理的保单,将信息资源能够加锁成功的保单进行处理,将信息资源暂时不能全部加锁成功的保单记录到锁单。待同组中的保单都轮询一遍后,再依次轮询记录在锁单中的保单,同样的,将信息资源能够加锁成功的保单进行处理,不能够全部加锁成功的保单进行记录,重复以上方案多次,判断对保单轮询的次数是否超过了预设的阈值,比如,预设阈值可以设置为8次,当超过8次则该线程不再处理。若轮询待处理保单的次数没有超过上限即预设的阈值,则继续按照上述步骤102-112处理该保单。
如图4所示,在一个实施例中,提出了一种处理保单信息的装置,该装置包括:
保单获取模块402,用于获取待处理的保单。
具体的,将需要进行信息更新的保单进行排序,为每个待处理的保单分配一个序号,并将保单的保单号和分配的序号进行对应存储。按照序号将待处理 的保单分为不同的组,不同的组由不同的线程组进行并行处理。每个组按照序号从小到大依次处理,首先获取待处理保单的序号,进而根据该序号获取与该序号对应的保单号,根据保单号来获取待处理的保单。
资源获取模块404,用于获取处理所述保单需要的信息资源,所述信息资源用于更新所述保单的信息。
在本实施例中,信息资源是指处理保单或更新保单信息所需要的数据资源。获取待处理的保单后,查询更新该保单需要的信息资源,进而去获取处理保单需要的信息资源。具体的,信息资源包括保单续期缴费的信息、保单期限、保险金额、保险费、投保人信息、赔付责任等信息中的一种或多种。
加锁模块406,用于将获取到的信息资源进行加锁处理。
具体的,为了避免出现信息资源争用的情况,将获取到的信息资源进行加锁处理,加锁处理就是将获取的信息资源进行锁定,不允许其他程序或其他线程组对该信息资源进行修改。这样通过将处理保单需要的信息资源锁定,在处理该保单时不允许其他程序对信息资源进行修改,很好的解决了处理保单信息时出现的脏读脏写问题。其中,脏读脏写是指对无效数据的读出或写入,比如,在数据库访问中,事务t1将某一值修改,然后事务t2读取该值,此后,事务t1因为某种原因撤销了对该值的修改,这就导致了t2所读取到的数据是无效的。
判断模块408,用于判断获取到的信息资源是否全部加锁成功。
具体的,判断对获取到的所有信息资源是否全部加锁成功,如果全部加锁成功,则说明处理保单所需要的信息资源全部锁定,可以根据获取到的信息资源处理保单;若没有全部加锁成功,则说明还有至少一个信息资源正在被别的线程占用,目前还不能利用该部分信息资源,那么暂时对该保单不作处理。
处理模块410,用于若信息资源全部加锁成功,则根据获取到的信息资源处理保单。
具体的,判断获取到的信息资源全部加锁成功后,也就是说,处理保单所需要的信息资源已经被全部锁定,那么此时就可以根据获取到的信息资源对保单进行处理,更新对应的保单信息。
上述处理保单信息的方法,通过获取待处理的保单,获取处理所述保单需要的信息资源,所述信息资源用于更新所述保单的信息,将获取到的所述信息进行加锁处理,判断获取到的所述信息资源是否全部加锁成功,若是,则根据获取到的信息资源处理所述保单。通过获取处理保单需要的信息资源,并将该信息资源进行加锁处理,待所有的信息资源都加锁成功后,才开始进行处理该保单,由于将信息资源进行加锁后,其他程序就不能再更改加锁后的信息资源,这样就避免了处理保单信息时出现长时间等待或者脏读脏写的问题。
如图5所示,在一个实施例中,上述处理保单信息的装置还包括:
序号分配模块412,用于将待处理的所有保单按照预设的规则进行排序,为每个保单分配一个序号。
在本实施例中,将需要进行更新的所有保单按照应交日进行临时排序,为每个保单相应的分配一个序号,比如,可以简单的按照1、2、3......这样的顺序依次为每个保单分配一个序号。按照序号将待处理保单分给多个线程进行并行处理。比如将序号为1-10的保单分为一组,将序号11-20的保单分为一组,将序号21-30的保单分为一组,依次类推。在每个组内按照序号的从小到大依次处理。
存储模块414,用于将待处理保单的保单号和分配的序号进行对应存储。
在本实施例中,将待处理保单的保单号和为每个待处理保单分配的序号进行对应存储,这样处理保单时,就可以根据分配的临时序号找到对应的保单号,进而获取对应的保单。
如图6所示,在一个实施例中,保单获取模块402包括:
序号获取单元402a,用于获取待处理保单的序号。
具体的,预先将所有待处理的保单进行临时排序,为每个保单分配一个序号,按照序号将待处理的保单分为多个不同的组,为每个组内分配一定数量的保单,比如10个。将保单的保单号和分配的序号进行对应存储。按照序号的大小顺序依次处理待处理的保单。所以获取待处理保单的第一步是获取当前将要处理的保单的序号。
查找单元402b,用于查找与序号对应的保单号。
具体的,预先存储了保单的保单号和序号之间的对应关系,根据获取到的待处理保单的序号查找对应的保单号,每一个保单号对应唯一的一个保单。
保单获取单元402c,用于根据所述保单号获取待处理的保单。
具体的,根据查找到的保单号获取与该保单号对应的保单,进而获取处理该保单需要的信息资源,并将获取到的信息资源进行加锁处理,进而根据锁定的信息资源处理相应的保单。
如图7所示,在一个实施例中,上述处理保单信息的装置还包括:
记录模块409,用于若所述信息资源没有全部加锁成功,则将所述保单记录到锁单。
具体的,若处理保单所需要的信息资源没有全部加锁成功,说明还有一些信息资源当前正在被别的程序占用,此时还不能处理该保单,可以将该保单的保单号或者是序号记录到锁单,然后按照顺序继续处理同组内的下一个保单,同样的,如果下一个保单需要的信息资源能够加锁成功则更新该保单,如果不能加锁成功,则将该保单的保单号或者序号记录到锁单,然后继续按照顺序处理下下一个保单,直到将同一个线程组内的所有保单都轮询一遍。
在一个实施例中,上述处理保单信息的装置还包括:锁单处理模块,用于当同组中的所有保单都轮询过后,重复上述保单获取模块、资源获取模块、加锁模块、判断模块、处理模块和记录模块处理锁单中记录的保单。
具体的,当同一个线程组中的所有保单都依次轮询过后,开始重新处理锁单中记录的保单,重复上述模块402-410进行处理上述保单,循环轮询锁单中的尚未处理的保单,当超过了轮询的上限次数该线程组不再对该保单进行处理。最后一个线程组除了处理本线程锁单的常规轮询外,还需要发起所有线程剩余锁单的终极轮询处理,直至达到上限轮询次数。最终处理失败的保单将等待几个小时后重新发起处理,也可在后续发起的信息处理中重新被抓取处理进行处理。
如图8所示,在一个实施例中,提供了一种处理保单信息的服务器800,该服务器800包括通过系统总线连接的处理器、存储介质、内存和网络接口。其 中,该服务器的存储介质包括操作系统、数据库、处理保单信息的系统,数据库用于存储数据,如存储保单的保单号、保单的内容信息等。该处理保单信息的系统用于根据获取的信息资源更新保单的信息,该服务器的处理器用于提供计算和控制能力,支撑整个服务器的运行。该服务器的内存为存储介质中的处理保单信息的系统提供运行环境。该服务器的网络接口用于据以与外部的终端通过网络连接通信,比如接收终端发送的用于更新保单信息的信息数据等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。