论文部分内容阅读
摘要:在已知决策支持系统(DSS)模型表达形式的基础上,探索其计算机实现过程中的自动化。针对目前模型驱动工程中有关DSS模型的研究集中于领域模型构建机制及平台的搭建,而对模型复合及求解等生成机制方面的研究关注不足,本研究提出了一种基于WF工作流等技术来完成DSS模型从创建到复合运行的自动化策略,并实现了相应的框架原型。该框架提供了人性化的模型生成环境,所有实现细节对模型研究者而言均为黑盒抽象,使用者无需编程即可完成模型的生成。此策略为DSS模型构建的工程化、智能化提供了一种新的思路。
关键词:决策支持系统(DSS)模型;模型驱动;WF工作流;框架
中圖分类号: TP311.52;S126文献标志码: A
文章编号:1002-1302(2016)12-0397-05
收稿日期:2015-10-16
基金项目:国家自然科学基金(编号:61363007)。
作者简介:唐朝胜(1975—),男,湖南资兴人,副教授,主要从事软件工程、作物信息化研究。E-mail:[email protected]。
通信作者:刘世洪,研究员,主要从事农业信息化研究。E-mail:[email protected]。
决策支持系统(Decision Support System,DSS)是以计算机技术为基础的对决策支持的知识信息系统,用于处理决策过程中的半结构化和非结构化问题[1]。一般而言,决策者使用DSS不是直接依靠数据进行决策,而是依靠模型库中的模型进行决策,所以DSS是由“模型驱动”的[2]。因此有关模型的表达、存储及执行等模型生成方面的研究显得尤为重要。良好的模型生成环境有助于高质量DSS模型的构建及运行,如通过配置Hadoop云环境,可实现模型的并行计算[3];或以面向服务为架构,设计作物模型区域应用Web服务组合框架等来解决作物模型与GIS集成环境问题[4]。
近年来,将模型驱动工程等新兴开发方法应用于DSS模型综合生成环境的研究成为新热点。如有学者提出基于问题求解的模型表示方法[5]、定性定量相结合的综合集成模型构造方法[6]、基于模型驱动开发理论的设计流程建模工具[7]或作物生长模型可视化设计工具[8],以及综合作物系统模拟技术、知识工程及自适应软件开发方法,运用系统分析和知识建模手段,采用模型描述脚本功能构建作物生长模型来设计智能化作物集成建模辅助系统[9]。
模型驱动工程的优点是采用相关领域的建模语言,构建可视化模型,使领域专家和设计人员专注于业务逻辑而无需过早考虑平台相关的实现细节。然而领域模型构建后,最终还需要通过自动(半自动)的层层转换完成从设计到实现的过渡。虽然采用模型驱动工程开发方法将有助于构建领域模型PIM(平台无关模型),但目前针对将PIM转化为PSM(平台相关模型)的代码框架构建以及模型的复合和运行方面的研究仍显不足。从系统的计算机实现角度看,仍存在模型转换过程中过度依赖于程序代码等现象,缺乏自动化和智能化、面向建模人员的模型构建、复合及运行的系统环境。
由于微软的WF提供了良好的工作流建模环境,可以在此平台上进行二次开发,内嵌的WF工作流引擎可完成工作流的解析,因此设想DSS子模型的复合和求解过程即为一个工作流模型构建及运行的过程:(1)DSS子模型可视为一个包含求解算法的活动;(2)子模型的复合即为在工作流平台下将多个活动按照规则构建工作流模型的过程;(3)复合模型的运行则是这些活动在工作流引擎的调度下完成的运算。
为此,本研究在已知模型表达形式的基础上,提出一个面向建模人员、无需编程即可覆盖模型从构建到复合运行过程的模型自动生成策略,并采用WF工作流及动态编译等技术实现相应的原型框架。最后以作物生长模型为例,对模型的生成过程进行了验证。
1系统总体设计
1.1系统设计策略及流程
模型自动生成策略的基本思想是首先提供一个模型构建环境,支持多种算术表达式符号的创建;其次完成模型运算的自动解析及存储表达;最后创建WF自定义工作流设计器,实现模型程序集的构建、导入、复合和运行。综合以上思路,得到如下设计流程图(图1)。
[TPTCS1.tif]
1.2系统架构
本框架设计主要包括系统架构设计以及模块设计两大部分。架构设计是基础,模块设计是核心。体系架构设计的目的是根据设计目标,确定总体结构中各模块的分工、任务边界以及协作机制。根据设计流程,确定整体架构3个层次:(1)独立开放的模型创建环境;(2)自动快捷的模型文件转换环境;(3)操作简便的模型复合及运行环境。
1.3模块设计
模块是从用户需求角度,对体系结构功能和任务有机地划分。模块设计时,需根据各模块任务、边界和工作流程,构建清晰的数据结构,完成模块菜单以及人机交互界面设计,同时完成模块的输入输出等功能[10]。结合框架的核心功能,设计了模型创建模块、模型解析模块、模型转换模块、模型复合及运行模块等4个模块。模块之间可独立运行,但又相互协作,无缝衔接,贯穿整个生成周期。
1.3.1模型创建模块
微软的VS2010开发环境下,结合第三方控件MathMLControl实现模型创建模块。建模用户可借助其数学公式编辑功能以及可视化工具箱,有效地完成较复杂的数学表达形式。保存后自动将模型表达转换为符合MathML语法格式的XML类型文件。
1.3.2模型解析模块
针对文档数学公式中所涉及的MathML各种符号表达,如标志符、操作符、数字、文本等,模块将依据后述的文法规则,采用递归下降语法和语义分析方法,结合标准的C#函数将其解析成C#中间代码。解析程序使用的核心类(图2)对应算术和代数运算符、分式和根式运算符、上下标等符号的表示以及相应的语义解析。 1.3.3模型转换模块
该模块提供将C#中间代码转化为标准XAML工作流文件的转换环境。为实现转换过程的通用化,采用了VS2010中的T4文本模板。所设计的模板可以根据模型公式左右两边的变量自动生成输入及输出参数。最后采用动态编译执行技术将包含模型参数及运算流程的中间代码序列化为XAML文件。
1.3.4模型复合及运行模块
此模块提供工作流文档复合和运行的环境,其核心就是一个内嵌WF工作流引擎[11]、能独立运行、界面友好的可承载自定义流程设计器。包括如下功能:
(1)模型导入。模型导入的过程即为动态加载工作流文件的过程,其实质是将带自定义输入参数的XAML文档进行反序列化,并将文件中的对象转换为工作流活动实例,最后以图形方式呈现在设计器画布中。
(2)模型保存。模型保存过程是将设计器中的工作流定义序列化为XAML文件。这些已序列化的定义内容可以重新加载以便编辑或检测,也可以传递给生成系统以供编译,加载并调用。
(3)模型动态编译和复合设计。模块具备动态编译当前已加载的工作流模型并保存为程序集的功能。进行模型复合设计时,设计者可以将多个模型程序集加载至活动工具箱,并结合WWF内置的Flowchart、Sequence、Parallel等活动一起完成工作流程的设计。
(4)模型运行。一旦模型复合设计完毕,内置的WF工作流引擎将根据设计的流程运行。
2系统关键问题及实现
2.1模型表达及转换
生成过程的不同阶段,模型的表达形式有所不同。因此,如何将不同阶段模型的表达形式进行转换是系统框架设计中优先考虑的问题。
2.1.1模型符号表达及存储
在模型构建环境中,引入了第三方控件MathMLControl。它是一个数学公式可视化控件,不仅包含了大量的数学相关符号,如算术运算符号、导数符号、积分符号等,还提供了强大的数学公式编辑功能,可有效进行诸如上标、下标等形式的组合,从而完成较复杂的数学表达形
[FK(W20][TPTCS2.tif]
式。此外,模型存储采用了基于XML标准的MathML(MathMarkupLanguage,数学标记语言)作为模型存储形式,主要基于:(1)XML作为一种标准的、可扩展的、半结构化的标记语言,目前已经成为许多领域内常见的数据表示和交换的标准,为模型系统功能的扩展提供支持。(2)MathML作为计算机之间交换数学信息的一种标准,是由W3C(万维网联盟)在XML的基础上制定而成的。利用它可以解决同一数学模型在不同平台的差异性。由于它提供一个可视化的模型构建环境,帮助我们显示、操作和共享数学表达式,有力地支撑了模型的集成与开发,降低了统一管理各领域模型的难度[12]。其正则文法公式如下所示:
关键词:决策支持系统(DSS)模型;模型驱动;WF工作流;框架
中圖分类号: TP311.52;S126文献标志码: A
文章编号:1002-1302(2016)12-0397-05
收稿日期:2015-10-16
基金项目:国家自然科学基金(编号:61363007)。
作者简介:唐朝胜(1975—),男,湖南资兴人,副教授,主要从事软件工程、作物信息化研究。E-mail:[email protected]。
通信作者:刘世洪,研究员,主要从事农业信息化研究。E-mail:[email protected]。
决策支持系统(Decision Support System,DSS)是以计算机技术为基础的对决策支持的知识信息系统,用于处理决策过程中的半结构化和非结构化问题[1]。一般而言,决策者使用DSS不是直接依靠数据进行决策,而是依靠模型库中的模型进行决策,所以DSS是由“模型驱动”的[2]。因此有关模型的表达、存储及执行等模型生成方面的研究显得尤为重要。良好的模型生成环境有助于高质量DSS模型的构建及运行,如通过配置Hadoop云环境,可实现模型的并行计算[3];或以面向服务为架构,设计作物模型区域应用Web服务组合框架等来解决作物模型与GIS集成环境问题[4]。
近年来,将模型驱动工程等新兴开发方法应用于DSS模型综合生成环境的研究成为新热点。如有学者提出基于问题求解的模型表示方法[5]、定性定量相结合的综合集成模型构造方法[6]、基于模型驱动开发理论的设计流程建模工具[7]或作物生长模型可视化设计工具[8],以及综合作物系统模拟技术、知识工程及自适应软件开发方法,运用系统分析和知识建模手段,采用模型描述脚本功能构建作物生长模型来设计智能化作物集成建模辅助系统[9]。
模型驱动工程的优点是采用相关领域的建模语言,构建可视化模型,使领域专家和设计人员专注于业务逻辑而无需过早考虑平台相关的实现细节。然而领域模型构建后,最终还需要通过自动(半自动)的层层转换完成从设计到实现的过渡。虽然采用模型驱动工程开发方法将有助于构建领域模型PIM(平台无关模型),但目前针对将PIM转化为PSM(平台相关模型)的代码框架构建以及模型的复合和运行方面的研究仍显不足。从系统的计算机实现角度看,仍存在模型转换过程中过度依赖于程序代码等现象,缺乏自动化和智能化、面向建模人员的模型构建、复合及运行的系统环境。
由于微软的WF提供了良好的工作流建模环境,可以在此平台上进行二次开发,内嵌的WF工作流引擎可完成工作流的解析,因此设想DSS子模型的复合和求解过程即为一个工作流模型构建及运行的过程:(1)DSS子模型可视为一个包含求解算法的活动;(2)子模型的复合即为在工作流平台下将多个活动按照规则构建工作流模型的过程;(3)复合模型的运行则是这些活动在工作流引擎的调度下完成的运算。
为此,本研究在已知模型表达形式的基础上,提出一个面向建模人员、无需编程即可覆盖模型从构建到复合运行过程的模型自动生成策略,并采用WF工作流及动态编译等技术实现相应的原型框架。最后以作物生长模型为例,对模型的生成过程进行了验证。
1系统总体设计
1.1系统设计策略及流程
模型自动生成策略的基本思想是首先提供一个模型构建环境,支持多种算术表达式符号的创建;其次完成模型运算的自动解析及存储表达;最后创建WF自定义工作流设计器,实现模型程序集的构建、导入、复合和运行。综合以上思路,得到如下设计流程图(图1)。
[TPTCS1.tif]
1.2系统架构
本框架设计主要包括系统架构设计以及模块设计两大部分。架构设计是基础,模块设计是核心。体系架构设计的目的是根据设计目标,确定总体结构中各模块的分工、任务边界以及协作机制。根据设计流程,确定整体架构3个层次:(1)独立开放的模型创建环境;(2)自动快捷的模型文件转换环境;(3)操作简便的模型复合及运行环境。
1.3模块设计
模块是从用户需求角度,对体系结构功能和任务有机地划分。模块设计时,需根据各模块任务、边界和工作流程,构建清晰的数据结构,完成模块菜单以及人机交互界面设计,同时完成模块的输入输出等功能[10]。结合框架的核心功能,设计了模型创建模块、模型解析模块、模型转换模块、模型复合及运行模块等4个模块。模块之间可独立运行,但又相互协作,无缝衔接,贯穿整个生成周期。
1.3.1模型创建模块
微软的VS2010开发环境下,结合第三方控件MathMLControl实现模型创建模块。建模用户可借助其数学公式编辑功能以及可视化工具箱,有效地完成较复杂的数学表达形式。保存后自动将模型表达转换为符合MathML语法格式的XML类型文件。
1.3.2模型解析模块
针对文档数学公式中所涉及的MathML各种符号表达,如标志符、操作符、数字、文本等,模块将依据后述的文法规则,采用递归下降语法和语义分析方法,结合标准的C#函数将其解析成C#中间代码。解析程序使用的核心类(图2)对应算术和代数运算符、分式和根式运算符、上下标等符号的表示以及相应的语义解析。 1.3.3模型转换模块
该模块提供将C#中间代码转化为标准XAML工作流文件的转换环境。为实现转换过程的通用化,采用了VS2010中的T4文本模板。所设计的模板可以根据模型公式左右两边的变量自动生成输入及输出参数。最后采用动态编译执行技术将包含模型参数及运算流程的中间代码序列化为XAML文件。
1.3.4模型复合及运行模块
此模块提供工作流文档复合和运行的环境,其核心就是一个内嵌WF工作流引擎[11]、能独立运行、界面友好的可承载自定义流程设计器。包括如下功能:
(1)模型导入。模型导入的过程即为动态加载工作流文件的过程,其实质是将带自定义输入参数的XAML文档进行反序列化,并将文件中的对象转换为工作流活动实例,最后以图形方式呈现在设计器画布中。
(2)模型保存。模型保存过程是将设计器中的工作流定义序列化为XAML文件。这些已序列化的定义内容可以重新加载以便编辑或检测,也可以传递给生成系统以供编译,加载并调用。
(3)模型动态编译和复合设计。模块具备动态编译当前已加载的工作流模型并保存为程序集的功能。进行模型复合设计时,设计者可以将多个模型程序集加载至活动工具箱,并结合WWF内置的Flowchart、Sequence、Parallel等活动一起完成工作流程的设计。
(4)模型运行。一旦模型复合设计完毕,内置的WF工作流引擎将根据设计的流程运行。
2系统关键问题及实现
2.1模型表达及转换
生成过程的不同阶段,模型的表达形式有所不同。因此,如何将不同阶段模型的表达形式进行转换是系统框架设计中优先考虑的问题。
2.1.1模型符号表达及存储
在模型构建环境中,引入了第三方控件MathMLControl。它是一个数学公式可视化控件,不仅包含了大量的数学相关符号,如算术运算符号、导数符号、积分符号等,还提供了强大的数学公式编辑功能,可有效进行诸如上标、下标等形式的组合,从而完成较复杂的数学表达形
[FK(W20][TPTCS2.tif]
式。此外,模型存储采用了基于XML标准的MathML(MathMarkupLanguage,数学标记语言)作为模型存储形式,主要基于:(1)XML作为一种标准的、可扩展的、半结构化的标记语言,目前已经成为许多领域内常见的数据表示和交换的标准,为模型系统功能的扩展提供支持。(2)MathML作为计算机之间交换数学信息的一种标准,是由W3C(万维网联盟)在XML的基础上制定而成的。利用它可以解决同一数学模型在不同平台的差异性。由于它提供一个可视化的模型构建环境,帮助我们显示、操作和共享数学表达式,有力地支撑了模型的集成与开发,降低了统一管理各领域模型的难度[12]。其正则文法公式如下所示: