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

第五十二章 开发Productions - ObjectScript Productions - 不常见的任务 - 在目标是动态的情况下渲染连接

第五十二章 开发Productions - ObjectScript Productions - 不常见的任务 - 在目标是动态的情况下渲染连接

在目标是动态的情况下渲染连接

当用户选择业务主机时,管理门户会自动显示与给定业务主机之间的连接。例如:

为此,IRIS 读取业务主机的配置设置并使用它们。

但是,如果业务服务在运行时动态托管其目标, IRIS 将无法自动显示此类连接。在这种情况下,要显示此类连接,请实施 OnGetConnections() 回调方法。 IRIS 在呈现配置图时自动调用此方法(默认情况下不执行任何操作)。

OnGetConnections() 具有以下签名:

ClassMethod OnGetConnections(Output pArray As %String, item As Ens.Config.Item) [ CodeMode = generator ]

其中参数如下:

  • pArray — 一个多维数组,其下标是此业务服务向其发送消息的项目的配置名称。例如,要向名为 ABCDEF 的业务主机发送消息,您的代码可以按如下方式设置 pArray
 set pArray("ABC")=""
 set pArray("DEF")=""
  • item — Ens.Config.Item对象表示此业务服务。

有关重写 OnGetConnections() 方法的示例,请使用 IDE 检查为与 X12 等电子数据交换协议一起使用而提供的内置业务服务。

使用 Ens.Director 开始和停止Production

在开发过程中,通常使用管理门户来启动和停止Production。对于实时部署的生产,建议使用配置生产中所述的自动启动选项。

另一种选择是在定义生产的名称空间中以编程方式启动或停止生产。为此,请在类的 Ens.Director中调用以下方法:

StopProduction()

停止当前正在运行的生产:

  Do ##class(Ens.Director).StopProduction()

StartProduction()

启动指定的Production,只要没有其他Production在运行:

  Do ##class(Ens.Director).StartProduction("myProduction")

RecoverProduction()

清理正在运行的Production的故障实例,以便可以在同一名称空间中运行新实例:

  Do ##class(Ens.Director).RecoverProduction()

在调用 RecoverProduction() 之前,不必调用 GetProductionStatus() 来查看生产是否异常终止。如果生产没有问题,该方法简单地返回。

GetProductionStatus()

此方法通过两个输出参数返回生产状态,这两个参数均通过引用传递。第一个参数返回Production名称,但仅当状态为“正在运行”、“已暂停”或“有问题”时才返回。第二个参数返回生产状态,它是一个等于以下常量之一的数值:

  • $$$eProductionStateRunning

  • $$$eProductionStateStopped

  • $$$eProductionStateSuspended

  • $$$eProductionStateTroubled

例如:


Set tSC=##class(Ens.Director).GetProductionStatus(.tProductionName,.tState) Quit:$$$ISERR(tSC) If tState'=$$$eProductionStateRunning { $$$LOGINFO($$$Text("No Production is running.")) Quit }

可以在 IRIS Production类之外的代码中使用生产状态宏,例如 $$$eProductionStateRunning,例如在通用类或例程中。为此,必须将以下语句添加到类中:

#include Ensemble

没有必要在Production类中执行此操作,例如在业务主机中。

Ens.Director提供了许多类方法,包括许多仅供 IRIS 内部框架使用的方法。 建议仅使用本书中记录的 Ens.Director方法,并且仅按记录使用。

注意: 建议不要使用 ^%ZSTART 例程来控制生产启动。 IRIS 启动机制更易于使用,并且与Production本身的联系更紧密。

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