2.5 KiB
2.5 KiB
Workflow 规范
文件位置
套件根目录下的 workflow.yaml。
顶层字段
| 字段 | 必填 | 说明 |
|---|---|---|
name |
是 | 套件名称 |
description |
否 | 描述 |
version |
否 | 版本号,默认 1.0.0 |
category |
否 | 分类标签 |
tags |
否 | 标签列表 |
params |
是 | 输入参数的 JSON Schema |
output_schema |
否 | 输出结果的结构定义 |
steps |
是 | 执行步骤列表 |
resolved_params |
是 | 参数解析后的默认值 |
参数声明(params)
使用 JSON Schema 格式:
params:
type: object
required:
- input_path
properties:
input_path:
type: string
description: 输入文件路径
threshold:
type: number
default: 0.5
description: 阈值
参数类型
| 类型 | 说明 | 示例 |
|---|---|---|
string |
文本或文件路径 | /data/input.shp |
number |
浮点数 | 0.5 |
integer |
整数 | 100 |
boolean |
布尔值 | true |
步骤定义(steps)
steps:
- id: my-step # 步骤 ID,唯一
name: 我的步骤 # 步骤名称
script: run # 脚本标识(不是 script: run.py)
params:
input: "$params.input_path}}" # 双花括号语法
常见错误
| ❌ 错误写法 | ✅ 正确写法 | 原因 |
|---|---|---|
script: run.py |
script: run |
执行器读的是 script |
params_mapping: {...} |
params: {...} |
字段名是 params |
$inputs.xxx |
$params.xxx}} |
双花括号语法 |
文件共享
所有步骤共享 /tmp/output 目录。Step 1 写入的文件,Step 2 可以直接读取:
# Step 1:写文件
with open("/tmp/output/result.json", "w") as f:
json.dump(data, f)
# Step 2:读文件
with open("/tmp/output/result.json") as f:
data = json.load(f)
每个步骤也有独立的 /tmp/step_output 目录。
脚本约定
脚本通过 PARAMS_FILE 环境变量获取参数(默认 /tmp/params.json),结果通过 stdout 输出 JSON:
import json, os
params_file = os.environ.get("PARAMS_FILE", "/tmp/params.json")
with open(params_file) as f:
params = json.load(f)
# 处理逻辑...
result = {"status": "ok", "value": 42}
print(json.dumps(result))
resolved_params
提供参数解析后的默认值,执行器直接使用这些值:
resolved_params:
- step_index: 0
step_name: 我的步骤
params:
input_path: "/data/input.shp"
threshold: 0.5