控制 runbook 活动

重要

此版本的 Orchestrator 已终止支持。 建议 升级到 Orchestrator 2022

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

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

重要

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

重要

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

活动发布的数据类型决定了可以为控制 Runbook 序列设置的条件类型。 某些活动发布二进制数据,而其他活动发布数字或文本数据。

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

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

注意

文本值不区分大小写。

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

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

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

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

使用嵌入循环重复活动

通过使用循环,你可以在 Runbook 中的任何位置构建自动重试和监视器。

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

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

循环针对传递到活动的每个传入数据段运行一次。 例如,假设有一个 Runbook 使用查询 数据库 活动,后跟 追加行。 如果 查询数据库 活动返回了三行,则 “追加行” 活动将运行三次。 如果在 “追加行” 活动上有一个循环,它将运行三个单独的循环。 在第一个数据项循环访问 “追加行 ”活动后,下一个项将遍历 “追加行 ”并循环,直到它退出,然后第三个数据项开始。 处理完所有三个项后,Runbook 中的下一个活动将运行。

配置循环

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

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

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

退出和请勿退出条件

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

重要

请勿退出 ”选项卡上的规则取代了“ 退出 ”选项卡上的规则。

使用 Or 条件联接每个选项卡中的规则。 只有选项卡的条件之一为真,整个选项卡才能为真。

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

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

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

    重要

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

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

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

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

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

  6. 选择“完成”。

设置 Runbook 的计划

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

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

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

重要

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

注意

如果将 Runbook 安排在系统时钟向前调整一小时时跳过的一小时启动,则会跳过该启动时间,并且 Runbook 在下一个计划时间启动。 如果计划一个 Runbook 在发生两次的一小时内启动,因为系统时钟向后调整了一小时,则 Runbook 将启动两次。

注意

业务流程协调程序不支持使用多选移动多个计划。 要将多个日程安排移到其他文件夹中,你必须单独移动每个日程安排。

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

按照以下步骤创建计划:

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

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

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

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

    星期数:选择此选项并选择此计划允许 Runbook 运行一周中的几天。

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

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

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

  5. 选择“ 小时 ”以打开“ 计划小时数 ”对话框。

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

    允许 (蓝色):分配你选择的时间周期作为允许 Runbook 运行的时间。

    拒绝 (白色):分配你选择的时间周期作为禁止 Runbook 运行的时间。

  7. 选择“确定” 。

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

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

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

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

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

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

  14. 选择“完成”。

使用函数操作数据

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

通过插入函数操作 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') Text - 要转换为小写的文本。 Lower('This Will Be Converted To Lowercase') 返回“this will be converted to lowercase”
Field - 返回特定位置中的文本。 Field('Text', 'Delimiter', Field Number) Text - 被搜索的文本。

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

Field Number - 所返回的字段位置(从 1 开始)。
Field('John;Smith;9055552211', ';', 2) 返回“Smith”
Sum - 返回一组数字的和。 Sum(firstNumber, secondNumber, thirdNumber, ...) Number - 正在添加数字。 你可以放置任意一组数字,每个数字用逗号 (,) 分隔。 Sum(2,3,4,5) 返回“14”
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 - 被修剪的文本。 剪裁 ('删除前导空格和尾随空格。“) 返回”删除前导空格和尾随空格”。
Len - 返回文本的长度。 Len('Text') Text - 所度量的文本。 Len('Measure this text') 返回 17

注意

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

后续步骤

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