今天,我们有许多在IBM®Cloud™上运行的云应用程序,其中存储了参与系统(SOE)数据。 另一方面,传统的关键任务数据(例如财务数据)与我们的业务活动和现实世界息息相关。 驻留在公司后端系统(例如IBM i或IBMz®)中的此类数据称为记录系统(SOR)数据。 从云应用程序的角度来看,SOR和SOE之间的数据集成是未来业务成功的关键。 展望未来,已经在互联网上讨论并实现了许多技术要素。
IBM i具有处理业务交易的强大功能,许多开发了这种系统的客户仍在生产环境中运行它。 此外,IBM i还提供了许多Web访问功能,例如通过报告程序生成器(RPG)程序调用标记语言(PCML)调用进行Web服务调用。 您可以轻松地在IBM i上部署自己的Web服务。
在本文中,我们重点介绍从IBM Cloud应用程序调用ILE RPG的代表性状态转移(REST)服务。 这些技术元素的组合为IBM i的未来打开了一扇门。
从IBM i上的云数据和关键任务应用程序集成样本中获取见解
我们可以使用IBM Cloud等云基础架构快速开发和部署Web或移动本机应用程序。 在IBM Cloud上,中间件应用程序已被部署并可以使用。 在本文中,我们选择了Node-RED作为Web应用程序构建工具。 您可能知道,Node-RED是IBM贡献的开源。 您可以使用带有绘图工具的图形用户界面(GUI)来构建Web应用程序,并最大程度地减少应用程序代码的编写。 它对于当今业务中的快速周期开发和部署非常有效。
服务器端应用程序方法是使用IBM i Web服务和RPG PCML调用的REST服务调用。 IBM i上的集成Web服务服务器可以处理此功能。 要使用此功能,您需要开发可由PCML调用的RPG程序。 无需编写Web服务接口和REST接口代码。 集成的Web服务服务器将自动为您生成代码和定义。 Node-RED本身可以直接在其中调用后端Web服务。 IBM Cloud上的Node-RED应用程序请求REST服务调用,并调用在本地服务器上运行的IBM i RPG程序。 IBM Cloud与本地IBM i服务器之间的连接由IBM Secure Gateway完成,IBM Secure Gateway也由IBM Cloud提供。 在本文中,您可以查看IBM i的真实云示例,并学习可以立即完成的云和IBM i事务集成的设计模式。
通过在集成Web服务服务器上调用IBM i REST服务来检索关键任务数据
如本文前面所述,集成的Web服务服务器具有使用SOAP或REST将ILE程序和服务程序部署为Web服务的功能。 ILE编程语言(例如RPG和COBOL)已在企业应用程序中使用了很多年。 通过使用集成的Web服务服务器,您仍然可以使用熟悉的ILE程序访问企业数据,并同时从5250应用程序和Web应用程序进行访问。 此外,通过将其部署为REST Web服务,您可以更轻松地与IBM Cloud或SOE应用程序交换数据。
在这里,我们将使用学生注册应用程序作为示例,该学生注册应用程序是在使用IBM i的集成Web服务服务器构建REST服务的第3部分中引入的,并指导您将其与IBM Cloud上的Node-RED应用程序连接。
样品环境
图1显示了示例环境设置的图像。
图1.示例环境
![](https://i-blog.csdnimg.cn/blog_migrate/21eea11166953ec8be10c8dffcc32c2d.png)
在指导您执行这些步骤之前,您需要在本地IBM i服务器上运行用ILE RPG编写的学生 信息 应用程序 。
我们将将此应用程序部署为集成的Web服务REST服务。 要从IBM Cloud访问在本地服务器上运行的REST Web服务,您需要配置Secure Gateway。
让我们假设您需要将示例学生 搜索 应用程序部署到IBM Cloud上的Node-RED。 该学生搜索应用程序将使用HTTPS在IBM i上调用基于REST的Web服务。 该应用程序实现对企业数据的REST调用,并具有用于获取输入的用户界面。
以下各节指导您如何:
- 在集成的Web服务服务器上配置REST Web服务
- 设置安全网关
- 从Node-RED应用程序调用集成的Web服务REST应用程序编程接口(API)
集成Web服务服务器上的REST Web服务配置
如前所述,我们将使用ILE RPG程序,该程序在为IBM i第3部分使用集成Web服务服务器构建REST服务中进行了说明。 通过遵循该文章中的步骤,您将能够在IBM i上配置基于REST的Web服务。 在该配置中,我们将添加一些步骤来启用HTTPS调用。 在配置集成Web服务以使用HTTPS之前,您需要使用数字证书管理器(DCM)设置本地证书颁发机构和* SYSTEM证书存储。 要配置,请参见以下参考:
配置集成的Web服务HTTP服务器以使用HTTPS
要将集成的Web服务服务器配置为使用HTTPS连接,请参阅:
如何为安全套接字层(SSL)/传输层安全性(TLS)启用IBM Integrated Web Services(IWS)服务器
在本参考中,建议在配置SSL端口时禁用非SSL端口。 但是在我们的场景中,我们将同时侦听HTTP和HTTPS以验证访问权限。 因此,选择否,是否在禁用非 SSL端口下仍配置SSL端口的同时启用 非SSL端口? 而不是向导中的是 。
为集成Web服务服务器配置SSL端口后,可以从Web管理for i(也称为HTTPAdmin)的左侧导航视图中“ 工具”部分的“ 显示配置文件”中检查配置。 您可以看到SSL设置将被添加到您的配置文件中,如图2所示。
图2.启用HTTPS的HTTP服务器的配置文件
![](https://i-blog.csdnimg.cn/blog_migrate/ab40f6251a1cdeb82801d8c446c886d0.png)
下载用于与Secure Gateway进行HTTPS连接的证书
在下一步中,我们将配置安全网关以连接来自IBM Cloud的本地IBM i服务器。 要启用HTTPS连接,首先需要将在步骤如何为安全套接字层(SSL)/传输层安全性(TLS)启用IBM Integrated Web Services(IWS)服务器中创建的证书导入到Secure Gateway中。
导入证书之前,必须从浏览器下载证书。 在我们的方案中,我们将Mozilla Firefox用于Web浏览器,但是步骤和结果可能会因所使用的Web浏览器而异。
- 从浏览器中,访问URL https:// < your-iws-system >:< your-iws-https-port > / web / services / students,看到您可以检索JSON格式的学生信息。
- 右键单击页面,然后单击“ 查看页面信息” 。
- 在页面信息窗口中,单击安全性选项卡。 在“ 网站身份”下,单击“ 查看 证书” 。
- 单击“ 证书查看器”窗口的“ 详细信息”选项卡上的“ 导出”按钮。 选择X.509证书(PEM)(* .crt; *。pem)作为文件类型,然后将证书下载到PC。 现在,您可以使用已下载的证书连接HTTPS。
设置安全网关
现在,我们将在IBM Cloud上设置Secure Gateway。 Secure Gateway是IBM Cloud上的一项服务,它将在IBM Cloud和本地系统之间创建安全的 (作为其服务名称)隧道。 要使用此服务,您还需要将Secure Gateway Client下载到本地系统。
在我们的方案中,我们将在可访问您的本地IBM i服务器的本地PC上配置Secure Gateway Client。 请按照以下步骤设置安全网关。
- 使用Web浏览器访问IBM Cloud门户。 如果您已经有一个帐户,请单击“ 登录”并使用您的IBM ID登录。 如果这是您第一次使用IBM Cloud,则可以通过单击注册来注册 30天试用版。
- 登录到IBM Cloud之后,您将看到仪表板打开。 设置安全网关,点击顶部的横幅目录 ,然后点击目录页上的整合类别下的安全网关 。
- 在“安全网关”页面的底部,单击“ 创建”以创建您自己的服务。 您将从此处设置网关。
- 在页面的中间, 点击 DD网关 ,你会看到添加网关提示。 输入您的网关服务名称,然后单击添加网关 。
- 将创建您的网关,并显示Secure Gateway的仪表板。 要设置Secure Gateway Client,请向下滚动至信息中心的底部,单击Clients选项卡,然后单击Connect Client 。
- 向导会询问您如何连接此新网关。 因为我们使用本地Windows PC作为本地网关客户端,所以选择IBM Installer ,然后在Software Installers列表中单击Windows旁边的下载链接,然后将安装程序包保存在您的工作站中。
- 通过运行已下载的EXE文件来安装Secure Gateway Client。 在向导中,您可以选择是否要将Secure Gateway Client作为Windows服务运行。 如果您打算将Windows服务器用作Secure Gateway客户端,则建议将其作为Windows服务运行(因为在这种情况下,我们将其安装到本地PC上,并且如果需要Secure Gateway , 请清除“ 请检查此选项”。客户端作为服务运行并自动重新启动复选框)。
- 在此向导的下一页上输入您的网关ID和安全令牌。 您可以在下载安装程序的网页上找到此信息。 您可以从该网页复制值并将其粘贴到向导中,如图3所示。在此示例中,访问控制列表(ACL)和日志级别字段保留为空白。 单击下一步 。
图3.在向导中指定网关ID和安全性令牌值
- 在下一页上选择“ 是 ”以使用客户端GUI,然后可以为客户端设置密码和端口。 在这种情况下,我们保留默认值,然后单击Install 。 客户端安装开始。
- 当状态显示为Completed时 ,单击Close结束向导。 现在,您已经安装了客户端。
- 接下来,在IBM Cloud上设置网关服务。 从下载安装程序的位置关闭网页。 在“ 目标”选项卡上,单击加号以添加目标。
- 启动添加目标的向导。 对于这种情况,我们将要调用的IBM i上基于REST的Web服务正在本地IBM i服务器上运行,因此, 请为资源位于何处选择本地 。 然后单击下一步 。
- 在第二页上,输入将托管REST Web服务的集成Web服务服务器的主机名和端口号,然后单击Next 。
- 在第三页上指定用于连接到目标的协议。 为了对目的地进行协议访问,您可以选择相互身份验证HTTPS进行相互身份验证。 但是在这种情况下,我们选择简单的HTTPS并单击Next 。
- 我们将在目标上使用身份验证。 因此,选择“ 目标端” ,然后单击“ 上传证书” 。
- 在上载窗口中,选择您先前下载的证书文件(* .crt),然后单击“ 打开” 。 检查您的证书是否如图4所示出现,然后单击Next 。
图4.在向导中指定证书
- 然后,您可以指定要连接的IP地址范围,但是在这种情况下,请保留默认值,然后单击Next 。 输入目的地名称后,点击添加目的地 。
- 请注意,您刚刚创建的目的地显示在“ 目的地”下(如图5所示)。 现在,您就可以使用Secure Gateway Server。
图5.您刚刚创建的目标
- 让我们看看是否可以从本地PC访问。 在本地PC中,选择开始 -> 所有 程序 -> IBM- > Secure Gateway Client ,然后单击以管理员身份运行。
- 启动Secure Gateway Client时, 系统将询问您是否要使用配置文件securegw_service.config 。 有关在安装客户端时输入的网关ID的信息将写入配置文件中。 用y答复,然后按Enter。
- Secure Gateway Client GUI将在Web浏览器中打开。 单击查看日志 (如图6所示)。
图6.查看安全网关日志
- 您可以在日志中看到Secure Gateway隧道已连接,如图7所示。单击页面左上角的Back 。
图7.确认安全网关日志
- 从Secure Gateway Client向集成的Web服务服务器添加HTTPS访问权限。 单击查看日志旁边的访问控制列表 (请参阅图6)。
- 在“ 访问控制列表管理”页面上的“ 允许访问 ”下,输入集成的Web服务服务器主机名和HTTPS端口号,然后单击加号( + )按钮。
- 检查您输入的信息是否在“ 允许访问”下列出 。 点击顶部返回 ,返回到安全网关的客户端的首页。 这将结束您的Secure Gateway Client上的设置。
图8.添加访问控制列表条目
- 返回到“安全网关服务详细信息”页面,然后按F5刷新页面,然后单击您创建的网关服务。
- 您可以看到Secure Gateway的目的地列表。 单击目标位置页面底部的“设置”图标(请参阅图9),该图标描述了集成的Web服务HTTPS访问。
图9. Secure Gateway目标的Settings图标
- 在这里,您可以检查已添加的目的地的详细信息(如图10所示)。 Cloud Host:端口是指从IBM Cloud访问的主机名和端口详细信息。 使用此地址,您可以使用Secure Gateway透明地访问本地目标。 在此地址上做一个记录,因为稍后将在部署Node-RED应用程序时使用它。
图10.云主机名和端口
现在,我们已经成功连接了IBM Cloud上的Secure Gateway服务器和运行在本地PC上的Secure Gateway Client。
从Node-RED应用程序调用集成的Web服务REST API
最后,我们需要通过Secure Gateway从驻留在IBM Cloud上的Node-RED应用程序访问在本地IBM i平台上运行的集成Web服务API。
配置节点红色
执行以下步骤在IBM Cloud上配置Node-RED:
- 在IBM Cloud仪表板中,单击Catalog 。
- 在搜索字段中,输入Node-RED。 单击Boilerplates下的Node-RED Starter 。
- 向下滚动“ 创建Cloud Foundry应用程序”页面,输入您的应用程序名称,并保留其他条目的默认值。 您输入的应用名称将是要访问的默认主机名。 您可以根据需要更改主机名。 然后,点击创建 。 由于应用程序名称在IBM Cloud环境中需要唯一,因此您可能会收到一条错误消息。 如果是这样,请输入其他应用名称,然后再次单击创建 。
- 创建应用程序后,将配置并启动新的Node-RED应用程序。 等待一会儿或按F5键,直到看到应用程序状态更改为正在运行 。
使用Node-RED流编辑器创建示例应用程序
Node-RED有一个称为“流编辑器”的工具,您可以使用该工具将节点从调色板拖到画布上并将它们连接在一起。 在此示例中,我们将使用Node-RED流编辑器创建一个示例应用程序。
- 单击“ Node-RED应用程序”页面上状态“正在运行”旁边的“ 访问应用程序URL” 。
- 在网页上的“ Node-RED”上单击“ 转到您的Node-RED流编辑器 ”。
- Flow Editor将在您的Web浏览器中启动。 您可以导入和导出以JSON格式编写的Node-RED流。 您可以下载包含示例应用程序流的附件node-red-dw-sample-yohichin-flow.json文件并将其导入。 在Flow Editor的右上角,单击Import- > Clipboard (如图11所示)。
图11.导入Node-RED流JSON数据-步骤1
- 将所有脚本从node-red-dw-sample-yohichin-flow.json文件复制到Import Nodes窗口,然后单击Import (如图12所示)。
图12.导入节点
请注意,导入的流包括两个大流。 一种是通过访问https:// <your-node-red-app-host-name> .mybluemix.net / welcome显示初始网页。 另一个方法是从初始页面检索学生ID,并将数据通过Secure Gateway传递到IBM i上基于REST的Web服务。 REST Web服务通过使用接收到的ID作为关键字来查询学生信息,并将结果返回到Web页面。
图13.示例应用程序的流程
- 双击“ 调用ILE RPG REST API”节点,这是通过REST通过Secure Gateway调用使用REST的集成Web服务的逻辑(请参见图13)。
- 进入“ 编辑http请求节点”页面。 在这种情况下,我们将使用getByID REST API查询单个学生ID。 因此,为“ 方法”参数选择“ 获取 ”。 对于URL ,您需要使用您在设置安全网关时记下的主机名和端口号。 由于您需要指定从网页接收的学生ID,因此需要将URL构造为https:// < sg-host-name >:< 端口号 > / web / services / students / {{payload.studentID }},其中< sg-host-name >和< port number >是您之前设置的Secure Gateway Destination的主机名和端口号。 最后,对于Return参数,请选择一个已解析的JSON对象,因为从REST API检索的数据将采用JSON格式。 设置所需的所有信息后,单击“完成” ,如图14所示。
图14.创建的Node-RED应用程序的页面
- 要将应用程序部署到您的运行时,请单击右上角Deploy旁边的向下箭头,然后单击Full 。 然后,单击Deploy部署应用程序(如图15所示)。
图15.指定用于部署流程的选项
- 部署完成后,页面顶部将显示消息“ 成功部署 ”。 另外,请注意,每个节点旁边出现的蓝点均已关闭。
现在您可以访问您的应用程序了。
运行示例应用程序
您需要执行以下步骤来运行示例应用程序:
- 在Web浏览器中,访问以下内容,并显示在Node-RED中配置的初始页面。
https:// < your-node-red-app-host-name > .mybluemix.net / welcome
将<your-node-red-app-host-name>替换为您的应用程序名称或创建Node-RED时指定的主机名。
- 输入学生ID,例如在这种情况下为826M660CF ,然后单击Submit (如图16所示)。 提交后,使用安全网关将在初始页上输入的学生ID传递到在本地服务器上运行的IBM i上基于REST的Web服务上配置的getByID API。
图16.提交学生ID
- 请注意,针对指定的学生ID返回了学生信息(请参见图17)。
图17.示例Node-RED流的“结果”页面
注意事项和常见的坑坑洼洼
本文介绍了使用集成的Web服务从IBM Cloud应用程序访问ILE RPG的便捷性。 当然,IBM Cloud上的Node-RED应用程序已部署在Internet世界中。 通过使用Secure Gateway,您可以从这些应用程序中轻松检索关键任务,本地IBM i系统数据。 针对这一优势,您应该考虑如何维护数据的安全性。 在本文中,我们使用安全网关和HTTPS协议在本地环境上安全地访问ILE RPG REST Web服务。 HTTPS可以在连接路由中维护数据的机密性。 从安全角度来看,您还应该考虑谁可以使用部署到本地集成Web服务服务器上的ILE RPG REST Web服务并实施访问控制。 要对您的REST Web服务实现此考虑,可以使用IBM API Connect™。 通过使用API Connect,您可以设置安全设置,例如对REST Web服务的身份验证。 与Node-RED应用程序类似,API Connect服务在IBM Cloud上也可用。 您可以通过注册ILE RPG REST Web服务的REST API来使用API Connect。 要将API注册到API Connect,我们通常使用Swagger文件。 Swagger文件是定义API配置的JSON文件。 幸运的是,通过为i 7.1应用HTTP PTF组级别44,对i 7.2应用级别18和对i 7.3或更高版本应用级别5,可以使用为ILE RPG REST Web服务生成Swagger文件的功能。 这是API Connect的一项重大增强,可以使用ILE RPG REST Web服务,因为您可以使用自动生成的Swagger文件将ILE RPG REST Web服务导入API Connect。
图18.在集成的Web服务服务器上生成Swagger文件支持
![](https://i-blog.csdnimg.cn/blog_migrate/ec5cad916e0530b724827ecd972c703e.png)
结论
本文介绍了Web或移动本机应用程序部署的IBM i和IBM Cloud功能。 我们向您展示了如何设计与Node-RED的流程集成,以及IBM i RPG如何将其功能扩展到云。 IBM i和IBM Cloud继续向这个云时代迈进。
相关话题
- 使用集成的Web服务服务器为IBM i构建REST服务,第3部分
- 如何在DCM中创建本地证书颁发机构(CA)存储
- 如何在DCM中创建* SYSTEM存储
- 如何为安全套接字层(SSL)/传输层安全性(TLS)启用IBM Integrated Web Services(IWS)服务器
翻译自: https://www.ibm.com/developerworks/ibmi/library/i-ile-rpg-cloud-integration/index.html