专利名称:BPM中业务流程动态生成Web Service的系统及方法
技术领域:
本发明涉及计算机应用领域,特别涉及关于业务流程管理的体系结构(BPM)的计算机应用技术领域,具体是指一种企业BPM系统中实现业务流程动态生成ffeb Service的系统及方法。
背景技术:
在企业级应用开发领域,随着应用规模的不断扩大,各个系统之间的集成和交互变得越来越频繁,要实现一个特定的功能,需要与多个系统进行通信,通过各系统之间的协作来完成。目前主流的软件项目的架构类似“竖井”,在这个“竖井”中有数据库,中间层、客户端表现层等。各个应用系统的数据分属在不同的竖井中,当我们的信息化发展到一定程度,已开发和上线运行的系统需要整合或实现数据共享时,我们不得不通过在“竖井”中“穿洞”来访问数据。一旦一个数据对象发生了变化,对其他系统的影响就将变得“不可知”和 “不可控”了。业务流程管理(Business Process Management, BPM)软件系统,是解决现有软件系统结构弊端的一种有效手段。业务流程是通过梳理和编排业务活动。BPM软件系统是由之前的以功能和数据为中心转变为以业务流程为中心,通过业务流程的运行来驱动业务的发展,通过业务流程来整合不同业务部门之间的业务交互,提升整个企业的效率。业务流程在BPM软件系统中处于核心地位。传统实施BPM方法里面包含业务流程建模、业务流程分析、业务流程设计、业务流程执行、业务流程监控、业务流程优化等步骤。 但是随着企业规模的发展以及自身业务模式的转变,要求BPM系统能够快速响应业务的变化,要求BPM系统具有集成能力和敏捷变化能力。具体就是从两个维度扩展,第一是业务流程要求能够以Web Service的方式与其他业务系统集成,例如能够与SAP的库存管理系统、 IBM Lotus系统集成;第二就是业务流程的动态优化和调整能力,企业业务流程时刻会面临变化,例如金融业对利率、存款准备金等指标的敏感性,业务分析人员要求在最短时间内对业务流程调整来满足业务的变化。针对第一种情况,通常采用的方法是对BPM系统进行二次开发,对BPM系统中的业务流程进行封装,引入第三方的Web Service组件,例如内嵌一个Axis2等开源框架,通过封装业务流程操作接口,自定义一组接口对象,借助Axis2发布为ffeb Service。但是由于集成标准的不同,甚至不同业务系统集成模式的区别,不同BPM系统经过实施之后可能出现服务不一致的现象,例如服务接口的数据不一致,访问安全性控制不一致等,造成服务不可用的现象。针对第二种情况,BPM在发展过程中经历过Workflow,Human Task, Business Form 等,通过把一些需要调整的指标在业务流程分析阶段定义为人工任务,借助人力的方式来控制业务流程的运行;还有通过业务流程模板里面嵌入动态脚步语言的方式,借助程序执行脚本语言的能力来提高流程灵活性。但是每一种方式都有局限性,例如借助人力的方式对人员的要求非常高,在业务系统运行过程中非常复杂,经常面临错误回退、改派等,增大
6了系统的复杂度,而采用动态脚本语言的方式对业务人员无法理解,而且对于软件开发人员也很难调试等。从软件组件的角度来看,这种方案对业务流程的程序代码的耦合度非常
尚ο随着系统的不断扩大,BPM系统中的业务流程越来越多,以及业务流程之间的集成也越来越多。如果选择对人员要求非常高以及软件模块耦合性高的解决方案,这无论对于业务分析人员还是软件开发测试人员都将是一个灾难。在BPM日益需要服务集成的今天, 如何在BPM系统中实现业务流程动态生成Wfeb Service变得非常紧迫。
发明内容
本发明的目的是克服了上述现有技术中的缺点,提供一种能够在BPM系统中通过编排业务流程之后系统自动根据服务接口定义生成Web krvice,并且具有灾难恢复、安全控制、简单明确、无须编码、服务接口一致、系统性能稳定可靠,适用范围较为广泛的实现业务流程动态生成W^eb Service的系统及方法。为了实现上述的目的,本发明的企业BPM系统中实现业务流程动态生成Web Service的系统包括业务流程服务接口定义模块,用以定义业务流程的ffeb Service接口信息; 动态ffeb Service构件装配模块,与所述的业务流程服务接口定义模块连接,用以根据业务流程的Web Service接口信息装配构件;Web Service动态生成模块,与所述的动态Web Service构件装配模块连接,用以加载所述的构件,生成W^eb Service服务,并提供Wfeb Service服务接入处理;动态服务管理模块,与所述Wflfeb Service动态生成模块连接,用以对Wfeb Service进行管理操作;灾难恢复模块,与所述的动态ffeb Service构件装配模块,用以在系统重启时根据系统中的业务流程自动生成W^eb Service ;安全控制模块,与所述的Wfeb Service动态生成模块连接,用以对Wfeb Service服务提供安全保障;业务流程服务版本控制模块,分别与所述的动态Web Service构件装配模块和Web Service动态生成模块连接,用以向所述系统中存在的多版本的业务流程服务提供多版本的动态服务。该企业BPM系统中实现业务流程动态生成Wfeb Service的系统中,所述的业务流程服务接口定义模块包括服务接口元数据模型解析器,用以对BPM系统所支持的数据类型进行解析;业务流程服务接口定义配置器,与所述的服务接口元数据模型解析器连接,用以对业务流程定义服务接口的服务名称和服务参数用XML语言进行定义;服务接口定义分析器,与所述的业务流程服务接口定义配置器连接,并连接所述的动态Web Service构件装配模块,用以将服务接口定义转换为服务对象。该企业BPM系统中实现业务流程动态生成Wfeb Service的系统中,所述的数据类型为基本类型、复杂类型和XSD类型中的一种或者多种。该企业BPM系统中实现业务流程动态生成Wfeb Service的系统中,所述的动态
7WebService构件装配模块包括服务接口生成器,连接所述的服务接口定义分析器,根据所述的服务接口定义产生服务虚拟java接口 ;服务组件生成器,连接所述的服务接口生成器,根据所述的服务接口定义创建包含服务和数据类型资源的服务构件包;服务组件调度器,连接所述的服务组件生成器,并连接所述的ffeb Service动态生成模块,根据所述的服务接口定义对服务组件的部署、发布、销毁进行调度。该企业BPM系统中实现业务流程动态生成Wfeb Service的系统中,所述的Web Service动态生成模块包括服务构件加载器,连接所述的服务组件调度器,用以加载所述的服务构件包;Web Service服务生成器,连接所述的服务构件加载器,通过所述的虚拟java接口生成Web Service服务;Web Service服务接入器,连接所述的ffeb Service服务生成器,并连接所述的动态服务管理模块、灾难恢复模块、安全控制模块和业务流程服务版本控制模块,用以提供 Web Service调用事务的业务处理。本发明还提供一种利用系统实现企业BPM系统中实现业务流程动态生成Web Service的方法,该方法包括以下步骤(1)所述的业务流程服务接口定义模块进行业务流程编排过程定义服务接口信息操作;(2)所述的动态ffeb Service构件装配模块和所述的业务流程服务版本控制模块进行业务流程热部署动态生成Web Service操作;(3)所述的灾难恢复模块进行系统故障恢复操作;(4)所述的安全控制模块进行业务流程服务安全拦截操作;(5)所述的ffeb Service动态生成模块进行业务流程服务接入操作;(6)所述的动态服务管理模块进行动态服务管理操作。该企业BPM系统中实现业务流程动态生成Wfeb Service的方法中,所述的业务流程服务接口定义模块包括服务接口元数据模型解析器、与所述的服务接口元数据模型解析器连接的业务流程服务接口定义配置器以及与所述的业务流程服务接口定义配置器连接的服务接口定义分析器,所述的业务流程服务接口定义模块进行业务流程编排过程定义服务接口信息操作,具体包括以下步骤(11)所述的服务接口元数据模型解析器加载系统支持的数据类型,所述的数据类型包括简单数据类型和复杂数据类型;(12)所述的业务流程服务接口定义配置器编排流程并配置服务接口 ;(13)所述的服务接口定义分析器将业务流程中的服务定义解析为服务对象。该企业BPM系统中实现业务流程动态生成Wfeb Service的方法中,所述的复杂数据类型为Java Bean、List、Set和Map类型中的一种或者多种。该企业BPM系统中实现业务流程动态生成Wfeb Service的方法中,所述的服务接口定义是包含接口定义结构描述XSD Schema的XML片段,服务接口定义包含服务接口名称和服务接口参数列表,所述的服务接口参数列表包括传入参数合返回值。
该企业BPM系统中实现业务流程动态生成Wfeb Service的方法中,所述的服务接口定义分析器将业务流程中的服务定义解析为服务对象,具体包括以下步骤(131)所述的服务接口定义分析器在BPM引擎启动过程注入到服务接口元数据模型解析器中;(132)Web界面部署流程时候,服务接口元数据模型解析器调用服务接口定义分析器对服务接口定义XML片段解析为包含服务名称,服务参数列表的Java Bean对象,并且缓 #1 Java Bean X^0该企业BPM系统中实现业务流程动态生成Wfeb Service的方法中,所述的动态 WebService构件装配模块包括服务接口生成器、连接所述的服务接口生成器的服务组件生成器以及连接所述的服务组件生成器的服务组件调度器,所述的动态Web Service构件装配模块和业务流程服务版本控制模块进行业务流程热部署动态生成Web Service操作, 具体包括以下步骤(21)所述的服务接口生成器根据业务流程动态部署触发将服务对象转换为虚拟 Java 接口 ;(22)所述的服务组件生成器加载服务对应的虚拟Java接口、数据类型定义XSD Schema信息,并依据模板创建出该服务组件文件;(23)所述的服务组件调度器对服务组件进行调度,所述的调度包括服务组件部署、发布和销毁;(24)所述的业务流程服务版本控制模块对服务组件版本进行切换,并将发布版本服务组件作为默认服务。该企业BPM系统中实现业务流程动态生成Wfeb Service的方法中,所述的服务组件包含服务装配文件、依赖资源XSD文件和复杂数据类型Acegis文件。该企业BPM系统中实现业务流程动态生成Wfeb Service的方法中,所述的服务组件生成器加载服务对应的虚拟Java接口、数据类型定义XSD Schema信息并依据模板创建出该服务组件文件,具体包括以下步骤(221)所述的服务组件生成器调用服务接口生成器创建的虚拟Java接口作为服务接口 ;(222)所述的服务组件生成器根据服务接口的反射数据类型,判断是否依赖相关的XSD文件,若是,则进入步骤023),若否,则进入步骤0 );(223)服务组件生成器从BPM系统中加载该XSD文件放入服务组件,并进入步骤 (224);(224)服务组件生成器根据服务接口的反射数据类型,判断是否包含List、Set或 Map复杂数据类型,若是,则进入步骤025),若否,则进入步骤0 );(225)服务组件生成器创建描述复杂类型的Aegis文件放入服务组件中,并进入步骤(226);(226)服务组件生成器使用模板资源创建服务组件。该企业BPM系统中实现业务流程动态生成W^eb Service的方法中,所述的灾难恢复模块进行系统故障恢复操作,具体包括以下步骤(31)所述的灾难恢复模块在系统遇到灾难故障需要重启时作为启动Listener检
9查服务组件状态,确定是否启动恢复;(32)所述的灾难恢复模块确定启动恢复之后,调用所述的动态ffeb Service构件装配模块器对系统中故障服务重新生成。该企业BPM系统中实现业务流程动态生成Wfeb Service的方法中,所述的安全控制模块进行业务流程服务安全拦截操作,具体为所述的安全控制模块根据系统配置的用户名和口令对服务请求进行拦截,并禁止未授权用户调用。该企业BPM系统中实现业务流程动态生成Wfeb Service的方法中,所述的Web Service动态生成模块进行业务流程服务接入操作,具体为所述的ffeb Service动态生成模块根据系统配置的用户名和口令对服务请求进行拦截,并禁止未授权用户调用。该企业BPM系统中实现业务流程动态生成Wfeb Service的方法中,所述的动态服务管理模块进行动态服务管理操作,具体为所述的动态服务管理模块对系统内所有的服务组件进行管理。该企业BPM系统中实现业务流程动态生成Wfeb Service的方法中,所述的管理包括查询服务WSDL和统计服务数据。采用了该发明的企业BPM系统中实现业务流程动态生成ffeb Service的系统,其包括业务流程服务接口定义模块、连接该业务流程服务接口定义模块的动态Web Service 构件装配模块,连接该动态W^eb Service构件装配模块的W^eb Service动态生成模块和灾难恢复模块、连接该Web Service动态生成模块的动态服务管理模块和安全控制模块,以及分别与所述的动态Web Service构件装配模块和ffeb Service动态生成模块连接的业务流程服务版本控制模块。利用该系统的业务流程动态生成Web Service的方法,其业务流程具有天然的集成特性,在编排流程的同时发布出Web krvice,并且服务接口标准统一,无需编码。同时增强了系统可移植性和可扩展性,能够快速适应业务需求的变化和技术变化, 能够支撑建立高度模块化而且又高度整合的软件系统,开发期简单,接口明确,配置方便, 运行期效率较高、系统性能稳定可靠,适用范围较为广泛,为BPM系统的集成发展打下了坚实的基础。
图1为本发明的企业BPM系统中实现业务流程动态生成Wfeb Service的系统的结构示意图。图2为本发明的企业BPM系统中实现业务流程动态生成Wfeb Service的系统中的服务动态生成模块的类图。图3为本发明的企业BPM系统中实现业务流程动态生成Wfeb Service的系统中的服务组件生成器的类图。图4为本发明的企业BPM系统中实现业务流程动态生成Wfeb Service的系统中的服务接入模块的类图。图5为本发明的企业BPM系统中实现业务流程动态生成Wfeb Service的系统中的灾难恢复模块的类图。
图6为本发明的企业BPM系统中实现业务流程动态生成Wfeb Service的方法的时序图。图7为利用本发明的方法在企业BPM系统中实现业务流程动态生成Wfeb Service 调用的时序图。
具体实施例方式为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。请参阅图1所示,为本发明的企业BPM系统中实现业务流程动态生成Wfeb Service 的系统的结构示意图。在一种实施方式中,该企业BPM系统中实现业务流程动态生成Wfeb Service的系统包括业务流程服务接口定义模块,用以定义业务流程的ffeb Service接口信息;动态ffeb Service构件装配模块,与所述的业务流程服务接口定义模块连接,用以根据业务流程的Web Service接口信息装配构件;Web Service动态生成模块,与所述的动态Web Service构件装配模块连接,用以加载所述的构件,生成W^eb Service服务,并提供Wfeb Service服务接入处理;动态服务管理模块,与所述Wflfeb Service动态生成模块连接,用以对Wfeb Service进行管理操作;灾难恢复模块,与所述的动态ffeb Service构件装配模块,用以在系统重启时根据系统中的业务流程自动生成W^eb Service ;安全控制模块,与所述的Wfeb Service动态生成模块连接,用以对Wfeb Service服务提供安全保障;业务流程服务版本控制模块,分别与所述的动态Web Service构件装配模块和Web Service动态生成模块连接,用以向所述系统中存在的多版本的业务流程服务提供多版本的动态服务。利用该种实施方式的系统实现业务流程动态生成ffeb Service的方法包括以下步骤(1)所述的业务流程服务接口定义模块进行业务流程编排过程定义服务接口信息操作;(2)所述的动态ffeb Service构件装配模块和所述的业务流程服务版本控制模块进行业务流程热部署动态生成Web Service操作;(3)所述的灾难恢复模块进行系统故障恢复操作;(4)所述的安全控制模块进行业务流程服务安全拦截操作;(5)所述的ffeb Service动态生成模块进行业务流程服务接入操作;(6)所述的动态服务管理模块进行动态服务管理操作。在一种较优选的实施方式中,所述的业务流程服务接口定义模块包括服务接口元数据模型解析器,用以对BPM系统所支持的数据类型进行解析;业务流程服务接口定义配置器,与所述的服务接口元数据模型解析器连接,用以对业务流程定义服务接口的服务名称和服务参数用XML语言进行定义;
11
服务接口定义分析器,与所述的业务流程服务接口定义配置器连接,并连接所述的动态Web Service构件装配模块,用以将服务接口定义转换为服务对象。其中,所述的数据类型为基本类型、复杂类型和XSD类型中的一种或者多种。利用该种实施方式的系统实现业务流程动态生成ffeb Service的方法中,所述的业务流程服务接口定义模块进行业务流程编排过程定义服务接口信息操作,具体包括以下步骤(11)所述的服务接口元数据模型解析器加载系统支持的数据类型,所述的数据类型包括简单数据类型和复杂数据类型;(12)所述的业务流程服务接口定义配置器编排流程并配置服务接口 ;(13)所述的服务接口定义分析器将业务流程中的服务定义解析为服务对象。其中,所述的复杂数据类型为Java Bean, List、Set和Map类型中的一种或者多种。在一种进一步优选的实施方式中,所述的服务接口定义是包含接口定义结构描述 XSDSchema的XML片段,服务接口定义包含服务接口名称和服务接口参数列表,所述的服务接口参数列表包括传入参数合返回值。在利用该实施方式的系统实现业务流程动态生成ffeb Service的方法中,所述的服务接口定义分析器将业务流程中的服务定义解析为服务对象,具体包括以下步骤(131)所述的服务接口定义分析器在BPM引擎启动过程注入到服务接口元数据模型解析器中;(132)Web界面部署流程时候,服务接口元数据模型解析器调用服务接口定义分析器对服务接口定义XML片段解析为包含服务名称,服务参数列表的Java Bean对象,并且缓 #1 Java Bean X^0在另一种优选的实施方式中,所述的动态ffeb Service构件装配模块包括服务接口生成器,连接所述的服务接口定义分析器,根据所述的服务接口定义产生服务虚拟java接口 ;服务组件生成器,连接所述的服务接口生成器,根据所述的服务接口定义创建包含服务和数据类型资源的服务构件包;服务组件调度器,连接所述的服务组件生成器,并连接所述的Web Service动态生成模块,根据所述的服务接口定义对服务组件的部署、发布、销毁进行调度。在利用该实施方式的系统实现业务流程动态生成ffeb Service的方法中,所述的动态WebService构件装配模块和业务流程服务版本控制模块进行业务流程热部署动态生成WfebService操作,具体包括以下步骤(21)所述的服务接口生成器根据业务流程动态部署触发将服务对象转换为虚拟 Java 接口 ;(22)所述的服务组件生成器加载服务对应的虚拟Java接口、数据类型定义XSD Schema信息,并依据模板创建出该服务组件文件;(23)所述的服务组件调度器对服务组件进行调度,所述的调度包括服务组件部署、发布和销毁;(24)所述的业务流程服务版本控制模块对服务组件版本进行切换,并将发布版本服务组件作为默认服务。在进一步优选的实施方式中,所述的服务组件包含服务装配文件、依赖资源XSD 文件和复杂数据类型Acegis文件。所述的服务组件生成器加载服务对应的虚拟Java接口、 数据类型定义XSD khema信息并依据模板创建出该服务组件文件,具体包括以下步骤(221)所述的服务组件生成器调用服务接口生成器创建的虚拟Java接口作为服务接口 ;(222)所述的服务组件生成器根据服务接口的反射数据类型,判断是否依赖相关的XSD文件,若是,则进入步骤023),若否,则进入步骤0 );(223)服务组件生成器从BPM系统中加载该XSD文件放入服务组件,并进入步骤 (224);(224)服务组件生成器根据服务接口的反射数据类型,判断是否包含List、Set或 Map复杂数据类型,若是,则进入步骤025),若否,则进入步骤0 );(225)服务组件生成器创建描述复杂类型的Aegis文件放入服务组件中,并进入步骤(226);(226)服务组件生成器使用模板资源创建服务组件。在另一种较优选的实施方式中,所述的ffeb Service动态生成模块包括服务构件加载器,连接所述的服务组件调度器,用以加载所述的服务构件包;Web Service服务生成器,连接所述的服务构件加载器,通过所述的虚拟java接口生成Web Service服务;Web Service服务接入器,连接所述的ffeb Service服务生成器,并连接所述的动态服务管理模块、灾难恢复模块、安全控制模块和业务流程服务版本控制模块,用以提供 Web Service调用事务的业务处理。在一种更优选的实施方式中,所述的企业BPM系统中实现业务流程动态生成Web Service的方法,具体包括以下步骤(31)所述的灾难恢复模块在系统遇到灾难故障需要重启时作为启动Listener检查服务组件状态,确定是否启动恢复;(32)所述的灾难恢复模块确定启动恢复之后,调用所述的动态ffeb Service构件装配模块器对系统中故障服务重新生成。所述的安全控制模块进行业务流程服务安全拦截操作,具体为所述的安全控制模块根据系统配置的用户名和口令对服务请求进行拦截,并禁止未授权用户调用。所述的ffeb Service动态生成模块进行业务流程服务接入操作,具体为所述的 WebService动态生成模块根据系统配置的用户名和口令对服务请求进行拦截,并禁止未授权用户调用。所述的动态服务管理模块进行动态服务管理操作,具体为所述的动态服务管理模块对系统内所有的服务组件进行管理。所述的管理包括查询服务WSDL和统计服务数据。在本发明的实际应用中,如图2至图7所示,该企业BPM系统中实现业务流程动态生成ffeb Service的系统和方法中,所述的系统结构包括(1)业务流程服务接口定义模块,定义业务流程的服务接口,其中包括(a)元数据模型解析器,负责维护业务流程动态ffeb Service支持的数据类型,包
13括JavaBean对象和XSD用户自定义的类型等;(b)业务流程服务定义接口配置,通过接口定义配置流程的服务接口描述信息,如服务名称,服务参数等;(c)服务接口定义分析器,提供服务接口解析的能力,转换为服务相关的Java对象;(2)服务动态生成模块,与所述的业务流程服务接口定义模块相连接,在流程部署时候动态生成W^eb krvice,其中包括(a)服务生成器,通过结构化定义的服务定义,服务生成器能够模拟出Java接口 ;(b)服务组件生成器,负责为每一个服务组件生成服务组件,以及依赖的资源文件;(c)服务组件调度器,调度服务组件生成之后的发布过程,包括逐出原版本、更新缓存等操作;(d)服务版本控制器,业务流程特殊的版本属性使得流程服务需要版本控制,版本控制器维护当前流程的服务版本。图2为本发明的企业BPM系统中实现业务流程动态生成Wfeb Service的系统中的服务动态生成模块的类图,其中包括ProcessServiceModuleActivator 接口 ModuleActivator 的实现,通过 ExtensionPointRegistry的实例获得系统中已注册的扩展类型,添加扩展点的实现;ProcessDirectProcesser ^ Π StAXArtifactProcessor 的实 1%, i卖 ¢(至Ij composite文件中定义的新的component时,回调read()方法;ModelFactoryExtensionPoint :^ ^^ BSilW AssemblyFactory 与 JavaInterfaceFactory ;AssemblyFactory 用来创建新的服务;JavaInterfaceFactory 用来创建新的 java 接口 ;IProcessServicelmplementation 流程服务的实现,封装基于流程的服务信息;ProcessServiceProviderFactory 接口 ImplementationProviderFactory 的实现,添加运行时信息的扩展点,流程服务的逻辑提供者的工厂,用于实例化逻辑提供者;ProcessServiceProvider 流程服务的逻辑提供者,负责创建具体hvoker ;ProcessDirectInvoker 接口 invoker的实现,流程服务执行器,调用发布的W^eb Service时会回调invoke ()方法。图3为本发明的企业BPM系统中实现业务流程动态生成Wfeb Service的系统中的服务组件生成器的类图,其中包括IModelChangeListener 资源变更监听器接口 ;XSDResourceChangedListener :XSD/Wsdl 资源变更监听器;WorkflowChangeListener 流程变更监听器;DefinitionCacheService 流程定义缓存服务;IMessageStartEventInquire :MessageStartEvent 节查询接□ResourceChangedComponentManager 构件包管理器;ResourceChangedMissionFactory ■/ΜΜ^'Ε ^-ΧΓ ;
ResourceChangedMission 资源变更的构件包生成任务;XSDWSDLResourceChangedMission :XSD/Wsdl 资源变更构件包更新任务;MseffFChangeMission :MessageStartEvent 流程变更构件包更新任务。(3)灾难恢复模块,当系统遇到故障重启之后恢复流程服务时候自动根据故障情况,在BPM系统中生成Wfeb krvice,其中包括(a)服务恢复处理器,判断故障情况在灾难恢复过程动态创建新的业务流程服务,从而实现系统自动恢复;图5为本发明的企业BPM系统中实现业务流程动态生成Wfeb Service的系统中的灾难恢复模块的类图,其中包括IComponentLoad 构件包加载接口 ;ComponentLoadTimer 构件包加载定时器;ComponentLoadTimerTask 构件包加载定时任务。(4)安全控制模块,在上述服务组件生成器创建服务组件时候调用,根据系统安全配置对服务组件增加安全性,其中包括(a)安全控制器,对服务组件的安全控制,支持WS-Security协议;(5)动态服务接入模块,服务调用者调用业务流程服务时候,把ffeb Service调用转换为流程引擎的调度,其中包括(a)动态服务转换器,映射ffeb Service调用为流程引擎的调度操作;图4为本发明的企业BPM系统中实现业务流程动态生成Wfeb Service的系统中的服务接入模块的类图,其中包括Invoker :ffeb Service 月艮务接入接口;DynamicffebServiceInvoker Jnvoker 接口实现,用来处理动态生成的 Web Service服务的接入;Message 调用Web Service服务时传入的参数;IMessageStartEventProcessManager :MessageStartEvent ^fMiWSii Π。(6)动态服务管理模块,提供对系统内动态ffeb Service的管理功能,包括服务查询、服务监控等。基于上述的系统结构可以看出,本发明在设计和实现过程中是服务概念的一种延伸和抽象,把包含业务含义的业务流程抽象出服务的概念,该服务可以直接映射到软件领域的ffebService,基于这种思路做到软件模块化,并且与BPM系统解耦,本发明描述的技术完全可以适应与其他领域,如规则系统、专家系统、决策支持系统等。本发明的核心设计是提供一种动态生成服务的框架,框架负责监听服务生成事件、执行服务生成、维护服务组件等,并且基于此框架实现BPM系统中业务流程的动态服务生成。本发明的实现原理如下BPM系统中是以图形化语言描述业务执行过程,最终形成物理结构为XML文档的业务流程,其中包含流程、活动、属性定义、事件定义等概念,在业内又分为多个标准规范, 如XPDL、BPEL、BPMN等。通常业务流程是通过客户端程序调用API的方式发起流程,流程引擎启动部署的业务流程结合各类资源等,在执行过程中需要流程引擎按照调度算法执行, 在流程运行的不同环节,例如Human I^ask需要人工参与,而krvice Task则通过调用本地Java方法或者Wfeb Service的方式执行活动。从以上业务流程的工作过程,可以抽象出关于业务流程的如下概念1.流程接口 流程接入是BPM系统的入口,即一组可调用的API,包括JavaAPI、 WebService, Restful Web 等形式。2.流程流程是BPM系统执行的基本单元,BPM系统中的流程引擎根据流程定义的分支聚合模式计算流程的迁移路线。3.图元图元是流程中最小粒度的执行单元,流程引擎依据图元上的配置进行不同业务语义的执行;本方法中服务接口定义就是对以上服务接口概念的扩展,通过在业务流程编排过程增加服务接口定义,满足Web Service的技术要求,为动态生成ffeb Service提供事实数据结构来源。在有了事实数据结构来源基础之上,动态生成ffeb Service需要在流程引擎中加入事件监听器,当流程发生变化,例如流程发布、流程取消发布、流程删除等事件产生之后, 事件监听器自动把事件转换为具体的服务创建、服务销毁操作。同时使用监听机制能最大程度上做到软件组件结构解耦,从而能够把本方法抽象为一个动态生成Web Service的框架。另外,通过事件监听机制可以引入异步的服务动态生成,从而提高BPM系统的整体性能。本方法的动态Wfeb Service是以服务组件为物理介质来发布Wfeb krvice,服务组件是一个包含服务描述文件,服务资源文件如Aegis文件,服务安全配置文件的物理存储结构。而不依赖于具体的服务发布技术(服务发布技术并不是本方法重点阐述的内容),如 Aixs2> Apache CXF、Spring WS 等。该基于上述的系统结构BPM系统中实现业务流程动态生成Wfeb Service的方法, 所述的方法包括业务流程编排过程定义服务接口信息操作、业务流程部署动态生成Web Service操作、系统故障服务恢复操作、业务流程服务安全拦截操作、业务流程服务接入操作、动态服务管理操作。所述的业务流程编排过程定义服务接口信息操作,包括以下步骤(11)所述的服务定义接口元数据解析器加载BPM系统中动态流程服务支持的数据类型,包括基本简单数据类型和复杂类型,复杂类型包括Java Bean, List、Set,Map和自定义的XSD数据类型,加载复杂XSD类型包括以下步骤;(a)导入目标XSD,选择本地XSD定义文件或者提供网络URL地址;(b)判断导入类型对应的命名空间内是否已经存在该XSD类型,如果存在,则导入过程失败,为了防止同名XSD类型的冲突。(c)元数据解析器对成功导入的XSD类型建立元数据库。(12)所述的业务流程服务接口定义配置器在编排流程的时候配置服务接口,包括如下步骤;(a)编排业务流程,设置流程使用消息启动事件(BPMN规范描述的Message StartEvent),即确定此业务流程通过消息的方式启动;(b)消息启动事件中定义服务接口名称,例如Account krvice,定义服务接口操作名称,例如operationl ;
(c)设置服务接口参数,从元数据提供的数据类型中选择数据类型,定义参数名称,以及参数类型,包括输入参数列表和输出参数列表;(13)所述的服务接口定义分析器把业务流程中的服务定义解析为服务对象,其中服务定义使用XML片段描述,服务定义规格约束使用XSD Schema描述,所述的服务接口分析器生成的服务对象为Java Bean ;(a)所述的服务接口定义分析器在BPM引擎启动过程注入到业务流程解析器中;(b)当完成业务流程建模和设计,提交部署流程时候,BPM引擎触发业务流程解析器事件,会调用业务流程解析器调用服务接口定义分析器对服务接口定义XML片段解析为包含服务名称,服务参数列表的Java Bean对象,并且缓存该对象;所述的业务流程部署动态生成Wfeb Service操作,包括以下步骤(21)所述的服务生成器把服务对象转换为虚拟Java接口,使用ASM框架,在JVM 中用字节码的方式直接创建Java接口,采用如下转换规则,服务对象中的服务名称转换为 Java虚拟接口的名称,服务对象中的操作名称转换为Java虚拟接口的方法名称,服务对象中的参数列表转换为Java虚拟接口的方法参数。(22)所述的服务组件生成器依据服务对应的虚拟Java接口、数据类型定义XSD khema信息,组件生成器依据模板创建出该服务组件文件,服务组件是可以被服务容器加载并且识别的文件结构;(23)所述的服务组件调度器负责对服务组件调度,包括服务组件部署、激活、发布、销毁等;(a)服务组件调度器对组件生成器创建的服务组件统一调度,组件首先是被部署到指定组件仓库;(b)组件调度器激活目标组件,在激活过程中识别相应的资源文件,例如XSD等交由XSD资源处理器加载;(c)组件调度器对正确激活的组件进行发布,以ffeb Service方式提供出来;24) 所述的版本控制器对服务组件版本进行切换,把发布版本服务组件作为默认服务;所述的系统故障恢复操作,包括以下步骤(31)所述的服务灾难恢复处理器是在系统遇到灾难故障需要重启时,灾难恢复处理器作为启动Listener检查服务组件状态,确定是否启动恢复;(32)所述的服务灾难恢复处理器确定启动恢复之后,调用服务生成器对系统中故障服务重新生成;所述的业务流程服务安全拦截操作,包括以下步骤(41)所述的服务安全控制器根据系统配置的用户名和口令对服务请求进行拦截, 对未授权用户禁止调用;(a)设置启用业务流程动态服务安全性,此设置是全局性设置,即BPM系统中所有的流程采用统一的安全策略,设置服务的用户名和密码;(b)对安全性的修改会触发服务组件的重新部署,规则如下如果启用服务安全性,服务组件调度器扫描BPM系统内的所有服务组件,增加其安全性策略描述。如下描述
17< xml version-Ml.0" encoding-MUTF-8“ >
<compos itexmlns = nhttp//www.osoa.org/xmlns/sca/1.〇“
xmlns:xsd="http://www.w3. org/2 O 01/XMLSchema“ name="com.primeton.workfIowl. workflow"
targetNamespace = "http://www.osoa.org/xmlns/sca/1.〇“xmlns:c="http://crud">
<servicename="ProcessService5"
promote = "Proces sServiceComponen15/primetonWorkflow5">
<binding.ws policySets = "sca 1. O :wsAuthenticationPolicy"/> </service>
〈component name = "ProcessServiceComponent5">
<c : implementation . bprnprocessNaine = ”primetonW〇r kf low5"
ProcessVersiorL=nI .1.1" /> </component> </composite>安全策略定义在Definition, xml文件中设置,配置如下
<sca:policySet name="wsAuthenticationPolicy"
provides = "authentication" appliesTo="sca: service/sca: binding .ws"> <tuscany:wsConfigParam>
〈parameter name="工nfIowSecurity"> <action>
<user>userName</user> <items>UsernameT〇ken</items> <passwordCaIlbackClass>ServerPWCBHandler</passwordCaIlbackClass> <pas swordType>PasswordText</passwordType> </action> </parameter> </tuscany:wsConfigParam> </sca:policySet>如果取消服务安全性,则组件调度器扫描服务组件,把其中的〈binding, ws policySets = “ sca_l. OwsAuthenticationPolicy “ /> i ^ M除。(c)用户安全拦截是通过扩展CalIkickHandler接口实现,对Wfeb Service调用的用户名和口令与之前设置的匹配,如果未授权用户则抛出异常;所述的业务流程服务接入操作,包括以下步骤(51)所述的动态W^eb Service接入模块Qnvoker)负责把与BPM系统无关的Web Service调用转换为BPM系统的本地API调用;(a) Invoker在对W^eb Service请求过程处理过程分析出当前处理的业务流程名称,请求参数等,最终请求业务流程的Message Start Event执行启动流程。
(b) Invoker调用完成之后把返回结果返回到W^eb Service的Response中;(c)如果发生异常,Invoker把异常信息返回到Fault Body中;所述的动态服务管理操作,包括以下步骤(61)所述的动态服务管理模块对系统内所有的服务组件管理,包括查询服务 WSDL、统计服务数据等.(a) BPM系统发布的动态Wfeb Service需要提供一个界面查询当前可用的服务列表,支持用户调用或者与ESB系统的集成等,管理模块提供查询功能。如图6所示,为本发明的企业BPM系统中实现业务流程动态生成W^eb Service的方法的时序图,其时序为1、当在composite配置文件中读取到扩展的配置信息后,会调用 ProcessDirectProcesser 中 read ()方法;2,read ()ProcessServicelmplementationlmpl 的歹ij ;3、设置 ProcessServicelmplementationlmpl 中的流程名;4、设置版本号;5、调用 ProcessServicelmplementationlmpl 中的 build ()方法,创建 Web 月艮务;6、调用 assemblyFactory. createService ()创建 Service 的实例;7、创建krvice的实例;8、设置krvice的实例的名称,也就是对外发布web服务的名称;9、根据流程定义,创建对应的java接口 ;10、通过创建的java接口发布wsdl。本发明中,业务流程服务发布之后,客户端与BPM系统端交互的桥梁是 WSDL (WebService Definition Language),其中包括了以下几个主要元素types——数据类型定义的容器,使用XML Schema来描述数据类型的结构信息。portType——描述服务操作的抽象集合,与Java接口类似。binding——数据传输过程中指定的具体传输协议以及所定义操作的数据格式规范。service——对外提供的服务。operation——对服务中所支持的操作的抽象描述,描述了访问入口的请求/响应消息以及异常的声明。在调用ffeb Service过程中,客户端与服务器端交互的信息为SOAP消息,以XML 格式进行定义,其结构包括了以下几个主要元素SOAP Body——封装了要传递的数据。SOAPHeader——作为传递消息的扩展,可以自由添加。如图7所示,为利用本发明的方法在企业BPM系统中实现业务流程动态生成ffeb Service调用的时序图。在外部系统调用发布的流程的Web服务时, 会回调ProcessDirectInvoker中的invoke ()方法。在invoke ()方法中通过 IProcesskrvicelmplementation接口获取流程名和版本号,通过传入的Message参数获取调用Web服务时传入的参数。之后调用引擎的流程启动接口,启动流程。本发明的BPM系统中实现业务流程动态生成W^eb Service的方法,包括Web界面
19编排业务流程定义服务接口和动态生成Web krvice,所述的方法包括运行期支撑不同数据对象转换扩展的通用框架和开发期数据对象转换的配置格式定义。运行期支撑不同数据对象转换扩展的通用框架包括数据对象转换的配置加载,通过该配置形成数据类型转换的有向图,根据有向图能找到从源数据类型到目标数据类型转换所需的最短路径,同时针对接入服务以及接出服务时提供不同数据对象的转换操作,数据转换时,接口元数据统一用 WSDL进行描述。开发期数据对象转换的配置格式定义包括了针对特定数据类型转换的接口实现以及对转换器的注册。经过以上步骤,业务流程在编排之后无须编码,系统不用重启,不用技术人员开发即生成了 Web krvice,其他系统即可以集成在一起,从中可以得出采用了 BPM系统中实现业务流程动态生成Web Service的方法,使业务流程的开发工作变得简单而高效,不再需要服务封装等,而且对外的业务服务统一,数据类型一致。采用了该发明的企业BPM系统中实现业务流程动态生成ffeb Service的系统,其包括业务流程服务接口定义模块、连接该业务流程服务接口定义模块的动态Web Service 构件装配模块,连接该动态W^eb Service构件装配模块的W^eb Service动态生成模块和灾难恢复模块、连接该Web Service动态生成模块的动态服务管理模块和安全控制模块,以及分别与所述的动态Web Service构件装配模块和ffeb Service动态生成模块连接的业务流程服务版本控制模块。利用该系统的业务流程动态生成Web Service的方法,其业务流程具有天然的集成特性,在编排流程的同时发布出Web krvice,并且服务接口标准统一,无需编码。同时增强了系统可移植性和可扩展性,能够快速适应业务需求的变化和技术变化, 能够支撑建立高度模块化而且又高度整合的软件系统,开发期简单,接口明确,配置方便, 运行期效率较高、系统性能稳定可靠,适用范围较为广泛,为BPM系统的集成发展打下了坚实的基础。在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
权利要求
1.一种企业BPM系统中实现业务流程动态生成Wfeb Service的系统,其特征在于,所述的系统包括业务流程服务接口定义模块,用以定义业务流程的Web Service接口信息; 动态ffeb Service构件装配模块,与所述的业务流程服务接口定义模块连接,用以根据业务流程的W^eb Service接口信息装配构件;Web Service动态生成模块,与所述的动态Web Service构件装配模块连接,用以加载所述的构件,生成W^eb Service服务,并提供W^eb Service服务接入处理;动态服务管理模块,与所述W^feb Service动态生成模块连接,用以对Wfeb Service进行管理操作;灾难恢复模块,与所述的动态Web Service构件装配模块,用以在系统重启时根据系统中的业务流程自动生成W^eb Service ;安全控制模块,与所述的Web Service动态生成模块连接,用以对ffeb Service服务提供安全保障;业务流程服务版本控制模块,分别与所述的动态Web Service构件装配模块和Web Service动态生成模块连接,用以向所述系统中存在的多版本的业务流程服务提供多版本的动态服务。
2.根据权利要求1所述的企业BPM系统中实现业务流程动态生成WfebService的系统,其特征在于,所述的业务流程服务接口定义模块包括服务接口元数据模型解析器,用以对BPM系统所支持的数据类型进行解析; 业务流程服务接口定义配置器,与所述的服务接口元数据模型解析器连接,用以对业务流程定义服务接口的服务名称和服务参数用XML语言进行定义;服务接口定义分析器,与所述的业务流程服务接口定义配置器连接,并连接所述的动态ffeb Service构件装配模块,用以将服务接口定义转换为服务对象。
3.根据权利要求2所述的企业BPM系统中实现业务流程动态生成WfebService的系统,其特征在于,所述的数据类型为基本类型、复杂类型和XSD类型中的一种或者多种。
4.根据权利要求2所述的企业BPM系统中实现业务流程动态生成WfebService的系统,其特征在于,所述的动态Web Service构件装配模块包括服务接口生成器,连接所述的服务接口定义分析器,根据所述的服务接口定义产生服务虚拟java接口 ;服务组件生成器,连接所述的服务接口生成器,根据所述的服务接口定义创建包含服务和数据类型资源的服务构件包;服务组件调度器,连接所述的服务组件生成器,并连接所述的Web Service动态生成模块,根据所述的服务接口定义对服务组件的部署、发布、销毁进行调度。
5.根据权利要求4所述的企业BPM系统中实现业务流程动态生成WfebService的系统,其特征在于,所述的Web Service动态生成模块包括服务构件加载器,连接所述的服务组件调度器,用以加载所述的服务构件包; Web Service服务生成器,连接所述的服务构件加载器,通过所述的虚拟java接口生成 Web Service 服务;Web Service服务接入器,连接所述的ffeb Service服务生成器,并连接所述的动态服务管理模块、灾难恢复模块、安全控制模块和业务流程服务版本控制模块,用以提供Web Service调用事务的业务处理。
6.一种利用权利要求1所述的系统实现企业BPM系统中实现业务流程动态生成 WebService的方法,其特征在于,所述的方法包括以下步骤(1)所述的业务流程服务接口定义模块进行业务流程编排过程定义服务接口信息操作;(2)所述的动态ffebService构件装配模块和所述的业务流程服务版本控制模块进行业务流程热部署动态生成Web Service操作;(3)所述的灾难恢复模块进行系统故障恢复操作;(4)所述的安全控制模块进行业务流程服务安全拦截操作;(5)所述的ffebService动态生成模块进行业务流程服务接入操作;(6)所述的动态服务管理模块进行动态服务管理操作。
7.根据权利要求6所述的企业BPM系统中实现业务流程动态生成WfebService的方法,其特征在于,所述的业务流程服务接口定义模块包括服务接口元数据模型解析器、与所述的服务接口元数据模型解析器连接的业务流程服务接口定义配置器以及与所述的业务流程服务接口定义配置器连接的服务接口定义分析器,所述的业务流程服务接口定义模块进行业务流程编排过程定义服务接口信息操作,具体包括以下步骤(11)所述的服务接口元数据模型解析器加载系统支持的数据类型,所述的数据类型包括简单数据类型和复杂数据类型;(12)所述的业务流程服务接口定义配置器编排流程并配置服务接口;(13)所述的服务接口定义分析器将业务流程中的服务定义解析为服务对象。
8.根据权利要求7所述的企业BPM系统中实现业务流程动态生成WfebService的方法,其特征在于,所述的复杂数据类型为Java Bean, List、Set和Map类型中的一种或者多种。
9.根据权利要求7所述的企业BPM系统中实现业务流程动态生成WfebService的方法,其特征在于,所述的服务接口定义是包含接口定义结构描述XSD Schema的XML片段,服务接口定义包含服务接口名称和服务接口参数列表,所述的服务接口参数列表包括传入参数合返回值。
10.根据权利要求9所述的企业BPM系统中实现业务流程动态生成WfebService的方法,其特征在于,所述的服务接口定义分析器将业务流程中的服务定义解析为服务对象,具体包括以下步骤(131)所述的服务接口定义分析器在BPM引擎启动过程注入到服务接口元数据模型解析器中;(132)Web界面部署流程时候,服务接口元数据模型解析器调用服务接口定义分析器对服务接口定义XML片段解析为包含服务名称,服务参数列表的Java Bean对象,并且缓存该 Java Bean 。
11.根据权利要求6所述的企业BPM系统中实现业务流程动态生成WfebService的方法,其特征在于,所述的动态Web Service构件装配模块包括服务接口生成器、连接所述的服务接口生成器的服务组件生成器以及连接所述的服务组件生成器的服务组件调度器,所述的动态Web Service构件装配模块和业务流程服务版本控制模块进行业务流程热部署动态生成W^eb Service操作,具体包括以下步骤(21)所述的服务接口生成器根据业务流程动态部署触发将服务对象转换为虚拟Java 接口 ;(22)所述的服务组件生成器加载服务对应的虚拟Java接口、数据类型定义XSD Schema信息,并依据模板创建出该服务组件文件;(23)所述的服务组件调度器对服务组件进行调度,所述的调度包括服务组件部署、发布和销毁;(24)所述的业务流程服务版本控制模块对服务组件版本进行切换,并将发布版本服务组件作为默认服务。
12.根据权利要求11所述的企业BPM系统中实现业务流程动态生成W^ebService的方法,其特征在于,所述的服务组件包含服务装配文件、依赖资源XSD文件和复杂数据类型 Acegis 文件。
13.根据权利要求12所述的企业BPM系统中实现业务流程动态生成W^ebService的方法,其特征在于,所述的服务组件生成器加载服务对应的虚拟Java接口、数据类型定义 XSDSchema信息并依据模板创建出该服务组件文件,具体包括以下步骤(221)所述的服务组件生成器调用服务接口生成器创建的虚拟Java接口作为服务接Π ;(222)所述的服务组件生成器根据服务接口的反射数据类型,判断是否依赖相关的 XSD文件,若是,则进入步骤023),若否,则进入步骤0 );(223)服务组件生成器从BPM系统中加载该XSD文件放入服务组件,并进入步骤 (224);(224)服务组件生成器根据服务接口的反射数据类型,判断是否包含List、Set或Map 复杂数据类型,若是,则进入步骤025),若否,则进入步骤0 );(225)服务组件生成器创建描述复杂类型的Aegis文件放入服务组件中,并进入步骤 (226);(226)服务组件生成器使用模板资源创建服务组件。
14.根据权利要求6所述的企业BPM系统中实现业务流程动态生成WfebService的方法,其特征在于,所述的灾难恢复模块进行系统故障恢复操作,具体包括以下步骤(31)所述的灾难恢复模块在系统遇到灾难故障需要重启时作为启动Listener检查服务组件状态,确定是否启动恢复;(32)所述的灾难恢复模块确定启动恢复之后,调用所述的动态ffebService构件装配模块器对系统中故障服务重新生成。
15.根据权利要求6所述的企业BPM系统中实现业务流程动态生成WebService的方法,其特征在于,所述的安全控制模块进行业务流程服务安全拦截操作,具体为所述的安全控制模块根据系统配置的用户名和口令对服务请求进行拦截,并禁止未授权用户调用。
16.根据权利要求6所述的企业BPM系统中实现业务流程动态生成WfebService的方法,其特征在于,所述的Web Service动态生成模块进行业务流程服务接入操作,具体为所述的ffeb Service动态生成模块根据系统配置的用户名和口令对服务请求进行拦截,并禁止未授权用户调用。
17.根据权利要求6所述的企业BPM系统中实现业务流程动态生成WfebService的方法,其特征在于,所述的动态服务管理模块进行动态服务管理操作,具体为所述的动态服务管理模块对系统内所有的服务组件进行管理。
18.根据权利要求17所述的企业BPM系统中实现业务流程动态生成WfebService的方法,其特征在于,所述的管理包括查询服务WSDL和统计服务数据。
全文摘要
本发明涉及一种企业BPM系统中实现业务流程动态生成Web Service的系统,其包括业务流程服务接口定义模块、动态Web Service构件装配模块、Web Service动态生成模块、灾难恢复模块、动态服务管理模块、安全控制模块以及业务流程服务版本控制模块。本发明还涉及利用该系统的业务流程动态生成Web Service的方法。利用本发明的系统及方法,其业务流程具有天然的集成特性,在编排流程的同时发布出Web Service,并且服务接口标准统一,无需编码。同时增强了系统可移植性和可扩展性,能够快速适应业务需求的变化和技术变化,能够支撑建立高度模块化且高度整合的软件系统,开发期简单,接口明确,配置方便,运行期效率较高、系统性能稳定可靠,适用范围较为广泛。
文档编号H04L29/08GK102291464SQ20111025125
公开日2011年12月21日 申请日期2011年8月29日 优先权日2011年8月29日
发明者魏巍 申请人:上海普元信息技术股份有限公司