Bug description
In the following model with 3 specifications, the engine, after executing the path c3.notbasic+c2.colour, does not proceed with the existing path c3.gpsvalid+c1.gps and stuck.
Model
Component 1
@Port(name = Component_1_ports.c1_p_gps, type = PortType.enforceable)
@ComponentType(initial = Component_1_states.c1_s_init, name = "Component_1")
public class Component_1_spec {
@Transition(name = Component_1_ports.c1_p_gps, source = Component_1_states.c1_s_init, target = Component_1_states.c1_s_gps, guard = "")
}
Component 2
@Ports({
@Port(name = Component_2_ports.c2_p_basic, type = PortType.enforceable),
@Port(name = Component_2_ports.c2_p_colour, type = PortType.enforceable)
})
@ComponentType(initial = Component_2_states.c2_s_init, name = "Component_2")
public class Component_2_spec {
@Transition(name = Component_2_ports.c2_p_basic, source = Component_2_states.c2_s_init, target = Component_2_states.c2_s_basic)
@Transition(name = Component_2_ports.c2_p_colour, source = Component_2_states.c2_s_init, target = Component_2_states.c2_s_colour)
Component 3
@Ports({
@Port(name = Component_3_ports.c3_p_basic, type = PortType.enforceable),
@Port(name = Component_3_ports.c3_p_not_basic, type = PortType.enforceable),
@Port(name = Component_3_ports.c3_p_valid_gps, type = PortType.enforceable)
})
@ComponentType(initial = Component_3_states.c3_s_init, name = "Component_3")
public class Component_3_spec {
@Transition(name = Component_3_ports.c3_p_basic , source = Component_3_states.c3_s_init , target = Component_3_states.c3_s_basic)
@Transition(name = Component_3_ports.c3_p_not_basic, source = Component_3_states.c3_s_init, target = Component_3_states.c3_s_not_basic)
@Transition(name = Component_3_ports.c3_p_valid_gps, source = Component_3_states.c3_s_not_basic, target = Component_3_states.c3_s_valid_gps)
Glue
glue = new TwoSynchronGlueBuilder() {
@Override
public void configure() {
synchron(Component_3_spec.class, Component_3_ports.c3_p_valid_gps).to(Component_1_spec.class, Component_1_ports.c1_p_gps);
synchron(Component_3_spec.class, Component_3_ports.c3_p_not_basic).to(Component_2_spec.class, Component_2_ports.c2_p_colour);
synchron(Component_3_spec.class, Component_3_ports.c3_p_basic).to(Component_2_spec.class, Component_2_ports.c2_p_basic);
}
}.build();
Bug description
In the following model with 3 specifications, the engine, after executing the path
c3.notbasic+c2.colour, does not proceed with the existing pathc3.gpsvalid+c1.gpsand stuck.Model
Component 1
Component 2
Component 3
Glue