您可以创建触发器来对变更请求执行已配置的动作。这些动作可以基于变更请求或其子实体进行配置,包括审批级别、审批、任务、注释、邮件响应(来自用户)。通过触发器支持的动作包括创建任务、发送通知、发起Webhook调用或使用脚本执行自定义动作。触发器可以根据指定的条件或无条件配置来执行这些动作。
支持的子实体: 审批级别、审批、任务、备注和用户的电子邮件回复
所需角色: SDAdmin
若要配置变更/子实体触发器,
转到设置 > 自动化 > 触发器。
在左上角的下拉菜单中选择变更触发器 。
名称: 为触发器提供一个唯一的名称。
描述: 添加触发器的描述。
触发器已应用到: 选择触发器的应用选项(变更或变更子实体)。可用选项包括:审批级别、审批、任务、注释、邮件响应(来自用户)
选择触发器的执行条件。可用选项包括创建后、编辑后和被删除。您可以选择一个或多个选项。
注意: 对于邮件响应(来自用户)子实体,不支持编辑后和被删除选项。
选择触发器的执行区间。可用选项包括任何时间、在工作时间或非工作时间。只能选择一个选项。
启用触发器: 使用此选项启用或禁用触发器。
示例
自定义函数允许您对变更请求执行复杂的动作。例如,您可以编写并执行一个自定义函数,来关闭由特定变更发起的所有相关请求。
若要将自定义函数配置为触发器动作,
从选择自定义动作下拉菜单中选择自定义函数。
在弹出的选择自定义函数窗口中,从左侧窗格中选择您要选择的自定义函数,并点击选择。 您还可以创建一个新的自定义函数。若要创建新的自定义函数,请点击左上角的新建自定义函数,并进行配置。
在触发器执行时,使用任务将自定义任务添加到变更请求中。无论触发器已应用到字段选择的值如何,任务只会添加到相应的变更请求中。
若要将任务配置为触发器动作,
从选择自定义动作下拉菜单中选择任务。
在弹出的选择任务窗口中,从左侧窗格中选择您要选择的任务,并点击选择。您还可以创建一个新的任务。若要创建新的任务,请点击左上角的新建任务,并进行配置。
在触发器执行时,使用Webhook对第三方应用程序执行动作。
若要将Webhook调用配置为触发器动作,
从选择自定义动作下拉菜单中选择Webhook。
在弹出的选择Webhook窗口中,从左侧窗格中选择您要选择的Webhook,并点击选择。您还可以创建一个新的Webhook。若要创建新的Webhook,请点击左上角的新建Webhook,并进行配置。
使用通知,在触发器执行时向特定用户发送电子邮件通知。
若要将通知配置为触发器动作,
从选择自定义动作下拉菜单中选择通知。
在弹出的选择通知窗口中,从左侧窗格中选择您要选择的通知,并点击选择。 您还可以创建一个新的自定义变更通知。若要创建新的通知,请点击左上角的新建通知,并进行配置。
使用Zoho Circuit创建嵌套任务,只需少量代码或无需代码即可实现工作流程自动化。
将Circuit配置为触发操作,
从选择自定义动作下拉菜单中选择执行Circuit。
在弹出的选择Circuit窗口中,选择左窗格中列出的Circuit,然后点击选择。也可以创建新Circuit。为此,请点击页面顶部的创建新Circuit。
您可以从触发器列表视图管理触发器。要管理触发器,请转至设置 > 自动化 > 触发器 > 变更触发器。
要查看触发器明细,请点击触发器名称。
要编辑触发器明细,请针对要编辑的触发器点击动作,选择编辑,进行必要的变更,然后点击保存。
要启用/禁用触发器,请使用状态栏下的切换按钮。或者,针对触发器点击动作,然后选择适当的选项。
要删除触发器,请针对触发器点击动作并选择删除。
此外,您还可以通过选择所需的触发器,然后从动作下拉菜单中选择适当的选项,批量执行启用、禁用或删除触发器等动作。
自定义函数示例
自定义函数,用于在变更关闭期间关闭由变更发起的请求。
id = changeObj.get("id");
params = Map();
// fetching requests initiated by this change
response = zoho.sdp.invokeurl
[
url :"/api/v3/changes/" + id + "/initiated_requests"
type :GET
parameters:params
];
requests = response.get("initiated_requests");
close_success_requests = "Closed Requests ID : ";
close_failed_requests= "Unclosed Requests ID : ";
for each request in requests
{
associated_request_id = request.get("request").get("id");
// trying to close the request
close_response = zoho.sdp.invokeurl
[
url :"/api/v3/requests/" + associated_request_id + "/close"
type :PUT
];
// request close is unsuccessful
if(close_response.get("response_status").get("status_code") != 2000 && close_response.get("response_status").get("messages").get(0).get("status_code") != 4007)
{
close_failed_requests= close_failed_requests+ request.get("request").get("id") + ", ";
note = zoho.sdp.invokeurl
[
url :"/api/v3/requests/" + associated_request_id + "/notes"
type :POST
parameters:{"input_data":{"request_note":{"description":"Associated change with ID " + id + " is closed"}}}
];
}
else if(close_response.get("response_status").get("messages").get(0).get("status_code") == 4007) // request is already closed
{
close_success_requests = close_success_requests + request.get("request").get("id") + ", ";
}
else
{
close_success_requests = close_success_requests + request.get("request").get("id") + ", ";
}
}
description = close_success_requests + "<br>" + close_failed_requests+ "<br>";
change_description = "<h3>Change Initiated Requests are closed as the change has been moved to closed state<br>Status:-<br></h3>" + description;
notes = zoho.sdp.invokeurl
[
url :"/api/v3/changes/" + id + "/notes"
type :POST
parameters:{"input_data":{"note":{"description":change_description}}}
];