在Node.js应用中调用CICS JSON web service

Posted 三言两语CICS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Node.js应用中调用CICS JSON web service相关的知识,希望对你有一定的参考价值。

Node.js应用与传统的CICS应用不同,它基于的是javascript和异步编程理念。对于经验丰富的Node.js开发者而言,在CICS上开发Node.js应用和在别的平台上类似——开发和调试技能是共享的,NPM模块的使用也是一样的。CICS还为Node.js开发者提供了从Node.js应用中调用CICS service的API——ibm-cics-api。


在这篇文章中,我们将向大家介绍这个API,并以CICS JSON web service为例,向大家展示如何在Node.js应用中调用CICS service。

01

ibm-cics-api简介

ibm-cics-api是CICS提供的一个新的Node模块,它对外提供JavaScript API来调用CICS service。


CICS并不是将CICS service的EXEC CICS commands、 transaction、security context等直接对外暴露给Node.js应用;而是将CICS应用封装成CICS web service,让Node.js应用通过CICS web service的URI来访问CICS应用。


ibm-cics-api里包含了部署成CICS web service的CICS应用的URI。当用户调用这个API的时候,CICS查找这个URI所关联的URIMAP,在CICS里启动一个新的task来启动并最终运行CICS 程序。


 

ibm-cics-api提供了三个参数:

  1. URI(字符串格式)

    标识已有的CICS web service,对应CICS里的URIMAP,将被映射成对应的WEBSERVICE、PIPELINE和后台的CICS程序。

  2. Request data(JavaScript Object或者字符串格式)

    向CICS web service发送的请求数据,数据格式必须是JSON。

  3. 回调函数

    Node.js 应用调用CICS web service时,其对应的CICS程序执行完后返回Node.js时所执行的函数,遵循Node.js的异步函数模式。如果没有定义回调函数,则需要使用.then的方式调用Promise的异步处理功能。

    回调函数传递两个参数:

    1. error object:如果请求成功则返回null,反之则返回JavaScript的Error object。

    2. response object:由CICS web service返回的响应信息。

更多关于ibm-cics-api的信息,请访问ibm-cics-api 1



02

ibm-cics-api使用实例

下面我们将通过一个简单实例来介绍如何在Node.js应用中调用本地的CICS JSON web service。


系统环境要求:

  • CICS TS V5.5

  • CICS Explorer V5.5


在Node.js应用中调用本地的CICS JSON web service分为四步:

  1. 将已有的CICS应用部署成本地的CICS JSON web service。

  2. 在Node.js程序中使用ibm-cics-api调用CICS JSON web service。

  3. 通过CICS bundle将该Node.js应用部署到CICS。

  4. 向Node.js应用发送POST请求,测试调用是否成功。


Step 1

将已有的CICS应用部署成本地的CICS JSON web service


在本例中,我们将在CICS中安装使用C程序L2JC01。该C程序会对input数据进行处理,并放入service request 应用共享的container DFHWS-DATA中,以供Node.js应用从中获取转换后的数据。我们将通过Node.js应用来访问CICS中的程序L2JC01。


首先,我们使用批量处理程序DFHLS2JS和程序的copybook L2JC01C来创建wsbind文件。然后,我们基于wsbind文件通过定义PIPELINE的方式自动创建web service和URIMAP。此处需要注意的是:

  1. 在PIPELINE的配置文件里,URI定义为/cics/L2JC01,不带网络端口号信息;

  2. 无需在CICS中创建TCPIPSERVICE。

在Node.js应用中调用CICS JSON web service
在Node.js应用中调用CICS JSON web service
在Node.js应用中调用CICS JSON web service
在Node.js应用中调用CICS JSON web service
在Node.js应用中调用CICS JSON web service

Step 2 

在Node.js程序中使用ibm-cics-api调用CICS JSON web service


该Node.js程序的主要功能是通过ibm-cics-api传递JSON格式的数据给CICS JSON web service,调用CICS JSON web service,并输出CICS JSON web service的响应。此处cics.invoke的URI参数为http://<host>/cics/L2JC01,对应Step 1中定义的CICS JSON web service。

在Node.js应用中调用CICS JSON web service

Step 3 

通过CICS bundle将该Node.js应用部署到CICS


详细步骤参见《》的介绍,此处略过。

在Node.js应用中调用CICS JSON web service
在Node.js应用中调用CICS JSON web service

 

Step 4

向Node.js应用发送POST请求,测试调用是否成功


最后,我们向Node.js应用http://<host>:<port>/L2JC01发送POST请求,可以看到其输出了CICS应用L2JC01的响应消息。至此,我们就完成了Node.js应用对CICS JSON web service的调用。

 

在Node.js应用中调用CICS JSON web service
在Node.js应用中调用CICS JSON web service


此外,CICS还提供以Rest API的方式调用CICS service,我们将在后续的文章中介绍。更多关于CICS TS V5.5对Node.js应用的支持,欢迎访问CICS Developer Center 2


 1 https://bit.ly/2SalXMT

 2 https://ibm.co/2R5QT3o 


tangththATcn.ibm.com

2018年6月加入IBM CICS团队。目前主要从事CICS Java和Node.js相关的开发测试工作

替换AT为@


扫码关注 “三言两语CICS”


内容声明:本文仅代表作者的个人观点,与IBM立场、策略和观点无关。文中专业名词因翻译原因,表述中难免存在差异。如有疑惑,请以英文为准。同时数据来源于实验室环境,仅供参考。如果您对我们的话题感兴趣,请给我们留言。


以上是关于在Node.js应用中调用CICS JSON web service的主要内容,如果未能解决你的问题,请参考以下文章

在 node.js 中调用函数

COBOL 中的 CICS 程序堆栈

在 Node.js 中,模块如何从应用程序的 package.json 中获取数据?

[Node.js]模块

node js 模块系统

Node.js模块系统