第二十八章 开发Productions - ObjectScri

2023-06-07  本文已影响0人  Cache技术分享

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

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

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

介绍

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

image.png

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

业务操作负责以下活动:

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

关键原则

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

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

定义业务操作类

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

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

类应该定义一个至少包含一个条目的消息映射。消息映射是具有以下结构的 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 关联的操作方法。

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

上一篇 下一篇

猜你喜欢

热点阅读