用 Lua 编程语言编写的脚本可用于描述检查过程控制规则中标记值的算法。Lua 脚本不仅可以检查标记的值,而且可以向已注册的事件和流程日志添加各种信息。
Lua 脚本必须由一个或多个函数组成。在所有包含 Lua 脚本的规则中,函数名称必须是唯一的。用于跟踪标记值的函数称为触发函数。触发函数必须返回 true 值才能注册事件。
如果在脚本中指定了变量,则该变量必须在该特定脚本中(仅在该脚本中应用)或在单独的全局脚本中(在所有具有 Lua 脚本的规则中应用)进行初始化。全局脚本还可以包含可在 Lua 脚本规则中使用的辅助函数。
只要函数中使用的任何标记的值发生更改,触发函数就会被调用。当接收到函数中使用的标记的所有值时,将首次调用该函数。
为了获取标记的值,函数代码包含如下所示的条目:
tag'main_tag_parameters[:field_name][@modifier]'[.transmission_direction]
其中:
main_tag_parameters是识别应用程序中标记的强制性参数。主要参数由标记表中的以下参数组成:此参数与下一个参数以冒号(:)分隔。
此参数与下一个参数以斜线(/)分隔。
field_name是标记表中“结构值”中定义的标记字段结构内的字段的名称。如果某个字段被嵌入到其他字段中,则其名称将与所有父字段的名称一起显示,以冒号分隔。如果未指定 field_name 参数,则检查标记字段结构内的主值。修饰符决定数据如何被表示和获取。可使用修饰符:type 表示传递的值是获取的值的数据类型。str 表示获取的值被转换成字符串值。loc 表示传递的值是为获取的值分配的本地化名称(如果没有本地化名称,获取的值将被转换为字符串值)。ts 用于获取最后标签值更新的时间戳(UTC,从 1970.01.01 开始以微秒为单位)。修饰符不适用于字段。如果没有指定修饰符,则使用实际获得的值。在这种情况下,值的数据类型不会改变。
transmission_direction 定义获取的值的传输方向。传输方向可以通过下列参数之一来定义:r 表示从设备读取该值时已收到该值。w 表示在将值写入设备时已收到该值。rw 表示获取的值的任意方向。如果未定义传输方向,则使用从任意方向获取的值。
示例:
其中:
|
获取标记值的记录可用于表达式(例如,为变量分配值或比较值)。
要使用 Lua 脚本执行各种操作,可以使用服务器支持的辅助功能。辅助功能的名称以下划线(_)开头。
通过 Lua 脚本添加信息的主要辅助功能如下:
_AddEventParam('parameter_name', parameter_value)
可以为参数定义任何名称和值。要在事件中使用参数及其值,必须在事件类型参数中指定此参数,如下所示:$extra.<parameter_name>。
Filter 字样)。将向该日志中添加由函数的参数(变量或常量)定义的记录:_WriteErrorLog(function_argument)
_WriteWarningLog(function_argument)
_WriteInfoLog(function_argument)
_WriteDebugLog(function_argument)
print(function_argument1, function_argument2,…)
函数参数定义的变量或常量在日志记录中以制表符分隔。
如果记录级别低于为该进程设置的日志记录级别,则不会在日志中创建记录。