利用DSL语言来实现MES系统建模平台
O 引言
以往MES系统项目的开发都是各个项目独立地进行设计和开发,而这些项目中有一部分需求和功能有相同的地方,这样,就会在一定程度上造成重复劳动和资源浪费。为此,笔者将业务需求转化为模型,开发了一套基于模型驱动的系统平台,同时搭载多种行业模型包。这样,当项目应用时,就可以根据需要对模型进行简单修改,然后直接满足项目需求。另外,此平台依旧保留有快速的二次开发接口,这样不但可以缩短整个系统的开发周期,而且可以大量节约人力物力资源。该系统平台主要包括系统管理、建模平台、工作流、业务系统等。本文主要讲述建模平台的设计与实现方法。
1 DSL概述
Visual St udio DSL(Domain-Specific Language,特定领域语言)工具是微软公司针对特定领域开发而专门设计的。特定领域开发是一种用于解决重复发生的问题的方法,是可以使用DSL工具作为自动生成相同或相似代码的一种方式。DSL是指软件开发中出于某特定考虑而设计的比较小的、目标明确的语言。它们的作用是使用某特定领域里惯用的符号或者表示法对该领域的实体或者流程进行建模。
DSL工具提供有一种图形化的操作方式。开始创建领域特定语言(DSL)是围绕DSL设计器进行的,设计器的功能是设计和产生DSL,或者设
计依附于可生成代码DSL的模型。
域模型(domain model)是DSL定义的核心部分。域模型就像DSL的语法,它定义了域类(domain class)和域关系(domain relationship),即定义了组成模型的要素,并给出了将这些要素互相联系在一起的规则。域模型和表示是分离的,它仅定义了DSL所要处理的概念层上的内容,而并没有给出如何在图中表示这些概念。在DSL设计器中,图形和域类的对应关系是非常直观的,有多种基本的图形和连接线类型可供选择,在定义了一组图形之后,还要定义一组图形的映射关系,也就是定义用哪个图形或者连接线来显示某个域类或者域关系。表示层和底层模型相分离的设计,可以在不改动模型的情况下,合理改变域模型的表示方式。
在用DSL设计器完成DSL的定义后,将从这个DSL定义生成编辑和处理DSL实例工具的代码,然后就可通过写一些附加的代码,来增强所产生的设计器的功能。
2 模型驱动的建模平台设计
模型驱动就是对企业的业务需求进行分析后,通过友好的图形化用户交互界面将企业的业务需求转化为模型,图1为其建模平台示意图。这样,通过实现各种业务模块(例如:设备管理)系统功能(例如:设备停用)的建模配置,系统就可将其自动转化为机器可读和高度抽象的平台无关模型,这些模型独立于实现技术和语言,并以标准化的XML方式储存。系统可根据模型生成基于SOA的运行代码,并可通过发布解决方案的方式来将建立好的业务模型集成到系统运行平台之中,最后在系统运行平台上运行。建模平台可支持使用过程中动态调整流程、动态配置业务和展示信息,可实现软件的配置与信息管理的一体化应用。当业务发生变化后,也可以在系统中修改原有的业务模型并重新发布。其方便地改变特点,可以真正实现快速满足客户业务变化的需要。
建模平台的设计主要分为三部分:数据模型、后台服务和前台页面,图2所示为建模平台的模型图。
数据模型的元素包括表模型和视图模型,是对业务功能单元的底层功能的封装,它针对数据库表和视图映射对象,包括常用的增删改查等基本操作和属性。元素的建立可以通过图形化的方式配置数据库表和视图,并调用数据库生成模板生成到数据库,也可以从数据库中添加已存在的表和视图。数据模型文件的存储格式为XML文件格式。数据模型配置完成后,即可根据当前生成引擎创建数据模型对应运行代码文件,即读取表或视图模型对应的模板,并根据数据模型配置文件中的配置信息替换模板相应信息,等生成的代码准备好后,可对其进行编译,编译成功,则可在指定位置生成相应的动态链接库。
后台服务包括服务方法及方法内容的配置,是对业务功能所要执行的一系列活动的封装,就是根据业务逻辑来组合数据模型元素的操作,即配置各相关数据模型元素操作的执行顺序及关联关系,创建业务功能服务及方法。由于通过模型驱动可提供业务敏捷性,故能灵活地适应不断变化的业务,一旦需要,就可以对现有服务进行必要的更改,从而达到业务驱动服务的目的。后台服务文件的存储格式为XML文件格式。后台服务配置完成后,即可根据当前生成引擎创建服务所对应的运行代码文件。
前台页面是业务系统的展现层,具体体现为与最终用户交互的界面。创建前台功能页面,可通过向导的方式完成对页面信息的配置。前台页面部分有三种
系统 建模 平台 MES 实现 DSL 语言 利用 相关文章:
- Linux嵌入式系统开发平台选型探讨(11-09)
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- VXWORKS内核分析(11-11)
- Linux内核解读入门(11-09)
- linux文件系统基础(02-09)
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)