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

时间:2016-08-26 08:16:16

标签: language-agnostic data-modeling

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

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

A 1111....222222
B   33333
------------------
T 0123456789ABCDEF

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

活动持续时间可能会有所不同,影响整个时间:

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 ++中实现,因此提供的任何示例代码都不应使用高级数据类型或库。)

2 个答案:

答案 0 :(得分:1)

你需要的是一个我称之为TimeFrame的对象。该对象具有属性durationlinktype,其中link可以是精确时间或指向另一个TimeFrame和{{1}的链接}帐户type的种类。例如,在已知时间开始的给定link将该时间作为其TimeFrame属性,link将为type。链接到另一个{1}}的{​​{1}}将TIME作为其TimeFrame属性,TimeFrame作为其link,依此类推。

使用START-ENDtype之间的组合,您还可以支持其他类型的链接,例如linktypeSTART-START

<强>更新

此外,为了允许在END-START的结尾和下一个的开始之间的某个时间间隔,可以添加属性END-END,其表示事件之间的任何延迟。因此,例如,如果TimeFramelagtf1,则tf2必须在TimeFrames结束后的tf2时间单位开始5个属性tf1将是tf2link = tf1type = START-ENDduration = <something>。另请注意,lag = 5可能是否定的,这会将模型的表现力扩展到广泛的关系。

答案 1 :(得分:1)

虽然@Leandro Caniglia很好地将我的问题改写为对象和属性,但基本上,我看到两个选项:

  1. &#34;事件的全部列表&#34;需要在&#34;条件&#34; (开始/结束)检查依赖&#34;事件&#34;。

  2. 添加&#34;链接&#34;到父母&#34;还会创建一个指向&#34;孩子的链接。 (无需评估所有未决事件的链接)。

  3. 此外:

    • &#34;链接&#34; property需要是一个List或Array才能容纳多个引用(例如2:[1,3])。
    • 类似于链接属性start_me_on_condition,可能需要stop_me_on_condition关联(参见Leandro对type的建议,需要扩展以支持多个链接+类型)
    • 独立延迟&#34;事件&#34;可能比lag属性更实用。