我正在寻找有关以下问题的数据模型的想法(以及正确的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 ++中实现,因此提供的任何示例代码都不应使用高级数据类型或库。)
答案 0 :(得分:1)
你需要的是一个我称之为TimeFrame
的对象。该对象具有属性duration
,link
和type
,其中link
可以是精确时间或指向另一个TimeFrame
和{{1}的链接}帐户type
的种类。例如,在已知时间开始的给定link
将该时间作为其TimeFrame
属性,link
将为type
。链接到另一个{1}}的{{1}}将TIME
作为其TimeFrame
属性,TimeFrame
作为其link
,依此类推。
使用START-END
和type
之间的组合,您还可以支持其他类型的链接,例如link
,type
或START-START
。
<强>更新强>
此外,为了允许在END-START
的结尾和下一个的开始之间的某个时间间隔,可以添加属性END-END
,其表示事件之间的任何延迟。因此,例如,如果TimeFrame
和lag
为tf1
,则tf2
必须在TimeFrames
结束后的tf2
时间单位开始5
个属性tf1
将是tf2
,link = tf1
,type = START-END
和duration = <something>
。另请注意,lag = 5
可能是否定的,这会将模型的表现力扩展到广泛的关系。
答案 1 :(得分:1)
虽然@Leandro Caniglia很好地将我的问题改写为对象和属性,但基本上,我看到两个选项:
&#34;事件的全部列表&#34;需要在&#34;条件&#34; (开始/结束)检查依赖&#34;事件&#34;。
添加&#34;链接&#34;到父母&#34;还会创建一个指向&#34;孩子的链接。 (无需评估所有未决事件的链接)。
此外:
type
的建议,需要扩展以支持多个链接+类型)lag
属性更实用。