Instances of Exchange Items

Is it possible in Capella to use classes to define interface types and implementations such as it is done with SysML interfaceBlocks?

I’ll give an example. Bruce Douglass in his “Agile Systems Engineering” book exemplifies an interface with the following definition:

PowerBusInterface is a block with properties just as the Classes in Capella. It is then used to specify instances with different values.

I would like to be able to use such definitions for mapping engineering values into ICDs such as ARINC429 labels on the physical level - and forcing conformance to a base class that specifies the label structure. Is it possible?

In Capella the use case would be:

-Define Class for a given interface type.
-Assign an instance of the Class which specifies the ExchangeItem (which necessarily conforms to Class)
-Assign ExchangeItem to Functional Exchange / Interfaces.

2020-10-07 08_41_48-Chapter-8---The-Handoff-to-Downstream-Engineeri_2016_Agile-Systems-Engineeri - P.png

Obs.: I know PVMT kind of works around this issue (such as the properties in the oil cooling example by Jim Daly on the Rolls Royce webinar) but there are some limitations on the specification of properties in PVMT such as the impossibility (as far as I know) to include lists of properties in a given element.

Did you already checked out the Help -> Thematic Highlights section of Capella Help?
There are two chapters that may interest you: Functional Analysis and Interface Engineering, and Interfaces and Data Modeling in Capella.

Hi Juan,

I have checked these pages but haven’t been able to find anything relatable to instancing classes or instancing exchange items in Capella.

Closest I have found was the “ComplexValue” which is a kind of Value typed by classes but it is not really user-friendly, it does not enforce compliance with the class (which would be the big gain on using classes to set a data type defintion).

This would be useful for general use of data objects in Capella but I see a specific application: Define Exchange instances which could be used to specify specific instances of functional interactions such as in Functional Chains and in Scenarios.

Example use case:

1-Open a CDB and define an Exchange Item with a list of Exchange Item Elements:

2-Allocate Exchange Item to Functional Exchange 1
3-Create functional chain including Functional Exchange 1
4-Open Functional Chain Involviement Link (instance of Functional Exchange 1).
5-Define ExchangeItem1 as echanged element
6-Define an instance of ExchangeItem1 as Exchange Context of the Functional Chain Involvement Link, in the example:

ExchangeItem 1 instance:
-Property 1 = 10
-Property 2= 12304
ExchangeItemElement2: True

7-Display ExchangeItem 1 instance graphically on the diagram for clarity.


The use case you describe can be done with Scenarios today. Try the following:

1-Open a CDB and define an Exchange Item with a list of Exchange Item Elements, THE DATA TYPES AND THE VALUES (EX. ENUMERATION)
2-Allocate Exchange Item to Functional Exchange 1
3-Create SCENARIOS including Functional Exchange 1 (AS A MESSAGE)
5-Define ExchangeItem1 as exchanged element

It would be relevant to do the same for Functional Chains indeed (not implemented today)

Hope it helps,

1 Like

Thanks for the response Juan!

That exact procedure is possible also with functional chains although the [display] “Exchange Context” accelerator for functional chain description diagrams is missing. I was able to around this but I had to load the exchange context in the diagram as a regular constraint. (functional chain involvement links also have the “Exchange Context” field so it is possible to create the constraint, the only thing missing is the accelerator to properly bring the representation to the diagram - with the “Constraints” accelerator I’m able to bring the constraint but without the proper link).

The difficulty I have is with defining the Exchange Item instance, I could use the ctrl-space to properly reference the ExchangeItem but I’m not able to specify the properties within the exchange item as an instance in the CDB so that I can reference the specific instance - notice, it is not a big issue for me, I just wanted to know if it was possible since there seemed to be provisions for that: I’ve noticed I can add an “Exchange Instance” on the Exchange Item in the Project Explorer but it does not enable me to specify properties based on the definition of the exchange item.

Thanks again for the time taken reading and answering this


In fact “value” elements are the right choice to model values in Capella.
It’s analog to “slots” in UML.

Although they are not “user friendly” Capella meta-model for complex values is designed quite well
and can be used as is. Yes there is no needed Capella tools to work with this meta-model: tables, diagrams and so on.

I had an experience in using complex values to specify mappings between different data models in IT integration projects.

For this task a new viepoint with several tools were created by me. It contains the following tools:

  • value mapping diagram
  • value mapping table representation
  • M2Doc templates to generate document’s section based on mapping information

For example you can use value mapping diagram to create new data value based on any class (with any level of composition). Based on class information complex values structures are automatically created. Simple values and value references are shown on diagram as “value ports”
Ports (Value references) can be connected to another ports (values or also value references graphically. Such data mapping is defined.

For simple data values concrete values can be defined from our project.

An example data mapping digram

Based on data value mappings documentation is generated with mapping information in tree view

Viewpoint also adds a new table representation to analyze data mappings trees in Capella

One more quick example

Two class structures are defined

Two high level complex values are defined for this class structures

Both complex values are shown on diagram. After that using wizards internal complex\simple data values\references are added. Also data mappings are defined.

Result model for complex values:

Data mapping table that shows mappings betwee two data structures


It’s possible to define complex values inside exchange items instances

But I did not use this possibility (don’t remember why).

I’ve have added possibility to “connect” complex values to ports on data flow diagrams.

(Excuse me for russian names for this example)

Based on this diagram links to complex values in functions documentation are generated.
From this information it’s possible to understand how output values produces by functions
are intialized based on input values of functions.

Interesting viewpoint! If you are not yet aware, The Labs 4 Capella were launched a month ago:

The goal of the Labs is to have a space where viewpoint developers as you can share their vp and get connected with people using them, in order to get feedback and even funding to increase the maturity of the viewpoint.

I invite you to add your viewpoint to the Labs: to get more information :slight_smile:

1 Like

Yes, I now about labs4capella and already tested capella-OpenMBEE integration from it.
I am ready to share this viewpoint if some interest will occcur.
It needs some time to make internal product to be open sourced.