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”…
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:
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:
Did I spot something ? Anyone has a thought on this ?