文章
· 七月 21, 2023 阅读大约需 3 分钟

第六十五章 开发Productions - ObjectScript Productions - Production品及其零部件的生命周期 - Runtime

第六十五章 开发Productions - ObjectScript Productions - Production品及其零部件的生命周期 - Runtime

Runtime

Production运行时,业务服务会重复调用入站适配器的 OnTask() 方法。此 OnTask 循环由业务服务的 CallInterval 设置和 %WaitForNextCallInterval 属性控制,如下所示:

  1. 业务服务调用入站适配器的 OnTask() 方法。
  2. OnTask()IRIS 生产外部检查业务服务感兴趣的输入事件:
  • 如果找到输入,OnTask() 将调用关联业务服务对象的 ProcessInput() 方法。
  • 如果未找到输入,OnTask() 将控制权返回给业务服务,业务服务等待下一个 CallInterval 过去,然后返回到步骤 1
  • 可能存在多个输入事件。例如,如果业务服务使用File.InboundAdapter,则可能有多个文件在指定目录中等待。

如果有多个输入事件:

  • 通常,OnTask() 方法会根据需要多次调用 ProcessInput() 来处理所有可用的输入事件,直到找不到更多输入事件为止。
  • 或者,入站适配器可以限制 OnTask() 在每个 CallInterval 中仅调用一次 ProcessInput(),即使存在多个输入事件也是如此。 OnTask() 在处理找到的第一个事件后进入休眠状态,而不是处理所有输入事件。
  1. ProcessInput() 将业务服务 %WaitForNextCallInterval 属性设置为 0 (false) 并调用 OnProcessInput() 来处理输入事件。
  2. 完成后,ProcessInput() 将控制返回给 OnTask()
  3. 此时,OnTask() 可以将 %WaitForNextCallInterval 设置为 1 (true)。这限制了业务服务在每个 CallInterval 中仅处理一个输入事件,即使存在多个输入事件也是如此。

通常希望业务服务立即处理所有可用的输入事件,因此通常不希望在此步骤执行任何更改 %WaitForNextCallInterval 的操作。它应该保留 ProcessInput() 设置的 0(假)值。

适配器基类 Ens.InboundAdapter 具有调用 ProcessInput()OnTask() 方法,将 %WaitForNextCallInterval 设置为 1,然后返回。

提示:如果只是希望业务服务在每个 CallInterval 唤醒并运行其 ProcessInput() 方法一次而不关心 IRIS 之外的事件,请在使用适配器类 Ens.InboundAdapter

  1. OnTask() 返回。
  2. 业务服务测试其 %WaitForNextCallInterval 属性的值:

- 如果为 1 (true),业务服务将等待 CallInterval 结束,然后返回到步骤 1
- 如果为 0(假),业务服务立即返回到步骤 1。直到 OnTask() 发现没有更多输入(请参阅步骤 2),CallInterval 才会发挥作用。

Production Shutdown

Production停止时,会发生以下与业务服务相关的事件:

  1. IRIS 禁用每项业务服务;不再接受此制作的传入请求。
  2. 调用每个入站适配器中的 OnTearDown() 方法。
  3. 所有入站适配器和业务服务对象都将被销毁,并且它们的后台进程将被终止。
  4. 每个业务服务的 OnProductionStop() 类方法都会针对生产中该类的每个配置项调用一次。

当系统管理员禁用业务服务或根据其配置的计划变为非活动状态时,Production将继续运行,但关联的入站适配器将关闭,并执行其 OnTearDown() 方法。

讨论 (0)1
登录或注册以继续