精华内容
下载资源
问答
  • 企业应用开发平台-GAP平台

    千次阅读 2009-02-28 23:33:00
    近几年关注的领域一直是企业应用开发平台,不管是使用别人的平台,还是自己组织研发平台,所涉及到的技术和领域方法都差不多,希望在这方面和大家多做些交流。说起用友的平台,UAP大家应该都知道,事实上用友集团...

     近几年关注的领域一直是企业级应用开发平台,不管是使用别人的平台,还是自己组织研发平台,所涉及到的技术和领域方法都差不多,希望在这方面和大家多做些交流。
    说起用友的平台,UAP大家应该都知道,事实上用友集团还有一个平台,那就是用友软件工程公司的GAP平台,与UAP宏大的产品架构和产品研发思 路不同的是,GAP平台更多的关注点是个性化IT服务,GAP更多是作为一种框架、工具和基础设施来为客户提供更好的企业应用服务。从2003年开始研 发,目前已经发展到3.5版本,公司数百个项目都是基于这个平台完成,经验教训都有,更多的是收获,后续会与大家更多的分享一些相关的思路和想法,更多的 也是对自己的总结
    下面先简单介绍一下GAP平台

    用友软件工程国际化应用平台(USE-GAP)

    1 概述
    USE-GAP全称是UFIDA Software Engineering Global Application Platform,是用友软件工程公司集多年应用开发实施经验所提炼的快速应用构件化开发平台。
    GAP平台不仅仅是一套快速开发应用软件的辅助工具,而且是一套提供很高复用度的大规模软件定制开发模式。她致力于解决当前软件开发过程中的三个关键问题:软件过程问题,软件复用问题,快速开发问题。并通过对这些问题的解决为客户提供更好的软件质量、降低客户的总体成本。
    GAP平台是用友软件工程服务于客户的主要技术产品,应用了国际上先进的组件化、对象化、模型化以及面向方面,面向服务等思想,结合一整套科学规范的软件工程方法,保障了项目的顺利实施,目前平台版本是3.1,即将发布3.5版本。
    2 整体解决方案
    USE-GAP项目的总体目标是开发一套用于快速开发应用软件项目的基础平台。该系统的核心思想是基于诺贝尔奖获得者赫伯特 A. 西蒙倍为推崇的层次理论,将高度复杂的应用软件系统,从底层到高层按照业务相关度和技术相关度的强弱创造性的划分成六大层次,然后逐层进行搭建,从而解决 了如何柔性的搭建复杂巨系统的难题。
    USE-GAP项目的主要解决的问题有:
    1) 企业应用软件的层次模型
    2) 基于组件的开发与设计,各组件既能独立运行,也可组合装配形成完整应用
    3) 具有网络拓扑结构的跨企业组织模型,细粒度的权限控制
    4) 具有技术环境兼容性的B/S柔性软件框架
    5) 基于运行时动态组构的计算机辅助应用软件开发工具
    6) 以消息总线、数据总线和控制总线为基础的业务流平台
    3 GAP平台的技术体系
    3.1 GAP平台的行业标准
    用友GAP平台所采用的技术全部遵循国际行业标准,JavaEE规范,WFMC,XML,Web Service,IOC,AOP,ORM等,具有良好的扩展性和技术先进性。
    用友GAP平台采用了轻量级的构建方法,在POJO的基础上,封装了Spring,Struts(JSF)和Hibernate, 实现了基础框架、基于Eclipse插件方式的IDE集成开发环境、遵循国际标准WFMC的工作流系统、遵循JSR94规范的规则引擎,基于JMS规范的 消息交换平台,基于元数据管理的数据字典,可灵活扩展的组织权限系统,另外还包括大量辅助项目应用的独立组件等,形成了一个完成的企业级应用解决方案。
    3.2 面向服务的架构体系
    从技术角度而言,GAP平台完全面向Business Service编程,整个技术体系中的核心是Business Service,也就是业务服务,所有的业务服务以IOC的方式注入到系统中,系统的业务逻辑,事务,领域模型,数据仓库都由业务服务单元处理,各个业务 单元通过组合,可以形成一个业务组件(Component)为上层体系提供服务。
    每个业务服务都可以通过接口服务平台对内外提供多种访问方式,包括最普通的本地调用,为异构系统提供基于SOAP和WSDL的Web Service访问,为富客户端提供Rmi远程调用,同时还提供一些轻量级的远程访问方式,例如HttpInvoker和hessian、burlap等 分布式远程访问等,可以支撑各种异构系统的集成和数据交换。
    同时业务服务还可以注册到工作流系统中,通过业务表单的形式为企业流程管理提供服务。
    3.3 GAP平台的功能架构
    USE-GAP 主要包含如下框架、系统和组件
    基础环境
    主框架和成开发环境,提供统一的可视化开发环境,集成代码自动化生成、部署、调试
    应用系统
    组织权限模型、工作流平台、消息平台、服务平台、数据字典
    组件库
    业务日志
    规则引擎
    全文检索引擎
    任务调度
    报表工具
    AJAX控件
    站内短信
    论坛

    4 项目成熟程度
    1.成果的技术鉴定文件或产品性能检测报告、产品鉴定证书。
    本产品经国家应用软件产品质量监督检验中心进行了全面的功能和性能检测,并获得了其颁发的《USE-GAP平台验收测试报告》。
    2.产品质量的稳定性,以及在价格、性能等方面被用户认可的情况等。
    该产品目前已经完成了3.1版本的开发,还在继续完善开发过程中。产品的客户现场的应用中表现了良好的系统稳定性,目前已经在中国人寿的多个项 目,中国网通河北省通信公司EIP门户系统、IRP深化系统项目、中国电财公司业务运营及管理信息系统、华泰保险BILLING管理系统、全国总工会对日 外派人员管理系统等几百个客户系统中稳定运行,并获得了良好的客户口碑。这也是用友软件工程公司研发的GAP平台能够在国内、国际市场上占有一席之地的重 要技术基础。
    该产品具有良好的技术开放性和灵活性,可随客户的需求进行二次开发和流程搭建,技术性能完全可满足用户的应用需求。
    3.核心技术的知识产权情况。对引进技术的消化、吸收、创新和后续开发能力。
    该产品属于用友软件工程有限公司自主研发的产品,没有技术引进内容。用友软件工程有限公司对该产品具有完全的知识产权。
    目前,该产品及其相关核心技术已经申报两项计算机软件著作权,并获得批准。
    5 社会效益分析
    用友软件工程有限公司从2003年开始研发用友国际化应用平台(USE-GAP),至今已经有5年多的积累,在平台研发,技术积累和传播,成功案例,工程过程等方面都有了足够的沉淀,这也为后续的行业发展和战略性合作奠定了坚实的基础。
    基于GAP这样一个开放性的平台,可为从事IT服务外包的企业提供快速搭建外包服务所需的技术、标准、质量管理体系和业务流程并可进行软件复用。 实现提升软件外包服务企业的快速响应软件外包服务需求能力,占领市场先机,在激烈的市场竞争环境中,赢得竞争时间优势。同时,可有效促进外包服务提供商所 提供服务的标准化、规范化,以及外包技术服务开发过程的综合管理水平,提升这类企业的整体外包服务能力和人员素质和服务水平,树立我国软件服务外包企业的 标准化、规范化的企业形象,进一步提高我国软件企业服务水平在国际上的地位和竞争力。基于该平台,可有效促进外包服务企业承接个性化IT服务外包项目,降 低软件外包服务企业的入门门槛的技术难度,大力发展软件服务外包产业,主动实现与国际经济接轨,实现我国软件产业发展战略的宏伟目标,也是为加快发展现代 高端服务业、提升企业综合竞争能力的重要举措。

    展开全文
  • 企业应用快速开发平台

    千次阅读 2004-10-26 19:35:00
    企业应用快速开发平台 目 录TU1需求UT 2TU2目标UT 2TU3技术方案UT 3TU4技术线路UT 4TU4.1AOP技术UT 4TU4.2IOC技术UT 5TU4.3企业功能组件UT 5TU4.4模板和向导规则UT 6TU5技术难点和目标UT 6TU5.1技术难点1UT 6TU5.2...

    企业应用快速开发平台<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

     

     

    TU1需求UT 2

    TU2目标UT 2

    TU3技术方案UT 3

    TU4技术线路UT 4

    TU4.1AOP技术UT 4

    TU4.2IOC技术UT 5

    TU4.3企业功能组件UT 5

    TU4.4模板和向导规则UT 6

    TU5技术难点和目标UT 6

    TU5.1技术难点1UT 6

    TU5.2技术难点2UT 6

    TU5.3技术难点3UT 6

    TU5.4预期目标UT 6

    TU5.5主要创新UT 7

    TU

    1需求

           企业构建自己的信息系统,有两种途径,一是购买现有产品,而是自主开发。即使购买现有产品的企业,因为所购买产品不是针对自身需求进行开发的,往往也需要进行二次开发。而企业应用系统的开发总是一个非常复杂的过程。因为企业应用需求的不确定性、开发工具和支撑平台的多样性、可用技术资源的匮乏性,导致企业应用开发常常投入大量资金确收效甚微。利用现有的开发平台,不管是微软的Visual StudioIBMWSADSunSun One,还是第三方独立软件供应商如borlandjBuilderDephi,进行一个典型的企业应用开发,都是非常困难的事情,因为这些开发工具的出发点都是面向技术层面的(更确切地说是面向软件工程师的),而不是面向企业需求的,因此,即使高级软件工程师和经验丰富的系统架构师也不能在短时间内快速构建出一个能满足通常应用的系统。

           是否能有一种面向企业需求的快速开发平台,可以满足各种规模企业应用的快速构建呢?

           总结一个典型的企业应用,不管它是企业资源计划(ERP)、客户关系管理(CRM)、电子政务(E-Government)、电子商务(E-Business)、工作流(WorkFlow)或是内容管理系统(CMS),都可能会具有如下特征:

    Ø         安全:限制使用该系统的角色(Role)及相应权限(Permission),保护受限的资源(Resource),可能还需要对同类角色分组(Group)进行管理。

    Ø         事务:对典型的电子交易或审批流程来说,事务是至关重要的一环,可保证一系统活动的全部完成或全部回滚。

    Ø         对象关系映射:现有的主要编程模式多是OOP,而主要的数据存储方式都是RDBMS,因此几乎每种应用都涉及到对象关系映射O/R Mapping

    Ø         消息服务:每个活动、每个子系统之间如何传递消息。消息的传递方式应该是一种统一的模型,与所选用的平台和所构建的系统无关。

    Ø         缓存和及时更新:对高并发、大访问量的系统,需要增加缓存策略,缓存最常访问的信息,同时要保证这些信息及时更新。

    Ø         日志:对操作流程进行记录,保证操作的不可抵赖性;对错误信息进行记录,便于对系统进行调试和监控。

    对于各种企业应用来说,这些特征不是必须的,而是可选配置。我们需要的是一种设计良好可插入式企业功能组件,每个组件满足一个特定的企业需求,然后可使用这些组件来快速构建企业应用。

    2目标

           构建一个企业应用快速开发平台,需要这么几个部分:

    Ø         企业功能组件组件:包括安全、事务、对象关系映射、消息服务、缓存机制、日志管理等。每种组件使用AOP技术实现,对外提供统一接口,可横向插入系统,不具侵入性,不会影响其它子系统的设计实现。

    Ø         抽象容器层:企业应用遵循标准的J2EE标准,但是运行在一个抽象容器层之上,以便于将系统与底层的中间件服务器分离,这样可使企业应用独立于J2EE应用服务器。

    Ø         模板和向导:为每种组件提供一个模板,以描述该组件的功能和提供的接口。向导则使用模板定义的规则将该组件构建为子系统。

    Ø         构建系统:构建系统应该独立于各种集成开发环境IDE,自动地将各种组件、各个子系统构建为完整的企业应用。

     

    企业应用快速开发平台应该使用开放的标准如javaXML和得到广泛使用的开源工具如antxdoclet等进行构建,尽量不依赖于操作系统和应用服务器。

    3技术方案

    企业应用快速开发平台的整体结构如下:

    <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

     

           在该图中,粉红色的部分是企业快速应用开发平台的核心。

           首先是企业功能组件。所有的企业功能组件,不管是既有的还是重新设计的,都必须遵循IOCInversion of control)和AOPAspects-Oriented Programming)设计范式,可以动态地插入到IOC/AOP Container中运行。组件与组件之间应该是链状的关系,彼此不相互依赖,如下图:

    每个组件还必须提供自描述的基于XML的模板文件(templates),该模板文件定义了这个组件实现的功能,所提供的接口,所需的资源。在构建系统时,将根据这个模板文件来组装(或插入)这个组件。

           第二是IOC/AOP Container容器。该容器将提供各个组件运行所需的最小运行时环境(Runtime Context),一经实现,它将是稳定的内核,对每一个新的企业应用开发来说,它是内部底层的东西,不需要开发人员去注意和了解。

           第三是向导Wizards。使用Wizards来定义一些典型应用的封装过程(即如何将既有组件组合为一个特定的企业应用),在更高一级抽象层次上描述企业应用的快速开发过程。开发人员可以使用向导逐步构建一个系统,并且在每一步向导中所做的设置在向导完成后都可以再更改。向导的实现可以有两种方式,一是基于XML的模板使用命令行完成,类似于unixmake工具。第二是开发eclipse插件,使用图形界面的形式完成。

           最后是构建系统Build System。这一步将完成整个企业应用的构建,前提是存在可用企业功能组件,每个功能组件都有完善的自我描述模板,并使用向导对这些组件的封装进行了设置。在此基础上,使用ANTXDOCLET技术或其扩展形式完成系统的构建。构建系统应该完成编译、部署、运行和测试的工作。

     

    4技术线路

    4.1AOP技术

    面向 Aspect 的编程(AOPAspect-Ooriented Programming)是一种新型编程技术。UML的创始人Grandy Booch认为AOP会是下十年最重要的编程技术。传统的程序经常表现出一些不能自然地适合单个程序模块或者几个紧密相关的程序模块的行为,因此面向 Aspect 的编程(AOP)应运而生。Aspect 的先驱将这种行为称为横切(Crosscuts),因为它跨越了给定编程模型中的典型职责界限。例如,在面向对象的编程中,模块性的天然单位是类,横切关系是一种跨越多个类的关系。典型横切关系包括日志记录、对上下文敏感的错误处理、性能优化以及设计模式。

           面向方面编程AOP是一个令人兴奋的新模式。面向对象编程(OOPObject-Oriented Programming)是过去十年最重要的编程技术,主要用于为同一对象层次的公用行为建模。它的主要弱点是对象之间的关系必须是静态的,一个公用的功能模块也不得不由多个对象模型来实现,因此,任一需求的变化、任一对象模型的变化都可能导致软件工程的延期。而这恰恰是AOP适合的地方。AOP技术允许我们动态地设计新的模型来满足变更的需求,而不必修改原有的静态模型。另外,我们可以将这些模型的代码统一放置在一个地方,仅提供一个接口为外界服务,而不是将代码分散在很多包和类中。AOPOOP式互为补充的开发技术。AOP可以从原来分散在包、类、方法里面的功能模块抽象出来,封装为更易于维护和为外界提供调用接口的拦截器Interceptor,每个Interceptor专注于完成自己的功能而不与无关的模块交互,每个Interceptor都是可插拔的。AOP技术可以将完成特定功能的相关对象组合在一起,使得代码有更好的可读性并便于维护。

        目前AOP具体实现有以下几个项目:

    AspectJ (TM):创建于Xerox PARC. 有近十年历史,技术成熟,目前和eclipse结合了。缺点是过于复杂;破坏封装;需要专门的Java编译器。

    动态AOP:使用JDK的动态代理API或字节码Bytecode处理技术。

    基于动态代理API的具体项目有:JBoss4nanning

    基于字节码的项目有:aspectwerkzspring

        后三种AOP技术均可直接运行于java平台。目前国内还没有可用的AOP产品。

    4.2IOC技术

           IOCInversion of Control的简称。它的原理是基于OO设计原则的好莱坞原则(The Hollywood Principle):不要访问我,我们将访问你。也就是说,所有的组件都是被动的(Passive),所有的组件初始化和调用都由容器负责。IOC有几种实现的类型,包括基于方法参数调用的Method-based (M) IoC,它把组件传递给每个方法调用;基于接口的Interface-based (I) IoC(通常称为类型1),它使用接口来声明组件之间的依赖性,例如,Serviceable, Configurable;基于Setter方法的Setter-based (S) IoC(通常称为类型2),它使用setter方法来设置组件之间的依赖性;基于构造函数的Constructor-based (C) IoC(通常称为类型3)。IOC是框架开发的一个基本原理。在开源软件中,不少的容器类框架都采用了IOC的思路。例如PicoContainer采用了类型3IOC技术,Spring主要采用了类型2IOC技术,而apacheAvalon则主要采用了类型1IOC技术。国内目前还没有基于IOC技术的产品。

    4.3企业功能组件

           基于AOP技术和IOC技术的企业功能组件,主要是按企业应用需求进行划分的。许多企业应用所需的功能如安全和用户验证模块,几乎在所有的系统里都需要重新开发一遍,这是对软件资源的极大浪费。而采用AOPIOC技术来设计这个功能模块,就完全可以在不同的系统里复用这个功能组件,极大地提高软件的复用率和生产效率。目前国内外都还没有对该课题进行专门的研究,没有现成的产品可用。

    4.4模板和向导规则

           每个企业功能组件需要有一个自描述的模板来定义该组件的功能和接口,以及所需资源。该模板基于XML技术,由企业功能组件供应者提供。向导规则则描述如何使用功能组件的模板来组合这些组件以成为一个完整的系统,向导规则最终体现为可视化的eclipse插件。模板和向导的技术标准为JSR175 METADATA,可借鉴的工具有XDocletANT。可视化的向导将遵循eclipse插件开发技术,并提供中文操作界面。

    5技术难点和目标

    5.1技术难点1

        遵循J2EE标准的应用开发框架。J2EE是一个基于Java语言的企业级应用开发的国际标准,使得应用开发只需要完成业务逻辑的对象封装,系统逻辑将由J2EE应用服务器自动承担。然而,从业务需求到应用框架的建立和代码实现之间有着很大的鸿沟,要求技术人员不仅非常了解J2EE标准,而且具有应用系统建模的高超技能。企业应用框架是在J2EE实现企业应用快速开发的基础,为业务逻辑的系统建模提供了基础模扳和应用架构的基本框架。

    5.2技术难点2

        通常的集成开发平台都是从技术层次纵向划分一个企业应用的开发过程,而不是从需求角度横向划分企业应用的功能模块。企业应用快速开发平台将从企业应用的需求特征出发,构建可复用的企业功能组件,所有功能组件具有自描述性的模板,使用向导工具动态组装所需功能组件以构建企业应用系统。

    5.3技术难点3

        使用企业应用快速开发平台开发的系统将运行于设计精巧的IOC/AOP容器之上,使得所设计的系统将不依赖于具体的中间件服务器,具有跨平台的特征。同时,运行于IOC/AOP容器之上的系统将不随底层中间件服务器的升级而变化,可以延长系统的使用寿命。

    5.4预期目标

    我们的快速开发平台主要为构建企业应用服务。企业应用范围包括典型的ERP系统、CRM系统、PDM系统等传统企业信息化系统和含行业应用系统提供通用的快速开发工具。该工具建立在Linuix操作系统之上,将扩大国产Linux操作系统在广大企业中的使用范围。

    主要技术指标和水平:

    实现应用框架和快速开发平台的基础:IOC/AOP容器,

    使用AOP技术实现可复用用的企业功能组件如安全、事务、分布式、缓存、消息等,使用基于XML技术的模板来自描述其功能和接口。

    实现基于Eclipse通用开发工具的快速应用开发插件,包括业务模型的编辑器、模板订制向导、和程序自动化生成的插件。

    5.5主要创新

        可复用的企业功能组件:包括安全、事务、对象关系映射、消息服务、缓存机制、日志管理等。每种组件使用AOP技术实现,对外提供统一接口,可横向插入系统,不具侵入性,不会影响其它子系统的设计实现。

        独立的抽象容器层IOC/AOP容器:企业应用遵循标准的J2EE标准,但是运行在一个抽象容器层之上,以便于将系统与底层的中间件服务器分离,这样可使企业应用独立于J2EE应用服务器。该容器采用IOC/AOP技术,是一个轻量级的容器,负责组件的生命周期管理并提供运行环境Runtime Context

        模板和向导:为每种组件提供一个模板,以描述该组件的功能和提供的接口。向导则使用模板定义的规则将该组件构建为子系统。

        构建系统:构建系统应该独立于各种集成开发环境IDE,具有自动化代码生成的功能,自动地将各种组件、各个子系统构建为完整的企业应用。

     

    展开全文
  • 敏捷构建-面向企业应用开发平台

    千次阅读 2009-08-27 23:47:00
    最近写了篇文章,贴出来供大家分享题目 敏捷构建-面向企业应用的开发平台 摘 要: 随着企业软件应用的逐步深化,客户对软件开发的工期、质量等要求越来越高,软件开发成本持续升高,所以软件企业的应用开发必须从...

    最近写了篇文章,贴出来供大家分享

    题目      敏捷构建-面向企业应用的开发平台

     

      :     随着企业软件应用的逐步深化,客户对软件开发的工期、质量等要求越来越高,软件开发成本持续升高,所以软件企业的应用开发必须从高效率、高质量的角度出发,采用敏捷构建的方法,实现快速开发、交付、实施,而这一切必须依托一套完成的软件开发平台解决方案,只有这样才能适应当前软件行业的需要,在激烈的竞争中,特别是参与国际化的竞争中,保持领先地位。

                      当前业界,无论是高级管理者还是普通开发人员,都已经达成共识,对于IT技术公司,平台是基础设施,不管面向的业务领域是什么,都必须基于一个平台去构建,无论是个性化IT服务,软件产品,还是电子商务,门户网站,抑或是SOASAAS,云服务,云计算,凡是成规模的企业,都是基于平台运作。凡是还在从头开始编码的公司,要么被淘汰了,要么即将被淘汰。是否具备基础平台或构建平台的能力已经成为软件企业核心竞争力之一。

                      企业应用软件提供商可以通过多年积累对主要的行业解决方案和主打的项目类别进行一些产品、系统的固化,形成积累,从而在后续同类方案、同类项目中实现以往研发成果的复用、减少人员投入,这样就可以解放出更多的人力来拓展其他项目,获取更多收入,提高企业的生产效率。瑞友科技的GAP平台就是这样的研发积累形成的平台产品。GAP平台全称是UFIDA Software Engineering Global Application Platform,是北京瑞友科技股份公司集多年应用开发实施经验所提炼的快速应用开发平台。

                      本文主要阐述了GAP平台的整体架构,以及在平台的开发过程中采用的一些创新性的技术,包括面向业务服务的开发(SOA),领域驱动设计(Domain-Driven Design),基于资源文件的组件技术,工作流技术等,基于此可以实现企业应用软件开发的敏捷构建,并形成一个完成的企业应用软件生态圈,技术、业务、解决方案、外围应用集成相辅相成,将极大的提高IT服务企业的核心竞争力,也是企业应用开发领域中的模式创新。

     

    关键词:     企业应用,开发平台,领域驱动,业务服务,组件技术

     

    1     综述

    1.1    背景

    随着企业软件应用的逐步深化,客户对软件开发的工期、质量等要求越来越高,软件开发成本持续升高,所以软件企业的应用开发必须从高效率、高质量的角度出发,采用敏捷构建的方法,实现快速开发、交付、实施,而这一切必须依托一套完成的软件开发平台解决方案,只有这样才能适应当前软件行业的需要,在激烈的竞争中,特别是参与国际化的竞争中,保持领先地位。

    从应用开发和应用外包的具体内容综合来看,两者有很大一部分其实描述的是相同的服务内容,只是具体实施者或服务提供者有所不同,由于服务提供方和提供形式的差异形成不同的商业形态,但从服务内容根本上完全可以看作是同类内容。对于这部分相同的内容,就是围绕企业级应用系统生命周期而产生的各种IT服务。这部分内容可以统称为“应用服务”。

    所谓应用服务,就是专业服务商为企业客户的管理类应用系统提供他们需要所有服务的统称。应用服务是IT服务的一个重要细分市场。它的主要特点有三个:(1)必须基于统一的平台;(2)提供覆盖应用系统的全生命周期服务;(3)服务形式多样。所以,一般情况下,应用服务也可以笼统地称为“基于平台的IT服务”。

    由此可见,对于应用软件开发商,平台是基础设施,不管面向的业务领域是什么,都必须基于一个平台去构建,无论是个性化IT服务,软件产品,还是电子商务,门户网站,抑或是SOASAAS,云服务,云计算,凡是成规模的企业,都是基于平台运作。如何去构建平台,有多种方式,一般情况下,企业应用软件提供商可以通过多年积累对主要的行业解决方案和主打的项目类别进行一些产品、系统的固化,形成积累,从而在后续同类方案、同类项目中实现以往研发成果的复用、减少人员投入,这样就可以解放出更多的人力来拓展其他项目,获取更多收入,提高企业的生产效率。

    瑞友科技的GAP平台就是这样的研发积累形成的平台产品,是北京瑞友科技股份公司集多年应用开发实施经验所提炼的快速应用开发平台。

    Global Application Platform(以下简称GAP)平台不仅是一套快速开发应用软件的辅助工具,而且提供了很高复用度的大规模软件定制开发模式。作为开放性的开发平台,GAP致力于解决当前软件开发过程中的三个关键问题:软件过程问题,软件复用问题,快速开发问题。并通过对这些问题的解决为客户提供更好的软件质量、降低客户的总体成本。GAP平台致力于解决大规模的 JavaEE 项目中遇到的共性问题,提供完整的 JavaEE 架构库,解决JavaEE项目中遇到的80%以上共性的技术问题。提供集成快速开发工具,支持快速业务应用定制开发,从而提高开发效率,增加软件的复用度,提升企业的项目交付能力,提高整个软件企业的敏捷性。

    GAP平台基于SOA思想构建,强调面向业务服务的架构体系,基础框架采取了轻量级的构建方法,同时在开发中使用领域驱动开发方法和组件式设计来提高组件的复用率和灵活性。核心架构控制在灵活轻量的规模内,以CBD(Component-Based Development)的方式集成平台中的众多模块,强调组件内部高内聚,组件间保持松耦合,各组件既能独立运行,也可以插件的方式集成到整个平台体系中来,实现企业应用开发的敏捷构建。

    1.2    应用平台特点

    一般来说,面向企业应用的快速开发平台,应该具备如下特点:

    一、稳定性

    n          成熟清晰的分层架构

    n          具备多年项目积累

    二、安全性

    n          提供安全可靠的数据传输和存储

    n          多维度、细粒度的权限控制

    三、规范性

    n          基于业界成熟规范

    n          完善的开发规范和指南

    n          学习曲线低

    四、扩展性

    n          平台基于SOA思想进行构建

    n          开放的API,面向接口编程

    n          基于组件的设计,分层的开发思想

    n          灵活适应业务需求变更

    五、全面的系统监控

    n          提供对日志、流程、数据和性能的分析监控功能

    六、提升开发效率

    n          提供大量可复用组件和业务引擎

    n          提供集成开发环境

    n          敏捷构建,快速实施

     

    2     系统架构

    2.1    技术体系

    GAP平台的技术框架主要基于JavaEE技术体系构建,遵循业界国际标准,采用先进技术,分层领域驱动,采用Spring技术、OSGi技术和O/R Mapping技术,整合Web框架StrutsJSF,形成核心技术框架GAP-Mainframe,屏蔽异构底层环境,为上层建筑提供各类基础服务。目前GAP平台的应用系统、通用组件库、业务组件库和业务套件等,都是基于该技术体系进行构建。

    2.2    分层架构

    层级理论是构建复杂系统的一个基本原则。对于软件这样复杂的人造事务,发现层级和运用层级,是分析和解决问题的基本原则。软件层级的划分不但为解决复杂软件开发探索一条可行的方法,同时也为应用软件产业链的完善起到推动作用,使得企业之间的协作关系更加清晰。

    层(layer)这个概念在计算机领域是一个应用相当广泛的概念。计算机本身就体现了一种层的概念:系统调用层、设备驱动层、操作系统层、CPU指令集。每个层都负责自己的职责。网络同样也广泛存在层的概念,最著名的是OSI的七层协议。

    使用层级理论最难的问题还是各个层都有些什么,以及要承担何种责任。以往的软件开发过程中大都自觉或者不自觉的利用层级理论来帮助提高开发效率。如抽象公共控件,开发基础类,编写开发辅助工具等行为都是层级理论的具体应用。但是目前开发过程中普遍存在的问题是缺乏对整个应用软件进行系统、完整的层次划分,从而导致软件中各部分之间的服务关系不明了,对支撑平台的开发缺乏明确的进度规划和目标。

    GAP平台在设计初期就对企业应用软件的层级进行了细致的划分,并在长达6年的开发、构建、完善过程中一直遵循这一分层架构。GAP平台的分层架构图如下:

     

    (图一)分层架构图

    n          技术环境

               主要指异构的项目实施环境,由于瑞友科技提供的是个性化的IT服务而非标准化的产品,我们在项目开发、测试、实施的过程中必须面对各种各样软硬件环境,包括各种服务器、操作系统、应用中间件、数据库等。基于GAP平台构建的项目能够保证项目可以运行在各种异构的技术环境中,目前GAP平台支持的操作系统有Windows ServerAix SolarisHP-UnixLinux等,应用中间件有WebLogicWebSphereSun APP ServerJBoss Tomcat等,数据库有OracleSQLServerDB2等。

    n          服务框架

               GAP平台的核心和基础,它为构建上层应用系统提供各种基础服务和扩展机制,包括日志服务、缓存服务、异常处理、事务处理、集群支持策略、分布式调用、配置服务、数据持久化、数据源服务、监控服务等,除此之外,服务框架层还集成了多个web框架,包括strutsjsf,基于领域驱动思想提供了对JavaEE四层架构的支持:

               展现层:提供完善的界面展示框架和丰富的界面控件,解释来自UI层的命令

             控制层:用来协调应用活动,转发请求,处理调用方式等,它不包含业务逻辑,它不持有业务对象的状态

             领域层:本层包含关于领域的信息。这是业务软件的核心所在。在这里保留业务对象的状态,对业务对象和它们状态的持久化被委托给了持久化层。

               持久化层:本层作为其他层的支撑库存在,它提供了数据对象之间的通信,实现对业务对象的持久化,屏蔽数据存储层的环境影响。

    n          引擎、组件和工具

               服务框架层之上是基本的业务支撑引擎、通用组件和快速开发工具,支撑引擎包括工作流引擎、规则引擎、全文检索引擎、报表引擎,通用组件包括组织权限、工作流平台、消息平台、接口服务平台、业务日志、任务调度、站内短信、预警平台、内容管理等,快速开发工具包括GAP-IDE、项目管理器、代码生成器、数据字典等,这一层的组件把技术环境和具体业务逻辑进行了很好的隔离,在商业环境的运行规则发生改变的情况下,依然能保证整个系统的稳定性。

    n          业务组件

     

             业务组件与通用组件不同,业务组件层主要包含为解决企业特定业务职能而抽象的业务模型及其实现。每个业务组件代表企业某个相对独立业务或者业务链条,每个业务组件都具备相关的领域知识,基于每个领域的成熟解决方案构建而成,这样的业务组件不同于某个应用系统中简单划分的业务模块,它是高度抽象化,高度可扩展的。目前我们规划的领域主要包括金融领域业务组件、保险领域业务组件、物流领域业务组件。

    n          业务套件

               业务组件层之上是业务套件,业务套件的概念是由GAP平台项目创新性提出,它既不是传统意义上的标准化成品,也不是细粒度的业务组件和技术组件,而是粗粒度的业务组件集合,每个领域的业务套件基于GAP平台底层框架构建,选取通用组件,引擎和该领域的业务组件进行扩展开发,形成一系列该领域的业务套件。业务套件可以理解为传统意义上的准产品,

    n          领域应用

             领域应用层就是针对特定用户特定项目进行的个性化项目开发,解决特定领域的应用问题,领域应用层通常会依赖一个或多个业务套件,同时根据客户的个性化需求还会使用到相关的业务组件、通用组件和支撑引擎。这是整个软件结构中的最上层,它调用下面各个层次的服务,形成最终呈现给客户优质的软件产品。

     

            五个层级自定向下依赖,形成一个完整的企业应用开发解决方案。

    2.3    功能架构

    目前GAP平台的功能架构如下:

    (图二)功能架构

    整个GAP平台由以下几部分组成:

    n          基础框架,提供各种基础服务,包括主框架,通用列表控件和性能监控等

    n          统一的集成开发环境GAP IDE,在提供标准IDE开发调试功能的基础上,又开发和集成了大量快速的开发和部署插件,以满足业务开发人员的使用

    n          应用系统,包括工作流平台,组织权限系统,接口服务平台,消息平台和数据字典

    n          组件库,包括业务日志,规则引擎,WEB控件,全文检索引擎,任务调度,报表工具,站内短信,论坛等

     

            在整个平台的开发过程中,我们使用了大量纷繁复杂的技术,进行了持续的自主研发,不断创新与完善,同时基于不重新发明轮子的原则,选用了部分优秀的开源项目进行集成和二次开发。整个平台的技术体系,敏捷的开发过程和技术创新,都保证了平台的先进性和创新性,同时保证了瑞友科技的技术先进性和业务敏捷性。

    3     技术创新

    在长达六年的平台建设过程中,我们进行了大量的技术创新,来保证平台的敏捷性和先进性,一下简要介绍几个主要的技术创新点。

    3.1    面向业务服务的开发

    3.1.1      什么是业务服务

    SOA是一套成熟的方法论和架构体系,随着相关技术体系和标准的成熟,OSOA组织在20073月发布了SCA 1.0(服务组件架构) SDO 2.1(服务数据对象),同时市场上的ESB(企业服务总线)产品逐渐成熟,这标志着无论是在方法论还是技术实现方面,SOA已经成为企业新一代首选的、先进的、成熟的、标准的应用架构。

    SOA是一个完整的软件软件架构体系,包括运行环境、编程模型、技术标准、策略及其方法论,其核心思想是服务,并涵盖服务的整个生命周期:建模、开发、装配、运行、管理。基于对SOA体系的理解,我们认为SOA的核心理念是业务驱动,其目标是为了满足随需应变的业务需求,所以我们在GAP平台的体系架构中创新性提出了业务服务(Business Service)的概念。

    每个业务服务表示一个完整的业务单元,多个业务服务组成一个完整的业务模块,多个业务模块组成一个子系统,多个子系统组成一个完成的项目或产品。例如针对订单的管理,其业务逻辑是由业务服务OrderService及其相关的领域对象实现,OrderService构建完成之后,由于其基本覆盖了订单相关的所有业务逻辑,是一个相对独立的业务单元,所以它可以被多个业务模块复用,甚至可以被系统外部的环境访问,整个系统都是有这样的Business Service,其复用率和扩展性将大大增强。

    从语义上来看,我们提出的业务服务并不特指某一种技术或标准,比如Web Service。在不同的软件环境中,业务服务的具体表现形式可以进行动态转换。例如在容器内部,每个BS将以Service Bean的形式为上层环境提供服务,属于直接调用,而在容器外部(异构环境或同构环境不同应用系统),BS又会根据具体的业务需求表现为Web ServiceRMIHttpInvoke等,与其他系统进行远程交互。

     

    3.1.2      面向业务服务的开发

     

    基于Business Service的技术架构图如下

    (图三)基于Business Service的技术架构图一

     

    从上图可以看出,GAP平台技术体系的核心是Business Service,我们完全面向业务服务编程,所有的业务服务以IOC的方式注入到系统中,系统的业务逻辑,事务,领域模型,数据仓库都由业务服务单元处理,各个业务单元通过组合,可以形成一个业务组件(Component)为上层体系提供服务。

    由于整个系统是基于业务服务构建的,我们可以很容易基于业务服务提供多种类型的访问方式,包括最普通的本地调用,为异构系统提供基于SOAPWSDLWeb Service访问,为富客户端提供RMI远程调用,同时还提供一些轻量级的远程访问方式,例如HttpInvokerhessianburlap等分布式远程访问等,可以支撑各种异构系统的集成和数据交换。

    业务服务管理模块可以为内外部系统提供服务注册功能,把基础框架,各应用系统和组件库中的组件提供的各种业务功能注册为一个服务,具体的技术实现包括Web ServiceRMIMQ等,同时提供服务的订阅、发布和监控机制,还可以引入其他系统的标准Web Service。通过对业务服务的管理,可以使GAP平台在构建业务应用时变得更灵活且能够更快的响应不断变化的业务需求和业务整合,针对异构系统的整合和交互,变得透明而简单。

    同时业务服务还可以注册到工作流系统中,通过业务表单的形式为企业流程管理提供服务。

     

    GAP平台的技术体系和基于业务服务的设计思想,可以在下图中完整的体现出来:

    (图四)基于Business Service的技术架构图二

     

    3.2    领域驱动设计

    3.2.1      领域驱动设计简介

    2004年著名建模专家Eric Evans发表了他最具影响力的著名书籍:《Domain-Driven Design Tackling Complexity in the Heart of Software》(中文译名:领域驱动设计软件核心复杂性应对之道),书中提出了“领域驱动设计(简称DDD)”的概念。

    领域驱动设计事实上针对是OOAD的一个扩展和延伸,DDD基于面向对象分析与设计技术,对技术框架进行了分层规划,同时对每个类进行了策略和类型的划分。领域模型是领域驱动的核心思想,采用DDD的设计思想,业务逻辑不再集中在几个大型的类上,而是由大量相对小心的领域对象(类)组成,这些类具备自己的状态和行为,每个类是相对完整的独立体,领域模型就是由这样许多的细粒度的类组成。基于领域驱动的设计,保证了系统的可维护性、扩展性和敏捷性,在处理复杂业务逻辑方面有着先天的优势。

    领域驱动设计分层结构如下:

    (图五)DDD分层架构

    (表一)DDD各层含义

    用户界面/展现层

    负责向用户展现信息以及解释用户命令。

    应用层

    很薄的一层,用来协调应用的活动。它不包含业务逻辑。它不保留业务对象的状态,但它保有应用任务的进度状态。

    领域层

    本层包含关于领域的信息。这是业务软件的核心所在。在这里保留业务对象的状态,对业务对象和它们状态的持久化被委托给了基础设施层。

    基础设施层

    本层作为其他层的支撑库存在。它提供了层间的通信,实现对业务对象的持久化,包含对用户界面层的支撑库等作用。

     

    领域模型的基本要素包括:实体、值对象、工厂、仓库、服务,如下图所示

    (图六)DDD要素和模式关系

     

    3.2.2      基于DDD的创新

    我们基于DDD的创新点主要有两个:

    第一,我们在GAP平台的开发过程中,结合我们的产品特点,针对领域驱动的四层模型进行了细分,形成了GAP平台自己独有的分层架构模型。

    如下图所示:

    (图七)GAP平台分层架构模型

    View:展示层,由于GAP平台主要面向B/S架构,展示层主要由web资源文件组成,包括JSPJS和大量的界面控件,采用了AJAX技术,负责向用户展现丰富的界面信息,并执行用户的命令

    Control:控制层,负责展示层请求的转发、调度和验证,同时处理后台返回的异常信息,同时控制层可以通过Action做远程的请求

    Domain:领域层,是系统最为丰富的一层,主要负责处理整个系统的业务逻辑。这一层主要包括上一章提到业务服务和领域模型,同时负责系统的事务管理

    Persistence:持久化层,主要负责数据持久化,支持O/R MappingJDBC,对数据源的访问提供多种访问方式。

    另外,我们引入了SpringIOC容器,系统的控制层、领域层和持久化层元素都有IOC容器统一管理,实现完全的接口分离和解耦。

     

     

    第二,在保证DDD核心思想的基础上,我们对DDD的基本要素进行了扩展,以满足GAP平台的实际需求,如下图所示:

    (图八)GAP平台领域模型

    GAP平台领域驱动设计要素主要分为以下几种:

    业务服务:遵循GAP平台的设计思想,核心仍然是业务服务(Business Service),一个业务服务可以由一个或多个领域模型(DomainModel),值对象(VO),实体(Entity)和数据访问对象(DAO)组成,去完成一个完成的业务逻辑单元。业务服务主要负责事务处理和维护各个领域对象之间的关系,同时为上层访问提供服务。

    领域模型:真正处理业务逻辑的类,例如订单(OrderModel),具备自己的属性和行为、状态,可以聚合VOEntity,持久化数据可以委托给Entity,如果没有聚合Entity,也可以直接被持久化。

    实体类:只具备需要持久化的属性,被领域对象聚合,被DAO调用实现数据的持久化。如果业务逻辑相对简单,可以合并到领域模型中。

    值对象:不具备唯一标识,不进行持久化的对象,一般用来进行参数传递。

    数据访问对象:不处理业务逻辑,主要负责领域模型或实体类的持久化。提供多种持久化方式。

     

    那么如何在GAP平台中实现一个领域模型设计呢?可以按照如下步骤进行:

    1.          确定业务服务(Business Service),根据业务需求和功能模块划分,确定业务单元,每个Business Service是一个业务单元,覆盖相关的领域对象。

    2.          定义领域对象(Domain ModelVOEntity),根据业务单元的业务逻辑定义领域对象,通过UML方法和设计模式描述领域对象。

    3.          定义领域对象的属性和关联关系,确定领域对象的各种属性和各个领域对象之间的关联关系

    4.          为领域对象增加行为,根据业务需求(系统用例和界面原型等)为领域对象增加行为,并定义哪些方法要被业务服务所用

     

        经过多年的平台建设和项目应用,我们创造了一套适合企业敏捷构建的领域设计方法,并进行了重要实践。目前大量项目已经采用了这种方法进行企业应用系统构建,并取得了成果。事实证明我们在领域驱动设计方面取得了重大创新和突破。

    3.3    组件装配技术

    3.3.1      组件技术

    目前业界言必提服务,组件技术说的越来越少了,但对于企业应用开发领域,组件技术恰恰是非常必要的,是提升复用率和敏捷构建的基础,也是很多应用开发平台没有解决好的关键问题。

    组件技术提出的很早,但是业界对于组件的定义并没有完全达成一致,通常而言这个术语表示一个软件模块,这个模块可以独立地作为应用程序的一部分发布,或者被组装到更大的组件中去。这样看来,小到一个动态链接库,一个COM组件,一个Web Service,大到工作流,组织权限管理,规则引擎等,都可以叫组件。

    构建一个组件并不困难,关键是如何把一些规模较大的组件进行装配与合并,形成一个更大的系统,这是业界的难题。造成这个难题的原因是基于浏览器的应用!软件发展到现在,大部分应用都是基于internetintranet的,软件载体是浏览器。这就造成了现代的企业应用软件具备大量的资源文件,资源文件已经成为软件产品的主体之一,而不仅仅是原来的可编译二进制文件,例如jardllexe等,这些资源文件包括:jsp文件,脚本文件,properties属性文件和各种xml配置文件,如何处理和组装这些资源文件是企业应用开发平台不可避免的问题,这也是当前的流行技术SCAOSGi没有解决的,SCAOSGi各自提出了优秀的技术架构和模型去解决组件的装配、解耦以及异构系统集成的问题,但是没有涉及到资源文件的处理。

    很多企业有自己的开发平台,也开发了很多组件,但是当项目组需要从组件库选取组件进行开发时,发现必须依赖组件的构建文档,进行手工复制组件,组件集成,修改各种复杂的资源文件,合并,最终形成一个项目,再导入IDE环境进行开发,测试。这样大大降低了企业应用开发的敏捷性和生产率,而且依赖手工构建,必然导致这样那样的错误,使组件的复用率大打折扣。

     

    3.3.2      GAP平台的组件装配机制

    GAP平台在开发的过程中,同样遇到组件装配的问题,目前GAP平台共18个大型组件,组件之间的交互可以通过接口进行分离,但是资源文件的依赖关系是组件装配无法回避的问题。由于Web开发的规范限制,每个组件都会使用到一些公共文件,包括web.xml,公用的jsp文件,公用的配置文件等,而每个组件由于采用的技术需要,在这些公用文件中会增加自己的配置信息,这就为组件装配增加了难度。

    为了保证组件开发的独立性,我们采用了各个组件独立开发,然后再统一装配的原则。基于以上原则,我们采用了如下创新技术完美实现了组件的构建和装配。

    主要实现技术:ANT技术,Xdoclet技术,EclipsePlug-in技术和WTPfacets机制

    实现步骤:

    1.          各个组件独立构建,编写自己的ant脚本,提出各组件自己需要的资源文件和二进制文件

    2.          各个组件提取自己在公用文件中使用的配置信息,形成独立的数据文件,该数据文件只包含自己需要的配置信息。

    3.          把公共资源文件做成模板,并在其中设置其他组件需要的Merge Point,例如

             

    <XDtMerge:merge file="workflow-global-js.data"></XDtMerge:merge>

     

              Merge Poing在自动构建时由Xdoclet进行解析处理,把该段内容替换成workflow-global-js.data文件中的内容,完成合并工作。

    4.          使用ant技术编写TotalBuile脚本,负责调用各个组件自己的ant脚本,构建完成的GAP插件内容

    5.          使用EclipsePlug-in及其WTPfacets技术实现GAP平台项目管理器插件,其主要完成的工作如下:

    a)          提供GAP项目创建向导

    b)         增加选择GAP组件的wizard page,显示当前版本提供的所有组件,用户可以自定义自己需要的平台组件

    c)          提供配置功能,通过配置文件设置各个组件ID,名称,关联和分组关系,依赖关系,URL和页面展示方式等

    d)         设置基本环境变量,复制资源文件,设置项目所需classpath,根据merge point进行文件的merge

    e)          删除构建文件,项目创建完成

    (图九)GAP平台组件装配

    如上图所示,通过GAP项目管理器,可以实现对各个组件的完美装配,项目开发人员可以根据客户的业务需求,灵活选择需要的组件,组件装配完成之后即形成一个完成的Project框架,导入GAP平台的开发工具VenusTools2009,即可进行设计、开发、调试、运行,保证了企业应用系统构建的灵活性和扩展性。

    4     结论

    面向企业应用的开发平台是IT服务的基础,也是未来的发展趋势,瑞友科技在长达6年的时间内始终坚持科技创新,自主研发的路线,到目前为止形成了以软件平台技术为基础的核心竞争力。基于该平台,可有效促进外包服务企业承接个性化IT服务项目,降低软件外包服务企业的入门门槛的技术难度。同时这一研究成果也为进一步实施中国软件国际化战略,提升中国软件在世界范围内的影响,扩大和巩固国产软件和中国品牌在国际市场的竞争优势,培育国际化的软件企业发挥应有的作用和示范效果。

     

    GAP平台主要解决的问题是:

    1、   企业应用软件的层次模型

    2、   基于组件的开发与设计,各组件既能独立运行,也可组合装配形成完整应用

    3、   具有网络拓扑结构的跨企业组织模型,细粒度的权限控制

    4、   具有技术环境兼容性的B/S柔性软件框架

    5、   国际化软件开发环境

    6、   基于运行时动态组构的计算机辅助应用软件开发工具

    7、   以消息总线、数据总线和控制总线为基础的业务流平台

     

    本文同时还阐述了GAP平台的三个主要的技术创新点,如下:

    1.          面向业务服务的开发

    2.          基于领域驱动的设计

    3.          组件装配技术

    目前GAP平台的最新版本是3.5,基于GAP平台的对外合作已经全面展开。在现有的平台基础上,我们已经开始构建GAP5.0的开发内容,以期有更多的技术创新和研发成果,为中国企业应用领域做出更大的贡献。

     

    References:

     [1]     Richardson, Chris. POJOs IN ACTION. 出版社: Oreilly & Associates Inc, 2008. [书籍]

     [2]     ()Eric Evans;孙向晖(注释), 领域驱动设计--软件核心复杂性应对之道(注释版). 出版社:人民邮电出版社 2007. [书籍]

     [3]     王紫瑶;南俊杰;段紫辉;钱海春;陈荻玲;李冬, SOA核心技术及应用. 出版社: 电子工业出版社

     [4]     http://www.eclipse.org/articles/Article-BuildingProjectFacets/tutorial.html, Extending WTP Using Project Facets

     

    展开全文
  • 复杂的企业应用系统都会基于一些平台开发和运行。这些平台软件主要提供一些各个应用系统共同需要的功能,如用于数据传输的消息中间件,用于远程数据交互,方法调用的各种组件技术,用于数据存储和访问的数据库,做...
     复杂的企业应用系统都会基于一些平台来开发和运行。这些平台软件主要提供一些各个应用系统共同需要的功能,如用于数据传输的消息中间件,用于远程数据交互,方法调用的各种组件技术,用于数据存储和访问的数据库,做规则推理的规则引擎,做数据展现的图表工具,做流程编排的流程工具等等。这些工具彼此配合构成一个完整的企业应用平台。企业应用开发者基于平台开发企业应用系统,可以专注于企业业务逻辑的实现,其他公共的功能由平台提供。
    

    我按现在SOA的思想来绘制企业应用平台软件结构层次图,然后再和EAI平台,应用服务器来对应。

     

     

    <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    企业应用平台软件结构层次图

     

    企业应用平台软件一般都包括设计时编排配置工具和运行时引擎。

    2.1  服务总线

    服务总线包含用于底层数据传输的消息中间件。具备一定的功能,对外提供接口的功能单元称作服务,不同类别的服务会运行在服务总线上的不同容器内。容器在消息中间件基础上支持远程数据交互,方法调用,支持异构接口和系统间数据格式的转换。基于这些服务可以编排实现逻辑流程来完成更复杂的功能。

    服务的实现方式可以有多种:

    (a)     程序语言Java, C++等。

    (b)     已有的组件技术EJB,CORBA,COM.

    (c)     调用已有软件,或者系统的功能。

    (d)     基于已有服务编排更复杂的服务。

    一般EAI平台的功能和服务总线的功能对应。EAI平台提供各种技术适配器,产品和系统适配器封装已有技术,产品和系统的功能为基础的服务,也支持用程序语言实现一些功能单元。通过EAI流程编排工具可以把这些基础的服务功能单元编排为复杂的流程。

    J2EE应用服务器里的EJB容器,提供对EJB组件的支持。对应于服务总线上的一种类别的服务容器。事实上服务总线是个集成组件技术的平台,也可以称作组件容器的容器。现在应用服务器的功能越来越多,支持Web Service组件技术,加入符合JCA规范的集成工具等等。在功能上也更加靠近服务总线。

    服务总线是分布式的服务平台,之上的服务都是可以分布部署运行的。EAI平台有分布式的(如TIBCOEAI平台),也有集中式的。J2EE应用服务器一般都是集中式的。从系统的扩展性,可靠性,性能等方面讲,分布式系统都更有优势。

    所有这些平台都提供流程编排和驱动工具,提供图形化的流程编排方式,基于服务功能单元编排逻辑流程,把这些对数据做传输交互,内容格式转换,计算处理的操作串起来,组合成更复杂的操作,提供粒度更大的功能。这种流程编排支持选择,循环,调用子流程等逻辑流程功能,支持用于做服务功能单元之间数据内容映射的功能。流程编排语言的语法定义也类似于过程程序语言的语法定义,但一般都比程序语言简单,没有面向对象语言的特点,不支持泛型,虚函数等功能,没法实现很好的功能封装和复用。数据内容映射和转换语言也是如此。所以一般使用流程编排和驱动工具,适合在已有功能单元的基础上编排实现不很复杂的逻辑流程。如果业务本身很复杂,流程分支多,对象变量多,子流程多,彼此关系复杂,这种情况下最好使用其他实现方式来实现这些业务,而不是使用流程编排工具以图形化的方式来开发这些业务。

    使用服务总线平台开发应用,根据不同的情况选择不同的服务实现方式:

    (a)      调用已有技术实现的功能,已有软件或者系统的功能,可以使用适配器作用的服务。

    (b)     如果是复杂的数据计算处理,最好使用程序语言来实现,选择程序语言的服务开发方式。

    (c)      如果需要做规则推理,又不想自己实现规则推理逻辑的话,可以使用规则引擎,自己只需要定义规则。

    (d)     基于已有服务的不很复杂的流程,可以使用流程编排语言来实现,当然是图形化的方式。

    从上面的分析说明,可以看到服务总线做了数据传输交互,数据格式转换,连接已有系统等技术层面的工作;应用开发者要做的是数据计算处理,规则定义,逻辑流程编排等业务逻辑的实现。

     

    2.2 业务流程管理

    业务流程管理在设计时层面更靠近业务开发人员,提供业务层面的流程编排,企业组织结构的建模;在运行时增加人机交互,提供工作流审批的功能。业务流程管理工具可以调用服务总线上的自动流程服务和其他各类服务。

     

    2.3 数据展现和用户界面

    数据结果展现可以是各类图形,报表,用户界面可以使用胖客户端或者浏览器。对于一个包含很多应用系统的企业,门户为这些系统提供一个统一的入口。

     

    2.4 事件处理和业务活动监测

    企业应用系统中数据流可以分为业务数据流和监测控制流。 事件是应用系统的监测和控制数据,各个层面的系统状态信息,操作记录都可视为事件。事件之间有时间和因果的联系。状态模式诊断,故障原因推理,控制动作决策这样的场景都会使用事件处理机制。基于具体业务数据的业务活动监测需要用到事件处理,而事件处理一般都基于规则引擎来做事件推理和判断。

     

    2.5 规则引擎

    在数据计算处理范畴,有一种处理模式区别于普通的过程式处理。对于待处理的对象,有很多的处理规则,即满足什么条件做什么动作。程序需要持续匹配对象状态确定需要做什么操作。而这些规则在系统运行时会经常由业务人员改变,所以规则引擎就应需而生,作为规则的解释执行虚拟机,分割了规则推理操作和规则本身。规则可以由业务人员编写,由规则引擎解释运行。

     

    2.6 商业智能

    商业智能对历史数据进行分析统计挖掘,发现数据中的模式和规律,为商业活动提供行为决策。对比实时性很强的事件处理,商业智能平台偏重的是海量历史数据的挖掘处理。

     

    2.7 基础工具产品

    平台的基础工具产品包括:

    (a)     部署管理工具。用于应用工程的打包部署,应用系统内机器,软件,部署实例的管理。

    (b)     策略控制。用于服务功能基本单元的管理,服务访问的安全控制。

    (c)     平台监测控制。用于运行时平台各个软件实例的状态监测,软件运行出错时的处理,宕机时的自动重启等等。

    展开全文
  • 认识ES2007平台 CHARISMA平台,是一款企业应用的快速开发平台。利用它,企业开发商均可以非常方便、快速、高质量地开发复杂的业务系统,包括OA、CRM、EAI、MIS、ERP、电子政务平台、信息资源管理系统、网上直报...
  • 我们的开源项目-2013年度开源社区线下聚会《JEECG微云快速开发平台-SAAS企业应用在线开发与微信移动应用》PPT分享
  • 简介浙江移动物联网应用开放平台...从而降低物联网企业和个人(创客)的研发、运营和运维成本,使物联网企业更加专注于应用,共建以浙江移动物联网应用开放平台为中心的物联网生态环境。浙江移...
  • 企业应用开发开放源码项目

    千次阅读 2003-06-27 14:45:00
    北京奥捷特通信技术有限公司技术总监 刘天北1开放源码运动是家中的...随着开放源码运动的不断深入,它在软件开发的各个特定领域都投下了意味深长的身影。目前一个可见的趋势是,开放源码的潮流已经越出了操作系统、数据
  • JavaEE Web应用开发平台WebBuilder开发团队专访

    万次阅读 多人点赞 2012-10-22 11:22:57
    WebBuilder是一款基于JavaEE的跨平台、数据库和浏览器的Web应用开发平台。使用WebBuilder能简单、快速地开发出企业级的Web应用系统。  WebBuilder官网:http://www.putdb.com  为了使大家对这一平台有更深一...
  • JSAAS=云应用框架+SAAS+应用开发平台

    千次阅读 2017-03-28 17:09:58
    JSaaS如何支持传统应用开发与云应用开发
  • 下面我们来做一些最简单的,就是SUP的HWC应用,HWC是Hybrid Web Container的缩写,也就是大家熟悉的混合应用,这种应用结合了原生SDK和Web应用的优点,最方便的就是一次开发,跨平台运行。 要运行HWC应用,用户的...
  • 钉钉第三方企业应用开发 PHP 第一版

    千次阅读 2019-12-19 14:27:30
    2.然后选择需要开发钉钉的企业,进入到我们的开放平台,进行开发 点击创建应用,会出现这些相关信息需要填写 在开发过程中我们一般首选测试应用, 1应用名称自定义 2应用LOGO一般正式发布后都会上传你们贵...
  • 钉钉小程序h5微应用企业内部应用开发

    千次阅读 热门讨论 2019-12-04 20:01:52
    钉钉在企业应用已经是一件很普遍的事情了,我这讲讲钉钉应用小程序中的h5微应用的开发。本文借鉴了lnexin的文章。主要从两个demo来阐述,第一个是通过依照钉钉官网的描述,html+java实现;第二个是使用vue+java实现...
  • 使用邮箱注册账号,这里吐糟一下,微信不同平台得使用不同的邮箱。...认证通过后,再申请应用,申请应用需要上传盖有公司公章的扫描图片(这里可不能用手机拍照上传噢,通不过的),每次申请大概花个2-3天左右。 ...
  • 现在市场上最主流的手机平台还是iOS和Android,所以不能少了我们的安卓平台开发啊,Android平台其实算是最简单的,因为它是使用Java来开发的,学起来最快最容易上手。 开发环境也是我们最熟悉的eclipse,是不是很...
  • 做完了iOS的离线应用后,可以尝试一下其它手机平台的离线应用开发,其实开发流程和方法都一样的,在SUP的最新版本里面,所有手机平台的object api都采用了相同的数据更新方式,所以生成的API代码使用方法完全一样。...
  • 钉钉企业应用开发指南

    千次阅读 2018-12-10 16:01:41
    最重要的第一步是获取用户企业数据(身份验证+通讯录管理),是应用上线必备要求。 综合文档:https://open-doc.dingtalk.com/microapp/serverapi2 移动端E应用API:...
  • 微信公众平台应用开发实战.rar

    千次下载 热门讨论 2015-07-29 20:22:04
    本书全面介绍了微信公众平台应用开发所需的各项技术,系统解读了微信公众平台开放的API和各项高级功能,逐步讲解了微信公众平台应用开发的流程、方法和技巧。注重实战,不仅通过3个实战案例呈现了娱乐型、应用型、...
  • BeX5企业快速开发平台,提供工作流,bpm,workflow,报表,协同门户,组织权限服务,一次开发,跨前端发布运行,云+端时代企业应用开发利器.企业云+端应用开发 就用BeX5BeX5企业快速开发平台 ⇒ 云+端时代企业应用开发利器...
  • 基于Web开放平台应用开发的一些研究

    万次阅读 多人点赞 2012-06-28 10:27:04
    他们的题目是:基于Web开放平台应用研发,刚开始看到这个题目感觉这个东西好像很高深的样子,不过经过在网上查了一下,其实不就基于一些开发平台提供的API,开发一些有关这些开放平台应用嘛。虽然以前也没接触过...
  • 企业微信自建应用开发初探

    千次阅读 2019-04-02 13:30:00
    企业微信是腾讯推出的一个新的办公协作平台,通过与微信一致的沟通体验,为企业员工提供最基础和最实用的...本文以该项目为例对在企业微信平台开发企业应用的特点进行了总结,重点分析了企业微信开发平台应用开发...
  • 使用O2OA二次开发搭建企业办公平台(一)平台部署篇:平台下载和部署 使用O2OA二次开发搭建企业办公平台(二)平台部署篇:端口冲突和服务器端口配置 使用O2OA二次开发搭建企业办公平台(三)平台部署篇:使用外部...
  • 前面文章中介绍了如何在OSGI应用中整合Spring和Mybatis框架,本篇文章开始介绍如何使用OSGI技术开发Web应用。对于传统的Java EE应用应用中涉及到的Web元素无非就是Servlet、JSP、静态资源等,其中静态资源包括HTML...
  • 随着智能手机及APP应用程序的普及,...现在是时候打消这种顾虑了,目前国内应用之星技术开发团队开发了一款手机应用开发平台,它能帮助企业创建简单APP应用的平台,通过这个平台,就算是一个对程序一窍不通的普通网民都
  • 一篇关于Flex技术在企业应用开发,发表于InfoQ
  • 3. 我做的是企业的内部应用,进入【钉钉开放平台】,登录开发者后台,企业的管理员才有登录权限,创建一个企业内部的H5微应用,填入项目链接地址等信息。 下一步配置应用权限,将自己的钉钉都加入开发权限中,最后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 744,896
精华内容 297,958
关键字:

企业应用开发平台