CN101634946B - 一种rfid构件的生成方法 - Google Patents
一种rfid构件的生成方法 Download PDFInfo
- Publication number
- CN101634946B CN101634946B CN200910042037XA CN200910042037A CN101634946B CN 101634946 B CN101634946 B CN 101634946B CN 200910042037X A CN200910042037X A CN 200910042037XA CN 200910042037 A CN200910042037 A CN 200910042037A CN 101634946 B CN101634946 B CN 101634946B
- Authority
- CN
- China
- Prior art keywords
- jbpm
- workflow
- rfid
- osgi
- service
- 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
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种RFID构件的生成方法,将计算机服务平台OSGi与Java业务流程管理jBPM的工作流进行整合,将RFID中间件应用系统设置成独立的应用构件,并作为工作流节点运行在jBPM工作流引擎上,从而实现RFID应用系统业务流程。本发明将jBPM与OSGi结合,利用工作流技术与面向服务的构件技术来管理业务流程的变更以及服务的重组,jBPM节点和OSGi bundle的相对独立性,使bundle很自然地与jBPM结点对应起来;OSGi平台对bundle的管理,使得服务与实现分离,在不重启平台的情况下,实现bundle的热插拔;服务外露,实现隐藏,真正实现了面向服务的操作。
Description
技术领域
本发明属于RFID中间件上层应用的领域,特别是提出了一种采用工作流技术来实现RFID中间件应用的构件化的解决方法。
技术背景
RFID已经广泛的应用于企业信息自动化中,但是随着RFID应用不断深入,其应用所涉及的业务过程也更加复杂,与其相关的业务逻辑的变化更显频繁,传统意义上的RFID中间件对上层应用的支持处于比较低的级别,其功能已经无法解决这些问题。
基于构件的软件开发(Component-Based Software Development)方法提高了软件的复用程度,加快了软件开发进程,而工作流技术是进行企业级业务流程系统开发的最佳选择,在RFID中间件应用构件的开发中引入基于构件的软件开发技术和工作流技术,并将两者结合,是让RFID中间件应用适应变化和复杂应用场景的一种解决方案。
计算机服务平台OSGi是一个面向组件、松散耦合的软件编程模型,支持对各组件生命周期、通信的管理。而JBOSS jBPM(Java Business ProcessManagement)是一种基于J2EE的轻量级工作流管理系统,它结合应用了状态机、UML2.0活动图、Petri Net算法三方面的知识。将jBPM与OSGi结合起来作为RFID应用构件的基础设施,可以实现应用构件和业务流程的重用。而目前对基于jBPM与OSGi的RFID中间件企业级应用构件的开发目前还缺乏相关的研究,而这也是亟需研究解决的重要问题。
将jBPM与OSGi结合起来作为RFID应用构件的基础设施,从而实现应用构件和业务流程的重用,以随着企业业务细节的不断变更而适应新的业务需求。
发明内容
本发明的目的在于解决jBPM与OSGi集成,从而完成从jBPM节点到OSGi的bundle的转变,实现RFID中间件应用层的构件化,提出一种基于OSGi与jBPM的RFID中间件应用构件开发的模型,并运用OSGi平台的DS(DeclarativeServices)机制来实现接口与实现分离、服务与实现动态绑定的功能,真正实现面向服务的管理,从而完成工作流的重用。
为了实现发明目的,采用的技术方案如下:
一种RFID构件的生成方法,将计算机服务平台OSGi与Java业务流程管理jBPM的工作流进行整合,将RFID中间件应用系统设置成独立的应用构件,并作为工作流节点运行在jBPM工作流引擎上,从而实现RFID应用系统业务流程。
在OSGi服务平台中,所有的模块要以构件(bundle)的方式来进行部署。一个bundle实质上是一个由一定功能的java类、资源、描述文件所组成的jar文件,它必须具有一个按照OSGi的规范编写的MANIFEST.MF文件,让OSGi平台能够识别与加载。OSGi框架负责提供bundle的生命周期管理、版本管理、安全管理等基本功能,bundle之间通过包的导入和导出、服务的发布和引用建立相互之间的依赖关系,这种面向服务的构件模型实现了服务与实现的分离以及bundle之间的松耦合,结合OSGi框架提供的基础设施,bundle可以被在线的安装、启动、停止、卸载而不需要重新启动OSGi总线。
而在jBPM的流程定义中,节点(Node)和有向弧(Transition)是主要部分。
正是由于以上的特性,本发明将jBPM与OSGi结合,利用工作流技术与面向服务的构件技术来管理业务流程的变更以及服务的重组。将OSGi框架与jBPM工作流整合,将RFID中间件应用系统构件化成独立的构件,并作为工作流节点运行在jBPM工作流引擎上,从而实现RFID应用系统业务流程。
上述技术方案中,所述应用构件的生成包括如下三个步骤:
1)获取功能模块;
2)抽取节点;
3)生成构件。
其中,所述步骤1)获取功能模块的具体操作为:将来源于各个企业的业务管理系统或程序进行拆分,对各个功能模块进行分析和细化,分解成功能相对单一、粒度较小的模块。
所述步骤2)抽取节点具体操作为:在流程定义文件的XML文档中,将动作标签的类属性指定为一个具体的java类的路径,该java类用于实现jBPM中的动作执行者ActionHandler接口,jBPM引擎通过调用ActionHandler的对象实例的execute方法,执行节点的实际动作。
所述步骤3)所生成的构件具有实现动作执行者ActionHandler接口的操作类,并在定义流程的XML文档中,将动作标签的类属性指定到构件中的该操作类,在ActionHandler的对象实例的execute方法中通过引用OSGi总线上的一个到多个其他构件注册的服务来完成动作的功能。
本发明的jBPM工作流引擎在OSGi平台上的整合的具体操作为:将jBPM工作流引擎的核心包整合到了Equinox框架上,通过扩展点机制来注册和发现动作执行者ActionHandler接口的实现类,从而在jBPM工作流引擎加载流程中每一个构件所包含的ActionHandler接口的实现类,保证jBPM工作流正常运行。
进一步的,本发明所述RFID构件的生成方法还包括采用DeclarativeServices机制(DS机制)来实现接口与实现分离、以及服务与实现动态绑定。因为OSGi平台对bundle的生命周期进行管理,能够在不重新启动平台的情况下,动态安装和卸载bundle,实现构件的热插拔;OSGi平台对构件服务的管理及面向服务的构件设计,使得一个服务可以对应多个实现,服务的注册和绑定在OSGi平台上动态的实现。利用OSGi平台的以上特性,可以实现RFID中间件应用中工作流在业务流程基本不变、具体实施发生变化时的重用,进一步提高了RFID中间件对企业业务流程开发的支持程度。其过程如下:
1、利用jBPM将业务流程进行设定与配置,并发布于数据库;
2、按照不同的粒度对节点进行抽取与整合,生成bundle;
3、利用DS机制对服务(接口)与实现进行动态绑定;
4、流程在自动运行时会寻找jBPM的ActionHandler接口,从而动态的注入bundle来实现动作。
本发明将jBPM与OSGi结合,利用工作流技术与面向服务的构件技术来管理业务流程的变更以及服务的重组,jBPM节点和OSGi bundle的相对独立性,使bundle很自然地与jBPM结点对应起来;OSGi平台对bundle的管理,使得服务与实现分离,在不重启平台的情况下,实现bundle的热插拔;服务外露,实现隐藏,真正实现了面向服务的操作。
附图说明
图1为jBPM工作流引擎与OSGi框架整合的总体架构图;
图2为RFID构件生成模型;
图3为利用OSGi的动态管理机制实现工作流重用的模型。
具体实施方式
下面结合附图对本发明做一下说明。
图1是jBPM工作流引擎与OSGi框架整合的总体架构图,其具体实施如下:
根据各个企业的管理流程,提炼出各个程序模块,并作为jBPM的节点,在工作流引擎上流程化其过程;根据不同的粒度,将一个或多个节点进行整合,形成OSGi平台上的bundle,这些bundle由OSGi平台统一管理,将服务与实现分离,通过DS方式将实现动态注入,客户面对的只是服务;将jBPM核心代码打包成bundle,并加载于OSGi平台上,以扩展点的方式来注册与发现实现类;各个应用层的bundle都继承了ActionHandler接口。
图2是RFID构件生成的模型,其具体实施方式如下:
1、功能模块的获取:
最初的功能模块可以来源于各个企业的业务管理系统或程序,将程序进行拆分,对各个功能模块进行分析和细化,分解成功能相对单一、粒度较小的模块。
2、一般jBPM节点的生成:
将上述的小模块作为jBPM中的节点来实现:在流程定义文件的XML文档中,将action标签的class属性指定为一个具体的java类的路径;该java类用于实现jBPM中的ActionHandler接口;jBPM引擎通过调用ActionHandler的对象实例的execute方法,执行节点的实际动作。
3、基于bundle的jBPM节点的生成:
借助bundle实现的jBPM节点是一个构件。与普通节点类似,其也具有实现ActionHandler接口的操作类,在定义流程的XML文档中,action标签的class属性指定到bundle中的该操作类。与上述一般jBPM节点中包含大量执行实际动作的代码不同,节点bundle实际上作为一个简单的适配器来使用。在ActionHandler的对象实例的execute方法中通过引用OSGi总线上一个到多个其他bundle注册的服务来完成动作的功能,而本身不做其他更多的操作。这些服务的具体操作实现可能包含在一个到多其他的功能bundle中,而这些服务可以通过OSGi框架的支持动态地、反向地注入到适配器中。在不同节点中重复的行为(或功能)可提取为独立的构件,在不同的节点之间共享。
4、jBPM工作流引擎在OSGi平台上的整合:
将jBPM工作流引擎的核心包整合到了Equinox框架上,通过Equinox的扩展点机制来注册和发现ActionHandler接口的实现类,这样,jBPM工作流引擎就可以加载流程中每一个构件所包含的ActionHandler接口的实现类,保证jBPM工作流正常运行,同时又充分吸收了OSGi框架带来的面向服务和构件的软件开发技术的优点。
图3是利用OSGi的动态管理机制实现工作流重用的模型,其具体实施如下:
所谓工作流的重用,是指在不改变工作流的结构、不重新部署工作流的前提下,实现不同的业务流程。在通常情况下,工作流已经部署完毕后,即使修改局部的功能通常也需要对工作流或应用系统进行重新部署和重启,是一件十分低效和繁复的工作。例如,在传统的RFID中间件应用中,如果要动态地对系统增加或替换一个原来不支持的RFID阅读器来读取数据,很可能将面临着系统和工作流的修改和重新部署。
而OSGi平台对bundle的生命周期进行管理,可以在不重新启动的情况下,动态安装和卸载bundle,实现构件的热插拔;OSGi平台对构件服务的管理及面向服务的构件设计,使得一个服务可以对应多个实现,服务的注册和绑定在OSGi平台上动态的实现,真正做到了面向服务的操作。利用OSGi平台的以上特性,我们可以实现RFID中间件应用中工作流在业务流程基本不变、具体实施发生变化时的重用,进一步提高了RFID中间件对企业业务流程开发的支持程度。
本发明主要运用了DS机制来实现以上提到的接口与实现分离、服务与实现动态绑定的功能。DS是一个面向服务的组件模型,可以更方便地在OSGi服务平台上发布、查找、绑定服务,对服务进行动态管理。
1、服务的发布,采用如下程序代码实现:
<?xml version=″1.0″encoding=″UTF-8″?>
<component name=″SymbolXR440ReaderImpl″>
<implementation class=″scut.emos.rfid.wm.monitor.impl.SymbolXR440ReaderImpl″/>
<service>
<provide interface=″scut.emos.rfid.wm.monitor.Monitor″/>
</service>
</component>
在implementation标签的class属性中声明实现的类scut.emos.rfid.wm.monitor.impl.sybol.SymbolXR440ReaderImpl,在service元素中声明发布相应的服务scut.emos.rfid.wm.monitro.Monitor。服务的发布和实现可以在不同的bundle中,从而实现服务与实现的分离。
2、服务的引用,采用如下程序代码实现:
<?xml version=″1.0″encoding=″UTF-8″?>
<component name=″MonitorHandler″>
<implementation class=″scut.emos.rfid.wm.monitor.action.MonitorHandler″/>
<reference name=″Monitor″
interface=″scut.emos.rfid.wm.monitor.Monitor″
bind=″setMonitor″
unbind=″unsetMonitor″
policy=″dynamic″/>
</component>
通过bind和unbind属性声明的方法来实现服务的动态注入。在jBPM中,适配器scut.emos.rfid.wm.monitor.action.MonitorHandler 实现了ActionHandler接口,并以OSGi bundle的形式实现,当该服务组件激活的过程中,SCR(Service Component Runtime)通过setMonitor方法,将实现了scut.emos.rfid.wm.monitro.Monitor服务接口的实例绑定到该组件中,通过实现中的具体方法来完成实际动作。
Claims (3)
1.一种RFID构件的生成方法,其特征在于将计算机服务平台OSGi与Java业务流程管理jBPM的工作流进行整合,将RFID中间件应用系统设置成独立的应用构件,并作为工作流节点运行在jBPM工作流引擎上,从而实现RFID应用系统业务流程;所述应用构件的生成包括如下三个步骤:
1)获取功能模块;
2)抽取节点;
3)生成构件;
所述jBPM工作流引擎在OSGi平台上的整合的具体操作为:将jBPM工作流引擎的核心包整合到了Equinox框架上,通过扩展点机制来注册和发现动作执行者ActionHandler接口的实现类,从而在jBPM工作流引擎加载流程中每一个构件所包含的ActionHandler接口的实现类,保证jBPM工作流正常运行;
所述RFID构件的生成方法还包括采用Declarative Services机制来实现接口与实现分离、以及服务与实现动态绑定。
2.根据权利要求1所述的RFID构件的生成方法,其特征在于所述步骤1)获取功能模块的具体操作为:将来源于各个企业的业务管理系统或程序进行拆分,对各个功能模块进行分析和细化,分解成功能相对单一、粒度较小的模块。
3.根据权利要求1所述的RFID构件的生成方法,其特征在于所述步骤2)抽取节点具体操作为:在流程定义文件的XML文档中,将动作标签的类属性指定为一个具体的java类的路径,该java类用于实现jBPM中的动作执行者ActionHandler接口,jBPM引擎通过调用ActionHandler的对象实例的execute方法,执行节点的实际动作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910042037XA CN101634946B (zh) | 2009-08-20 | 2009-08-20 | 一种rfid构件的生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910042037XA CN101634946B (zh) | 2009-08-20 | 2009-08-20 | 一种rfid构件的生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101634946A CN101634946A (zh) | 2010-01-27 |
CN101634946B true CN101634946B (zh) | 2012-05-09 |
Family
ID=41594143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910042037XA Expired - Fee Related CN101634946B (zh) | 2009-08-20 | 2009-08-20 | 一种rfid构件的生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101634946B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101907993A (zh) * | 2010-07-27 | 2010-12-08 | 华南理工大学 | 基于SpringDM的动态模型及其在RFID中间件持久层的应用 |
CN101924768B (zh) * | 2010-08-20 | 2013-05-15 | 华南理工大学 | 一种分布式rfid中间件的通信控制方法 |
CN101977196B (zh) * | 2010-10-29 | 2013-07-10 | 西安交通大学 | 一种无侵入性的搭建微内核虚拟化平台的方法 |
CN102158490B (zh) * | 2011-04-07 | 2013-10-23 | 山东中创软件商用中间件股份有限公司 | 基于OSGi的服务转换方法和装置 |
CN105335174B (zh) * | 2014-07-15 | 2018-11-20 | 阿里巴巴集团控股有限公司 | 一种非OSGi的Java应用程序调用OSGi服务的方法及装置 |
CN104915193B (zh) * | 2015-05-04 | 2018-02-23 | 北京奇艺世纪科技有限公司 | 一种流程引擎的处理方法和装置 |
CN105653331A (zh) * | 2015-12-29 | 2016-06-08 | Tcl集团股份有限公司 | 一种中间件的应用方法及装置 |
CN108287711A (zh) * | 2018-03-07 | 2018-07-17 | 北京理工大学 | 一种软件系统的代数构件表示方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201259678Y (zh) * | 2008-03-04 | 2009-06-17 | 烽火通信科技股份有限公司 | 一种灵活通用的rfid系统 |
-
2009
- 2009-08-20 CN CN200910042037XA patent/CN101634946B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201259678Y (zh) * | 2008-03-04 | 2009-06-17 | 烽火通信科技股份有限公司 | 一种灵活通用的rfid系统 |
Non-Patent Citations (4)
Title |
---|
Pienaar, S. |
Piramuthu, S..Web Services based workflow architecture for RFID applications using service chains.《Service Systems and Service Management, 2008 International Conference on》.2008,1-6. |
Sundaram, D. |
Sundaram, D.;Pienaar, S.;Piramuthu, S..Web Services based workflow architecture for RFID applications using service chains.《Service Systems and Service Management, 2008 International Conference on》.2008,1-6. * |
Also Published As
Publication number | Publication date |
---|---|
CN101634946A (zh) | 2010-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101634946B (zh) | 一种rfid构件的生成方法 | |
Ouyang et al. | Translating standard process models to BPEL | |
CN101777004B (zh) | 面向服务环境中基于模板实现bpel子流程复用的方法及系统 | |
Nguyen et al. | Modeling and managing variability in process-based service compositions | |
CN101707399B (zh) | 电能信息采集方法及系统 | |
CN102323879A (zh) | 完整网络中间件运行支撑平台及异构中间件的集成方法 | |
CN102508669A (zh) | 一种程序代码自动生成方法 | |
CN101872305A (zh) | Ui表现和业务逻辑分离方法和系统 | |
CN105354037A (zh) | 模块化的软件开发方法及软件开发装置 | |
CN102810057A (zh) | 一种记录日志的方法 | |
CN101820428A (zh) | 基于协议组合机制的组合服务优化方法和装置 | |
CN101667134A (zh) | 一种构建编译系统的方法、一种编译系统及其构建装置 | |
CN103019874A (zh) | 基于数据同步实现异常处理的方法及装置 | |
CN111857801B (zh) | 一种移动应用的构建方法 | |
CN104020992B (zh) | 由C/C++生成Java Web服务的方法及装置 | |
CN110764752A (zh) | 基于微服务架构实现Restful服务图形化服务编排的系统及其方法 | |
CN101727648A (zh) | 服务系统中的超时控制方法及服务系统 | |
CN102455903B (zh) | 一种用户应用界面的生成方法 | |
CN102203767A (zh) | 重新配置模型 | |
CN101295246B (zh) | 一种从UML模型转换至SmartC模型的转换方法 | |
CN103544060A (zh) | 一种基于webservice的服务调度系统及方法 | |
CN102375743A (zh) | 一种基于模型和模板开发soa系统的方法 | |
CN101894317B (zh) | 数据变化驱动业务逻辑的方法和系统 | |
CN102811257A (zh) | 一种网络服务自动发布和组合方法 | |
CN103019819A (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: 20120509 Termination date: 20170820 |