当前位置: BACS用户手册 > 二次开发 >

配置诊断脚本

 

 

 

 

参阅安装目录下checkscript目录下相关检测脚本文件。诊断脚本是本系统推出的组态合理性检测及修复工具,收集整理了本系统在实际使用过程中,经常出现的配置不合理、垃圾堆积等问题,为新用户正常配置使用本系统提供了极大的帮助。阅读下述内容的过程请参阅随系统安装包的脚本文件,结合本文档,相信你一定可写出属于自己的检测脚本。

 

检测脚本

检测脚本采用XML格式进行编制,每个脚本包含一个检测项,总体格式举例如下:

 

<?xml version="1.0" encoding="UTF-8"?>

<SCRIPT SCORE="10">

          <NAME>[系统]系统用户配置信息</NAME>

          <DESC>若只有一个用户无法完成遥控操作等需要安全监督的操作。</DESC>

          <PROMPT>select '系统至少应有两个用户'</PROMPT>

          <SOURCE>DB</SOURCE>

          <PROCESS>UNREPAIR</PROCESS>

          <CHECK_EXPRESSION>select no from usercfg where (select count(*) from usercfg) &lt; 2</CHECK_EXPRESSION>

</SCRIPT>

 

脚本模板结构如下图:

 

<SCRIPT>

这是脚本根标识,

[SCORE]: 属性项,表示该检测项的分数。

 

<NAME>

检测项概要,必需。

简短描述检测项要完成的检测内容,如:“[系统]系统用户配置信息

 

<DESC>

检测项说明,必需。

详述检测项要检测的主要问题、来源及目的等,如:“若只有一个用户无法完成遥控操作等需要安全监督的操作。

 

<PROMPT>

问题描述,可选。

检测项可能会检测出多个存在的问题,该节描述问题该如何提示。如:“select '系统至少应有两个用户'“,又如:"select station.name,ykcfg.name from ykcfg join station on ykcfg.station = station.no where ykcfg.station = %d and ykcfg.no = %d"。

每个导出的列都应是字符串类型的。诊断工具会依次组织这些字段并用冒号(:)分隔。

注意:第一个事例中的两个格式符(%d),这是诊断工具内部非常重要的两个关键字,每个问题项将以此为唯一索引,若需对每个问题有不同的提示时,这两个关键字非常有用。称为KEY1和KEY2。关于这两个关键字在后续章节将进一步介绍。

 

<SOURCE>

检测项源,必需[DB 或FILE]

DB  – 数据库脚本

FILE – 磁盘文件

描述检测项的分类,二选一。

 

<PROCESS>

检测项处理标识,必需[PROMPT、REPAIR或UNREPAIR]

PROMPT    – 仅提示(暂不用)

REPAIR     – 可修复

UNREPAIR  – 不可修复

描述检测项的处理方式,三选一。

 

<PREPROCESS>

数据库预处理脚本集,可选

这部分脚本仅对数据库脚本有效,如临时表、用户定义函数、存储过程等高级SQL特性,可通过这部分进行描述。

 

<CHECK_EXPRESSION>

检测脚本,必需。

该节脚本是最关键的,对于DB脚本而言,需要特别注意记录集前两个域的输出格式必须是整型,这两个域将作为问题唯一性关键字KEY1和KEY2。如“select station,no from ykcfg where (closedown &amp; 0x2000) &gt; 0”,其中“STATION”和“NO”均为整型域,而且STATION + NO可唯一地确定一个遥控点。再参考一下PROMPT脚本中的事例“select station.name,ykcfg.name from ykcfg join station on ykcfg.station = station.no where ykcfg.station = %d and ykcfg.no = %d”和REPAIR_EXPRESSION脚本中的事例“update ykcfg set closedown = closedown &amp; 0xDFFF  where (station = %d) and (no = %d)”。

聪明的您应该可领会到了KEY1和KEY2的深层内含了。其中第一个占位符代表KEY1的值,第二个占位符代表KEY2的值。

该脚本运行后记录集中的每条记录均作为一个问题项存在。

 

对于FILE类检测项,该节脚本更简单易懂,若表示文件时间差时,用逗号分隔(,)后面为天数。如“DFRFiles\*.dat,7”表示后台安装目录DFRFiles子目录下一周前(7天)所有的扩展名为dat的文件

 

<REPAIR_EXPRESSION>

修复脚本,可选。

该节脚本仅对数据库脚本有效,用来对问题项进行修复。如“update ykcfg set closedown = closedown &amp; 0xDFFF  where (station = %d) and (no = %d)”。

 

<CLEAR>

数据库清理脚本集,可选。

这部分脚本仅对数据库脚本有效,完成对预处理部分产生的临时表、用户定义函数等的清理工作。

 

注意事项

XML中的特殊字符

不合法的XML字符必须被替换为相应的实体。主要有5个不合法字符:

 

不合法字符

实体

描述

<

&lt;

小于号

>

&gt;

大于号

&

&amp;

'

&apos;

单引号

"

&quot;

双引号

 

实体必须以符号"&"开头,以符号";"结尾。

注意:只有"<"字符和"&"字符对于XML来说是严格禁止使用的。剩下的都是合法的。为避免出错,使用实体是一个好习惯。