SWiM/services/MoC assistance

Change management assistance in SWiM

Assume versioned links.

If the user modifies a document C, which contains versioned links to other documents $$D_i$$, some of which have been updated (non-minor changes) since the last edit of C, ask the user whether he wants to update these links to the most recent version.


 * Maybe only those link types that are already defined in the ontology (in the upper document ontology?) should be considered
 * or better based on user's preferences: ontological links only, or all :-)

How can we bring the ontology into play? Or: Is that necessary? If so, we need a "literal" ontology, which models most aspects of the OMDoc/XML format.

Setting
editing mode (source or something else where the user can edit link targets)

Input

 * the currently viewed concept C
 * maybe: from the (upper) system ontology: which links denote dependencies?
 * maybe later: the dependency graph from the knowledge base (not by value, but by reference, i.e. the ability to query the knowledge base)
 * maybe later: user preferences, for filtering link types

Processing

 * 1) find all concepts $$D_i$$ linked from C, together with the version number v given in the link
 * 2) check whether there have been non-minor changes; let $$v'$$ be the most recent version
 * 3) Implementation: check by modification date (cf. make), or by version number?
 * 4) if not, process the next concept

Output

 * the editing box, with indicators next to each updatable link
 * records containing the number $$v'$$ are included in each case, so that the 2nd step can be executed on the client
 * Step 1.5: if the user clicks on an indicator, pop up a box with
 * links to $$D_i/v$$, $$D_i/v'$$, $$diff(D_i/v, D_i/v')$$
 * buttons labeled keep and update

2nd Step: Updating one link

 * or alternatively: update all links, by a button below the editing box
 * even better: let user select (check-box) links to update!

Input

 * the link to update: source S, target T, new target version $$v'$$

Output

 * just change the link to $$T/v'$$ in the editing box :-)