| By GVB Subrahmanyam, Girish Mokhasi, Sree Kusumanchi | Article Rating: |
|
| February 10, 2009 01:20 PM EST | Reads: |
2,213 |
Web services have opened opportunities to integrate the applications at an enterprise level irrespective of the technology they have been implemented in. IBM's CICS transaction server for z/OS v3.1 can support web services. It can help expose existing applications as web services or develop new functionality to invoke web services.
One of the commonly used protocols for CICS web services is SOAP for CICS. It enables the communication of applications through XML. It supports as a service provider and service consumer independent of platform and language. SOAP for CICS enables CICS applications to be
integrated with the enterprise via web services as part of lowering the cost of integration and retaining the value of the legacy application. SOAP for CICS also comes along with the implementation encoder and decoder. This article describes two cases where CICS acts as a service provider and also as a consumer for complex datatype objects. CICS SOAP 1.2 is the SOAP implementation and encoding and decoding is done by the PIPELINE programs. Two exclusive PIPELINEs need to be defined, one for the provider and the other for the consumer.
IBM provides CICS Web Services Assistants, namely, DFHLS2WS and DFHWS2LS. The DFHLS2WS utility takes a language data structure used by the service provider and generates the WSDL and WSBIND files. The WSBIND file is used at runtime to convert a SOAP body to a language data structure and vice-a-versa. The DFHWS2LS takes the WSDL provided by a service and generates the language data structure and a WSBIND file. Complex data types are handled by these utilities. The languages supported by these utilities include COBOL, Java, C++, and PL1. The web services are registered in the CICS region using the PIPELINE SCAN command (see Figure 1).
CICS as a Service Consumer - Handling Multiple Result Sets
The application is a Flight Inquiry. The input screen has the Departure and Arrival cities along with the departure date. This invokes a Java web service, which does a query on an Oracle database to retrieve all the flights between the cities on that date. The result is a varying list of flights between different city pairs.
The high-level steps followed in the coding are:
- Received the WSDL file for the service to be consumed. Appendix A has the WSDL.
- Used the Web services assistant, DFHWS2LS, to create the request and response copybooks using the WSDL. Set the PGMINT parameter to CHANNEL as we do not know the size of the data being returned. This will help overcome the COMMAREA size limitations in case we receive a huge amount of data. Appendix B has these copybooks.
- Did a PIPELINE SCAN on the pipeline, which has been defined to be used when the CICS is a web service consumer.
- Coded a program to capture inputs and pass them to a wrapper that invokes the web service and creates a TSQ containing the response received. Display program reads the TSQ and displays data.
Figure 2 is the input screen shot of the sample application.
Extracting values from the result sets received is a little tricky. The first GET CONTAINER gives us the number of result sets received; two in the example below and the name of a container, which further contains container names of the result sets. The next GET CONTAINER gets us all the container names, which store the actual values. Then we loop through these container name and value pairs to get finally to the data to be displayed.
The first GET CONTAINER gets the name of the container which has container names containing the data:
EXEC CICS GET CONTAINER
CONTAINER (‘DFHWS-DATA ‘)
CHANNEL (‘FLTDTLS-CHANEL ‘)
INTO (‘....DFHPI00000000000')
FLENGTH (20)
NOHANDLE
The above result in HEX:
EXEC CICS GET CONTAINER
CONTAINER (X'C4C6C8E6E260C4C1E3C1404040404040')
CHANNEL (X'C6D3E3C4E3D3E260C3C8C1D5C5D34040')
INTO (X'00000002C4C6C8D7C9F0F0F0F0F0F0F0F0F0F0F0') 2 total result sets received
FLENGTH (X'00000014')
NOHANDLE
The second GET CONTAINER gets all the container names containing actual data. There is no demarcation between result sets. The container names are just a bunch of sequenced names.
EXEC CICS GET CONTAINER
CONTAINER (‘DFHPI00000000000')
CHANNEL (‘FLTDTLS-CHANEL ‘)
INTO (‘....DFHPI00000000001.... DFHPI00000000002.... DFHPI00000000003....'...)
FLENGTH (360)
NOHANDLE
The above maps to the complete XML output as shown below. Each of the DFHPI* is the container name of the actual data element, e.g., <airways>, <arrivalDate>, <capacity>, etc., in the file
We then loop through the GET CONTAINERS to get actual data. In our case, each result set contains nine elements (airways, arrivalDate, capacity, departureDate, flightFrom, flightNo, flightTo, flightTravelCode and price, refer to the XML output, between <return> </return>). Hence one loop goes through nine GET CONTAINERS.
EXEC CICS GET CONTAINER
CONTAINER (‘DFHPI00000000001')
CHANNEL (‘FLTDTLS-CHANEL ‘)
INTO (‘SPICE'...)
FLENGTH (255)
NOHANDLE
The above maps to the XML output of <airways>SPICE</airways>
EXEC CICS GET CONTAINER
CONTAINER (‘DFHPI00000000002')
CHANNEL (‘FLTDTLS-CHANEL ‘)
INTO (‘2008-06-28T19:45:00+05:30')
FLENGTH (32)
NOHANDLE
The above maps to the XML output <arrivalDate>2008-06-28T19:45:00+05:30</arrivalDate> and so on and so forth till end of data.
This way of using complex datatype objects of an advanced Java application can be used by a legacy system as a consumer of service will have a greater advantage of leveraging the concept of web services for legacy systems.
Listing 1 is the XML output from the SOAPSonar web-services testing tool with the inputs mentioned in Figure 2. Please note that this is just to understand the output structure. When the communication happens directly between the provider and the consumer, we do not see this output.
Figure 3 is the output screenshot of the sample application.
CICS as a Service Provider - Creation of an Order ID
The application stores order details in a DB2 database on the mainframe and creates an order ID for the orders received through the external application(s). This service on the z/OS mainframe is tested through a Java application in the Windows environment. The result is an Order ID (unique number) of the order been placed.
The high-level steps followed in the coding are:
- Created the language structure (COBOL request copybook) for the service to be developed.
- Used the web services assistant, DFHLS2WS, to create the WSDL. Used the PGMINT =COMMAREA. Appendix C has the copybook.
- Scanned the inbound pipeline, which has been defined to be used when the CICS is a web service provider.
- Coded a program to receive input from the service consumer, inserts the order details and a unique order ID in the database, and returns the order UD to the service consumer.
The following are the steps involved in the web service testing. Rows from the DB2 table ORDER_DETAIL:
---------+---------+---------+--SELECT * FROM UCHB002.ORDER_DETAIL;
---------+---------+---------+--
ORDER_ID PRODUCT_CODE PRODUCT_DESC PRODUCT_PRICE PRODUCT_QTY
---------+---------+---------+--
DSNE610I NUMBER OF ROWS DISPLAYED IS 0
DSNE616I STATEMENT EXECUTION WAS SUCCESSFUL, SQLCODE IS 100
---------+---------+---------+--
The XML output from the SOAPSonar web services testing tool with the above inputs (see Figure 4). Please note that this is just to understand the output structure when the communication happens directly between the provider and the consumer (see Figure 5).
Rows in the DB2 table ORDER_DETAIL:
---------+---------+---------+---------
SELECT * FROM UCHB002.ORDER_DETAIL;
---------+---------+---------+---------
ORDER_ID PRODUCT_CODE PRODUCT_DESC PRODUCT_PRICE PRODUCT_QTY
---------+---------+---------+---------
1 Soap Dove 55.00 10
1 Oil SunFlower 99.00 2
DSNE610I NUMBER OF ROWS DISPLAYED IS 2
DSNE616I STATEMENT EXECUTION WAS SUCCESSFUL, SQLCODE IS 100
---------+---------+---------+---------
Conclusion
With the increasing demand for integration of enterprise applications with complex data type structures that have an advantage for manipulating large and complex data, developers have looked at various options one of which is web services. In this article, we have developed a CICS-based program to act as web service provider and consumer using complex data types.
References
- http://www.redbooks.ibm.com/abstracts/sg247126.html
- http://www-306.ibm.com/software/htp/cics/soap/
- http://webservices.sys-con.com/read/39850.htm
- http://publib.boulder.ibm.com/infocenter/idshelp/v10/index. jsp?topic=/com.ibm.ddi.doc/ddi168.htm
- http://www.onjava.com/pub/a/onjava/excerpt/jsoap_5/index1.html
Published February 10, 2009 Reads 2,213
Copyright © 2009 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By GVB Subrahmanyam
As an Application Developer, Lead, Project Manager, and Development Manager and Delivery Manager in a wide variety of business applications as part of IT service provider, I am into delivery of solutions with most of the time with Banking/Finance domain/Supply Chain mgmt in the areas of Order to Cash, Procure to Pay, Inventory management, Structured products of financial systems, Post equity settlement and financial derivative confirmations. Major focus areas are Development, Delivery and Sustenance of IT Applications in Supply Chain/Insurance/Banking/Finance. Albeit most of my projects are Java based assignments, I am technology agnostic. In the current role, I am working as solution provider for Commercial Healthcare, Insurance, banking and Financial systems. I am also PMI Volunteer for OPM3 standard as this will help to understand latest process standards being adopted by PMI. Well, I have M.Tech. and Ph.D. from IIT Kharagpur in the area of Chemical Technology, India and MS in Software Systems from BITS Pilani. I am also PMI certified PMP. It is interesting that I have gone through one year program of Executive Program in Business Management from IIM Calcutta which has given me in sight into some of the management fundamentals and understanding concepts.
More Stories By Girish Mokhasi
Girish Mokhasi is technical architect for Legacy Transformation Group in Satyam Computer Services.
More Stories By Sree Kusumanchi
Sree Kusumanchi is lead architect with the Legacy Transformation Group in Satyam Computer Services and has a masters in technology from BITS Pilani.
- The Top 150 Players in Cloud Computing
- Commercial vs Federal Cloud Computing
- Why IBM’s Server Chief Got Busted
- Industry Experts Discuss the State of Cloud Computing
- Cloud Expo New York Call for Papers Deadline December 15
- Cloud Computing on Gartner's Top 10 List and SYS-CON Events' 2010 Calendar
- US Federal Government is Major Cloud Computing Innovator
- Google Wave
- Ulitzer.com Named Exclusive "New Media" Sponsor of Cloud Computing Conference & Expo
- Tactical Cloud Computing Panel at 1st Annual GovIT Expo
- Adaptivity & Cloud Computing: Exclusive Q&A with CEO Tony Bishop
- 4th International Cloud Expo: Photo Album
- The Top 150 Players in Cloud Computing
- SYS-CON.TV: Cloud Computing Expo Power Panel
- Commercial vs Federal Cloud Computing
- Why IBM’s Server Chief Got Busted
- 1st Annual GovIT Expo: Letter from the Technical Chair
- Deputy CIO of the CIA to Keynote 1st Annual GovIT Expo
- Industry Experts Discuss the State of Cloud Computing
- SOA World Power Panel on SYS-CON.TV
- CIA was Headed to an Enterprise Cloud All Along: Jill Tummler Singer
- 1st Annual Government IT Conference & Expo: Themes & Topics
- Cloud Expo New York Call for Papers Deadline December 15
- Stock in Focus: Dragon Capital
- The i-Technology Right Stuff
- Who Are The All-Time Heroes of i-Technology?
- Get the Message
- Where Are RIA Technologies Headed in 2008?
- i-Technology Viewpoint: Is Web 2.0 the Global SOA?
- i-Technology Viewpoint: Thinking Outside the VC Box
- ESB Myth Busters: 10 Enterprise Service Bus Myths Debunked
- i-Technology Viewpoint: When to Leave Your First IT Job
- SOA Web Services Edge Conference Coverage on SYS-CON.TV
- Five Reasons Why Web 2.0 Matters
- SYS-CON.TV's "SOA Web Services" and "Enterprise Open Source" Programs To Air in December
- SOA World Conference & Expo SYS-CON.TV Power Panel Live From Times Square









There are a variety of applications that supp...























