关闭

组合Web服务业务流程建模工具(CSPM)介绍

标签: 工具web服务soa图形文档visio
2104人阅读 评论(5) 收藏 举报
分类:
 

组合Web服务业务流程建模

        ——BPEL文档图形化生成工具

1 项目背景

1.1面向服务的体系结构(SOA

SOA是一种架构模型,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。

SOA的关键是服务的概念,W3C将服务定义为:服务提供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常会使使用者的状态发生变化,但也可能使提供者的状态改变,或者双方都产生变化

要实现SOA,主要有几个方面:

l        标准化服务的构建。这需要对服务的接口、消息模式、引用参数等等进行明确的规定,使之成为大家所共同遵守的规范。

l        服务的搜索和发现。

l        以单个服务为节点,构建完整的业务流程。

本团队已经开发了一个Web服务执行和搜索引擎,所以接下来的研究目标就是实现一个简单的业务流程建模工具,以更深入的理解SOA

1.2业务流程的描述——BPEL

Web服务的目的是在使用服务标准下在应用程序之间实现互操作。Web服务包括在B2BB2C以及企业应用整合(EAI)等应用领域中,通过松耦合的架构模型来实现异构系统的灵活整合。正如我们所熟知的,SOAPWSDLUDDI等是组成Web服务协议栈的重要规范。SOAP定义了一个实现基本服务互操作的消息传输协议;WSDL则为描述服务提供了语法和规范;UDDI为系统发布服务和发现服务提供了方法和基础设施。通过这些规范,我们就可以建立一个松耦合、有互操作性、独立于特定平台的服务模型。

但系统集成需要的不仅仅只是简单的应用程序之间的互操作,只有当应用程序和业务流程都能能实现复杂的互操作时,Web服务才能实现一个系统集成平台的潜力。为了实现对业务流程的操作,必须有一个统一的描述某个特定流程的语言或者规范,并且这个语言能作为业务流程执行引擎的脚本语言。而这个语言就是BPEL(Business Process Execution Language)BPEL是一门用于自动化业务流程的形式规约语言。 XML文档写入BPEL中的流程能在Web 服务之间以标准化的交互方式得到精心组织。这些流程能够在任何一个符合BPEL规范的平台或产品上执行。 所以,通过允许顾客们在各种各样的创作工具和执行平台之间移动这些流程。

1.3 BPELSOA

与以往任何信息模式相比,面向服务的架构从本质上来说更注重以流程为中心。随着IT组织向着全面部署SOA的方向演进,对于那些需要在SOA应用以流程为中心的组织而言,BPEL至关重要

2 解决方案

2.1基本思想

使用BPEL来描述组合服务业务流程,首先必须要有描述用户所需的各种服务的属性信息,这些信息的获取主要是通过对服务描述文档的解析而获得的。其次才是要弄清服务节点的业务流程关系。

为了使一个没有专业基础的人也能轻松地构建起组合业务流程,Cactus团队设计并实现了一个简单灵活的图形化建模工具——组合Web服务业务流程建模(CSPM­

本工具首先实现的是通过图形的拖拽生成一个代表业务流程管理的流程图,类似于Visio一样的图形建模功能。当然在拖拽形成流程图的时候,可以对生成的节点进行各种操作,包括移动、删除、连线等等。然后我们可以对各个节点一一指定所对应得服务的描述文档(即WSDL文件),并输入必要的属性信息来生成来完成用户的输入。最后用户就可以通过点击生成代码按钮在代码面板上生成BPEL代码。用户还可以在指定路径保存生成的流程图,生成带有描述业务流程的文件,并在下一次使用这个工具时再一次打开保存的流程图。用户在保存的同时还能在相同的路径生成bpel文档,供BPEL引擎读取和执行。

用户在输入属性时,只需通过文件打开对话框来选择描述你想要使用的服务的描述文件,我们的工具就能自动解析服务的所有信息并保存在相应节点的属性中,其中包括用户选择的接口类型、操作、输入和输出变量以及此节点的伙伴链接类型等等。因为我们的工具能够自动解析WSDL文件,最大程度上减少了用户的工作量。

2.2本项目的创新之处

2.2.1图形拖拽与拖动

      图形拖拽与拖动的主要特点有:

1.      通过拖拽生成的图形复杂而美观,这与visio等建模工具生成的图形不一样,那些建模工具生成的图形大多是类似与表格的图形,比较简单,而CSPM生成的图形形象且表现复杂。在该解决方案中主要用到了SWTDND中的DragSourceDragTarget技术亮点是在容器节点中,可以通过拖拽添加子节点,这在目前的图形编辑工具中是很少见。

2.      图形的拖动的算法相当精简,但是实现的效果很好,不但能随这鼠标的移动快速移动,还有很好边界限制。在算法上主要是使用了偏移量这一巧妙的设计,使得主要代码只有几行,这与一些工具通过坐标变换来实现拖动要简单得多。

2.2.2自动获取服务节点属性

现在大多数BPEL的建模工具,都需要用户输入很多关于这个节点的属性。而且这些属性一部分本身就是对所调用的服务的描述,另一部分对一些并不是很重要的属性可以采用自动默认值,最大程度上简化了用户的输入。

对服务节点属性的获取主要是通过对服务描述文档,即WSDL文件解析得到的。我们主要应用wsdl4j对服务进行解析。但由于WSDL本身支持扩展节点,而且标准的发布的服务会通过一些扩展标签来说明它所能担任的服务角色。所以我们才用了wsdl4jdom4j相结合的方式,又由于wsdl4j本身支持DOMSAX模型,所以dom4j的生成的类对wsdl4j而言,能再次利用并不重复。

2.2.3 BPEL文档自动生成

在用户输入完所有节点的属性后,我们的工具就能根据生成的所有节点生成符合流程逻辑的BPEL代码。

在用户通过拖拽形成的业务流程图后,我们就成了一个描述流程信息的图(Graph)的结构。其中包含了所有节点与节点之间的关系信息。我们用广度优先算法对图进行遍历,逐一访问每个节点,最后生成相应的BPEL代码。

2.2.4流程图的保存与重现

大多数的用户会重用以前已经建立的业务流程,或者只是对业已存在的业务流程作少量的修改就能生成一个新的业务流程。所以对建立好的业务流程的保存和恢复就显得很必要了。

我们主要是对保存的节点以及节点所使用的所有组件实现序列化,以对象的形式保存在以”.grh”为后缀的文件中。之后只需读取相应的文件就能生成文件中所描述的业务流程。当然也能重新对流程图进行修改,重新保存,重新生成代码。

3 CSPM总体架构

CSPM的整体架构如图3.1所示,主要分为界面交互层、核心逻辑层以及逻辑控制层。

3.1 CSPM整体架构图

3.1界面交互层

表现层就是展示给用户、与用户交互的工具界面。它主要将界面分为了六个主要部分:节点控制区,主要是一些组成流程图所需的各种类型的节点,包括任务节点、开始节点、结束节点、循环节点、并行节点,分支节点等等,用户通过拖拽将在流程面板区生成相应的节点;节点视图区,在这里自动以树状的结构表示生成的流程图中的所有节点,通过点击树的叶子或者父节点,就能选中相应的流程节点;流程图和代码区,用户通过拖拽在这里生成相应的节点,并通过连线将生成的节点以一定的顺序组织起来,最终形成一个用户想要的流程图,当然在生成流程图的同时能对各节点进行移动、删除等操作,最后用户可以在点击“生成代码”的按钮后,在代码面板上生成BPEL代码;工程文件区,主要显示所新建的项目工程所在的目录以及这个目录下以”.grh””.bpel””.wsdl”为后缀的文件;节点属性区,节点的属性是在这里输入的,在流程图区选中相应的节点后,就可以对其输入相应的属性,之后就可以根据用户输入的属性生成BPEL;工具栏和菜单区,在这里主要有新建、保存、打开、连线以及生成代码等。

3.2逻辑控制层

控制层主要是对表现层的各种操作和事件进行监听,并调用逻辑层的业务逻辑做出相应的处理。对于表现层出现的各种异常和错误,也会及时通知用户。

3.3核心业务层

核心逻辑主要是包括:

l        业务流程及流程节点的生成和删除等操作

l        节点属性的输入和保存以及WSDL文档的解析

l        BPEL代码的生成

l        相关文件的保存和生成

l        文件的读取和流程图的重新生成

这些业务逻辑包含了工具软件的所有实现的主要功能,它独立于表现层和控制层而存在,相互间的通信是通过一些重要的接口而实现的,所以框架的设计具有较大的灵活性,彼此小范围的改动不会影响的其他层。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:71300次
    • 积分:910
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:2篇
    • 译文:0篇
    • 评论:22条
    最新评论