Author Topic: How would you model this?  (Read 856 times)

AndyJ

  • EA User
  • **
  • Posts: 332
  • Karma: +5/-2
  • It's only a model
    • View Profile
How would you model this?
« on: June 15, 2011, 09:29:11 am »
Hi team, I'm scratching my head over this one, and wondering if I'm trying to push UML a bit too far...

My team is modelling current "As Is" business processes, and in support of this activity, we're producing detailed domain models (class diagrams) showing low level details of information that is currently being collected and disseminated.

In many cases we've used enumerations to record the literal values that are currently collected...

Here's the stumbling block.

We have one concept that is currently represented by a table with approx 100 rows. We want to include the literal values from this table into the modelling effort.

Different classes of users are allowed to see different sets of values.
Different classes of users are allowed to select different sets of values.
Some values are historic and can be viewed, but cannot be selected or added...

I've had a look at the UML table class, but this seems to be limited to a fairly high level description of the columns of a table.

Is enumeration still the appropriate method to model this kind of information?

We want the literal values to be visible to our business users during this modelling process, as it is an important feed in to modelling the business rules...

All suggestions will be gratefully received.

Andy
Sun Tzu: "If you sit by the river long enough, eventually the body of MS Visio floats past."

Geert Bellekens

  • EA Guru
  • *****
  • Posts: 8160
  • Karma: +192/-22
  • Make EA work for YOU!
    • View Profile
    • Enterprise Architect Consultant and Value Added Reseller
Re: How would you model this?
« Reply #1 on: June 15, 2011, 03:38:49 pm »
Andy,

I would indeed use an enumeration to show the different values.
The isHistoric property seems simple to me, I would simply add this as a boolean attribute to your enumeration. (so not a literalValue, but an Attribute).
Then you have the rights for the user groups.
This could be modeled in many different ways.
1) Create two (n-m) associations from the enumeration to the user group class, one for "can see" and another one for "can select"
2) create a userRights class containing an attribute with the type of the enumeration, two boolean attributes for "can select" and "can see", and an association to the user group class (n-1)
3) create an association between the enumeration and the user group class with an association class contain the rights each user group has on that enumeration instance.

The values for the different rights I would keep in an excel file attached to the actual enumeration.
I think I would go for solution 2), but that all depends on the existing modeling rules and guidelines in your environment.

Geert

sargasso

  • EA Practitioner
  • ***
  • Posts: 1406
  • Karma: +1/-2
  • 10 COMFROM 30; 20 HALT; 30 ONSUB(50,90,10)
    • View Profile
Re: How would you model this?
« Reply #2 on: June 15, 2011, 04:43:36 pm »
or (if there are not too many) create different enumerations for each user class.
"It is not so expressed, but what of that?
'Twere good you do so much for charity."

Oh I forgot, we aren't doing him are we.

AndyJ

  • EA User
  • **
  • Posts: 332
  • Karma: +5/-2
  • It's only a model
    • View Profile
Re: How would you model this?
« Reply #3 on: June 16, 2011, 10:07:01 am »
I like your thinking!

I was originally thinking along the lines of a separate enumeration for each set of values, but was wondering how I would "invoke" (for want of a better word) those separate enumerations in the Domain model.

Having separate classes for the categories of users allows me to invoke the appropriate enumerations.

Thanks muchly,

Andy.
Sun Tzu: "If you sit by the river long enough, eventually the body of MS Visio floats past."