变更方案编写说明
本文具体介绍变更方案中步骤与连线。
变更步骤说明
基础步骤
开始步骤

开始步骤整个方案唯一。
开始步骤的下一步会是变更工单的起始步骤。
开始步骤下一步有且只能有一个。
结束步骤

结束步骤整个方案唯一。
变更工单到结束步骤时整个工单结束。
执行确认

变更工单到执行确认步骤时,工单状态变为待处理/waiting,需要人工选择下一步。
可以添加多个,添加方式:将左侧流程节点中的⾃动步骤拖⼊右侧画布中,然后模板选择manual_approve。
结单完成

变更工单到该步骤时,工单状态变为已完成/completed,下一步强制是结束步骤。
可以添加多个,添加方式:将左侧流程节点中的⾃动步骤拖⼊右侧画布中,然后模板选择close_complete。
结单拒绝

变更工单到该步骤时,工单状态变为已拒绝/rejected,下一步强制是结束步骤。
可以添加多个,添加方式:将左侧流程节点中的⾃动步骤拖⼊右侧画布中,然后模板选择close_reject。
自动化模板
添加方式:将左侧流程节点中的⾃动步骤拖⼊右侧画布中,然后可以在框中输入模板名,可以选择网络自动化中的设备模板和用户模板,不可以为空。
步骤标题:用户自定义,每个步骤不要重复,以免难以区分。
入参配置:
"(步骤输出)xxxx"即标题为"xxxx"步骤的整体返回, xxxx.yyy即为步骤返回里键"yyy"的对应值。
"(全局输⼊)global.input"即⽅案的整体入参dict,global.input.xxxx即为⽅案⼊参⾥键"xxxx"的对应值。
"(全局变量)global.variable.xxx",当有其他步骤输出参数设置为"xxx"的全局变量时,可以选择。
设置全局变量:
"."代表步骤的整体返回。
若模板设置了出参列表,则可以从步骤的整体返回里取对应键名的值。
当自动化任务执行成功,并且取到的值非None时,工单全局变量才会更新。
工单展示
普通自动化任务步骤执行结束,工单中展示如下,会展示任务执行成功/失败,点击设备回显,可以查看任务的设备回显,点击返回结果,可以查看步骤的返回,点击标题超链接,可以跳转到自动化任务,查看任务详情。

当自动化任务执行成功,并且返回满足特定的格式,工单会有特殊的展示。
格式1示例
{ "content": [ { "hostname": "name-A", "command": [ "cmd1", "cmd2" ] }, { "hostname": "name-B", "command": [ "cmd1", "cmd2", "cmd3" ] } ], "status": "success", "message": "标签xxx" }
展示效果如下:
格式说明:
返回为dict类型。
返回中message对应的值为string类型。
返回中status对应的值为string类型,当值为success|ok时,展示为成功状态。
返回中content对应的值为list类型,长度不超过1000。
content中每个元素为dict类型,dict中hostname对应的值为string类型,command对应的值为list类型,长度不超过1000,并且每个元素都为string。
格式2示例:
[ { "data": [ { "hostname": "name-A", "command": [ "cmd1", "cmd2" ], "label": "说明1" }, { "hostname": "name-B", "command": [ "cmd1", "cmd2", "cmd3" ], "label": "说明2" } ], "result": "success", "label": "label1" }, { "data_role": "report-fail", "label": "label2", "result": "failure", "extra": [ [ "A", "xxx" ], [ "B", "yyy" ] ] } ]
或者
{ "task_report": [ { "data": [ { "hostname": "name-A", "command": [ "cmd1", "cmd2" ], "label": "说明1" }, { "hostname": "name-B", "command": [ "cmd1", "cmd2", "cmd3" ], "label": "说明2" } ], "result": "success", "label": "label1" }, { "data_role": "report-fail", "label": "label2", "result": "failure", "extra": [ [ "A", "xxx" ], [ "B", "yyy" ] ] } ] }
展示效果如下:
格式说明:
返回为list类型或者返回为dict类型,task_report对应的值为list类型,长度大于0,且不超过1000。
list中每个元素为dict类型,并且满足下面两种格式之一。
dict中不含data_role, lable对应值为string类型,result对应值为string类型,当值为success|ok时,展示为成功状态,data对应值为list类型,长度不超过1000,每个元素为dict,hostname和lable对应值为string类型,command对应值为list类型,长度不超过1000,每个元素为string类型。
dict中data_role对应值为report-fail,lable对应值为string类型,result对应值为string类型,当值为success|ok时,展示为成功状态,extra对应值为list类型,长度不超过1000,每个元素为长度为2的list,list中每个元素为string类型。
格式3示例:
{ "conn_table": [ { "col_B": "val_b1", "col_A": "val_a1" }, { "col_B": "val_b2", "col_A": "val_a2" } ] }
展示示例如下:点击导出可以下载表格
格式说明:
返回为dict类型。
返回中conn_table对应的值为string类型,长度大于0,且不超过1000。
conn_table中每个元素都为dict类型,conn_table[0]的大小不超过50,所有dict的键值需要为string类型。
其他步骤
定时步骤
步骤说明:可以在指定时间执行结束的步骤。
添加方式:将左侧流程节点中的自动步骤拖⼊右侧画布中,然后模板选择Timing。
参数说明:
delay_seconds:延迟执行几秒,优先生效,*表示忽略。
week:星期几,支持逗号隔开多个,*表示任意。
hour:几点,支持多个逗号隔开,*表示任意。
minute:几分,支持多个逗号隔开,*表示随机。
示例:
delay_seconds为"3600"时,表示一个小时后执行结束,假如当前时间为2022-05-20 11:20:03开始执行该步骤,那么会在2022-05-20 12:20:03之后自动执行成功到下一步。
delay_seconds, week, hour, miniue值分别为"*", "6,7", "20", "0"时,表示下一个周六或者周日的20:00,假如当前时间为2022-05-20 11:20:03开始执行该步骤,那么会在2022-05-21 20:00:00之后自动执行成功到下一步。
选择立即执行/失败终止可以终止倒计时,将步骤置为成功/失败,进入下一步。
当传入参数有问题,导致计划执行时间生成失败时,执行时间会变为XXXX-XX-XX XX:XX:XX,此时步骤不会自动结束倒计时。
表格步骤
步骤说明:表格操作:展示、调整和导出。
添加方式:将左侧流程节点中的自动步骤拖⼊右侧画布中,然后模板选择TableStep。
参数说明:
conn_table: 表格数据,示例:[{"col_A": "val_a1", "col_B": "val_b1"},{"col_A": "val_a2", "col_B": "val_b2"}]。
options:表格展示调整的附加属性,包括:可调整列名adaptable_cols、展示列名display_cols, 示例:{"adaptable_cols": ["col_b"], "display_cols": ["col_A", "col_B"]}。
工单展示示例:可以修改可调整列的值,更新数据。
重要会对传入的数据进行调整,conn_table中不符合格式的数据会被剔除。
当options中不存在adaptable_cols时,表格只做展示,跳过用户确认步骤,当display_cols为空时,取conn_table[0]元素的键值。
adaptable_cols不超过25,display_cols不超过25,conn_table长度不超过1000。
更新步骤
步骤说明:实现人工修改参数的步骤。
添加方式:将左侧流程节点中的自动步骤拖⼊右侧画布中,然后模板选择UpdateStep。
参数说明:
input:方案内想要修改的任意入参和变量,格式随意。
返回说明:
output:人工修改后的变更值。
示例:当input传入的参数值为{"key": "val"}时,展示如下
用户可以对值进行更新,需要是JSON格式,例如输入true点确定,可以得到如下的任务返回
人工步骤
步骤说明:可以人工设置执行成功/失败的步骤。
添加方式:将左侧流程节点中的自动步骤拖⼊右侧画布中,然后模板选择ManualStep。
参数说明:
description: 类型string,人工步骤说明。
示例:当description传入的参数值为"人工步骤说明\n1. aaa\n2. bbb\n3. ccc"时,展示如下

用户需要选择成功或者失败,方框中可以填入备注,如上图点击确认后,步骤返回如下:

当description传入的参数不是string类型的时候,会自动将对象进行JSON序列化,转换成string类型。
变更连线说明
直接跳转:跳转条件。
任务成功:步骤执行成功时满足跳转条件。
任务失败:步骤执行失败时满足跳转条件。
据任务返回值判断:根据步骤执行返回值判断是否满足跳转条件。
运算符支持&&, ||, ==, !=, >=, <=, >, <, !=, !。
&&和||不能同时使用。
执行==与!=判断时,会强制转换为string类型,去除前后空格后,进行判断。
执行>=,<=,>和<判断时,会强制转换为int类型,进行判断。
当表达式计算结果失败时,按false处理。
示例:
当条件是$.self.job_return_value > 0时, 任务返回为1,或者"1"时,条件满足。
当条件是$.self.job_return_value.status == ok,任务返回为{"status": "ok"}时,条件满足。
强制选择:需要人工确认下一步。
当没有符合条件的下一步时,会提供方案所有步骤进行选择。
当符合条件的下一步超过1时,需要人工确认下一步。