可视化业务对象的历史记录

时间:2009-07-16 17:30:16

标签: visualization

我当前的项目包含随时间变化的业务对象。对象可以具有将来的更改以及过去的更改。我的任务之一是为这些对象创建查看器和编辑器,让用户可以在过去或将来的任何时刻查看其状态。 更改非常简单:一个或多个属性值已更改/将在特定日期更改。

我想给用户一个简单的方法来看看这个。至少我需要允许用户前滚并返回对象的历史记录。我还想显示每个属性的上一个/下一个值(如果有的话),如果我能做到这一点而不会太混乱或分散注意力。最后,如果有一些视觉方式来显示对象历史的复杂性,例如“时间轴”或其他东西,那将会很酷。 这是Windows窗体或WPF上的C#3.5。 所有想法都表示赞赏。感谢。

还有一件事:是否有任何模式或最佳实践来编写具有时间维度的对象?

再次感谢。

3 个答案:

答案 0 :(得分:2)

一些可能有帮助或可能没有帮助的想法,因为我认为我将自己的项目投射到您的问题上......

如果数据是数字,请考虑使用图表组件进行图形表示。用户喜欢图表。

我通过时间数据进行了大量工作,这些数据可以随时修改。所以想象一下你有啤酒的情况,并且你计划在一周内消费它。当你整整一周并测量实际消费时,你可能需要修改你一周剩余时间的计划: alt text http://www.sulix.com/beergraph.png

因此,早期的假设随着时间的推移而变得更加轻薄。当然,根据数据的性质,这可能不适用。

如果您还没有,请查看Tufte的可视化书籍。它们对刺激思想很有用。特别好的是The Visual Display of Quantitative Information

此外,如果时间维度很强,请使用UTC以避免围绕夏令时的问题(假设您处于有效的位置)。在UI中转换为“本地时间”比尝试存储和帐户DST更容易。

至于编码时间序列数据的最佳做法,我认为这在很大程度上取决于它们的性质。如果它们是更典型的“业务”实体(比如一个人),那么我将版本化的数据存储在数据库中,并且在DAL中提供了一种获取具有“As Of Datetime”参数的对象的方法,因此您可以看看它在某个时间的样子。另一方面,如果它们像街道上的每小时交通量一样,那么拥有一个“街道”对象可能更有意义,该对象具有“每日交通量”的集合。

答案 1 :(得分:0)

一般来说,你所谈论的是拥有一个“元对象”;也就是说,一些跟踪业务对象的对象,它提供了查询过去和当前状态值的一致方法。通常,这涉及对“业务对象”进行强大的数据描述,这实际上将它们转换为业务数据。实际上,您所谈论的只是将您认为是“业务对象”的内容迁移到事物的“业务数据”中。这当然是可能的;我怀疑只是这种观点的改变可能会帮助你完成这个过程。

答案 2 :(得分:0)

我认为你可以在stackoverflow找到你想要完成的最干净的例子之一。查看答案编辑的历史记录。