在 Keeper 预设的事件中,只有发送邮件、请示接口、执行指定的程序(脚本)或重启任务。显然满足不了常规的业务需求,比如打电话、发短信、发送企业微信或钉钉消息等。虽然可以通过执行指定的程序实现,但是如果每一个调度作业都配置一次又太麻烦了。Keeper 提供了自定义事件的方法,可以把自定义事件理解为是一个“函数”。能够通过程序扩展是 Keeper 与其他调度工具的最大区别。在“系统”->“Keeper 监控”->“自定义事件”中找到自定义事件页面。
自定义事件的各个参数解释如下:
事件标签是显示在调度作业事件列表中的名称,用于说明事件的功能。可以通过输入框中的默认值的方式定义双语:
不是这种 Json 格式的即为单语言形式,根据需要选择。
事件名称可以是“拨打电话给”、“发送企业微信消息给”(用户信息中包含了企业微信字段)、“发送短信给”等等。
可以向自定义的事件传递参数,这些参数可以传递给实现事件逻辑的程序。参数类型可以是:
事件应用范围指在哪些任务状态下可以触发这个自定义事件,可以多选。
自定义事件支持使用 PQL 过程、Shell 命令或 Python 脚本来实现。如果使用 Java 书写逻辑,可以先打成 jar 包,然后使用 Shell 调用。
在事件逻辑编码过程中,可以使用一些内置的参数或变量,分别说明如下:
job_id
调度作业的ID。title
调度作业的标题。task_id
任务ID。status
任务状态。task_time
任务创建时间,格式为yyyyMMddHHmmss00
。record_time
任务每次执行的时间,格式为yyyy-MM-dd HH:mm:ss
。event_limit
事件触发限制条件,由逗号分隔的多个值,比如auto_start,manual_start
。可选值4
个值分别有auto_start
、manual_start
、auto_restart
、manual_restart
,分别对应自动启动、手工启动、自动重启和手工重启,意义详见调度作业事件中的说明。value
事件参数的值。如果是角色选项,是由逗号分隔的多个值,比如_OWNER,_LEADER
,最多可选4
个值,分别为所有者_OWNER
,团队负责人_LEADER
,普通管理员_KEEPER
和超级管理员_MASTER
。这些内置的值可以作为参数和变量调用。如果以参数形式调用,可使用格式#{name}
,如#{task_id}
;如果以变量形式调用,可使用格式$name
,如$task_id
。建议在 PQL 过程中使用变量格式调用,在 Shell 或 Python 中使用参数格式调用。
在事件参数类型为“角色选项”时,还支持额外的一些参数或变量:
owner
所有者详细信息leader
团队负责人详细信息keeper
普通管理员详细信息master
超级管理员详细信息users
所有选中角色的详细信息以上几个变量类型均为数据表格。当事件参数值选中对应的角色时,其相应变量的表格中就会存有用户的详细信息;如果没有选中某个角色,其对应变量的表格为空。这几个表格的字段名有:
id
用户在 Qross 系统中的唯一idusername
用户名,同登录名,如zhangsan
fullname
用户全名,一般为中文名称,如张三
email
邮件地址,如zhangsan@company.com
,发送邮件时可以作为收件地址使用personal
带用户名的邮件地址,格式为用户全名<邮件地址>
,如张三
,发送邮件时可以作为收件地址使用mobile
手机号码wechat_work_id
企业微信id在 PQL 中这几个用户变量可以直接使用或遍历,如
在 Shell 或 Python 中可使用嵌入式 PQL 进行值加工然后传递,如
上例中<%= $owner COLUMN 'mobile' JOIN ',' %>
表示将表$owner
中mobile
列的值连成一个由逗号分隔的字符串。不仅可以输出值,也可以通过嵌入式 PQL 实现更复杂的逻辑。
建议使用 PQL 编写自定义事件逻辑,以下几个由 PQL 写成的事件示例可供参考。
自定义事件时,接口操作用得最多。如短信、电话语音、企业微信、钉钉等都要请示接口。
电话语言接口示例:
发邮件功能在默认事件中已实现。
参考链接