前言:
技术平台与业务平台的分离,在很大程度上是体现一家软件公司,尤其是软件服务公司成熟度和竞争力的指标。
统一开发平台的主要作用
开发平台(SDCSolution Development Center)定位于技术层面,其主要目的是为统一公司内相关产品研发和项目实施使用的技术架构和开发工具,有效提高统一技术支持力度,形成持续的技术积累手段,提升技术人员的利用率并降低对人员的依赖性,最终提升软件的规模化、流水线式的生产能力。
开发平台提供一整套的应用软件设计开发方法论及支持工具。针对国内软件需求成熟度低,软件变更频繁等特点,都有一系列的对策,能够极大地缩短开发周期,保证软件的可维护性,降低应用开发的风险。 平台可以根据具体需求定制应用程序,满足企业持续改进的业务应用需求,企业、软件开发商、系统实施服务商还可以用SDC平台进行增值开发和服务。
开发平台设计理念
SDC基于J2EE框架设计,核心采用SOA设计模式,平台中包括基础框架、实施平台、集成平台、BPM系列套件、门户系列套件以及开发工具系列等。
基础框架提供系统运行的基础环境,包括缓存框架、日志框架、安全审计、多数据库支持、多语言支持(国际化)、多租户支持(SaaS化应用)、报表中心、文件中心等;
集成平台包括系统注册、系统监控、服务管理、数据交换、消息组件、统一用户与权限等用于多系统集成的相关组件;
BPM系列套件包括流程管理套件、电子表单套件、业务编排套件、流程监控与分析等用于业务流程管理与优化的相关套件;
门户系列套件包括PORTAL、SSO、CMS、ETL、全文检索等;
开发工具系列包括开发规范、代码生成工具、可视化流程设计与建模工具等。
1. 微内核模式
基础架构核心采用微内核模式,以保证架构核心内容简洁、清晰与稳定,主要实现清晰的分层结构、实现各层Bean定义的寻址和实例生命周期的管理。更丰富的功能采用关联模式和装饰模式进行扩展。微内核的扩展通过 plugin插件技术,将扩展功能以模块化的方式进行即插即用的热部署。
2.分层结构设计
分层包括横向分层(技术层面)和纵向分层(业务层面)。横向分层包括UI层、Action层、proxy层、Service层与DAO层。纵向分层通过提供模块化设计机制提供支持。
3.上下文
基础架构采用上下文和数据总线的理念进行设计:
1) 上下文对象负责登陆信息、调用参数、执行环境、处理结果、数据库连接等信息的管理和传输。架构代码负责上下文中公共信息的生命周期管理。
2) 在系统各层的实现类中,只需从上下文对象中获取需要的变量,不必关心变量的产生与销毁。
3) 对于业务过程中产生的数据,产生数据的实现类只负责将数据放置到上下文中,不必关心数据使用者。使用数据的实现类只负责获取数据来运算,不必关心数据生产者。将生产者与使用者松耦合。
4.配置化设计与配置化开发
为了提高开发时的效率及系统质量,平台提供大量的配置化开发支持。配置化既方便工具的实现以提高效率,又可以控制核心代码的数量,以保证其质量。
配置化开发主要体现在实施平台,实施人员可以根据客户的个性化需求,通过配置化开发,设计新的业务、查询等功能。配置化开发支持信息集扩展、表单扩展、报表扩展、查询扩展、业务编排等。
5.AOP设计
基于过滤器技术,对Action调用、业务日志、权限管理等通过AOP方式实现。架构提供AOP的实现机制,但内部会较少使用AOP,以保证核心架构的执行效率。
架构使用AOP的部分为:
1) 业务日志
2) 权限控制
3) 异常处理
6.插件式设计
插件式设计有两层概念,第一层为细粒度的插件,即类级别的插件模式;第二层为模块级别的插件模式。
类级别:所有各层业务类的实现,默认可继承架构提供的祖先类,也可脱离架构提供的祖先类,自行实现。对于权限、业务日志、参数格式规范等内容,除框架提供默认实现以外,各业务系统可以根据具体需要做相应的扩展,只要实现框架的接口规范,可实现即插即用。支持默认包名和配置扩展包名。
模块级别:使用plugin技术,每个扩展功能以单独模块的方式进行开发,形成独立JAR包(以及一个JSP目录),JAR包内按规范包括classes类、配置文件、plugin.xml描述文件、SQL初始语句等相关信息。部署时将JAR包与JSP目录放置到相应的位置,系统在启动时即可自动加载相关功能。
7.面向服务设计
服务层采用SOA的设计理念,对服务集中管理。
实现两层SOA模式:SOA是一种应用模式,而非定式。在SDC内部完整实现面向服务的模式,包括服务管理、服务总线、业务编排等。同时,通过服务代理与服务发布功能,还可以与企业级SOA体系完美融合。形成两级SOA体系。
8.事务管理
事务管理采用声明式事务,业务实现类不可以自行产生连接对象,必须通过上下文对象来获得。
1) 事务通过在代理层的配置文件中进行声明式管理,事务级别分为:无事务、独立事务、继承事务。继承事务用于业务编排时,一个大事务串起所有小服务的调用过程。
2) 服务类中只负责从上下文中获取连接进行操作,不关心事务与连接的产生与释放。防止业务代码有未释放的连接。
9.多数据源(多账套)
架构支持多数据源,即同一套系统部署,可以支持多个数据源同时使用。每个数据源即表示一个数据库连接的设置。用户登陆时选择要登陆的数据源。在系统执行过程中,可以根据需要随时更换数据源。
集成控制中心和产品实施平台均需要使用多数据源来控制不同的业务系统。
业务系统在开发以后,也可以通过多数据源来实现多账套功能。
多数据源可有效支持SaaS化应用对数据的隔离要求。
10.国际化支持
满足对系统国际化,多语言要求。
页面文件使用标签技术对国际化进行支持。所有页面内需要显示的文字均通过配置实现。
11.强制性规范
由于在项目开发中,开发人员的水平参差不齐,为了能有效的控制代码质量与规范,在基础架构中,设置多种强制规范要求。
开发平台整体规划参考
开发平台系统组成参考
SDC开发平台底层主要包括基础框架、技术组件、工具与规范三部分。基础框架为系统运行的基础,包括分层、SOA、AOP等框架所需要的基础内容,以及MVC框架、插件模式、服务代理等增强功能。
SDC应用套件包括报表平台套件、BPM平台套件、集成平台套件与门户系列套件,在应用套件之上搭建公司的业务平台。
底层框架与开发工具
1、基础框架
基础架构以ToftCore的IoC模式为核心,在此之上挂接组件引擎,比如电子表单引擎、规则引擎、缓存组件、ORM、SCA、消息平台等。
基于分层理念,框架分层包括T oftWeb、ToftProxy、ToftDao等。
应用层面,包括电子表单系统、业务流程系统,以辅助流程与业务表单的快速开发以及相互关联。
安全认证组件通过安全过滤器链实现,可支持license认证、证书认证、URL安全、对象方案安全几个层次的安全控制。
2、开发工具
1)集成开发环境
SDC提供方便快捷的集成化开发插件,通过插件对项目进行SDC环境集成,同时附带代码生成工具,可以有效的提高开发人员的工作效率,降低SDC平台的学习曲线,不需要深刻理解SDC结构以及前台开发技术,只要对web开发有基础性的认识,即可参与SDC平台上的项目开发工作。
插件与SDC产品同步更新,功能可以包括以下:
1. Web项目工程向导插件,使其带有SDC结构特性。
快速开发向导插件,将插件部署到Eclipse开发工具中,在项目中的新建功能中,会出现SDC的“开发向导”,用于生成业务所需文件,如图:
2)表单设计器
电子表单是SDC的一个快速响应组件,用来生成界面和业务逻辑。电子表单专有的设计器依托Flex富客户端技术开发,通过配置文件来动态扩展现有的函数、模板、容器、元素和属性,能以可视化的、拖拽的方式生成设计界面,实现相关数据的联动和更新,并根据界面内容生成业务逻辑,体现出高度的美观性、交互性、易用性。
3)流程设计器
流程定义实现任务节点、状态节点、会签节点、分支节点、聚合节点、决策节点、子流程节点、动态节点等。
这些节点组合,实现目前所知的绝大部分业务流程的需求。在每个节点上,还可以定义:基础属性、高级属性、抄送配置、业务连接、事件定义、定时操作等。可以实现催办与抄送:可以通过邮件、短信、IM等方式进行通知;事件处理:定义到达某个事件时触发一定的操作;定时操作:定义定时器,进行相应的处理。
3、技术组件
技术组件包括但不限于:系统参数与码表、日志监控、工作日历、导入导出、元数据管理、附件管理器、序列管理器、字典管理、授权管理、内存数据库、邮件管理、动态菜单、安全管理、即时通讯管理、任务调度管理、消息管理等。
4、UI控件库
使用UI控件库快速开发功能,快速定制出预定义模板的页面样式的功能。控件包括但不限于:datagrid(表格)、searchform(查询表单)、dataform(数据表单)、tabs(多页签)、dic(字典)、date(日历)等。对于复杂页面,可以通过控件的组合来实现。
报表平台
支持单独部署与集成部署模式,可以支持J2EE或非J2EE的B/S结构应用,以及windows环境下的JAVA应用与非JAVA应用。
报表设计器采用类Excel的报表设计方式,可以定义套打与精确度量。支持多数据源定义、内建数据集、丰富的表达式与函数支持;分片混合扩展与相关引用、灵活快捷的分组汇总、行列对称的扩展机制、层次座标、子报表、统计图定义、报表参数与宏、报表设计向导、SQL编辑器与向导、公式编辑与函数帮助等功能。
集成平台
企业内部通常具有多套信息管理系统,每个信息系统都有各自独立的组织机构、用户与权限管理体系,且多系统之间往往需要数据交换、消息互通等需求。多系统因为重复维护一些基础资源而造成时间资源浪费,以及用户在不同的应用系统中切换时,必须重复进行身份认证的问题。
SDC集成平台主要实现多系统资源统一整合的功能,将企业内多个系统整合成一个系统界面。通过将各系统的功能点打散后重新设置子系统、模块与菜单的划分,在集成平台集中体现,并进行统一的组织机构、用户、与权限的管理,以及一些基础资源、身份认证等,以及在多系统之间进行数据交换与消息定制的功能。
业务流程管理
业务流程管理主要包括但不限于:工作台、流程定义、流程监控、电子表单、业务编排等。
统一开发平台大方向上的设计基本就这样了,具体细节设计由于篇幅有限,不再赘述。更多资料和案例来自知识星球(微课堂)。