Issues Demonstration Application
This is probably the closest of the sample applications to a real system. In fact we use
a modified version of this system internally within NT/e to keep track of bugs,
enhancement requests and ideas.
issues.mdl Rational Rose file
issues.zip 99.7% generated.
See It Running
One of the techniques worth pointing out is the triangular looking relationship
between Assignment, Person and Role. Actually this is one way of increasing the
facilities available to use on a many to many relationship. Person has a many-to-
many relationship to Role which is resolved by an implicit link table. We can set the
name of the link table as a tag value of the relation (for once, not on an end, but
relation itself!). This is set to Assignment. A Person is assigned to a Role. We then
model the Assignment entity which also accesses this same table. So we have two
ways to get at the same thing. The PersonDV is a dataview capable of accessing all
the people in the Person table. ReviewerDV uses the Assignment link table to return
the list of people with a role of reviewer. It can do this by limiting the rows it returns
using an additional where clause, role_j = 'Reviewer'. This illustrates several points.
The first thing to notice is that the modeller specified a field called role, not role_j. The
problem is that role is a SQL reserved word and database tables and columns can't be
called SQL reserved words, so JeeWiz adds '_j' on the end. The next thing to
mention is that the role_j referred to is on the Role entity (actually the Role_j table).
This utilises the ability of dataviews to link fields to attributes on entities other than
the primary entity. So searches on the ReviewerDV dataview returns the combination
of Person and Role, where the role is reviewer. The same thing is done for TesterDV,
so any Person can log an issue and any person can fix it, but only a limited number of
people can review it and pass it for fixing, and only a few can certify it tested and
ready for release.