第二十四章 开发Productions - ObjectScript Productions - 定义业务服务

这篇具有很好参考价值的文章主要介绍了第二十四章 开发Productions - ObjectScript Productions - 定义业务服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第二十四章 开发Productions - ObjectScript Productions - 定义业务服务

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

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

介绍

业务服务负责接受来自外部应用程序的请求到 IRIS。下图显示了它是如何工作的:

第二十四章 开发Productions - ObjectScript Productions - 定义业务服务

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

业务服务负责以下活动:

  • 等待特定的外部事件(例如来自应用程序的通知、收到 TCP 消息等)。
  • 读取、解析和验证伴随此类事件的数据,
  • 如果需要,返回对外部应用程序的确认,表明已收到事件。
  • 创建请求消息的实例并将其转发到适当的业务流程或业务操作以进行处理。

业务服务的目的通常是接收数据输入。在大多数情况下,业务服务有一个与之关联的入站适配器。但是,在某些情况下不需要适配器,因为应用程序能够将请求消息发送到服务中,或者因为业务服务已被编写为处理特定类型的外部调用,例如来自复合应用程序的调用。这种类型的业务服务称为无适配器业务服务。

当业务服务具有入站适配器时,它处于数据拉取(而不是推送)模式。在这种模式下,业务服务会定期轮询适配器,看它是否有数据。同时,如果适配器随时遇到输入数据,它会调用业务服务来处理输入。

当业务服务没有适配器时,它不会拉取数据。相反,客户端应用程序调用业务服务并告诉它处理输入(这是一种数据推送模式)。

关键原则

首先,务必阅读 Programming in InterSystems IRIS

在业务服务中,可以访问关联适配器的属性和方法,这些适配器作为业务服务的 Adapter 属性提供。这意味着可以更改适配器的默认行为;这样做可能合适也可能不合适。记住封装原则很有用。封装的思想是适配器类应该负责技术特定的逻辑,而业务服务类应该负责生产特定的逻辑。

如果发现有必要在业务服务类中大量或频繁地改变适配器类的行为,那么创建适配器类的自定义子类可能更合适。请参阅不太常见的任务。

这个原则也适用于商业运作。

定义业务服务类

要创建一个业务服务类,定义一个类如下:

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

提示:如果只是希望业务服务定期唤醒和运行而不关心 IRIS 外部的事件,请使用适配器类 Ens.InboundAdapter

  • 类必须实现 OnProcessInput() 方法,如实现 OnProcessInput() 方法中所述。
  • 类可以添加或删除设置。请参阅添加和删除设置。
  • 类可以实现任何或所有启动和拆卸方法。请参阅覆盖启动和停止行为。
  • 类可以包含完成自身内部工作的方法。

有关业务服务类的示例,请参阅适配器指南。

实施 OnProcessInput() 方法

在业务服务类中, OnProcessInput() 方法可以具有以下通用签名:

Method OnProcessInput(pInput As %RegisteredObject, pOutput As %RegisteredObject) As %Status

这里的pInput是适配器要发送给这个业务服务的输入对象,pOutput是输出对象。

首先查看选择的适配器类。 建议编辑 OnProcessInput() 方法签名以使用适配器所需的特定输入参数。

OnProcessInput() 方法应该执行以下部分或全部操作:

  1. 可选地设置业务服务类的属性(在任何适当的时间)。最受关注的业务服务属性是 %WaitForNextCallInterval。它的值控制 IRIS 调用适配器的 OnTask() 方法的频率。

有关其他属性,请参阅 Ens.BusinessService的类参考。文章来源地址https://www.toymoban.com/news/detail-470717.html

  1. 如有必要,验证输入对象。
  2. 检查输入对象并决定如何使用它。
  3. 创建请求消息类的实例,这将是业务服务发送的消息。
  4. 对于请求消息,使用输入对象中的值适当地设置其属性。
  5. 确定要将请求消息发送到哪里。当发送消息时,将需要在生产中使用业务主机的配置名称。
  6. 将请求消息发送到生产(业务流程或业务操作)中的目的地。请参阅下一节。
  7. 确保设置输出参数 (pOutput)。通常,将其设置为等于您收到的响应消息。此步骤是必需的。
  8. 返回适当的状态。此步骤是必需的。

到了这里,关于第二十四章 开发Productions - ObjectScript Productions - 定义业务服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第二十四章 Unity 纹理贴图

    通常情况下,3D网格模型只能展示游戏对象的几何形状,而表面的细节则纹理贴图提供。纹理贴图通过UV坐标“贴附”在模型的表面。当然,这个过程不需要我们在Unity中完成,而是在建模软件中完成的。通常情况下,我们通过3ds max或者maya制作完网格模型后,需要进行一个“

    2024年02月05日
    浏览(33)
  • 第二十四章:索引的数据结构

    ​ 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比一本教课书的目录部分,通过目录中找到对应文章的页码,便可快速定位到需要的文章。 MySQL 中也是一样的道理,进行数据查找时,首先查看查询条件是否命中某条索引,符合则 通过索引查找 相关数据,如果

    2024年02月15日
    浏览(42)
  • 【正点原子STM32连载】 第二十四章 OLED显示实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html 本章我们来学习使用OLED液晶显示屏,在开发板上我们预留了OLED模块接口,需要准备一个OLED显示模块

    2024年02月02日
    浏览(51)
  • 第十五章 开发Productions - ObjectScript Productions - 开发Productions介绍

    互操作性产品允许连接可能使用不同通信协议和不同消息格式的系统。可以使用 Java 、 .NET 、 ObjectScript 、 SQL 或业务流程、数据转换和业务规则的图形编辑器来开发产品。 文档 互操作性生产概述 在 ObjectScript 中开发 使用 PEX 在 Java 或 .NET 中开发 使用 SQL 业务流程 ( BPL ) 数据

    2024年02月06日
    浏览(78)
  • 第十四章 ObjectScript - 系统函数

    本节重点介绍 ObjectScript 中一些最常用的系统函数。 这些函数的名称不区分大小写。 类库还提供了大量实用方法,可以像使用函数一样使用它们。 在给定一些输入的情况下,可以使用以下函数来选择一个值: $CASE 将给定的测试表达式与一组比较值进行比较,然后返回与匹配

    2024年02月10日
    浏览(28)
  • 第二十四节 异常

    10.3 异常 Python使用称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继续运行;如果未对异常进行处理,程序将停止并显示traceback,其 中包含有关异常的报告。 异常

    2024年02月13日
    浏览(51)
  • Vlan端口隔离(第二十四课)

    一、端口隔离 1、端口隔离技术概述 1)端口隔离技术出现背景:为了实现报文之间的二层隔离,可以将不同的端口加入不同的VLAN,但这样会浪费有限的VLAN ID资源。 2)端口隔离的作用:采用端口隔离功能,可以实现同一VLAN内端口之间的隔离。 3)如何实现端口隔离功能:只

    2024年02月15日
    浏览(32)
  • 第二十四节 连接到OneNET

    有了前面两个实验的经验,废话不多说,直接使用OneNET。 首先注册与登陆OneNET,然后进入开发者中心:https://open.iot.10086.cn/develop/global/product/#/public,选择公有协议产品,点击“添加产品”,填写产品相关的信息,联网方式选择wifi(其实我们是以太网,但是没有这个选项,那

    2024年02月05日
    浏览(53)
  • Java多线程&并发篇----第二十四篇

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 采用时间片轮转的方式。可以设置线程的优先级,会映射到下层的系统上

    2024年01月20日
    浏览(39)
  • C语言第二十四弹---指针(八)

    ✨ 个人主页:   熬夜学编程的小林 💗 系列专栏:   【C语言详解】   【数据结构详解】 指针 1、数组和指针笔试题解析  1.1、字符数组 1.1.1、代码1: 1.1.2、代码2: 1.1.3、代码3: 1.1.4、代码4: 1.1.5、代码5: 1.1.6、代码6: 总结    1.1.1、代码1: char arr[] = {\\\'a\\\',\\\'b\\\',\\\'c\\\',\\\'d\\\',\\\'e

    2024年02月20日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包