One of the traditional problems in programming interactive applications is maintaining the work-flow data that builds up across iterations. This is traditionally handled by keeping a work table that is read and written across each user interaction. This isn’t too bad when the data being saved is simple or one-dimensional. However, when the data becomes multi-dimensional, multiple tables must be kept to save the data and maintain relationships and the problem becomes more difficult. This becomes even more difficult when the data saved across iterations is a mixture of persistent and work data.
AOA manages this problem by allowing one or more work objects to be active in memory at any one time. The hierarchical structure of the LOD supports multi-dimensional data and the mixture of persistent and work data in a single LOD greatly eases the problem of combining that data.
A good example of the latter is the use of the transcript object for use in supporting the GPA Calculator, which is used by students and advisors to simulate the impact of a specific grade or grades on a student GPA. It involves the following steps:
- On the initial iteration, the transcript object is activated into memory, with a single Activate command, and given a name, which allows it to be used by a human interface and/or accessed across iterations. (The transcript object is shown to the right.)
- Then, the user interface allows the student or faculty member to temporarily enter or change grades in that object across multiple iterations. The new grades are entered right over the original grades in the transcript object.
- On the final iteration, the calculate button triggers an operation, which executes the normal Build Transcript function. That function uses the persistent data on one side of the transcript object, which now temporarily modified with the new grade values, to build work data on the other side, which contains the calculated GPA value to be presented to the user, at the top of the window in the example to the right.
This is all done by using the normal transcript object as a work object across user interactions. The same functionality runs in the MS Windows and Web environments, with slightly different interfaces between them.