调用 CICS 服务

您可以使用 ibm-cics-api 模块中的调用函数来调用 CICS® 服务。 Node.js 具有两种用于异步活动,回调函数和 promise 的常用机制。 可以使用任一方法。

如果 Node.js 应用程序正在 CICS 中运行,那么调用请求会导致 CICS 启动新任务以运行目标 JSON 服务; 数据将以 JSON 格式在应用程序与 CICS 之间传递,然后将响应返回到应用程序。 以下示例具有公共启动,然后具有两个用于调用 CICS 服务的选项。 您可以使用回调函数,也可以使用 promise。
const cics = require('ibm-cics-api');

let uri = "http://myzos.example.com/exampleApp/json_inquireCatalogWrapper";
let requestData = 
{
"inquireCatalogRequest": 
    {
    "startItemRef": 10,
    "itemCount": 774
    }
};

//Version using callback
cics.invoke(uri,requestData,function(err, data) 
{
if (err) 
    {
    ... do something with error ....
    } 
else 
    {
    .... do something with response data
    }
});

//Version using promises

cics.invoke(uri,data).then
(
function(response) 
    {
    ... do something with response ...
    },
function(err) 
    {
    console.log(err);
    }
);
有三个参数用于调用 CICS 服务:
  • URI (字符串)-用于标识目标服务。 它用于匹配 CICS中的 URIMAP ,然后映射到 WEBSERVICE , PIPELINE 并最终将 PROGRAM 作为目标。
  • 请求数据 (JavaScript 对象或字符串)-作为请求主体发送到 CICS 服务的数据。 此数据必须为 CICS中的目标服务期望的 JSON 格式。
  • 回调函数-当响应准备好由 Node.js 应用程序处理时, CICS 将调用此函数。 如果您正在使用 promise ,那么不会应用此函数。
传递到回调函数的参数为:
  • 错误对象。 如果请求成功,那么此值为空。 如果失败,那么这是描述错误的 JavaScript 错误对象。
  • 响应对象。 这是表示来自 CICS的响应的 JavaScript 对象。

处理错误

当处理来自 Node.js 应用程序的请求时发生错误时, CICS 会创建 JavaScript 错误对象并将其传递到回调函数。 名为 httpCode 的整数值表示具有等效 HTTP 状态的错误。 以下示例是打印到 stderr时的错误:
{ Error: CICS error: internal server error
    at Error (native)
  code: 'ERR_CICS_INTERNAL_ERROR',
  httpCode: 500,
  response: '{"Fault":{"faultstring":"Failure interacting 
with CICS","detail":{"CICSFault": "DFHPI1007 08\\/21\\/2018 09:06:17 
IYK2ZKE1 CNJW 00121 JSON to data transformation failed because 
of incorrect input (UNDEFINED_ELEMENT foo) for WEBSERVICE 
json_inquireCatalogWrapper."}}}' }
代码 消息 httpCode 描述
ERR_CICS_BAD_REQUEST CICS 错误: 请求错误 400 从应用程序传递到 CICS 的数据中存在错误。 典型错误包括 URI 格式不正确或无效。
已禁止ERR_CICS_禁止 CICS 错误: 已禁止 403 授权错误。 通常,未授权与 URIMAP 关联的用户标识连接目标 TRANSACTION。
找不到 ERR_CICS_NOT_FOUND CICS 错误: 找不到资源 404 配置错误。 找不到处理中涉及的某个 CICS 资源; 缺少的资源可能是 URIMAP , TRANSACTION 或 PIPELINE 资源。 最常见的问题涉及使用 CICS未知的 URI。
ERR_CICS_INTERNAL_ERROR CICS 错误: 内部服务器错误 500 在 CICS中发生问题。 典型问题包括目标服务异常终止或发生数据转换错误。 诊断由 CICS 发出以描述问题,并且可能在错误对象的 "response" 属性中提供了说明消息。 最常见的问题涉及 JSON 请求数据与 CICS中期望的 JSON 格式不匹配。
ERR_CICS_UNAVAILABLE CICS 错误: 不可用 503 已禁用 CICS 中的资源。 URIMAP , TRANSACTION 或 PIPELINE 资源当前不可用。

单元测试

调用函数支持本地和远程 CICS 调用。 在 CICS 中运行 Node.js 应用程序时,会将请求优化为不使用网络的跨内存系统调用。 在 CICS 外部运行 Node.js 应用程序时,将根据 URI 使用 HTTP 或 HTTPS 将请求发送到 CICS 。 此远程功能仅用于单元测试目的。

使用 ibm-cics-api 模块通过 HTTP连接到 CICS 时,无法设置 HTTP 头 (例如基本认证) 或发送客户机证书。 如果需要执行此操作,请改为使用其他 Node.js 模块。