美文网首页收藏
第九章 使用 ^%ZSTART 和 ^%ZSTOP 例程自定义启

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

作者: Cache技术分享 | 来源:发表于2023-03-07 07:22 被阅读0次

    第九章 使用 ^%ZSTART 和 ^%ZSTOP 例程自定义启动和停止行为 - 启用 %ZSTART 和 %ZSTOP

    启用 %ZSTART%ZSTOP

    一旦例程被设计、开发、编译并准备好进行测试,就可以通过管理门户启用各个入口点。通过依次选择“系统管理”、“配置”、“其他设置”和“启动设置”导航到“启动设置”页面,然后编辑相应的个人设置:

    • SystemStart, SystemHalt

    • ProcessStart, ProcessHalt

    • JobStart, JobHalt

    • CallinStart, CallinHalt

    要停用一个或多个入口点,请使用相同的过程,但将值更改为 false

    调试 ^%ZSTART^%ZSTOP

    在最终环境中调试 ^%ZSTART^%ZSTOP 的机会非常有限。如果发生错误,错误将写入操作员消息日志,这是运行这些例程时的当前设备。该文件是 messages.log,位于 Manager 的目录中。

    该消息指示失败的原因和检测到错误的位置。这可能与程序逻辑或流程中实际发生错误的地方不同。开发人员应该从提供的信息中推断出错误的性质和位置,或者修改例程以便将来的测试提供更多关于错误性质的证据。

    删除 %ZSTART^%ZSTOP

    强烈建议在删除例程之前通过管理门户禁用入口点选项。如果门户警告需要重启 IRIS 才能生效,请在继续之前执行此操作。这保证在删除入口点时不会执行任何入口点。

    请记住,^%ZSTART^%ZSTOP(以及任何支持例程)是永久存储的。要删除它们的所有痕迹,请通过管理门户删除它们。

    示例

    以下示例演示了用于跟踪系统活动的简单日志。它显示了 ^%ZSTART^%ZSTOP 的示例,为方便起见,这两个示例都使用了第三个示例例程 ^%ZSSUtil 的子例程。

    ^%ZSSUtil 例子

    该例程有两个公共入口点。将一行写入操作员消息日志文件。另一个将名称-值对列表写入本地日志文件。这两个文件都位于管理器的目录中,该目录由类中 %Library.FileManagerDirectory() 方法返回。

    %ZSSUtil ;
        ; this routine packages a set of subroutines
        ; used by the %ZSTART and %ZSTOP entry points
        ;
        ; does not do anything if invoked directly
        quit
    
    #define Empty ""
    #define OprLog 1
    
    WriteConsole(LineText) PUBLIC ;
        ; write the line to the messages log
        ; by default the file messages.log in the MGR directory
        new SaveIO
    
        ; save the current device and open the operator console
        ; set up error handling to cope with errors
        ; there is little to do if an error happens
        set SaveIO = $IO
        set $ZTRAP = "WriteConsoleExit"
        open $$$OprLog
        use $$$OprLog
        ; we do not need an "!" for line termination
        ; because each WRITE statement becomes its
        ; own console record (implicit end of line)
        write LineText
        ; restore the previous io device
        close $$$OprLog
        ; pick up here in case of an error
    WriteConsoleExit ;
        set $ZTRAP = ""
        use SaveIO
        quit
    
    WriteLog(rtnname, entryname, items) PUBLIC ;
        ; write entries into the log file
        ; the log is presumed to be open as
        ; the default output device
        ;
        ; rtnname: distinguishes between ZSTART & ZSTOP
        ; entryname: the name of the entry point we came from
        ; items: a $LIST of name-value pairs
        new ThisIO, ThisLog
        new i, DataString
    
        ; preserve the existing $IO device reference
        ; set up error handling to cope with errors
        ; there is little to do if an error happens
        set ThisIO = $IO
        set $ZTRAP = "WriteLogExit"
    
        ; construct the name of the file
        ; use the month and day as part of the name so that
        ; it will create a separate log file each day
        set ThisLog = "ZSS"
                    _ "-"
                    _ $EXTRACT($ZDATE($HOROLOG, 3), 6, 10)
                    _".log"
    
        ; and change $IO to point to our file
        open ThisLog:"AWS":0
        use ThisLog
    
        ; now loop over the items writing one line per item pair
        for i = 1 : 2 : $LISTLENGTH(items)
        {
            set DataString = $LISTGET(items, i, "*MISSING*")
            if ($LISTGET(items, (i + 1), $$$Empty) '= $$$Empty)
            {
                set DataString = DataString
                               _ ": "
                               _ $LISTGET(items, (i + 1))
            }
            write $ZDATETIME($HOROLOG, 3, 1),
                  ?21, rtnname,
                  ?28, entryname,
                  ?35, DataString, !
        }
    
        ; stop using the log file and switch $IO back
        ; to the value saved on entry
        close $IO
        ; pick up here in case of an error
    WriteLogExit ;
        set $ZTRAP = ""
        use ThisIO
        quit
    

    相关文章

      网友评论

        本文标题:第九章 使用 ^%ZSTART 和 ^%ZSTOP 例程自定义启

        本文链接:https://www.haomeiwen.com/subject/rbvvldtx.html