图、地图与推演

第 6 课 · 共 6 课 约 8 分钟

关系图、地图、时间线的概念;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)。

小测

选一个答案,马上看解析。

Q1想找出离工厂 50 公里以内的客户,AIDC 里怎么做?

Q2有人说:给本体开一个分支,就是一个推演沙箱。哪里不对?

Q3官方为什么提醒「推演不是数据版本工具」?

延伸阅读