CN1959631A - 一种基于itron的应用软件自主装配技术 - Google Patents

一种基于itron的应用软件自主装配技术 Download PDF

Info

Publication number
CN1959631A
CN1959631A CNA2005101100648A CN200510110064A CN1959631A CN 1959631 A CN1959631 A CN 1959631A CN A2005101100648 A CNA2005101100648 A CN A2005101100648A CN 200510110064 A CN200510110064 A CN 200510110064A CN 1959631 A CN1959631 A CN 1959631A
Authority
CN
China
Prior art keywords
interface
assembly
container
application
component
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.)
Granted
Application number
CNA2005101100648A
Other languages
English (en)
Other versions
CN1959631B (zh
Inventor
王德铭
张激
刘民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EAST CHINA INSTITUTE OF COMPUTER TECHNOLOGY
QIMING SOFTWARE CO Ltd SHANGHAI
Original Assignee
EAST CHINA INSTITUTE OF COMPUTER TECHNOLOGY
QIMING SOFTWARE CO Ltd SHANGHAI
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by EAST CHINA INSTITUTE OF COMPUTER TECHNOLOGY, QIMING SOFTWARE CO Ltd SHANGHAI filed Critical EAST CHINA INSTITUTE OF COMPUTER TECHNOLOGY
Priority to CN200510110064.8A priority Critical patent/CN1959631B/zh
Publication of CN1959631A publication Critical patent/CN1959631A/zh
Application granted granted Critical
Publication of CN1959631B publication Critical patent/CN1959631B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

一种基于ITRON的应用软件自主装配技术,包括:容器,是运行在目标机上的核心组件,这些组件分别实现了基本应用接口、框架控制接口和框架服务接口,主要负责软件应用组件和运行时环境的交互,并根据设定的策略创建应用组件;域配置文件,用于描述系统中的硬件设备和软件组件,这些文件以XML的形式描述了组成系统的硬件设备和软件组件的ID、能力、属性、相互间依赖关系和位置等信息;自动化装配和部署工具,是为了减少应用系统开发和软件组件开发过程中编写域配置文件的错误,提供可视化的域配置文件编辑器和自动化的装配和部署的工具;是集成在开发环境中的一组工具,通过这些工具可以最终生成符合容器需求的域配置文件。

Description

一种基于ITRON的应用软件自主装配技术
技术领域
本发明属于计算机技术领域。
背景技术
在复杂系统中,应用组件一般需要根据任务需求按照不同的装配逻辑进行部署,但是由于开发应用组件所采用的编程语言不同,适用的操作系统不同,以及组件间所存在的相互依赖关系,导致对应用组件进行装配和部署的工作非常复杂,尤其是在一组应用组件需要部署于同一个进程空间时,更是如此。因此,必须将应用组件的装配和部署工作标准化,采用标准的XML语言对组件的装配与部署逻辑进行描述,开发通用的组件装配与部署工具,将所有这些繁琐的重复性工作自动化,以简化复杂应用系统的开发。
发明内容
本发明的目的在于提供一种基于ITRON的应用软件自主装配技术,克服现有技术的上述缺点。
为达到上述目的,本发明的解决方案是:一种基于ITRON的应用软件自主装配技术,包括:容器,是运行在目标机上的核心组件,这些组件分别实现了基本应用接口、框架控制接口和框架服务接口,主要负责软件应用组件和运行时环境的交互,并根据设定的策略创建应用组件;同时,负责对系统的资源进行保护,在正确的时刻激活/销毁应用组件;
域配置文件,用于描述系统中的硬件设备和软件组件,这些文件以XML的形式描述了组成系统的硬件设备和软件组件的ID、能力、属性、相互间依赖关系和位置等信息;
自动化装配和部署工具,是为了减少应用系统开发和软件组件开发过程中编写域配置文件的错误,提供可视化的域配置文件编辑器和自动化的装配和部署的工具;是集成在开发环境中的一组工具,通过这些工具可以完成对软件应用组件的描述和实现对软件应用组件的可视化装配与部署逻辑设定,并最终生成符合容器需求的域配置文件。
进一步,该基本应用接口,包括:
Port接口,该接口为容器提供了管理端口间互联的操作,定义的是如何建立传输数据和控制的方式;
LifeCycle接口,该接口为容器提供初始化或释放软件应用组件的数据和处理单元的操作;
TestableObject接口,该接口为容器提供了调用软件应用组件自检的操作;
PortSupplier接口,该接口为容器提供了获取组件Port端口的操作;
PropertySet接口,该接口为容器定义了配置和查询组件属性的操作,回给输出参数propertyies;
Resource接口,该接口为容器提供了控制和配置软件应用组件的公共操作;
ResourceFactory接口,该接口为容器提供了根据应用的需求动态创建和销毁Resource组件的操作。
该框架控制接口:对整个域的控制是通过域管理接口、设备接口和设备管理接口来完成的;包括:
Application接口,该接口为容器提供了对域内应用程序实例进行控制、配置和状态管理的操作;
ApplicationFactory接口,该接口为容器提过拉在域内动态创建指定类型应用程序的操作,其中,所创建Application的类型由软件描述文件SAD确定;
DomainManager接口,该接口为容器提供了对整个域进行控制和配置的操作,负责与人机界面交互并接口域内组件的注册与注销;
Device接口,该接口为容器提供了对域内逻辑设备进行状态管理、配置、资源分配与回收的操作,其中,逻辑设备是实际硬件设备的功能抽象;
LoadableDevice接口,该接口对Device接口进行了扩展,为容器提供了在具体硬件设备上加载/卸载软件应用组件的操作;
ExecutableDevice接口,该接口对LoadableDevice接口进行了扩展,为容器提供了在具体硬件设备上运行/结束软件应用组件的操作;
DeviceManager接口,该接口为容器提供了管理域内逻辑设备和服务的操作,它负责在启动逻辑设备和服务时传递正确的可执行参数,并接受逻辑设备和服务的注册与注销,
该框架服务接口包括:
File接口,该接口为容器提供了访问文件的通用接口,它屏蔽了不同操作系统的差异;
FileSystem接口,该接口对File接口进行了扩展,为容器提供了访问物理文件系统的操作,和File接口一样,该接口也屏蔽了不同操作系统的差异;
FileManager接口,该接口对FileSystem接口进行了扩展,为容器提供了访问多种物理文件系统的操作,同样,该接口也屏蔽了不同操作系统的差异。
该域描述文件包括:
软件包描述文件,用于描述与软件应用组件实现相关的信息;
软件装配描述文件,用于描述软件应用组件的装配逻辑和部署关系;
软件组件描述文件,用于描述软件应用组件所提供的或使用的端口信息;
设备包描述文件,用于描述与逻辑设备相对应的具体硬件设备的特性,用于系统维护;
设备配置描述文件,用于描述域中的逻辑设备如何启动、配置,以及如何查找域管理器等信息;同时,还描述了系统所提供的服务;
域管理器配置描述文件,用于描述域管理器的相关信息;
属性描述文件,用于描述软件应用组件或设备的属性。
该自动化装配和部署工具包括:
工程管理器;实现在一个统一的开发环境中完成各种类型的组件工程操作,对所有的工程进行有效管理,
组件编辑器;以可视化的形式提供对域配置文件的编辑功能,并能和域配置文件生成器协同工作,实现对所创建和编辑的域配置文件进行格式检查,同时,提供对每个XML单元的浏览功能;
组件装配器;当软件应用组件创建完成后,组件装配器负责将他们集成到一起,以形成一个完整的应用系统。
还包括:域配置文件生成器;是一个后台模块,主要是与组件编辑器和组件装配器协同工作,根据组件编辑器和组件装配器中的可视化描述生成域配置文件。
还包括:组件库管理器,允许组件开发人员将所开发的软件应用组件添加到公共的组件库中,并能根据用户需求设置灵活的组件检索方式,同时,组件库管理器还负责对所有在库组件的管理。
一种上述的容器的实现和安装方法,包括:
(1)完整实现本技术中所定义的各种接口,包括基本应用接口、框架控制接口和框架服务接口;
(2)实现域配置文件解析器;
(3)针对具体的硬件平台和软件平台,配置基本的应用组件运行环境,包括对硬件设备和服务进行逻辑封装、对系统资源进行配置、对域管理器进行配置等;
(4)针对具体的应用需求,开发容器启动所需的引导模块,用于引导容器的启动以及域管理器和设备管理器的启动;
(5)将实现的容器可执行程序、系统引导程序和系统映像一起安装到目标平台;
(6)给目标系统加电,启动系统映像;
(7)系统映像启动结束后,运行容器引导程序,引导容器启动;
(8)基本运行环境就绪后,可以动态安装各种应用组件包到目标平台;
(9)根据实际的应用需求,启动相关的应用;
(10)系统就绪,用户可以对应用进行各种所需的操作。
一种上述的组件的创建方法,包括:
(1)启动自动化装配和部署工具;
(2)通过工程菜单新建组件工程;
(3)填写新组件工程的属性信息;
(4)打开组件编辑器;
(5)切换到对应的编辑页,按照用户使用手册或操作指南进行组件描述,填写相关的描述信息;
(6)按保存菜单保存在各个编辑页中所填写的内容;
(7)在各个编辑页中填写完所有必须的描述信息后,右击组件工程,选择“打包”菜单,对所描述的组件进行域配置文件自动生成,并形成可以入库管理的完整组件包。
一种上述的已存在的组件的编辑方法,包括:
(1)启动自动化装配和部署工具;
(2)通过“导入”菜单导入已存在的组件工程;
(4)打开组件编辑器;
(5)切换到对应的编辑页进行组件编辑,填写相关的描述信息;具体的编辑操作类似于创建新的组件;
(6)按保存菜单保存在各个编辑页中所做的修改;
(7)完成了组件信息的编辑和修改后,右击组件工程,选择“打包”菜单,对组件进行域配置文件重新生成,形成一个新的可入库管理的完整组件包。
一种上述的组件的装配方法,包括:创建新的应用装配,包括:
(1)启动自动化装配和部署工具;
(2)通过工程菜单新建装配工程;
(3)打开组件装配器;
(4)填写新装配工程的属性信息;
(5)从本地或组件库中导入参加装配的组件;导入的组件会放置在装配器中的组件工具栏中;对应常用的服务,组件工具栏中已经预设了相关的组件;
(6)将组件从组件工具栏拖放到可视化装配区;
(7)选择“连接”工具,根据所设计的装配逻辑,建立应用组件间的端口连接;
(8)选择“部署”工具,根据所设计的部署逻辑,对应用组件进行部署设置;
(9)设置应用对外提供的端口,以供与其他应用进行通信;
(10)设置一个主控组件,该组件在应用创建时负责将容器发出的操作调度到适当的应用组件上,并负责在应用创建成功后对所有的应用组件进行初始化和配置;
(11)按保存菜单保存所做的装配设计;
(12)在完成了所有的应用组件装配工作后,右击装配工程,选择“打包”菜单,对所描述的组件装配进行域配置文件自动生成。
上述的组件的装配方法,还包括:编辑已存在的应用装配,包括:
(1)启动自动化装配和部署工具;
(2)通过“导入”菜单导入已存在的装配工程,并直接对原装配工程进行编辑;
(4)打开组件装配器;
(5)对原装配工程进行编辑;具体的编辑操作类似于创建新的应用装配;
(6)按保存菜单保存所做的修改;
(7)完成了编辑和修改后,右击装配工程,选择“打包”菜单,对所描述的组件装配进行域配置文件自动生成。
由于采用了上述方案,本发明具有以下优点:
它将应用软件的地址空间进行了分割,使得应用软件组件内部不包含任何与其他组件相关的信息,如加载库的路径、名称等;
该技术采用XML语言对域内资源进行描述,使得应用组件的具体实现和描述进行了分离,大大增强了应用系统的重构性;
该技术通过定义应用软件组件的端口来规范数据信息流和控制流的传输,并在组件加载时根据实际应用需求动态建立端口间的连接,从而很好地实现了应用软件的自主装配与部署。
附图说明
图1是本发明接口间逻辑关系描述示意图。
图2是本发明Port接口的UML描述示意图。
图3是本发明LifeCycle接口的UML描述示意图。
图4是本发明TestableObject接口的UML描述示意图。
图5是本发明PortSupplier接口的UML描述示意图。
图6是本发明PropertySet接口的UML描述示意图。
图7是本发明Resource接口的UML描述示意图。
图8是本发明ResourceFactory接口的UML描述示意图。
图9是本发明Application接口的UML描述示意图。
图10是本发明ApplicationFactory接口的UML描述示意图。
图11是本发明DomainManager接口的UML描述示意图。
图12是本发明Device接口的UML描述示意图。
图13是本发明LoadableDevice接口的UML示意图。
图14是本发明ExecutableDevice接口的UML描述示意图。
图15是本发明DeviceManager接口的UML描述示意图。
图16是本发明File接口的UML描述示意图。
图17是本发明FileSystem接口的UML描述示意图。
图18是本发明FileManager接口的UML描述示意图。
图19是本发明域配置文件间的关系示意图。
具体实施方式
基于ITRON的应用软件自主装配技术通过在一个标准的环境中定义允许应用开发者对组件进行管理、配置和部署的特性与服务对组件模型进行了扩展。通过使用该技术,可以对应用软件的动态配置与部署提供巨大的灵活性,所以,该技术非常适合于具有伸缩性和关键任务需求的系统开发中。
在具体解决方案中,主要包括以下几部分内容:
1.容器
容器是运行在目标机上的一些核心组件,这些组件分别实现了基本应用接口、框架控制接口和框架服务接口,主要负责软件应用组件和运行时环境的交互,并根据设定的策略创建应用组件;同时,负责对系统的资源进行保护,在正确的时刻激活/销毁应用组件。
容器为应用程序的开发和配置提供了一系列标准的API,并封装了对应用组件进行管理和配置的部分接口,包括基本应用接口、控制接口、服务接口。这些接口和API间的逻辑关系如图1所示。
从图1中可以看出,DomainManager接口管理了域内所有的Applications、ApplicationFactories、Devices以及DeviceManagers。而Application则是由一个或多个Resource组件组成的,其中,有些Resources组件可以直接控制系统的内部硬件设备,他们是实现了Device接口、LoadableDevice接口或ExecutableDevice接口的逻辑设备组件;另外一些Resources组件则是为用户提供应用服务的。在本技术中,DomainManager是整个域的核心,它不仅管理了域内的各种资源,还管理了域中当前可用资源的行为规则以及加载软件应用组件所需的条件等。
图1中的文件服务接口(File、FileSystem和FileManager)主要用来安装、删除域内的各种文件,提供对分布式文件系统访问的功能。
容器各部分的详细介绍如下:
1.1基本应用接口
1.1.1 Port接口
该接口为容器提供了管理端口间互联的操作,其UML描述如错误!未找到引用源。2所示。在本技术中,Port定义的是如何建立传输数据和控制的方式。
1.1.1.1 connectPort操作
该操作建立到输入参数connection所指定组件的连接,其中的输入参数connectionId是连接的唯一标识符,用于disconnectPort操作中断开指定的连接。
具体步骤为:
(1)使用方组件获取connection组件的对象引用;
(2)将之记录到本地变量中;
(3)将该连接标识为connectionId。
1.1.1.2 disconnectPort操作
该操作断开由输入参数connectionId所指定的连接。
具体步骤为:
(1)在组件内查找标识为connectionId的连接;
(2)将该连接所记录的提供方自己对象引用删除。
1.1.2 LifeCycle接口
该接口为容器提供了初始化或释放软件应用组件的数据和处理单元的操作。其UML描述如错误!未找到引用源。3所示。
1.1.2.1 initialize操作
该操作用于初始化组件,具体的初始化动作由应用组件开发者实现。
容器调用组件initialize操作的步骤为:
(1)用户调用创建应用操作;
(2)应用程序工厂解析应用的域配置文件;
(3)应用程序工厂从域配置文件中获取创建应用所需的基本信息;
(4)应用程序工厂创建应用,并逐个启动应用中的组件;
(5)启动组件完毕后,调用装配控制器的初始化操作;
(6)装配控制器逐个调用相关组件的initialize操作;
(7)每个组件的initialize操作完成本组件的初始化工作。
1.1.2.2 releaseObject操作
该操作用于释放组件存在期间所分配的所有资源,并销毁组件。具体的销毁动作由应用组件开发者实现。
容器调用组件releaseObject操作的步骤为:
(1)用户调用应用的销毁操作;
(2)应用断开各个组件间的端口连接;
(3)应用停止各个组件的运行;
(4)应用调用所包含组件的releaseObject操作,销毁各个组件。
1.1.3 TestableObject接口
该接口为容器提供了调用软件应用组件自检的操作,其UML描述如错误!未找到引用源。4所示。
1.1.3.1 runTest操作
该操作用于组件自检,一般用于具有Device接口的逻辑设备组件。具体的自检动作由应用组件开发者实现。
容器调用组件runTest操作的步骤为:
(1)容器获取用户的输入,包扩:执行自检的ID、提供的输入属性;
(2)容器构建runTest操作所需的输入参数;
(3)容器调用组件的runTest操作;
(4)容器将自检后的结果返回给用户。
1.1.4 PortSupplier接口
该接口为容器提供了获取组件Port端口的操作,其UML描述如错误!未找到引用源。5所示。
1.1.4.1 getPort操作
该操作用于在域内获取组件的指定端口,其中,name是端口的名称。
容器获取组件端口的步骤为:
(1)容器获取用户给定的端口名称;
(2)容器调用组件的getPort操作,获取实现该端口的对象;
(3)容器将获取的端口对象返回给调用者。
1.1.5 PropertySet接口
该接口为容器定义了配置和查询组件属性的操作,其UML定义如错误!未找到引用源。6所示。
1.1.5.1 configure操作
该操作用于对组件的属性进行配置,其中,configProperties给出的是待配置的属性信息,包括具体的值。
容器对组件进行属性配置的步骤为:
(1)容器获取用户需要配置的属性ID和属性值;
(2)容器调用组件的configure操作,将获取的属性值传给组件;
(3)组件执行相应的属性配置操作。
1.1.5.2 query操作
该操作允许对组件的属性进行查询。
容器对组件进行属性查询的步骤为:
(1)容器获取用户需要查询的属性ID;
(2)容器调用组件的query操作,将需查询的属性ID传给组件;
(3)组件执行相应的属性查询操作,并将查询结果返回给输出参数propertyies;
(4)容器将组件返回的结果返回给调用者。
1.1.6 Resource接口
该接口为容器提供了控制和配置软件应用组件的公共操作,其UML描述如错误!未找到引用源。7所示。
1.1.6.1 stop操作
该操作用来控制Resource类型的组件终止其内部进程,不响应任何的外部请求,但configure、query和start操作除外。
容器停止资源组件步骤为:
(1)容器接收用户停止资源组件的输入;
(2)容器调用组件的stop操作;
(3)组件执行与停止相关的操作。
1.1.6.2 start操作
该操作用来控制Resource类型的组件启动其内部进程,并将组件置于运行状态。
容器启动资源组件步骤为:
(1)容器接收用户启动资源组件的输入;
(2)容器调用组件的start操作;
(3)组件执行与启动相关的操作。
1.1.7 ResourceFactory接口
该接口为容器提供了根据应用的需求动态创建和销毁Resource组件的操作,其UML如错误!未找到引用源。8所示。
1.1.7.1 createResource操作
该操作提供在ResourceFactory进程空间内动态创建Resources组件的操作。
容器对启动资源组件步骤为:
(1)容器接收用户创建资源组件的输入;
(2)容器定位创建组件的资源工厂;
(3)容器解析与创建资源相关的域配置文件,获取创建资源时所需的信息;
(4)容器将解析到的信息传递给资源工厂;
(5)容器触发资源工厂的createResource操作;
(6)资源工厂将所创建的新资源返回给容器;
(7)容器将接收到的新资源返回给用户。
1.1.7.2 releaseResource操作
该操作用于销毁Resource类型的组件。
容器销毁资源组件步骤为:
(1)容器接收用户释放资源组件的输入;
(2)容器根据resourceId参数定位该销毁的资源组件;
(3)容器定位创建待销毁资源组件的资源工厂;
(4)容器调用资源工厂的releaseResource操作,销毁资源组件。
1.2 框架控制接口
在本技术中,对整个域的控制是通过域管理接口、设备接口和设备管理接口来完成的。域管理接口包括Application、ApplicationFactory和DomainManager,这些接口管理域内的应用程序、设备和设备管理器的注册/注消以及对域内应用程序进行控制。
在本技术中,Application、ApplicationFactory和DomainManager接口是捆绑在一起的,需要作为一个完整的域管理应用和服务来实现和发布。
设备管理接口是域内对逻辑设备进行控制和管理的接口,包括Device、LoadableDevice、ExecutableDevice和AggregageDevice接口。这些接口主要负责逻辑设备的创建,以及启动部署在逻辑设备上的组件或服务。
1.2.1 Application接口
该接口为容器提供了对域内应用程序实例进行控制、配置和状态管理的操作,其UML描述如错误!未找到引用源。9所示。
应用程序实例由应用程序工厂接口的create()操作创建。应用程序接口所继承的releaseObject()操作主要负责在拆消应用程序实例时释放所有分配的资源。
1.2.1.1 releaseObject操作
该操作用于终止应用程序实例的执行,并释放所有已分配的资源。
以下步骤描述了容器销毁应用程序实例的过程:
(1)用户发出销毁应用程序的操作;
(2)容器调用应用程序实例的releaseObject()操作;
(3)应用程序断开其中各组件间的Port连接,以及应用程序中组件与其他服务或设备的Port连接;
(4)容器销毁资源组件;
(5)容器结束组件的进程;
(6)容器卸载组件的可执行映像;
(7)容器释放已分配的各种系统资源。
1.2.1.2 getPort操作
该操作用于获取应用程序的可见端口。
容器获取应用程序端口的操作步骤为:
(1)容器接收用户输入,包括:应用程序的名称和端口的名称;
(2)容器根据应用程序的名称在域内定位应用程序;
(3)容器遍历应用程序中的所有资源组件,以参数name调用各个资源组件的getPort操作;
(4)容器将所获取的对象引用返回给调用者。
1.2.2 ApplicationFactory接口
该接口为容器提过拉在域内动态创建指定类型应用程序的操作,其UML描述如错误!未找到引用源。10所示。其中,所创建Application的类型由软件描述文件SAD确定。
1.2.2.1 create操作
该操作用于在应用程序工厂地址空间内动态创建应用程序的操作。
以下步骤描述了容器创建应用程序的过程:
(1)用户发出创建应用程序的操作;
(2)容器调用应用程序工厂的create()操作;
(3)容器依据SAD文件中描述的部署关系在整个域内进行应用程序可加载性分析,检查加载应用程序所依赖的资源、设备和服务是否满足要求;
(4)容器进行实际系统资源分配;
(5)容器加载并执行应用程序组件;
(6)容器触发对应用程序进行初始化和配置的操作;
(7)应用程序完成初始化和配置操作;
(8)容器依据SAD文件中描述的装配逻辑,建立组件间的端口连接;
(9)容器将新创建的应用返回给用户。
1.2.3 DomainManager接口
该接口为容器提供了对整个域进行控制和配置的操作,负责与人机界面交互并接口域内组件的注册与注销其UML如错误!未找到引用源。11所示。
1.2.3.1 registerDeviceManager操作
该操作为设备管理器提供了向域管理器注册的机制,在注册时,域管理器会收集设备管理器中的所有信息,包括其中已注册的设备和服务,以及设备所具有的资源。
注册设备管理器到域管理器的步骤为:
(1)启动设备管理器结束后,触发向域管理器注册设备管理器的操作;
(2)域管理器检查待注册设备管理器是否有效,即对象引用是否合法;
(3)域管理器获取设备管理器中的设备和服务;
(4)域管理器将设备管理器的对象引用记录到本地;
(5)域管理器将设备管理器中的设备对象引用记录到本地;
(6)域管理器将设备管理器中设备的资源、能力等信息记录到本地;
(7)域管理器将设备管理器中已注册的服务信息记录到本地;
(8)域管理器负责建立与新注册设备或服务相关的连接。
1.2.3.2 registerDevice操作
该操作用于将设备注册到域管理器,咱注册时,域管理器会收集设备所具有的资源信息,并将其存储在域管理器本地。
向域管理器中注册设备的步骤为:
(1)启动设备结束后,设备首先申请向设备管理器注册;
(2)容器将该操作调度给设备管理器;
(3)设备管理器在注册设备结束后向域管理器注册新注册的设备;
(4)域管理器获取设备的资源、能力等信息,并将之记录到本地。
1.2.3.3 installApplication操作
该操作用于安装新的应用到域中,即将目标平台外的应用安装到目标平台。
安装应用程序的步骤为:
(1)用户指定存放待安装应用程序的位置;
(2)容器读取应用程序域配置文件,进行应用程序域配置文件合法性与完整性验证;
(3)容器将应用程序的所有文件安装到指定的目录;
(4)容器根据应用程序的SAD域描述文件创建应用程序工厂,供以后创建应用程序实例之用;
(5)容器更新域内已安装的应用程序列表信息。
1.2.3.4 unregisterDeviceManager操作
该操作用于从域管理器中注销设备管理器。在注销时,所有与该设备管理器相关的信息都将从域管理器中清除。
从域管理器中注销设备管理器的步骤为:
(1)用户触发关闭设备管理器的操作;
(2)容器将该操作调度给对应的设备管理器;
(3)设备管理器首先注销在其中注册的设备和服务;
(4)设备管理器触发设备和服务的销毁操作;
(5)设备管理器同时触发自身的销毁操作;
(6)设备管理器在完成了与自身销毁相关的操作后,向域管理器注销自身;
(7)域管理器在本地定位待注销设备管理器和其中的设备与服务信息;
(8)域管理器将设备管理器的对象引用、相关设备和服务的对象引用、设备的资源与能力等信息从本地清除。
1.2.3.5 unregisterDevice操作
该操作用于从域管理器中注销设备,在注销时,所有与该设备相关的信息都将从域管理器中清除。DeviceManager的Device。
从域管理器中注销设备的步骤为:
(1)用户触发关闭设备的操作;
(2)设备触发本地的releaseObiect操作完成本地设备停止、释放等动作;
(3)设备向所在设备管理器申请注销操作;
(4)容器将该操作调度给设备所在的设备管理器;
(5)设备管理器启动注销设备的操作;
(6)设备管理器同时向域管理器申请注销设备;
(7)域管理器在本地定位待注销设备,并收集与该设备相关的记录信息;
(8)域管理器释放该设备的对象引用,并删除所有在本地记录的设备信息。
1.2.3.6 uninstallApplication操作
该操作用于从域管理器中卸载应用,并彻底从域内物理删除。
删除应用程序的步骤为:
(1)用户触发删除应用程序的操作;
(2)容器将该操作调度给域管理器;
(3)域管理器在域内验证是否还有该应用程序的实例在运行;如果有,先停止所有应用程序实例的运行;
(4)域管理器停止待删应用程序所对应的应用程序工厂;
(5)域管理器将应用程序的可执行文件和域配置文件从域内物理删除。
1.2.3.7 registerService操作
该操作用于将设备管理器中的服务注册到域管理器,以进行域内应用组件的动态装配和部署。
向域管理器注册服务的步骤为:
(1)启动服务结束后,服务申请向设备管理器注册;
(2)容器将该操作调度给设备管理器;
(3)设备管理器在注册服务结束后向域管理器注册新注册的服务;
(4)域管理器获取服务的对象引用和相关信息,并将之记录到本地。
1.2.3.8 unregisterService操作
该操作用于将设备管理器的服务从域管理器中删除。
从域管理器中注销服务的步骤为:
(1)用户触发停止服务的操作;
(2)容器将该操作调度给服务所在的设备管理器;
(3)设备管理器启动注销服务的操作;
(4)设备管理器同时向域管理器申请注销服务;
(5)域管理器在本地定位待注销服务,并收集与该服务相关的记录信息;
(6)域管理器释放该服务的对象引用,并删除所有在本地记录的设备信息。
1.2.4 Device接口
该接口为容器提供了对域内逻辑设备进行状态管理、配置、资源分配与回收的操作,其中,逻辑设备是实际硬件设备的功能抽象。Device接口的UML描述如错误!未找到引用源。12所示。
1.2.4.1 allocateCapacity操作
该操作提供了从设备中分配资源的操作。当设备的adminState属性为UNLOCK,operationalState属性为ENABLED,usageState不为BUSY时,allocateCapacity操作将根据输入的capacities参数减少设备的当前资源;当设备检测到不能继续分配资源时,allocateCapacity操作将设备的usageState设为BUSY。当capacity已被使用但仍有空余时,allocateCapacity操作将usageState属性设为ACTIVE。
设备进行资源分配的步骤为:
(1)设备验证输入参数capacities的合法性;
(2)设备验证当前的状态是否能够进行资源分配;如果可以,则在设备上反映出资源的分配情况,并返回true给容器;不可以,则返回false给容器;
(3)容器将allocateCapacity操作的返回值返回给用户。
1.2.4.2 deallocateCapacity操作
该操作提供了从设备中回收资源的操作。同时,设备会根据回收资源后的资源使用情况设置正确的设备状态。
设备进行资源回收的步骤为:
(1)设备验证输入参数capacities的合法性;
(2)设备按照输入参数capacities的内容释放相关资源。
1.2.4.3 releaseObject操作
该操作是对资源接口中releaseObject接口的扩充,描述释放逻辑设备的附加行为。
设备进行对象释放操作的步骤为:
(1)用户发出停止设备的操作;
(2)容器将该操作调度给具体的设备;
(2)设备触发本地的releaseObiect操作,进行与设备对象释放相关的清理操作。
1.2.5 LoadableDevice接口
该接口对Device接口进行了扩展,为容器提供了在具体硬件设备上加载/卸载软件应用组件的操作,其UML描述如错误!未找到引用源。13所示。
1.2.5.1 load操作
该操作加载由loadKind和fileName参数所指定的文件到设备上,从而提供了在指定设备上加载软件可执行代码的机制。如果该设备是一个可执行设备,则加载后的软件可以在设备上运行。
加载软件组件到设备上的操作步骤为:
(1)用户发出在设备上加载组件的操作;
(2)容器将该操作调度给具体的设备;
(3)设备触发本地的load操作;
(4)load操作调用操作系统接口将组件的可执行映像加载到设备上。
1.2.5.2 unload操作
该操作提供从设备上卸载软件组件可执行映像的操作。
从设备上卸载软件组件可执行映像的操作步骤为:
(1)用户发出在设备上卸载软件组件可执行映像的操作;
(2)容器将该操作调度给具体的设备;
(3)设备触发本地的unload操作;
(4)unload操作调用操作系统接口将组件的可执行映像从设备中卸载。
1.2.6 ExecutableDevice接口
该接口对LoadableDevice接口进行了扩展,为容器提供了在具体硬件设备上运行/结束软件应用组件的操作,其UML描述如错误!未找到引用源。14所示。
1.2.6.1 execute操作
该操作执行由参数name和options指定的函数或文件,从而提供了在设备上启动和执行软件进程/线程的机制。
在设备上运行软件组件的操作步骤为:
(1)用户发出在设备上运行软件组件的操作;
(2)容器将该操作调度给具体的设备;
(3)设备首先将软件组件的可执行映像加载到设备上;
(4)设备触发本地的execute操作,调用操作系统接口执行软件组件可执行映像。
1.2.6.2 terminate操作
该操作将终止设备上由ProcessId参数所指定的进程或线程的运行。
终止设备上正在运行的软件组件的操作步骤为:
(1)用户发出停止软件组件的操作;
(2)容器定位该软件组件所运行在的设备;
(3)容器将终止操作调度给该设备;
(4)设备触发本地的terminate操作,调用操作系统接口终止软件组件的执行。
1.2.7 DeviceManager接口
该接口为容器提供了管理域内逻辑设备和服务的操作,它负责在启动逻辑设备和服务时传递正确的可执行参数,并接受逻辑设备和服务的注册与注销,其UML描述如错误!未找到引用源。15所示。
1.2.7.1 registerDevice操作
该操作用于将设备注册到设备管理器。一般的,设备是由设备管理器管理器的,所以,在设备管理器的启动过程中,当设备启动成功后,须将设备的相关信息注册到设备管理器中。
注册设备到设备管理器中的步骤为:
(1)启动设备结束后,设备申请向设备管理器注册;
(2)容器将该操作调度给具体的设备管理器;
(3)设备管理器检查待注册设备对象引用的合法性;
(4)设备管理器在本地记录设备的对象引用。
1.2.7.2 unregisterDevice操作
该操作用于从设备管理器中注销设备。在注销时,所有与设备相关的信息也将从设备管理器中清除。
从设备管理器中注销设备的步骤为:
(1)用户触发关闭设备的操作;
(2)设备触发本地的releaseObject操作完成本地设备停止、释放等动作;
(3)设备向所在设备管理器申请注销操作;
(4)容器将该操作调度给设备所在的设备管理器;
(5)设备管理器启动注销设备的操作;
(6)设备管理器同时向域管理器申请注销设备。
1.2.7.3 registerService操作
该操作用于将服务注册到设备管理器。一般的,服务也是由设备管理器管理器的,所以,在设备管理器的启动过程中,当服务启动成功后,须将服务的相关信息注册到设备管理器中。
向设备管理器注册服务的步骤为:
(1)启动服务结束后,服务申请向设备管理器注册;
(2)容器将该操作调度给设备管理器;
(3)设备管理器在注册服务结束后向域管理器注册新注册的服务。
1.2.7.4 unregisterService操作
该操作用于从设备管理器中注销服务。在注销时,所有与服务相关的信息也将从设备管理器中清除。
从设备管理器中注销服务的步骤为:
(1)用户触发停止服务的操作;
(2)容器将该操作调度给服务所在的设备管理器;
(3)设备管理器启动注销服务的操作;
(4)设备管理器同时向域管理器申请注销服务。
1.2.7.5 shutdown操作
该操作用于关系设备管理器。在关闭时,当设备管理器注销了其中的所有设备和服务后,设备管理器将其自身从域管理器中注销,并终止设备管理器的运行。
关闭设备管理器的步骤为:
(1)用户触发关闭设备管理器的操作;
(2)容器将该操作调度给具体的设备管理器;
(3)设备管理器触发本地的shutdown操作;
(4)设备管理器在shutdown过程中申请域管理器断开相关的端口连接;
(5)设备管理器shutdown过程中向各个已注册的设备和服务发出销毁对象命令;
(6)等待所有的设备和服务对象销毁;
(7)清理设备管理器运行过程中的环境;
(8)设备管理器关闭完毕。
1.2.7.6 getComponentImplementationId操作
该操作根据由参数componentInstatiationId指定的组件实例ID,从SPD中获取正确的组件实现ID。
在设备管理器中根据实例ID获取实现ID的步骤为:
(1)容器接收输入参数componentInstantiationId的值;
(2)容器将获取实现ID的操作调度给具体的设备管理器,并将所获取的实例ID传给设备管理器;
(3)设备管理器触发本地的getComponentImplementationId操作;
(4)设备管理器在本地查找实例ID和输入的componentInstantiationId向匹配的组件;
(5)设备管理器获取该组件的域配置文件(SPD文件),并将文件名传给容器;
(6)容器解析组件的SPD文件,获取所匹配的组件实现ID;
(7)容器将该实现ID传给操作调用者。
1.3 框架服务接口
1.3.1 File接口
该接口为容器提供了访问文件的通用接口,它屏蔽了不同操作系统的差异。该接口的UML描述如错误!未找到引用源。16所示。
1.3.1.1 read操作
该操作用于从文件中读入由length参数指定长度的内容,并将filePointer向前移动实际读取字节数个长度。
读文件的步骤为:
(1)以适当的读写模式打开文件;
(2)移动文件指针到适当的位置;
(3)读入指定长度的字节,放入数据缓冲区;
(4)关闭文件。
1.3.1.2 write操作
该操作用于将把数据写到文件中。
写文件的步骤为:
(1)以适当的读写模式打开文件;
(2)移动文件指针到适当的位置;
(3)写入指定长度的字节;
(4)关闭文件。
1.3.1.3 sizeOf操作
该操作用于获取一个文件的大小。
获取文件大小的步骤为:
(1)以适当的读写模式打开文件;
(2)移动文件指针到文件结尾;
(3)返回文件指针所在的位置值;
(4)关闭文件。
其他可选方法为:通过文件属性获取文件大小信息,或者利用操作系统提供的API接口获取文件的大小信息。
1.3.1.4 close操作
该操作用于释放文件资源,并使文件不再为任何组件可用。
关闭文件的步骤为:
(1)将所有缓冲中的内容写入文件;
(2)释放文件指针。
1.3.1.5 setFilePointer操作
该操作用于指定下一次读写文件时的指针位置。
设置文件指针位置的步骤为:
(1)以适当的方式打开文件;
(2)给出文件指针定位的方式;
(3)将文件指针定位。
1.3.2 FileSystem接口
该接口对File接口进行了扩展,为容器提供了访问物理文件系统的操作,和File接口一样,该接口也屏蔽了不同操作系统的差异,其UML描述如错误!未找到引用源。17所示。
1.3.2.1 remove操作
该操作用于将参数filename指定的文件从文件系统中删除。
删除文件的步骤为:
(1)检查文件是否存在;
(2)调用操作系统接口将文件物理删除。
1.3.2.2 copy操作
该操作将参数sourceFileName指定的源文件复制到参数destinationFileName指定的目标文件。
拷贝文件的步骤为:
(1)检查源文件是否存在;
(2)检查目标文件是否存在,如果存在,提示是否覆盖;
(3)从源文件中读出一定长度的字节内容;
(4)将读出的内容写入目标文件;
(5)重复第(3)步和第(4)步,直到源文件中的内容全部读完;
(6)关闭源文件;
(7)关闭目标文件。
1.3.2.3 exists操作
该操作用于检查由参数fileName所指定的文件是否存在。
检查文件是否存在的步骤为:
(1)调用操作系统的stat操作;
(2)根据stat的返回值判断文件是否存在;
(3)将结果返回给操作调用者。
1.3.2.4 list操作
该操作按所给的查找模式在FileSystem中进行文件查找,并返回所得的结果。
列举文件的步骤为:
(1)文件系统检查所给的匹配模式是否正确;
(2)文件系统调用操作系统的打开目录操作,打开待列举的目录;
(3)逐个文件列举,查看是否符合匹配模式。如果是,则将其加入到列表中;
(4)对该目录下的所有子目录重复类似的操作(即递归调用);
(5)文件系统将所获取的文件列表返回给操作调用者。
1.3.2.5 create操作
该操作用于创建一个名为fileName的新文件。
创建文件的步骤为:
(1)文件系统检查待创建的文件是否存在;
(2)文件系统调用操作系统接口,以用户指定的模式创建文件;
(3)将新建的文件返回给操作调用者。
1.3.2.6 open操作
该操作打开由参数fileName所指定的文件。Read only属性表明是否以只读方式打开,当其值为False时,表示可写。
打开文件的步骤为:
(1)文件系统调用操作系统接口,打开指定的文件;
(2)将文件指针定位在适当的位置;
(3)将打开的文件对象返回给操作调用者。
1.3.2.7 mkdir操作
该操作用于在文件系统内创建一个名为directoryName的目录,并负责创建directoryName目录的所有父目录。
创建文件目录的步骤为:
(1)检查所建目录的父目录是否存在;如果不存在,调用操作系统接口创建所有的上级父目录;
(2)调用操作系统接口创建directoryName指定的目录。
1.3.2.8 rmdir操作
该操作用于删除由参数directoryName指定的空目录。
删除文件目录的步骤为:
(1)检查目录是否为空,如果不是,操作失败;
(2)调用操作系统接口将空目录删除。
1.3.2.9 query操作
该操作根据参数fileSystemProperties的ID返回文件系统信息。
查询文件系统信息的步骤为:
(1)检查待查询的属性是否合法;
(2)对于其中的合法属性,检索文件系统的信息,并将相关的值赋给属性;
(3)文件系统返回查询后的结果容器;
(4)容器将文件系统的查询结果返回给操作调用者。
1.3.3 FileManager接口
该接口对FileSystem接口进行了扩展,为容器提供了访问多种物理文件系统的操作,同样,该接口也屏蔽了不同操作系统的差异,其UML描述如错误!未找到引用源。18所示。
1.3.3.1 mount操作
FileManager支持联合文件系统的观念,为了建立联合文件系统,mount操作把一个FileSystem与一个挂接点(目录名)相连。
该操作将指定的FileSystem与所给的mountPoint相连。mountPoint以“/”开始,是FileSystem中的逻辑目录名。
挂接文件系统的步骤为:
(1)在系统内默认挂接文件系统的目录中新建一个名字为mountPoint的子目录;
(2)将该子目录和文件系统fileSystem相匹配,形成<挂接点,文件系统>序对;
(3)更新域中已挂接的文件系统信息。
1.3.3.2 unmount操作
该操作将参数mountPoint所指定的FileSystem从FileManager中移去。
删除已挂接文件系统的步骤为:
(1)根据输入参数mountPoint定位该取消挂接的文件系统信息;
(2)删除域内所有与mountPoint相关的文件系统挂接信息;
(3)更新域中已挂接的文件系统信息。
1.3.3.3 getMounts操作
该操作用于列举FileManager中已挂接的FileSystems。
获取域中已挂接文件系统的步骤为:
(1)文件管理器根据本地记录的文件系统挂接信息,依次构建返回的文件系统信息序列;
(2)将构建好的序列返回给操作调用者。
(3)更新域中已挂接的文件系统信息。
1.4 域配置文件解析器
由于本技术中对组件的描述采用的是标准XML语言,所以容器中必须实现一个高效的XML解析器,以完成对各种域配置文件的动态解析,为软件应用组件的自动装配与部署提供必要的信息。
1.5 容器的实现方法
采用基于ITRON的应用软件自主装配技术实现应用软件动态装配与部署时,容器是必不可少的,所以必须完整实现本文所给出的各个接口和基于DTD的XML解析器;同时,为了确保各个软件应用组件间的动态端口连接,还必须实现一个中间件层,完成各个组件间的指针传递与地址转换。另外,还要求应用软件组件开发者必须遵循基本应用接口的约束。
由于本技术并不规定具体的实现,所以在这里仅给出了容器中所定义的各种接口。
2.域配置文件
域描述文件用于描述系统中的硬件设备和软件组件,这些文件以XML的形式描述了组成系统的硬件设备和软件组件的ID、能力、属性、相互间依赖关系和位置等信息。
域描述文件是实现软件应用组件具体实现与描述相分离的重要手段,同时,域描述文件还描述了软件应用组件装配时的各种逻辑和部署关系,所以,定义域描述文件的格式和对域描述文件进行高效解析是实现本技术的重要内容之一。
为了满足软件应用组件自动装配与部署的需要,以及对系统内资源进行统一描述的需要,本技术中定义的域描述文件主要包括:
软件包描述文件(SPD)。用于描述与软件应用组件实现相关的信息;
Figure A20051011006400192
软件装配描述文件(SAD)。用于描述软件应用组件的装配逻辑和部署关系;
Figure A20051011006400193
软件组件描述文件(SCD)。用于描述软件应用组件所提供的或使用的端口信息;
Figure A20051011006400194
设备包描述文件(DPD)。用于描述与逻辑设备(即:一种软件组件)相对应的具体硬件设备的特性,主要用于系统维护;
Figure A20051011006400195
设备配置描述文件(DCD)。用于描述域中的逻辑设备如何启动、配置,以及如何查找域管理器等信息;同时,还描述了系统所提供的服务;
Figure A20051011006400196
域管理器配置描述文件(DMD)。用于描述域管理器的相关信息;
Figure A20051011006400197
属性描述文件(PRF)。用于描述软件应用组件或设备的属性。
各中域配置文件间的关系如图19所示。
对于这些域配置文件,其详细的DTD定义参见附录;各个DTD单元的具体定义如下:
2.1软件包描述文件
softpkg单元是软件包描述文件的根单元,用于标识该文件是一个软件包描述,其id属性类型为DCE UUID,name属性是softpkg单元名称。
title单元描述的是软件组件的标题。
author单元描述的是开发应用组件的人员、公司等信息。
description单元用于对相关内容进行文字性描述。
propertyfile单元用于指定属性描述文件,softpkg单元中的propertyfile单元描述的是与软件包相关联的共同属性;implementation单元中的propertyfile单元描述的是与具体实现相关的属性;但属性的id相同时,后者的优先级高。
descriptor单元用于指导与软件包相关联的软件组件描述文件。
implementation单元用于描述软件组件的实现信息,其目的是允许在一个软件包中存在多个组件实现,以支持不同类型的处理器、操作系统等。implementation单元的id属性类型为DCE UUID。
code单元用于指定组件的可执行文件。其type属性用于标识可执行文件的类型,entrypoint单元用于指定入口点名称。其中,type属性的合法取值为“Executable”、“KernelModule”、“SharedLibrary”和“Driver”。
ompiler单元用于描述开发软件应用组件时所使用的编译器。
programminglanguage单元用于描述开发软件应用组件实现时所使用的编程语言。
humanlanguage单元用于描述软件组件所支持的自然语言。
os单元用于描述软件应用组件所支持的操作系统。
processor单元用于标识软件应用组件所支持的处理器类型。
dependency单元用于描述组件之间以及组件与设备之间的依赖关系,其中softpkgref指定的是依赖其他的应用组件,而propertyref指定的是依赖于含有指定属性的应用组件或逻辑设备。
runtime单元用于指定组件实现所需的运行时环境。
2.2软件装配描述文件
softwareassembly单元是软件装配描述文件的根单元,用于标识该文件是一个软件装配描述,其id属性类型为DCE UUID,name属性是应用组件的名称。
description单元用于对相关内容进行文字性描述。
componentfiles单元用于指定组成应用装配的组件,其中的每个componentfile代表一个组件,指向的是该组件的SPD。
partitioning单元用于指定组件的部署关系,其中的每个componentplacement代表了一个具体组件的部署。
componentfileref单元用于引用组件的SPD,其refid指向的是componentfile单元的id。
componentinstantiation单元用于描述和componentplacement单元相关联的特定组件实例,其id是DCE UUID类型,用于唯一标识组件的实例,可以被SAD文件中的usesport和providesport单元引用。usagename是组件实例的名字,findcomponent中的domainfinder用于指定如何在域中定位应用组件。
assemblycontroller单元用于指定应用组件装配时的主装配控制器。其中的componentinstantiationref单元描述的是主装配控制器的实例ID。
connections单元用于描述应用组件间的所有端口连接,其中的每个connectinterface单元描述了一组端口连接,其usesport单元通过usesidentifier标识了组件作为使用方参与连接的端口,其providesport单元通过providesidentifier标识了组件作为提供方参与连接的端口。而usesport单元和providesport单元中的domainfinder则指定了如何在域中定位参与连接的组件。
externalports单元用于指定应用对外提供的可见端口,用于和其他应用进行通信。
2.3软件组件描述文件
softwarecomponent单元是软件组件描述文件的根单元,用于标识该文件是一个软件组件描述。
componentrepid单元唯一标识了组件所实现的接口,该单元可以被componentfeatures单元引用。
componentfeatures单元用于描述组件所提供端口,包括作为使用方参与连接的端口和作为提供方参与连接的端口。其中的porttype指定了端口的类型,而usesname和providesname则描述的是端口的名称。
2.4设备包描述文件
devicepkg单元是设备包描述文件的根单元,用于标识该文件是一个设备包描述。其id属性的类型为DCE UUID,用于唯一标识设备包;name属性是devicepkg的名字,version属性是设备包的版本。
title、author和description单元的含义参加SPD中的说明。
hwdeviceregistion单元用于描述与设备相关的信息,其id属性的类型是DCE UUID,用于唯一标识实际的硬件设备;name属性是已注册硬件设备的名字;version属性是hwdeviceregistion单元的版本。
propterfile单元用于指定描述硬件设备属性的PRF文件。
manufacturer单元用于描述硬件生产商的名字。
modelnumber单元用于描述设备的型号。
2.5设备配置描述文件
deviceconfiguration单元是设备配置描述文件的根单元,用于标识该文件是一个设备配置描述。其id属性的类型为DCE UUID,用于唯一标识设备管理器。
description的含义参加SPD中的描述。
devicemanagersoftpkg单元用于指定设备管理器的实现,指向的是设备管理器的SPD。
Componentfiles、partitioning和connections单元的含义参加SAD中的说明。
2.6域管理器配置描述文件
domainmanagerconfiguration单元是域管理器配置描述文件的根单元,用于标识该文件是一个域管理器配置描述。其id属性的类型为DCE UUID,用于唯一标识域管理器。
description单元的含义参加SPD中的描述。
domainmanagersoftpkg单元用于指定域管理器的SPD。
services单元指定的是在域中配置的服务,其中的每个service单元表示了一个在域中可用的服务,该服务由usesidentifier进行标识,并通过domainfinder进行定位。
2.7属性描述文件
properties单元是属性描述文件的根单元,用于标识该文件是一个属性描述。其id属性用于在组件内唯一标识属性,而type和mode属性则分别指定了属性的类型和读写模式。
description单元的含义参加SPD中的描述。
simple单元定义了一种简单属性的定义,这些属性可以通过Resource接口的configure和query操作进行配置和查询。
value单元用于指定属性的值。
units单元用于定义属性实际数据表示时的单位。
range单元用于指定simple单元取值的有效范围。
enumeration单元将一个value与一个label关联起来,为simple属性提供了枚举类型定义。
kind单元中的kindtype属性指定了属性的类型,其中confgure类型属性是用于配置和查询的;allocation类型属性只能用于资源分配和回收;test类型属性只能用于自检操作。
3.自动化装配和部署工具
在本技术中,为了减少应用系统开发和软件组件开发过程中编写域配置文件的错误,提供可视化的域配置文件编辑器和自动化的装配和部署工具是十分必要的,它使得应用系统开发者可以将更多的精力放在功能的实现上,而不必过多的关心域配置文件的编写和软件应用组件间的装配逻辑。
自动化装配和部署工具是集成在开发环境中的一组工具,通过这些工具可以完成对软件应用组件的描述和实现对软件应用组件的可视化装配与部署逻辑设定,并最终生成符合容器需求的域配置文件。
自动化装配和部署工具主要包括以下三部分:
Figure A20051011006400211
工程管理器;
Figure A20051011006400212
组件编辑器;
组件装配器;
Figure A20051011006400214
域配置文件生成器;
组件库管理器。
下面将分别对这三部分做简要介绍。
3.1工程管理器
为了实现在一个统一的开发环境中完成各种类型的组件工程操作,必须有一个工具对所有的工程进行有效管理,这就是工程管理器,其提供的功能主要包括:
提供对工程工作空间的创建、删除和管理;
Figure A20051011006400222
提供对各种类型组件工程的创建、删除和管理;
Figure A20051011006400223
提供从工作空间中添加/删除组件工程的功能;
对工程中所添加的文件进行管理;
提供工程属性进行设置的操作。
3.2组件编辑器
对组件进行描述是采用本技术进行应用系统开发时创建组件所必须的步骤。对软件应用组件开发者来说,组件编辑器主要完成对Resource类型组件的域配置文件编辑;对硬件平台开发者来说,组件编辑器主要完成对Device类型组件的域配置文件编辑。针对这两种类型的组件,组件编辑器和域配置文件生成器一起协同工作,可以为应用系统开发者和硬件平台开发者提供有效的组件编辑手段和方便实用的工具。
组件编辑器可以创建和编辑的域配置文件包括:SPD、SCD、DPD和PRF。
组件编辑器以可视化的形式提供对这些域配置文件的编辑功能,并能和域配置文件生成器协同工作,实现对所创建和编辑的域配置文件进行格式检查,同时,提供对每个XML单元的浏览功能。
具体来说,组件编辑器提供的功能包括:
提供可视化的域配置文件编辑功能;
提供对域配置文件的格式检查功能;
Figure A20051011006400228
提供对XML单元的浏览功能;
Figure A20051011006400229
支持已存在域配置文件的打开编辑功能;
Figure A200510110064002210
支持对已存在域配置文件的可视化显示功能。
3.3组件装配器
当软件应用组件创建完成后,组件装配器负责将他们集成到一起,以形成一个完整的应用系统,由于组件分成Resource类型组件和Device类型组件,所以组件装配器的功能也分成了两大类,一类用于装配Resource类型的组件形成纯粹的上层应用,这部分功能主要是为上层应用开发者提供的;另一类用于装配Device类型的组件形成基本运行环境,这部分功能是为硬件平台开发者提供的。
组件装配器可以创建和编辑的域配置文件包括:SAD、DCD和DMD。
组件装配器可以提供可视化的组件装配过程,支持拖放式组件间端口连接,并提供对各种连接的验证和对匹配端口的信息查看;同时,组件装配器还支持对用户创建的本地组件或组件库中已有的组件进行分类管理和可视化显示。
除此之外,组件装配器还支持对已存在应用装配的可视化显示功能,允许用户对其进行重新组装和编辑。
最后,组件装配器还可以与域配置文件生成器协同工作,提供对应用的自动打包功能,以最终生成SAD和DCD。
具体来说,组件装配器提供的功能包括:
Figure A200510110064002211
提供可视化的软件应用组件装配;
Figure A200510110064002212
支持拖放式组件间端口连接;
提供对各种连接的验证;
Figure A200510110064002214
提供组件分类管理、可视化显示功能;
Figure A200510110064002215
提供对已存在应用装配的可视化显示;
Figure A200510110064002216
支持对已存在应用装配的重新组装和编辑;
自动生成SAD、DCD和DMD;
Figure A200510110064002218
提供对应用装配的自动打包功能。
3.4域配置文件生成器;
域配置文件生成器是一个后台模块,主要功能是与组件编辑器和组件装配器协同工作,根据组件编辑器和组件装配器中的可视化描述生成域配置文件。
具体来说,域配置文件生成器提供的功能包括:
提供对用户可视化描述的验证;
Figure A20051011006400232
根据用户的可视化描述,自动生成对应的域配置文件。
3.5组件库管理器
组件库管理器主要是允许组件开发人员将所开发的软件应用组件添加到公共的组件库中,并能根据用户需求设置灵活的组件检索方式,同时,组件库管理器还负责对所有在库组件的管理。设置组件库管理器的主要目的是为了提高软件应用组件的复用性,减少重复开发的工作。
具体来说,域配置文件生成器提供的功能包括:
Figure A20051011006400233
提供方便的组件入库功能;
提供灵活的组件检索功能;
Figure A20051011006400235
与组件装配器有接口,能将检索到的组件提交给组件装配器进行可视化显示;
提供对在库组件的管理功能。
操作步骤
1.容器的实现和安装
(1)完整实现本技术中所定义的各种接口,包括基本应用接口、框架控制接口和框架服务接口;
(2)实现域配置文件解析器;
(3)针对具体的硬件平台和软件平台,配置基本的应用组件运行环境,包括对硬件设备和服务进行逻辑封装、对系统资源进行配置、对域管理器进行配置等;
(4)针对具体的应用需求,开发容器启动所需的引导模块,用于引导容器的启动以及域管理器和设备管理器的启动;
(5)将实现的容器可执行程序、系统引导程序和系统映像一起安装到目标平台;此步要求目标平台必须支持文件系统操作,并具有足够的静态存储空间和动态存储空间;
(6)给目标系统加电,启动系统映像;
(7)系统映像启动结束后,运行容器引导程序,引导容器启动;
(8)基本运行环境就绪后,可以动态安装各种应用组件包到目标平台(包括应用组件的可执行程序和相关的域配置文件);安装方式不限;
(9)根据实际的应用需求,启动相关的应用;此步是通过容器所提供的标准人机接口界面完成的,由于一个应用中包含了多个应用组件,且这些应用组件间的装配逻辑和部署关系已经由域配置文件做了描述,所以,容器会自动负责应用的创建,并按要求装配和部署应用组件;
(10)系统就绪,用户可以对应用进行各种所需的操作。
2.组件编辑
2.1创建新的组件
(1)启动自动化装配和部署工具;
(2)通过工程菜单新建组件工程;
(3)填写新组件工程的属性信息;
(4)打开组件编辑器;
(5)切换到对应的编辑页,按照用户使用手册或操作指南进行组件描述,填写相关的描述信息;由于组件编辑器有很多页面,所以用户必须逐个页面进行描述;
(6)按保存菜单保存在各个编辑页中所填写的内容;
(7)在各个编辑页中填写完所有必须的描述信息后,右击组件工程,选择“打包”菜单,对所描述的组件进行域配置文件自动生成,并形成可以入库管理的完整组件包。此步生成的域配置文件个数和类型根据用户描述的信息不同而不同,一般可以生成的域配置文件包括SPD、SCD、DPD和PRF。
2.2编辑已存在的组件
(1)启动自动化装配和部署工具;
(2)通过“导入”菜单导入已存在的组件工程。此步根据已存在的组件工程是在本地,还是在组件库中,操作会有所不同,针对本地的组件工程,导入后直接对原工程进行编辑;而对于从组件库中获取的组件,则首先会将已存在的组件信息拷贝到本地工作空间,然后根据这些信息新建一个组件工程,其后所有的编辑操作都是针对新建的组件工程进行的
(4)打开组件编辑器;
(5)切换到对应的编辑页进行组件编辑,填写相关的描述信息;具体的编辑操作类似于创建新的组件时一样;
(6)按保存菜单保存在各个编辑页中所做的修改;
(7)完成了组件信息的编辑和修改后,右击组件工程,选择“打包”菜单,对组件进行域配置文件重新生成。此步形成的是一个新的可入库管理的完整组件包。
3.组件装配
3.1创建新的应用装配
(1)启动自动化装配和部署工具;
(2)通过工程菜单新建装配工程;
(3)打开组件装配器;
(4)填写新装配工程的属性信息;
(5)从本地或组件库中导入参加装配的组件;导入的组件会放置在装配器中的组件工具栏中;对应常用的服务,组件工具栏中已经预设了相关的组件;
(6)将组件从组件工具栏拖放到可视化装配区;
(7)选择“连接”工具,根据所设计的装配逻辑,建立应用组件间的端口连接;此步完全是可视化完成的;
(8)选择“部署”工具,根据所设计的部署逻辑,对应用组件进行部署设置;此步完全是可视化完成的;
(9)设置应用对外提供的端口,以供与其他应用进行通信;
(10)设置一个主控组件,该组件在应用创建时负责将容器发出的操作调度到适当的应用组件上,并负责在应用创建成功后对所有的应用组件进行初始化和配置;由于装配逻辑和部署逻辑是根据应用需求设计的,所以此步的描述要满足应用开发者的设计和约束;
(11)按保存菜单保存所做的装配设计;
(12)在完成了所有的应用组件装配工作后,右击装配工程,选择“打包”菜单,对所描述的组件装配进行域配置文件自动生成。此步生成的域配置文件类型根据用户描述的信息不同而不同,一般可以生成的域配置文件包括SAD、DCD和DMD。
3.2编辑已存在的应用装配
(1)启动自动化装配和部署工具;
(2)通过“导入”菜单导入已存在的装配工程,并直接对原装配工程进行编辑;
(3)打开组件装配器;
(4)对原装配工程进行编辑;具体的编辑操作类似于创建新的应用装配时一样;
(5)按保存菜单保存所做的修改;
(6)完成了编辑和修改后,右击装配工程,选择“打包”菜单,对所描述的组件装配进行域配置文件自动生成。
将该技术与Eclipse开发环境集成,可实现基于ITRON应用组件的自主装配。
附件:域配置文件格式定义DTD描述
  1 SPD

      <?xml version=″1.0″encoding=″UTF-8″?>

      <!ELEMENT sottpkg

            (title?

           ,author+

           ,description?

           ,propertyfile?

           ,descriptor?

           ,implementation+

           )>

      <!ATTLIST sottpkg

         id      ID   #REQUIRED

         name         CDATA#REQUIRED

      <!ELEMENT propertyfile

          (localfile

          )>

      <!ELEMENT localfile EMPTY>

      <!ATTLIST localfile

          name        CDATA#REQUIRED>

      <!ELEMENT title(#PCDATA)>

      <!ELEMENT author

          (name*

          ,company?

          ,webpage?

          )>

      <!ELEMENT name(#PCDATA)>

      <!ELEMENT company(#PCDATA)>

      <!ELEMENT webpage(#PCDATA)>

      <!ELEMENT description(#PCDATA)>

      <!ELEMENT descriptor

          (localfile

          )>

      <!ATTLIST descriptor

          name        CDATA#IMPLIED>
        <!-- SIPO <DP n="21"> -->
        <dp n="d21"/>
  <!ELEMENT implementation

      (description?

      ,propertyfile?

      ,code

      ,compiler?

      ,programminglanguage?

      ,humanlanguage?

      ,runtime?

      ,(os

         |processor

         |dependency

         )+

      )>

  <!ATTLIST implementation

      id     ID  #REQUIRED

  <!ELEMENT code

      (localfile

      ,entrypoint?

      ,stacksize?

      ,priority?

      )>

  <!ATTLIST code

      type   CDATA#IMPLIED>

  <!ELEMENT entrypoint(#PCDATA)>

  <!ELEMENT stacksize(#PCDATA)>

  <!ELEMENT priority(#PCDATA)>

  <!ELEMENT compiler EMPTY>

  <!ATTLIST compiler

      name      CDATA#REQUIRED

      version CDATA#IMPLIED>

  <!ELEMENT programminglanguage EMPTY>

  <!ATTLIST programminglanguage

      name       CDATA#REQUIRED

      version    CDATA#IMPLIED>

  <!ELEMENT humanlanguage EMPTY>

  <!ATTLIST humanlanguage

      name       CDATA#REQUIRED>
        <!-- SIPO <DP n="22"> -->
        <dp n="d22"/>
      <!ELEMENT os EMPTY>

      <!ATTLIST os

          name     CDATA#REQUIRED

          version  CDATA#IMPLIED>

      <!ELEMENT processor EMPTY>

      <!ATTLIST processor

          name     CDATA#REQUIRED>

      <!ELEMENT dependency

          (sottpjgref

          |propertyref

          )>

      <!ATTLIST dependency

          type   CDATA#REQUIRED>

      <!ELEMENT softpkgref

          (localfile

          ,implref?

          )>

      <!ELEMENT implref EMPTY>

     <!ATTLIST implref

          refid     CDATA#REQUIRED>

      <!ELEMENT propertyref EMPTY>

      <!ATTLIST propertyref

          refid     CDATA#REQUIRED

          value     CDATA#REQUIRED>

      <!ELEMENT runtime EMPTY>

      <!ATTLIST runtime

          name      CDATA#REQUIRED

          version   CDATA#IMPLIED>

  2 SAD

  <!ELEMENT softwareassembly

      (description?

      ,componentfiles

      ,partitioning

      ,assemblycontroller

      ,connections?

      ,externalports?

      )>

  <!ATTLIST softwareassembly

      id     ID  #REQUIRED

      name       CDATA#IMPLIED>
        <!-- SIPO <DP n="23"> -->
        <dp n="d23"/>
  <!ELEMENT description(#PCDATA)>

  <!ELEMENT componentfiles

      (componentfile+

      )>

  <!ELEMENT componentfile

      (localfile

      )>

  <!ATTLIST componentfile

      id     ID  #REQUIRED

  <!ELEMENT localfile EMPTY>

  <!ATTLIST localfile

      name       CDATA#REQUIRED>

  <!ELEMENT partitioning

      (componentplacement*

      )>

  <!ELEMENT componentplacement

      (componentfileref

      ,componentinstantiation+

      )>

  <!ELEMENT componentfileref  EMPTY>

  <!ATTLIST componentfileref

      refid      CDATA#REQUIRED>

  <!ELEMENT componentinstantiation

      (usagename?

      ,findcomponent

      )>

  <!ATTLIST componentinstantiation

      id     ID  #REQUIRED>

  <!ELEMENT usagename(#PCDATA)>

  <!ELEMENT findcomponent

      (domainfinder

      )>

  <!ELEMENT domainfinder EMPTY>

  <!ATTLIST domainfinder

      name   CDATA#REQUIRED>
        <!-- SIPO <DP n="24"> -->
        <dp n="d24"/>
  <!ELEMENT assemblycontroller

      (componentinstantiationref

      )>

  <!ELEMENT componentinstantiationref EMPTY>

  <!ATTLIST componentinstantiationref

      refid      CDATA#REQUIRED>

  <!ELEMENT connections

      (connectinterface*

      )>

  <!ELEMENT connectinterface

      (usesport

      ,providesport

      )

      )>

  <!ATTLIST connectinterface

      id     ID  #REQUIRED>

  <!ELEMENT usesport

      (usesidentifier

      ,domainfinder

      )>

  <!ELEMENT usesidentifier(#PCDATA)>

  <!ELEMENT providesport

      (providesidentifier

      ,domainfinder

      )>

  <!ELEMENT providesidentifier(#PCDATA)>

  <!ELEMENT externalports

      (port+

      )>

  <!ELEMENT port

      (description?

      ,(usesidentifier|providesidentifier)

      ,componentinstantiationref

      )>

  3 SCD

  <!ELEMENT softwarecomponent
        <!-- SIPO <DP n="25"> -->
        <dp n="d25"/>
      (componentrepid

      ,componentfeatures

      )>

  <!ELEMENT componentrepid EMPTY>

  <!ATTLIST componentrepid

      repid      CDATA#REQUIRED>

  <!ELEMENT componenttype(#PCDATA)>

  <!ELEMENT componentfeatures

      (ports

      )>

  <!ELEMENT ports

      (provides

      |uses

      )*>

  <!ELEMENT provides

      (porttype*)>

  <!ATTLIST provides

      providesname  CDATA #REQUIRED>

  <!ELEMENT uses

      (porttype*)>

  <!ATTLIST uses

      usesname   CDATA#REQUIRED>

  <!ELEMENT porttype EMPTY>

  <!ATTLIST porttype

      type(data|control|responses)    #REQUIRED>

  4 DPD

  <!ELEMENT devicepkg

      (title?

      ,author+

      ,description?

      ,hwdeviceregistration

      )>

  <!ATTLIST devicepkg

      id     ID  #REQUIRED

      name       CDATA#REQUIRED

      version    CDATA#IMPLIED>

  <!ELEMENT title(#PCDATA)>
        <!-- SIPO <DP n="26"> -->
        <dp n="d26"/>
  <!ELEMENT author

      (name*

      |company?

      |webpage?

      )>

  <!ELEMENT name(#PCDATA)>

  <!ELEMENT company(#PCDATA)>

  <!ELEMENT webpage(#PCDATA)>

  <!ELEMENT description(#PCDATA)>

  <!ELEMENT hwdeviceregistration

      (propertyfile?

      ,description

      ,manufacturer

      ,modelnumber

      )>

  <!ATTLIST hwdeviceregistration

      id     ID  #REQUIRED

      name       CDATA#REQUIRED

      version    CDATA#IMPLIED>

  <!ELEMENT propertyfile

      (localfile

      )>

  <!ATTLIST propertyfile

      type   CDATA#IMPLIED>

  <!ELEMENT localfile EMPTY>

  <!ATTLIST localfile

      name        CDATA#REQUIRED>

  <!ELEMENT manufacturer(#PCDATA)>

  <!ELEMENT modelnumber(#PCDATA)>

  5 DCD

  <!ELEMENT deviceconfiguration

      (description?

      ,devicemanagersoftpkg

      ,componentfiles?

      ,partitioning?

      ,connections?

      )>
        <!-- SIPO <DP n="27"> -->
        <dp n="d27"/>
  <!ATTLIST deviceconfiguration

      id     ID #REQUIRED

  <!ELEMENT description(#PCDATA)>

  <!ELEMENT devicemanagersoftpkg

      (localfile

      )>

  <!ELEMENT componentfiles

      (componentfile+

      )>

  <!ELEMENT componentfile

      (localfile

      )>

  <!ATTLIST componentfile

      id     ID #REQUIRED

  <!ELEMENT localfile EMPTY>

  <!ATTLIST localfile

      name        CDATA#REQUIRED>

  <!ELEMENT partitioning

      (componentplacement

      )*>

  <!ELEMENT componentplacement

      (componentfileref

      ,componentinstantiation+

      )>

  <!ELEMENT componentfileref  EMPTY>

  <!ATTLIST componentfileref

      refid      CDATA#REQUIRED>

  <!ELEMENT componentinstantiation

      (usagename?

      ,findcomponent

      )>

  <!ATTLIST componentinstantiation

      id ID  #REQUIRED>

  <!ELEMENT usagename(#PCDATA)>

  <!ELEMENT findcomponent
        <!-- SIPO <DP n="28"> -->
        <dp n="d28"/>
      (domainfinder

      )>

  <!ELEMENT connections

      (connectinterface*

      )>

  <!ELEMENT connectinterface

      (usespoft

      ,providesport

      )>

  <!ATTLIST connectinterface

      id     ID  #IMPLIED>

  <!ELEMENT usesport

      (usesidentfier

      ,domainfinder

      )>

  <!ELEMENT usesidentifier(#PCDATA)>

  <!ELEMENT providesport

      (providesidentifier

      ,domainfinder

      )>

  <!ELEMENT providesidentifier(#PCDATA)>

  6 DMD

  <!ELEMENT domainmanagerconfiguration

      (description?

      ,domainmanagersoftpkg

      ,services?

      )>

  <!ATTLIST domainmanagerconfiguration

      id  ID #REQUIRED

      name   CDATA      #REQUIRED>

  <!ELEMENT description(#PCDATA)>

  <!ELEMENT domainmanagersoftpkg

      (localfile

      )>

  <!ELEMENT localfile EMPTY>

  <!ATTLIST localfile

      name    CDATA#REQUIRED>
        <!-- SIPO <DP n="29"> -->
        <dp n="d29"/>
  <!ELEMENTservices

      (service+

      )>

  <!ELEMENT service

      (usesidentifier

      ,domainfinder

      )>

  <!ELEMENT usesidentifier(#PCDATA)>

  <!ELEMENT domainfinder EMPTY>

  <!ATTLIST domainfinder

      name   CDATA   #REQUIRED>

  7 PRF

  <!ELEMENT properties

      (description?

      ,(simple

      |simplesequence

      )+

      )>

  <!ELEMENT simple

      (description?

      ,value?

      ,units?

      ,range?

      ,enumerations?

      ,kind*

      )>

  <!ATTLIST simple

      id ID                    #REQUIRED

      type(boolean    |char  |double|float

          |short  |long  |string |ulong |ushort)     #REQUIRED

          mode (readonly|readwrite|writeonly)   ″readwrite″>

  <!ELEMENT description(#PCDATA)>

  <!ELEMENT value(#PCDATA)>

  <!ELEMENT units(#PCDATA)>

  <!ELEMENT range EMPTY>

  <!ATTLIST range

      min     CDATA#REQUIRED
        <!-- SIPO <DP n="30"> -->
        <dp n="d30"/>
       max    CDATA #REQUIRED>

  <!ELEMENT enumerations

      (enumeration+

      )>

  <!ELEMENT enumeration EMPTY>

  <!ATTLIST enumeration

      label      CDATA#REQUIRED

      value      CDATA#IMPLIED>

  <!ELEMENT kind EMPTY>

  <!ATTLIST kind

      kindtype(allocation|configure|test)

  ″configure″>

  <!ELEMENT simplesequence

      (description?

      ,values?

      ,units?

      ,range?

      ,kind*

      )>

  <!ATTLIST simplesequence

      id  ID               #REQUIRED

      type(boolean|char  |double|float

      |short     |long    |string|ulong  |ushort)    #REQUIRED

      mode  (readonly|readwrite|writeonly)″readwrite″>

  <!ELEMENT values

      (value+

      )>

Claims (13)

1、一种基于ITRON的应用软件自主装配技术,其特征在于:包括:
容器,是运行在目标机上的核心组件,这些组件分别实现了基本应用接口、框架控制接口和框架服务接口,主要负责软件应用组件和运行时环境的交互,并根据设定的策略创建应用组件;同时,负责对系统的资源进行保护,在正确的时刻激活/销毁应用组件;
域配置文件,用于描述系统中的硬件设备和软件组件,这些文件以XML的形式描述了组成系统的硬件设备和软件组件的ID、能力、属性、相互间依赖关系和位置等信息;
自动化装配和部署工具,是为了减少应用系统开发和软件组件开发过程中编写域配置文件的错误,提供可视化的域配置文件编辑器和自动化的装配和部署的工具;是集成在开发环境中的一组工具,通过这些工具可以完成对软件应用组件的描述和实现对软件应用组件的可视化装配与部署逻辑设定,并最终生成符合容器需求的域配置文件。
2、根据权利要求1所述的基于ITRON的应用软件自主装配技术,其特征在于:
该基本应用接口,包括:
Port接口,该接口为容器提供了管理端口间互联的操作,定义的是如何建立传输数据和控制的方式;
LifeCycle接口,该接口为容器提供了初始化或释放软件应用组件的数据和处理单元的操作;
TestableObject接口,该接口为容器提供了调用软件应用组件自检的操作;
PortSupplier接口,该接口为容器提供了获取组件Port端口的操作;
PropertySet接口,该接口为容器定义了配置和查询组件属性的操作,回给输出参数propertyies;
Resource接口,该接口为容器提供了控制和配置软件应用组件的公共操作;
ResourceFactory接口,该接口为容器提供了根据应用的需求动态创建和销毁Resource组件的操作。
3、根据权利要求1所述的基于ITRON的应用软件自主装配技术,其特征在于:
该框架控制接口:对整个域的控制是通过域管理接口、设备接口和设备管理接口来完成的;包括:
Application接口,该接口为容器提供了对域内应用程序实例进行控制、配置和状态管理的操作;
ApplicationFactory接口,该接口为容器提过拉在域内动态创建指定类型应用程序的操作,其中,所创建Application的类型由软件描述文件SAD确定;
DomainManager接口,该接口为容器提供了对整个域进行控制和配置的操作,负责与人机界面交互并接口域内组件的注册与注销;
Device接口,该接口为容器提供了对域内逻辑设备进行状态管理、配置、资源分配与回收的操作,其中,逻辑设备是实际硬件设备的功能抽象;
LoadableDevice接口,该接口对Device接口进行了扩展,为容器提供了在具体硬件设备上加载/卸载软件应用组件的操作;
ExecutableDevice接口,该接口对LoadableDevice接口进行了扩展,为容器提供了在具体硬件设备上运行/结束软件应用组件的操作;
DeviceManager接口,该接口为容器提供了管理域内逻辑设备和服务的操作,它负责在启动逻辑设备和服务时传递正确的可执行参数,并接受逻辑设备和服务的注册与注销。
4、根据权利要求1所述的基于ITRON的应用软件自主装配技术,其特征在于:
该框架服务接口包括:
File接口,该接口为容器提供了访问文件的通用接口,它屏蔽了不同操作系统的差异;
FileSystem接口,该接口对File接口进行了扩展,为容器提供了访问物理文件系统的操作,和File接口一样,该接口也屏蔽了不同操作系统的差异;
FileManager接口,该接口对FileSystem接口进行了扩展,为容器提供了访问多种物理文件系统的操作,同样,该接口也屏蔽了不同操作系统的差异。
5、根据权利要求1所述的基于ITRON的应用软件自主装配技术,其特征在于:
该域描述文件包括:
软件包描述文件,用于描述与软件应用组件实现相关的信息;
软件装配描述文件,用于描述软件应用组件的装配逻辑和部署关系;
软件组件描述文件,用于描述软件应用组件所提供的或使用的端口信息;
设备包描述文件,用于描述与逻辑设备相对应的具体硬件设备的特性,用于系统维护;
设备配置描述文件,用于描述域中的逻辑设备如何启动、配置,以及如何查找域管理器等信息;同时,还描述了系统所提供的服务;
域管理器配置描述文件,用于描述域管理器的相关信息;
属性描述文件,用于描述软件应用组件或设备的属性。
6、根据权利要求1所述的基于ITRON的应用软件自主装配技术,其特征在于:
该自动化装配和部署工具包括:
工程管理器;实现在一个统一的开发环境中完成各种类型的组件工程操作,对所有的工程进行有效管理,
组件编辑器;以可视化的形式提供对域配置文件的编辑功能,并能和域配置文件生成器协同工作,实现对所创建和编辑的域配置文件进行格式检查,同时,提供对每个XML单元的浏览功能;
组件装配器;当软件应用组件创建完成后,组件装配器负责将他们集成到一起,以形成一个完整的应用系统。
7、根据权利要求6所述的基于ITRON的应用软件自主装配技术,其特征在于:
还包括:域配置文件生成器;是一个后台模块,主要是与组件编辑器和组件装配器协同工作,根据组件编辑器和组件装配器中的可视化描述生成域配置文件。
8、根据权利要求6所述的基于ITRON的应用软件自主装配技术,其特征在于:
还包括:组件库管理器,允许组件开发人员将所开发的软件应用组件添加到公共的组件库中,并能根据用户需求设置灵活的组件检索方式,同时,组件库管理器还负责对所有在库组件的管理。
9、一种权利要求1所述的容器的实现和安装方法,其特征在于包括:
(1)完整实现本技术中所定义的各种接口,包括基本应用接口、框架控制接口和框架服务接口;
(2)实现域配置文件解析器;
(3)针对具体的硬件平台和软件平台,配置基本的应用组件运行环境,包括对硬件设备和服务进行逻辑封装、对系统资源进行配置、对域管理器进行配置等;
(4)针对具体的应用需求,开发容器启动所需的引导模块,用于引导容器的启动以及域管理器和设备管理器的启动;
(5)将实现的容器可执行程序、系统引导程序和系统映像一起安装到目标平台;
(6)给目标系统加电,启动系统映像;
(7)系统映像启动结束后,运行容器引导程序,引导容器启动;
(8)基本运行环境就绪后,可以动态安装各种应用组件包到目标平台;
(9)根据实际的应用需求,启动相关的应用;
(10)系统就绪,用户可以对应用进行各种所需的操作。
10、一种权利要求1所述的组件的创建方法,其特征在于包括:
(1)启动自动化装配和部署工具;
(2)通过工程菜单新建组件工程;
(3)填写新组件工程的属性信息;
(4)打开组件编辑器;
(5)切换到对应的编辑页,按照用户使用手册或操作指南进行组件描述,填写相关的描述信息;
(6)按保存菜单保存在各个编辑页中所填写的内容;
(7)在各个编辑页中填写完所有必须的描述信息后,右击组件工程,选择“打包”菜单,对所描述的组件进行域配置文件自动生成,并形成可以入库管理的完整组件包。
11、一种权利要求1所述的已存在的组件的编辑方法,其特征在于包括:
(1)启动自动化装配和部署工具;
(2)通过“导入”菜单导入已存在的组件工程;
(4)打开组件编辑器;
(5)切换到对应的编辑页进行组件编辑,填写相关的描述信息;具体的编辑操作类似于创建新的组件;
(6)按保存菜单保存在各个编辑页中所做的修改;
(7)完成了组件信息的编辑和修改后,右击组件工程,选择“打包”菜单,对组件进行域配置文件重新生成,形成一个新的可入库管理的完整组件包。
12、一种权利要求1所述的组件的装配方法,其特征在于包括:创建新的应用装配,包括:
(1)启动自动化装配和部署工具;
(2)通过工程菜单新建装配工程;
(3)打开组件装配器;
(4)填写新装配工程的属性信息;
(5)从本地或组件库中导入参加装配的组件;导入的组件会放置在装配器中的组件工具栏中;对应常用的服务,组件工具栏中已经预设了相关的组件;
(6)将组件从组件工具栏拖放到可视化装配区;
(7)选择“连接”工具,根据所设计的装配逻辑,建立应用组件间的端口连接;
(8)选择“部署”工具,根据所设计的部署逻辑,对应用组件进行部署设置;
(9)设置应用对外提供的端口,以供与其他应用进行通信;
(10)设置一个主控组件,该组件在应用创建时负责将容器发出的操作调度到适当的应用组件上,并负责在应用创建成功后对所有的应用组件进行初始化和配置;
(11)按保存菜单保存所做的装配设计;
(12)在完成了所有的应用组件装配工作后,右击装配工程,选择“打包”菜单,对所描述的组件装配进行域配置文件自动生成。
13、根据权利要求12所述的组件的装配方法,其特征在于还包括:编辑已存在的应用装配,包括:
(1)启动自动化装配和部署工具;
(2)通过“导入”菜单导入已存在的装配工程,并直接对原装配工程进行编辑;
(4)打开组件装配器;
(5)对原装配工程进行编辑;具体的编辑操作类似于创建新的应用装配;
(6)按保存菜单保存所做的修改;
(7)完成了编辑和修改后,右击装配工程,选择“打包”菜单,对所描述的组件装配进行域配置文件自动生成。
CN200510110064.8A 2005-11-04 2005-11-04 一种基于itron的应用软件自主装配系统及方法 Expired - Fee Related CN1959631B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200510110064.8A CN1959631B (zh) 2005-11-04 2005-11-04 一种基于itron的应用软件自主装配系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200510110064.8A CN1959631B (zh) 2005-11-04 2005-11-04 一种基于itron的应用软件自主装配系统及方法

Publications (2)

Publication Number Publication Date
CN1959631A true CN1959631A (zh) 2007-05-09
CN1959631B CN1959631B (zh) 2016-09-21

Family

ID=38071341

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200510110064.8A Expired - Fee Related CN1959631B (zh) 2005-11-04 2005-11-04 一种基于itron的应用软件自主装配系统及方法

Country Status (1)

Country Link
CN (1) CN1959631B (zh)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102938039A (zh) * 2011-09-09 2013-02-20 微软公司 针对应用的选择性文件访问
CN103026338A (zh) * 2010-07-23 2013-04-03 瑞典爱立信有限公司 用于执行综合服务的系统、方法和设备
CN103718159A (zh) * 2011-08-03 2014-04-09 株式会社日立制作所 图像处理软件开发方法、图像处理软件开发装置和图像处理软件开发程序
CN104077142A (zh) * 2014-07-04 2014-10-01 用友软件股份有限公司 Web系统的模块整合方法和装置
US9118686B2 (en) 2011-09-06 2015-08-25 Microsoft Technology Licensing, Llc Per process networking capabilities
CN105765618A (zh) * 2013-10-09 2016-07-13 电子湾有限公司 使用跟踪数据对数据呈现的回流
US9679130B2 (en) 2011-09-09 2017-06-13 Microsoft Technology Licensing, Llc Pervasive package identifiers
CN107220038A (zh) * 2016-11-25 2017-09-29 广东亿迅科技有限公司 数据可视化图形快速应用方法及系统
US9800688B2 (en) 2011-09-12 2017-10-24 Microsoft Technology Licensing, Llc Platform-enabled proximity service
US9858247B2 (en) 2013-05-20 2018-01-02 Microsoft Technology Licensing, Llc Runtime resolution of content references
CN108228274A (zh) * 2017-12-07 2018-06-29 中国航空工业集团公司西安航空计算技术研究所 一种机载分布式任务动态分配及动态构建技术的实现方法
CN108563505A (zh) * 2018-04-04 2018-09-21 上海有云信息技术有限公司 一种服务链编排方法、装置、服务器以及存储介质
US10356204B2 (en) 2012-12-13 2019-07-16 Microsoft Technology Licensing, Llc Application based hardware identifiers
CN110045982A (zh) * 2019-03-28 2019-07-23 宋子杰 一种基于源代码聚合的嵌入式系统配置方法
CN110244990A (zh) * 2019-04-29 2019-09-17 五八有限公司 应用组件调用方法、装置、电子设备及存储介质
CN110489108A (zh) * 2018-07-24 2019-11-22 厦门白山耘科技有限公司 一种自动收集可重用组件的方法及装置
CN110622129A (zh) * 2016-12-21 2019-12-27 奥恩全球运营有限公司,新加坡分公司 使用软件容器用于加速数据分析应用程序开发和部署的各方面的方法、系统和门户
CN110727500A (zh) * 2019-09-27 2020-01-24 上海依图网络科技有限公司 系统中的功能模块的集成方法、系统、设备及介质
CN111736818A (zh) * 2020-05-28 2020-10-02 浪潮电子信息产业股份有限公司 基于容器云的应用创建方法、装置及电子设备和存储介质
CN112134908A (zh) * 2019-06-24 2020-12-25 阿里巴巴集团控股有限公司 应用适配方法及服务器、介质、车载多媒体系统
CN112214236A (zh) * 2019-07-10 2021-01-12 杭州龙牛网络科技有限公司 一种软件快速开发平台应用架构搭建管理系统的方法
CN113835705A (zh) * 2021-09-29 2021-12-24 北京金山云网络技术有限公司 大数据服务产品开发方法、装置及系统
CN114816355A (zh) * 2022-06-24 2022-07-29 基石酷联微电子技术(北京)有限公司 基于端口结构体的软件架构系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1642099A (zh) * 2004-01-15 2005-07-20 英业达股份有限公司 计算机网络域名系统配置方法及平台
CN1303559C (zh) * 2004-04-13 2007-03-07 清华大学 基于三维vrml模型的虚拟装配方法

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103026338A (zh) * 2010-07-23 2013-04-03 瑞典爱立信有限公司 用于执行综合服务的系统、方法和设备
CN103718159A (zh) * 2011-08-03 2014-04-09 株式会社日立制作所 图像处理软件开发方法、图像处理软件开发装置和图像处理软件开发程序
CN103718159B (zh) * 2011-08-03 2016-08-31 株式会社日立制作所 图像处理软件开发方法、图像处理软件开发装置
US9118686B2 (en) 2011-09-06 2015-08-25 Microsoft Technology Licensing, Llc Per process networking capabilities
CN102938039A (zh) * 2011-09-09 2013-02-20 微软公司 针对应用的选择性文件访问
US9679130B2 (en) 2011-09-09 2017-06-13 Microsoft Technology Licensing, Llc Pervasive package identifiers
US9773102B2 (en) 2011-09-09 2017-09-26 Microsoft Technology Licensing, Llc Selective file access for applications
US9800688B2 (en) 2011-09-12 2017-10-24 Microsoft Technology Licensing, Llc Platform-enabled proximity service
US10469622B2 (en) 2011-09-12 2019-11-05 Microsoft Technology Licensing, Llc Platform-enabled proximity service
US10356204B2 (en) 2012-12-13 2019-07-16 Microsoft Technology Licensing, Llc Application based hardware identifiers
US9858247B2 (en) 2013-05-20 2018-01-02 Microsoft Technology Licensing, Llc Runtime resolution of content references
CN105765618A (zh) * 2013-10-09 2016-07-13 电子湾有限公司 使用跟踪数据对数据呈现的回流
CN104077142B (zh) * 2014-07-04 2017-09-29 用友网络科技股份有限公司 Web系统的模块整合方法和装置
CN104077142A (zh) * 2014-07-04 2014-10-01 用友软件股份有限公司 Web系统的模块整合方法和装置
CN107220038A (zh) * 2016-11-25 2017-09-29 广东亿迅科技有限公司 数据可视化图形快速应用方法及系统
CN110622129A (zh) * 2016-12-21 2019-12-27 奥恩全球运营有限公司,新加坡分公司 使用软件容器用于加速数据分析应用程序开发和部署的各方面的方法、系统和门户
CN110622129B (zh) * 2016-12-21 2021-07-20 奥恩全球运营有限公司,新加坡分公司 使用软件容器用于加速数据分析应用程序开发和部署的各方面的方法、系统和门户
CN108228274A (zh) * 2017-12-07 2018-06-29 中国航空工业集团公司西安航空计算技术研究所 一种机载分布式任务动态分配及动态构建技术的实现方法
CN108228274B (zh) * 2017-12-07 2020-11-13 中国航空工业集团公司西安航空计算技术研究所 一种机载分布式任务动态分配及动态构建技术的实现方法
CN108563505A (zh) * 2018-04-04 2018-09-21 上海有云信息技术有限公司 一种服务链编排方法、装置、服务器以及存储介质
CN110489108B (zh) * 2018-07-24 2022-08-02 厦门白山耘科技有限公司 一种自动收集可重用组件的方法及装置
CN110489108A (zh) * 2018-07-24 2019-11-22 厦门白山耘科技有限公司 一种自动收集可重用组件的方法及装置
CN110045982A (zh) * 2019-03-28 2019-07-23 宋子杰 一种基于源代码聚合的嵌入式系统配置方法
CN110244990A (zh) * 2019-04-29 2019-09-17 五八有限公司 应用组件调用方法、装置、电子设备及存储介质
CN112134908A (zh) * 2019-06-24 2020-12-25 阿里巴巴集团控股有限公司 应用适配方法及服务器、介质、车载多媒体系统
CN112134908B (zh) * 2019-06-24 2022-04-08 阿里巴巴集团控股有限公司 应用适配方法及服务器、介质、车载多媒体系统
CN112214236A (zh) * 2019-07-10 2021-01-12 杭州龙牛网络科技有限公司 一种软件快速开发平台应用架构搭建管理系统的方法
CN112214236B (zh) * 2019-07-10 2023-04-07 杭州龙牛网络科技有限公司 一种软件快速开发平台应用架构搭建管理系统的方法
CN110727500A (zh) * 2019-09-27 2020-01-24 上海依图网络科技有限公司 系统中的功能模块的集成方法、系统、设备及介质
CN111736818A (zh) * 2020-05-28 2020-10-02 浪潮电子信息产业股份有限公司 基于容器云的应用创建方法、装置及电子设备和存储介质
WO2021238271A1 (zh) * 2020-05-28 2021-12-02 浪潮电子信息产业股份有限公司 基于容器云的应用创建方法、装置及电子设备和存储介质
CN113835705A (zh) * 2021-09-29 2021-12-24 北京金山云网络技术有限公司 大数据服务产品开发方法、装置及系统
CN113835705B (zh) * 2021-09-29 2024-05-31 北京金山云网络技术有限公司 大数据服务产品开发方法、装置及系统
CN114816355A (zh) * 2022-06-24 2022-07-29 基石酷联微电子技术(北京)有限公司 基于端口结构体的软件架构系统

Also Published As

Publication number Publication date
CN1959631B (zh) 2016-09-21

Similar Documents

Publication Publication Date Title
CN1959631A (zh) 一种基于itron的应用软件自主装配技术
CN1524216A (zh) 软件构件插件程序结构的系统和方法
CN1399737A (zh) 便于组件选择的软件开发系统
CN1273888C (zh) 成像装置、信息处理装置、程序执行方法及程序生成方法
CN1359489A (zh) 用于构筑建模工具的装置和方法
CN1869923A (zh) 系统数据接口及相关体系结构
CN1073276A (zh) 语言的中性对象
CN1601510A (zh) 分布式计算系统的架构和分布式应用程序的自动设计,部署及管理
CN1073540A (zh) 管理类方法名
CN1609794A (zh) 用于计算机平台的编程接口
CN1716225A (zh) 普通usb驱动器
CN1551006A (zh) 分布式计算系统架构及分布式应用的设计、部署和管理
CN1739107A (zh) 为可由硬件/软件接口系统管理的信息单元提供同步服务的系统和方法
CN101031882A (zh) 用于通用设备互操作性平台的设备组招募和内容再现的体系结构、装置和方法
CN1828527A (zh) 用于跨不同应用程序框架的数据服务的平台
CN1834908A (zh) 用于将开发模式应用于基于组件的应用程序的系统和方法
CN1609795A (zh) 用于计算机平台的编程接口
CN1755721A (zh) 组件化和可扩展的工作流模型
CN1689022A (zh) 可扩展标记语言流化转换器
CN101069157A (zh) 用于访问资源的方法和系统
CN1804835A (zh) 多级设备性能分层结构
CN1669018A (zh) 手持终端框架系统
CN1826593A (zh) 通过网络以事务形式办理文件操作的方法与系统
CN1797399A (zh) 用于文本挖掘和搜索的应用程序编程接口
CN1577324A (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
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Open date: 20070509

CI01 Publication of corrected invention patent application

Correction item: Rejection of patent application

Correct: Dismiss

False: Reject

Number: 28

Volume: 28

ERR Gazette correction

Free format text: CORRECT: PATENT APPLICATION REJECTION OF AFTER PUBLICATION; FROM: REJECTION TO: REVOCATION REJECTED

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160921

Termination date: 20181104

CF01 Termination of patent right due to non-payment of annual fee