将多个方案链接在一起
您可以将方案链接在一起,允许一个方案触发另一个方案,并将第二个方案的数据输出返回到第一个方案。 这允许创建更多模块化方案,您无需在多个方案中复制方案部分。
您可以从一个父方案调用多个子方案,也可以从多个父方案调用一个子方案。 也可以嵌套子场景,从另一个场景调用一个场景。
当父方案等待子方案返回数据时,该时间不计入父方案的超时。 例如,父方案会调用5个子方案,每个子方案需要10分钟才能运行,总共运行50分钟。 父方案本身中的模块需要15分钟才能运行。 即使已过65分钟(已超过40分钟的超时限制),父方案也不会超时。
有关贵耻蝉颈辞苍性能护栏(包括超时)的详细信息,请参阅贵耻蝉颈辞苍性能护栏。
有关配置链模块的说明,请参阅链模块。
父方案和子方案
- 父项 ?方案调用另一个方案,使用? 链 > 调用子方案 ?模块。 它接收子方案的输出,可在后续方案模块中处理。
- 子 ?方案由父方案调用。 其触发模块接收来自父方案的数据,并将输出返回到父方案。
父方案需要来自子方案的响应。 当前不支持不返回数据的子方案。
链接方案中的数据结构
Workfront Fusion使用数据结构将信息从父方案传输到子方案。 数据结构在子方案中配置。 从父方案中选择子方案时,用作子方案输入的数据结构的字段将显示在父方案中。 您可以将值映射到这些字段,这些字段在触发时传递到子方案。
有关要在父方案和子方案中配置的模块的信息,请参阅链模块。
有关数据结构的信息,请参阅数据结构。
数据流
- 数据通过父方案流动。
- 数据到达调用子方案模块。 数据被映射到调用子方案模块中的字段,这些字段与子方案的触发器模块中使用的数据结构中的字段匹配。
- 调用子方案中的数据将传递到子方案。
- 子方案处理数据并执行操作。
- 子方案以返回至父模块的响应结束。
- 将返回响应输出到父模块传递给父方案。
- “调用子项”方案的输出是子方案的输出。 此输出稍后可在父场景中处理。
用例
考虑以下链接方案的示例用例:
-
可重复使用的逻辑:您可以为跨多个方案使用的重复操作链接方案。 例如,如果您有多个存档内容的方案,则可以创建一个名为“存档内容”的单个子方案,然后可以将其用作任何存档内容的工作流的子方案。
-
错误处理:组织通常在多个场景中具有相同的错误处理操作,例如将错误日志发送到数据存储并创建Slack通知的错误处理路由。 您可以使用这些操作创建一个子方案,并在多个方案中的错误处理路由时链接该方案。
-
扩展时间:对于运行时间较长的大型批处理操作,例如导出和导入文件时,可以使用链接。 如果文件很多,此操作需要花费一些时间。 由于子方案不计入父方案的超时,因此您可以使用多个子方案导出或导入文件以超过执行时间。
-
替换迭代器 ?将迭代器替换为子方案可以减少内存使用量,例如,在导致内存不足错误的迭代中执行复杂操作。 您可以为复杂操作创建单独的方案,并将迭代器替换为调用子方案模块
-
搜索并创建记录:例如,您可以创建搜索用户的方案。 如果存在,则架构会将这些受众添加为具有审核和批准权限的批准者。 如果它们不存在,则场景会创建请求管理员载入新用户。
查看链接方案的执行历史记录
您可以通过查看链中包含的每个方案的历史记录来查看链接方案的执行历史记录。 例如,父场景的执行历史记录将包含有关直接在父场景中处理的模块和数据的信息。 要查看子方案中处理的模块和数据的执行历史记录,请打开子方案并在其中查看执行历史记录。
我们建议使用“调用子方案”模块中的? 转到子方案 ?按钮来快速转到子方案,您可以在其中查看其执行历史记录。 子方案将在另一个浏览器窗口中打开,允许您同时查看父方案和子方案。
错误和未完成执行
错误处理
如果子方案出错,这可能会影响将数据取回给父方案。
我们建议在子方案中配置错误处理,以确保如果子方案中出现问题,父方案不会卡在等待子方案的响应。
最佳实践
链接场景时,请考虑以下最佳实践。
链接场景时避免出现递归
当场景触发其自身的新执行,从而触发新的执行,并以无限循环等形式出现时,会发生递归。
递归会给拥有递归方案的组织以及其他组织造成性能问题。
链接场景时,请遵循以下操作以避免递归:
- 确保? 子方案无法触发父方案。 例如,如果在创建请求时触发了父方案,请确保子方案不会创建请求。
- 确保? 子方案不相互调用。 例如,如果子方案A调用子方案B,请确保子方案B不调用子方案A。
- 确保? 方案不能调用自身。 例如,创建任务时会触发一个方案,该方案会创建两个任务。 新创建的任务都会再次触发场景,从而创建四个新任务。 每次创建任务时,都会触发场景,而每次场景运行时,任务数都会翻倍。 任务数量呈指数增长。
- 当场景导致递归时,贵耻蝉颈辞苍工程团队将停用它以防止进一步的性能问题。
- 由于递归是方案设计的结果,因此您必须通过某种方式设计方案,以确保方案不包含触发方案的操作。
使用错误处理以确保响应
由于父方案正在等待子方案的响应才可以继续,因此您必须确保已构建子方案,以便在遇到错误时提供响应。