第五十五章 开发Productions - ObjectScript Productions - 不常见的任务 - 实现 OnTask() 方法
实现 OnTask()
方法
OnTask()
方法是入站适配器实际工作发生的地方。该方法旨在执行以下操作:
- 检查传入事件。入站适配器可以通过许多不同的方式来做到这一点:例如,它可以等待传入的
I/O
事件(例如从TCP
套接字读取),或者它可以定期轮询外部数据(例如文件)的存在)。
大多数预构建入站适配器都有一个名为 CallInterval
的设置,用于控制调用 OnTask()
之间的时间间隔。也可以使用这种方法。
- 将此事件中的信息打包到业务服务类所需类型的对象中。
- 调用业务服务对象的
ProcessInput()
方法。 - 如有必要,向外部系统发送确认已收到事件。
- 如果有更多输入数据,
OnTask()
可以执行以下任一操作:
- 重复调用
ProcessInput()
直到检索到所有数据。 - 每个
CallInterval
仅调用一次ProcessInput()
,即使存在多个输入事件也是如此。
在设计入站适配器时,请务必记住 OnTask()
方法必须定期将控制权返回给业务服务;也就是说,OnTask()
方法不得无限期地等待传入事件。相反,它应该等待一段时间(例如 10
秒)并将控制权返回给业务服务。原因是业务服务对象必须定期检查 IRIS
内的事件,例如Productions
正在关闭的通知。
相反,OnTask()
方法有效地等待事件也很重要——坐在一个紧密的循环中轮询事件会浪费 CPU
周期并减慢整个生产过程。当 OnTask()
方法需要等待时,它应该以让其进程进入休眠的方式等待(例如等待 I/O
事件,或使用挂起命令)。
如果类是Production
适配器的子类,那么它可能会实现 OnTask()
方法;因此,子类可能需要覆盖入站适配器类指定的不同方法。
创建出站适配器或子类化出站适配器
本节介绍如何创建出站适配器或将其子类化。
出站适配器简介
出站适配器负责向外部系统发送请求。下图显示了Production
如何中继传出请求。

出站适配器是一段代码,将外部应用程序或外部数据库的本机编程接口适配为Production
可理解的形式。通过业务操作为生产提供服务的每个外部应用程序或数据库都必须有自己的出站适配器。然而,并不是外部应用程序或数据库中的每个方法都需要映射到出站适配器;仅那些生产所需的操作。与入站适配器一样,创建出站适配器不需要对外部应用程序本身进行任何更改。而且,适配器本身在概念上很简单:它在Production
与Production
之外的特定应用程序或数据库之间中继请求、响应和数据。
出站适配器类与业务操作类一起工作。一般来说,出站适配器包含通用的、可重用的代码,而业务操作将包含特定于生产的代码(例如特殊的处理逻辑)。通常,将使用 IRIS
内置适配器类之一来实现出站适配器类。
定义出站适配器
要创建出站适配器类,请按如下方式创建一个类:
- 类必须扩展
Ens.OutboundAdapter
。 - 类必须定义一个或多个方法以供相应的业务操作调用。每个出站适配器都可以自由定义自己的
API
(方法集)以供关联的业务操作类使用。 - 类可以定义设置。请参阅添加和删除设置。
- 类可以实现任何或所有启动和拆卸方法。请参阅覆盖启动和停止行为。
- 类可以包含生产凭证。请参阅在适配器类中包含凭据。
- 类可以包含完成其自身内部工作的方法。
网友评论