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
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