第六十五章 开发Productions - ObjectScript Productions - Production品及其零部件的生命周期 - Runtime
Runtime
当Production运行时,业务服务会重复调用入站适配器的 OnTask() 方法。此 OnTask 循环由业务服务的 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() 方法。