Files
agent-profiles/suites-help/开发者指南/Workflow-规范.md
T

112 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Workflow 规范
## 文件位置
套件根目录下的 `workflow.yaml`
## 顶层字段
| 字段 | 必填 | 说明 |
|------|------|------|
| `name` | 是 | 套件名称 |
| `description` | 否 | 描述 |
| `version` | 否 | 版本号,默认 1.0.0 |
| `category` | 否 | 分类标签 |
| `tags` | 否 | 标签列表 |
| `params` | 是 | 输入参数的 JSON Schema |
| `output_schema` | 否 | 输出结果的结构定义 |
| `steps` | 是 | 执行步骤列表 |
| `resolved_params` | 是 | 参数解析后的默认值 |
## 参数声明(params
使用 JSON Schema 格式:
```yaml
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
```yaml
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 可以直接读取:
```python
# 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
```python
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
提供参数解析后的默认值,执行器直接使用这些值:
```yaml
resolved_params:
- step_index: 0
step_name: 我的步骤
params:
input_path: "/data/input.shp"
threshold: 0.5
```