控制 Runbook 活动

您可以在Runbook 设计器中通过将活动连接在一起设置 Runbook 的操作顺序。 这些链接称为 智能链接 ,因为你可以将其配置为控制从一个活动传递到另一个活动的数据的类型。 还可以通过设置这些操作何时使用嵌入式循环运行的逻辑来控制 runbook 何时完成活动。 最后,可以使用文本和数字操作在活动之间传递时操作数据,或设置操作顺序的条件。 本文介绍如何控制 Runbook 中的数据的排序和操作。

Runbook 中的活动将按照你通过将它们连接在一起而设置的顺序完成。 可以使用链接属性“包括”和“排除”选项卡来控制活动之间流动的数据。 例如,只能包含要传递给满足特定条件的后续活动的数据。

重要

智能链接“排除” 选项卡的规则优先于智能链接“包括” 选项卡上的规则。

重要

每个选项卡的规则都通过使用“或” 条件联接。 只有选项卡上定义的条件之一为真,此条件才能为真。

活动发布的数据类型决定了你可以为控制 runbook 序列设置的标准类型。 某些活动发布二进制数据,而另一些活动则发布数字或文本数据。

如果已发布的数据是文本数据,则可以使用以下任一项来设置执行、包含或排除的条件。

条件 说明
contains 指定的文本出现在已发布数据项值中的某个位置。
不包含 指定的文本不出现在已发布数据项值中的某个位置。
开头为 已发布数据项值以指定的文本开头。
结尾为 已发布数据项值以指定的文本结尾。
匹配模式 已发布数据项值与特定正则表达式匹配。
与模式不匹配 已发布数据项值与特定正则表达式匹配。
equals 已发布数据项值与指定的文本完全匹配。
不等于 已发布数据项值与指定的文本不匹配。

注意

文本值不区分大小写。

还可以使用正则表达式设置条件来执行模式匹配。

如果已发布的数据是数字数据,则可以使用以下任一项来设置执行、包含或排除的条件。

条件 说明
equals 已发布数据项值完全等于指定值。
不等于 已发布数据项值不等于指定值。
小于 已发布数据项值小于指定值。
大于 已发布数据项值大于指定值。
小于或等于 已发布数据项值小于或等于指定值。
大于或等于 已发布数据项值大于或等于指定值。
介于 已发布数据项值介于两个指定值之间。

为添加或删除智能链接条件的步骤选择所需的选项卡:

使用嵌入式循环重复活动

通过使用循环,可以在 Runbook 中的任何位置设置自动重试和实现监控。

可以为任何活动创建一个循环,以便在操作失败或测试活动输出信息以获取有效数据时重试操作。 还可以使用这些机制在工作流中生成等待条件。

为活动配置循环时,该循环将继续使用相同的输入数据运行,直到达到所需的退出循环条件。 以与智能链接配置类似的方式生成循环的退出条件。 可以将活动中的任何已发布数据项用作退出配置或不退出配置的一部分。 常见已发布数据中包含特殊数据项,例如 循环:尝试次数循环数:总持续时间,使你可以在循环条件中使用循环本身的信息。

循环对传递给活动的每条传入数据运行一次。 例如,请考虑一个 Runbook,其中使用了查询数据库活动,后面跟着追加行。 如果查询数据库活动返回三行,那么附加行活动将运行三次。 在追加行活动上如果设置了循环,它将分别运行三个循环。 第一个数据项遍历 追加行 活动后,下一项将遍历 追加行 并循环,直到它退出,然后第三个开始。 处理完所有三个项目后,runbook 中的下一个活动将运行。

配置循环

  1. 右键单击 runbook 中的活动以选择循环。 此时会打开“ 循环属性 ”对话框。

  2. “常规 ”选项卡上,选择“ 启用”。

  3. 在“尝试间隔延迟”框中,输入每次尝试运行活动之间暂停的秒数。

退出和不退出条件

退出 ”选项卡上的规则指定确定循环是否退出的条件。 “ 请勿退出 ”选项卡上的规则指定导致循环继续的条件。

重要

不退出”选项卡上的规则取代了“退出”选项卡上的规则

每个选项卡中的规则都使用 Or 条件联接。 选项卡上只有一个条件必须为 true,才能使整个选项卡为 true。

为添加或删除 退出 条件的过程选择所需的选项卡:

按照以下步骤添加退出条件:

  1. “循环属性 ”对话框中,选择“ 退出 ”选项卡或 “不退出 ”选项卡,然后选择框中列出的条件,选择“ 添加 ”以添加条件。

    重要

    若要更改构成规则的值,必须选择链接条件的每个带下划线部分。

  2. 在条件中选择列出的活动以打开“ 已发布数据 ”对话框。

  3. 选中“ 显示通用返回的数据 ”框以显示所有活动共有的属性。

  4. 从已发布的数据中选择一个属性,然后选择“ 确定”。 根据属性返回的数据的类型,条件表达式将会发生更改。

  5. 若要更改表达式的不同部分,请选择带下划线的文本,然后选择或输入适当的值。

  6. 选择“完成”。

为 Runbook 设置计划

可以设置一个计划来控制 runbook 的运行时间。 例如,有些时间不适合于运行某些 Runbook,例如在正常工作时间内备份主服务器上的 Runbook。 你可以创建一个将依据复杂间隔(例如每个月的第一个和第三个星期一及星期四,这些日期为假日时除外)运行的日程安排。

日程安排使用运行 Runbook 的 Runbook 服务器的系统时钟。 这样,日程安排将能够在虚拟机环境中运行,并甚至能在系统时钟由于转入或离开夏令时而发生调整的情况下继续运行。

在禁止时间之前启动的 Runbook 将在完成之前一直运行,即使在禁止时间已到时它们仍在进行处理。 处理启动后,它们不会中断。

重要

可以修改计划的访问权限,但 Runbook 服务器不会强制实施这些权限。

注意

如果 Runbook 的计划开始小时为将系统时钟向前调一小时时跳过的小时,则会跳过该开始时间,并且 Runbook 将在下一个计划时间开始。 如果 Runbook 的计划开始小时由于将系统时钟向后调一小时而出现了两次,则该 Runbook 将开始两次。

注意

Orchestrator 不支持通过多选来移动多个计划。 要将多个日程安排移到其他文件夹中,你必须单独移动每个日程安排。

选择所需的选项卡以创建计划、将计划分配给 Runbook 或从 Runbook 中删除计划:

按照以下步骤创建计划:

  1. “连接”窗格中,右键单击“计划”文件夹或计划文件夹的子文件夹,指向“新建”,然后选择“计划”以打开新建计划”对话框。

  2. “常规 ”选项卡上的 “名称 ”框中,输入计划的名称。

  3. “说明 ”框中,输入描述或说明计划用途的说明。

  4. 选择“ 详细信息 ”选项卡。选择此计划允许 Runbook 运行的天数:

    星期:选择此选项,并选择此日程安排允许 Runbook 运行的星期日期。

    次数:选择日程安排允许 Runbook 运行的月份中的星期。

    月份中的天:选择此选项,并选择此日程安排允许 Runbook 运行的月份中的天。 通过输入日期号来指定月份中的天。 你可以使用连字符来描述范围,并使用逗号来分隔条目。 例如,键入 1,3 包括月份的第一天和第三天。 如果输入 1-21 ,则将包括该月的第一天至第二十一天。 你可以将两者结合使用来创建月份里的日期的复杂描述。 输入 all 以指定月份的所有天数。 输入 last 以指定月份的最后一天。

    你无法使用全部最后作为天数范围的一部分。 此外,如果输入的范围为 5-31,则此范围适用于所有月份,包括 28、29、30 和 31 天的月份。

  5. 选择“工作时间”以打开“计划工作时间”对话框。

  6. 选择并拖动以选择一周中的一组小时。 对话框底部的文本显示所选时间段。 然后,选择以下项之一:

    允许(蓝色);将您选择的时间段设定为允许 Runbooks 运行的时间。

    拒绝 (白色):将您选择的时间段分配为不允许 Runbook 运行的时间。

  7. 选择“确定”

  8. 选择“异常”选项卡。该列表显示“详细信息”选项卡中定义的规则例外的所有天数。

  9. 选择“添加”以打开“日期”对话框。

  10. 指定日期,然后选择 “允许 ”或 “禁止 ”以允许或不允许 Runbook 在该日期运行,然后选择“ 确定”。 条目将出现在列表中。

  11. 若要修改异常项,请选择它,然后选择“ 修改”。 若要删除“异常”条目,请选择它,然后选择“ 删除”。

  12. 要修改日程安排,请双击“日程安排”

  13. 要删除日程安排,请右键单击“日程安排” ,然后选择“删除”

  14. 选择“完成”。

使用函数操作数据

您可能需要从文本文件、返回的数据或其他来源操作字符串数据,并将其转换为可用于运行手册活动的形式。 此外,还可以执行简单的算术运算,例如进行加法和减法运算,以及进行除法和乘法运算。 例如,你可以通过使用“文本文件管理” 活动从文本文件中提取文本,从文本中修剪前导空格和尾随空格,然后检索可作为已返回数据项传递到其他活动的特定文本部分。

可以通过插入函数来操作 Runbook 中的数据。 数据操作函数必须括在方括号(“[”和“]”)中。 例如:

[Upper('this will be inserted in upper case')]

当活动运行时,示例中的文本“this will be inserted in uppercase”将被替换为“THIS WILL BE INSERTED IN UPPERCASE”。

函数区分大小写。 例如,将处理 Upper('Text'),但不会处理 upper('Text')。

下表列出了 Runbook 支持的函数。

函数和定义 使用情况 参数 示例
Upper - 将文本转换为大写。 Upper('Text') Text - 要转换为大写的文本。 Upper('this will be converted to uppercase') 返回“THIS WILL BE CONVERTED TO UPPERCASE”
Lower - 将文本转换为小写。 Lower('Text') 文本 - 转为小写的文本。 Lower(‘这段文字会被转换为小写’)返回‘这段文字会被转换为小写’
Field - 返回特定位置中的文本。 字段('文本', '分隔符', 字段编号) Text - 被搜索的文本。

Delimiter - 分隔每个字段的字符。

Field Number - 所返回的字段位置(从 1 开始)。
Field('John;Smith;9055552211', ';', 2) 返回“Smith”
Sum - 返回一组数字的和。 求和(第一个数, 第二个数, 第三个数, ...) Number - 正在添加数字。 你可以放置任意一组数字,每个数字用逗号 (,) 分隔。 Sum(2,3,4,5) 结果是“14”
Diff - 返回两个数字的差。 Diff(Number1、Number2、 <Precision>) Number1 - 被减的数字。

Number2 - 将从 Number1 中减去的数字。

精度<可选> - 结果四舍五入到的小数位数。
Diff(9, 7) 返回“2”

Diff(9.3, 2.1, 2) 返回“7.20”
Mult - 返回一组数字的积。 Mult(firstNumber, secondNumber, thirdNumber, ...) Number - 所相乘的数字。 你可以放置任意一组数字,每个数字用逗号 (,) 分隔。 Mult(2, 3, 4) 返回「24」
Div - 返回两个数字的商。 Div(Number1、Number2、 <Precision>) Number1 - 被除的数字。

Number2 - 将除 Number1 的数字。

精度<可选> - 结果四舍五入到的小数位数。
Div(8, 4) 返回“2”

Div(9, 2, 2) 返回“4.50”
Instr - 返回文本在另一个文本内第一次出现的位置。 Instr ('SearchText', 'TextToFind') SearchText - 被搜索的文本。

TextToFind - 所搜索的文本。
Instr('This is a string that is searched', 'string') 返回 11
Right - 返回从完整文本的右边算起的文本子集。 Right('Text', Length) Text - 全文。

Length - 从右边算起将返回的字符数。
Right('Take from the right', 9) 返回“the right”
Left - 返回从完整文本的左边算起的文本子集。 Left('Text', Length) Text - 全文。

Length - 从左边算起将返回的字符数。
Left('Take from the left', 4) 返回“Take”
Mid - 返回从完整文本的中间算起的文本子集。 Mid('Text', Start, Length) Text - 全文。

Start - 文本中你希望从该处返回字符的起始位置。

Length - 从起始位置算起将返回的字符数。
Mid('Take from the middle', 5, 4) 返回“from”
LTrim - 去除文本开头的空格。 LTrim('Text') Text - 要修剪前导空格的文本。 LTrim('仅删除前导空格)。“)返回”仅删除前导空格。 “
RTrim - 去除文本末尾的空格。 RTrim('Text') Text - 要修剪尾随空格的文本。 RTrim(' 仅删除尾随空格。') 返回'仅删除尾随空格。'
Trim - 修剪文本中的前导空格和尾随空格。 Trim('Text') Text - 被修剪的文本。 Trim(' 删除前导空格和尾随空格 ') 返回 '删除前导空格和尾随空格'。
Len - 返回文本的长度。 Len('Text') Text - 所度量的文本。 Len('Measure this text') 返回 17

注意

函数区分大小写。 例如,将处理 Upper('Text'),但不会处理 upper('Text')。

后续步骤

若要阅读创建示例 Runbook 的引导演练,请参阅 创建和测试示例 Runbook