IRIS 2021 技术文档 First Look 6 使用具有互操作性的Production连接系统
为什么要连接系统?
连接系统可以让一个系统处理来自非本系统的信息。例如,以下场景需要连接系统:
- 为了提高效率,最初设计为执行单一功能的系统需要集成。例如,您可以通过集成跟踪库存、订购材料、记录销售和控制运输的各个系统来提高效率。
- 系统合并后,在不同机构中执行相同功能的系统需要协同工作才能使统一的机构有效。
将系统连接在一起时,您可能会面临一些挑战,例如:
- 不同系统使用不同的通信协议:一个系统可能使用TCP,另一个系统使用SOAP,第三个系统使用REST。
- 不同系统使用不同格式或基于不同标准的不同消息。
- 需要保证消息成功传递到正确的系统,并能够检测和纠正故障。
- 必须监控传输消息的系统,如果一次消息过多,则为消息提供一个队列,并监控整体系统性能以确保没有任何障碍。
虽然可以编写自定义应用程序来连接系统,但开发一款InterSystems IRIS® 产品要容易得多,也快得多。
InterSystems IRIS 提供了一个框架,允许连接系统,并最大限度地减少或消除对自定义代码的需求。
Production介绍
InterSystems IRIS Production是一个集成框架,用于轻松连接系统和开发互操作性应用程序。产品Production提供包含各种消息格式和通信协议的内置连接。您可以轻松添加其他格式和协议,并通过编写代码或使用图形向导定义业务逻辑和消息转换。产品提供消息的持久存储,允许跟踪消息的路径并审核消息是否成功传递。一个Production由业务服务(BS)、业务流程(BP)和业务操作(BO)组成:
- 业务服务(BS)与外部系统连接并接收Production来自外部系统的消息。
- 业务流程(BP)允许您定义业务逻辑,包括路由和消息转换。
- 业务操作(BO)与外部系统连接并将消息发送给它们。
将系统连接在一起时,让所有系统互相理解它们的消息和文档是有挑战性的。例如,思考以下问题:
- 您有两个独立的系统:一个是从多个联网设备采集数据,另一个是跟踪损坏的设备和维修进程的工单系统。
- 当前程序依赖于人工干预来监控设备并启动维修进程。这导致了拖延情况且不可靠。
- 您的任务是将两个系统连接在一起:监控正在收集的数据并自动启动修复进程。您知道如何检测数据收集系统中的故障设备并知道如何启动维修,尽管两个系统所存储的数据代表同一项目,但是两个系统的存储数据格式并不兼容。
- 您还需要记录数据收集系统启动维修时的操作。
可以使用InterSystems IRIS 产品解决这个问题。它提供了一个定义接口的框架,该接口接收来自数据采集系统的消息,将消息转换为维修系统可以理解的消息,然后将消息发送到维修系统。它还存储消息路径。
下面以一个简单的Production作为示例
使用文件适配器(File Adaptor)创建Production
在本节中,您将使用入站文件适配器和出站文件适配器创建Production。可以使用 InterSystems IRIS 中内置的业务服务(BS)、业务流程(BP)和业务操作(BO),因此您无需下载任何代码。
尝试一下!使用文件适配器创建产品
想要尝试一下InterSystems IRIS 互操作性功能的在线视频演示吗?查看互操作行快速入门!
用前须知
要使用该程序,您需要一个正在运行的InterSystems IRIS 实例。您的选择包括多种类型的已授权的和免费的评估实例;该实例不需要由您正在工作的系统托管(尽管它们必须相互具有网络访问权限)。如果您还没有一个可以使用的实例,如何部署每种类型实例的有关信息,请参阅InterSystems IRIS Basics: Connecting an IDE中的部署 InterSystems IRIS。
关于如何用Visual Studio 连接到您的InterSystems IRIS 实例,请参考InterSystems IRIS 连接信息和.Net IDEs。
创建支持互操作的命名空间(Namespace)
创建的命名空间不支持互操作):
- 在浏览器中为实例打开Management Portal (管理门户)。
- 选择系统管理 > 配置 > 系统配置 > 命名空间,进入命名空间页面。
- 在命名空间页面,选择新建命名空间 ;根据系统配置指南中“配置InterSystems IRIS”一章中,对于“Create/Modify a Namespace(创建/修改命名空间)”说明,确保选中
Enable namespace for interoperability productions(为互操作性产品启用命名空间)复选框。
- 点击靠近页面顶部的保存按键,然后在结果日志的结尾选择关闭。
创建含有业务服务 (BS)和业务操作(BO)的简单production
在这一步中,您将:
- 创建一个新的production。
- 在该production中添加一项业务服务(BS)和两项业务操作(BO)。
- 配置业务服务(BS)和业务操作(BO)。
现在,您应该创建在托管InterSystems IRIS实例的系统上运行此production所需的四个目录。具体处理方法取决于所用的实例类型,如下所示:
- 对于ICM 部署的实例,使用带有-machine 和-interactive 选项的 icmexec命令,打开正在运行该实例的容器的bash shell ,例如:
icm exec -command bash -machine MYIRIS-AM-TEST-0004 -interactive
然后,您可以在容器文件系统上创建目录。
- 对于任何容器化实例,无论是授权版还是社区版,请使用 docker exec -it container_name bash 命令打开该容器的bash shell (社区版的容器名称是try-iris )。然后在容器文件系统上创建4个目录
- 对于InterSystems Learning Labs(学习实验室),在集成IDE中使用命令行终端,在共享文件夹下创建新文件夹;您可以在/home/project/shared 路径下的Management Portal(管理门户)中浏览这些文件夹。
- 对于已安装的实例,在本地文件系统上创建4个目录。
本文本假定以下是Windows 系统上已安装实例的目录路径;替换您创建的实际目录的路径。
- c:\Practice\In
- c:\Practice\Out
- c:\Practice\PDFsOut
- c:\Practice\Work
在管理门户中,创建一个新的production:
- 选择Interoperability( 互操作性),如果出现提示,请选择一个支持互操作的命名空间。
- 选择Interoperability ( 互操作性)> 列表 > Production。
- 如果一个产品当前正在命名空间中运行,请打开它,然后选择停止。返回产品列表页面。
- 选择新建,创建一个新的产品。
- 指定包名称(例如 TEST)和production名称(例如 FileProd)。您将创建可用于任何目的的通用production。选择OK创建该产品。
向该产品添加一项业务服务(BS)和两项业务操作(BO):
- 选择服务旁边的加号符号以显示业务服务向导。
- 在服务类下拉菜单,选择EnsLib.File.PassthroughService 。
- 指定服务名FileService。
- 清空立即启用复选框。
- 选择确定。
- 对两项业务操作(BO)重复这些步骤。从选择操作旁边的 加号符号以显示业务操作向导开始。对这两项操作使用 EnsLib.File.Pa ssthroughOperation 类。将一项操作名称命名为WriteFileOp ,另一项命名为WritePDFsOp。
配置这项业务服务(BS)和两项业务操作(BO):
- 选择您在产品配置图中创建的业务服务(BS),并在设置选项卡:
a. 选择启用复选框。
-
- 在文件路径字段,输入c:\Practice\In。
- 在存档路径字段,输入c:\Practice\Work。
- 在工作路径字段,输入c:\Practice\Work。
- 在接收消息的目标名称字段,选择WriteFileOp。
- 其他字段为默认值。
- 选择应用。
- 为两项业务操作(BO)中的每一项指定设置。选择产品图中的操作,然后:
a. 选择启用复选框。
-
- 在文件路径字段,对于 WriteFileOp 操作输入c:\Practice\Out,对于 WritePDFsOp 操作输入 c:\Practice\PDFsOut。
-
- 其他字段为默认值。
- 选择应用。
启动Production & 跟踪消息
启动该production后,您将复制一个文件到 FileService 的导入目录。您能查看 WriteFileOp 的导出目录中的文件,并通过该production跟踪消息。请注意,运行这个production时不使用WritePDFsOp 操作。要启动production并跟踪消息:
- 通过选择开始启动产品。
- 将任一文件复制到c:\Practice\In 目录。如果该产品配置正确,应该会出现以下情况:
- 几秒钟后,文件从 c:\Practice\In 目录移动到 c:\Practice\Work 目录。文件名称规范将后附时间戳。例如, 如果原始文件是hello.txt,工作文件可能名称为hello.txt_2018-05-07_17.24.57.056 。
- 文件的新版本被写入c:\Practice\Out 目录。它还附加了一个时间戳。
- 产品图中的圆圈应保持绿色。如果圆圈变成红色,则表示产品中存在错误。遍历前面的步骤并确保这些目录存在。
- 在production配置页面选择FileService,选择消息选项卡。它列出了通过该产品的每条消息。选择转到消息查看器。
- 在消息查看器中选择一条消息,然后选择跟踪选项卡。它将显示从FileService 转到WriteFileOp 操作的消息。
- 选择正文选项卡,它将显示消息类型和消息中的字段:
请注意,消息类型是Ens.StreamContainer,其中一个字段是OriginalFilename。
在本步骤中,将向产品添加路由业务流程和规则。然后,您将一个文件复制到导入目录,并查看显示消息通过路由器的跟踪。在Management Portal(管理门户)中:
- 选择Interoperability( 互操作性) >配置>Production进入Production 配置 页面,然后选择流程旁边的加号符号以显示业务流程向导。在向导中:
- 在业务流程类下拉菜单,选择EnsLib.MsgRouter.RoutingEngine。
- 选择自动创建规则复选框。
- 指定业务流程名称为FileRouter。
- 清空Enabled( 启用)复选框。
- 选择确定。
- 在对话框中选择OK以批准规则类名称
- 在Production配置页面选择FileRouter,然后在设置选项卡:
a. 选择启用复选框。
- 选择应用。
- 选择业务规则名称右侧的放大镜。这将启动规则编辑器,并显示在您创建业务流程时自动生成的规则。
- 在规则编辑器中,您将创建一条规则,将PDF 文件发送到WritePDFsOp 操作,并将所有其他文件发送到WriteFileOp 操作。规则如下所示
要创建此规则:
-
- 双击规则中的 constraint (约束)值。
- 在 源 字段输入FileService。
- 在消息类字段输入Ens.StreamContainer。
- 选择OK。
- 在 规则辅助中选择rule( 规则) 然后选择when。
-
- 选择 when 条件值,并在规则图上方的文本框内输入Document.OriginalFilename Contains ".pdf",然后选择确定。
- 选择图中的 when 子句,然后在规则辅助选择 send(发送)。
- 双击 target 值并选择WritePDFsOp 配置项。
- 选择图中的 when 子句,然后在规则辅助 选择 otherwise。
- 选择图中的 otherwise 子句,然后在规则辅助选择 send( 发送)。
- 双击 send 子句的 target 值并选择WriteFileOp 配置项。
-
- 选择保存。
- 返回到Production配置页面,选择FileService 并在 Settings 选项卡:
- 选择FileRouter 为接收消息的目标名称。
- 清空WriteFileOp 复选框。
- 然后选择应用。
您的productioin现已完成。FileService 将所有消息发送到FileRouter 业务流程(BP)。FileRouter 将根据规则将消息发送到WritePDFsOp 或WriteFileOp 操作。
如果你将hello.pdf 复制到c:\Practice\In 目录,它将被发送到 c:\Practice\PDFsOut 目录,但是,如果您复制test.txt 到c c:\Practice\In 目录,它将被发送到c:\Practice\Out 目录。您还可以查看消息跟踪,消息跟踪可以显示通过文件路由器的消息路径。例如,hello.pdf 的跟踪可能如下:
了解有关互操作性产品的更多信息
有关产品的更多信息,请参阅:
- 介绍互操作性production
- 开发产品production
- 配置production
- 制定业务规则