Component port Provide/Require interfaces meaning

Hi there !

TLDR: I’m completely puzzled about the semantics of Components Ports Provides/Requires Interfaces and Components Use/Implement Interfaces. If a component port provides an interface my understanding is that this component can “produce”/“output” exchange items of this interface through the port. Am I right ? And the opposite for “require”…

Long story:
I’m wondering if my understanding on how to use interfaces is the right one. Let me try to explain.
I’m trying to express the following at the Physical level:

  • A client (Component) sends a “message” event to a server (Component)
  • The server answers with a “response” event to the client
    In order to specify this, I have two interfaces “InterfaceMessage” and “InterfaceResponse” both with an Exchange Item allocation with the corresponding event.

Then I specify that:

  • The client Port “provides” the “InterfaceMessage” and “requires” the “InterfaceResponse”. Meaning that the client will produce and communicate “message” elements through its port and will be waiting for “response” events through this same port.
  • The server Port “provides” the “InterfaceResponse” and “requires” the “InterfaceMessage”. Meaning that the server will produce and communicate “response” elements through its port and will be aware of “message” events through its port.

This will be summed up in the following IDB diagram:
image

Now I would like to describe the dynamics of this and go on a interface scenario:

  • If I add a message between the client and the server I expect to be able to map the “message” event to this message which is the opposite !!

  • And from server to client I expect to be able to map the “response” event to the message and again this is the opposite:

Finally leading to the ability to build this:
image

Did I spot something ? Anyone has a thought on this ?

Regards,
Arnaud

Hi Arnaud,

The assignment of provided and required Interface is wrong. If you change the port type of your component port to Flow and assign the interface, you will see, that capella assign the provided interface on a In-Flow port.
On operation interfaces the naming convention makes more sense, the server has to provided an operation which the client can use to transfer data to the server.

Regards,
Andreas