跳转到内容

执行指令

执行指令 用于在一个节点中执行 XML 编排片段。它适合高级用户把已有指令按 XML 写入节点,并在工作流运行时按顺序执行。

指令标识:ExecuteCommandNode
指令类型:通用指令
指令描述:通过 XML 编排动态执行一个或多个工作流指令

工作流支持「可视化编排」和「代码编排」两种创建方式。执行指令 本身是一个可视化节点,节点内填写 XML;如果需要通过代码创建流程,也应只把它当作执行 XML 片段的节点来使用。

方式怎么用适合人群
可视化编排(推荐先学)拖入「执行指令」节点,在右侧表单选择 XML 并填写代码内容熟悉平台指令标识、需要动态组合多个节点的用户
代码编排(Python)在 Python 流程中优先调用具体业务指令;需要动态片段时使用「执行指令(XML)」节点承载 XML需要复用脚本、批量生成流程或接入外部 XML 片段的用户

第一次使用建议先用普通可视化节点跑通流程,再把确实需要动态生成的部分迁移到 执行指令。这样更容易定位是业务参数问题,还是 XML 拼接问题。

  • 需要根据上游结果动态生成一段 XML 指令编排。
  • 需要一次执行多个已有指令,但普通画布节点不方便复用这段组合。
  • 需要把外部系统生成的 XML 流程片段接入工作流。
  • 需要迁移或调试已有 XML 编排。

不建议把普通流程全部塞进 执行指令。普通节点日志更直观,也更适合新手逐步排查问题。

  • XML 格式合法,标签闭合、引号和特殊字符都已处理。
  • 指令名称大小写与对应指令文档中的「指令标识」一致。
  • 每个指令的参数名、类型和输出变量都符合对应指令文档。
  • 涉及点击、输入、提交等 UI 动作时,仍然需要配合等待、元素定位和异常处理。
  • 高风险动作不要由动态 XML 直接生成并执行,建议增加人工确认或白名单约束。
执行指令

下面用一个常见场景演示:打开后台页面并等待主内容区域出现。按 4 步即可跑起来:

  1. 在工作流画布中添加 执行指令 节点。
  2. 代码类型 中选择 XML。
  3. 代码内容 中填写 XML 编排片段:
<OpenUrl url="https://admin.example.com/dashboard" />
<WaitForElementPresent
selector="//*[@id='main-content']"
timeout="10000"
outKey="isReady"
/>
  1. 点击运行,确认页面已打开,且等待节点返回成功结果。
界面名称代码属性名类型必填默认值说明
代码类型codeTypeEnum-要执行的代码类型。本文只建议使用 XML 编排,选择 XML 后在代码内容中填写指令 XML。
代码内容codeContentString-要执行的 XML 内容,不能为空。XML 中的指令名、参数名和参数值需符合对应指令文档。
入参inputListString-高级选项。传递给执行内容的输入参数,JSON 格式,例如 [{"name":"input1","value":"test"}]
出参outputListString-高级选项。需要从执行结果中提取的输出参数,JSON 格式,例如 [{"name":"output1"}]
是否发送消息sendMsgFlagBooleanTrue是否发送节点消息。
界面名称代码属性名类型必填说明
将结果保存至outKeyString存储执行结果的输出变量名,用于保存提取到的输出参数集合,例如 executeResult
  • XML 能被正常解析。
  • XML 中每个指令都能按顺序执行。
  • 关键输出变量能在下游节点中引用。
  • 运行日志能定位到具体执行的指令和结果。

运行后你会看到(以上面场景为例):

  • 浏览器打开 https://admin.example.com/dashboard
  • 等待节点找到 //*[@id='main-content'],输出变量 isReady 为成功结果。
  • 如果配置了 outKey,下游节点可以引用保存的执行结果。
执行指令

该节点失败处理默认为「报错中止」(STOP_ON_FAILURE):任一内部指令执行出错都会中断当前流程并报错,需要静默跳过时请显式配置失败处理策略。

现象 / 报错原文可能原因处理建议
XML 解析失败标签未闭合、引号错误、特殊字符未转义先检查 XML 格式,再处理变量拼接
提示找不到指令指令名称大小写错误或指令不存在对照对应指令页的指令标识
参数无效参数名或类型不符合指令定义回到具体指令页核对参数表
后续节点拿不到结果未配置 outKeyoutputList,或变量名不一致明确每个关键输出变量,并保持上下游变量名一致

代码编排以 Python 为主。普通场景建议直接调用具体业务指令;只有确实需要动态片段时,再使用执行指令(XML)。

# 推荐:在 Python 中直接调用具体业务指令,便于排查和复用
bots.openUrl(url="https://admin.example.com/dashboard")
bots.waitForElementPresent(
selector="//*[@id='main-content']",
timeout=10000,
outKey="isReady",
)

如果你想在工作流中通过节点动态编排指令,可使用 执行指令(XML)节点。

Q1:普通用户是否需要使用这个节点?

Section titled “Q1:普通用户是否需要使用这个节点?”

A: 通常不需要。普通流程优先使用可视化节点或 Python 直接调用具体指令,只有需要动态生成 XML 或迁移已有 XML 片段时再使用。

A: 可以。多个指令会按 XML 中的顺序执行,但每个指令都必须使用正确的指令标识和参数名。

Q3:为什么不建议把整条流程都写进一个执行指令节点?

Section titled “Q3:为什么不建议把整条流程都写进一个执行指令节点?”

A: 这样会降低可读性,也会让节点级日志变少。排查点击失败、等待超时或变量缺失时,普通节点更直观。

A: XML 中的特殊字符需要按 XML 规则处理;动态拼接时建议先打印最终 XML,再放入节点运行。