用 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
,…)
函数参数定义的变量或常量在日志记录中以制表符分隔。
如果记录级别低于为该进程设置的日志记录级别,则不会在日志中创建记录。