CN101446903A - 构件自动分类的方法 - Google Patents

构件自动分类的方法 Download PDF

Info

Publication number
CN101446903A
CN101446903A CNA200810240456XA CN200810240456A CN101446903A CN 101446903 A CN101446903 A CN 101446903A CN A200810240456X A CNA200810240456X A CN A200810240456XA CN 200810240456 A CN200810240456 A CN 200810240456A CN 101446903 A CN101446903 A CN 101446903A
Authority
CN
China
Prior art keywords
plug
unit
data bag
information
sorting algorithm
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
CNA200810240456XA
Other languages
English (en)
Other versions
CN101446903B (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.)
Peking University
Original Assignee
Peking University
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 Peking University filed Critical Peking University
Priority to CN200810240456XA priority Critical patent/CN101446903B/zh
Publication of CN101446903A publication Critical patent/CN101446903A/zh
Application granted granted Critical
Publication of CN101446903B publication Critical patent/CN101446903B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种构件自动分类的方法。该方法包括获取插件描述文件,所述插件描述文件中包括插件类名及保存有分类属性或者分类算法的插件数据包的信息;根据所述插件数据包的信息加载所述插件数据包;根据所述插件类名实例化所述插件数据包;根据所述插件数据包中的分类属性或者分类算法对构件进行分类。通过本发明可以对分类属性和分类算法进行扩展,避免现有分类属性和分类算法固定的问题。

Description

构件自动分类的方法
技术领域
本发明涉及软件技术,尤其是一种构件自动分类的方法。
背景技术
构件是指在应用系统中可以明确辨别的构成部分,而可复用构件是指具有相对独立的功能和可复用价值的构件。要减小复用成本,使复用者更好地理解构件,就需要对构件进行描述和分类。作为一种有效的信息处理方法,自动分类技术将各类信息按照一定的分类体系进行分类整理,从而大大提高了用户搜集情报的效率。自动分类的任务就是通过自动分类算法得到一个目标函数(target function)f,把每个属性x映射到一个预先定义的类标号y,目标函数也称作分类模型。
目前构件自动分类时采用的是固定分类算法,即通过某种特定的分类算法,如SVM,基于构件的特定的特征,例如构件的文档描述信息,对构件进行自动分类。即首先通过对构件进行分析获取构件的特征,然后根据某一特征和某一算法对构件进行分类。由于现有技术是采用固定的自动分类算法,在某些场合中,用户可能需要根据待分类数据集的特点来自动选择分类算法,以便取得更好的分类效果,因此,现有的这种采用固定的分类算法的方式不能满足用户的需求。同时,现有技术是以特定的特征作为分类属性来进行分类,而在不同的应用场合中,不同特征的组合同样可以作为分类属性,为构件的分类提供支持,因此,为了应用于不同的场景,同样需要提供方法对分类属性进行扩展。
发明内容
本发明的目的是解决现有技术中存在的构件自动分类算法固定、分类属性不能扩展的问题,实现可扩展的构件自动分类。
为实现上述目的,本发明提供了一种构件自动分类的方法,包括:
获取插件描述文件,所述插件描述文件中包括插件类名及保存有分类属性或者分类算法的插件数据包的信息;
根据所述插件数据包的信息加载所述插件数据包;
根据所述插件类名实例化所述插件数据包;
根据所述插件数据包中的分类属性或者分类算法对构件进行分类。
由上述技术方案可知,本发明可以将扩展的分类属性或者分类算法保存在插件数据包中,对插件数据包进行实例化以调用分类属性或者分类算法,实现对分类属性或者分类算法的扩展。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为本发明构件自动分类的方法实施例的流程示意图;
图2为本发明构件自动分类的方法实施例对应的结构示意图。
具体实施方式
图1为本发明构件自动分类的方法实施例的流程示意图。
可扩展架构是研究如何对系统扩展,从而使系统能够接受满足格式要求的扩展功能模块,实现对功能的扩展,以满足各种不同的要求。插件是指一种遵循一定规范的应用程序接口编写出来的程序,主要是用来扩展软件功能。插件可以由软件公司自己开发,也可以由第三方或软件用户个人开发。因此,可以通过插件实现可扩展架构。
本实施例以分类算法的扩展为例对插件进行描述,对分类属性等的扩展也可以采用与本实施例相同的原理实现。参照图2的结构图,本实施例包括:
步骤11:当需要对构件进行自动分类时,用户通过应用程序模块21在插件描述文件列表中获取插件描述文件,所述插件描述文件中包括插件类名及保存有分类属性或者分类算法的插件数据包的信息。
插件主要包括如下两类信息:
(1)插件描述文件plugin.xml。该描述文件包括插件描述信息,给出了插件的各种基本信息。主要包括:
(a)<plugin>项:<plugin>是plugin.xml的主体,包含插件的id、插件的名字、版本信息以及具体实现功能的插件类的名称等。通过解析plugin.xml文件,可以获取插件类的名称,然后可以利用Java语言的反射机制来得到该插件类的实例。具体包括:
<plugin
id="myplugin"
name="Myplugin插件"
version="1.0.0"
provider-name=""
class="myplugin.MypluginPlugin">
其中:
id是插件的唯一标识。实际项目中一般加上包名或网址名来命名id,这样便可以避免插件的标识名重名。
name是插件的名称,可以不唯一。
version是插件版本号。
provider-name可以为作者或公司的名称。
class是插件类的名称。此类中的方法是扩展点接口中声明方法的具体实现,系统利用JAVA反射机制,在plugin.xml文件中得到此类名,根据指定的类名,得到该类的实例。
(b)<runtime>项:声明插件运行时需要的Jar包以及所在路径。比如插件需要连接MySQL数据库,并需要相应的Jar包提供支持,可以在<runtime>项中指定该Jar包所在的路径。具体包括:
<runtime>
<library name="myplugin.jar">
</library>
</runtime>
该项声明插件运行时需要的Jar包。其中本插件自身的Jar包必须声明,而且本插件在打包时将以myplugin.jar为名打包。如果该插件运行还需要其它的Jar包,也应该在此声明所使用Jar包的路径。比如有一个插件要连接MySQL数据库需要它的一个包,定义如下所示,其中“lib\”是该包所在路径。
<runtime>
<library name="myplugin.jar">
</library>
<library
name="lib\mysql-connector-java-3.0.9-stable-bin.jar"/>
</runtime>
(c)<requires>项:定义了该插件所要依赖的其他插件。具体包括:
<requires>
<Import plugin="org.eclipse.ui"/>
<Import plugin="org.eclipse.core.runtime"/>
</requires>
从上述对plugin.xml文件的分析,可以得知通过解析插件的描述文件plugin.xml获取相应的插件描述信息,如通过<requires>项可以获取该插件运行所需的依赖插件,通过<plugin>项可以获知插件类class,通过<runtime>项可以获知Jar包的路径信息。
(2)完成分类算法功能的Jar包。系统中的插件22采用Jar包的形式。每个插件对应的Jar包是对插件接口类的具体实现。
Jar包与分类算法对应,提供具体的分类算法的实现。如系统需要扩展一个新的算法,如KNN算法,插件开发者可以按照预定义的插件接口格式完成该自动分类算法实现,并将其封装成Jar包,并提供与该Jar包对应的plugin.xml文件。Jar包及插件描述文件plugin.xml文件可以保存在插件描述文件列表plugins目录的子文件夹下。之后,在需要调用扩展的分类算法时,可以解析plugin.xml文件得到插件类名,并利用Java反射机制完成对相应分类算法的实例化,之后可以调用新的分类算法。
各插件的完成分类算法功能的Jar包需要遵循一定的接口,可以在插件接口模块24预定义一个抽象类,使每个插件可以继承该抽象类。该抽象类Plugin可以包括如下信息:
started_:Boolean插件启动状态
manager_:PluginManager插件管理器,负责所有插件资源的管理,包括插件的启动、停止、使能(Enable/Disable)等
descriptor_:IPluginDescriptor插件描述符,记录了插件的ID、Name、Version、依赖、扩展点等
Plugin():类的初始化
getDescriptor():获取插件插件描述符(用来记录插件的ID、Name、Version、依赖、扩展点等信息);
getManager():获取插件管理器(负责所有插件资源的管理,包括插件的启动、停止、使能(Enable/Disable)等);
start():启动插件
stop():停止插件的运行
isActive():用来判断该插件的状态(包括是否启动);
getResourceSring():获取资源信息,即需要分类的资源信息
getPluginPath():用来获取插件的具体路径
dostart():虚函数,启动插件,并完成插件的初始化工作
dostop():虚函数,停止启动插件,并完成资源的释放等工作
为了调用插件中的分类算法,系统中需要包括如下信息:
(1)提供存放插件描述信息的插件描述文件列表plugins。在系统中,用户将在"plugins"目录下建立子文件夹,并将扩展需要的各插件的plugin.xml文件和Jar包对应存放到建立的子文件夹中。系统启动的时候会扫描"plugins"目录下的所有子目录中的plugin.xml文件,进而装载插件。
(2)提供XML Parser来将plugin.xml中的信息解析出来,获取插件的基本信息。然后可以根据用户的需要,通过Java反射机制将插件中对应的类进行实例化和调用。
之后,应用程序模块21解析所述插件描述文件获取依赖插件信息,判断所述依赖插件信息对应的依赖插件是否启动,若启动,执行步骤12,否则,启动所述依赖插件。具体的,在插件描述信息的<requires>项中获知对应的依赖插件信息。
步骤12:应用程序模块21根据所述插件数据包的信息加载所述插件数据包。例如,根据上述的<runtime>项中的Jar包的路径信息加载相应的Jar包。
插件的启动是通过类加载器(ClassLoader)加载该类来启动的,利用Java的类反射机制获得类的一个对象实例,调用指定的分类算法对资源进行分类。当成功启动一个插件时,系统会设置该插件类的isActive变量,根据该变量的值就可以判断插件的启动状态。
如果用户定义的插件类运行时需要其他类库、Jar包的支持(公共函数库模块23可以为整个系统提供基础支持的类库,应用程序模块21和插件22都可以调用以获取支持),那么用户需要在plugin.xml文件的<requires>项中进行设置。系统在加载用户定义的一个插件类时,需要先扫描<requires>项,如果需要依赖插件,则解析出依赖插件的路径,进行加载实例化。只有在依赖插件加载实例化成功后,用户定义的插件才可以被加载、调用。
步骤13:应用程序模块21根据所述插件类名实例化所述插件数据包,为插件类初始化一个对象实例(在内存分配一个地址)。例如,根据上述的<plugin>项中的插件类名(class),利用Java语言反射机制,加载所述插件类名指定的插件类,得到实例化后的插件类。
步骤14:应用程序模块21根据所述插件数据包中的分类属性或者分类算法对构件进行分类。
本实施例中,插件提供者只需要编写plugin.xml文件,按预定义的格式实现插件接口类,将包括分类属性或者分类算法的类文件打成数据包(Jar包)即可,其他任务均由系统完成,因此扩展简便;分类算法或者分类属性只需继承插件接口类即可,至于算法如何实现完全由插件提供者决定,因此约束性小;系统利用Java语言反射机制可以动态加载和停止各插件,因此支持动态加载,可以降低开销。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。

Claims (5)

1、一种构件自动分类的方法,其特征在于,包括:
获取插件描述文件,所述插件描述文件中包括插件类名及保存有分类属性或者分类算法的插件数据包的信息;
根据所述插件数据包的信息加载所述插件数据包;
根据所述插件类名实例化所述插件数据包;
根据所述插件数据包中的分类属性或者分类算法对构件进行分类。
2、根据权利要求1所述的方法,其特征在于:
所述插件描述文件中还包括依赖插件信息;
所述根据所述插件数据包的信息加载所述插件数据包包括:根据所述依赖插件信息判断相应的依赖插件是否启动,若相应的依赖插件未启动,则启动相应的依赖插件;所述依赖插件均启动后,根据所述插件数据包的信息加载所述插件数据包。
3、根据权利要求1所述的方法,其特征在于,所述根据所述插件类名实例化所述插件数据包具体为:利用Java语言反射机制,加载所述插件类名指定的插件类,得到实例化后的插件类。
4、根据权利要求1或2或3所述的方法,其特征在于,还包括:将待扩展的分类属性或者分类算法打成插件数据包。
5、根据权利要求4所述的方法,其特征在于,所述将待扩展的分类属性或者分类算法打成插件数据包具体为:将待扩展的分类属性或者分类算法,按照预定义的插件接口格式,打成插件数据包。
CN200810240456XA 2008-12-19 2008-12-19 构件自动分类的方法 Active CN101446903B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200810240456XA CN101446903B (zh) 2008-12-19 2008-12-19 构件自动分类的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200810240456XA CN101446903B (zh) 2008-12-19 2008-12-19 构件自动分类的方法

Publications (2)

Publication Number Publication Date
CN101446903A true CN101446903A (zh) 2009-06-03
CN101446903B CN101446903B (zh) 2011-06-08

Family

ID=40742594

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810240456XA Active CN101446903B (zh) 2008-12-19 2008-12-19 构件自动分类的方法

Country Status (1)

Country Link
CN (1) CN101446903B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102025835A (zh) * 2010-12-06 2011-04-20 华为终端有限公司 一种移动终端中的应用程序自动分类的方法和装置
CN102170495A (zh) * 2011-04-07 2011-08-31 宇龙计算机通信科技(深圳)有限公司 手机应用分类管理方法及装置
CN102486731A (zh) * 2009-11-30 2012-06-06 国际商业机器公司 增强软件的软件调用栈的可视化的方法、设备和系统
CN102945158A (zh) * 2012-10-24 2013-02-27 深圳市万凯达科技有限公司 一种电子设备应用安装自动归类方法及系统
CN103218220A (zh) * 2013-02-25 2013-07-24 上海谐宇网络科技有限公司 基于动态可插拔组件的物联网中间件系统
CN105138337A (zh) * 2015-08-31 2015-12-09 华为技术有限公司 一种插件适配方法及插件适配装置
CN107870789A (zh) * 2017-10-18 2018-04-03 福建天泉教育科技有限公司 一种打包插件的方法及终端
CN108563429A (zh) * 2014-12-10 2018-09-21 Oppo广东移动通信有限公司 描述插件安装包的方法及移动终端
CN108875045A (zh) * 2018-06-28 2018-11-23 第四范式(北京)技术有限公司 针对文本分类来执行机器学习过程的方法及其系统
CN111324359A (zh) * 2020-02-27 2020-06-23 支付宝(杭州)信息技术有限公司 插件部署方法及装置
CN112819106A (zh) * 2021-04-16 2021-05-18 江西博微新技术有限公司 一种ifc构件类型识别方法、装置、存储介质及设备
CN112860345A (zh) * 2021-02-26 2021-05-28 中国银行股份有限公司 插件管理方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1333336C (zh) * 2006-06-23 2007-08-22 清华大学 一种支持异构构件的构件库统一管理方法
CN100444112C (zh) * 2006-12-06 2008-12-17 武汉大学 一种构件库管理方法

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102486731A (zh) * 2009-11-30 2012-06-06 国际商业机器公司 增强软件的软件调用栈的可视化的方法、设备和系统
CN102486731B (zh) * 2009-11-30 2015-12-09 国际商业机器公司 增强软件的软件调用栈的可视化的方法、设备和系统
CN102025835A (zh) * 2010-12-06 2011-04-20 华为终端有限公司 一种移动终端中的应用程序自动分类的方法和装置
CN102170495A (zh) * 2011-04-07 2011-08-31 宇龙计算机通信科技(深圳)有限公司 手机应用分类管理方法及装置
CN102170495B (zh) * 2011-04-07 2013-11-13 宇龙计算机通信科技(深圳)有限公司 手机应用分类管理方法及装置
CN102945158A (zh) * 2012-10-24 2013-02-27 深圳市万凯达科技有限公司 一种电子设备应用安装自动归类方法及系统
CN102945158B (zh) * 2012-10-24 2013-10-16 深圳市万凯达科技有限公司 一种电子设备应用安装自动归类方法及系统
CN103218220A (zh) * 2013-02-25 2013-07-24 上海谐宇网络科技有限公司 基于动态可插拔组件的物联网中间件系统
CN108563429A (zh) * 2014-12-10 2018-09-21 Oppo广东移动通信有限公司 描述插件安装包的方法及移动终端
CN105138337A (zh) * 2015-08-31 2015-12-09 华为技术有限公司 一种插件适配方法及插件适配装置
CN105138337B (zh) * 2015-08-31 2018-09-28 华为技术有限公司 一种插件适配方法及插件适配装置
CN107870789A (zh) * 2017-10-18 2018-04-03 福建天泉教育科技有限公司 一种打包插件的方法及终端
CN107870789B (zh) * 2017-10-18 2021-01-26 福建天泉教育科技有限公司 一种打包插件的方法及终端
CN108875045A (zh) * 2018-06-28 2018-11-23 第四范式(北京)技术有限公司 针对文本分类来执行机器学习过程的方法及其系统
CN111324359A (zh) * 2020-02-27 2020-06-23 支付宝(杭州)信息技术有限公司 插件部署方法及装置
CN112860345A (zh) * 2021-02-26 2021-05-28 中国银行股份有限公司 插件管理方法及装置
CN112860345B (zh) * 2021-02-26 2024-06-21 中国银行股份有限公司 插件管理方法及装置
CN112819106A (zh) * 2021-04-16 2021-05-18 江西博微新技术有限公司 一种ifc构件类型识别方法、装置、存储介质及设备

Also Published As

Publication number Publication date
CN101446903B (zh) 2011-06-08

Similar Documents

Publication Publication Date Title
CN101446903B (zh) 构件自动分类的方法
US9558016B2 (en) Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product
US8051405B2 (en) System and method for build script generation in a software development environment
CN113872948A (zh) 一种执行智能合约的方法、区块链节点和节点设备
US7277827B2 (en) Device testing framework for creating device-centric scenario-based automated tests
CN102929597B (zh) 一种基于Java平台的Web业务支持方法和装置
CN109117164B (zh) 基于关键元素差异性分析的微服务更新方法及系统
CN101421711A (zh) 用于资源受限设备的虚拟执行系统
JP2005293578A (ja) 属性を介して制御されるテストケース継承
CN108614702B (zh) 字节码优化方法及装置
CN111506314B (zh) 项目开发的方法、装置、服务器及介质
CN103577212A (zh) 系统启动预加载方法及装置
CN108229148A (zh) 一种基于Android虚拟机的沙箱脱壳方法及系统
US7966600B2 (en) Distributed resource understanding tool management
JPWO2008114560A1 (ja) コンピュータ、動作ルール適用方法、オペレーティングシステム
CN110347448B (zh) 一种构造终端应用行为的运行时模型的方法
CN116466953B (zh) 组件化的前端开发方法、装置、计算机设备和存储介质
CN112631763A (zh) 一种主机程序的程序变更方法及装置
CN100549958C (zh) 一种类文件装载方法和系统
CN106354624B (zh) 一种自动化测试方法和装置
US9703576B2 (en) Aspect scoping in a modularity runtime
JP4959003B2 (ja) 反復コンポーネントのバインディング
KR101140522B1 (ko) 객체 관리 시스템 및 방법
CN105393216B (zh) 运行时内存调节
CN109299004B (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