一种基于统一建模的自动化服务管理方法与流程

文档序号:21550380发布日期:2020-07-21 10:55阅读:95来源:国知局
一种基于统一建模的自动化服务管理方法与流程

本发明涉及一种基于统一建模的自动化服务管理方法,属于软件技术领域。



背景技术:

在软件开发中,通常会有多种第三方提供的工具、服务被使用。通过集成这些工具和服务,能够提升软件开发的质量和效率。然而由于工具、服务往往由不同开发商提供,集成中很难共享数据和统一管理。服务集成的目标是将三方服务与工具集成到同一系统中使用。在集成过程中,系统能够满足不同类型的工具、服务接入的需求,不需要更改自身的代码。集成后,系统能够复用三方工具的页面以及它所提供的服务,减少开发、集成的工作量。也可以根据特定的业务需求,将服务组合后提供给用户使用。进行系统集成时,由于工具、服务通常有着不同的系统设计、数据标准、传输机制等原因,其互相之间的通信、集成较为困难。为了解决这个问题,在服务集成系统中引入了企业服务总线esb,为不同的工具、服务间提供一个通信的桥梁。系统的集成分为服务的集成和工具的集成两种情况。当集成三方服务时,首先将服务接入esb,通过esb提供的通信协议、数据格式转换功能,形成新的服务提供给系统使用。该过程中,需要向esb提供其能够识别、使用的配置文件。配置文件中包含了服务的输入输出、地址等信息。当集成三方工具时,除了将工具所提供的服务接入esb外,还要将使用工具所需的必要信息如用户名密码、工具的地址等提交给系统,以便系统复用该工具的页面。现有esb系统所提供的集成方法并不能较好地满足服务集成系统的需求,具体问题如下:1)esb配置文件的格式和内容复杂,对用户不友好。配置文件包含许多esb内部组件,如数据格式转换模块等。这类组件和接入服务并不直接相关。另外如果配置错误,用户需要花费时间来检查和调试。2)由于工具、服务的种类众多,集成中需要针对其不同的设计、架构,编写不同的集成模块,这将花费大量的时间。3)集成系统不支持热部署功能,导致在集成工具、服务过程中,系统无法使用。只有在集成完成后,重新启动系统,才能够使用新的工具和服务。



技术实现要素:

本发明的目的:针对上述问题,本发明提出了面向服务集成的自动化服务注册方法。

本发明的原理:该方法定义了一个能够表达接入工具、服务信息的模型,利用该模型自动化的完成注册工作。

本发明技术解决方案:一种方法,其特点在于实现步骤如下:

第一步,从实际的工具、服务中抽象出一个较为通用的服务描述模型,其能够表达工具、服务的集成信息,以及它们的设计、架构差异;

第二步,设计自动化注册方法,利用上述模型所含有的数据完成服务、工具的注册,并保证系统能够使用它们。

本发明与现有技术相比具有如下优点:该方法能够读取、解析sdmodel,并将其转换为对应esb系统的配置文件,通过热部署的方式使其生效。由于sdmodel能够较为通用表达服务、工具的信息,该方法具有一定的普适性。此外,方法提供了错误检测和恢复机制,保证了集成系统可以从错误状态中恢复。该方法已经在软件开发可信证据采集平台中实现,并取得了良好效果。

附图说明

图1为采集平台架构。

具体实施方式

以下结合具体实施例和附图对本发明进行详细说明,如图1所示,本发明实施例方法流程:

由于工具和服务的数量众多,为每一个都设计特定的注册方法将耗费大量的时间,因此需要根据实际使用的软件开发工具、服务,抽象出一个较为通用的服务描述模型sdmodel。

sdmodel包含了拟接入的三方服务和工具信息。首先使用sdmodel关键字来定义模型。所有接入工具、服务等等信息都将写在这个关键字之中。1)三方服务:对于待集成的三方服务集合,使用服务集合(services)来描述。对于其中的某项具体服务,使用服务(service)来描述。三方服务包括了服务描述、服务协议、输入、输出、期望输出几部分。服务描述:包括了服务名称(name)、简要描述(description)和服务地址(address)三方面的信息。这里地址应当包括协议和地址两部分。服务协议:使用protocol关键字。服务的数据经过esb处理后,需要再次提供给其他模块使用,如果用户想在这里改变数据传输的协议,应该使用protocol关键字。如果没有,则默认为服务地址中的协议。输入:使用input关键字,描述服务的输入参数。由于输入中可能包含了若干的参数,定义param关键字来描述这些参数。每个参数由参数名称(name),参数格式(param-format)和参数取值(param-value)几部分组成。参数格式取值如xml、object等。如果参数取值为空,则表示该参数将在esb运行中传入。输出:使用output关键字,描述服务的输出结果。由param关键字描述,但是不包含参数取值。期望输出:使用expect-output关键字,描述用户希望通过esb处理后输出的结果。由param关键字描述,但是不包含参数取值。2)三方工具:三方工具由两部分信息组成,一是工具自身的信息,如账户、工具地址等;二是工具提供服务的信息。使用工具(tool)描述用具定义的开始和结尾。工具描述:包括了工具名称(name)、简要描述(description)和工具地址(address)三方面的信息。工具认证:用tool-access关键字描述,定义三方工具账户信息,其中可以包含多个账户(account)。每个账户中提供工具的用户名、密码。和服务的输入输出类似,账户中使用参数(param)来描述具体的用户名和密码。此外,对于b/s架构的工具,还可以添加工具的登录信息,如工具的登录的地址,来帮系统进行单点登录操作。工具服务:表示由工具提供的若干服务。该部分和三方服务集合(services)类似。不同的是这些服务可能没有具体的地址,故可以不配置地址(address)。

为了让自动化注册方法实际工作,需要:1)定义sdmodel,描述待集成的工具和服务;2)模型解析模块,用于解析sdmodel,生成esb能够识别、使用的配置文件;3)服务信息模块,保存工具、服务的信息以及esb的配置文件备份;4)esb配置模块,将生成的配置文件部署到运行中的esb中,并保证esb的正确运行;5)服务管理模块,向应用层提供已经集成的服务,同时控制esb配置模块进行部署操作;6)可视化模块,帮助用户生成sdmodel。具体为:

1)模型解析模块:解析模块首先会接收用户上传的sdmodel,然后会验证其正确性。为了便于sdmodel的解析和验证,这使用了jaxp(javaapiforxmlprocessing)。jaxp是一套用来处理xml文档的api。其中包括了javax.xml.validation、javax.xml.parsers等多个包(package)。验证分为两个阶段:第一阶段通过javax.xml.validation包来验证sdmodel是否符合标准xml文件的格式;第二阶段验证sdmodel的完整性,如<tool>中是否含有<address>信息,<param>中是否遗漏了<param-format>等。如果模块发现sdmodel有错误,则模块不会进行下一步的esb配置文件生成工作。同时,会将具体的错误信息返回给用户。该模块避免了用户错误填写配置文件后,系统的不能正常运行问题,也减少了进行错误的排查修正的时间。而后,利用javax.xml.parsers包解析sdmodel。将解析出的数据写成esb的标准配置文件。根据esb的不同,其配置文件的格式也不同。为了解决这个问题,模块对常见的esb配置文件进行单独处理,并且维护其配置文件的格式信息。如muleesb的配置文件开始和结束的标识为<mule></mule>,且通过xmlns来关联需要的其他xml文件。随后,该文件将会发送至esb配置模块。另外,sdmodel还包含的工具、服务信息,如服务所需要的输入输出、是否需要格式的转换等,将会被储存起来,供服务管理模块查询使用。

2)esb配置模块:为了达到集成系统的热部署功能,同时保证esb的正常运行,esb处理模块会有三个主要的功能:(1)服务地址管理模块。当新的服务接入到集成系统中后,需要为其分配相应的服务地址。该模块维护一个地址池,该地址池由集成系统管理员根据拥有的ip段进行分配。地址池按顺序为新的服务和工具分配ip,同时回收不再使用、注销的服务的ip。(2)热部署模块。esb配置文件生成后,需要把该文件部署到esb运行环境中。对于一些esb,如synapse,只需将该文件放入运行环境下;而对于mule,需要将配置文件打包为发布版后,再放入运行环境。随后重启esb系统(根据esb的不同,处理方式稍有差别,如muleesb不用重启便可完成新服务的部署,而synapse需要重启),使新的服务和工具生效。这里使用脚本来控制esb的启动、停止等工作。模块首先会判断用户所使用的操作系统。在linux/mac系统下采用shell脚本;在windows系统下则采用bat脚本。另外,由于可能出现的网络异常、配置文件错误、esb系统异常等原因,部署可能会失败。因而每次部署前,应当保存当前esb上正常运行的配置文件。部署失败时,向状态保存模块请求恢复之前的状态。(3)状态保存模块。由于esb在部署过程中可能出现的异常情况,在每次热部署之前,该模块会记录下当前esb系统中的配置信息。如果系统发生了错误,本模块会负责取回最近一次的信息进行恢复。同时,还应该提醒用户部署发生错误,以及错误原因。通过esb配置模块,当集成系统接入新的工具和服务时,不再需要重启整个系统,保证了用户的使用。

3)服务信息模块:服务信息模块将会主要保存三部分信息:(1)用户管理数据,用于记录用户的信息,如用户名、密码等。(2)工具、服务的注册数据。这部分信息将会用于服务管理模块的查询和变更工作。当集成系统需要多个工具的单点登录功能时,该部分还会记录工具的登录地址等信息,以便集成系统模拟登录取回工具的cookie。(3)状态保存信息。该模块负责维护esb的配置文件,以及esb是否正常工作等数据。通过设置时间间隔,模块将定时从esb抓取当前系统的运行信息。部署失败时,模块将取出最近一次正常工作的配置文件,以便esb系统恢复运行。

4)服务管理模块:该模块主要包含了两个功能:(1)服务查询模块。当应用层模块需要调用esb上的服务时,会首先向该模块发出申请。模块查询esb是否存在该服务,以及该服务运行是否正常,然后把查询的结果返回给应用层模块。最后应用层模块会根据该结果决定是否对服务发起http或是其他协议的请求。例如bugzilla提供的getbugbyid服务,由于该服务的协议是http,应用层将会对该服务的地址发起http请求。在请求中包含有服务需要的参数bugid。esb响应请求后,从bugzilla查找bug数据,最后把该bug返回给应用层。此外,每次部署新工具、服务成功后,模块会向应用层模块发出消息,通知其可以使用这些工具和服务。(2)服务变更模块。当用户不再需要某个服务或是想对服务做出修改时,该模块会对保存的服务信息做出相应的变更。如注销getbugbyid服务,该服务的数据则会被删除。同时模块会定位该服务所属的esb配置文件,在该文件中去除不需要的服务项,最后通知esb配置模块,重新部署更新后的esb配置文件。

5)可视化模块:对于用户来说,手动编写sdmodel仍有一定的难度,因此可以根据具体集成系统的需求,为用户提供两种方式完成注册:(1)对话输入框的方式,引导用户填写注册信息。(2)直接上传包含有接入工具、服务信息的sdmodel。此后所有的工作由模块自动完成。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1