烟草资金监管平台架构设计说明书_第1页
烟草资金监管平台架构设计说明书_第2页
烟草资金监管平台架构设计说明书_第3页
烟草资金监管平台架构设计说明书_第4页
烟草资金监管平台架构设计说明书_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

厦门东南融通系统工程有限公司厦门东南融通系统工程有限公司烟草资金监管平台架构设计说明书厦门东南融通系统工程有限公司版权所有厦门东南融通系统工程有限公司版权所有厦门东南融通系统工程有限公司版权所有©东南融通。本文献未经东南融通的书面允许不得复制或分发。本文献中的任何部分都不得用于东南融通意愿以外的其他目的目录1 简介 51.1 目的 51.2 范围 51.3 术语 61.4 参考文档 61.5 文档组织方式 62 系统总体架构 82.1 产品特点 82.2 设计指导思想 82.3 系统逻辑架构 102.4 系统应用架构 112.5 系统物理架构 132.6 与业务系统的关系 142.7 与银行系统的关系 142.7.1 连接示意图 142.7.2 接口关系图 153 应用框架设计 173.1 技术框架 173.2 界面设计 173.2.1 登陆参考 183.2.2 首页参考 193.2.3 新增页面 193.2.4 修改页面 193.2.5 审批页参考 203.2.6 查询页参考 213.3 类设计 213.4 模块划分 223.5 功能菜单 234 基础功能设计 264.1 组织模型 264.2 权限控制 274.2.1 菜单权限控制 274.2.2 操作权限控制 284.2.3 数据权限控制 294.3 流程控制 294.3.1 流程功能概述 304.3.2 工作流的使用 314.3.3 工作流的集成 314.3.4 系统流程设计 314.3.5 流程解决框架 324.3.6 流程基本操作 334.4 规则解决 384.4.1 开发过程 384.4.2 规则定义 394.4.3 规则执行 394.5 消息服务 394.5.1 功能描述 394.5.2 邮件发送 404.5.3 短信发送 404.5.4 发送维护 424.5.5 接口类设计 424.6 通讯网关 444.6.1 连接方式 444.6.2 功能描述 444.6.3 技术框架 464.6.4 接口类设计 464.7 任务调度 484.7.1 功能描述 484.7.2 解决方案 484.7.3 应用示例 494.7.4 配置说明 504.7.5 任务清单 514.8 报表开发 514.8.1 报表设计 514.8.2 报表种类 524.8.3 报表清单 534.8.4 报表打印 535 数据同步设计 546 安全性设计 566.1 方案概述 566.2 权限控制 566.3 CA认证 566.4 登陆日记 566.5 操作痕迹 566.6 审批痕迹 586.7 Server端校验 587 性能设计 608 客户化设计 618.1 改变监管规则 618.2 改变业务流程 618.3 外围系统连接定制 618.4 改变数据库类型 618.5 改变组织数据来源 619 开发规范 639.1 Java编程规范 639.2 数据库设计规范 649.3 文献命名规范 659.4 页面样式规范 669.5 页面开发规范 669.6 后台程序规范 689.7 文档规范 709.8 序列号的获取 719.9 异常解决 719.9.1 JSP页面异常 719.9.2 Action异常 719.9.3 DAO和Service层的异常 729.9.4 异常编程指导 729.10 错误消息 729.11 事务解决 739.12 目录结构 739.13 配置文献 749.14 开发指导 759.15 第三方软件 7510 环境搭建 7810.1 开发环境 7810.2 调试环境 7810.3 开发基础数据环境 7910.4 外部系统模拟环境 79附录1:开发软件和工具 81附录2:公共资源管理 82附录3:文档变更记录 83简介本文档为烟草资金监管平台的软件架构设计说明书。本文档与“烟草资金监管基础平台数据库设计说明书.doc”和“烟草资金监管系统数据库设计说明书.doc”一起构成本系统的概要设计文档体系。目的本文档为烟草资金监管平台的软件架构设计提供具体的说明,涉及整个系统的架构、基础平台的技术实现、客户化方式和指导应用开发的相关规范等。本架构书为编制如下文档提供基本依据:程序设计书软件开发计划软件测试计划软件用户手册系统安装手册本架构书与本系统的“程序设计书”一起,为编写程序、单元测试、集成测试(α测试)提供基本依据;本架构书为其它有关文献提供基本依据;本架构书为软件质量保证人员提供工作依据;本架构书将作为软件β测试和系统验收的准则;本架构书与本系统的“程序设计书”一起,将作为编码的基准文献。范围本设计书从技术角度定义了本系统的架构,内容涵盖了本系统的设计思想、软件体系结构、软件功能模块分解及边界设计、应用框架设计、与外围系统地连接解决、开发规范等。对本系统使用的重要技术,如PowerWeb、工作流、规则技术、Jasper等)也做了简要介绍。本系统中硬件设备和网络设备的设计以及软件具体设计部分不在本规格之内。术语PowerWeb:是东南融通开发的一个Web界面开发平台。intelliRule:是东南融通开发的规则系统,可实现规则的编辑、编译和执行。JasperReports:开放源码的报表生成工具,用户需要按照它制定的规则编写报表格式的XML模板文献,然后指定数据源得到导出的报表文献。iReport:一个帮助那些使用JasperReportslibrary生成报表的用户以可视化方式设计报表的工具。Hibernate:HibernateO-Rmappingtools,由.org提供,用于数据层的开发。Spring:Spring-Java/J2EEApplicationFramework,由.org提供,用于业务逻辑层的开发。工作流引擎:解释业务流程的定义,与工作流的参与者(涉及人或软件)互相作用,并根据需要调用其它的IT系统、应用、或者数据。规则引擎:对业务规则进行解释。是一种高性能的专用解释(推理)程序。把当前提交给引擎的数据对象与加载在引擎中的业务规则进行匹配,符合当前数据状态下的业务规则会被激活,根据业务规则中声明的执行逻辑,触发相应的操作。tfm:tobaccofundmonitor烟草资金管理系统参考文档烟草资金监管平台系统需求规格书.docCMBP演示系统,(admin/admin@cmbp)文档组织方式第二章关注的是整个系统的内外部环境以及各相关要素之间的关系。第三章关注的是整个系统提供的具体功能、展现形式和功能实现的技术框架。第四章关注的是基础平台部分的功能实现思想以及实现的技术框架。第五章关注的是本系统的数据和外围系统的数据库的数据如何同步和更新。第六章和第七章关注的是两个重要的非功能性需求如何实现,即安全性和性能。第八章是对需要客户化的几个问题的方案概述。第九章是指导开发人员开发,保证设计的一致性和代码具有良好的可读性,保证开发能规范有序地进行的一些指导和规定。第十章是指导开发人员搭建开发和调试环境,也可了解未来该系统如何部署。系统总体架构本章将从技术角度阐述本系统的定位、设计思想、逻辑架构、应用架构、物理架构以及需要交互的外围系统。本章是后续章节的编制依据。产品特点采用了先进的J2EE技术架构,保证系统的可扩展性、安全性、可靠性。安全、高效的电子支付平台,全面掌握行业资金流动情况。全新的多方位的监督理念,涉及设立行业公司帐户库、流程控制点、流水帐管理、多渠道的帐目对照、实时报警。三级体系,两级监管,组成一个贯穿事前、事中、事后的全方位资金监管体系。界面和谐,B/S结构的界面,C/S的应用效果,新鲜直观,操作方便。统一的接口规范,灵活的的对外接口和报文配置,方便对接不同的业务系统和银行系统。实时警示,报警方式灵活选择,报警内容容易定制。功能强大的工作流管理系统和规则系统,业务流程和监控规则可以自由调整,做到随需应变。丰富的图文并茂的监控方式,涉及数据表格、柱状图、散列图、仪表图等,一目了然掌控全局。构件化功能组装,强大、简朴的业务延伸能力,方便新业务的拓展。设计指导思想J2EE平台,B/S结构,MVC设计模式。J2EE平台实现系统的平台无关性(涉及操作系统无关性和应用服务器无关性)。B/S架构的优点是维护方便,可以减少成本。采用MVC设计模式,使系统具有更大的灵活性和扩展性。充足使用已有的软件资产,提高复用限度,减少开发成本。在本系统中,使用了公司的研发产品intelliFlow工作流管理系统和intelliRule规则系统,参考了公司其它项目中的流程解决框架和基于PowerWeb的应用框架,修改扩展了消息服务构件、通讯网关构件和组织模型维护。优先使用构件的组合,以构件的思想搭建一个松耦合的系统。在本系统中,最基础的功能在bas模块中,这是所有的基础,在此之上是消息服务构件、通讯网关构件和流程解决框架,这些框架、构件、工具库和intelliFlow工作流管理系统、intelliRule规则系统一起构成系统的基础平台;基于该平台开发3个应用子系统的功能。面向接口编程,实现可以替换,充足发挥面向对象编程的优势。面向接口编程的好处是实现方式容易配置,譬如本系统将来要外接的系统在5个以上,十分复杂,特别是组织数据也也许取自其它系统,将各功能以接口形式提供,就可以在外界有变化时,只需要单独实现,而不会涉及到已有代码的修改,大大减少测试的工作量。配置灵活的思想,使有助于产品推广。保证流程、报警规则、消息模板、消息发送方式、报文收发实现类能方便配置。分层分块思想,方便开发和维护。整个系统分为基础平台和应用功能,基础平台提供应用框架和核心技术,应用功能重要是在此基础上实现业务功能,以良好的形式展现。应用框架分为流程框架和非流程解决框架,都由表现层、业务逻辑层和持久化层组成。对于构件,分为核心功能和扩展功能,扩展功能在实行中客户化;公用组件包里面包含了系统使用的各种公共功能,相对比较独立。通过具体的规范简化应用功能的后继开发,保证设计思想和编码风格的一致性。产品最大的问题是由于实行应用的点比较多,各自情况不同样,导致修改或客户化的也许性很高,同时产品生命周期长,参与的开发人员会相对比较多,为应对这一特点,本系统通过具体的规范降来低学习成本,提高易维护限度。系统逻辑架构本系统安装在各省公司和国家局,各省与国家局之间的系统完全独立,但省与国家局数据库之间有数据同步、上载和下传活动发生,省之间的数据库完全独立。本系统的角色有监管人员、财务人员、业务人员和系统管理员,不同的角色相应系统不同的访问权限,一个人只有一个角色。其中只有省公司有系统管理员,即系统是统一维护。本系统的基础数据一部分来于各个业务系统(如协议信息),一部分在省级系统中维护(如人员信息),一部分由国家局系统维护后下载到省级系统使用(如银行信息)。本系统需要实时或定期地从业务系统中获取业务数据,前者如业务协议信息,后者如分公司的销售数据。与银行系统的连接(如查询余额)通过国家局接口连接总行进行。本系统的应用层将在基于J2EE技术的东南融通基础平台之上进行开发。并重点使用该平台的应用开发框架、页面框架集及控件集、流程引擎、规则引擎和构件库。关于这一部分的具体介绍见第4章。本系统的应用模块涉及帐户管理、运营监管、综合查询、烟叶收购、两烟购销等。关于各功能的具体介绍见3.5节。系统应用架构系统应用架构图描述系统的组成部分和各个部分的依赖关系。系统使用Java语言开发,B/S结构,支持的浏览器为微软IE5.0以上PowerWeb开发平台辅助前台展现层的实现规则引擎负责依照监管规则对业务数据进行解决工作流引擎负责对业务流程进行解决Jasper负责报表解决,同时使用JFreeChar实现一些特殊图形的显示应用逻辑层使用Hibernate/iBatis负责对数据进行存取,使用Spring负责系统各个部件的组装以及一些辅助功能系统用到的数据库为Oracle或DB2,应用服务器为IBM的WebsphereApplicationServer,这是由解决方案决定的。各技术的选择理由如下:系统物理架构系统部署图描述系统运营时所依赖的硬件环境,该环境由节点和节点之间的依赖关系组成。系统为三级体系、两级监管,三级体系指国家局、省公司、分公司,两级监管指在国家局和省局都单独安装本系统,对业务进行监督管理,国家局和省局之间通过数据的上传和下载保证信息的同步。逻辑上,系统的服务器涉及Web服务器、应用服务器和数据库服务器。Web服务器重要负责静态页面的显示,应用服务器重要是提供中间层组件、流程引擎和规则引擎的运营环境。当数据较少时,这些服务器可安装在同一台机器上;当数据量增长时,这些服务器可按需要分别安装在不同的机器上,Web服务器、应用服务器还可由多台机器组成集群(Cluster),实现负载均衡机制。原则上数据库服务器使用单独的机器。系统的运营环境如下:客户机/服务器软件配置备注客户端Windows2023ProfessionalIE5.5以上应用服务器WAS5.1.1数据库服务器Oracle9i与业务系统的关系本系统与各业务系统之间的关系如下图:本系统需要从各业务系统获取业务数据,并保存在本系统中,以查询和记录。通过通讯网关实现外部系统数据的获取,即应用模块提出请求指令,通讯网关连接外部系统,发送报文并获取报文,应用模块获取报文后进行其后的数据解决,对外的报文格式为XML。数据是实时还是定期从各系统获取,以及获取后的解决,待需求细化后在具体设计中体现。与银行系统的关系连接示意图本项目的银行连接属于“银企直联”范畴,为实现与银行进行直联,必须签订《网上“公司银行”银企直联服务协议》,基于该协议,在本系统的应用服务器上安装银企直联客户端,本系统根据银行提供的接口说明组织XML报文,直接调用银行提供的API,实现与银行的金融数据互换,安全问题由银行负责。连接示意图如下:接口关系图本系统需要与银行系统进行连接的业务如下:向银行系统收发报文的方式与业务系统类似,不同之处在于和业务系统打交道时需要本系统连接业务系统,而与银行系统打交道时,连接银行系统是由其客户端解决,本系统只是组织XML格式的报文并调用客户端的API。应用框架设计本章将阐述本系统的应用框架、系统的功能菜单、数据流转等。本章为Web层、业务逻辑层和数据访问层的设计及实现提供依据。技术框架客户浏览器发出HTTP请求,通过控制器转发调用相应的业务解决模块来业务逻辑,解决的结果通过控制器相应的视图格式化,返回客户端浏览器呈现给使用者。在页面的开发上,多采用JSPTAG,实现页面元素的重用,所有相同元素统一控制以增强应用的可维护性。业务层的设计遵循组件化设计模式。业务逻辑被封装在业务逻辑组件之中,控制器Action通过调用业务逻辑组件的接口来实现业务逻辑解决。当需要对数据进行解决时,业务逻辑组件通过调用数据访问组件的方法来完毕对持久数据的操作。此外,在业务逻辑组件之间的通讯也是通过调用接口的方式来实现,以保证组件的重用性和扩展性。数据访问层遵循DAO设计模式,通过Hibernate和iBatis来访问数据库。使用Hibernate重要做单表的操作,使用iBatis重要用来实现复杂的查询操作,以优化性能。界面设计本系统的界面风格将参考“烟草资金监管演示系统”和PowerWeb的页面开发控件效果,由专业的美工人员设计。如下是设计的重要想法,本部分在设计完毕后将被替换。登陆参考首页参考整个页面分为上,左,右,下四块,上为常用菜单图标等,下为脚注,右边开发人员可自由分割,左为树形菜单上面的常用菜单和左边的功能菜单都是动态获取的需要做分公司、省公司和国家局的首页3套,具体待需求明确后定。打开一个菜单页面时,新的页面tab页效果显示新增页面略。修改页面略。审批页参考每个子系统一个审批任务列表每条任务选中进入后为相应的业务信息和审批信息查询页参考类设计业务功能实现的类关系如下图:LTActionServlet实现转发功能,根据struts的配置文献决定流程和页面的流转,涉及常用数据格式的转换。Action中调用各业务逻辑解决,业务逻辑的解决实现依照Spring的框架在XServiceImpl中解决,每个解决类都相应一个接口类。数据层的操作在使用Hibernate时在XDaoImpl中实现,使用iBatis时,在XSqlDaoImpl中实现,每个解决类都相应一个接口类。模块划分分类模块代码模块名称基础平台bas基础功能、非流程框架和工具类库org使用工作流组织模型的组织维护iwf流程解决框架mns消息服务cgs通讯网关应用功能ssm系统管理和基础信息account账号解决payroll网上支付monitor资金监管bulletin公告管理基础平台各部分的关系如下图:功能菜单根据每个人的权限动态生成功能菜单,采用树状方式显示。如下是系统的所有功能:一级菜单二级菜单三级菜单系统管理系统设立权限管理告知设立基础信息行政区划组织管理卷烟管理账户管理子系统账户设立合作银行登记合作银行选择账户种类定义账户查询账户信息查询账户余额查询账户审批查询账户种类查询账户申办账户开设申请银行开户办理账户信息变更账户销户办理账户审批账户审批任务状态管理账户启用账户停用账户冻结账户解冻网上支付子系统资金拨付拨付申请拨付审批资金拨付业务支付烟叶收购支付烟叶采购支付卷烟采购支付辅料采购支付固定资产采购支付费用支付人工费用支付办公费用支付业务费用支付物流费用支付基建支付捐赠支付专卖经费支付其他费用支付对账管理对账单查询下载批量下载银企勾兑资金监管子系统业务监管交易列表两烟购销确认烟叶收购监管烟叶购销监管卷烟购销监管辅料采购监管卷烟销售监管拨付监管拨付列表资金拨付监管费用监管支付列表费用支付监管固定资产采购监管人工费用支付监管办公费用支付监管业务费用支付监管物流费用支付监管基建支付监管捐赠支付监管专卖经费支付监管其他费用支付监管贷款担保监管警示记录公告管理公告申请公告审批公告管理综合查询账户交易明细查询基础功能设计组织模型本系统使用工作流管理系统的组织模型,模型如下图:组织单元(Unit):机构、部门、工作组的统称。组织单元类型:可以是机构,部门或工作组角色(Role):指标准岗位,如监管,财务职位(Position):也称管理职位,指一个组织中的一个标准岗位(不是一个人)。职位可以和人关联。报告关系:指一个人(或职位)向另一个人(或职位)报告。显示报告关系:直接设立的报告关系。隐式报告关系:由上下级职位关系决定的报告关系。群组:人员的集合,这些人可来于不同的组织单元(如机构)代理:指一个人(或职位)代理另一个人(或职位)的职权本系统目前只使用如下概念:组织单元、角色、职位,不使用群组、代理、显示报告关系,未来根据需要可以扩展。本系统将在工作流组织模型基础上做扩展,即增长部分表的字段信息。该模型中的机构相应本系统中的省公司或国家局,子机构相应分公司和工业公司,部门相应这些机构下的部门。组织树的表现形式如下:XX省公司/国家局职位 人员部门1 职位 人员 部门2 XX分公司部门1部门2公司 部门1 部门2权限控制本系统的权限控制涉及动态菜单,操作功能和数据权限三类的控制。菜单权限控制系统根据登陆人所拥有的菜单权限动态生成能访问的菜单。菜单权限的维护机制如下:一个用户相应一个角色。角色和权限关联,角色相应的权限可增长,但不能取消。用户相应某个角色时,即默认拥有了该角色相应的所有权限。每个用户的权限是角色相应权限的子集,即可取消部分权限,但不能增长。角色增长权限A时,拥有该角色的人都增长权限A。用户登陆时,根据登陆人的ID号,获得该人能访问的所有菜单,保存在session中,并形成菜单树。数据关系参见“烟草资金监管基础平台数据库设计说明书”提交请求时,server端校验是否能操作该菜单。系统的所有功能菜单作为初始化数据提供。操作权限控制一个菜单相应的web页面上有多个功能,如增长、删除、修改、查询、上载,这称为功能权限,又称操作权限。功能权限的维护和菜单权限同时维护,即在给角色或人设立菜单权限时,同时指定在相应的功能;一个菜单项下相应一个或多个功能权限。用户登录时,根据登陆人的ID号,获得该人能访问的所有功能,保存在session中。数据关系参见“烟草资金监管基础平台数据库设计说明书”每个功能按钮在页面上的显示使用“按钮控件”,该控件能根据功能ID决定按钮是否可用,假如不可用,disable按钮。提交请求时,server端校验是否能操作该功能。系统的所有功能权限作为初始化数据提供。数据权限控制对数据权限控制涉及以下两种要实现的功能:在账号解决审批查询时,国家局领导可查询所有省,省级领导可查询本省的所有审批,市级单位只能查询本地区的,普通员工只能查询个人的。在业务解决上,要能以组织机构+分管范围定义(如某领导分管厦门,漳州,泉州的卷烟销售)的方式控制数据。数据权限的实现方案为:对业务需要做数据权限的部分,需要维护人员的分管范围,分管范围的粒度为分公司/工业公司。审批查询的数据权限固化在代码内,即省级领导可查询所有的分公司/工业公司,分公司只能查自己地区内所有的工业公司,工业公司只能查自己的,其别人只能查自己。所有需要做数据权限功能的表的每条记录绑定操作员工号、公司/公司代码、部门号(非必须)。所有需要数据权限控制的查询功能使用iBatis实现,在业务查询信息外同时传入操作人员ID号和可看的公司/公司列表;该列表在登陆时获得,并保存在session中;假如没有公司/公司列表,但有操作人员号表达查询操作人员自己提交的。流程控制使用intelliFlow工作流和工作流应用框架实现对流程的控制。工作流应用框架的数据库设计参见“烟草资金监管基础平台数据库设计说明书”。本系统提供应最终用户的系统中只涉及工作流引擎,建模工具只提供应实行推广人员使用,本系统不使用流程监控工具。工作流应用框架负责衔接应用业务和流程管理,作为一个半正式产品使用,其后台数据库是固定的,但框架由于必然涉及到应用的使用,在不同的系统中会有调整。本系统中有调整,重要是:将本来的流程发起后输入表单改为表单输入完毕提交时发起流程。将一次性查询所有任务改为按业务分类查询任务,如账号审批任务涉及申请、开户、销户等流程任务的审批。需要增长根据各种业务属性查找流程,由于有多个审批查询功能,业务属性在不同的业务审批查询中不同样。由于工作流升级,个别API没有兼容带来的修改。流程功能概述所有流程的业务表现都是A->B->C这种线型依次审批的形式,每个环节一个人审批;所有审批关系在系统上线前就决定,不存在随机指定。审批的操作涉及批准,不批准,驳回,批准时运营到下一个结点,不批准时流程结束,驳回有两种情况,驳回到流程发起人,也有驳回到上一审批人。流程发起人在流程被驳回后可以取消流程,即流程有3种方式结束:批准、不批准、发起人取消。需要提供超时功能,超时指任务的超时,不需要流程的超时支持;超时信息要在任务提醒中显示。一个省的所有地区在某个业务上的解决流程是所有相同的,任务分派的方式也所有相同的,即不存在一个业务的解决,在某个地区也许多一个环节或少一个环节之类的情况。流程发生在账号审批、拨付审批、公告管理和警示解决业务中,业务流程总数在10个左右。流程的任务列表按子系统分类显示,即整个系统有多个任务列表,同时首页上有简要的任务提醒摘要信息,并能导航到不同的任务列表;任务列表上的业务信息根据业务不同显示的也不同。在web上提供按业务和流程信息查询流程的功能,不同子系统的查询字段不同样;查询时,有数据权限的控制,如省的领导可查看所有市的信息,市的领导只能看本地区的,普通人员只能查自己的。流程不会出现跨系统的审批,即各省和国家局的审批活动是独立的。在开发过程中,所有流程的任务按角色进行分派,以此进行调试和演示;在系统上线时,使用流程建模工具配置任务分派方式。所有流程的定义和任务分派方式在系统上线前都需要可自由变动。工作流的使用本系统按intelliFlow通常的开发模式使用,即一方面使用工作流建模工具建立流程和进行任务分派,流程框架封装工作流的调用并将流程与业务关联起来,开发人员在流程开发时不需要接触到对工作流的直接调用。在系统上线前,需要使用工作流建模工具修改分派策略,使与实际的组织数据匹配,然后再上传部署流程定义。工作流的集成工作流需要以ear包的形式运营在应用服务器环境下,本系统和工作流集成的方式是在intelliFlow发布的ear包中添加本系统的webapplication

(war包形式),删除发布包中不需要的如下文献:demo.war,demo.jar,intelliFlow-mns.jar,org.war,同时修改META-INF\application.xml,在其中增长本应用webapplication的部署描述。系统流程设计流程分包管理,一级包名为他tfm,二级包位account(账号审批)、payroll(资金拨付)、警示解决(notify)和公告管理(bulletin)。在开发过程中,所有流程按单位号+角色进行分派,其中单位号为流程变量。由于本系统流程不多,为显示内容丰富和直观,流程设计不做归纳整理,即需求有几个流程,流程设计时就定义几个。在系统上线前,假如组织数据和分派方式不同样,需要通过流程建模工具配置分派策略;假如流程增长新的结点,需要做一定的页面开发;假如不使用本系统提供的组织模型表,组织数据的获取需要重新开发;假如需要其它的流程功能,也许需要一定的开发(如修改页面)。系统涉及如下流程(注:没有标明省的任务执行人都指是被监管单位的人)(1).开设申请(包ID:tfm.accouont,模板ID:openaccount)(2).开户办理(包ID:tfm.accouont,模板ID:accountconfirm)(3).销户、账户信息变更(包ID:tfm.accouont,模板ID:modifyaccount)(4).账户状态修改(包ID:tfm.accouont,模板ID:modifystatus)(5).此外2个子系统的流程待需求细化和分析后补充。流程解决框架流程解决框架的业务组件相应的接口为com.longtop.iwf.WfService,采用Spring框架。本系统中的动作都是人工动作,流程中的人工动作分为数据录入和审批环节。业务数据的解决和流程数据的解决分开进行,业务数据由业务逻辑实现解决,流程数据由工作流引擎解决,所以这些操作包在一个Spring的service中,通过配置JTA事务支持,实现业务操作和工作流使用EJB实现的操作的事务一致性。流程解决框架目前提供的重要服务有(具体参见Javadoc.):流程方面,发起和取消流程。流程变量,取得和设立流程变量。任务列表,取得任务列表。任务方面,接受任务(start,continue,resume)提交任务(commit),挂起任务(suspend)。组织方面,提供流程框架用到的与组织相关的一些方法,这里的组织指使用工作流组织模型和表结构。重要的类有:com.longtop.iwf.WfClient封装intelliFlow工作流的APIcom.longtop.iwf.WfServiceImpl流程解决,涉及流程与业务的关联建立,调用WfClient的流程相关功能。com.longtop.iwf.IwfExtendServiceImpl实现辅助功能,如根据用户号取得用户在职位、角色、部门、机构的信息。流程基本操作一个业务一般由经办申请、一级或多级主管审批组成。一个标准业务操作流程如下图:任务操作说明:申报:任务提交,流程进入下一环节。取消:取消申请,流程结束。批准:表达审批通过,可以进入流程的下一个环节。不批准:申请被取消,流程结束。驳回:表达审批没有通过,要做适当修改,任务驳回至上一个环节或申请人,根据业务的不同解决不同。(1).发起流程业务数据输完后,点“提交”,提交业务数据,同时发起流程并记录流程和业务的关联关系。流程发起为首结点执行。基础的Actioncom.longtop.iwf.web.BaseProcessAction实现发起流程并记录流程和业务的关联关系,具体的流程解决,需要写一个子类action,实现业务数据的解决,一类业务相应一个子action。如:BasAction为系统最底层的action,BaseProcessAction解决和流程有关的公共内容,AccountProcessAction实现如下的API,调用账户开设申请的业务逻辑解决方法,在该方法内提交解决业务数据和调用工作流API解决流程数据。时序图如下:其中AccountAppProcessAction和IOpenApplyService和需要发起流程的具体业务相应,WfService为流程框架解决类,WfClient封装对工作流的调用,WorklistLocal为工作流对外的接口。根据工作流应用框架规定,发起流程前需要配置好表IWF_BIZ_CATEGORY和IWF_PROCESS_CONFIG。需要发起流程的页面要hidden两个字段的值,即bizCode和bizName,与IWF_BIZ_CATEGORY表中的配置相应。由于工作流是使用EJB实现,为保证实现事务的控制,应用的service使用JTA事务,并且调用的其它service不要有事务控制,直接使用xxxTarget。<beanid="openApplyServiceTarget"class="com.longtop.tfm.account.OpenApplyServiceImpl"> <propertyname="basService"> <refbean="basServiceTarget"/> </property> <propertyname="comService"> <refbean="comServiceTarget"/> </property> <propertyname="wfService"> <refbean="wfService"/> </property></bean><beanid="openApplyService"class="erceptor.TransactionProxyFactoryBean"> <propertyname="transactionManager"> <refbean="jtaTransactionManager"/> </property> <propertyname="target"> <reflocal="openApplyServiceTarget"/> </property> <propertyname="transactionAttributes"><props><propkey="add*">PROPAGATION_REQUIRED</prop><propkey="update*">PROPAGATION_REQUIRED</prop><propkey="delete*">PROPAGATION_REQUIRED</prop><propkey="*">PROPAGATION_REQUIRED,readOnly</prop></props> </property></bean>(2).取得任务列表由于本系统有比较多的根据业务信息查询审批任务,不同的子系统业务信息数量和内容不完全一致,因此,有关任务的查询都不直接调用工作流的API实现,而是关联业务表、流程业务关联表、流程表、任务表直接查询,查询结果分页显示,分页功能使用PowerWeb的表格控件实现。数据库的查询使用iBatis任务列表的获取如下,在Action内将查询条件拼成Hashmap后,调用查询实现类,查询获得任务列表信息,其中包含业务信息和流程信息,再分页显示。(3).选中任务选中任务指选择任务列表中的某一条任务,进行审批。选中任务的重要操作是要获得相应的业务信息和流程信息,显示在审批页面上。实现机制为:当前任务选中后要进入的JSP文献和获得页面数据的handler配置在数据库中,即表IWF_NODE_CONFIG中;选择一条任务后,通过调用工作流的API获得流程信息,根据流程信息的MPID在表IWF_NODE_CONFIG中找到相应的配置信息,执行handler获得业务数据,最后forward到配置的JSP页面。基础的Actioncom.longtop.iwf.web.BaseAcceptTaskAction继承BasAction,实现任务选中后的操作,涉及找到和当前结点操作相应的JSP文献和业务解决handler。本系统中,不需要使用子类action。时序图如下:业务解决XxxHandler继承com.longtop.iwf.handler.BaseTaskHandler实现当前任务相关业务数据的获得。其实现实通过相应业务表中主键的bizId获得业务信息。Handler的解决框架如下:publicMapstartTask(IwfTaskVOiwfTaskVO,UserProfileVOupvo)throwsGenericException{ StringbizId=iwfTaskVO.getBizId());//根据bizId查找业务数据//实例化一个JSP页面上要使用的form,该form继承于BaseTaskFormthis.setKeyValues(iwfTaskVO,[form实例]);Mapresult=UtilMap.makeMap("[form实例名]",form实例);returnresult;}(4).任务审批任务审批有批准、不批准和驳回三种结果。任务审批通过调用com.longtop.iwf.web.BaseTaskAction实现。本系统不需要使用子action。审批意见的解决:在提交任务commitTask时,审批意见直接存入intelliFlowTask表的Memo字段中,方法为:建立一个字符串类型的临时变量,变量名为com.cit.wf.util.Constant.SYSVAR_TASKMEMO,审批意见作为该变量的值,将该变量放入提交的流程变量集中即可,流程引擎会自动取得该变量的值存入Task表的Memo字段中。(5).流程查询流程查询在业务上称审批查询,在web上表现为多个菜单,一个菜单相应业务的一个分类。输入信息涉及:流程信息、业务信息;输出信息涉及:流程信息、业务信息、当前任务信息(如当前环节、当前解决人),不同的业务分类相应的业务信息不同样;流程查询还需要考虑数据权限控制,领导能看全省的,市的领导只能看个人的,普通人只能看自己的。实现方案如下:同“取得任务列表”进行查询。在查询时使用数据权限控制方案,参考“4.2.3数据权限控制”规则解决本系统使用规则系统解决警示提醒。规则的表达方式和规则系统的调用方式待需求细化和分析结束后补充。开发过程规则的开发可以分为两块,一方面是业务用户组织和定义业务规则,然后是技术人员映射技术实现。在本系统中,规则的所有开发都由技术人员解决。规则定义具体组织和表达方式需要待需求明确和分析后拟定。规则执行具体使用方式需要待需求明确和分析后拟定。消息服务功能描述消息服务构件负责提供报警方式的可配置和报警内容的可定制,并完毕消息的发送和发送痕迹管理。发送痕迹管理采用文献形式保存,天天发送的痕迹保存在一个文献中,消息发送失败的痕迹保存在一个专门的文献中。系统提供的报警方式为邮件和短消息,消息的发送人统一为系统设立的一个邮件地址或手机用户发送方式是按业务配置,即不同的业务消息发送方式可不同样,假如业务的消息发送方式没有配置,使用整个系统缺省的方式。为实现消息的发送,用户要保证基础条件满足,即有邮件服务器或开通短消息发送渠道。邮件发送邮件发送使用javamail,通过Socket连接邮件服务器,发送邮件。邮件的发送为异步方式,先将邮件信息保存在数据库中,再使用任务调度扫描邮件队列,并发送邮件。邮件的消息内容使用velocity的模板机制,不同的业务发送模板不同样,使用文献形式配置;不同业务的发送人使用规则系统定制规则决定。短信发送短信发送有3种方式,下面介绍一下各自的实现方式及特点:向已有的短信平台发送数据,由短信平台代为发送短信。这样的短信平台提供商有新浪、搜狐等。此方式一般采用HTTP的数据提交方式,接口简朴,开发成本低,但规定服务器必须具有internet条件,对服务器的安全性规定较高,且功能较为单一,一般只做短信的发送。通过短信网关发送短信。建立短信网关专线,使用CMPP(移动)、SGIP(联通)、CNGP(小灵通)协议进行数据的发送。此方式具有短信交互功能、吞吐性能好,但运营费用、开发成本较高。采用GSMModem发送短信。公司已有多个此方式的成功案例,具有多种变成语言接口(ActiveX、Java、C#),可实现短信的交互功能,开发成本低。本系统支持向已有短信平台发送数据和采用GSM方式发送两种方式,前者的机制十分简朴,连接短信平台并发送就可以,这里着重介绍后一种方式的实现。(一)系统实现图(二)系统分析系统使用专门一台短信服务器与移动短信网关进行短信业务解决,短信服务器使用GSMModem直接与移动接受发送短信,短信服务器可选用一台或多台GSMModem同时与移动网关进行短信收发,设备数量由业务量大小而定,如在系统使用初期业务量较小,可用较少的GSMModem,假如业务量增大后,由于GSMModem每发送一条需要6-10秒的时间,短信服务器假如不能及时完毕信息解决,就可以增长多台GSMModem并行解决提以高数据流量,减少发送延迟。使用多台GSMModem也可提高系统稳定性,当其中某些GSMModem设备故障,系统也可保持运营。系统可实现按需调配短信设备数量,减少系统初期建设费用,便于系统升级扩容解决。对移动用户请求信息,答复信息,解决情况都进行记录,以便于与移动公司信息、计费等对比。系统实行分布式解决方式,短信服务器接受到移动用户发送的请求信息时通过过滤分类解决,按已注册的的业务类型告知到各应用服务器,由各应用服务器进行解决后通过短信服务器回复用户,以提高系统短信服务解决能力,业务扩展灵活性。系统同时提供对内部网络各应用发送短信的请求。(三)硬件信息短信务服器:Windows2023GSMModem:福州利事达信息技术有限公司LT1080-GSM短信王支持:PPP协议栈、AT控制命令接口:R232(串口)短消息:MO/MT/TEXT/PDU频率:EGSM900/GSM1800发送速度:10秒以下音频特性:半速/全速/增强加速天线接口:SMA(四)短信应用端基于JsmsApp实现短信应用业务系统应用端模块进行短信的收发解决,提供基于Java的JsmsApp中间件。应用业务系运用中间件可以进行快速的实现短信应用开发,并且部署多个短信应用业务系统。发送维护系统维护“业务类型—消息接受人发送方式”这一关系,不同业务的消息接受人和发送方式是独立的,通过直接选择组织树上的具体人决定发送人,发送人1个或多个,发送人的邮件或电话号码在人员信息中维护,发送方式可以是邮件、短消息或两种都可以。消息的发送人在配置文献中配置,整个系统有一个全局的发送人,假如各个业务相应的发送人没有配置,使用全局的发送人,否则使用和业务相应的发送人。接口类设计com.longtop.ltfp.mns.MnsgetMsgBodypublicjava.lang.StringgetMsgBody(java.lang.String

aTemplateFile,java.util.HashMap

aTmpParam,java.util.List

picList)throwsMnsException根据模板文献和参数,获得实际的消息内容Parameters:aTemplateFile-带绝对途径的模板文献名,如c:\helloaTmpParam-参数值的集合,每个元素的key名和模板中的变量名相应.可为空picList-内嵌图片文献的集合.可为空Throws:MnsExceptionsendMsgpublicvoidsendMsg(java.lang.String

aSender,java.util.ArrayList

aReceiverList,java.lang.String

aSubject,java.lang.String

aMsg,java.lang.String

aSendType)throwsMnsException根据需要的发送方式发送消息Parameters:aSender-发送者,假如为null,使用系统配置的默认发送者aReceiverList-消息接受人集合;每一个元素为Hashtable类型,有两个key,address:邮件地址或手机号码,channel:发送方式(email,sms等);为string时,只能是邮件地址aSubject-消息主题aMsg-消息内容aSendType-Mns.SYNC:立即发送,Mns.ASync:异步发送Throws:MnsExceptionsendMsgpublicvoidsendMsg(java.lang.String

aSender,java.util.ArrayList

aReceiverEmailList,java.lang.String

aSubject,java.lang.String

aMsg,java.util.ArrayList

aCCEmailList,java.util.ArrayList

aAttachFile,java.lang.String

aSendType)throwsMnsException以邮件的方式发送消息,支持cc和附件,使用模板Parameters:aSender-发送者,假如为null,使用系统配置的默认发送者aReceiverEmailList-消息接受人集合;里面的元素String类型的邮件地址aSubject-消息主题aMsg-消息内容aCCEmailList-CC人集合;里面的元素是邮件地址,String类型aAttachFile-附件集合;里面的元素带绝对途径的文献名,String类型aSendType-0:立即发送,1:异步发送Throws:MnsException通讯网关连接方式通讯网关负责提供和外部系统连接的可配置框架,并提供数据转换、通讯痕迹管理等功能。本系统和外部系统的连接有以下方式:外部系统在数据库层面提供view,直接访问外部系统的view获取数据。将应用模块的数据对象转换成XML格式,传输到外部系统,外部系统按本系统规定的格式返回XML格式的数据,再转换成数据对象为应用模块使用。将应用模块的数据对象转换成XML格式,传输到外部系统,从外部系统自定义的接口获取XML格式的数据后,转换成本系统规定的XML格式的数据,再转换成数据对象为应用模块使用。其它的方式,在实行过程中定制(如发送报文到消息中间件)。连接方式的复杂性是以下因素导致的:不同省的业务系统千差万别,可连接的方式取决于双方协作的结果,难以事先决定。不同省使用的数据库类型和数据库的设计必然不同样,无法固定为一种。功能描述用例图如下:技术框架数据转换实现应用模块的数据对象与XML格式的互转,应用传给通讯网关自定义的对象类型,通讯网关与外部系统之间是XML格式,应用与通讯网关之间使用通讯网关自定义的数据对象。通讯服务能方便连接不同数据库的不同视图,并将查询的结果转换成数据对象,外部系统的数据库可以是任意的关系型数据库。同时提供标准的socket连接的方式。根据本系统的业务功能规定,规范外部系统要创建的视图(假如采用该方式),提供标准的适配器。根据本系统的业务功能规定,固化采用socket连接外部系统的解决,提供标准的适配器。与外部系统连接并解决数据的实现类自由可配置,以能解决例外情况。接口类设计AppData为自定义的一个数据类型,核心是一个Vector。executepublic\o"classinmon"AppDataexecute(java.lang.String

msgID,\o"classinmon"AppData

input)throwsjava.lang.Exception执行一个业务操作Parameters:msgID-业务操作编号,与业务类型定义文献相符input-传入的参数和数据Returns:通用数据接口Throws:java.lang.Exceptionexecutepublic\o"classinmn"AppDataexecute(java.lang.String

msgID,\o"classinmon"AppData

input,java.lang.String

adapterType)throwsjava.lang.Exception执行一个业务操作Parameters:msgID-业务操作编号,与业务类型定义文献相符input-传入的参数和数据adapterType-使用的适配器类型Returns:通用数据接口Throws:java.lang.Exception任务调度功能描述任务调度模块实现在没有人工干预下自动执行任务,任务相应的是一个API任务可一次性执行或周期性执行,周期类型可自由配置,如天天,每周的星期几,每月的那几天任务调度过程有日记记录,可被查询。任务执行的时间不能动态修改,假如需要修改,需要先停止服务器,修改后,再启动。解决方案本模块使用spring内建的quartz组件实现,技术框架如下:描述技术实现job定义一个任务,即要做的事,相应着API任意bean的一个方法jobDetailQuartz能运营的一个任务,是将Job封装成一个Servicebean方法通过配置文献产生一个新的jobDetailbeantrigger触发器,包含一个jobDetail和任务触发的时间条件(如每月地一天晚上18:00)jobDetailbean通过配置文献产生一个新的触发器beanschedulerFactory包含要调度任务的所有触发器列表把已定义的所有触发器beans都配置到schedulerFactory列表中使用spring后,无需编写代码就可以把一个功能配置成定期任务。假如希望用户可以更改任务触发的时间条件,也只需创建单独的触发器类。由于是注入式编程,由spring管理,无需接口,除了多点配置外,其它开发完全同普通JavaAPI功能的实现。应用示例一方面,和常规API的开发同样,写API,实现某功能。com.longtop.ltfp.sts.SampleJob提供了两个方法,作为这里的例子。API写好后,接下来就是配置了,涉及如下的环节,这里以提供的例子说明如何配置。定义springbean,假如已存在或使用现有的bean,则不需要此环节,此环节属于spring范畴,与任务调度无关。<beanid="sampleJob"class="com.longtop.ltfp.sts.SampleJob"/>定义一个jobDetail。jobDetail为quartz可辨认的一个任务,它包含一个方法run(),执行任务的时候将调用该方法。<beanid="sampleCronJobDetail"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><propertyname="targetObject"><refbean="sampleJob"/></property><propertyname="targetMethod"><value>doCron</value></property></bean>targetObject和targetMethod设立run()方法体内要调用的类和该类的一个方法。sampleJob引用了前面定义的bean,doCron为SampleJob的一个方法,该方法不能包含参数。定义任务的触发器,当到达一定的时间条件时,触发器将启动相应的任务。<beanid="sampleCronTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean"><propertyname="jobDetail"><refbean="sampleCronJobDetail"/></property><propertyname="cronExpression"><value>4,37****?</value></property></bean>jobDetail属性把上一步定义的sampleCronJobDetail绑定到该触发器,cronExpression设立任务触发的时间点(具体介绍见下面)。定义调度引擎,管理所有触发器。<beanclass="org.springframework.scheduling.quartz.SchedulerFactoryBean"><propertyname="triggers"><list><refbean="sampleCronTrigger"/></list></property></bean>启动应用至此所有工作已完毕,启动应用,应当可以出现以下调试信息。17:32:37,031INFO[LogService]runSampleJob.doCron()atsec4,3717:33:04,015INFO[LogService]runSampleJob.doCron()atsec4,3717:33:37,015INFO[LogService]runSampleJob.doCron()atsec4,37配置说明两类常用的触发器simpleTrigger<beanid="sampleSimpTrigger"class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <propertyname="jobDetail"><refbean="sampleSimpJobDetail"/></property> <propertyname="startDelay"><value>10000</value></property> <propertyname="repeatInterval"><value>15000</value></property> </bean> startDelay,调度引擎初始化后的10秒内第一次执行任务,取值单位毫秒repeatInterval,任务每间隔15秒执行一次,取值单位毫秒cronTrigger 通过具体的时间点来设立任务的执行,参见上节的配置。

cronExpression格式:秒分时日期月份星期年(中间的空格必需,年假如为*可以省略)在相应的位置输入相应的合法数字(如秒为:0~59),当系统时间与该时间相同时,则启动任务。“,”号,允许一个时间域取多个值,如秒位置为(4,37)在4秒或37秒都会启动任务。“*”号,表达任意的值,都会引起任务的执行,一般不用于秒域。假如分钟为*,则每分钟都会执行任务。“?”号,用于日期或星期位置,由于不同时指定日期和星期,?的位置表达不考虑该因素。“-”表达联系的一段取值,如5-8,等价于(5,6,7,8)。“#”仅用于星期,表达第几个星期,如2#2,表达本月第2个星期一。具体内容参见CronTriggersTutorial 任务清单需要待需求细化和分析后拟定任务名任务描述触发条件备注报表开发报表设计本系统使用iReport1.2.5工具绘制报表模板,使用Jasper动态产生报表并输出到web页面上或以文献形态保存在服务器上,原理如下图:报表种类本系统拟采用常规表格式报表和仪表图展示监管记录信息,具体待需求明确和细化后拟定。如下是仪表图的展现形式:报表清单需要待需求明确和分析后拟定。报表名内容概述展现形式实时/定期报表打印使用ScriptX实现在IE上的打印控制()。数据同步设计本系统从外部业务系统获取业务数据,发送标志位信息给专卖准营证系统;国家局系统和省局系统是独立的,但存在数据上的关系,即合作银行信息、账户种类信息在国家局系统中维护后,下发到各省数据库,同时各省数据库将数据按规定上传到国家数据库。本系统和外部系统的数据关系重要通过3种方式解决:通过通讯网关实时获取外部系统的业务数据或发送标志位信息。通过数据复制技术实现国家局和省局基础数据的同步。通过任务调度机制定期上传数据或更新数据。第(1)种方式的实现在“4.6通讯网关”中具体描述。第(3)种方式的实现在“4.7任务调度中具体描述,上传或更新的具体数据和规定有待需求的细化,在具体设计中解决。本章重要关注第(2)种方式的实现。该方式实现的前提是国家局和省局的数据库都使用Oracle数据库,以使用Oracle数据库提供的复制技术。复制是一种实现数据分布的方法,也就是说把一个系统中的数据通过网络分布到此外一个或者多个地理位置不同的系统中,以适应可伸缩组织的需要、减轻主服务器的工作负荷和提高数据的使用效率。Oracle针对数据分布式计算的需要,提供了一整套功能强大的数据库复制解决方案。Oracle的数据复制按功能可以分为三类:简朴复制、高级复制和混合复制,而高级复制又可分为多主节点复制和可更新快照复制。本系统使用其简朴复制功能。要实现的复制示意图如下:技术实现如下:在各省局数据库中建一个servicename,连接到国家局数据库。在各省局数据库中创建一个数据库连接(DBLINK),如:SQL>CREATEPUBLICDATABASELINKDBL_CNYCCONNECTTOUSERAIDENTIFIEDBYUSERAUSING'TFM.';这里的用户指国家局数据库用户,TFM.为省局数据库可连接国家局数据库的servicename在各省局数据库中创建快照表空间和相应国家局数据库需要复制的表的快照。在各省局数据库中创建一个定期刷新过程来定期刷新快照组。在各省局数据库中创建一个定期任务来调用定期刷新过程,实现定期将国家局数据库的数据复制到各省局数据库。具体创建环节请参考SVN上的“ORACLE快照实现数据复制.doc”。安全性设计本章描述应用层面的安全性考虑。方案概述通过授权机制防止访问保密数据或受限数据、创篡改数据以及执行没有授权的功能。通过使用CA的身份验证机制控制对系统的访问通过良好的异常管理防止暴露敏感的系统级信息。通过日记和痕迹管理使系统的操作可查询可追踪。通过Server端校验防止绕过页面的检查或直接访问无权限的URL权限控制参见4.2CA认证CA认证重要是商务上的一个考虑,具体是否使用根据在实行时的商务情况而定,在开发阶段不考虑。登陆日记用户登录系统时,记录登陆人、登陆时间、IP

地址等信息,如下形式:操作痕迹日记分为三种,要记录到数据库中的系统流水或痕迹,记录程序执行的供调试和监控的程序日记,其它记录在文献中的业务日记。操作痕迹。记录操作人员的每一次操作。只在支付子系统中记录操作痕迹,系统同时提供支付过程的轨迹查询,保证每一步都可追踪。程序日记。使用log4j在程序中记录重要的调试信息和运营信息,记录信息涉及类名、代码行号和消息内容。实现类名为:com.longtop.util.lg.ProLogService业务日记。类似程序日记,但日记文献自由定义,可以单独一个也可使用公共的,譬如消息发送的日记保存。实现类名:com.longtop.util.lg.BizLogService。程序日记的使用如下:importcom.longtop.util.lg.ProLogService;publicclassTest{ protectedstaticProLogServicelog=ProLogService.getLogger(Test.class);publicvoidXXXX(){log.debug(“hello”);}}日记文献途径在com.longtop.util.lg.log4j_pro.xml中由${pro.log.dir}定义,假如没有设立,默认为${user.home}/rabbit/logs下(如:C:\DocumentsandSettings\administrator\rabbit\logs),可以通过修改该文献改变其它设立。示例如下:2023-08-1115:51:53,265[SessionImpl.java:3116:DEBUG]initializingnon-lazycollections2023-08-1115:51:53,265[WfServiceImpl.java:112:DEBUG]开始发起流程...2023-08-1115:51:54,093[WfServiceImpl.java:114:DEBUG]结束发起流程...业务日记的使用如下:在com.longtop.util.lg.log4j_biz.xml中配置category,调用时指定,如BizLogServicelogger=newBizLogService("NotifyFailLog");Stringaddress=””;logger.error("发送失败,未发送邮件地址:"+address);审批痕迹流程的每一步审批都可追踪,即可知道每一个流程的环节是如何进行的,是何人在何时操作的,操作后下一个环节是什么。Server端校验Server端校验重要解决如下问题:防止没有登陆系统的访问。在server端重新做功能权限和操作权限的校验,防止绕开页面的控制。实现方案:在Request的入口检查需要校验的请求是合法的。在每个业务的action实现类中对需要做server端校验的API检查menuCode或funCode,保证不为空;假如为空,表白此时为非法的请求,不做任何解决。Server端校验的实现是通过如下类实现:packagecom.longtop.bas.web;publicclassLTSecurityFilterimplementsFilter{}并配置在web.xml中,使所有的请求都会被校验。<filter><filter-name>LTSecurityFilter</filter-name> <filter-class>com.longtop.bas.web.LTSecurityFilter</filter-class></filter><filter-mapping> <filter-name>LTSecurityFilter</filter-name> <url-pattern>*.do</url-pattern></filter-mapping><filter-mapping> <filter-name>LTSecurityFilter</filter-name> <url-pattern>*.jsp</url-pattern></filter-mapping>性能设计性能设计的重要方案:适当的页面缓冲。当一个用户需要在若干页面间频繁切换来完毕其业务解决时,采用页面缓冲技术,以减少网络因反复传输而花费大量系统资源。分为如下几种:系统缓存:系统启动时需要加载信息,涉及规则信息。用户信息缓存:用户登录时用户自身信息的缓存,涉及用户基本信息、用户权限数据、SessionID等。业务数据缓存:业务解决的公用数据。涉及账户类型、银行信息等。在大数据量查询方面,一页可以显示的行数以及一次可装入内存的页数都可参数化配置。这种折中数据库访问次数和内存占用的策略,可以根据实际部署环境进行调优,以提高系统的综合性能。采用的数据库连接池,可以缓存指定个数的数据库连接。系统不需要每次都重新建立数据库连接,提高了数据库访问的速度。对资源来说,是可以反复使用的,缓存的访问开销比直接访问资源开销要小。系统频繁使用的配置文献都一次性装入内存,程序不需要每次都从硬盘读取,大大减少系统的I/0承担。建立数据库良好的索引关系,提高查询检索速度。客户化设计本章描述系统在未来推广实行过程中,也许要客户化的问题以及解决方案,具体的客户化过程参见“烟草资金监管基础平台使用手册.doc”。改变监管规则本系统中的规则专门使用规则库进行管理,从而做到规则变化时不修改代码(增长新的业务属性或功能除外)。通过规则编辑器修改规则,编译后测试、部署,实现规则的随需应变。改变业务流程本系统中的流程专门使用流程管理系统进行解决,从而做到流程变化时代码一般不需要修改。通过流程建模工具修改流程定义和配置任务的分派方式,编译后测试、部署,实现流程的随需应变。外围系统连接定制本系统使用通讯网关构件连接外部系统,在设计已考虑到的常规方式内,通过手工修改XML配置文献实现连接任意系统和送收信息内容的自由变动,对于非常规方式,实现本系统提供的接口,按接口返回数据,并将实现类配置在文献中,做到代码独立修改。改变数据库类型本系统通过良好的数据库设计规范,避免数据移植的工作量,即希望通过使用各数据库共同的数据类型和数据访问方式,使在不同的数据库上运营时代码不需要修改。改变组织数据来源将已存在的系统的组织概念映射到本系统。重新实现如下的组织接口:接

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论