Author Topic: Hiding the remaining Generic Links in QuickLinker  (Read 13444 times)

Paolo F Cantoni

  • EA Guru
  • *****
  • Posts: 8554
  • Karma: +254/-129
  • Inconsistently correct systems DON'T EXIST!
    • View Profile
Hiding the remaining Generic Links in QuickLinker
« on: March 18, 2020, 11:49:31 am »
The definition of the _HideUmlLinks property in the Metamodel Model method states:
"In the <<metaclass>> element for each source stereotype element, add the attribute  _HideUmlLinks set to "True" so that quicklinks with this stereotype as the source element will not include quicklinks inherited from the base UML metaclass."

And so it does!

However, even if we do this, there is still a Dependency, Trace and Information Flow links shown. Is it already possible to suppress these?  If not do we need an additional property such as _HideGenericLinks (analogous to the above) to allow us to control whether or not they are visible to the user?

These links generate unstereotyped links which is contrary to our methodology so they are confusing to the user.

Thoughts?
Paolo
Inconsistently correct systems DON'T EXIST!
... Therefore, aim for consistency; in the expectation of achieving correctness....
-Semantica-
Helsinki Principle Rules!

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8019
  • Karma: +118/-20
    • View Profile
Re: Hiding the remaining Generic Links in QuickLinker
« Reply #1 on: March 18, 2020, 02:14:42 pm »
It's possible, because ArchiMate 3.1 doesn't list those relationships. I can't see that it's doing anything special either.

Paolo F Cantoni

  • EA Guru
  • *****
  • Posts: 8554
  • Karma: +254/-129
  • Inconsistently correct systems DON'T EXIST!
    • View Profile
Re: Hiding the remaining Generic Links in QuickLinker
« Reply #2 on: March 18, 2020, 02:16:29 pm »
It's possible, because ArchiMate 3.1 doesn't list those relationships. I can't see that it's doing anything special either.
That's dangling a carrot in front of the donkey, then whipping it away at the last moment as it tries to bite!   ;)

Any chance of a mechanism to do it?

Paolo
Inconsistently correct systems DON'T EXIST!
... Therefore, aim for consistency; in the expectation of achieving correctness....
-Semantica-
Helsinki Principle Rules!

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8019
  • Karma: +118/-20
    • View Profile
Re: Hiding the remaining Generic Links in QuickLinker
« Reply #3 on: March 18, 2020, 03:50:49 pm »
My point is that it works without adding something extra.

Here's a profile that the quicklinker doesn't show anything except "C".
Code: [Select]
<?xml  version='1.0' encoding='windows-1252' ?>
<UMLProfile profiletype="uml2">
<Documentation id="9A9A9E6E-B" name="OneConnector" notes="OneConnector" version="1.0"/>
<Content>
<Stereotypes>
<Stereotype name="A" notes="">
<stereotypedrelationships>
<stereotypedrelationship constraint="OneConnector::B" stereotype="OneConnector::C"/>
</stereotypedrelationships>
<AppliesTo>
<Apply type="Class">
<Property name="_HideUmlLinks" value="True"/>
<Property name="isActive" value=""/>
</Apply>
</AppliesTo>
</Stereotype>
<Stereotype name="B" notes="">
<AppliesTo>
<Apply type="Class">
<Property name="_HideUmlLinks" value="True"/>
<Property name="isActive" value=""/>
</Apply>
</AppliesTo>
</Stereotype>
<Stereotype name="C" notes="">
<AppliesTo>
<Apply type="Dependency">
<Property name="direction" value="Source -&gt; Destination"/>
</Apply>
</AppliesTo>
</Stereotype>
</Stereotypes>
<TaggedValueTypes/>
<ViewDefinitions/>
<Metamodel/>
</Content>
</UMLProfile>

By adding a metarelationship for dependency between the relationships it did show all three relationship types, which seems... unexpected.

Paolo F Cantoni

  • EA Guru
  • *****
  • Posts: 8554
  • Karma: +254/-129
  • Inconsistently correct systems DON'T EXIST!
    • View Profile
Re: Hiding the remaining Generic Links in QuickLinker
« Reply #4 on: March 18, 2020, 05:40:37 pm »
My point is that it works without adding something extra.

Here's a profile that the quicklinker doesn't show anything except "C".
[SNIP]


By adding a metarelationship for dependency between the relationships it did show all three relationship types, which seems... unexpected.
(my emphasis) I see...  I think it may be the "adding something extra".  Don't forget I've got both metamodel method and spreadsheet method entries while we changeover.  So there may well be some unexpected interactions.

We need to understand the circumstances under which the additional relationships are shown or not shown.  Do you need a support request?

To paraphrase our former PM, "We shall decide which QuickLinks shall be shown and the circumstances under which they will be shown".  ;D

Paolo
Inconsistently correct systems DON'T EXIST!
... Therefore, aim for consistency; in the expectation of achieving correctness....
-Semantica-
Helsinki Principle Rules!

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8019
  • Karma: +118/-20
    • View Profile
Re: Hiding the remaining Generic Links in QuickLinker
« Reply #5 on: March 19, 2020, 08:23:56 am »
I hadn't forgotten your situation. It certainly could contribute.

For the moment I'm not going to be as helpful as I'd like to be... Maybe being able to get rid of those will help you push for time to complete the migration. Do they still show if you remove your quicklink table?

Paolo F Cantoni

  • EA Guru
  • *****
  • Posts: 8554
  • Karma: +254/-129
  • Inconsistently correct systems DON'T EXIST!
    • View Profile
Re: Hiding the remaining Generic Links in QuickLinker
« Reply #6 on: March 19, 2020, 08:06:29 pm »
I hadn't forgotten your situation. It certainly could contribute.

For the moment I'm not going to be as helpful as I'd like to be... Maybe being able to get rid of those will help you push for time to complete the migration. Do they still show if you remove your quicklink table?
So I had a go and removed the spreadsheet QL definitions. Got interesting (and like you, unexpected) results...

The entries in lower case are generated by my model (any vertex can have associative relationships with any other vertex).

The rest were generated by EA.  I have very few MDGs enabled (other than our own).

Paolo
Inconsistently correct systems DON'T EXIST!
... Therefore, aim for consistency; in the expectation of achieving correctness....
-Semantica-
Helsinki Principle Rules!

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8019
  • Karma: +118/-20
    • View Profile
Re: Hiding the remaining Generic Links in QuickLinker
« Reply #7 on: March 20, 2020, 09:07:04 am »
Looks like EA didn't pick up the _HideUmlLinks property at all. In my example the results were correct. I allowed Dependency. EA included specialized types of dependency in the quicklinker (Abstraction, Realization and Usage.) I didn't pick up why they were included initially.

How is your extension defined relative to the stereotypes actually being used? (ie. Where in the inheritance hierarchy for your stereotypes are they?)

Paolo F Cantoni

  • EA Guru
  • *****
  • Posts: 8554
  • Karma: +254/-129
  • Inconsistently correct systems DON'T EXIST!
    • View Profile
Re: Hiding the remaining Generic Links in QuickLinker
« Reply #8 on: March 20, 2020, 11:54:20 am »
Looks like EA didn't pick up the _HideUmlLinks property at all. In my example the results were correct. I allowed Dependency. EA included specialized types of dependency in the QuickLinker (Abstraction, Realization and Usage.) I didn't pick up why they were included initially.

How is your extension defined relative to the stereotypes actually being used? (ie. Where in the inheritance hierarchy for your stereotypes are they?)
OK, I think I follow.  Needs some more experimentation at my end.

However, when I tried to include your profile below (OneConnector) as one of my technologies (enclosing it in a <MDG.Technology version="1.0"> section,.  This was as a separate file in my (usual) path.  I tried to create a toolbox to play with it, but it didn't work.  So I decided to add it (profile only, not technology) at the start of my normal MDG file.  I can put more than one Profile in the MDG file (under the <UMLProfiles> section) can't I?  This time, the toolbox was working!  Can you explain what's happening here?

Also, separately, since I can now play with your example, can you provide the exact metaconstraint you used so I can observe the same behaviour?  Once I understand how your example behaves, I can see what mine is doing.

Paolo
« Last Edit: March 23, 2020, 12:54:38 pm by Paolo F Cantoni »
Inconsistently correct systems DON'T EXIST!
... Therefore, aim for consistency; in the expectation of achieving correctness....
-Semantica-
Helsinki Principle Rules!

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8019
  • Karma: +118/-20
    • View Profile
Re: Hiding the remaining Generic Links in QuickLinker
« Reply #9 on: March 23, 2020, 09:31:26 am »
Not sure I expressed myself properly.

What you are seeing is consistent with _HideUmlLinks not existing at all. I can't see any way you could reproduce that result accidentally otherwise. That's why I asked about where you are defining it.

To answer your question, I created a metarelationship with metaclass=Dependency.

The result was
Code: [Select]
<metarelationships>
<metarelationship metaclass="Dependency" constraint="OneConnector::B"/>
</metarelationships>

Paolo F Cantoni

  • EA Guru
  • *****
  • Posts: 8554
  • Karma: +254/-129
  • Inconsistently correct systems DON'T EXIST!
    • View Profile
Re: Hiding the remaining Generic Links in QuickLinker
« Reply #10 on: March 23, 2020, 12:57:06 pm »
Not sure I expressed myself properly.

What you are seeing is consistent with _HideUmlLinks not existing at all. I can't see any way you could reproduce that result accidentally otherwise. That's why I asked about where you are defining it.

To answer your question, I created a metarelationship with metaclass=Dependency.

The result was
Code: [Select]
<metarelationships>
<metarelationship metaclass="Dependency" constraint="OneConnector::B"/>
</metarelationships>
I'll provide an extract later.  I'll add your constraint and see what happens.  Hopefully it (and what you've said) will shed light on things.

Paolo
Inconsistently correct systems DON'T EXIST!
... Therefore, aim for consistency; in the expectation of achieving correctness....
-Semantica-
Helsinki Principle Rules!

adepreter

  • EA User
  • **
  • Posts: 187
  • Karma: +10/-9
    • View Profile
Re: Hiding the remaining Generic Links in QuickLinker
« Reply #11 on: March 24, 2020, 12:59:27 am »
I am not sure this should start from a technical discussion.

We all have our habits. EA was born when "UML Profile" was the ubiquitous religion.

If we step back a little bit, when we define a new domain specific language we do not care about UML.
There is no reason why we should inherit anything from UML.
The fact that, using EA, we create domain specific languages as UML profiles is "un accident de l'histoire" as we say in french.

So by default these UML specific relationships should not be present.
You might have a configuration option to inherit these relationships from UML.
And you would use that only in the case where you would create a language that semantically extends UML.

Btw UML itself can be seen as a domain specific language for modeling software systems.

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8019
  • Karma: +118/-20
    • View Profile
Re: Hiding the remaining Generic Links in QuickLinker
« Reply #12 on: March 24, 2020, 08:52:52 am »
The option you describe is effectively what we have, which is the topic being discussed here. It's specified by the profile author, they know the relationship that the elements in their language should have to UML. It defaults to false because when adding new options it's best not to change the default behavior. (Something that I am aware EA does on occasion with care and awareness of the impact it's going to have)

It's also because EA treats all elements regardless of the language they come from in a unified way that your model can freely re-use elements of multiple languages without needing to re-invent your entire language from scratch.

Paolo F Cantoni

  • EA Guru
  • *****
  • Posts: 8554
  • Karma: +254/-129
  • Inconsistently correct systems DON'T EXIST!
    • View Profile
Re: Hiding the remaining Generic Links in QuickLinker
« Reply #13 on: March 24, 2020, 10:34:07 am »
Hi Eve,
Last week, I was able to create an "A and a "B" and connect them with a "C" using the following  micro toolbox
Code: [Select]
<Stereotype name="OC Test" notes="Items specific to OneConnector Testing (v0.1)">
<AppliesTo>
<Apply type="ToolboxPage"/>
</AppliesTo>
<TaggedValues>
<Tag name="isCollapsed" type="bool" description="" unit="" values="true,false" default="true"/>
<Tag name="OneConnector::A" type="" description="" unit="" values="" default="A"/>
<Tag name="OneConnector::B" type="" description="" unit="" values="" default="B"/>
<Tag name="OneConnector::C" type="" description="" unit="" values="" default="C"/>
</TaggedValues>
</Stereotype>
Today, I added the metarelationship as below
Code: [Select]
<UMLProfile profiletype="uml2">
<Documentation id="9A9A9E6E-B" name="OneConnector" notes="OneConnector" version="1.0"/>
<Content>
<Stereotypes>
<Stereotype name="A" notes="">
<stereotypedrelationships>
<stereotypedrelationship constraint="OneConnector::B" stereotype="OneConnector::C"/>
</stereotypedrelationships>
<AppliesTo>
<Apply type="Class">
<Property name="_HideUmlLinks" value="True"/>
<Property name="isActive" value=""/>
</Apply>
</AppliesTo>
</Stereotype>
<Stereotype name="B" notes="">
<AppliesTo>
<Apply type="Class">
<Property name="_HideUmlLinks" value="True"/>
<Property name="isActive" value=""/>
</Apply>
</AppliesTo>
</Stereotype>
<Stereotype name="C" notes="">
<metarelationships>
<metarelationship metaclass="Dependency" constraint="OneConnector::B"/>
</metarelationships>
<AppliesTo>
<Apply type="Dependency">
<Property name="direction" value="Source -&gt; Destination"/>
</Apply>
</AppliesTo>
</Stereotype>
</Stereotypes>
<TaggedValueTypes/>
<ViewDefinitions/>
<Metamodel/>
</Content>
</UMLProfile>
Did I add it in the right place? Because there was no change in behaviour  - the UML links were suppressed, regardless of the presence or absence of the metarelationship.

Any explanation?

Paolo
Inconsistently correct systems DON'T EXIST!
... Therefore, aim for consistency; in the expectation of achieving correctness....
-Semantica-
Helsinki Principle Rules!

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8019
  • Karma: +118/-20
    • View Profile
Re: Hiding the remaining Generic Links in QuickLinker
« Reply #14 on: March 24, 2020, 11:10:14 am »
Sorry, I added that metaconstraint to A.

Code: [Select]
<Stereotype name="A" notes="">
<stereotypedrelationships>
<stereotypedrelationship constraint="OneConnector::B" stereotype="OneConnector::C"/>
</stereotypedrelationships>
<metarelationships>
<metarelationship metaclass="Dependency" constraint="OneConnector::B"/>
</metarelationships>
<AppliesTo>
<Apply type="Class">
<Property name="_HideUmlLinks" value="True"/>
<Property name="isActive" value=""/>
</Apply>
</AppliesTo>
</Stereotype>

So what my sample profile was doing was saying that in addition to the connector C between those elements you can also create a UML dependency. The result is that you get Dependency in the quicklinker and model validation between those elements even though you aren't inheriting any UML relationships. But it wouldn't allow a dependency to any other types. You may want to use something like that if you didn't want to add additional metadata to a particular relationship.