2009-07-16 3 views
2

Mon projet actuel comporte des objets métier qui changent avec le temps. Les objets peuvent avoir des changements futurs ainsi que des changements passés. Une de mes tâches est de créer des visualiseurs et des éditeurs pour ces objets qui permettent à l'utilisateur de voir son état à tout moment dans le passé ou le futur. Les changements sont assez simples: une ou plusieurs valeurs de propriété ont changé/changeront à une certaine date.Visualisation de l'historique d'un objet métier

Je voudrais donner à l'utilisateur un moyen simple de voir cela. Au minimum, je dois permettre à l'utilisateur d'avancer et de reculer dans l'historique de l'objet. Je voudrais également montrer les valeurs précédentes/suivantes (le cas échéant) de chaque propriété si je pouvais le faire sans être trop encombré ou distrayant. Et finalement, ce serait cool s'il y avait un moyen visuel de montrer la complexité de l'histoire de l'objet, par exemple, une "chronologie" ou quelque chose comme ça. Ceci est C# 3.5 sur Windows Forms ou WPF. Toutes les idées sont appréciées. Merci.

Encore une chose: existe-t-il des modèles ou des bonnes pratiques pour coder des objets avec une dimension temporelle?

Merci encore.

Répondre

0

En général, vous parlez d'un "méta-objet"; c'est-à-dire, un objet qui garde la trace de vos objets métier et qui fournit une manière cohérente de rechercher les valeurs passées et actuelles de l'état. En général, cela implique d'avoir une forte description des données de vos «objets métier», ce qui les transforme en données métier. En fait, ce dont vous parlez, c'est simplement de migrer ce que vous considérez comme des «objets métier» dans la finalité des «données métier». C'est certainement possible. Je soupçonne que juste ce changement de perspective peut vous aider dans le processus.

0

Je pense que l'un des exemples les plus propres de ce que vous essayez d'accomplir peut être trouvé ici à stackoverflow. Affichage de l'historique de vos modifications de réponse

2

Quelques réflexions qui peuvent ou peuvent ne pas aider, car je pense que je suis une sorte de projeter mes propres projets sur vos questions ...

Si les données sont une représentation numérique, pensez à l'aide d'un graphique composant graphique. Les utilisateurs aiment les graphiques. Je travaille beaucoup avec des données de temps qui peuvent être révisées au fil du temps. Alors, imaginez que vous avez un cas de bière, et vous prévoyez sa consommation au cours de la semaine. Comme vous passez par la semaine et mesurer votre consommation réelle, vous devrez peut-être réviser votre plan pour le reste de la semaine: alt text http://www.sulix.com/beergraph.png

de sorte que les hypothèses antérieures obtenir et plus léger skinnier comme ils se retirent dans le temps. Bien sûr, selon la nature de vos données, cela peut ne pas s'appliquer.

Si ce n'est déjà fait, consultez les livres de visualisation de Tufte. Ils sont utiles pour stimuler les pensées. En outre, si la dimension de temps est forte, utilisez UTC pour éviter les problèmes entourant l'heure d'été (en supposant que vous êtes dans un emplacement où il est en vigueur). La conversion en "heure locale" dans l'interface utilisateur est plus facile que d'essayer de la stocker et de tenir compte de l'heure d'été. En ce qui concerne les meilleures pratiques pour le codage des données de séries chronologiques, je pense que cela dépend beaucoup de leur nature. Si ce sont des entités "business" plus typiques (comme une personne), alors je stockerais les données versionnées dans la base de données, et dans votre DAL fournir un moyen de récupérer un objet avec un paramètre "As Of Datetime" voir à quoi cela ressemblait à un certain moment.Si, par contre, ils ressemblent à du trafic horaire dans une rue, il serait probablement plus logique d'avoir un objet «rue» qui a une collection de «comptages journaliers de la circulation».

Questions connexes