【IT168 技术文章】
该样本程序在充分利用已有开源框架的基础上,开发了独立的SinoSoftFrame架构,基于J2EE规范实现,主要分为三层: Web层、业务层、持久层,很好地适应了财产保险行业的业务特点。
财产保险行业业务具有以下特点:
1.保险险类、险种、产品众多
财产保险公司往往有包括企财险类、家财险类、责任险类、工程险类、车险类、船舶险类和货运险等几十个险类,上百个甚至几百个业务险种。这些险类险种既有共性,又有特性,如何将这些共性和特性有机地组织在一起是我们必须要有效解决的问题。
2.全流程业务需要
财产保险业务往往包含了投保、承保、批改、理赔、收付、财务等多个业务处理环节,同时还要通过挂接核保核赔管理和单证管理功能来降低企业的经营风险。提供多种统计分析与查询接口实现业务数据的统计分析,为企业经营决策提供及时、有效的支持和帮助。为统一架构与开发规范,降低保险公司的开发和维护成本,设计的技术架构必须能满足众多子系统的业务需求与技术要求。
3.新产品上线要求时间短
保险公司为了抢占市场,争夺客户,从研发推出新产品到产品上线往往只有一周甚至更短的时间,这对我们的系统架构提出了极高的要求。
4.行业高速发展,业务多变
保险行业是个高速发展的行业,业务多变,这是当前保险行业的特性决定的,我们只能去适应这些变化。所以,要求我们的架构必须具备很强的应变能力。
5.多语言支持
随着保险业的逐渐对外放开,越来越多的外资保险公司成为我们的客户。多语言支持成为这些客户对我们系统的基本要求之一。
当然财产保险行业还有其他一些特点,如全国大集中数据管理方式、总公司-分公司分支机构的管理模式、无纸化单证管理等等。作为财产保险公司的行业解决方案,系统必须能够适应以上这些行业特点,满足财产保险公司向用户提供新业务、新服务,适应市场竞争的需要; 满足各地区业务的变化性,适应地方性险种管理的需要。
从保险的定义出发,保险业务领域可分为投承保、批改、理赔等多个业务环节,针对样本程序,本文仅介绍承保业务。承保是保险业务的开始,承保信息关系到保单能否生成、与投保人能否签订合同、能否出具保单等。本样板程序以保险领域中“投保处理”环节作为参照实现,所以我们此处仅针对投保单相关的数据模型进行重点说明。
数据模型
“投保处理”环节涉及到了用户投保录入时的众多信息元素,包含了基本信息、标的信息、险种费用信息、条款信息、共保信息等五大类。投保录入主要涉及到四个主要的实体对象: 投保单主表、投保单险种表、标的主表、标的物险别责任表。除了这四个主要实体对象之间存在着一对多的对象关系外,每个实体对象还关联着众多的从属对象。
投保单主表是整张投保单的概括信息,它的相关从属表有投保兑换率表、投保单条款表、保险关系人表、收费计划表等; 投保单险种相关表描述的投保单项下各险种的相关信息,当投保单中存在多险种时,险种表描述多条险种信息,它的相关从属表有投保单保额保费表、险种条款表、险种费用表等; 投保单中的标的信息放在标的相关表中进行分类描述,以区分不同险种下的不同标的,它的相关从属表根据险类的不同有财产险标的信息、车险标的信息、动态标的信息等等; 标的险别责任相关表是对投保单中标的最明细的描述。它的相关从属表有标的物责任条款表、险别责任附加费表、险别责任免赔额表、险别责任赔偿限额表等。
总体架构
本着“不重复造车轮但也绝不依赖于任何第三方框架”的设计思想,我们独立设计开发了自己的基础框架体系SinoSoftFrame,在此SinoSoftFrame框架体系上,在部分层面引入一些优秀的开源产品,集成到我们的框架体系SinoSoftFrame中。这样,当已集成的产品在技术和效率上无法满足我们的业务需要时或在某个层面有更好、更快、更有效的新产品时,我们可以很容易地从SinoSoftFrame中完成新产品的升级替换,而对已开发完成的业务实现代码不产生任何影响或将影响降到最低。SinoSoftFrame架构基于J2EE规范实现,主要分为三层: Web层、业务层、持久层。
Web层采用MVC模式,主要任务是接收用户从页面提交的请求和最终返回处理结果。对于处理用户请求来讲,Web层的任务是读取用户提交的表单数据,把HttpServletRequest中的表单数据和请求参数封装到数据传输对象DTO中供业务层处理; 对于返回处理结果来讲,Web层的任务是把业务层处理完毕后返回的数据传输对象DTO返回给JSP页面展现给客户。
业务层主要完成业务逻辑的实现。如业务数据校验、业务逻辑处理、事务管理、记录业务处理日志、抛出业务处理异常等任务。