查询数据
查询流程让外部系统通过 OpenLink 读取 Soln 本地表单记录。查询流程归属某个 OpenLink 系统,由外部 HTTP 请求触发,返回指定记录及其关联数据,不会向 Soln 回写任何数据。
查询流程与入站、出站流程的区别:
- 查询流程不需要表单绑定,也不做外部表单映射
- 画布只包含一个开始节点、一个查询节点和一个结束节点
- 触发方式固定为
webhook,不支持轮询、推送和服务调用
查询节点配置
在设计画布中选中查询节点,配置流程要返回的内容。
| 配置项 | 必填 | 说明 |
|---|---|---|
| 根表单 | 是 | 返回记录的本地表单,查询只读取该表单 |
| 返回字段 | 是 | 至少选择一个根表单字段,只返回选中的字段 |
| 子表单 | 否 | 根表单的直接子表;每张子表选择要返回的字段 |
| 关联表单 | 否 | 通过根表单关联字段可达的本地表单;每个关联字段选择要返回的字段 |
| 分页条数 | 否 | 默认页大小,1-100,未设置时为 20 |
配置完成后保存版本并发布流程,只有已发布的查询流程才会接受请求。
查询接口
POST <your-runtime-origin>/api/open-link/query/<flowCode>
Content-Type: application/json
<your-runtime-origin> 是工作空间 Runtime 的地址,也就是你在浏览器里打开 Soln 的那个地址,例如 https://runtime.example.com。flowCode 是流程记录上的流程编码,形如 open_link_flow_889b5ea7abae,不是流程定义的 UUID。设计画布的开始节点会显示完整地址,直接复制即可,不用手拼:
https://runtime.example.com/api/open-link/query/open_link_flow_889b5ea7abae
请求必须是 POST 且内容类型为 JSON。系统需为 active、流程需为 published,并会执行该系统配置的入站鉴权与白名单校验,与入站 Webhook 流程一致,详见入站鉴权。
请求体
| 字段 | 类型 | 说明 |
|---|---|---|
cursor | String | 上一次相同请求返回的 nextCursor,用于翻页 |
limit | Integer | 本次请求的页大小,超过 100 会按 100 截断;不传时使用查询节点配置的分页条数 |
filter | Object | 可选的记录过滤条件,见下文 |
只接受以上三个字段,出现其他字段、内容类型不是 JSON 或取值非法时会返回 OPEN_LINK_QUERY_REQUEST_BODY_INVALID。
过滤条件
filter 是以根表单字段 apiName 为键的对象,每个键对应一个操作符对象。过滤字段必须是根表单的字段 apiName。
| 操作符 | 取值 | 说明 |
|---|---|---|
eq / neq | 单个值 | 等于 / 不等于 |
contains / not_contains | 字符串或字符串数组 | 文本包含 / 不包含 |
in | 数组或逗号分隔字符串 | 命中任意一个值 |
gt / gte / lt / lte | 单个值 | 数值或日期比较 |
between | 两个值或 "from,to" | 闭区间范围 |
empty / not_empty | 无需取值 | 字段为空 / 不为空 |
可以额外使用 or 键表达"任意一组命中"。or 之外的键之间是"与"关系。
{
"limit": 20,
"filter": {
"status": { "in": ["open", "processing"] },
"created_at": { "gte": "2026-01-01" },
"or": [
{ "owner_email": { "contains": "@example.com" } },
{ "priority": { "eq": "high" } }
]
}
}
过滤条件结构非法返回 OPEN_LINK_QUERY_FILTER_INVALID;使用了根表单不存在的字段返回 OPEN_LINK_QUERY_FILTER_FIELD_INVALID。
响应
{
"flowCode": "orders-query",
"items": [
{
"id": "record-uuid",
"data": { "orderCode": "SO-1" },
"children": { "order_lines": [] },
"relations": {}
}
],
"nextCursor": null
}
| 字段 | 说明 |
|---|---|
flowCode | 处理本次请求的流程编码 |
items | 返回的记录,只包含选中的根字段、子表字段和关联字段 |
nextCursor | 下一页游标,没有更多数据时为 null |
翻页时使用相同的 filter 与 limit,并把 nextCursor 作为 cursor 传入。游标必须与相同的查询条件配合使用。
每次请求都会写入流程执行日志,包含失败请求。
常见错误
| 错误码 | 含义 |
|---|---|
OPEN_LINK_QUERY_FLOW_NOT_FOUND | 没有匹配该流程编码的查询流程 |
OPEN_LINK_FLOW_DEFINITION_NOT_PUBLISHED | 流程存在但尚未发布 |
OPEN_LINK_SYSTEM_NOT_ACTIVE | OpenLink 系统未启用 |
OPEN_LINK_CONTENT_TYPE_INVALID | 请求内容类型不是 application/json |
OPEN_LINK_QUERY_REQUEST_BODY_INVALID | 请求体存在未知字段,或游标、分页、过滤条件取值非法 |
OPEN_LINK_QUERY_FILTER_INVALID | 过滤条件分组或操作符非法 |
OPEN_LINK_QUERY_FILTER_FIELD_INVALID | 过滤条件使用了非根表单 apiName 的字段 |
OPEN_LINK_INBOUND_RATE_LIMIT_EXCEEDED / OPEN_LINK_INBOUND_CONCURRENCY_LIMIT_EXCEEDED | 被入站限流或并发保护拒绝 |
OPEN_LINK_WEBHOOK_AUTH_INVALID / OPEN_LINK_WEBHOOK_TIMESTAMP_EXPIRED | 入站鉴权校验失败 |
OPEN_LINK_WEBHOOK_SOURCE_DENIED | 白名单规则拒绝该调用方 |
查询流程只读取数据,不能新增、修改或删除本地记录,也不会调用外部系统。
查询流程与其他流程使用同一套 Runtime 命令创建、版本化和发布;命令清单见 Openlink 系统命令参考。
推荐配置流程
- 创建或选择查询所属的 OpenLink 系统
- 为该配置入站鉴权与白名单规则
- 通过 Runtime 命令或流程列表创建查询流程
- 进入设计画布,配置查询节点的根表单、返回字段、子表单、关联表单和分页条数
- 保存、发布并启用流程
- 从外部系统调用
POST /api/open-link/query/<flowCode>,并在执行日志中核对结果