文章目录
- 第五十二章 开发Productions - ObjectScript Productions - 不常见的任务 - 在目标是动态的情况下渲染连接
- 在目标是动态的情况下渲染连接
- 使用 `Ens.Director` 开始和停止`Production`
- `StopProduction()`
- `StartProduction()`
- `RecoverProduction()`
- `GetProductionStatus()`
第五十二章 开发Productions - ObjectScript Productions - 不常见的任务 - 在目标是动态的情况下渲染连接
在目标是动态的情况下渲染连接
当用户选择业务主机时,管理门户会自动显示与给定业务主机之间的连接。例如:
为此,IRIS
读取业务主机的配置设置并使用它们。
但是,如果业务服务在运行时动态托管其目标, IRIS
将无法自动显示此类连接。在这种情况下,要显示此类连接,请实施 OnGetConnections()
回调方法。 IRIS
在呈现配置图时自动调用此方法(默认情况下不执行任何操作)。
OnGetConnections()
具有以下签名:
ClassMethod OnGetConnections(Output pArray As %String, item As Ens.Config.Item) [ CodeMode = generator ]
其中参数如下:
pArray
— 一个多维数组,其下标是此业务服务向其发送消息的项目的配置名称。例如,要向名为ABC
和DEF
的业务主机发送消息,您的代码可以按如下方式设置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
本身的联系更紧密。