图、地图与推演
关系图、地图、时间线的概念;AIDC 今天有什么;推演与它的三个替代。

本课目标
读完这一课,你将能够
- 说出关系图、地图、时间序列与事件各自读本体(Ontology)里的什么
- 用 SDK 沿关系取出一圈相关对象,用位置条件筛选,读出时间序列
- 讲清推演是什么,以及 AIDC 里只校验、预演和分支各能替代它的哪一部分
关系图:从一个对象向外走
到这里做的都是「一张表、一个对象、一个表单」。有几类问题需要换个看法:东西之间怎么连,东西在哪里,东西怎样随时间变,以及「如果……会怎样」。这一节把它们讲成概念,并如实说出 AIDC 今天有什么。
关系图不是随手画的节点和连线,而是一件事的重复:沿一条关系走一步,把结果加进图里。起点是一个或几个对象,每一步选一条关系,可以在这一步上加筛选,几步可以串起来。官方的图应用还能给节点加派生属性、用直方图筛选,并把整张图存成模板给别人用。
示例工厂里,从一张销售订单向外走一圈:客户、工单、发运。在 SDK 里,一步就是一个 pivotTo:
const order = client.objects("salesOrder").where({ orderNo: "SO-2409-031" });
const [customer, workOrders, shipments] = await Promise.all(
["customer", "workOrders", "shipments"].map((link) => order.pivotTo(link).fetchPage({ $pageSize: 50 })));
// 三组对象是节点,订单到它们的连线是边;下一圈再对结果 pivotTo 一次
地图与时间线
地图由图层叠成:底图、对象图层、关系图层、叠加图层、标注。对象要有 geopoint 或 geoshape 属性才能上图;圆形用一个以米为单位的半径属性;按区域着色,要么给属性配区域标识,要么建一条多对一的关系指向区域对象。圆形和六边形网格只用于显示,不参与搜索,要按它们搜,得先换成多边形。
AIDC 能存能读位置值,也能按距离和范围筛。示例工厂的客户有 location(geopoint),找出离工厂 50 公里以内的客户:
client.objects("customer").where({
location: { $within: { $distance: [50, "km"], $of: [121.47, 31.23] } }, // [经度, 纬度]
}).fetchPage();
时间有两种形状。时间序列是属性,记录一个量随时间的值,例如 machine.vibration;事件是带起止时间的对象类型,例如 workOrder 的 startAt 到 dueAt。AIDC 读时间序列用 firstPoint、lastPoint、streamPoints,内联最多 1,000 个点。要画曲线,数据 SDK 有一个零依赖的折线图(清单 sdk 加上 data):
const points = await client.timeSeries("machine", "M-07", "vibration").getAllPoints();
el.innerHTML = data.lineChartSvg(points.map((p) => ({ label: p.time, value: Number(p.value) })));
推演:在副本上试
推演(Scenario)是一个沙箱:在 Semantic 的数据之上,用一个或几个 Action 产生一组改动,不碰真实数据。适合的场景有四个:假设分析、业务逻辑模拟、评测智能体、并排比较几种方案。官方特别提醒:它不是数据版本工具,存不了某个历史时间点的快照。
官方推演有几条硬规则:默认存活 30 天,到期连同改动一起删除;每 10 分钟自动变基到主线,追上最新数据;提交条件可以区分「在推演里执行」和「在主线执行」,所以可以在沙箱里放宽;把推演合回主线本身也是一次 Action,Action 的上限照样适用。
| 想做的事 | AIDC 今天怎么做 | |
|---|---|---|
| 试一个改动能不能通过 | 推演里执行 Action | $validateOnly:逐项校验,什么都不写 |
| 把整个流程试一遍 | 在推演里跑流程 | 工作流 mode: "preview":读、算、AI 分析照跑,写入只返回计划 |
| 试一份新的定义 | 全局分支 | 分支:改的是本体的定义,数据仍是主线的 |
| 试一串改动并读结果 | 可写的数据副本 | 目前还没有;在应用里读出对象,在内存里改一份来算,不调用 Action |
要点
- 关系图是重复地「沿关系走一步」,SDK 里就是
pivotTo。 - 地图读
geopoint、geoshape属性;AIDC 能存、能按距离和范围筛,地图部件目前还没有。 - 时间序列是属性,事件是带起止时间的对象类型;时间序列内联最多 1,000 个点。
- 推演是隔离的可写副本,不是数据版本;官方默认 30 天过期、每 10 分钟变基一次。
- AIDC 目前还没有推演:
$validateOnly、工作流预演和分支各替代其中一部分。
练一练
走一圈,读一条线,说清一个替代
都是只读的,在有示例工厂数据的组织里做;没有的话,把它当成设计题。
从 machine 出发,用两次 pivotTo 取到它所在产线的全部工单(关系是 line、workOrders)。
用 getLastPoint 读 machine 的 vibration 最近一个值,写出它是否超过阈值的判断。
设计一个「挪一半工单到 L2」的近似推演:读什么、在哪里算、为什么不能真的执行 Action。
小测
选一个答案,马上看解析。
Q1想找出离工厂 50 公里以内的客户,AIDC 里怎么做?
地图部件目前还没有,但距离条件是搜索的一部分,在 Semantic 里算。
Q2有人说:给本体开一个分支,就是一个推演沙箱。哪里不对?
分支是改定义用的;它 35 天无活动才转 INACTIVE,再 7 天删除。
Q3官方为什么提醒「推演不是数据版本工具」?
推演用来试未来,不用来保存过去。