[udig-devel] Target as hook for Issues (vs Groups)

Jody Garnett jgarnett at refractions.net
Fri Sep 8 02:00:13 PDT 2006


So the Issue model has been refined over the last couple of weeks - but 
not on this public email list.
Now that I have developers looking to implement, there are a few things 
to resolve - and I ask that we work through them on the public 
(development) list. If you are working on a uDig based project this 
topic is of interest to you, as we are trying to provide a new facility 
that will help automate some interaction with your custom applications. 
This represents the first step of the uDig project offering you more 
then just visualization :-) And yes I am thinking of projects like 
DivaGIS here.

Very exciting!

Issues appear to be have, a type and a group (I assume the TreeTable can 
be grouped by either for display much like eclipse problems view)
What is missing from this array, is an Issue "target" - let me explain 
what that is - and why we cannot simply map this onto "group".

Issues need to be "raised" against specific objects in a domain model 
being hosted by uDig. Applications such as DivaGIS place domain objects 
on their map blackboard for fun and profit. We are trying to set up an 
issue model that lets us represent issues against these sorts of things.

And in proper eclipse style we should make use of the same facilities 
ourselves; so lets do that ....
Map - a map could have various issues (say data not being available)
Layer - a layer could have various issues (say feature not passing 
validation tests)
GeoResource - may have some issues raised against it (perhaps it is 
missing projection information)

Those examples may be too specific (since they are classes we are 
familiar with), so let me add one:
ReviewQueue - perhaps the uDig based application has a queue of maps 
that are in need of review

So in order to make an Issue not dependent directly on Map, Layer, or 
GeoResource we need to seperate out the concern.

For inspiration we can look to a "workflow system" (basically the real 
J2EE solution for these problems), workflow systems take on the job of 
managing an objects state, including allowing normal users to define the 
states an object can go through. As such you need to pick up your domain 
object and ask it to delegate a lot of functionality to a common module 
called the workflow system. To communicate with these systems they 
usually give you an "ID" that you can used to ask what you current state 
is, and what actions are allowed from there etc...

We have a similar situation, we need to give out an "ID" that people 
writing their Domain Model can hold onto, and then they can ask the 
issue system for a list of issues associated with them.

And we can kickstart this process in uDig by making use of a "target" ID 
for Map, and Layer.

Now Map and Layer are never supposed to change when we add new 
functionality like this, we are supposed to use the MapBlackboard. So if 
we had a key on the map black board to hold this ID from the issue 
system we would be set.  However I do not think the MapBlackboard is 
persisted, for specific applications people are supposed to persist the 
information they care about off the blackboard (often to database or disk).

To make this kind of thing easier it would be nice to make good on a 
couple of map black board ideas:
- persist entries on the map blackboard that are Serializable
- visualize entries on the map blackboard that are Features
(both of these would ease the pain of making new tools, and using udig 
for your own custom work)


So the question is:
- do we need a Target interface (single method that can return a target 
ID used to query into the issue model)
- or just the ID enough?

Answer is we need the interface, so that if a Target appears as the 
current selection we can adjust the Issues view to track it.

Next question is - Map and Layer form a hierarchy do we need Target to 
form a heirarchy?

Formal answer is "no", hierarchy is from the domain Map can traverse its 
layers and build up a list of all issues
Pragmatic answer is "yes", is Target can have child targets, our single 
issues view would work out of the box for Map/Layer, and the same 
facility would be available for other domain models.
Final answer is "no", we can click around to the different layers, lets 
not make things complicated unless people really find the pragmatic 
answer saves them time.

Sorry to not be more involved on this one, I had hoped the target thing 
was being sorted out.
Jody



More information about the udig-devel mailing list