Author Topic: Extending Archimate 3: ArchiMate_ApplicationComponent vs ApplicationComponent  (Read 7019 times)

mmontminy

  • EA User
  • **
  • Posts: 37
  • Karma: +0/-0
    • View Profile
Hi,

I trying to extend Archimate 3 ApplicationComponent. In my profile, I have a generalize relationship with the archimate ApplicationComponent. I can select between ArchiMate3::ApplicationComponent or ArchiMate3::ArchiMate_ApplicationComponent. What is the difference?
If I select ArchiMate3::ArchiMate_ApplicationComponent, I have a problem in my toolbox, instead of showing the component icon, I have a folder icon and when I drag and drop on a diagram, I have to select between two component types that look the same.

If I select ArchiMate3::ApplicationComponent, I don't have the issue. I first went with If I select ArchiMate3::ArchiMate_ApplicationComponent because it is the one shown in ArchiMate3 toolbox.

I am using version 14.0
Martin

Sunshine

  • EA Practitioner
  • ***
  • Posts: 1324
  • Karma: +121/-10
  • Its the results that count
    • View Profile
Think you've solved it by selecting ArchiMate3::ArchiMate_ApplicationComponent
Happy to help
:)

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8085
  • Karma: +118/-20
    • View Profile
I can select between ArchiMate3::ApplicationComponent or ArchiMate3::ArchiMate_ApplicationComponent.

Any stereotypes in the ArchiMate3 technology that don't have the "ArchiMate_" prefix are abstract types used to implement metamodel rules between the types. From memory, ApplicationComponent is extending a different UML type than one of its specializations, which meant that we needed to separate that fact from the inheritance.

mmontminy

  • EA User
  • **
  • Posts: 37
  • Karma: +0/-0
    • View Profile
Thanks for the explanation.

Then I was right selecting ArchiMate3::ArchiMate_ApplicationComponent as my parent class but I still have my problem with the toolbox that doesn't behave properly:
 instead of showing the component icon, I have a folder icon and when I drag and drop on a diagram, I have to select between two component types that look the same.
Martin

qwerty

  • EA Guru
  • *****
  • Posts: 13584
  • Karma: +396/-301
  • I'm no guru at all
    • View Profile
That means: you did something wrong. Unfortunately A does not tell you what  >:( >:( >:( So you are left to try and error. What I do is: a) wait a day and have enough sleep. b) check each details by comparing it to a working part. c) re-generating everything by exporting files and running the creation wizard (what a wizard, more the sorcerer's apprentice).

q.

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8085
  • Karma: +118/-20
    • View Profile
Then I was right selecting ArchiMate3::ArchiMate_ApplicationComponent as my parent class but I still have my problem with the toolbox that doesn't behave properly:
 instead of showing the component icon, I have a folder icon and when I drag and drop on a diagram, I have to select between two component types that look the same.
Did you include an extension as well as the generalization? I don't know a reason (off the top of my head) why you would see two components from the menu, but the behavior sounds like what happens when you have two different extensions, including an inherited one.

That means: you did something wrong. Unfortunately A does not tell you what  >:( >:( >:( So you are left to try and error. What I do is: a) wait a day and have enough sleep. b) check each details by comparing it to a working part. c) re-generating everything by exporting files and running the creation wizard (what a wizard, more the sorcerer's apprentice).
Actually, it usually means that's what you asked for. It's not intrinsically wrong so there's no reason for EA to report it as an error.

qwerty

  • EA Guru
  • *****
  • Posts: 13584
  • Karma: +396/-301
  • I'm no guru at all
    • View Profile
Actually, it usually means that's what you asked for. It's not intrinsically wrong so there's no reason for EA to report it as an error.
:-X

Glassboy

  • EA Practitioner
  • ***
  • Posts: 1367
  • Karma: +112/-75
    • View Profile
Actually, it usually means that's what you asked for. It's not intrinsically wrong so there's no reason for EA to report it as an error.
:-X

Some kind of syntax checker would be nice, but it does have a pretty niche audience.

mmontminy

  • EA User
  • **
  • Posts: 37
  • Karma: +0/-0
    • View Profile
@Simon,

Yes, I have an extension to the base «metaclass» Component because that's what an E.A. consultant told me to do.
In the mdg_technologies.pdf p.28, the note says: If you are adding any of the Metaclass element Attributes to your stereotype, or if you want to use the Profile Helper to create a toolbox profile, your stereotype Class must extend a metaclass as well as specialize a stereotype

Based on my latest tests described below, it is the Extension Relationship to the base «metaclass» that causes the issue but at the same time, it's only when I have that Relationship that my stereotype class is correctly instantiated with the correcte stereotype.

I hope this is clear. Any solutions???

Created a brand new project with a brand new profile step by step to control everything
Step 1:
- Drag and drop Metaclass and selected Stereotype ArchiMate3::ArchiMate_ApplicationComponent
- Created new Stereotype LBC_ArchiMate_ApplicationComponent. I add a tag value attribute to differentiate from parent class.
- Draw Generalization Relationship from LBC_ArchiMate_ApplicationComponent to ArchiMate3::ArchiMate_ApplicationComponent
- Publish profile package as UML Profile
- Import profile in Resources
- Test in diagram
Result:
- toolbox has only one component icone
- Component is correctly instantiated but the stereotype in properties is empty.

Step 2:
- Add «redefines» stereotype to Generalization Relationship establish in step 1
- Publish profile package as UML Profile
- Import profile in Resources, overwrite current profile
- Test in diagram
Result:
- toolbox has only one component icone
- Component is correctly instantiated but the stereotype in properties is empty.

Step 3:
- Add «metaclass»Component
- Establish Extension Relationship from LBC_ArchiMate_ApplicationComponent to Component
- Publish profile package as UML Profile
- Import profile in Resources, overwrite current profile
- Test in diagram
Result:
- toolbox has now the folder icone. If I drad&drop on the diagram, I'm asked to select between ApplicationComponent and ApplicationComponent  ::).
- I've tried with both and same result: Components are correctly instantiated including the stereotype that now has the «LBC_ArchiMate_ApplicationComponent» value



Martin

mmontminy

  • EA User
  • **
  • Posts: 37
  • Karma: +0/-0
    • View Profile
One more thing...

If I remove the Extension Relationship from LBC_ArchiMate_ApplicationComponent and Component, publish and reimport profile. The toolbox now have only one icon and when I instanciate a component (D&D on diagram) I now have the stereotype correctly populated.

This is getting complicated  ???
Martin

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8085
  • Karma: +118/-20
    • View Profile
Re: Extending Archimate 3: ArchiMate_ApplicationComponent vs ApplicationComponent
« Reply #10 on: September 21, 2018, 09:43:41 am »
Yes, I have an extension to the base «metaclass» Component because that's what an E.A. consultant told me to do.
In the mdg_technologies.pdf p.28, the note says: If you are adding any of the Metaclass element Attributes to your stereotype, or if you want to use the Profile Helper to create a toolbox profile, your stereotype Class must extend a metaclass as well as specialize a stereotype.

That PDF is out of date, and so is your consultant.

I ran through your steps.

Step 1:
...
- Created new Stereotype LBC_ArchiMate_ApplicationComponent. I add a tag value attribute to differentiate from parent class.
...
- Component is correctly instantiated but the stereotype in properties is empty.
In the properties dialog, the tagged value will be in a separate page with the name of your profile. In the docked tagged values window you'll see it under <profilename>::LBC_ArchiMate_ApplicationComponent

Step 2:
- Add «redefines» stereotype to Generalization Relationship establish in step 1
Result:
- Component is correctly instantiated but the stereotype in properties is empty.
Now the tagged value should show up under ArchiMate3 in the dialog. In the docked window it shows up under ArchiMate3::ArchiMate_ApplicationComponent.

I can't see anything wrong with this behavior. As an added bonus, if you set your technology as Active in the manage technologies dialog. Any time you create an Application Component, it will use your stereotype instead of the one from ArchiMate 3.

Step 3:
- Add «metaclass»Component
- Establish Extension Relationship from LBC_ArchiMate_ApplicationComponent to Component
Result:
- toolbox has now the folder icone. If I drad&drop on the diagram, I'm asked to select between ApplicationComponent and ApplicationComponent  ::).
- I've tried with both and same result: Components are correctly instantiated including the stereotype that now has the «LBC_ArchiMate_ApplicationComponent» value
As I said, that will cause the behavior. Take my advice instead of some random "E.A. consultant". Not only is it not necessary in the current version of EA, it breaks things.

Geert Bellekens

  • EA Guru
  • *****
  • Posts: 13404
  • Karma: +567/-33
  • Make EA work for YOU!
    • View Profile
    • Enterprise Architect Consultant and Value Added Reseller
Re: Extending Archimate 3: ArchiMate_ApplicationComponent vs ApplicationComponent
« Reply #11 on: September 21, 2018, 01:11:32 pm »
I think sometimes the extension to the metaclass is still needed to make things work.

I recently created a abstract stereotype specializing ArchiMate_BusinessObject.
Then I added concrete sub-stereotypes.

With that setup but the toolbox profile helper didn't work.
I could select my stereotype, but the toolbox item was not added (no error message, simply nothing happened).
This was solved by adding the extension to the metaclass Class (as was mandatory in a previous version)

I have not found any adverse effects of the extra extension to Class.

(all of this in version 14.1.1426)

Geert

mmontminy

  • EA User
  • **
  • Posts: 37
  • Karma: +0/-0
    • View Profile
Re: Extending Archimate 3: ArchiMate_ApplicationComponent vs ApplicationComponent
« Reply #12 on: September 22, 2018, 06:31:30 am »
Quote
That PDF is out of date
It's dated from September 5, 2018. Other more reliable source of information?

You didn't mentioned anything about the fact that the stereotype is empty in after step 1 and 2. My understanding is that the instantiated component should have the LBC_ArchiMate_ApplicationComponent (from the profile) so that if I modified the content of the stereotype (e.g. add a tagged value) I can use the Synchronize Stereotype functionality to update my instances.

Speaking of Synchronize Stereotype functionality, from (http://www.sparxsystems.com/enterprise_architect_user_guide/14.0/model_domains/synchronizetagsandconstrain.html), I should be able to use it on connectors. I have created stereotype version of ArchiMate3::ArchiMate_Flow and ArchiMate3::ArchiMate_Triggering with tagged values. After modification of my stereotype connector, I tried to use the Synchronize Stereotype functionality without success. I had to write a script.

Thanks!
Martin