跳到主要内容

查询数据

查询流程让外部系统通过 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 流程一致,详见入站鉴权。

请求体​

字段类型说明
cursorString上一次相同请求返回的 nextCursor,用于翻页
limitInteger本次请求的页大小,超过 100 会按 100 截断;不传时使用查询节点配置的分页条数
filterObject可选的记录过滤条件,见下文

只接受以上三个字段,出现其他字段、内容类型不是 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_ACTIVEOpenLink 系统未启用
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 系统命令参考。

推荐配置流程​

  1. 创建或选择查询所属的 OpenLink 系统
  2. 为该配置入站鉴权与白名单规则
  3. 通过 Runtime 命令或流程列表创建查询流程
  4. 进入设计画布,配置查询节点的根表单、返回字段、子表单、关联表单和分页条数
  5. 保存、发布并启用流程
  6. 从外部系统调用 POST /api/open-link/query/<flowCode>,并在执行日志中核对结果