91 lines
2.3 KiB
Markdown
91 lines
2.3 KiB
Markdown
# Workflow 规范
|
||
|
||
## 概述
|
||
|
||
`workflow.yaml` 定义套件的步骤、参数和执行流程。
|
||
|
||
## 文件结构
|
||
|
||
```yaml
|
||
name: 套件名称
|
||
description: 套件功能描述
|
||
version: 1.0.0
|
||
author: 作者名
|
||
tags: [标签1, 标签2]
|
||
platform: all
|
||
category: 业务分类(如:土地整治)
|
||
|
||
params:
|
||
input_path:
|
||
type: string
|
||
required: true
|
||
desc: 输入文件路径
|
||
buffer_distance:
|
||
type: number
|
||
default: 100
|
||
desc: 缓冲区半径(米)
|
||
|
||
base_image: gis-base:latest
|
||
|
||
env:
|
||
LOG_LEVEL: INFO
|
||
|
||
steps:
|
||
- id: step1
|
||
name: 步骤名称
|
||
type: python
|
||
runtime: python3
|
||
script_id: run
|
||
params:
|
||
input: $params.input_path
|
||
distance: $params.buffer_distance
|
||
```
|
||
|
||
## 字段说明
|
||
|
||
| 字段 | 必填 | 说明 |
|
||
|------|------|------|
|
||
| `name` | ✅ | 套件名称 |
|
||
| `description` | ✅ | 套件功能描述 |
|
||
| `version` | ✅ | 语义化版本号 |
|
||
| `slug` | ❌ | 英文包名。不传则从 name 自动转拼音 |
|
||
| `params` | ❌ | 参数声明(供用户查看) |
|
||
| `base_image` | ❌ | Docker 镜像,默认 `gis-base:latest` |
|
||
| `steps` | ✅ | 步骤列表,至少 1 步 |
|
||
|
||
### steps 字段
|
||
|
||
| 字段 | 必填 | 说明 |
|
||
|------|------|------|
|
||
| `id` | ✅ | 步骤唯一 ID |
|
||
| `name` | ❌ | 步骤显示名称 |
|
||
| `type` | ✅ | 步骤类型,当前固定为 `python` |
|
||
| `script_id` | ✅ | 脚本 ID(对应 scripts/ 下的 .py 文件名,不含扩展名) |
|
||
| `params` | ❌ | 步骤参数,值中使用 `$params.xxx` 引用用户输入 |
|
||
| `depends_on` | ❌ | 依赖的步骤 ID 列表,控制执行顺序 |
|
||
|
||
## 参数传递
|
||
|
||
步骤参数通过 `$params.xxx` 语法引用用户输入:
|
||
|
||
```yaml
|
||
params:
|
||
input: $params.input_path # 引用用户的 input_path 参数
|
||
distance: $params.buffer_distance # 引用用户的 buffer_distance 参数
|
||
```
|
||
|
||
引擎会自动:
|
||
1. 将用户提供的文件路径复制到工作目录
|
||
2. 替换路径为容器内可访问的路径(`/tmp/output/文件名`)
|
||
3. shapefile 自动复制配套文件(.shx/.dbf/.prj)
|
||
|
||
## 执行顺序
|
||
|
||
- 无 `depends_on` 的步骤并行执行
|
||
- 有 `depends_on` 的步骤在依赖步骤完成后执行
|
||
- 默认串行(`depends_on` 为空时按列表顺序执行)
|
||
|
||
## 步骤输出
|
||
|
||
每个步骤执行完成后,脚本向 stdout 输出 JSON 结果。步骤间的数据通过 `/tmp/output/` 目录共享。
|