工作流定义¶
当前 Python 和 Go SDK 对工作流定义只提供创建操作;没有列表、详情、更新或删除方法。若自动化需要完整生命周期管理,应先确认目标 MOI 实例的 Product API,并通过受支持的 API 客户端调用,不能根据权限常量猜测端点。
使用内置文档处理链¶
高层 helper 接收工作流名称、源 Volume ID 和目标 Volume ID,返回工作流 ID。它创建以下固定节点链:
RootNode → DocumentParseNode → ChunkNode → EmbeddingNode/EmbeddingNodeV2 → WriteNode
Python 实现当前使用 EmbeddingNodeV2,Go 实现使用 EmbedNode。两者都设置 interval = -1,在文件载入源 Volume 时触发。
from moi import RawClient, SDKClient
raw = RawClient("https://api.example.com", "your-api-key")
client = SDKClient(raw)
workflow_id = client.create_document_processing_workflow(
"contract-processing",
"source-volume-id",
"target-volume-id",
)
print(workflow_id)
package main
import (
"context"
"fmt"
"log"
sdk "github.com/matrixorigin/moi-go-sdk"
)
func main() {
raw, err := sdk.NewRawClient("https://api.example.com", "your-api-key")
if err != nil {
log.Fatal(err)
}
client := sdk.NewSDKClient(raw)
workflowID, err := client.CreateDocumentProcessingWorkflow(
context.Background(),
"contract-processing",
sdk.VolumeID("source-volume-id"),
sdk.VolumeID("target-volume-id"),
)
if err != nil {
log.Fatal(err)
}
fmt.Println(workflowID)
}
该 helper 支持源码中列出的文本、PDF、Office、CSV 和 HTML 文件类型。它是固定模板,不接受节点替换、模型选择或分块参数;需要这些能力时使用低层创建接口。
创建自定义节点图¶
Python 的 RawClient.create_workflow(request) 接收字典。Go 的 RawClient.CreateWorkflow(ctx, *WorkflowMetadata) 使用公开类型:
WorkflowMetadata:名称、源/目标 Volume、ProcessMode、文件类型和节点图;CatalogWorkflow:Nodes与Connections;CatalogWorkflowNode:ID、Type、InitParameters;CatalogWorkflowConnection:发送/接收节点及可选端口。
source_volume_names、source_volume_ids、process_mode 以及每个节点的 init_parameters 不能序列化为 null。两个 RawClient 会将缺失集合补为空集合,将缺失的 process_mode 补为 {"interval": -1, "offset": 0}。
不要从 SDK helper 中复制节点类型后假定目标实例一定支持。产品侧可用 WorkItem 以目标实例的实时清单为准;当前 SDK 没有封装该清单。
创建响应包含 id、version、源/目标 Volume、时间和流程间隔等元数据。至少持久化返回的 id;后续作业查询需要它。
更新和删除¶
当前 SDK 不公开读取、更新和删除工作流的方法。创建前应在测试工作区验证节点图和目标写入方式,避免依赖“创建后再补配置”。需要修改时,使用目标实例明确发布的 Product API 或 UI;不要调用 RawClient 的内部 _request_json/postJSON 自行拼接未公开路径。