Create an Association with unique properties

Hi,
I’ve got a problem when I want to create two Edge between two borderedNode.
for exemple:
The problem is that each edge has got the same properties.
If I update the first edge, the second one is update too
(as you can see in those pictures)
How to make my properties unique to my edge ?
Thanks

Hello,
It seems your edges are representing the same model element (input_1 of type Input).
If you want them to have specific properties, you need to create a specific model element which will have a source and a target (your bordered nodes) and specific properties.

Hello, thanks for your answer.
I did something like you suggest me, but I encounter some problems.
First I added " abstract = true " property to my new model “Port_I_O”.
Then I added superClass Port_I_O property to my old nodes (Input and Output)
And finally, I created my edge in my diagram.
As you can see :
And I have the same problem. Maybe this problem is due to the abstract property ?
But how can I do if I haven’t this property?
I tried to tranfert associations to the Input class like that :
But it’s the same result.
Thanks

Hello again,
I’m not sure to understand what you want to do:

  • what are the edges?
  • are the attributes related to the edges? or to the ports?
    My previous answer was to define a model element related to the edge.
    What you have currently is:
  • an abstract class for the ports
  • a class for input port
  • a class for output port
    The edge you have defined in the diagram is representing the relation “associateTo” of the class “Port_I_O”.
    Thus when you select the edge in a diagram, it selects the model element in which the relation is defined (the port) and shows its properties.
    The properties you see are the properties of the port! Your edge has no property has it’s only showing a relation.
    If you want to have properties defined on the edges, you need to define a class for the edges.
    You could define something like this:

Thanks for your help.
So what is an Edge for me ?
An edge is an association between two components (my input and my output).
So I would like to put attributes in my association, just like you suggested to me.
Thus, if I click on the association between Input_1 and Output_1, I can have specific attributes like :
Untimely type ecore.EEnumerator values (untimely, erroneous , absent )
Erroneous type ecore.EEnumerator values (erroneous, untimely, absent )
Absent type ecore.EEnumerator values ( absent, untimely, erroneous )
The values of theses attributes have to be unique.
By unique I mean, only for the association between Input_1 and Output_1.
So if I have one other association, like Input_1 to Output_2, I want to set another value for my attributes.
Thanks in advance.
Maybe in french…
Peut-être que ce sera plus clair en Français.
Je souhaiterais créer une association entre les composants Input_1 et Output_1.
Mon but étant d’avoir des propriétés particulières sur ces associations.
De ce fait lorsque je click sur l’association (entre Input_1 et Output_1) j’ai accès aux propriétés suivantes:
Untimely type ecore.EEnumerator values (untimely, erroneous , absent )
Erroneous type ecore.EEnumerator values (erroneous, untimely, absent )
Absent type ecore.EEnumerator values ( absent, untimely, erroneous )
Les valeurs de ces propriétés doivent etre uniques, ainsi si je rajoute une association entre Input_1 et Output_2,
je souhaiterais pouvoir définir d’autre valeurs pour ces propriétés.
Mais le problème est que dès lors que je modifie une association, cette modification impacte toutes les autres associations ayant comme source commune Input_1.
Je souhaiterais donc pouvoir avoir des valeurs unique par association.
Merci d’avance.

Hello again,
So the attributes are indeed related to the edges and not to the ports.
Thus you could remove the attributes from the Port_I_O class as well as the associations.
By the way, you could also move the “extends pa.PhysicalFunction” and the “name” attribute to the abstract class to avoid declaring it several time.
You would then have something like this:
By the way, if you are trying to build a safety viewpoint for Capella, you might be interested by Safety Architect
http://www.all4tec.net/safety-architect
This tool is made for safety analysis (definition of failure modes, generation of failure tree…) and can be coupled with Capella to transfer information in both way!

Hi,
Thanks for your help, I’ve made my new Edge class and everything works well
.
I have another question, is it possible to create a new componant (like my Input) but not extends to “pa.PhysicalFunction”, but extends to somethink like 'CapellaView".
This new componant has to be extends to the main windows, as the “physical function” componant is.
Thanks in advance.

Hello,
Good to know that it works now!
You cannot extend something like CapellaView.
You need to understand that what you define in the .data.vptext file is an extension to Capella meta model.
Then what you define in the .diagram.vptext file is an extension (a layer) to Capella diagrams in order to display you new kind of model elements.
Thus, the classes you have defined (port, edge) are new kind of model elements which are stored in the model (you can see them in the project explorer).
By extending “pa.PhysicalFunction”, it means that your new kind of model elements are stored under Capella Physical Functions.
In any case, you need to defined where your new model elements will be stored. But you can store them anywhere you want. All Capella elements support the mechanism of extension.
In your specific case, it seems to make sens to define the ports and edges under the Physical Function as the belong to it.

Copyright © Eclipse Capella, the Eclipse Capella logo, Eclipse and the Eclipse logo are Trademarks of The Eclipse Foundation.