Language agnostic 时间轴事件同步的数据模型

Language agnostic 时间轴事件同步的数据模型,language-agnostic,data-modeling,Language Agnostic,Data Modeling,我正在寻找关于以下问题的数据模型的想法(以及正确的CS术语): 具有多行(A、B、C)的(水平)“时间线”包含“事件”(1、2、3)宽度不同的持续时间(宽度),在不同的时间(绝对x位置或延迟),“在前一个事件之后”: (这些行只对重叠/并行“事件”的图形表示感兴趣,因此它们可能对数据模型不是必需的。) 事件持续时间可能会发生变化,影响整个时间安排: A 11....222222 B 33333+3 ------------------ T 0123456789ABCDEF 但让事件2要求事

我正在寻找关于以下问题的数据模型的想法(以及正确的CS术语):

具有多行(A、B、C)的(水平)“时间线”包含“事件”(1、2、3)宽度不同的持续时间(宽度),在不同的时间(绝对x位置或延迟),“在前一个事件之后”:

(这些行只对重叠/并行“事件”的图形表示感兴趣,因此它们可能对数据模型不是必需的。)

事件持续时间可能会发生变化,影响整个时间安排:

A 11....222222
B   33333+3
------------------
T 0123456789ABCDEF
但让事件2要求事件1和3完成,因此时间安排应如下所示:

A 11....   222222
B   33333+3
------------------
T 0123456789ABCDEF
(让我们忽略T=7处的原始延迟现在丢失。)

最初我认为我必须有一些“弹性”同步元素,每行一个:

A 11....####222222
B   33333+3#
------------------
T 0123456789ABCDEF
因此,如何在两个不同的“行”中对同步元素进行建模和同步是一个原始问题。但是,如上所述,这只是一个图形/并行表示的问题

相反,同步是一种可以“附加”到事件2的条件,可以修改或确定其开始。 如果一个事件“有”一个条件,它将没有绝对或相对的开始时间。它的开始只能在“链接”事件(1和3)结束时确定

因此,给定(一系列)持续时间可变且绝对开始时间或相对于另一事件结束的延迟的事件,如何对“事件1和3结束”的条件进行建模以确定“事件2”的开始


(我将用JavaScript创建原型,并最终用C/C++实现,因此提供的任何示例代码都不应使用高级数据类型或库。)

您需要的是一个我称之为
时间框架的对象。对象将具有属性
持续时间
链接
类型
,其中
链接
可以是精确的时间或指向另一个
时间段的链接
类型
说明了
链接
的类型。例如,在已知时间开始的给定
时间段
将该时间作为其
链接
属性,并且
类型
将是
时间
。链接到另一个
时间段的
将把另一个
时间段作为其
链接
属性,将
开始-结束
作为其
类型
,依此类推

使用
链接
类型
之间的组合,您还可以支持其他类型的链接,如
开始-开始
结束-开始
结束-结束

更新


此外,为了在
时间段的结束
和下一个时间段的开始之间留出一定的时间间隔,可以添加属性
lag
,该属性表示事件之间的任何延迟。因此,例如,如果
tf1
tf2
时间范围
,因此
tf2
必须在
tf1
结束后开始
5
时间单位,
tf2
的属性将是
link=tf1
type=start-end
持续时间=
lag=5
。还请注意,
滞后
可能是负面的,这会将模型的表达能力扩展到广泛的关系。

而@Leandro Caniglia将我的问题巧妙地重新表述为一个对象和属性,基本上,我看到了两个选项:

  • 整个“事件”列表需要在“条件”(开始/结束)下进行评估,以检查相关的“事件”

  • 将“链接”添加到“父级”也会创建到“子级”的链接(无需评估所有挂起事件的链接)

  • 此外:

    • “link”属性需要是一个列表或数组才能保存多个引用(例如2:[1,3])
    • 与链接属性start_me_on_condition类似,可能需要一个stop_me_on_condition关联(参见Leandro关于
      类型的建议,它需要扩展以支持多个链接+类型)
    • 独立延迟“事件”可能比
      lag
      属性更实用
    A 11....####222222
    B   33333+3#
    ------------------
    T 0123456789ABCDEF