第六十五章 开发Productions - ObjectScript Productions - Production品及其零部件的生命周期 - Runtime
Runtime
当Production
运行时,业务服务会重复调用入站适配器的 OnTask()
方法。此 OnTas
k 循环由业务服务的 CallInterval
设置和 %WaitForNextCallInterval
属性控制,如下所示:
- 业务服务调用入站适配器的
OnTask()
方法。 -
OnTask()
在IRIS
生产外部检查业务服务感兴趣的输入事件:
- 如果找到输入,
OnTask()
将调用关联业务服务对象的ProcessInput()
方法。 - 如果未找到输入,
OnTask()
将控制权返回给业务服务,业务服务等待下一个CallInterval
过去,然后返回到步骤1
。 - 可能存在多个输入事件。例如,如果业务服务使用
File.InboundAdapter
,则可能有多个文件在指定目录中等待。
如果有多个输入事件:
- 通常,
OnTask()
方法会根据需要多次调用ProcessInput()
来处理所有可用的输入事件,直到找不到更多输入事件为止。 - 或者,入站适配器可以限制
OnTask()
在每个CallInterval
中仅调用一次ProcessInput()
,即使存在多个输入事件也是如此。OnTask()
在处理找到的第一个事件后进入休眠状态,而不是处理所有输入事件。
-
ProcessInput()
将业务服务%WaitForNextCallInterval
属性设置为0 (false)
并调用OnProcessInput()
来处理输入事件。 - 完成后,
ProcessInput()
将控制返回给OnTask()
。 - 此时,
OnTask()
可以将%WaitForNextCallInterval
设置为1
(true
)。这限制了业务服务在每个CallInterval
中仅处理一个输入事件,即使存在多个输入事件也是如此。
通常希望业务服务立即处理所有可用的输入事件,因此通常不希望在此步骤执行任何更改 %WaitForNextCallInterval
的操作。它应该保留 ProcessInput()
设置的 0
(假)值。
适配器基类 Ens.InboundAdapter
具有调用 ProcessInput()
的 OnTask()
方法,将 %WaitForNextCallInterval
设置为 1
,然后返回。
提示:如果只是希望业务服务在每个 CallInterval
唤醒并运行其 ProcessInput()
方法一次而不关心 IRIS
之外的事件,请在使用适配器类 Ens.InboundAdapter
。
-
OnTask()
返回。 - 业务服务测试其
%WaitForNextCallInterval
属性的值:
- 如果为
1 (true)
,业务服务将等待CallInterval
结束,然后返回到步骤1
。 - 如果为
0
(假),业务服务立即返回到步骤1
。直到OnTask()
发现没有更多输入(请参阅步骤2
),CallInterval
才会发挥作用。
Production Shutdown
当Production
停止时,会发生以下与业务服务相关的事件:
-
IRIS
禁用每项业务服务;不再接受此制作的传入请求。 - 调用每个入站适配器中的
OnTearDown()
方法。 - 所有入站适配器和业务服务对象都将被销毁,并且它们的后台进程将被终止。
- 每个业务服务的
OnProductionStop()
类方法都会针对生产中该类的每个配置项调用一次。
当系统管理员禁用业务服务或根据其配置的计划变为非活动状态时,Production
将继续运行,但关联的入站适配器将关闭,并执行其 OnTearDown()
方法。
网友评论