第八章 使用 ^%ZSTART 和 ^%ZSTOP 例程自定义启

2023-03-06  本文已影响0人  Cache技术分享

第八章 使用 ^%ZSTART 和 ^%ZSTOP 例程自定义启动和停止行为 - 设计注意事项

IRIS 可以在特定事件发生时执行自定义代码。需要两个步骤:

  1. 定义 ^%ZSTART 例程、^%ZSTOP 例程或两者。

    注意:^%ZSTART^%ZSTOP 不包含在 IRIS 中,必须由用户创建。

    在这些例程中,可以定义子例程以在特定活动开始或停止时执行。

    ^%ZSTART^%ZSTOP 必须在 %SYS 命名空间中创建和定义,尽管它们可以映射到非默认数据库。

  2. 使用管理门户配置 IRIS 以调用所需的子程序。

具体来说,如果定义例程 ^%ZSTART^%ZSTOP 并包含具有特定名称的子例程,系统会在活动开始或结束时自动调用这些子例程。子程序名称如下:

例如,当用户登录时,系统会自动调用 LOGIN^%ZSTART(如果已定义)并且已使用管理门户启用此子例程。

这些子例程并非旨在进行复杂的计算或长时间运行。长时间的计算或潜在的长时间操作(如网络访问)将延迟活动的完成,直到被调用的例程返回。在这种情况下,用户可能需要很长时间才能登录,或者 JOB 吞吐量可能会因为启动时间太长而减少。

注意:这些子程序作为正常 IRIS 操作的一部分被调用。这意味着异常终止 IRIS 的外部事件(例如电源故障)不会生成对 ^%ZSTOP 的调用。

注意:如果系统实现了 ^%ZSTOP,并且应用程序实现了一个或多个 $HALT 例程,则直到最后一个 $HALTHALT 命令终止时才执行 ^%ZSTOP 代码。 $HALT 例程未能发出其自己的 HALT 命令可能会阻止 ^%ZSTOP 代码运行。

设计注意事项

因为 ^%ZSTART^%ZSTOP 在某种程度上受限的环境中运行,设计者必须记住几件事,即:

注意:^%ZSTART^%ZSTOP 中的所有入口点都在系统操作的关键点调用,并且可能对系统操作甚至系统数据产生广泛影响。这些例程的特定用途使得这种高级特权成为必要。因此,必须确保这些入口点可以调用的所有代码都已经过全面测试。此外,不允许通过 XECUTE 或间接运行任何用户指定的代码。

注意:在升级时, IRIS 仅保留映射到 IRISSYS 数据库的 %Z* 例程,如果 .INT.MAC 代码可用,则重新编译它们。在其他数据库中保存例程是站点管理员的责任。

上一篇 下一篇

猜你喜欢

热点阅读