Author Topic: Artifacts and attributes  (Read 232 times)

Uffe

  • EA Practitioner
  • ***
  • Posts: 1274
  • Karma: +93/-8
  • Flutes: 1; Clarinets: 1; Saxes: 5 and counting
    • View Profile
Artifacts and attributes
« on: June 26, 2018, 08:51:41 pm »
Hi all,


I'm working in 13.5, but there's no mention of any changes to this behaviour in the release history for 14.

The properties dialog for an artifact does not include a "details" page, but the context menus in both the diagram and project browser allow me to open the attributes dialog, which allows me to create attributes in the normal way, with type, scope and initial value.

If I create an instance of this artifact, its type is reported as artifact (not object). In its diagram context menu, under "Features & Properties", there's an item "Override Attribute Initializers." When working with classes, this item does not appear for an instance but for a specialized class.

The same menu item for a class instance instead has the "Set Run State" item. This is what I would expect for an instance of an artifact as well. I can get that if I create an object and set its classifier to the artifact, but not by dropping the artifact onto a diagram -- that forces the creation of an artifact instance.

I should also point out that the "Override Attribute Initializers" item, when selected for an artifact instance, only yields an error message saying that the instance "has no attribute initializers to override." That makes sense if the attributes of artifacts are intended to work like the attributes of classes -- but why have the menu item there in the first place, only to have it flash an error message?

However, the weirdness doesn't end there. If I create another artifact (classifier) and draw a generalization from it to the previous one, the diagram context menu for the specialized artifact does not include the "Override Attribute initializers" item -- there's just the normal "Attributes" item.

If I switch on presentation of inherited attributes, the attributes from the general artifact are shown (with initial values) in both the specialized artifact and in the artifact instance.

So.

1) Artifacts can have attributes.
2) Generalizations can be drawn between artifacts.
3) Attributes are inherited between artifacts connected by a generalization.
4) An artifact's local attributes can be given initial values.
5) Initial values of an artifact's inherited attributes cannot be overridden.
6) An artifact instance, which is itself an artifact, cannot have a run state.
7) An artifact instance, which is itself an object, can have a run state.

Is this by design?


/Uffe
My theories are always correct, just apply them to the right reality.