点击这里下载 - 同济大学软件学院
Download
Report
Transcript 点击这里下载 - 同济大学软件学院
大型主机应用上的开放系统和中间件
2011年度教育部-IBM精品课程
同济大学软件学院
唐剑锋
[email protected]
第12章 应用服务流建模将基于3270的CICS应用发布成
Web服务
12.1 为什么要使用服务流建模
许多拥有EIS系统的企业如今都面临着一个问题,他们已经拥有一套久
经考验并且功能完备的系统,但由于这些系统开发的年代久远,与现
在要新开发的系统接口存在较大差异,同时他们并不想重新设计和改
造已有的系统使其接口与新系统的接口相兼容。
所以一个现实的问题就是如何将已有系统的功能无缝的集成到新的系
统中,而不需要对已有系统的接口进行改造。
本章在Web服务的基础上加以拓展,利用Rational Developer for
zSeries的服务流建模工具将基于3270终端的CICS应用发布成Web服务。
和上面讲到的Web 服务所不同的是,这一次我们应用了面向服务架构
(SOA)的理念,将关注点集中在业务流程的建模上。
12.1 为什么要使用服务流建模(Cont.)
根据已有应用的业务逻辑,将其整个或者部分业务流发布成Web 服务,
而不是单单将某一个应用程序的接口发布成Web服务。
特别在实际应用中,用户的程序中可能将一些输入输出的处理与一些
业务流程混杂在一起,我们很难将涉及到业务的接口与输入输出的接
口相分离。
这时利用服务流建模的方式,我们将完全集中于构建一个基于业务流
程的包装应用,由它与前端的应用进行交互,后端通过3270 Bridge的
方式访问原有的应用,这样就无需对已有的程序作任何改动。
12.2 Service Flow Modeler介绍
Service Flow Modeler(以下简称SFM)是Rational Developer for
zSeries自带的一个多功能的建模和部署工具,它支持现代应用建模,
系统移植和复用已有的应用业务流,并且支持基于面向服务架构的建
模。
SFM可以完成如下的功能:
1.业务流建模;
2.截取现存的EIS接口(屏幕或者Communication Area)来生成新的适
用于部署为SOA应用的接口;
3.为SOA接口生成相应的适配器,用来处理请求与响应和数据在服务流
与SOA接口、SOA接口与3270接口之间的转换;
4.将业务流发布成Web服务。
12.2 Service Flow Modeler介绍(Cont.)
SFM将构建好的业务流部署在Service Flow Runtime(以下简称SFR)
的环境中,SFR提供了服务流运行环境。
用SFM部署服务流时,会生成支持服务流的运行代码,例如一些数据转
换程序,业务流处理程序等。同时SFR中包含了一些适配器,这些适配
器是一些可重用的、集成的、暴露给EIS请求的接口。
前端的EIS通过访问适配器来与SFR中部署的服务流程序交互。
SFR支持4种适配器:
1.Distributed Program Link(DPL)适配器
2.Link3270 Bridge适配器
3.Front End Programming Interface(FEPI)适配器
4.WebSphere MQ适配器
12.3 应用Service Flow Modeler构建简单的SOA应用
在EIS系统中,大量地应用了基于3270终端的CICS应用,主要包含了以
下的一些资源组件:
1.应用处理:一些用COBOL或者其他语言编写的核心业务流程处理程序;
2.屏幕定义:定义了一些屏幕的布局、数据域,通常用BMS Map的形式
存放;
3.CICS相关的资源:定义在CICS Region中的Program,Map,
Transaction,File等。
使用SFM可以为CICS Screen-Based应用构建服务流来抽取其中的业务
逻辑而不需要更改以上列出的任何一种资源组件,同时也不需要额外
的编程工作。
为了实现上述要求,在SFM中需要定义:
1.屏幕识别:需要指定屏幕识别的特征和标准,这是因为服务流中的
操作都是针对特定屏幕的,需要将其与特定屏幕一一对应起来;
2.屏幕操作:录制屏幕上的操作,记录输入输出的数据域和执行操作
的动作键;
3.业务流执行:指定执行业务流的适配器类型,基于3270终端的CICS
服务流需要Link3270 Bridge适配器。
本节以下部分将针对如何将一个简单的传统的3270 CICS应用利用服务
流建模的方式发布成Web服务。
这里我们按照SOA开发的基本流程:建模->部署->测试来复用已有的
CICS应用,使整个应用作为Web服务发布出去。
以下是本应用实现的架构,通过服务流建模我们生成基于服务流的适
配器,通过Web服务来调用服务流适配器,而服务流适配器通过CICS的
3270 Bridge来访问基于屏幕的CICS 3270应用。
服务流建模应用的系统架构图如下图12-1所示:
图12-1:服务流建模应用的系统架构图
12.3.1 原始的CICS 3270应用
本应用包含了两个屏幕,第一个屏幕输入用户的账号,第二个屏幕显
示对应此账号的用户信息。启动的Transaction为NKAP。分别如下图
12-2和图12-3所示:
图12-2:屏幕1——输入用户账号
图12-3:屏幕2——显示对应此账号的用户信息
12.3.2 导入屏幕定义,建立屏幕识别特征
我们导入BMS Mapsets的符号Map的定义。根据Map的定义生成屏
幕消息文件。如下图12-4所示:
图12-4:根据导入的符号Map生成的相应屏幕消息文件
此外还需要定义一些屏幕识别的描述符,用来在下面的录制屏
幕过程中SFM Tool可以正确地识别当前的屏幕。
12.3.3 录制SFM流
这一部分是构建本应用的核心。
通过对屏幕的录制,我们是在构建一个可用来发布的商业流程,这里
体现了SOA中以建模为入口的开发方式,通过记录屏幕的操作过程生成:
1.屏幕的输入数据;
2.屏幕的输出数据;
3.对应于屏幕输入数据的业务流输入数据;
4.对应于屏幕输出数据的业务流输出数据;
5.屏幕操作的WSDL文件;
6.业务流操作的WSDL文件;
7.业务流消息;
8.屏幕操作流映射;
9.业务流映射。
下图为录制屏幕过程中的插入数据和抽取数据的动作,它们记录了服
务流的输入和输出。将账号作为输入,LAST NAME作为输出。分别如下
图12-5和图12-6所示:
图12-5:插入数据
图12-6:抽取屏幕数据
12.3.4 生成部署属性文件
通过录制屏幕的操作过程,会生成一个业务流文件,前面提到了,这
里我们用的是基于业务流建模的SOA开发方式,所以我们也基于业务流
对其进行相应的部署。
业务流建模的示意图如下图12-7所示:
图12-7:业务流建模
从图中我们可以看到,这里进行了两种模式的数据映射转换,从请求
数据到业务流数据的转化,以及从业务流数据到3270应用程序的数据
映射。
根据业务流文件生成部署属性文件。这里会指定根据服务流生成的程
序,Transaction ID,服务请求名称和部署的方式(这里用Web服务的
方式部署)。
由于我们的CICS应用是基于3270的,所以还要指定3270网桥的属性。
3270网桥会把Web请求当作对屏幕的操作。
最后我们还要指定Web服务在主机上部署的目录。部署属性文件的示意
图如下图12-8所示:
图12-8:部署属性文件
12.3.5 将生成的业务流代码部署到CICS
根据部署的属性文件,我们会生成Service Flow Runtime的运行时代
码,这里的代码主要有如下几类:
1.服务流处理程序-NKFLPROG,它将我们以上的服务流建模逻辑用
COBOL代码实现;
2.Web服务请求XML数据到COBOL程序的COMMAREA数据结构的转换CVNKFLOD。
我们将生成的代码进行编译,安装到CICS中,同前面讲到的Web服务的
部署相同,我们仍需定义PIPELINE,TCPIPSERVICE。
根据部署属性文件生成的Service Flow Runtime代码的示意图如下图
12-9所示:
图12-9:根据部署属性文件生成的
Service Flow Runtime代码
12.3.6 测试运行场景
下面我们利用Web服务客户机对部署的应用进行测试。
同屏幕上输入的数据一样输入相同的账号,我们得到的返回结果和
3270界面中输出的结果完全一致。测试结果如下图12-10所示:
图12-10:测试结果
参考文献
[1] IBM原版教材,An Introduction to the New Mainframe: z/OS Basics,
2011.3新版
[2] 朱卫东,任素芹编著,MVS操作系统用户指南,中国铁道出版社,1996.12第一
版
[3] 龙涛 王晓冬等,IBM S/390系统管理基础,浙江大学出版社,2000.8第一版
[4] (美)Carol Baroudi著,COBOL从入门到精通,电子工业出版社
[5] IBM内部人员撰写,DB2 Universal Database Programming Workshop for
z/OS,IBM原版教材
[6] CICS 2.3 Intercommunication Guide,IBM Corporation,1998.
[7] CICS 2.3 External Interfaces Guide,IBM Corporation,1998.
[8] CICS 2.3 Internet Guide on z/OS,IBM Corporation,1998.
[9] CICS 2.3 Family Communicating from CICS on System,IBM Corporation,
1999.
[10] CICS TS 3.1 Implementing CICS Web Services,IBM Corporation,2000.
[11] CICS Transaction Gateway for z/OS Version 6.1,IBM Corporation,
2000.
[12] 《J2EE服务器端高级编程》,(美)Subrahmanyam Allamaraju 等编著,闻道
工作室译,机械工业出版社,2000.