承保多线程批处理方法和系统与流程

文档序号:11216043阅读:326来源:国知局
承保多线程批处理方法和系统与流程

本发明涉及计算机技术领域,特别是涉及一种承保多线程批处理方法和系统。



背景技术:

保险承保是保险人对愿意购买保险的单位或个人(即投保人)所提出的投保申请进行审核,做出是否同意接受和如何接受决定的过程。承保主要环节包括核保和作出承保决策,其中,承保包括正常承保、优惠承保、有条件承保和拒保等。随着计算机技术的发展,保险承保通常可通过保险业务处理平台来实现,保险业务处理平台通常会在某一些时间点处理海量的承保数据。

传统技术中,保险业务处理平台中的承保程序代码量非常大,各个层级关联性强,因此修改和维护起来比较困难。且大业务逻辑接口需要重复访问(比如重复取数、重复调用大接口等),影响到承保程序的效率。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种修改维护更加方便且能提高承保程序的效率的承保多线程批处理方法和系统。

一种承保多线程批处理方法,所述方法包括以下步骤:

采用独立线程分配待处理任务,所述待处理任务是对承保程序模块化产生的待处理任务,将所述待处理任务写入到临时任务表中;

对于所述临时任务表中的任务,按照保单数量分配到多个线程进行处理, 且对于每个线程,该线程处理完预设数量的保单则提交一次处理结果。

在其中一个实施例中,所述按照保单数量分配到多个线程进行处理的步骤,包括:

设置最小线程数和最大线程数,并根据当前保单数量分配线程数。

在其中一个实施例中,所述方法还包括:

对承保程序本身进行模块化,将承保程序分为多个模块,所述模块包括准备数据模块、承保规则检查模块、投保数据向保单数据转换模块和确认承保动作模块,对于每个模块设置相应接口用于与其它模块进行通信。

在其中一个实施例中,所述方法还包括:

在程序处理的最外层捕捉错误,对于出现错误的任务在所述临时任务表中对应增加标记;

提取所述临时任务表中带标记的任务并重复执行预设次数。

在其中一个实施例中,所述方法还包括:

检测保单处理是否出现异常,当某个保单处理出现异常时,进行逐单回滚。

一种承保多线程批处理系统,所述系统包括:

任务分配模块,用于采用独立线程分配待处理任务,所述待处理任务是对承保程序模块化产生的待处理任务,将所述待处理任务写入到临时任务表中;

任务控制模块,用于对于所述临时任务表中的任务,按照保单数量分配到多个线程进行处理,且对于每个线程,该线程处理完预设数量的保单则提交一次处理结果。

在其中一个实施例中,所述任务控制模块用于设置最小线程数和最大线程数,并根据当前保单数量分配线程数。

在其中一个实施例中,所述系统还包括:

模块化配置模块,用于对承保程序本身进行模块化,将承保程序分为多个模块,所述模块包括准备数据模块、承保规则检查模块、投保数据向保单数据转换模块和确认承保动作模块,对于每个模块设置相应接口用于与其它模块进行通信。

在其中一个实施例中,所述系统还包括:

错误处理模块,用于在程序处理的最外层捕捉错误,对于出现错误的任务在所述临时任务表中对应增加标记;提取所述临时任务表中带标记的任务并重复执行预设次数。

在其中一个实施例中,所述系统还包括:

异常处理模块,用于检测保单处理是否出现异常,当某个保单处理出现异常时,进行逐单回滚。

上述承保多线程批处理方法和系统,通过采用独立线程分配待处理任务,将待处理任务写入到临时任务表中,对于临时任务表中的任务,按照保单数量分配到多个线程进行处理,且对于每个线程,该线程处理完预设数量的保单则提交一次处理结果。由于承保程序进行了模块化,代码结构更加清晰,易于修改和维护。并且通过分段提交处理结果,避免了由于单量过大导致整个批次回滚的情况,从而能够提高承保程序的效率。

附图说明

图1为一个实施例中承保多线程批处理方法的流程图;

图2为一个实施例中承保多线程批处理系统的结构框图;

图3为另一个实施例中承保多线程批处理系统的结构框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,在一个实施例中,提供了一种承保多线程批处理方法,该方法包括以下步骤:

步骤102,采用独立线程分配待处理任务,该待处理任务是对承保程序模块化产生的待处理任务,将待处理任务写入到临时任务表中。

本实施例中,采用独立线程分配待处理任务,避免了资源争用,避免了在处理数据时已被其它线程处理,可以解决多线程之间互锁的问题。本实施例中,建立了临时任务表,可将原始待处理任务写入到临时任务表中,从临时任务表中取出任务进行处理。

本实施例中,预先对承保程序进行了模块化处理。具体的,在一个实施例中,模块化处理的步骤包括:对承保程序本身进行模块化,将承保程序分为多个模块,包括准备数据模块、承保规则检测模块、投保数据向保单数据转换模块和确认承保动作模块,对于每个模块设置相应接口用于与其它模块进行通信。

本实施例中,准备数据模块用来准备数据,包括投保原始数据,以及需要用到的需要经过逻辑或者算法计算的数据,涉及到险种基础数据、投保时产生的数据、保费保额、投连万能账户分配比例保费数据等相关数据。承保规则检测模块用来实现承保规则检测,包括检测保费保额、问题件、是否已足额收取报废等。投保数据向保单数据转化模块用来实现投保数据向保单数据转换,计算保单生效日、缴至日等。确认承保动作模块用来确认承保动作,保存单据数据公用数据、万能投连特殊险种的相关数据等。

将承保程序进行模块化,每个模块之间通过接口进行通信,使得承保程序代码结构更加清晰,易于阅读和维护,便于测试,风险更加可控,能够增加代码的共用性,且方便加入特殊控制逻辑。对于模块的每个接口,需要遵循先准备数据,再处理数据,最后写数据和输出数据。通过这样的设置,能够减少重复调用,效率大大提升,能够避免重复i/o,易于维护。

步骤104,对于临时任务表中的任务,按照保单数量分配到多个线程进行处理,且对于每个线程,该线程处理完预设数量的保单则提交一次处理结果。

本实施例中,对于写入到临时任务表中的任务,根据保单数量分配到多个线程进行处理。具体的,可以根据保单的单号进行分配。比如当前保单数量有2000,则单号为1-100的保单由线程1处理,101-200的保单由线程2处理,依此类推。

进一步的,对于每个线程,该线程处理完预设数量的保单则提交一次处理结果。本实施例中,实现分段处理,即每个线程处理完一定数量则提交处理结果,比如,线程1,处理完10个保单则提交一次处理结果。

本实施例中,通过采用独立线程分配待处理任务,将待处理任务写入到临时任务表中,对于临时任务表中的任务,按照保单数量分配到多个线程进行处理,且对于每个线程,该线程处理完预设数量的保单则提交一次处理结果。由于承保程序进行了模块化,代码结构更加清晰,易于修改和维护。并且通过分段提交处理结果,避免了由于单量过大导致整个批次回滚的情况,从而能够提高承保程序的效率。

在一个实施例中,可获取预先设置的最小线程数和最大线程数,并根据最小线程数、最大线程数和当前保单数量分配线程数。本实施例中,可预先设置最小线程数和最大线程数,根据最小线程数、最大线程数和当前保单数量来分 配线程数。具体的,在为当前保单数量分配线程时,使用的线程数应在最大线程数和最小线程数之间。例如,设置最小线程数为5,最大线程数为10,当前保单数量为2000,则可使用5~10个线程来处理2000个保单,比如可使用8个线程来处理当前保单,则每个线程可处理250个保单。

在一个实施例中,承保多线程批处理方法还包括:在程序处理的最外层捕捉错误,对于出现错误的任务在临时任务表中对应增加标记;提取临时任务表中待标记的任务并重复执行预设次数。

本实施例中,由于查询出来的数据都保存到了临时任务表中,后续的处理都依赖于临时任务表中的数据,而不依赖于原始数据源,这样避免了数据源被修改而导致出错。进一步的,若在程序处理的最外层捕捉到了错误,则在临时任务表中增加处理标记,对于未执行的数据重新进行处理,且该处理可以玄幻多次执行。例如,转实收过程中循环5次进行重复处理。这样,对于出错的记性标记后重复处理多次,基本上可以规避了错误的情况。

在一个实施例中,承保多线程批处理方法还包括:检测保单处理是否出现异常,当某个保单处理出现异常时,进行逐单回滚。本实施例中,由于在批处理过程中进行了分段提交,出现异常时可以只对异常单进行回滚,而不影响原先已经处理成功的数据。例如,保证逐张保单转实收处理的完整性,这样每处理2000张可以进行一次分段提交。中间出现某张保单处理有异常,可以逐单回滚而不影响其它处理成功的保单。

如图2所示,在一个实施例中,还提供了一种承保多线程批处理系统,该系统包括:

任务分配模块202,用于采用独立线程分配待处理任务,该待处理任务是对 承保程序模块化产生的待处理任务,将待处理任务写入到临时任务表中。

本实施例中,采用独立线程分配待处理任务,避免了资源争用,避免了在处理数据时已被其它线程处理,可以解决多线程之间互锁的问题。本实施例中,建立了临时任务表,可将原始待处理任务写入到临时任务表中,从临时任务表中取出任务进行处理。

任务控制模块204,用于对于临时任务表中的任务,按照保单数量分配到多个线程进行处理,且对于每个线程,该线程处理完预设数量的保单则提交一次处理结果。

在一个实施例中,任务控制模块204用于设置最小线程数和最大线程数,并根据当前保单数量分配线程数。

如图3所示,在一个实施例中,承保多线程批处理系统还包括:

模块化配置模块206,用于对承保程序本身进行模块化,将承保程序分为多个模块,所述模块包括准备数据模块、承保规则检查模块、投保数据向保单数据转换模块和确认承保动作模块,对于每个模块设置相应接口用于与其它模块进行通信。

本实施例中,准备数据模块用来准备数据,包括投保原始数据,以及需要用到的需要经过逻辑或者算法计算的数据,涉及到险种基础数据、投保时产生的数据、保费保额、投连万能账户分配比例保费数据等相关数据。承保规则检测模块用来实现承保规则检测,包括检测保费保额、问题件、是否已足额收取报废等。投保数据向保单数据转化模块用来实现投保数据向保单数据转换,计算保单生效日、缴至日等。确认承保动作模块用来确认承保动作,保存单据数据公用数据、万能投连特殊险种的相关数据等。

本实施例中,将承保程序进行模块化,每个模块之间通过接口进行通信, 使得承保程序代码结构更加清晰,易于阅读和维护,便于测试,风险更加可控,能够增加代码的共用性,且方便加入特殊控制逻辑。对于模块的每个接口,需要遵循先准备数据,再处理数据,最后写数据和输出数据。通过这样的设置,能够减少重复调用,效率大大提升,能够避免重复i/o,易于维护。

在一个实施例中,如图3所示,承保多线程批处理系统还包括:

错误处理模块208,用于在程序处理的最外层捕捉错误,对于出现错误的任务在所述临时任务表中对应增加标记;提取所述临时任务表中带标记的任务并重复执行预设次数。

在一个实施例中,如图3所示,承保多线程批处理系统还包括:

异常处理模块210,用于检测保单处理是否出现异常,当某个保单处理出现异常时,进行逐单回滚。

可以理解的是,在其它实施例中,承保多线程批处理系统可以包括上述模块化配置模块206、错误处理模块208和异常处理模块210中的至少一个。

本实施例中,通过采用独立线程分配待处理任务,将待处理任务写入到临时任务表中,对于临时任务表中的任务,按照保单数量分配到多个线程进行处理,且对于每个线程,该线程处理完预设数量的保单则提交一次处理结果。由于承保程序进行了模块化,代码结构更加清晰,易于修改和维护。并且通过分段提交处理结果,避免了由于单量过大导致整个批次回滚的情况,从而能够提高承保程序的效率。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1