예제 #1
0
def create_state_machine():
    state1 = ExecutionState("first_state", path=testing_utils.TEST_SCRIPT_PATH, filename="scoped_data_test_state1.py")
    state1.add_outcome("first_outcome", 3)
    state1.add_input_data_port("data_input_port1", "float")
    state1.add_output_data_port("data_output_port1", "float")

    state2 = ExecutionState("second_state", path=testing_utils.TEST_SCRIPT_PATH, filename="scoped_data_test_state2.py")
    state2.add_outcome("first_outcome", 3)
    state2.add_input_data_port("data_input_port1", "float")
    state2.add_output_data_port("data_output_port1", "float")

    state3 = HierarchyState("hierarchy_state")
    state3.add_state(state1)
    state3.add_state(state2)
    state3.set_start_state(state1.state_id)
    state3.add_outcome("Container_Outcome", 6)
    state3.add_transition(state1.state_id, 3, state2.state_id, None)
    state3.add_transition(state2.state_id, 3, state3.state_id, 6)
    state3.add_input_data_port("data_input_port1", "float", 22.0)
    state3.add_output_data_port("data_output_port1", "float")
    state3.add_data_flow(state3.state_id,
                         state3.get_io_data_port_id_from_name_and_type("data_input_port1", InputDataPort),
                         state1.state_id,
                         state1.get_io_data_port_id_from_name_and_type("data_input_port1", InputDataPort))
    state3.add_data_flow(state1.state_id,
                         state1.get_io_data_port_id_from_name_and_type("data_output_port1", OutputDataPort),
                         state2.state_id,
                         state2.get_io_data_port_id_from_name_and_type("data_input_port1", InputDataPort))
    state3.add_data_flow(state2.state_id,
                         state2.get_io_data_port_id_from_name_and_type("data_output_port1", OutputDataPort),
                         state3.state_id,
                         state3.get_io_data_port_id_from_name_and_type("data_output_port1", OutputDataPort))
    return StateMachine(state3)
def create_hierarchy_state():
    state1 = ExecutionState("MyFirstState",
                            path=testing_utils.TEST_SCRIPT_PATH,
                            filename="first_execution_state.py")
    state1.add_outcome("MyFirstOutcome", 3)
    state1.add_input_data_port("data_input_port1", "float")
    state1.add_output_data_port("faulty_output_port", "float")
    state1.add_output_data_port("data_output_port1", "float")

    state2 = HierarchyState("MyFirstHierarchyState")
    state2.add_state(state1)
    state2.set_start_state(state1.state_id)
    state2.add_outcome("Container_Outcome", 6)
    transition_id = state2.add_transition(state1.state_id, 3, state2.state_id,
                                          6)
    # print state2.transitions[transition_id]
    input_data_port_id = state2.add_input_data_port("input1",
                                                    "float",
                                                    42.0,
                                                    data_port_id=42)
    state2.add_output_data_port("output1", "float")
    state2.add_data_flow(
        state2.state_id,
        state2.get_io_data_port_id_from_name_and_type("input1", InputDataPort),
        state1.state_id,
        state1.get_io_data_port_id_from_name_and_type("data_input_port1",
                                                      InputDataPort))
    state2.add_data_flow(
        state1.state_id,
        state1.get_io_data_port_id_from_name_and_type("data_output_port1",
                                                      OutputDataPort),
        state2.state_id,
        state2.get_io_data_port_id_from_name_and_type("output1",
                                                      OutputDataPort))
    return state2
예제 #3
0
def create_hierarchy_state(number_child_states=10, sleep=False):
    hierarchy = HierarchyState("hierarchy1")
    hierarchy.add_outcome("hierarchy_outcome", 1)
    hierarchy.add_input_data_port("hierarchy_input_port1", "float", 42.0)
    hierarchy.add_output_data_port("hierarchy_output_port1", "float")
    last_state = None

    for i in range(number_child_states):
        if sleep:
            state = ExecutionState("state" + str(i),
                                   path=testing_utils.TEST_SCRIPT_PATH,
                                   filename="hello_world_sleep.py")
        else:
            state = ExecutionState("state" + str(i))
        hierarchy.add_state(state)
        state.add_input_data_port("input1", "float")
        state.add_output_data_port("output1", "float")

        if not last_state:
            hierarchy.set_start_state(state.state_id)
            hierarchy.add_data_flow(
                hierarchy.state_id,
                hierarchy.get_io_data_port_id_from_name_and_type(
                    "hierarchy_input_port1", InputDataPort), state.state_id,
                state.get_io_data_port_id_from_name_and_type(
                    "input1", InputDataPort))
        else:
            hierarchy.add_transition(last_state.state_id, 0, state.state_id,
                                     None)
            # connect data ports state 1
            hierarchy.add_data_flow(
                last_state.state_id,
                last_state.get_io_data_port_id_from_name_and_type(
                    "output1", OutputDataPort), state.state_id,
                state.get_io_data_port_id_from_name_and_type(
                    "input1", InputDataPort))

        last_state = state

    hierarchy.add_data_flow(
        last_state.state_id,
        last_state.get_io_data_port_id_from_name_and_type(
            "output1", OutputDataPort), hierarchy.state_id,
        hierarchy.get_io_data_port_id_from_name_and_type(
            "hierarchy_output_port1", OutputDataPort))

    hierarchy.add_transition(last_state.state_id, 0, hierarchy.state_id, 1)

    return hierarchy