业务规则 - 执行脚本操作

通过业务规则中的执行脚本操作,您可以验证请求并更新字段值,以实现请求工作流自动化。对于涉及复杂条件的请求验证,或使用第三方application输入的请求,您可以使用脚本来完成验证。 

您可以对通过浏览器、API、移动端和邮件传入的请求执行业务规则脚本。

使用场景:

  • 根据其他模块或application中的字段值更新请求字段。 

用户为某个资产提交了一条服务请求。

在这种情况下,您可以编写脚本自动检查资产可用性,然后将其分配给该请求,并更新资产模块中的资产状态。

  • 在任意时间点阻止请求操作。

您只需定义在请求处理的任意阶段,请求人或技术人员哪些操作是不被允许的,无论是数据修改还是操作本身。

用户提交了一条关于新笔记本电脑的服务请求。 在此请求处理过程中,您可以在以下情况下使用业务规则脚本执行:

  • 在审批人批准请求后,技术人员或请求人不应能够更改请求输入内容。
  • 除非请求已获批准,否则不应允许技术人员将请求状态更改为  等待采购
  • 当技术人员将物品交付给请求人时,技术人员只应被允许将请求状态更改为已解决,而不能更改为已关闭。只有请求人在核实收到的物品后,才应被允许关闭该请求。

 

  • 从创建阶段就阻止请求。 

用于防止同一请求人针对相同分类、子分类和项目重复提交请求。

 

在业务规则中添加命令

  • 转到操作,点击选择自定义操作 >> 执行 脚本
  • 在显示的文本框中,输入包含脚本的文件名,然后点击保存

示例配置:

以从 ServiceDesk Plus 创建 Jira 工单为例。要为此操作配置自定义脚本,

  1. 创建一个文本文件,并写入以下命令:

  py CreateJiraTicket.py $COMPLETE_V3_JSON_FILE
  1. 将文件保存为create-jira-ticket.txt 并放置在[SDP_HOME]/integration/custom_scripts/executor_files目录下。

  2. 配置自定义操作时,在执行器字段中输入文件名。

  3. 填写完其他所有详细信息后,点击保存

 


执行期间,application将从给定的文本文件中获取命令。

支持的参数—$COMPLETE_V3_JSON_FILE

$COMPLETE_V3_JSON_FILE 表示一个文件路径,该文件以 JSON 格式包含完整的请求详细信息、之前的字段值和更新后的字段值。该文件是临时文件,脚本执行后会被自动删除。

临时 JSON 文件会在 SDP_Home\integration\custom_scripts\request\ 目录中创建,文件名为 <requestid_timestamp>.json。

 

$COMPLETE_V3_JSON_FILE 结构


 

{
  "request": {
    <V3 格式中的所有请求属性>
  },
  "diff": {
    "old": {
      "request": {
        "priority": {
          "id": "4",
          "name": "高"
        },
        "urgency": {
          "id": "3",
          "name": "普通"
        },
        "impact_details": "对服务器有高影响"
      }
    },
    "new": {
      "request": {
        "priority": {
          "id": "1",
          "name": "低"
        },
        "urgency": {
          "id": "4",
          "name": "低"
        },
        "impact_details": "对服务器影响较低"
      }
    }
  },
  "LOGIN_NAME": "administrator",
  "LOGGEDIN_USER_TYPE": "Technician",
  "LOGGEDIN_USER_NAME": "administrator",
  "OPERATION_TYPE": "add"
}

 

提供给 $COMPLETE_V3_JSON_FILE 临时文件的输入

输入为 JSON 格式。这里的request键包含用户提供的字段以及系统按 V3 API 格式填充的字段。

 

输入文件中提供的附加信息

  1. LOGIN_NAME
  2. LOGGEDIN_USER_NAME
  3. LOGIN_USER_ID
  4. LOGGEDIN_USER_TYPE
  5. OPERATION_TYPE

 

自定义脚本的输出 JSON 格式

请求文件对应的脚本应返回一个 JSON,其中包含成功/失败状态以及一条消息,该消息将显示在请求的历史记录选项卡中。

通用格式:

{

  "result": "success",

  "message": "消息"

}
  • Result 表示该操作的成功/失败状态。
  • Message 是要显示在请求历史记录选项卡中的信息。

 

服务器脚本必须将输出 JSON(如有)写入提供给脚本的同一个临时文件中。您不得调用外部 API 来更新同一个请求,因为这样将导致更新后的值无法传递到级联业务规则中。

 

支持的操作

您可以通过返回的 JSON 执行更新否决 操作。 

所有可通过请求 API 更新的字段,也都可以使用自定义脚本进行更新。

更新操作示例           

{
  "result": "success",
  "message": "Python 脚本示例",
  "operation": [
    {
      "OPERATION_NAME": "UPDATE",
      "INPUT_DATA": [
        {
          "request": {
            "urgency": {
              "name": "高"
            },
            "group": {
              "name": "网络"
            },
            "priority": {
              "name": "高"
            }
          }
        }
      ]
    }
  ]
}

 

否决操作示例

{
  "result": "success",
  "operation": [
    {
      "OPERATION_NAME": "NEGATE",
      "REASON": "否决原因"
    }
  ]
}

 

点击此处查看以下使用场景的示例脚本:

除非请求已获批准,否则不得允许技术人员将请求状态更改为等待采购

 

 

 

要了解有关编写自定义脚本的更多信息,请点击此处