Orisumi

Overview

Core 的全貌:实体、版本、三种 Core 类型,以及谁决定什么

Core 定义 Orisumi 中所有数据共用的结构:数据怎样标识、怎样更新、怎样互相引用,以及一份观测由哪几部分组成。各类型的细节在类型页,跨类型的规则在规则页。

实体与版本

Orisumi 中的每一项数据都是一个实体,例如用户本人、VS Code 这个本机应用、14:00 开始的那段前台时段。实体的内容保存在版本中:每次修改形成一个新版本,旧版本原样保留。

引用指向某个确定的版本。所以一份观测引用的内容,事后不会改变。

概念回答的问题身份
实体是哪一项数据EntityId
版本是这项数据的哪一次内容VersionId
业务类型是哪一种业务数据SchemaId,也就是 EntitySchema 的 EntityId

Core 类型

Core 自己定义三种类型,其余实体都是业务实体,由 EntitySchema 定义类型。

类型内容
Observation一份陈述:谁负责、说了什么、依据什么、事实在什么时间成立。只有它保存事实时间
InputSet一次处理实际用到的版本
EntitySchema一种业务类型;它的每个版本是一版字段、约束和含义

Observer 和观测内容都由业务实体承担,承担哪个角色取决于 Observation 怎样引用它。程序实例和人都可以是 Observer。

模型关系

Observation 引用 Observer、观测内容和 InputSet。InputSet 引用它的输入,输入可以是任何版本。业务版本引用自己所用的 Schema 版本。每个版本还引用同一实体的前一版本。

谁决定什么

由谁决定决定什么
业务规则EntitySchema、实体身份、粒度、何时形成新版本、事实时间的取值、结束条件、原始材料的保留、陈述冲突时以谁为准
Observer观测的陈述,以及它实际用到的输入
SDK程序实例身份的持久保存、本地保存、按依赖顺序发送和重试
后端按 Schema 版本和 Core 的规则校验并保存版本、赋值保存时间、执行删除

后端只检查结构,事实层面的判断由业务规则和 Observer 负责。SDK 与 Observer 的分工见 ADR · 提交与 SDK。

贡献者

页面历史