Logo GISdevelopment.net

GISdevelopment > Proceedings > GITA > 2002


GITA 2002 | GITA 2001 | GITA 2000 | GITA 1999 | GITA 1998 | GITA 1997
Sessions

Applications

Data Development & Evolution

E-Biz

GeoSolucions

Mobile

Municipal Perspective

Network Operations Management

New Technology

Project Management

System Architecture

System Integration

The Human Factor

User Presentations

Work Management


GITA 2002


System Architecture


Version Management Revisited


Using traditional version management with merge and post
Traditional version management, using only merge and post operations between parent and child alternatives, has some limitations in meeting the requirements laid out in the previous section. The requirement for the as-built view is that it should be cleanly separated from any work in progress. If the data for a design is stored in an alternative until the work is completed in the field (i.e., until it becomes as-built), and it is posted at this point, then the requirement for having an as-built view is satisfied. In this scenario, the top alternative always represents the as-built view. However, this approach does not handle the future as- built view well, since all designs are in their own alternatives and they cannot be combined easily. It is possible to implement a multiple work order view using this approach if the drawing routines are flexible enough to change alternatives dynamically to draw relevant information from each design of interest. However, this merely provides a graphical view, not one that can be queried.

A fairly common alternative approach is to post jobs to top once they are approved, but before they are built. This enables better handling of both the multiple work order view and the future as-built view, but introduces some compromises into the as-built view. When using this approach, a necessary addition is to have some sort of explicit relationship between a work order object and the objects that belong to that work order, in order to identify the elements of the work order in the top version of the database.

Since data is posted to top before it is "as-built" in this approach, the "as-built" view needs to be created by adding application functionality on top of the database. Visually, an "as-built" view can be achieved by making objects with a status of "Proposed" or "Replacing" invisible, while displaying objects with a status of "Existing", "To be replaced", or "To be removed". All the visible objects are displayed with the same "as-built" style. For query and analysis operations, some more care is required to provide the as-built view. For (topology based) network tracing, this can be done reasonably well by setting up connectivity rules so that Proposed or Replacing geometry does not connect to geometry with any other status. For queries and reports (such as listing all transformers in a tax district), it is necessary to make sure that an additional predicate is added to only include objects with appropriate status values.

While this approach is acceptable for certain applications with a well known set of operations, it does not work as well in certain situations - especially if the data model has many relationships. If, for example, you want to query from a rack to the shelves inside it to the cards on the shelves, it is very inconvenient and error-prone to have to validate the status of every record as you do these joins.

While this approach introduces these compromises into the as-built view, the advantage is that it supports the multiple work order view and the future as-built view better than the other options considered so far. The multiple work order view is generated by making all objects visible and using the same styles (dependent on status) which are used in the individual work order view. A future as-built view can be generated by creating an alternative, selecting the work orders which we want to complete in this view, and going through the completion process in that alternative (converting "Proposed" to "Existing", deleting "To be removed", etc.).

In addition, this approach can support the idea of "partial completion" (a.k.a., "partial posting") reasonably well. A user can select a subset of a work order and apply the necessary status changes to convert the subset to "Existing". There are still potential consistency/integrity issues, especially with complex data models, but in general it is a workable approach for reasonably simple models.

The sideways merge approach
Both approaches described in the previous section have some drawbacks. The one in which jobs are not posted to top until they are completed does a good job of modeling the "as-built" network cleanly with no interference from proposed work, but it is poor at handling the multiple work order and future as-built views. The second approach addresses the latter two problems much better, but introduces potentially serious compromises for the as-built view, especially for complex data models. This makes it unsuitable as a generic solution. The “sideways merge” approach introduces some new ideas, which are a significant step forward in tackling this problem. It uses the top alternative strictly for storing as-built data, as in the first option above. This gives the advantage of providing a very clean and generic way of separating proposed work from the current network, as noted before.

The sideways merge is an operation that allows changes from one alternative to be applied to another alternative elsewhere in the hierarchy, instead of restricting changes to being propagated only to immediate parent or child alternatives, which is what traditional merge and post operations do. This technique can be used to create either future as-built views or multiple work order views, by copying data from all the relevant design alternatives into a new alternative. Another way to implement the multiple work order view, which is appropriate when a small number of jobs need to be displayed graphically in addition to the current job, is to implement the ability for the drawing routines to render graphics from more than one alternative on the fly.

While the sideways merge is a fairly complex operation to implement robustly, it is a very clean approach, and is by far the best solution of those discussed here.

Phased completion of jobs

Jobs built on jobs
An additional requirement is that it may be necessary to create a design that is dependent on another design that has not yet been built. In general, this is more common in communications than in utilities. In communications in particular, there is a requirement to record which jobs are dependent on other jobs, and to easily distinguish which subsequent jobs are affected if a given job is cancelled or rescheduled. There are at least two concepts that are important when implementing a full solution to this problem. One is to be able to create a "future as-built" view on which the new job can be based (by selecting the other jobs on which this job is dependent, and by making those jobs look as if they have been completed). The second concept is that when the job is completed, some sort of validation is required to determine that the necessary work in jobs that it was dependent on has also been completed. In some cases, there may also be a requirement that if a job is cancelled, any dependent jobs need to be checked to see if they are still valid. In general, this sort of validation is very application-specific.

Partial Completion (partial posting)
Sometimes a job may be completed in several pieces, each of which needs to be converted to become "as-built" independently. If this phasing is known in advance, the problem is the same as the previous one (jobs built on jobs). If not, the issue is a little different. This is an interesting problem, in the sense that it may seem straightforward to the casual observer who hasn’t studied the problem in detail, but in fact it is extremely complex to implement a generic solution. The difficulty is making sure that the subset of data that is "posted" (in a general sense, not necessarily in a strict version management sense) is completely consistent. This is very similar to the task of ensuring consistency in a spatial replica or an extract of a database, and it is possible for most applications to set up a framework to ensure that the chosen subset of data is consistent (in conjunction with appropriate application specific rules).

Identifying potential conflicts early
The optimistic concurrency control and conflict resolution used by version management has been proven to work very well in production systems. However, it is desirable to highlight and avoid potential conflicts wherever possible. One common approach is for a user to sketch a rough outline of the area that they expect their design to cover before they start it. This is either stored in a short transaction partition, or posted to top immediately, so that it is visible to all users. A test is then run to see if this area overlaps with any other currently active jobs. If so, both the current user and the owners of the overlapping jobs are notified so that they can investigate further what the other jobs involve, and whether they are likely to conflict with each other. This is independent of the other issues covered here, but it is worth mentioning as a useful technique to use in conjunction with version management.

Mobile design
There is a very strong requirement to be able to carry out design operations in the field and synchronize these with the central database. This could include both the initial creation of the design and the process of making as-built changes. Therefore, it is important that the version management approach can support the appropriate use of detached databases. This will not be discussed in detail in this paper due to lack of space, but it is a complex topic in its own right.

Archiving and historical information
Another common requirement is the ability to look back in time. Requirements vary extensively in this area. At a simple level, many companies require work orders to be archived for a number of years (usually the requirement is to archive the equivalent of the paper work order document). At the other extreme, some companies would like to be able to completely reconstruct their entire network as it was at any point in the past. This is another problem that is largely independent of the core "work order problem", and for space reasons we will not discuss it further here.

Conclusions
While most vendors have now moved beyond check-out to provide some basic version management, there are some significant differences between the implementations in the marketplace. In evaluating implementations, it is especially important to look at existing operational systems, in particular examining performance, scalability and reliability. Also consider functionality differences, such as whether version management of the data model is supported, and how sophisticated the conflict resolution is.

This paper has also explained how there are significant additional requirements for a design application in addition to basic version management. The ability to do a sideways merge operation is a very important aspect of providing a comprehensive solution. Other areas to evaluate in a design application include support for jobs built on jobs; partial completion/posting; mobile design capabilities; and archiving capability.

References
  • Newell, R.G., and Easterfield, M.E., 1990: Version Management - the problem of the long transaction. Proceedings of the Mapping Awareness conference.
  • Newell, R.G., and Batty, P.M., 1994, GIS databases are different: Proceedings of AM/FM Conference XVII, Denver, pp. 279-288. (Smallworld technical paper 19).
  • Oracle Technical Network, Workspace Management information: http://otn.oracle.com/products/workspace_mgr/content.html
Page 3 of 3
| previous

Applications | Technology | Policy | History | News | Tenders | Events | Interviews | Career | Companies | Country Pages | Books | Publications | Education | Glossary | Tutorials | Downloads | Site Map | Subscribe | GIS@development Magazine | Updates | Guest Book