第二十八章 开发Productions - ObjectScript Productions - 定义业务操作

news2024/10/7 8:24:48

文章目录

  • 第二十八章 开发Productions - ObjectScript Productions - 定义业务操作
  • 介绍
  • 关键原则
  • 定义业务操作类

第二十八章 开发Productions - ObjectScript Productions - 定义业务操作

本页介绍如何定义业务操作类。

提示: IRIS 提供使用特定出站适配器的专用业务操作类,其中之一可能适合需要。如果是这样,则不需要编程。有关部分列表,请参阅 Introducing Interoperability Productions 中的连接选项。

介绍

业务操作负责将请求从 IRIS 发送到外部应用程序或系统。下图显示了它是如何工作的:

在这里插入图片描述

请注意,此图仅显示数据的输入流,而不是可选响应。

业务操作负责以下活动:

  • 等待来自业务服务或业务流程的请求。
  • 通过消息映射将请求分派到业务操作中的特定方法。业务操作类中的每个方法代表外部应用程序中的特定操作。
  • 将请求对象转换为关联出站适配器可用的形式,并要求出站适配器向外部应用程序发送请求。
  • 如果请求,返回一个响应对象给调用者。

每个业务操作都包含一个消息映射,该消息映射指定要执行的外部操作,具体取决于它收到的请求消息的类型。消息映射包含一个或多个条目,每个条目对应于关联出站适配器的一次调用。

关键原则

按照惯例,业务操作是一种非常具体的操作,它包含很少的逻辑,并且可以执行它所要求的操作,而无需调用进一步的操作或以任何方式进行分支。当生产设计需要逻辑时,这包含在业务流程中。

许多产品提供了大量极其简单的业务操作。在这些情况下,业务流程包含确定何时应调用每个操作的逻辑。

定义业务操作类

创建一个业务操作类,定义一个类如下:

  • 业务操作类必须在(或子类)中扩展 Ens.BusinessOperation
  • 在类中,ADAPTER 参数通常应等于此业务服务要使用的适配器类的名称。

或者可以定义一个没有关联的出站适配器类的业务操作。在这种情况下,业务操作本身必须包含与外部应用程序通信所需的逻辑。

  • 在类中,INVOCATION 参数必须指定要使用的调用样式,它必须是以下之一。

    • Queue队列意味着消息在一个后台作业中创建并放置在队列中,此时原始作业被释放。稍后,当处理消息时,将为该任务分配不同的后台作业。这是最常见的设置。
    • InProc 意味着消息将在创建它的同一个作业中被制定、发送和传递。在将消息传递到目标之前,该作业将不会在发件人的池中再次可用。这只适用于特殊情况。

类应该定义一个至少包含一个条目的消息映射。消息映射是具有以下结构的 XData 块条目:

XData MessageMap
{
<MapItems>
  <MapItem MessageType="messageclass">
    <Method>methodname</Method>
  </MapItem>
  ...
</MapItems>
}
  • 类必须定义消息映射中命名的所有方法。这些方法称为消息处理程序。每个消息处理程序都应具有以下签名:
Method Sample(pReq As RequestClass, Output pResp As ResponseClass) As %Status

这里Sample是方法名,RequestClass是请求消息类名,ResponseClass是响应消息类名。一般来说,这些方法会引用你业务运行的Adapter属性的属性和方法。有关详细信息,请参阅定义消息处理程序方法。

  • 类可以添加或删除设置。请参阅添加和删除设置。
  • 类可以实现任何或所有启动和拆卸方法。请参阅覆盖启动和停止行为。

IRIS 是一个集成平台,可以与许多其他异构设备进行通信;因此,它不会使属性值依赖于服务器平台、时区、时间格式或其他可能适用的本地化问题。相反, 建议在生产实施中处理此类情况。如果产品需要对属性值进行不同的初始设置,请在业务操作的 OnInit() 方法中设置该值。请参阅覆盖启动和停止行为。

  • 类可以包含完成自身内部工作的方法。

以下示例显示了需要的一般结构:

Class MyProduction.NewOperation Extends Ens.BusinessOperation
{
Parameter ADAPTER = "MyProduction.MyOutboundAdapter";

Parameter INVOCATION = "Queue";

Method SampleCall(pRequest As Ens.Request, Output pResponse As Ens.Response) As %Status
{
  Quit $$$ERROR($$$NotImplemented)
}

XData MessageMap
{
<MapItems>
  <MapItem MessageType="Ens.Request">
    <Method>SampleCall</Method>
  </MapItem>
</MapItems>
}
}

消息映射的操作很简单。当业务操作收到传入请求时,它会从消息映射的顶部开始搜索每个 MapItem,直到找到第一个其 MessageType 属性与传入消息类型匹配的映射项。然后调用与此 MapItem 关联的操作方法。

有关消息映射的一些注意事项:

  • 消息映射从上到下查找;一旦找到匹配项,就不再执行搜索。
  • 如果传入的请求对象是给定 MessageType 的子类,则将其视为匹配项。如果要过滤掉子类,请务必将它们放在消息映射中的任何超类之上。
  • 如果传入请求与任何 MapItem 条目都不匹配,则会调用 OnMessage 方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/622156.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解读大模型的微调

在快速发展的人工智能领域中&#xff0c;有效地利用大型语言模型&#xff08;LLM&#xff09;变得越来越重要。然而&#xff0c;有许多不同的方式可以使用大型语言模型&#xff0c;这可能会让我们感到困惑。实际上&#xff0c;可以使用预训练的大型语言模型进行新任务的上下文学…

【移动架构】Flutter和React Native:最后的PK

首先&#xff0c;有点离题。做出决定的最简单方法是回顾历史。让我们沿着怀旧之路走一趟。早在2000年初&#xff0c;JAVA就有两个UI框架。一个是AWT&#xff0c;它是一种为多个操作系统构建UI的方法&#xff0c;同时仍然保持操作系统的外观。 每个操作系统都有自己的组件&#…

驱动开发--创建设备文件--控制LED灯

目录 1、手动创建设备文件 2、应用程序如何将数据传递给驱动 3、控制LED灯&#xff1a; 4、应用层控制灯 5、自动创建设备节点 1、手动创建设备文件 cat /proc/devices 查看主设备号 sudo mknod hello(路径&#xff1a;任意的) c/b&#xff08;C代表字符设备 b代表块设备&a…

华为无线AC双机热备三层组网配置案例

核心交换机: dis current-configuration sysname hx undo info-center enable vlan batch 10 66 88 99 to 100 ip pool vlan10 gateway-list 192.168.10.254 network 192.168.10.0 mask 255.255.255.0 dns-list 8.8.8.8 ip pool vlan100 gateway-list 172.16.100.254 network …

Qt在MySQL中存储音频文件

一、在存储音频视频等大文件时需要以二进制文件进行存储&#xff0c;首先需要了解mysql存储二进制文件的字段类型以及大小&#xff1a; 需要创建数据库中的图片类型为&#xff1a;二进制mediumblob类型&#xff0c;&#xff08; TinyBlob 最大 255 Blob 最大 65K MediumBlob …

苹果发布会,卧槽,卧槽,卧槽

今天跟二哥在群里聊到苹果的发布会&#xff0c;二哥完整的看了发布会&#xff0c;我随口问一句二哥看完后什么感受。 二哥说「苹果的工业设计还是遥遥领先&#xff0c;交互设计也是一流水准&#xff0c;然后价格也是遥遥领先」。 然后&#xff0c;我今天也抽空看了关于苹果新发…

【算法与数据结构】203、LeetCode移除链表元素

文章目录 题目一、解题思路完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 题目 一、解题思路 思路分析&#xff1a;这道题需要注意一个特殊情况&#xff0c;当删除的是头结点时&#xff0c;直接删除就找不到整个链表。因此我…

2023LRC软件、Adobe Lightroom Classic下载、安装教程

最后附下载地址 LRC简介&#xff1a; Adobe Lightroom Classic&#xff08;简称LR&#xff09;是Adobe Creative Cloud大家庭中的一款专业的图片管理和编辑工具&#xff0c;用于专业摄影师、摄影爱好者以及所有不断优化数码影像的人等。其目标是以丰富的功能提供高效、一致的…

03【WebStorm开发工具】

上一篇&#xff1a;02【HTML快速入门】 下一篇&#xff1a;04【】 目录&#xff1a;【HTML5系列教程】 文章目录 三、WebStorm开发工具3.1 WebStorm简介3.2 WebStorm安装3.3 WebStorm基本使用3.3.1 创建项目3.3.2 调整字体大小3.3.3 代码自动补全3.3.4 WebStorm常用快捷键 三…

在Anaconda的虚拟环境中添加环境变量并通过python访问(win/mac/linux)

一、前言 有的时候密码登比较敏感的信息&#xff0c;不方便直接写在代码里有很多变量我想很多project都可以访问到 那这时候使用环境变量是非常合适的了。 二、设置环境变量 以linux为例 直接在internal执行命令 export 变量值通过更改bashc文件 vim ~/.bashrc # 在最后一行加上…

【双向链表】

双向链表 带头双向循环链表的实现1. 函数的声明2. 函数的实现3. 主函数测试 带头双向循环链表的实现 今天我们来实现一下带头双向循环链表&#xff0c;顾名思义&#xff0c;带头就是有哨兵位&#xff0c;哨兵位不是链表的头&#xff0c;它是连接头节点的一个节点&#xff0c;方…

ChatGPT提示词攻略之迭代提示词

当我们在调试程序时&#xff0c;通常很难一次就把程序正常跑起来。这是普遍现象。但我们会借助一些工具和手段&#xff0c;有步骤有流程地去调整程序&#xff0c;最终让程序按照我们想要的样子正常执行。 对于提示词来说也是一样的。当我们向ChatGPT提问时&#xff0c;一开始它…

从操作系统角度了解内存管理

一.内存管理 1.主要功能 内存管理的主要功能有: 内存空间的分配与回收。由操作系统完成主存储器空间的分配和管理&#xff0c;使程序员摆脱存储分配的麻烦&#xff0c;提高编程效率。地址转换。在多道程序环境下&#xff0c;程序中的逻辑地址与内存中的物理地址不可能一致, …

Effective第三版 中英 | 第二章 创建和销毁对象 | 固定资源首选使用依赖注入

文章目录 Effective第三版前言第二章 创建和销毁对象固定资源首选使用依赖注入 Effective第三版 前言 大家好&#xff0c;这里是 Rocky 编程日记 &#xff0c;喜欢后端架构及中间件源码&#xff0c;目前正在阅读 effective-java 书籍。同时也把自己学习该书时的笔记&#xff0…

接招吧!MySQL 10 连问

文章目录 &#x1f349;1. 索引底层采用什么数据结构&#xff1f;为什么不用hash&#x1f349;2. B树与B树区别&#xff1f;为何用B树&#xff1f;&#x1f349;3. 自增主键理解&#xff1f;&#x1f349;4. 为什么自增主键不连续&#x1f349;5. Innodb为什么推荐用自增ID&…

Jetpack Compose 中的基础组件

Button 默认样式 Button的lambda块中可以传入任意的Composable组件&#xff0c;但一般是放一个Text在里面 Button(onClick { println("确认onClick") }) {Text("默认样式") }按钮的宽高 如果想要宽一点或高一点的Button&#xff0c;可以通过Modifier修…

chatgpt赋能python:Python平面图制作教程

Python平面图制作教程 Python是一种高级编程语言&#xff0c;也是数据科学和机器学习领域中使用最广泛的编程语言之一。在数据可视化中&#xff0c;Python语言具有优秀的表现力和灵活性&#xff0c;可以为用户展示各种数据可视化方案。这篇文章将重点介绍Python如何制作平面图…

八字诀 · 十年之约

* * * 原创&#xff1a;刘教链 * * * 号外&#xff1a;今天在“刘教链Pro”发表了两篇文章&#xff0c;《一视同仁&#xff0c;SEC起诉Coinbase》和《SEC起诉币安的官方新闻稿》&#xff0c;欢迎关注“刘教链Pro”并阅读。 * * * 隔夜比特币奋力反弹&#xff0c;重新回升至27k…

激发数学思维:GPT-4实证研究探索挑战性数学问题

深度学习自然语言处理 原创作者&#xff1a;wkk 考虑到自然语言在许多科学和工程领域表达的数学问题的丰富性&#xff0c;使用大语言模型(LLM)来解决数学问题是一项有趣的研究工作。今天给大家介绍一篇微软研究院联合欧美高校关于如何使用GPT-4解决数学问题的研究论文。 之前的…

KCC@深圳 邀你共享『升压手电DIY』的创新之旅!

嘿&#xff0c;亲爱的KCC深圳的社区成员们&#xff01;你们是否曾经梦想过拥有一款强大的手电&#xff0c;能够在黑暗中照亮一切&#xff1f;现在&#xff0c;我将揭开一个让你们眼前一亮的活动——『升压手电DIY』&#xff01; 在这个充满创意的活动中&#xff0c;我们将带你们…