基于对象关联模型的企业应用软件代码生成器(部分供参考).doc_第1页
基于对象关联模型的企业应用软件代码生成器(部分供参考).doc_第2页
基于对象关联模型的企业应用软件代码生成器(部分供参考).doc_第3页
基于对象关联模型的企业应用软件代码生成器(部分供参考).doc_第4页
全文预览已结束

下载本文档

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

文档简介

基于对象关联模型的企业应用软件代码生成器(部分供参考)摘要:企业应用软件必须具备快速重构的能力以适应业务环境的频繁变化,而灵活可变的业务模型+代码生成器是实现系统敏捷性的一个有效手段.以业务对象间数值型关联关系为出发点,提出一种基于日志的业务对象关联模型,将对象间关联关系与业务对象清晰分离开来,并据此设计了一种代码生成器以支持在模型变化之后系统行为的快速变化和代码的自动生成,并在对象状态与关联日志的支持下实现企业业务数据的灵活追溯.关键词:企业应用软件;业务模型;对象关联关系;代码生成器;日志Business Object Association Model based Code Generator for Enterprise Software and ApplicationsWANG Zhong-jie, ZHAN De-chen, YANG Mei-rong, CHENG Zhen, XU Xiao-fei(School of Computer Science and Technology, Harbin Institute of Technology, Harbin, 150001)Abstract: Enterprise software and applications (ESA), e.g., ERP, CRM, SCM, must have the ability of agile reconfiguration to adapt to rapid changes in external business environments, while flexible business models + code generation tools is an effective approach to achieve adaptability and agility of ESA. In this paper, starting from the numerical associations between business objects, we present a log-based object association model, in which complex and volatile associations between objects are clearly separated from the inner structure of objects themselves. According to this model, a code generator is designed and implemented to support rapid changes of system behaviors and automatic code generation after requirement changes. Run-time states of business objects and association information between objects are separated as logs from business object information, and with the aid of such logs, flexible traceability between business data could also be conveniently realized. Practical applications have validated the significance of this approach.Keywords: Enterprise software and applications, business models, objects association, code generator, logs引言现代企业所处的市场环境的快速多变导致企业管理模式也随之发生频繁变化.为了支持这些变化,诸如ERP等企业信息系统(ESA)必须具备快速重构的能力12.另外,不同行业、不同企业的管理模式差异较大,也需要ERP产品具有动态可配置性和个性化,以满足企业对ERP系统的灵活定制.就目前的ESA开发方式而言,要实现这种敏捷重构性有以下四种手段:采用先进的系统建模技术,通过提高模型的表达能力来实现模型适应变化的能力,进而实现信息系统的敏捷性.相关研究包括敏捷信息系统(AIS)2、快速可重构信息系统(RRIS)3、可重构信息系统(RIS)4建模方法、动态企业建模(DEM)5等.采用先进的软件方法和软件开发技术,实现软件系统的重构能力.通过设计模式、热点驱动的软件框架、基于构件的软件开发、软构件库等先进的软件技术,从设计与实现级提高系统的适应能力.另一方面,采用诸如分布式计算、异构信息集成技术、工作流技术、多智能体技术等,从软件的分布式、异构性等方面对系统进行敏捷性改善.采用先进的运行阶段引擎,实现ERP系统的运行阶段的灵活性.这方面研究的主要思路是:通过业务过程管理系统和业务规则管理系统及相应的引擎对ERP系统核心业务过程与业务规则进行运行时管理,支持ERP系统的动态性,将业务过程.通过敏捷开发方法将变化的模型快速的生成可执行的代码.当企业业务发生变化时,通过建模工具修改模型,然后在代码生成器的支持下重新生成可运行系统.其中,(1)主要针对模型,(2)(3)主要针对最终的软件系统,(4)则针对模型与系统之间的映射,这种优化思路与模型驱动的体系结构(MDA)是一致的.如图 1所示,一般的代码生成在MDA框架中处于PSM->Code的地位.但实际上,从CIM、PIM、PSM都可生成代码.CIM反映了业务的核心内容(即业务逻辑),而PIM在其基础上加入了软件架构与功能的基本信息,PSM则在PIM的基础上加入了特定软件平台的信息.但软件信息和平台信息较之业务信息通常并不发生太多的变化,因此,代码生成器的核心还是CIM模型.图1代码生成在模型驱动的体系结构(MDA)中的位置代码生成器的关键应首先构造出良好的业务模型,即如何将业务表达为一组可识别的模型.如果没有好的模型,那么代码生成的时候需要非常复杂的工作量,最终的源代码也难以具有较好的结构.在ERP中,业务模型的核心是过程视图,而每一个业务过程中可看作是所处理的内容均为业务对象(如单据、资源、报表等)、一系列作用于业务对象的操作,以及表达操作之间执行次序或触发关系的相关规则三个部分.因此,如果能够建立灵活的业务对象及其操作模型,就可以实现ERP系统的敏捷性.传统的ERP模型均采用面向过程的方法,对企业内各种业务进行流程建模,活动作为菜单的组织形式.这种方式存在缺点:建模人员难以发现企业内所有的过程,从而导致模型的不完备;过程的结构非常复杂(分支、循环等),建模人员的水平决定了建模的正确性;等等.而采用对象模型的方式,则杜绝了这种缺陷.企业内对象的数目是一定的,只要把所有对象找出来(这是比较容易的),得到其属性、状态、操作,即可保证模型的完备性和正确性.业务对象不是孤立存在的,各个业务对象之间存在各种关联关系.图 2给出了ERP采购领域的一个简单的例子,如(a)表达为对多项采购需求单进行汇总/分解得到采购计划单,依据采购计划单又可生成比质比价单,进而生成与供应商签订的采购订单.图2业务对象间关联关系示例在现实企业里,发生变化的因素主要是业务对象之间的关联关系,而每个业务对象内部的属性则极少发生变化.例如,在常规情况下,企业可从采购需求生成采购计划,再根据计划选择供应商并生成采购订单;但在特殊情况下(例如紧急采购需求),可直接从需求生成订单.ERP系统需要同时实现多种情况,如图 2(b)、(c)、(d)所示.现有的业务对象建模方法,并没有对这种发生变化的业务对象关联关系作太多关注,通常并没有将处理业务对象本身的业务逻辑与处理业务对象之间关联关系的业务逻辑非常清晰的分离开来.依据这些模型所生成的程序,最常见的做法是将关联关系作为一个属性放在上游对象或下游对象中保存.当对象之间产生关联关系时,关联属性被写入.在这种情况下,很多业务对象的状态除了与自身的信息相关外(例如新创建、审核中、已审核等),还包含了大量表征与其他对象关联关系的属性(例如采购需求单中包含的字段已下达计划数量就与采购计划对象的状态产生关联).这种做法是不可取的,主要原因包括:(1) 难以实现多对多的关系.例如,一个需求单可能被分解生成多个计划单,而一个计划单又可能同时满足多个需求单.(2) 无法实现良好的追溯.这是因为追溯所依据的关联信息都保存在发生关联的一方或双方内,为了填写这些信息,在处理下游对象的时候,不得不把相关信息填入上游对象的相关属性中(例如,在从采购需求生成采购计划时,不得不同时为采购需求单填入已下达计划的数量),这无形中增加了ERP程序开发的复杂性.(3) 难以快速变化.当关联关系发生变化时,不得不修改大量的数据表与程序源代码;另外,在ERP开发阶段,永远不可能知道企业在实际应用过程中该对象可能会与哪些对象发生关联,因此也就不可能为其设定完备的属性集合,从而在应用过程中,一旦这种关联发生变化,就需要重新修改程序,以及与关联关系相关的外键、索引、触发器等.(4) 对象结构复杂混乱.例如,随着可变关联关系的逐渐增多,一个对象可能需要保存的关联属性也会成倍的增加,从而难以有效维护.从面向对象模型的结构考虑,模型包含两部分:极少发生变化的模型元素和频繁发生变化的模型元素.前者主要是指业务对象的增加、删除、修改、查询等基本操作,这些常规操作是每一个业务对象都具备的,且与其他对象没有任何关系,在企业实施时,也不会因为管理模式的不同而有所变化.后者则主要为对象之间的关联关系,这也是ERP系统所要关注的主要内容:因为这种关系体现了企业业务之间的关联,体现了数据的流动,企业通过此实现业务数据的追溯.如果我们按照稳定部分与频繁变化部分清晰分离的基本思想,将业务对象本身与各类关联关系分离开来,单独进行建模和程序开发(前者主要在开发阶段完成,后者则根据不同企业的需求,在实施阶段完成),并使用代码生成器分别生成各自的程序,组装起来即可形成完整的ERP系统,是解决上述问题的一个有效方法.该流程如图 3所示.图3基于业务对象关联模型与代码生成器的系统开发过程本文要解决的主要问题就是提出一种基于关联日志的业务对象关联关系模型,并在此技术上设计研发一种代码生成器以支持将该模型转化为可运行的程序,并在系统运行态下实现对业务对象的快速、灵活的映射、转换与追溯查询.相关研究代码生成器的主旨是利用计算机程序来编写计算机程序,最初的用途是从高级语言编译后生成汇编代码、机器指令,是语言转换、编译的不可缺少的工具67.XML语言的出现,使得代码生成器越来越多的应用到高语言程序代码的生成中.对于当前基于Web的ERP这样的复杂应用来说,他们都具有复杂的结构,应用程序具有很大的代码量.这样,引入代码生成器来对代码进行构造将简化开发复杂度.应用程序生成器为ESA开发提供了诸多益处,包括更充裕的模型设计时间、更好的代码质量、更高效率的开发等.应用程序生成器可以归为下列形式8:代码重塑、内联代码展开、混合代码生成、局部类生成、层次化生成、全领域语言描述等.在具体的产品方面,很多ERP厂商都有自己的生成器,用以提高开发与实施效率,如清软英泰的TiEAM9等.也有很多基于.Net和Java平台的开源代码生成器10,如XCoder、CodeGenie、JAM等.如前所述,对ERP的定制需要从ERP所体现的业务模型入手,通过模型与软件系统之间的追溯关系,将变化和个性化需求逐步映射到软件系统.在业务模型的研究中,关联关系是面向对象建模中一个重要方面,由于其相对于对象内部结构的频繁变化的特性11,一直被认为是面向对象技术研究中一个难题121314,代码生成中的难点也是对这种关联关系的处理.软件工程领域的一个指导思想是尽可能将可变部分与固定部分分离,或称Separation of Concerns 1516,以提高模型与软件系统的灵活性.这种思想起源于最初数据结构与代码的分离,随着业务模型规模的不断扩大,业务过程建模中提出了业务过程与软件系统的分离、业务活动与业务规则的分离11517等,归根结底就是软件复用领域里稳定部分与不稳定部分的分离1819.例如文献20针对企业业务的可变性,提出基于模型驱动和流程配置的ERP开发方式,但主要侧重于宏观的流程重构方面,缺少对微观的对象重构的足够剖析.文献11也认为业务间的关联关系是非常容易发生变化的因素,为此将其分离出来并以规则对象(Rule Object)的形式体现,进而提出了22种典型的规则对象模式(即如何将相关的业务对象与规则对象组合起来的方法).但是它所涉及的这种规则更多的是指动作性业务对象之间而非静态业务对象的关联.文献21给出了如何将业务对象模型与业务过程模型分离开来的建模方法.既然关联关系是影响系统灵活性的关键因素,简化元素之间的关联关系也是系统设计的重要原则1516.但无论如何关联关系是不可能消除的,文献中给出了大量如何设计关联关系的方法,如SAP等设计原则22、扩展E-R图23、复杂关联24等方法,通常是定义各对象对外界提供的操作界面(object interfaces),然后通过手工代码的

温馨提示

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

评论

0/150

提交评论