Skip to content

Bug. Model with 3 specifications, engine does not proceed with the existing paths. #7

Description

@lsafina

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();

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions