更改自定义函数

更改自定义函数可用于更改自定义触发器。您可以将更改自定义函数作为自定义操作和全局函数来执行。自定义操作可以在更改自定义触发器中直接调用,而全局操作可以在更改自定义操作中调用。

要创建更改自定义函数,请转到管理 > 问题/变更管理 > 变更自定义函数

 

自定义操作

自定义操作是可执行的自定义函数,允许用户在 ServiceDesk Plus 和其他外部application中操作数据。自定义函数基于 Deluge(Zoho 的专有脚本语言)构建。

自定义操作可用于“更改自定义触发器”,以对变更、其他模块以及外部application执行操作。

请使用以下说明来创建、启用、禁用和删除自定义操作。

  • 使用 新建 按钮创建自定义操作。
  • 操作 按钮允许您批量删除、禁用和启用自定义操作。要修改单个自定义操作,请使用显示在该自定义操作旁边的图标。请注意,只有处于活动状态的自定义操作才能在上述配置中使用。
  • 使用提供的字段输入关键字以搜索自定义操作。使用顶部的筛选器可显示在特定功能中使用的自定义操作。

 

添加新的自定义操作

在自定义操作列表视图页面中,单击 新建

 

在显示的页面中,为您的自定义操作提供名称和说明。

 

使用名为 Deluge 脚本编辑器的简单拖放界面来构建您的自定义操作。

 

如下图所示,'changeObj''context' 将作为参数传递给自定义函数:

 

 

您必须以 changeObj 作为参数来编写自定义函数。

 

执行自定义函数后,将按以下格式返回 Map 数据类型:

{
"message":"执行成功",
"status":"success/failure"
}

 

您可以通过从自定义函数返回 map 来更新变更字段、添加注释以及更新变更角色。这些自定义函数中使用的格式与 Python 脚本和类相同。有关更多详细信息,请访问此页面

 

新的字段值必须按照如下所示的特定格式从自定义函数返回:

 

让我们考虑一个示例函数,将变更主题更新为“Firewall Upgrade”,并将优先级更新为“High”。

returnJson = Collection();
changeID = changeObj.get("id");
instanceJson = context.get("instance");
helpdeskID = instanceJson.get("id");
inputData = {"change": {"title":"Firewall Upgrade","priority":{"name":"High"}}};
resp = invokeurl
[
url: "https://servername:portnumber/api/v3/changes/" + changeID 
type: PUT
parameters: {"input_data": inputData,"TECHNICIAN_KEY":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","PORTALID":helpdeskID}
];

response_status = resp.get("response_status");
if("success".equals(response_status.get("status"))) {
	returnJson.insert("result":"success");
}
else {
	returnJson.insert("result":"failure");
}
return returnJson;

 

在变更自定义函数中,您可以调用全局函数,以存储连接外部application、通用功能和配置所需的重要信息。

要查看 Deluge 的使用案例,请访问此页面

脚本测试执行

编写自定义函数后,您可以按照以下步骤进行测试:

  • 单击 保存并测试
  • 从显示的变更列表中选择一个示例变更,然后单击 下一步
  • 将传递给自定义函数的数据会显示在参数 'changeObj' 下。
  • 单击 执行

 

如果您在测试自定义函数时使用 invokeurl 进行任何 API 调用,则该 API 将被调用。请确保不要调用可能导致意外后果的 API。

 

调试提示

测试自定义函数时,您可以使用名为 info 的语句来调试代码并输出结果。例如,为了了解 changeObjcontext 的结构,您只需运行以下脚本并查看响应。

 

info
;
info context;
return true;

 

有关 Deluge 的更多详细信息,请访问 Deluge 帮助指南