I have the following toy Logical System
Component LC1 has two boolean property values: “a” and “b”. Component LC2 has two boolean property values: “c” and “d”.
The behaviors of LC1 and LC2 are described by the following state machines
I’d like to model that:
the LC2 state machine starts when the LC1 state machine reaches the final state;
when the LC2 state machine reaches the final state, the Logical System enters in Mode 1 of the LC1 state machine.
I tried to create a state machine for the Logical System from which to call the state machines of LC1 and LC2 (my favorite choice, but I do not know if the Arcadia methodology allows it), but I was not able to do that.
Do you have any suggestions regarding how to connect the two state machines?
Thanks for your help,
It is indeed not possible to “call” state machine of sub-component inside a parent component state machine with Capella.
My proposal regarding your problem is the following:
I understand that the state machine of the two component are executed one after the other.
Now the question is: how does each component know that the other one has completed the execution of its state machine?
I would image two possible solutions:
- either an additional component is orchestrating the execution of LC1 and LC2
In that case, you will need to create this new component and to create exchanges between this orchestrating component and LC1 / LC2.
The state machines of LC1 / LC2 will be modified to be started on the reception of a signal from this orchestrating component and will send another signal when execution is completed
- or the orchestration is performed by LC1 / LC2
In that case, you will need to create exchanges between LC1 and LC2.
Each component will start its state machine on the reception of the signal from the other component and will send a signal on completion of its own state machine
thanks for your suggestion. I will try both solutions to see which one is best suited to my purpose.