






















本文基于 sfbpmn-project(Slickflow 引擎、设计器、sfdapi 等)与 sfai-project(如 aichatbackend 等 AI 业务后端)的典型架构,说明如何通过 Web API 将 OpenClaw 智能体与 Slickflow 工作流打通。文中 API 路径以通用 REST 风格描述,实际路由请以你仓库中
sfdapi/ 业务 WebAPI 的 Controller 为准。
Slickflow.Engine 作为依赖嵌入 ASP.NET Core 或其它 .NET 宿主进程,负责解析 BPMN、驱动流程实例、执行 ServiceTask / UserTask、持久化等。WorkflowExecutor、WfAppRunner 等,在代码中 UseProcess / Run(),适合「一次请求 → 一整条自动化流水线」(见仓库内《Slickflow 流程自动化运行技术指南》)。WorkflowService.Run 推进。ServiceMethodEnum.WebApi)、LocalService、CSharpLibrary 等(见 docs/BPMN2_SERVICE_TASK_OPTIMIZATION.md)。POST /api/AiChatApp/GetChatMessage),在 Service 层根据流程编码/版本构造变量,调用 WorkflowExecutor 启动并 Run()(见《Slickflow AI 智能客服多轮问答系统实现指南》)。POST /tools/invoke,在请求体中指定 tool、args 等(见 OpenClaw Tools Invoke API)。OpenClaw 运行在独立网关/代理进程中,通过 工具 与外部系统交互,适合且应当通过 HTTP/REST 访问你方暴露的业务接口。集成路径可概括为:智能体 → HTTPS → ASP.NET 应用(sfdapi / sfai)→ 应用内调用 Slickflow 引擎 API(如 WorkflowService、WorkflowExecutor 等)。
智能体侧可使用 web_fetch、自定义 HTTP 工具、exec 调 curl,或封装专用工具访问上述业务 API。
WorkflowService / WorkflowExecutor。以下命名是常见工作流产品能力映射到 Slickflow 时的语义;具体 URL 需在 sfdapi 或 sfai 后端 中查找对应 Controller。
Run(自动化)或生成首个 UserTask(人工审批)。POST,Body 含 processCode / processId、version、JSON 形式的 variables(如业务单号、发起人)。WfAppRunner、WorkflowExecutor 或 WorkflowService.Start 等一致的引擎 API(与《流程自动化运行技术指南》中 AddVariable + Run() 的模式一致)。POST /.../Terminate、POST /.../Cancel 或带 processInstanceId 的专用接口。POST .../Run 或 CompleteTask,传入 activityInstanceId、办理意见等——这也常被业务称为「让流程继续直到结束」。智能体侧只需 稳定、可鉴权 的 REST 契约;不要让 OpenClaw 直接操作数据库。
web_fetch 或网关提供的 HTTP 类工具),对你的 https://your-sfdapi/api/... 发起 POST/GET。POST /tools/invoke,则是调用 OpenClaw 内置工具 的通道;要让智能体操作 Slickflow,通常仍需:
HttpClient 调你的 sfdapi;web_fetch(或等价工具)访问固定 Base URL 与路径。/tools/invoke,需按文档使用 Authorization: Bearer <OPENCLAW_GATEWAY_TOKEN> 等(参见 OpenClaw 文档中的 gateway.auth)。Skills 用于 约束模型行为:何时触发、参数、错误处理。下面是一则可直接改编的 Skill 正文示例(存放为 OpenClaw 技能 Markdown,并按项目调整 URL)。
---
name: slickflow-workflow-ops
description: 通过公司 sfdapi 对 Slickflow 流程做指令级操作(启动、查询状态、终止)。仅在用户明确要求操作工作流或审批流程时使用。
---
# Slickflow 流程操作
## 前置条件
- 已知环境 Base URL,例如 `https://api.internal.example.com/sfdapi`.
- 请求头携带 `Authorization: Bearer <业务令牌>`(以实际为准)。
## 何时使用
- 用户说「发起某某流程」「提交审批」「取消流程实例」「流程跑到哪了」时使用 HTTP 工具调用下列接口;不要猜测流程编码,缺省时向用户确认 `processCode` 或业务单号。
## 接口约定(示例,需与 sfdapi 实际路由一致)
### 1. 启动流程
- **方法**: POST
- **路径**: `/api/Workflow/Start`(示例)
- **Body (JSON)**:
- `processCode` (string, 必填)
- `version` (string, 可选)
- `variables` (object, 可选): 流程变量键值
成功响应中应包含 `processInstanceId`,后续操作用该 ID。
### 2. 终止 / 作废流程实例
- **方法**: POST
- **路径**: `/api/Workflow/Terminate`(示例)
- **Body**: `processInstanceId`, `reason`
### 3. 查询实例状态(可选)
- **方法**: GET
- **路径**: `/api/Workflow/Instance/{processInstanceId}`
## 工具调用注意
- 使用 HTTP 客户端类工具;Content-Type 使用 `application/json`。
- 4xx/5xx 时将响应 body 简要反馈给用户,不要伪造成功。
- 不要在对话中输出完整 Bearer Token。
将上述文件注册到 OpenClaw 的 Skills 配置后,代理在「工具 + Skill」双重约束下,会更稳定地发起 启动 / 结束 类指令,而不是泛泛聊天。
flowchart LR subgraph OpenClaw["OpenClaw 网关 / 智能体"] LLM[大模型] Tools[Tools: HTTP / exec / ...] Skills[Skills: Slickflow 契约说明] end subgraph Server["sfdapi / sfai 后端 (.NET)"] API[ASP.NET Controllers] SF[Slickflow 引擎] DB[(流程库)] end LLM --> Tools Skills -.-> LLM Tools -->|HTTPS REST| API API --> SF SF --> DB
blogs/Slickflow_流程自动化运行_技术指南.md、blogs/Slickflow_AI智能客服多轮问答系统实现指南.md、docs/BPMN2_SERVICE_TASK_OPTIMIZATION.mdsfdapi/Controllers 与 sfai 后端代码为准,上线前请用 Swagger 或接口文档对齐路径与 DTO。文档版本说明:OpenClaw 的网关端口、工具名以官方当前文档为准;Slickflow 侧 API 以 sfbpmn2 或当前分支实现为准。
posted on 2026-04-01 17:08 slickflowteam 阅读(263) 评论() 收藏 举报
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。