映射规则的可视化生成方法及系统的制作方法

文档序号:6574771阅读:368来源:国知局
专利名称:映射规则的可视化生成方法及系统的制作方法
技术领域
本发明涉及计算机技术领域,更具体地涉及一种映射规则的可视化生成方法及系统。
背景技术
对象管理组织(Object Management Group,简称OMG)于2002年底提出了新的系统软件开发方法-模型驱动架构(Model DrivenArchitecture,简称MDA)。该架构的核心思想是将系统的业务功能逻辑与实现平台技术相分离,避免造成业务逻辑和实现技术的紧耦合,同时,MDA可以通过模型转换技术将平台独立的系统功能模型映射到不同的实现平台模型上,最终实现到具体代码的转换。从而可以长期保持软件系统的移植性、互操作性、和可重用性,以应对未来的技术变化,延长软件的生命期。目前,基于MDA的软件开发-模型驱动开发(Model Driven Development,简称MDD)已经引起了学术界和工业界的高度关注和重视。
模型转换技术是基于MDA的软件开发的关键技术之一,它是保持MDA中不同抽象层次模型间联系的纽带。利用模型转换技术,可以实现平台独立模型(Platform Independent Model,简称PIM)到平台相关模型(Platform Specific Model,简称PSM)的转换,以及平台相关模型到实现代码的转换。基于元模型的模型转换技术就是根据源元模型和目标元模型之间的映射关系将源模型转换为目标模型,因此这种映射关系的表示是模型转换的一个重要技术。现有的MDA工具在模型转换方面存在的一个缺陷就是,模型间转换的映射规则主要通过直接编写代码来实现,并且映射关系与具体的转换引擎也是绑定的,缺乏灵活性。由于不支持映射规则的可视化建模和代码的自动生成,因此要求开发人员具有深厚的专业背景知识,从而增加了模型转换引擎的开发难度。
由上可见,需要提供一种映射规则的可视化生成方法及系统,以解决映射规则的可视化建模、永久存储、以及访问的问题。

发明内容
鉴于以上的一个或多个问题,本发明提供了一种映射规则的可视化生成方法及系统,用于解决映射规则的可视化建模、永久存储、和访问问题。
为了支持映射规则的可视化生成,本发明利用开源的Eclipse平台提供的建模框架(Eclipse Modeling Framework,简称EMF)来定义映射规则建模语言,并基于EMF的插件技术来构建可视化的映射规则建模环境,以支持映射规则的建模、存储和访问。
根据本发明的映射规则的可视化生成方法包括以下步骤S102,生成用于为用户提供映射规则的建模、存储、和访问的映射规则库系统。其中,该系统的生成具体包括以下步骤S1022,定义映射规则的描述规范。映射规则属于静态映射规则,是一种静态的表示源模型元素和目标模型元素映射关系的规则;映射规则主要包括版类(Stereotype)结点、评测结点、分支(Branch)、语句结点。其中,分支用来连接评测结点和语句结点。一个映射规则中只能包含一个版类结点和评测结点,但可以包含多个分支结点和语句结点。同样地,一个版类、评测、或语句也可以被多个映射规则引用,但分支只能包含在一个映射规则中。
S1024,构建映射规则库的Ecore模型。利用Eclipse EMF框架提供的Ecore建模元素描述映射规则库的元模型(包括映射规则库的语法和具体的组成元素),形成一个映射规则库的Ecore模型。映射规则库对应于MapruleDataBase Ecore类,下面包括对应于四个Ecore类的四个子库,分别是MapruleDB、StereotypeDB、EvaluateDB、和StatementDB。而每个子库都可以包括多个相应的元素。其中,MapruleDB包含多个Maprule,StereotypeDB包含多个Stereotype,EvaluateDB包含多个Evaluate,StatementDB包含多个Statement。Maprule对应于映射规则,它由五种元素构成,其中,StereotypeNode、EvaluateNode、StatementNode这三个元素都是从Node Ecore类继承的,分别是Stereotype、Evaluate、Statement的引用。此外,Maprule还包含Branch(对应于分支结点)和MapruleTester(用来对规则的正确性进行测试)。
S1026,利用向导生成映射规则库的EMF模型。当Ecore模型构建完毕后,可以通过向导生成EMF模型,即后缀名为genmodel的模型。EMF模型和Ecore模型保持相同的结构。
S1028,生成映射规则库的Model、Edit和Editor代码,并将这些代码作为Eclipse平台的一个插件。其中,用映射规则库的EMF模型生成Model、Edit、Editor的代码。Model代码主要用来修改模型元素的信息;Edit代码主要提供了一种位于Editor代码和Model代码之间的中介者的作用,它负责把来自Editor的用户编辑界面(User Interface,简称UI)相关的请求转换成符合Model的UI无关的调用。Editor则提供了一个简单的映射规则库模型编辑器来实现映射规则模型实例的编辑。
S104,生成映射规则。利用生成的映射规则库插件,可以根据模型转换的需要,生成相应的映射规则。其中,该映射规则的生成具体包括以下步骤S1042,启动Eclipse,使用映射规则库创建向导创建一个映射规则库实例。
S1044,根据模型转换的映射关系建模相应的映射规则,使用映射规则编辑器来编辑具体的映射规则模型(包括涉及到的版类、分支、评测和语句结点)。并判断所有的映射规则是否建模完毕,如果都已建模完毕,则将所有的映射规则都保存到相应的映射规则库文件中。否则,续进行映射规则的建模。当所有映射规则建模完毕后,可以配置映射规则库相关的属性,为映射规则代码的生成作准备。通过Eclipse插件技术,提供了映射规则库的属性页以及工具条的按钮。配置映射规则库相关的属性(例如,映射规则库的存放路径等)。
S1046,映射规则生成器从文件中读出映射规则库中各元素及其间的关系,生成Eclipse的一个Java项目,从而生成映射规则代码。具体包括以下三个步骤①映射规则生成器提供一个属性页,来设置Java项目的名称。映射规则生成器先读取属性页设置的名称,使用Eclipse API来创建Java项目。然后设置Java项目的src目录的各classpath(包括在src引用到其它的包)。②使用生成的Edit代码从文件中读取Evaluate、Branch、Statement,分别使用ParseEvaluate、ParseBranch、ParseStatement三个函数对这些元素进行处理,对每种元素都依据一定的代码模式来生成代码,并保存到代码代表(sources)中。③根据生成的代码的信息创建相应的Java包。再利用Eclipse API在相应的包下面创建相应的Java源文件,并将生成的代码写入该源文件中,然后使用Eclipse API对它进行Organize Import和format。
根据本发明的映射规则的可视化生成系统包括映射规则库系统生成装置,用于采用模型驱动方法生成映射规则库系统,以支持映射规则的可视化建模、存储和访问;以及映射规则生成装置,用于根据具体模型转换的需要,利用映射规则库系统生成相应的映射规则。其中,所述系统采用基于开源项目Eclipse平台提供的建模框架。
其中,映射规则库系统生成装置包括映射规则限定模块,用于限定表示源模型元素和目标模型元素映射关系的映射规则,映射规则包括一个版类结点、一个评测结点、以及至少一个分支和语句结点;Ecore模型生成模块,用于根据Eclipse平台提供的Ecore建模元素形成映射规则的Ecore模型;EMF模型生成模块,用于利用映射规则的Ecore模型形成EMF模型;以及插件生成模块,用于利用EMF模型生成Model、Edit和Editor的代码,并将代码作为映射规则库系统的插件。
其中,映射规则生成装置包括映射规则编辑器,用于在Eclipse平台启动后,通过映射规则库系统创建映射规则库实例,根据具体模型转换的映射关系建模相应的映射规则,形成具体的映射规则模型,以及在映射规则模型建模完毕后,将映射规则保存至对应的映射规则库文件中并且配置映射规则库的相关属性;以及映射规则生成器,用于从映射规则库文件中获取映射规则库中的各个元素和元素之间的关系信息生成映射规则代码。
其中,一个映射规则包括一个版类结点,一个测评结点、以及至少一个分支和语句结点,其中,分支用来连接所述评测结点和所述语句结点,一个映射规则中只能包含一个所述版类结点和所述评测结点,但可以包含多个所述分支结点和所述语句结点,一个版类结点、评测结点、或语句结点也可以被多个映射规则引用,但分支只能包含在一个映射规则中。
通过本发明,解决了映射规则的可视化建模、永久存储、和访问的问题。利用Eclipse平台提供的EMF框架解决了映射规则的代码自动生成问题。本发明将映射关系的表示方式从代码的表示层次提升到了基于模型的表示层次,简化了模型转换引擎的开发工作,降低了模型转换的技术难度,从而能够缩短模型转换引擎的开发时间。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据本发明实施例的映射规则的可视化生成方法的流程图;图2是根据本发明实施例的生成映射规则库系统的流程图;图3是根据本发明实施例的映射规则的组成结构图;图4是根据本发明实施例的映射规则库系统的Ecore模型图;图5是根据本发明实施例的映射规则库系统的EMF模型图;图6是根据本发明实施例的映射规则库EMF模型生成的Model代码的结构图;图7是根据本发明实施例的映射规则库EMF模型生成的Edit代码的结构图;图8是根据本发明实施例的映射规则库EMF模型生成的Editor代码的结构图;
图9是根据本发明实施例的生成映射规则的流程图;图10是根据本发明实施例的映射规则库系统的映射规则编辑器(UI)的界面图;图11是根据本发明实施例的基于映射规则库的模型到代码转换的流程图;以及图12是根据本发明实施例的映射规则的可视化生成系统的框图。
具体实施例方式
下面参考附图,详细说明本发明的具体实施方式

参考图1,说明根据本发明实施例的映射规则的可视化生成方法。如图1所示,该映射规则的可视化生成方法主要包括以下两个步骤S102,采用模型驱动的方法来生成映射规则库系统,用来支持映射规则的可视化建模、存储和访问;S104,利用映射规则库系统,根据具体模型转换的需要,生成相应的映射规则。
为了支持映射规则库系统的生成,本发明采用了基于开源项目Eclipse平台提供的建模框架(Eclipse Modeling Framework,简称EMF)来具体实施,如图2所示,具体包括以下几个步骤S1022,定义映射规则的描述规范。映射规则属于静态映射规则,是一种静态的表示源模型元素和目标模型元素映射关系的规则;映射规则主要由四部分构成(如图3所示)版类(Stereotype)结点302、评测结点304、分支(Branch)306、语句结点308。其中,分支用来连接评测结点和语句结点。一个映射规则中只能包含一个版类结点和评测结点,但可以包含多个分支和语句结点。同样地,一个版类、评测或语句也可以被多个映射规则引用,但分支只能包含在一个映射规则中。
S1024,构建映射规则库的Ecore模型。利用Eclipse EMF框架提供的Ecore建模元素描述映射规则库的元模型(包括映射规则的语法和具体的组成元素),形成一个映射规则的Ecore模型(如图4所示)。映射规则库对应于MapruleDataBase Ecore类,下面包括四个子库,对应四个Ecore类,分别是MapruleDB、StereotypeDB、EvaluateDB、和StatementDB。而每个子库都包括多个元素,图中的MapruleDB包含多个Maprule,StereotypeDB包含多个Stereotype,EvaluateDB包含多个Evaluate,StatementDB包含多个Statement。Maprule对应于映射规则,它由五种元素构成,其中StereotypeNode、EvaluateNode、和StatementNode这三个元素都是从Node Ecore类继承的,分别是Stereotype、Evaluate、和Statement的引用。此外,Maprule还包含Branch(对应于分支结点)和MapruleTester(用来对规则的正确性进行测试)。
S1026,利用向导生成EMF模型。当Ecore模型构建完毕后,可以通过向导生成EMF模型,即后缀名为genmodel的模型。EMF模型和Ecore模型保持相同的结构,如图5所示。
S1028,生成映射规则库的Model、Edit和Editor代码,并将这些代码作为插件。用EMF模型生成Model、Edit、和Editor的代码,Model主要用来修改模型元素的信息,Edit提供了一种位于Editor代码和Model代码之间的中介者的作用。它负责把来自Editor的UI相关的请求转换成符合Model的UI无关的调用。Editor则提供了一个简单的编辑器来实现EMF模型的编辑。如图6所示,EMF模型生成的Model代码主要包括三个包,org.ruleDatabase主要包括各个元素的接口,org.ruleDatabase.impl包括各个元素接口的实现类,org.ruleDatabase.util提供元素操作的工具。如图7所示,EMF模型生成的Edit代码,对应每种元素都有一个provider类,以及一个ProviderAdapterFactory将Editor的UI相关的请求转换成符合Model的UI无关的调用。如图8所示,EMF模型生成的Editor代码提供了一个UI,可以用来编辑映射规则库的元素。生成的代码包括提供UI工具条(RuleDatabaseActionBarContributor)、编辑器UI(RuleDatabaseEditor)、插件类(RuleDatabaseEditorPlugin)、以及一个映射规则库创建向导(RuleDatabaseModelWizard)。
在映射规则库系统的插件生成后,就可以利用该插件生成模型转换需要的映射规则,如图9所示,映射规则的生成方法具体包括以下几个步骤S1042,启动Eclipse,使用映射规则库创建向导创建一个映射规则库实例。
S1044,根据模型转换的映射关系建模相应的映射规则,使用映射规则编辑器(如图10所示)来编辑具体的映射规则模型(包括涉及到的版类、分支、评测和语句结点)。判断所有的映射规则是否建模完毕,如果都已建模完毕,将所有的映射规则都保存到相应的映射规则库文件中。否则,继续进行映射规则的建模。当所有映射规则建模完毕后,可以配置映射规则库相关的属性,为映射规则代码的生成作准备。通过Eclipse插件技术,提供了映射规则库的属性页以及工具条的按钮。配置映射规则库相关的属性(如映射规则库的存放路径等)。
S1046,映射规则生成器从文件中读出映射规则库中各元素及其间的关系,生成Eclipse的一个Java项目,从而生成映射规则代码。具体包括以下三个步骤①创建Java项目映射规则生成器提供了一个属性页,来设置Java项目的名称。映射规则生成器先读取属性页设置的名称,使用Eclipse API来创建Java项目。然后设置Java项目的src目录和classpath(包括在src引用到其它的包)。②从文件中读出各个元素,分别生成代码使用生成的Edit的代码从文件中读取Evaluate、Branch、和Statement,分别使用ParseEvaluate、ParseBranch、和ParseStatement三个函数对这些元素进行处理,对每种元素都依据一定的代码模式来生成代码,并保存到代码源(sources)中。③将代码写入Eclipse的Java项目中根据生成的代码的信息创建相应的Java包。再利用Eclipse API在相应的包下面创建相应的Java源文件,并将生成的代码写入该源文件中,并使用Eclipse API对它进行Organize Import和format。
在映射规则生成之后,模型转换引擎就可以根据扫描到的模型元素类型来进行模型到代码的相应转换,具体的流程如下(如图11所示)模型转换引擎1102扫描要转换的模型1112,提取到模型所包含的模型元素。
模型转换引擎1102根据扫描到的模型元素类型,利用映射规则查询引擎1104查询映射规则库1108中的该模型元素对应的映射规则。并将映射规则返回给模型转换引擎1102。
模型转换引擎1102利用映射规则执行引擎1106依次加载并执行传入的映射规则列表,返回一个或多个目标脚本文件。
模型转换引擎1102将返回的一个或多个目标脚本文件转换为相应的代码1114。
参考图12,说明根据本发明实施例的映射规则的可视化生成系统。如图12所示,该映射规则的可视化生成系统包括映射规则库系统生成装置1202,用于采用模型驱动方法生成映射规则库系统,以支持映射规则的可视化建模、存储和访问;以及映射规则生成装置1204,用于根据具体模型转换的需要,利用映射规则库系统生成相应的映射规则。其中,所述系统采用基于开源项目Eclipse平台提供的建模框架。
其中,映射规则库系统生成装置1202包括映射规则限定模块1202-2,用于限定表示源模型元素和目标模型元素映射关系的映射规则,映射规则包括一个版类结点、一个评测结点、以及至少一个分支和语句结点;Ecore模型生成模块1202-4,用于根据Eclipse平台提供的Ecore建模元素形成映射规则的Ecore模型;EMF模型生成模块1202-6,用于利用映射规则的Ecore模型形成EMF模型;以及插件生成模块1202-8,用于利用EMF模型生成Model、Edit和Editor的代码,并将代码作为映射规则库系统的插件。
其中,映射规则生成装置1204包括映射规则编辑器1204-2,用于在Eclipse平台启动后,通过映射规则库系统创建映射规则库实例,根据具体模型转换的映射关系建模相应的映射规则,形成具体的映射规则模型,以及在映射规则模型建模完毕后,将映射规则保存至对应的映射规则库文件中并且配置映射规则库的相关属性;以及映射规则生成器1204-4,用于从映射规则库文件中获取映射规则库中的各个元素和元素之间的关系信息生成映射规则代码。
其中,一个映射规则包括一个版类结点,一个测评结点、以及至少一个分支和语句结点,其中,分支用来连接所述评测结点和所述语句结点,一个映射规则中只能包含一个所述版类结点和所述评测结点,但可以包含多个所述分支结点和所述语句结点,一个版类结点、评测结点、或语句结点也可以被多个映射规则引用,但分支只能包含在一个映射规则中。
通过本发明,解决了映射规则的可视化建模、永久存储、和访问的问题。利用Eclipse平台提供的EMF框架解决了映射规则的代码自动生成问题。本发明将映射关系的表示方式从代码的表示层次提升到了基于模型的表示层次,简化了模型转换引擎的开发工作,降低了模型转换的技术难度,从而能够缩短模型转换引擎的开发时间。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
权利要求
1.一种映射规则的可视化生成方法,其特征在于,包括以下步骤S102,采用模型驱动方法生成映射规则库系统,以支持映射规则的可视化建模、存储和访问;以及S104,根据具体模型转换的需要,利用所述映射规则库系统生成相应的映射规则。
2.根据权利要求1所述的映射规则的可视化生成方法,其特征在于,所述方法采用基于开源项目Eclipse平台提供的建模框架。
3.根据权利要求2所述的映射规则的可视化生成方法,其特征在于,所述步骤S102包括S1022,限定表示源模型元素和目标模型元素映射关系的所述映射规则,所述映射规则包括版类结点、评测结点、分支、语句结点;S1024,根据所述Eclipse平台提供的Ecore建模元素形成所述映射规则的Ecore模型;S1026,利用所述映射规则的Ecore模型形成EMF模型;以及S1028,利用所述EMF模型生成Model、Edit和Editor的代码,并将所述代码作为所述映射规则库系统的插件。
4.根据权利要求3所述的映射规则的可视化生成方法,其特征在于,所述步骤S104包括S1042,启动所述Eclipse平台,通过所述映射规则库系统创建映射规则库实例;S1044,根据所述具体模型转换的映射关系建模相应的映射规则,形成具体的映射规则模型,以及在所述映射规则模型建模完毕后,将所述映射规则保存至对应的映射规则库文件中并且配置所述映射规则库的相关属性;S1046,从所述映射规则库文件中获取所述映射规则库中的各个元素和所述元素之间的关系信息生成映射规则代码。
5.根据权利要求1至4中任一项所述的映射规则的可视化生成方法,其特征在于,一个所述映射规则包括一个版类结点,一个测评结点、以及至少一个分支和语句结点,其中,分支用来连接所述评测结点和所述语句结点,一个映射规则中只能包含一个所述版类结点和所述评测结点,但可以包含多个所述分支结点和所述语句结点,一个版类结点、评测结点、或语句结点也可以被多个映射规则引用,但分支只能包含在一个映射规则中。
6.一种映射规则的可视化生成系统,其特征在于包括映射规则库系统生成装置,用于采用模型驱动方法生成映射规则库系统,以支持映射规则的可视化建模、存储和访问;以及映射规则生成装置,用于根据具体模型转换的需要,利用所述映射规则库系统生成相应的映射规则。
7.根据权利要求6所述的映射规则的可视化生成系统,其特征在于,所述系统采用基于开源项目Eclipse平台提供的建模框架。
8.根据权利要求7所述的映射规则的可视化生成系统,其特征在于,所述映射规则库系统生成装置包括映射规则限定模块,用于限定表示源模型元素和目标模型元素映射关系的所述映射规则,所述映射规则包括一个版类结点、一个评测结点,以及至少一个分支和语句结点;Ecore模型生成模块,用于根据所述Eclipse平台提供的Ecore建模元素形成所述映射规则的Ecore模型;EMF模型生成模块,用于利用所述映射规则的Ecore模型形成EMF模型;以及插件生成模块,用于利用所述EMF模型生成Model、Edit和Editor的代码,并将所述代码作为所述映射规则库系统的插件。
9.根据权利要求8所述的映射规则的可视化生成系统,其特征在于,所述映射规则生成装置包括映射规则编辑器,用于在所述Eclipse平台启动后,通过所述映射规则库系统创建映射规则库实例,根据所述具体模型转换的映射关系建模相应的映射规则,形成具体的映射规则模型,以及在所述映射规则模型建模完毕后,将所述映射规则保存至对应的映射规则库文件中并且配置所述映射规则库的相关属性;以及映射规则生成器,用于从所述映射规则库文件中获取所述映射规则库中的各个元素和所述元素之间的关系信息生成映射规则代码。
10.根据权利要求6至9中任一项所述的映射规则的可视化生成系统,其特征在于,一个所述映射规则包括一个版类结点,一个测评结点、以及至少一个分支和语句结点。
全文摘要
本发明公开了一种映射规则的可视化生成方法和系统。其中,该映射规则的可视化生成方法包括以下步骤S102,采用模型驱动方法生成映射规则库系统,以支持映射规则的可视化建模、存储和访问;以及S104,根据具体模型转换的需要,利用映射规则库系统生成相应的映射规则。发明将映射关系的表示方式从代码的表示层次提升到了基于模型的表示层次,简化了模型转换引擎的开发工作,降低了模型转换的技术难度,从而能够缩短模型转换引擎的开发时间。
文档编号G06F9/44GK101055521SQ200710090349
公开日2007年10月17日 申请日期2007年4月4日 优先权日2007年4月4日
发明者李晓峰, 董振江, 沈蓓洁, 乔秀全, 宋小兵, 杨勇, 吴豫宁, 滕广松 申请人:中兴通讯股份有限公司, 北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1