J2EE基础应用平台-EMP北京宇信易诚科技有限公司产品中心研发工程师刘必强Copyright©2009YuchengTechnologiesLimitedAllRightsReserved.北京宇信易诚科技有限公司打造中国金融IT服务业第一品牌2主要内容EMP框架的总体介绍核心机制介绍开发常见问题&讨论打造中国金融IT服务业第一品牌3EMP平台的核心组件构成EMP核心组成EMP核心框架EMPWebMVC模型EMP访问控制框架EMP数据库组件EMP事务一致性EMP数据格式化组件EMP规则引擎IOC组件工厂业务逻辑处理容器工作流处理容器EMP多渠道框架EMP后台访问EMPJMX支持框架EMPWeb2.0框架基于模型维护的EMP集成开发环境IDE基于JMX的EMP监控平台EMP平台提供的是一个完整的解决方案,从开发、运行、工作流支持、监控管理等方面都提供了全面的支持EMPSOA支持WebService支持JMS支持服务注册及管理打造中国金融IT服务业第一品牌4终端层4表现逻辑、渠道处理层业务逻辑处理层核心框架分层设计模型EMPWeb2.0框架EMPWebMVCEMPJMXEMPMonitorJMXBasedMonitor其他系统JDBCHostAccessESBHostEMP访问控制框架EMP访问控制框架插件插件EJBBrowser其他Web2.0框架EMPIDEEMPWebService接入EMPHTTP接入EMPTCP/IP接入其他MVC渠道处理插件Format业务逻辑处理容器工作流组件构件框架组件工厂业务逻辑运行开发监控存储与业务处理打造中国金融IT服务业第一品牌6业务逻辑处理引擎打造中国金融IT服务业第一品牌7EMP业务逻辑处理容器——行业应用上的特性金融行业应用大多有连通性需求与典型的信息管理类不同,金融应用不但要管理数据库,还要与外围系统完成数据交换有报文处理、通信协议处理的需求业务处理的复杂度是很高的相对于传统的信息管理类处理,流程复杂很多硬编码方式的实现弊病:质量低、难维护业务处理流程具有相似性以单纯的接口定义+服务实现的方式来完成流程处理并不完全合适:重复性代码、流程的随需变动带来的硬代码的改造采用流程的抽象+配置化产生流程实例的方式更能满足真正的业务需要,流程的改变只是意味着配置的改变打造中国金融IT服务业第一品牌8EMP特点—从组件到业务构件到流程处理的组装式业务开发平台框架技术组件业务构件业务处理流程组装组装流程变化流程变化打造中国金融IT服务业第一品牌9EMP业务逻辑处理容器——逻辑处理上的优化组包发主机记录日志本地处理普通逻辑处理结束开始组包发主机记录日志外部调用子逻辑调用结束开始很多业务处理需要使用某一个公共处理逻辑,如身份验证、数据加密处理等EMP的业务逻辑处理对象都是无状态的,独立的组件封装,可以作为子逻辑在业务处理中调用,实现共享业务逻辑组件交易业务处理是金融行业的基础应用,交易逻辑具有它约定形成的基本流转模型,同时针对不同的业务又会有自己的特殊处理交易业务处理随着发展需要整合和抽象,逻辑的共享不但可以降低开发难度,同时也能保证系统的简洁,提高应用质量组包发主机记录日志本地处理公共逻辑+特殊处理结束开始特殊处理特殊处理很多业务处理在基本逻辑上是一致的,但在某些处理逻辑点上需要针对本业务做一些特殊的处理EMP提供了公共逻辑+扩展逻辑步骤,来满足这种业务逻辑的需求优化优化打造中国金融IT服务业第一品牌10EMP业务逻辑处理容器——业务构件业务逻辑构件BizLogic业务操作Operation业务操作Operation业务操作Operation业务操作Operation输入接口Input流程处理Flow输出接口Output业务数据Datas资源节点Context服务对象Services格式对象Formats业务操作单元Action业务操作单元Action业务操作单元Action业务操作单元Action业务操作单元Actiontransitiontransition一个业务逻辑构件可以是一个客户管理构件,其中包括客户查询、客户增加、客户修改和客户列表等等业务操作一个业务逻辑构件有统一的资源节点,为所有业务操作提供数据资源、服务资源和格式化处理资源一个业务逻辑构件是自封装的,无状态的,可以很容易转化为服务组件(WS的发布)打造中国金融IT服务业第一品牌11Context结构11ContextDataFormatServiceContext.getDataElement(“”)Context.addDataElement(“”)Context.removeDataElement(“”)Context.getDataValue(“”)Context.setDataValue(“”)IndexedCollectionKeyedCollectionDataFieldContext.getService(“”)Context.getFormat(“”)Context.getDataElement()?Context.setDataElement(kcoll)?不可使用打造中国金融IT服务业第一品牌12Context访问接口1.数据访问getDataElement(StringdataName):DataElement得到dataName名称的数据定义getDataValue(StringdataName):Object取dataName名称的数据域的值setDataValue(StringdataName,Objectvalue)设定dataName名称的数据域的值为valueaddDataElement(DataElementelement)addDataField(DataFieldfield)添加数据域addDataField(Stringname,Stringvalue)添加数据域2.服务的访问getService(StringserviceId):Service3.Format访问getFormat(StringformatId)4.传递参数setAttribute(Stringname,Objectvalue)getAttribute(Stringname)打造中国金融IT服务业第一品牌13数据模型13RootCtxAPPChannelCtxAPPSessionCtx交易的Context交易的Context当前已登陆,即已创建Session前提查找方式打造中国金融IT服务业第一品牌14渠道整合应用框架打造中国金融IT服务业第一品牌15EMP多渠道接入与访问控制渠道接入层业务处理层访问控制插件CheckBeginEndEMPBizLogic构件EMPBizLogic构件EMPBizLogic构件EMPBizLogic构件统一调用接口HTTPTCPIPWebServiceMQEMP提供了TCPIP、HTTP和WebService的渠道接入实现业务处理层共享EMP业务逻辑构件遵循EMP访问控制处理插件框架可提供访问请求的合法性检查(Check),请求执行前预置处理(Begin),请求执行后预置处理(End),不影响业务的具体实现,但通过访问控制可改变业务处理逻辑可完成如:并发控制、黑名单过滤、报警记录、行为记录等控制功能可配置多个访问控制器插件数据记录采用JMS机制,提高效率打造中国金融IT服务业第一品牌16EMP渠道整合技术实现框架网上银行手机银行电话银行渠道接入客服应用自助设备http/tcpip/MQ渠道应用层客户统一认证渠道特色处理限额及计费管理交易监测及控制数据采集处理访问控制层统一构件调用接口个人业务构件公司业务构件个人VIP业务构件公司VIP业务构件统一签约构件数据采集处理业务处理层(产品工厂)核心层后台应用系统群核心信用卡CIF其他数据分析层轻量级数据汇聚仓库数据统计及分析(查询及报表)核心层CRM管理支撑层业务操作管理统一渠道管理报表管理消息推送积分管理营销管理综合计费账务清算风险管理客户信息管理系统监控绩效考核管理服务决策各层之间松耦合,通过本地接口或远程通信接口方式组装,支持单个应用集成和各层分布式部署打造中国金融IT服务业第一品牌17基于EMP的应用产品体系框架网上银行手机银行电话银行渠道接入客服应用自助设备http/tcpip/MQ渠道应用层客户统一认证渠道特色处理限额及计费管理交易监测及控制数据采集处理访问控制层统一构件调用接口个人业务构件公司业务构件个人VIP业务构件公司VIP业务构件统一签约构件数据采集处理业务处理层(产品工厂)核心层后台应用系统群核心信用卡CIF其他数据分析层轻量级数据汇聚仓库数据统计及分析(查询及报表)核心层CRM管理支撑层业务操作管理统一渠道管理报表管理消息推送积分管理营销管理综合计费账务清算风险管理客户信息管理系统监控绩效考核管理服务决策交易整合(中台)网银++CC所有渠道产品基于相同的设计理念,可以从多个维度切入进行整合建设交易网关打造中国金融IT服务业第一品牌18主要内容EMP框架的总体介绍核心机制介绍开发常见问题&讨论打造中国金融IT服务业第一品牌19访问控制器打造中国金融IT服务业第一品牌202020访问控制器打造中国金融IT服务业第一品牌212121访问控制器实现的接口com.ecc.emp.accesscontrol.AccessController方法介绍checkAccess--入口方法,检查请求是否合法,以及该请求是否符合该控制器的管辖范围beginAccess--控制对象的开始控制方法,如果checkAccess返回结果不为空,则进入endAccess--请求对象处理完毕打造中国金融IT服务业第一品牌222222访问控制器配置的位置?公共服务—accessManagerMVC层—empServletContext.xml平台处理机制?能够用来做什么?安全校验并发控制日志留痕等等…打造中国金融IT服务业第一品牌23会话管理器打造中国金融IT服务业第一品牌242424Session管理器Session管理器:EMPSessionManagerHttpSessionManager关注点:超时时间的设置页面输入内容过多时,如何不超时?打造中国金融IT服务业第一品牌252525Session管理器Session跟踪机制:Cookie、URLREWRITE超时触发的事件—SessionTimeoutListener接口与客户端IP、Cookie绑定—防止假冒打造中国金融IT服务业第一品牌262626Session管理器—sessionContext如何定义、使用—新版本中的变化何时创建、销毁SessionContext?打造中国金融IT服务业第一品牌27数据格式化—报文打造中国金融IT服务业第一品牌28EMP报文处理——行业特性报文是应用系统间交互的重要信息载体金融行业普遍采用报文进行系统间通信报文缺乏统一和标准报文是应用连通开发中的重要组成主流报文种类字符串格式(分隔符、定长、修饰符、数字压缩、值等式等等)Bitmap格式(8583及8583扩展)XML格式报文处理的难点报文是规范的,要求一定是可配置模式的,否则工作量和维护量巨大在应用中,总会有报文扩展的需求,扩展的方法和难度打造中国金融IT服务业第一品牌29EMP报文处理——XML采用DOM方式不推荐使用原有的采用字符串解析方式的代码需要逐个配置标签,缺乏对Schema支持打造中国金融IT服务业第一品牌30EMP报文处理——String采用字符串拼接的方式与通讯中真正使用的字节流方式产生矛盾—最直接的体现是编码问题(定长报文中)打造中国金融IT服务业第一品牌31EMP报文处理机制采用统一的调用接口不同的报文类型拥有不同的代码结构—类似Controller方式,不同层次子类拥有不同的抽象方法目前几个大的问题:扩展困难出