跳转到内容

Playbook 执行

subscribe_pending_playbook 后台任务负责发现和执行待运行的 Playbook.

发现机制

PlaybookLoader (Lib/playbookloader.py) 启动时扫描 PLAYBOOKS/ 目录,动态导入每个 .py 文件,读取 Playbook 类的 NAMEDESC 属性,缓存到 Xcache.

执行流程

API/MCP 创建 Playbook 记录 (job_status=PENDING)
  └── subscribe_pending_playbook 轮询发现
        ├── 查找 Xcache 中的 Playbook 配置
        ├── importlib 动态加载 Playbook 类
        ├── 设置 job_status=RUNNING, 生成 job_id
        └── thread_module_manager.start_task() 分派线程
              └── playbook.execute() → playbook.run()
                    └── 完成后回调 on_playbook_task_finished()

状态兜底

on_playbook_task_finished 回调确保 Playbook 一定有终态:

  • 如果业务代码已通过 update_playbook_status() 设置了终态,回调跳过
  • 如果业务代码未设置,回调自动写入 SUCCESS 或 FAILED

关键 API

Playbook 基类 (Lib/baseplaybook.py) 提供:

API说明
self.param_source_row_id触发 Playbook 的 Case row_id
self.param_user_input用户附加输入
self.update_playbook_status(status, remark)更新任务状态
self.send_notice(title, body)向用户发送通知