CN1313920C - 一种基于统一构件封装件结构的构件组装方法 - Google Patents
一种基于统一构件封装件结构的构件组装方法 Download PDFInfo
- Publication number
- CN1313920C CN1313920C CNB2005101052396A CN200510105239A CN1313920C CN 1313920 C CN1313920 C CN 1313920C CN B2005101052396 A CNB2005101052396 A CN B2005101052396A CN 200510105239 A CN200510105239 A CN 200510105239A CN 1313920 C CN1313920 C CN 1313920C
- Authority
- CN
- China
- Prior art keywords
- component
- interface
- script
- computer
- components
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于统一构件封装件结构的构件组装方法,属于软件工程技术领域。首先,在一台或多台计算机上设置构件库,构成构件库计算机,用户从中提取构件后进行封装,形成以统一形式描述的构件封装件,并将其存储在构件目录库上,构成构件目录库计算机;在一台计算机上设置构件组装软件,构成构件组装计算机;用户从构件目录库计算机中提取一组需要组装的构件封装件,将其下载到构件组装计算机中,并根据所要组装的构件封装件信息,在构件组装计算机上对构件进行组装。采用本发明的方法,可以帮助软件设计人员实现基于构件的可视化编程。结合领域构件库,可支持不同应用领域的业务流程集成,以及面向用户的个性化服务的定制和集成。
Description
技术领域
本发明涉及一种基于统一构件封装件结构的构件组装方法,属于软件工程技术领域。
技术背景
构件是指具有相对独立功能和可复用的软件模块。它使得软件开发人员在新的系统开发中能够充分利用过去系统开发过程中积累的知识、经验和功能模块,而不必一切都“从零开始”,从而避免了软件开发中的重复劳动。因此,自从1968年NATO软件工程会议首次提出构件这一概念以来,构件技术作为实现软件复用的关键技术之一,一直受到软件界的青睐。目前,构件作为一种依附在计算机硬件和操作系统之上的重要的中间件系统,在金融、教育、电子商务、电子政务、医疗卫生等应用领域中得到了大量应用,为提高软件复用程度和软件开发的效率发挥了很好的作用。
为了支持软件复用,一些组织和公司纷纷推出自己的构件技术标准。目前,有影响的构件标准有SUN公司提出的Java构件标准JavaBeans、EJB,微软公司提出的COM、DCOM标准以及对象管理组织(OMG)CORBA3.0规范中的CCM标准。Internet上也出现了很多遵循上述构件技术标准的专门的构件库(如Alphaworks、ComponentPlanet、ComponentSource、Flashline等),提供了多种现成的可用构件,这些构件库形成了Internet上的构件资源,为软件复用,基于构件的程序开发提供了基础。
但是,目前各种类型的构件都使用自己特定的规范来开发,构件之间的相互访问和调用还只局限于同一类型的构件之间。对不同类型构件之间的一致性访问还缺少必要的支持,造成构件搜索、获取以及分析、组装等构件处理活动的困难,也使得现有Internet上的大量构件资源无法得到广泛的应用。
本申请人在专利“一种构件的封装和一致性访问的方法”中(ZL200410030654.5),提出一种统一构件封装件结构(以下简称UCDL),该封装件结构在现有的各种构件模型(如ActiveX,JavaBeans,EJB等)的基础上,通过对构件的封装来屏蔽构件描述和调用接口的差异,从而实现构件的一致性访问。
以UCDL构件封装件结构为基础,上述专利提出在一台或多台计算机上设置构件库,并将从互联网获得的构件存入构件库中,构成构件库计算机;在一台计算机上设置构件目录库,构成构件目录库计算机;构件使用方从构件库计算机上提取构件,对构件进行封装形成构件封装件,并将其组织存储在构件目录库计算机上;构件使用方根据构件目录库计算机中的构件封装件信息对构件资源进行一致性访问。
上述专利为多种类型之间的构件资源一致性访问提供了一种可行的方法。但是,使用构件的最终目的是为了构建新的应用系统,这除了如前所述的构件封装和一致性访问方法,以及通过设置构件库等来对现有构件资源进行统一描述和有效组织之外,还需要按照应用需求从构件库中检索到所需的构件,并对检索到的构件进行组装,从而构建新的应用系统,以更好地支持上层应用。
发明内容
本发明的目的是基于统一构件封装件结构,提出一种基于统一构件封装件结构的构件组装方法。从而能够利用存储在构件库中的大量已封装好、可以进行一致性访问的构件,根据用户的需要,选用合适的构件进行组装链接,快速生成新的应用系统,支持各个领域的应用集成。
本发明提出的基于统一构件封装件结构的构件组装方法,包括以下各步骤:
1)在一台或多台计算机上设置构件库,把从互联网上获得的构件存储进构件库,构成构件库计算机;
2)在一台计算机上设置构件目录库,用户从上述构件库计算机上提取构件后进行封装,形成以统一形式描述的构件封装件,并将其存储在构件目录库上,构成构件目录库计算机;
3)在一台计算机上设置构件组装软件,构成一个构件组装计算机;
4)用户从上述构件目录库计算机中提取一组需要组装的构件封装件,将其下载到构件组装计算机中;
5)用户根据所要组装的构件封装件信息,在构件组装计算机上对构件进行组装,进行组装的方法,包括以下步骤:
(1)构造一个负责控制构件组装过程的运行脚本文档结构,文档结构包括三部分:构件声明、接口连接关系定义以及构件组装控制流程定义;
(2)根据所要组装的构件封装件信息,将构件的外部接口以图形化的方式显示出来,用户选择、调整构件外部接口之间的连接关系,形成以图形化方式表示的构件组装方案,形成以图形化方式表示的构件组装方案的方法,包括以下步骤:
(a)在构件组装计算机中载入所要组装的构件封装件,从构件封装件中读取构件外部接口描述信息;
(b)根据读取的构件外部接口信息,将所要组装的构件及其外部接口以图形化的方式显示出来;
(c)用户根据需要组装的构件之间的功能调用关系,以图形化的方式在需要组装的构件之间建立构件外部接口的连接;
(d)根据上述已连接的构件外部接口的描述信息,判断已连接的构件外部接口之间的调用交互关系是否正确,并向用户反馈判断的结果;
(e)用户根据判断结果,调整构件外部接口之间的连接关系,生成图形化的构件组装方案;
(3)根据上述形成的图形化构件组装方案,生成相应的运行脚本,生成运行脚本的方法,包括以下步骤:
(a)构造一个空的运行脚本,在其中写入运行脚本文件的头信息;
(b)遍历上述已经形成的图形化构件组装方案,从中提取所要组装的构件封装件描述信息;
(c)从提取的描述信息中提取构件封装件的构件名和接口信息,填入到上述步骤(1)构造的运行脚本的构件声明部分中;
(d)根据上述图形化构件组装方案中构件接口的连线关系,在有连线的构件接口之间建立连接关系,填入到上述步骤(1)构造的运行脚本的接口连接关系定义部分中;
(e)深度遍历上述整个图形化构件组装方案,根据各个构件的调用顺序,把对每个构件的调用转化为运行脚本中的执行语句,填入到上述步骤(1)构造的运行脚本的构件组装控制流程定义部分中;
(f)在上述步骤(1)构造的运行脚本中写入结束标记,完成运行脚本的生成过程;
(4)解释执行上述生成的运行脚本,完成组装过程,运行脚本的解释执行过程,包括以下步骤:
(a)解释执行运行脚本中的构件声明部分:根据上述生成的运行脚本的构件声明部分中指定的构件名和构件接口,启动相应的构件代理,初始化构件实体,在后续的构件组装过程中,构件代理负责侦听来自外部的调用信息,并调用相应的构件实体;
(b)解释执行运行脚本中的构件接口连接关系定义部分:根据上述生成的运行脚本的构件接口连接关系定义中构件之间接口的连接关系,检查接口连接关系是否匹配,接口之间的消息定义是否一致,若检查通过,则运行脚本解释程序将这一接口连接关系记录为消息通道,并转入下一步解析,否则,运行脚本的解释过程中断,返回出错信息;
(c)解释执行构件组装控制流程定义部分:根据上述生成的运行脚本的构件组装控制流程定义的构件执行流程,产生构件交互所用的输入输出消息,并将其传输给构件代理,构件代理在收到输入消息后,将输入消息转换为所代理的构件实体的调用参数格式,并向构件实体相应的接口发出调用请求,在调用结果返回后,构件代理将返回值转换为其它构件代理的输出消息,然后将该消息通过相应的输出端口,输出到运行脚本解释程序,按照所定义的控制流完成构件之间的组装。
本发明提出的基于统一构件封装件结构的构件组装方法,其优点和应用如下:
1、采用本发明的方法,可以帮助软件设计人员实现基于构件的可视化编程。使用本发明中的构件组装方法,软件设计人员可以首先根据编程需要,提取需要组装的构件,并将构件的外部接口以图形化的方式直观地显示,由软件设计人员采用可视化方法选择、调整并最终确定构件之间的组装关系,完成构件组装过程。
2、本发明可应用于金融、教育、电子商务、电子政务、医疗卫生等应用领域,针对这些应用领域内来自不同供应商、不同模型的各类构件,使用本发明中的构件组装方法,基于统一构件封装件,实现对不同供应商、不同模型构件的组装,从而灵活地支持本应用领域的业务流程的形成和快速生成新的应用系统。
3、通过开发相应的用户界面,对用户的需求进行分析和理解,从构件库中直接发现所需要的构件,然后应用本发明的方法对这些构件进行组装,动态生成用户需要的应用程序,从而支持面向用户的个性化应用程序的定制和集成。
附图说明
图1是本发明提出的构件组装过程流程图。
图2是本发明方法中根据构件封装件信息对构件进行组装的流程图。
图3是运行脚本文档结构图。
图4是图形化构件组装方案的形成过程流程图。
图5是图形化构件组装方案中图元示例图。
图6是运行脚本的生成过程示意图。
图7是构件代理示意图。
图8是运行脚本的解释执行过程示意图。
具体实施方式
本发明提出的基于统一构件封装件结构的构件组装方法,其流程如图1所示,首先在一台或多台计算机上设置构件库,把从互联网上获得的构件存储进构件库,构成构件库计算机;在一台计算机上设置构件目录库,用户从上述构件库计算机上提取构件后进行封装,形成以统一形式描述的构件封装件,并将其存储在构件目录库上,构成构件目录库计算机;在一台计算机上设置构件组装软件,构成一个构件组装计算机;用户从上述构件目录库计算机中提取一组需要组装的构件封装件,将其下载到构件组装计算机中;用户根据所要组装的构件封装件信息,在构件组装计算机上对构件进行组装。
在本发明提出的构件组装方法中,专利号为ZL200410030654.5中公开的的统一构件封装件结构是一个基础。统一构件封装件在现有的各种构件模型(如ActiveX,JavaBeans,EJB等)的基础上,用独立于具体编程语言的接口规范来描述构件的接口信息,屏蔽了不同类型的构件调用接口和访问方式的差异,从而为在构件组装中实现对不同类型构件的访问和调用提供了基础。
本发明在构件组装过程中,根据构件封装件中的描述信息,将每一个构件都抽象为一个构件代理。这样,一方面构件组装过程中,屏蔽了不同构件描述上的差异,简化了构件组装的过程;另一方面,在组装过程中,通过构件代理机制实现与不同类型的构件实体的交互,实现了异构构件之间的组装。
在具体的构件组装方法中,本发明首先使用脚本语言(Script)定义一段“主程序”,按照顺序、选择、循环等控制方式调用并执行构件的功能,从而完成构件之间的组装。本发明中称之为运行脚本(Running Script)。
同时,为了方便用户生成运行脚本,本发明提出了图形化的构件组装方法,将构件及其外部接口以图形化的方式直观地显示给用户,通过用户的交互选择,确定所要组装构件之间的接口连接关系,在根据相应的构件封装件中的构件接口信息,判断构件之间接口连接调用关系的正确性,并由用户根据判断结果进一步调整、生成图形化组装方案。
在此基础上,本发明提出了从图形化组装方案到运行脚本的转换方法,进一步将图形化组装方案转换为运行脚本。
在对运行脚本的解释执行中,本发明采用了构件代理机制。根据运行脚本中定义的构件组装关系,提取构件的接口描述信息和调用条件,启动相应的构件代理,去调用构件实体。构件代理的调用结果返回后,根据运行脚本所定义的组装关系,组装成一个完整的应用程序,提交给用户,完成构件组装工作。
本发明方法中,根据构件封装件信息对构件进行组装的方法,如图2所示,包括如下具体步骤:
第一步:构造一个负责控制构件组装过程的运行脚本文档结构,文档结构包括三部分:构件声明、接口连接关系定义以及构件组装控制流程定义;
第二步:根据所要组装的构件封装件信息,将构件的外部接口以图形化的方式显示出来,用户选择、调整构件外部接口之间的连接关系,形成以图形化方式表示的构件组装方案;
第三步:根据上述形成的图形化构件组装方案,生成相应的运行脚本;
第四步:解释执行上述生成的运行脚本,完成组装过程。
运行脚本在构件组装中具有重要作用,它负责控制构件的组装过程,并在执行环境中执行所要组装的构件。如前述第一步中的构造的运行脚本文档结构如下:
本发明中的运行脚本是基于XML语法结构的,其结构如图3所示。按照XML描述规定,用XML描述的整个运行脚本都被称为根元素。在运行脚本中,根元素被称为RunningScript,又被分为三部分:
1、构件声明部分(<Components>部分)
描述所要组装的构件,包括对构件名以及构件外部接口的描述。运行脚本的解释程序会根据该部分的声明载入相应的构件,为脚本的执行做准备。
<Components>标签由一个或者多个<Component>标签组成。每个<Component>标签标识一个构件的声明,它包括id和name两个属性:前者是构件的唯一标识符,脚本解释程序可以根据这个标识符在本地构件库LCRW中获取构件;后者是构件的名称,在整个运行脚本中可以使用该名称引用此构件。
<Component>标签包含一个或者多个<Interface>标签,<Interface>标签用来标识该构件在组装过程中要使用的接口声明。<Interface>标签的name属性标识该接口的名称。它的子标签<InputMessage>和<OutputMessage>则分别标示了该接口的输入输出消息。消息的具体定义参考构件的UCDL的描述。
2、接口连接关系定义部分(<Links>部分)
此部分定义在组装过程中不同构件接口之间的连接关系,包括源构件接口和目的构件接口。运行脚本的解释程序会根据该部分的定义判断接口之间是否匹配,并建立消息通道,在构件组装过程中,消息根据该部分的定义在相应的消息通道中传递。
接口连接关系定义部分由<Links>来标识,<Links>进一步包含一个或者多个<Link>子标签。每个<Link>标签定义了两个构件之间接口的连接关系。<Link>标签的name属性是组装脚本中对该Link引用的唯一标识符。每个<Link>标签下,进一步包含<From>和<To>两个子标签,分别代表该连接的源接口和目的接口,每个接口由接口名称属性和构件名称属性组成。
3、构件组装控制流程定义部分(<Process>部分)
此部分定义构件的执行流程,描述构件之间的组装关系,包括对构件调用顺序以及构件之间的消息传递的定义等。
<Process>标签通过定义构件的执行流程来描述构件之间的组装关系。构件的执行流程类似于用来表达算法的流程图。流程中的每一步称为一个活动。<Process>部分主要描述了以下基本活动:
(1)<Invoke>:是运行脚本中的执行语句,用来调用某个构件的外部接口。<Invoke>标签的两个属性Component和Interface,进一步指明所要调用的构件名和该构件的接口。
(2)<Terminate>:终止对某个构件的调用。
在此基础上,运行脚本通过定义构件执行的控制流模式来将上述基本活动组合成更复杂的流程。构件执行的控制流模式有:
(1)<Sequence>:定义一组构件之间的顺序执行关系。一个Sequence控制流包含一个或多个按顺序执行的活动,在组装过程中,脚本解释程序将按照这些活动在<Sequence>元素中被列出的先后次序,顺序执行这些活动。
(2)<Switch>:定义一组构件之间的分支执行关系,一个Switch控制流包含一个或多个Case元素组成的有序列表和最后可选的Otherwise分支,每个Case元素定义了一个条件分支。执行时以Case分支的出现顺序来测试其条件,被满足的第一个分支被执行。如果所有Case分支的条件都未被满足,那么Otherwise分支将被执行。当被选的分支中的活动完成后,该Switch控制流结束。
(3)<While>:定义一组构件之间的循环执行关系。While控制流实现循环,它执行重复的活动直到给出的While循环条件不再被满足。
(4)<Flow>:定义一组构件之间的并发执行关系。Flow控制流中所包含的一组活动在运行脚本解释执行中将被并发地执行。当Flow中的所有活动完成时,Flow控制流结束。
以上各个标签是可以相互嵌套的,例如,一个Flow结构中就可以包含一个Switch结构,而这个Switch结构的不同条件对应不同的Invoke结构。
如前面所述的根据构件封装件信息对构件进行组装的方法中的第二步,即图形化构件组装方案的形成过程,如图4所示,包括以下步骤:
步骤1)在构件组装计算机中载入所要组装的构件封装件,从构件封装件中读取构件外部接口描述信息;
步骤2)根据读取的构件外部接口信息,将所要组装的构件及其外部接口以图形化的方式显示出来;
步骤3)用户根据需要组装的构件之间的功能调用关系,以图形化的方式在需要组装的构件之间建立构件外部接口的连接;
步骤4)根据上述已连接的构件外部接口的描述信息,判断已连接的构件外部接口之间的调用交互关系是否正确,并向用户反馈判断的结果;
步骤5)用户根据判断结果,调整构件外部接口之间的连接关系,生成图形化的构件组装方案。
其中的图形化构件组装方案是用一套容易理解的图形表示法以及一套语义集来描述构件以及构件之间的连接关系,在本发明中,使用一个有向图模型来定义构件之间的调用关系和组装流程,并对应于运行脚本的文档结构,进行相应的图元设计,如图5所示。
与运行脚本的文档结构相对应,图形化的构件组装方案中的图元分为两大类:
1、构件声明的图元定义:在图形化构件组装方案中,构件用一侧带有两个小长方形的大长方形表示,与其连在一起的圆代表构件接口。
2、构件组装控制流程的图元定义。按照运行脚本中所定义的对构件的构件之间的组装关系,如调用执行、顺序执行、并行执行、循环执行等,设计相应的图元来表示这些构件组装关系。
为了方便下一步由图形化构件组装方案生成运行脚本,本发明在图元定义的同时,也给出了该图元所对应的运行脚本示例,如图5所示。这样,在由用户确认生成最终的图形化构件组装方案后,只需遍历图形化构件组装方案,找到每个图元所对应的运行脚本示例,然后在其中填入具体的构件信息,如构件名称,构件接口属性等,就可以生成相应的运行脚本。
另外,运行脚本中的接口连接关系定义部分主要用来在组装过程中判断接口之间的匹配关系,因此在图形化构件组装方案中没有对应的图元定义。
如前面所述的根据构件封装件信息对构件进行组装的方法中的第三步,即运行脚本的生成算法如下所述:如图6所示,包括以下步骤:
1)构造一个空的运行脚本,在其中写入运行脚本文件的头信息;
2)遍历上述已经形成的图形化构件组装方案,从中提取所要组装的构件封装件描述信息;
3)从提取的描述信息中提取构件封装件的构件名和接口信息,填入到上述步骤1)构造的运行脚本的构件声明部分中;
4)根据上述图形化构件组装方案中构件接口的连线关系,在有连线的构件接口之间建立连接关系,填入到上述步骤1)构造的运行脚本的接口连接关系定义部分中;
5)深度遍历上述整个图形化构件组装方案,根据各个构件的调用顺序,把对每个构件的调用转化为运行脚本中的执行语句,填入到上述步骤1)构造的运行脚本的构件组装控制流程定义部分中,具体过程如下:深度遍历整个图形化构件组装方案,把每个sequence图元独立出来,变为一组顺序执行的活动,对每个构件的调用都转化为一个invoke活动;把图形化构件组装方案中的每个switch图元对应为一个运行脚本中的switch结构,其中每种condition下对应于一个活动;把图形化构件组装方案中的while图元转换为运行脚本中的while结构,并从图中读取While循环的循环条件,填入到运行脚本中while结构的相应部分,在图形化构件组装方案出现并发现象的sequence两头加到运行脚本的flow结构。
6)在上述步骤1)构造的运行脚本中写入结束标记,完成运行脚本的生成过程。
运行脚本生成之后,需要通过对运行脚本的解释执行来进一步完成构件之间的组装。
在运行脚本的解释执行中,为了基于统一的构件封装件信息,对不同类型的构件进行组装,本发明引入了构件代理机制。构件代理可以看作是构件封装件中所描述的构件功能的具体实现。通过构件代理,可以将不同类型的构件,如CORBA,COM,JavaBean等统一地当作一个UCDL构件来使用,从而实现对异构构件的组装。
构件代理在运行脚本解释执行过程中的作用如图7所示。在运行脚本的解释执行过程中,首先创建UCDL构件代理的实例,然后根据运行脚本中所定义的构件之间的控制流程,产生构件交互所用的输入输出消息,发送到相关的构件代理,由构件代理完成对所代理的构件实体(如CORBA构件,COM构件,JavaBean构件等)的调用。并将调用结果包装成输出消息,由构件代理输出到运行脚本执行工具,由执行工具再进一步按照所定义的控制流完成构件之间的组装。
如前面所述的根据构件封装件信息对构件进行组装的方法中的第三步,即运行脚本的解释执行过程,如图8所示,包括以下步骤:
1、解释执行构件声明部分
运行脚本的解释程序根据<Component>标签中指定的构件id和name属性,从本地构件资源库LCRW中提取相应的构件实体和UCDL描述信息,启动UCDL构件代理,并根据<Interface>标签中定义构件接口描述,在UCDL构件代理中生成相应的输入输出接口。
UCDL构件代理在启动之后,通过调用初始化接口,生成所代理构件的运行实例,并开始侦听输入消息。在后续的构件组装过程中,将由UCDL构件代理去调用相应的构件实体。
2、解释执行构件接口连接关系部分
<Link>标签中定义了构件之间接口的连接关系。运行脚本解释程序根据这一定义,检查接口连接关系是否匹配,接口之间的消息定义是否一致等。如果检查通过,运行脚本解释程序将这一接口连接关系记录为消息通道,并转入下一步解析工作。否则,运行脚本的解释过程中断,返回出错信息。
3、解释执行构件组装控制流程部分
<Process>标签通过定义构件的执行流程来定义构件之间的组装关系。在对这部分的解释执行中,运行脚本的解释程序根据运行脚本中所定义的构件之间的控制流程,产生构件交互所用的输入输出消息,并传输给UCDL构件代理。UCDL构件代理在收到输入消息之后,通过分析,将输入消息转换为所代理的构件实体可以理解的调用参数格式,并向构件实体相应的接口发出调用请求;在调用结果返回之后,UCDL构件代理再进一步将返回值“编码”为相应的UCDL输出消息,然后将该消息通过相应的输出端口,输出到运行脚本解释程序,由执行工具再进一步按照所定义的控制流完成构件之间的组装。
Claims (1)
1、一种基于统一构件封装件结构的构件组装方法,其特征在于该方法包括以下各步骤:
1)在一台或多台计算机上设置构件库,把从互联网上获得的构件存储进构件库,构成构件库计算机;
2)在一台计算机上设置构件目录库,用户从上述构件库计算机上提取构件后进行封装,形成以统一形式描述的构件封装件,并将其存储在构件目录库上,构成构件目录库计算机;
3)在一台计算机上设置构件组装软件,构成一个构件组装计算机;
4)用户从上述构件目录库计算机中提取一组需要组装的构件封装件,将其下载到构件组装计算机中;
5)用户根据所要组装的构件封装件信息,在构件组装计算机上对构件进行组装,进行组装的方法,包括以下步骤:
(1)构造一个负责控制构件组装过程的运行脚本文档结构,文档结构包括三部分:构件声明、接口连接关系定义以及构件组装控制流程定义;
(2)根据所要组装的构件封装件信息,将构件的外部接口以图形化的方式显示出来,用户选择、调整构件外部接口之间的连接关系,形成以图形化方式表示的构件组装方案,形成以图形化方式表示的构件组装方案的方法,包括以下步骤:
(a)在构件组装计算机中载入所要组装的构件封装件,从构件封装件中读取构件外部接口描述信息;
(b)根据读取的构件外部接口信息,将所要组装的构件及其外部接口以图形化的方式显示出来;
(c)用户根据需要组装的构件之间的功能调用关系,以图形化的方式在需要组装的构件之间建立构件外部接口的连接;
(d)根据上述已连接的构件外部接口的描述信息,判断已连接的构件外部接口之间的调用交互关系是否正确,并向用户反馈判断的结果;
(e)用户根据判断结果,调整构件外部接口之间的连接关系,生成图形化的构件组装方案;
(3)根据上述形成的图形化构件组装方案,生成相应的运行脚本,生成运行脚本的方法,包括以下步骤:
(a)构造一个空的运行脚本,在其中写入运行脚本文件的头信息;
(b)遍历上述已经形成的图形化构件组装方案,从中提取所要组装的构件封装件描述信息;
(c)从提取的描述信息中提取构件封装件的构件名和接口信息,填入到上述步骤(1)构造的运行脚本的构件声明部分中;
(d)根据上述图形化构件组装方案中构件接口的连线关系,在有连线的构件接口之间建立连接关系,填入到上述步骤(1)构造的运行脚本的接口连接关系定义部分中;
(e)深度遍历上述整个图形化构件组装方案,根据各个构件的调用顺序,把对每个构件的调用转化为运行脚本中的执行语句,填入到上述步骤(1)构造的运行脚本的构件组装控制流程定义部分中;
(f)在上述步骤(1)构造的运行脚本中写入结束标记,完成运行脚本的生成过程;
(4)解释执行上述生成的运行脚本,完成组装过程,运行脚本的解释执行过程,包括以下步骤:
(a)解释执行运行脚本中的构件声明部分:根据上述生成的运行脚本的构件声明部分中指定的构件名和构件接口,启动相应的构件代理,初始化构件实体,在后续的构件组装过程中,构件代理负责侦听来自外部的调用信息,并调用相应的构件实体;
(b)解释执行运行脚本中的构件接口连接关系定义部分:根据上述生成的运行脚本的构件接口连接关系定义中构件之间接口的连接关系,检查接口连接关系是否匹配,接口之间的消息定义是否一致,若检查通过,则运行脚本解释程序将这一接口连接关系记录为消息通道,并转入下一步解析,否则,运行脚本的解释过程中断,返回出错信息;
(c)解释执行构件组装控制流程定义部分:根据上述生成的运行脚本的构件组装控制流程定义的构件执行流程,产生构件交互所用的输入输出消息,并将其传输给构件代理,构件代理在收到输入消息后,将输入消息转换为所代理的构件实体的调用参数格式,并向构件实体相应的接口发出调用请求,在调用结果返回后,构件代理将返回值转换为其它构件代理的输出消息,然后将该消息通过相应的输出端口,输出到运行脚本解释程序,按照所定义的控制流完成构件之间的组装。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101052396A CN1313920C (zh) | 2005-09-28 | 2005-09-28 | 一种基于统一构件封装件结构的构件组装方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101052396A CN1313920C (zh) | 2005-09-28 | 2005-09-28 | 一种基于统一构件封装件结构的构件组装方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1744038A CN1744038A (zh) | 2006-03-08 |
CN1313920C true CN1313920C (zh) | 2007-05-02 |
Family
ID=36139428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101052396A Expired - Fee Related CN1313920C (zh) | 2005-09-28 | 2005-09-28 | 一种基于统一构件封装件结构的构件组装方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1313920C (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100375957C (zh) * | 2006-05-19 | 2008-03-19 | 清华大学 | 一种网络环境下根据用户需求生成软件服务的方法 |
CN1333336C (zh) * | 2006-06-23 | 2007-08-22 | 清华大学 | 一种支持异构构件的构件库统一管理方法 |
CN100419677C (zh) * | 2006-08-16 | 2008-09-17 | 中国航天科技集团公司第一研究院 | 基于模板的快速工程设计方法 |
CN101056207A (zh) * | 2007-05-31 | 2007-10-17 | 华为技术有限公司 | 用于通讯设备的软件加载方法和一种通信网络系统 |
CN102087599A (zh) * | 2011-02-24 | 2011-06-08 | 北京中电普华信息技术有限公司 | 一种基于J2EE的Web应用系统开发方法及装置 |
CN102073506A (zh) * | 2011-02-24 | 2011-05-25 | 北京中电普华信息技术有限公司 | 一种基于J2EE的Web应用请求处理方法及系统 |
CN102236556A (zh) * | 2011-08-01 | 2011-11-09 | 苏州万图明电子软件有限公司 | 一种软件产品的快速构建方法 |
CN103136406B (zh) * | 2011-12-03 | 2015-12-16 | 南京南瑞继保电气有限公司 | 可视化应用程序自动生成仿真用函数代码的方法 |
CN102722367B (zh) * | 2012-05-21 | 2015-11-25 | 深圳市茁壮网络股份有限公司 | 一种数据处理的方法、处理器及终端 |
CN104298513A (zh) * | 2014-10-11 | 2015-01-21 | 无锡天脉聚源传媒科技有限公司 | 一种应用类产品的生成方法及装置 |
CN104572091B (zh) * | 2014-12-25 | 2017-11-03 | 百度在线网络技术(北京)有限公司 | 应用软件实现方法、装置以及计算机设备 |
CN105607902A (zh) * | 2015-12-16 | 2016-05-25 | 苏州同元软控信息技术有限公司 | 基于构件模型的系统可视化设计及代码生成系统及方法 |
CN107229477B (zh) * | 2017-06-09 | 2019-10-08 | 华东师范大学 | 一种基于协同开发系统的构件交互关系建模方法 |
CN107256308B (zh) * | 2017-06-09 | 2019-10-08 | 华东师范大学 | 一种基于协同开发系统的构件交互关系建模系统 |
CN107491478A (zh) * | 2017-07-03 | 2017-12-19 | 广东南方数码科技股份有限公司 | 基于直观流程图的数据处理方法、电子设备及存储介质 |
CN107809388B (zh) * | 2017-11-10 | 2020-09-01 | 中国电子科技集团公司第四十一研究所 | 基于脚本配置式的自主寻路开关矩阵网络控制方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1564129A (zh) * | 2004-04-02 | 2005-01-12 | 清华大学 | 一种构件的封装和一致性访问的方法 |
CN1584830A (zh) * | 2004-06-16 | 2005-02-23 | 北京大学 | 构件化软件中非功能特征组装方法 |
-
2005
- 2005-09-28 CN CNB2005101052396A patent/CN1313920C/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1564129A (zh) * | 2004-04-02 | 2005-01-12 | 清华大学 | 一种构件的封装和一致性访问的方法 |
CN1584830A (zh) * | 2004-06-16 | 2005-02-23 | 北京大学 | 构件化软件中非功能特征组装方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1744038A (zh) | 2006-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1313920C (zh) | 一种基于统一构件封装件结构的构件组装方法 | |
CN1223938C (zh) | 一种构件的封装和一致性访问的方法 | |
Shaw et al. | Abstractions and implementations for architectural connections | |
US20050144226A1 (en) | Systems and methods for modeling and generating reusable application component frameworks, and automated assembly of service-oriented applications from existing applications | |
US9280527B2 (en) | Method and system for directly mapping web services interfaces and Java interfaces | |
JP2006526209A (ja) | コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム | |
Wassermann et al. | Sedna: A BPEL-based environment for visual scientific workflow modeling | |
JP2009238231A (ja) | コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム | |
CN1845069A (zh) | 一种网络环境下根据用户需求生成软件服务的方法 | |
CN1537271A (zh) | 使用自主数据处理机的计算机处理和程序设计方法 | |
CN111309291A (zh) | 一种模块化嵌入式软件架构及其定制方法、定制系统 | |
CN1811702A (zh) | 开发门户应用和自动部署门户应用的系统和方法 | |
CN1320874A (zh) | 网络环境下的程序挖掘方法及其程序挖掘系统 | |
CN1848774A (zh) | 一种远程调用通信组件的系统及方法 | |
Daniel et al. | Distributed orchestration of user interfaces | |
US9454616B2 (en) | Method and system for unifying configuration descriptors | |
Nierstrasz et al. | A calculus for modeling software components | |
Daniel et al. | From people to services to ui: Distributed orchestration of user interfaces | |
US7343391B2 (en) | System and method for interprocess services client artifact download | |
CN100345110C (zh) | 避免网格计算应用依赖底层开发工具箱的方法 | |
Layka | Learn java for web development: Modern java web development | |
CN1662011A (zh) | 使用元数据定义映射来构建组件应用程序的系统和方法 | |
KR20100089831A (ko) | 관리 자바빈 객체들의 생성 및 관리 | |
JP2010049439A (ja) | ソフトウェアモデルを用いたシステム構築方法およびモデリング装置 | |
CN1731351A (zh) | 一种用于网格计算的模型驱动方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070502 Termination date: 20180928 |