wiki:PRO_CHANGE_REVISION_ACCESS_R0
Last modified 3 years ago Last modified on 01/28/09 18:49:27

Pages linking to PRO_CHANGE_REVISION_ACCESS_R0:
TASK_INDEX

Ticket Summary Owner Status Type Component Priority Effort Importance
#169 PRO_CHANGE_REVISION_ACCESS_R0 gogov closed planned_task PRO_LIB_ENTITIES 3 1 0

Reported by Astea, 4 years ago.

Description

wiki page: PRO_CHANGE_REVISION_ACCESS_R0 - effort: 1d

Analysis_owners

gogov

Analysis_score

0

Design_score

0

Imp._score

0

Test_score

0

Analysis

Overview

The goal of this task is to develop a scheme on how to implement a history of changes resulting from the work of the user with Sophie 2 and provide access to any given point in time in this history.
This way a snapshot of the state of Sophie 2 at a given time point could be obtained for various purposes such as:

  • debugging
  • reverting changes
  • feeding the change manager with needed info
  • etc.

Task requirements

  • Propose ideas for the structure of the history of changes. It should be flexible enough, so the queries as the following could be answered:
    • get a snapshot of the state of all properties at a given time point
    • get the value of a given property at a given time point
    • get a history of all the values of a given property at a given time point
    • get a list of all Changes that affect a given property before and after a given time point
    • get a list of properties which a Change affects
  • Since these operations might turn out quite slow, performance should be taken into consideration as early as possible:
    • provide rough ideas on how these operations could be implemented algorithmically efficient
    • also provide ideas for suitable data structures which could improve the performance
  • Provide rough implementation of the above ideas, if possible
  • Add unit test for the implementation, if possible

Task result

  • Design ideas and diagrams of the proposed solutions to the given problems in this page
  • New code and unit tests, if any

Implementation idea

  • Consider using some data structure which provides logarithmic time for some of the queries
  • Try providing ideas for data structures and algorithms which perform at least some of the queries efficiently. Different approaches might be possibly combined to yield good results.

PRO_LIB_CORE_TUTORIAL
PRO_CHANGE_MANAGER_R0
PRO_CHANGE_MERGING_R0
PRO_CHANGE_PRIMITIVES_R0
PRO_CHANGE_UNDO_MANAGER_R0

How to demo

  • Show this page and explain the problems and proposed solutions
  • Run the unit tests, if any

Design

(Describe your design here.)

Implementation

(Describe and link the implementation results here (from the wiki or the repository).)

Testing

(Place the testing results here.)

Comments

(Write comments for this or later revisions here.)