Преглед изворни кода

make examples consistent with demo given

Joeri Exelmans пре 8 месеци
родитељ
комит
cea0e779db
29 измењених фајлова са 195 додато и 2837 уклоњено
  1. 0 23
      microwave/YAKINDU_WORKSPACE/00_EmptyModel/.project
  2. 0 3
      microwave/YAKINDU_WORKSPACE/00_EmptyModel/.settings/org.eclipse.core.resources.prefs
  3. 0 15
      microwave/YAKINDU_WORKSPACE/00_EmptyModel/Statechart.sgen
  4. 0 74
      microwave/YAKINDU_WORKSPACE/00_EmptyModel/Statechart.ysc
  5. 0 5
      microwave/YAKINDU_WORKSPACE/00_EmptyModel/src/yakindu/__init__.py
  6. 0 48
      microwave/YAKINDU_WORKSPACE/00_EmptyModel/src/yakindu/rx.py
  7. 0 326
      microwave/YAKINDU_WORKSPACE/00_EmptyModel/srcgen/statechart.py
  8. 1 43
      microwave/YAKINDU_WORKSPACE/05_EmptyModel/Statechart.ysc
  9. 20 61
      microwave/YAKINDU_WORKSPACE/05_EmptyModel/srcgen/statechart.py
  10. 0 23
      microwave/YAKINDU_WORKSPACE/11_EnterExitActions/.project
  11. 0 3
      microwave/YAKINDU_WORKSPACE/11_EnterExitActions/.settings/org.eclipse.core.resources.prefs
  12. 0 15
      microwave/YAKINDU_WORKSPACE/11_EnterExitActions/Statechart.sgen
  13. 0 128
      microwave/YAKINDU_WORKSPACE/11_EnterExitActions/Statechart.ysc
  14. 0 5
      microwave/YAKINDU_WORKSPACE/11_EnterExitActions/src/yakindu/__init__.py
  15. 0 48
      microwave/YAKINDU_WORKSPACE/11_EnterExitActions/src/yakindu/rx.py
  16. 0 303
      microwave/YAKINDU_WORKSPACE/11_EnterExitActions/srcgen/statechart.py
  17. 1 1
      microwave/YAKINDU_WORKSPACE/31_TimerTimeoutWrong/Statechart.ysc
  18. 1 1
      microwave/YAKINDU_WORKSPACE/31_TimerTimeoutWrong/srcgen/statechart.py
  19. 126 126
      microwave/YAKINDU_WORKSPACE/40_Orthogonality/Statechart.ysc
  20. 19 6
      microwave/YAKINDU_WORKSPACE/40_Orthogonality/srcgen/statechart.py
  21. 0 23
      microwave/YAKINDU_WORKSPACE/60_Correction1/.project
  22. 0 3
      microwave/YAKINDU_WORKSPACE/60_Correction1/.settings/org.eclipse.core.resources.prefs
  23. 0 15
      microwave/YAKINDU_WORKSPACE/60_Correction1/Statechart.sgen
  24. 0 701
      microwave/YAKINDU_WORKSPACE/60_Correction1/Statechart.ysc
  25. 0 5
      microwave/YAKINDU_WORKSPACE/60_Correction1/src/yakindu/__init__.py
  26. 0 48
      microwave/YAKINDU_WORKSPACE/60_Correction1/src/yakindu/rx.py
  27. 0 784
      microwave/YAKINDU_WORKSPACE/60_Correction1/srcgen/statechart.py
  28. 23 0
      microwave/checklist.txt
  29. 4 1
      microwave/test.py

+ 0 - 23
microwave/YAKINDU_WORKSPACE/00_EmptyModel/.project

@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>00_EmptyModel</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.yakindu.sct.builder.SCTBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
-		<nature>com.yakindu.sct.builder.SCTNature</nature>
-	</natures>
-</projectDescription>

+ 0 - 3
microwave/YAKINDU_WORKSPACE/00_EmptyModel/.settings/org.eclipse.core.resources.prefs

@@ -1,3 +0,0 @@
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
-encoding/Statechart.ysc=UTF-8

+ 0 - 15
microwave/YAKINDU_WORKSPACE/00_EmptyModel/Statechart.sgen

@@ -1,15 +0,0 @@
-GeneratorModel for create::python {
-
-	const PROJECT : string = "00_EmptyModel"
-
-	const FOLDER : string = "srcgen"
-
-	statechart Statechart {
-
-		feature Outlet {
-			targetProject = PROJECT
-			targetFolder = FOLDER
-			libraryTargetFolder = "src"
-		}
-	}
-}

Разлика између датотеке није приказан због своје велике величине
+ 0 - 74
microwave/YAKINDU_WORKSPACE/00_EmptyModel/Statechart.ysc


+ 0 - 5
microwave/YAKINDU_WORKSPACE/00_EmptyModel/src/yakindu/__init__.py

@@ -1,5 +0,0 @@
-"""
-
-Empty file that initializes the package it is contained in.
-
-"""

+ 0 - 48
microwave/YAKINDU_WORKSPACE/00_EmptyModel/src/yakindu/rx.py

@@ -1,48 +0,0 @@
-"""Implementation for Observer and Observables used for out events.
-Generated by itemis CREATE code generator.
-"""
-
-
-class Observer():
-	"""Observer implementation.
-	"""
-
-	def next(self, value=None):
-		"""Abstract next method, which must be implemented."""
-		raise NotImplementedError('user must define next() to use this base class')
-
-
-class Observable():
-	"""Observable implementation.
-	"""
-
-	def __init__(self):
-		self.observers = []
-
-	def next(self, value=None):
-		"""Calls next function from every observer.
-		"""
-		for observer in self.observers:
-			if observer is not None:
-				if value is None:
-					observer.next()
-				else:
-					observer.next(value)
-
-	def subscribe(self, observer):
-		"""Subscribe on specified observer.
-		"""
-		if observer is not None:
-			self.observers.append(observer)
-			return True
-		return False
-
-	def unsubscribe(self, observer):
-		"""Unsubscribe from specified observer.
-		"""
-		if observer is None:
-			return False
-		if observer in self.observers:
-			self.observers.remove(observer)
-			return True
-		return False

+ 0 - 326
microwave/YAKINDU_WORKSPACE/00_EmptyModel/srcgen/statechart.py

@@ -1,326 +0,0 @@
-"""Implementation of statechart statechart.
-Generated by itemis CREATE code generator.
-"""
-
-import queue
-import sys, os
-sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../src')))
-from yakindu.rx import Observable
-
-class Statechart:
-	"""Implementation of the state machine Statechart.
-	"""
-
-	class State:
-		""" State Enum
-		"""
-		(
-			main_region_magnetron_off,
-			main_region_magnetron_on,
-			null_state
-		) = range(3)
-	
-	
-	def __init__(self):
-		""" Declares all necessary variables including list of states, histories etc. 
-		"""
-		
-		self.start_pressed = None
-		self.stop_pressed = None
-		self.increase_time_pressed = None
-		self.door_opened = None
-		self.door_closed = None
-		self.turn_magnetron_on = None
-		self.turn_magnetron_on_observable = Observable()
-		self.turn_magnetron_off = None
-		self.turn_magnetron_off_observable = Observable()
-		self.set_displayed_time = None
-		self.set_displayed_time_value = None
-		self.set_displayed_time_observable = Observable()
-		self.ring_bell = None
-		self.ring_bell_observable = Observable()
-		
-		self.in_event_queue = queue.Queue()
-		# enumeration of all states:
-		self.__State = Statechart.State
-		self.__state_conf_vector_changed = None
-		self.__state_vector = [None] * 1
-		for __state_index in range(1):
-			self.__state_vector[__state_index] = self.State.null_state
-		
-		# for timed statechart:
-		self.timer_service = None
-		self.__time_events = [None] * 2
-		
-		# initializations:
-		self.__is_executing = False
-	
-	def is_active(self):
-		"""Checks if the state machine is active.
-		"""
-		return self.__state_vector[0] is not self.__State.null_state
-	
-	def is_final(self):
-		"""Checks if the statemachine is final.
-		Always returns 'false' since this state machine can never become final.
-		"""
-		return False
-			
-	def is_state_active(self, state):
-		"""Checks if the state is currently active.
-		"""
-		s = state
-		if s == self.__State.main_region_magnetron_off:
-			return self.__state_vector[0] == self.__State.main_region_magnetron_off
-		if s == self.__State.main_region_magnetron_on:
-			return self.__state_vector[0] == self.__State.main_region_magnetron_on
-		return False
-		
-	def time_elapsed(self, event_id):
-		"""Add time events to in event queue
-		"""
-		if event_id in range(2):
-			self.in_event_queue.put(lambda: self.raise_time_event(event_id))
-			self.run_cycle()
-	
-	def raise_time_event(self, event_id):
-		"""Raise timed events using the event_id.
-		"""
-		self.__time_events[event_id] = True
-	
-	def __execute_queued_event(self, func):
-		func()
-	
-	def __get_next_event(self):
-		if not self.in_event_queue.empty():
-			return self.in_event_queue.get()
-		return None
-	
-	def raise_start_pressed(self):
-		"""Raise method for event start_pressed.
-		"""
-		self.in_event_queue.put(self.__raise_start_pressed_call)
-		self.run_cycle()
-	
-	def __raise_start_pressed_call(self):
-		"""Raise callback for event start_pressed.
-		"""
-		self.start_pressed = True
-	
-	def raise_stop_pressed(self):
-		"""Raise method for event stop_pressed.
-		"""
-		self.in_event_queue.put(self.__raise_stop_pressed_call)
-		self.run_cycle()
-	
-	def __raise_stop_pressed_call(self):
-		"""Raise callback for event stop_pressed.
-		"""
-		self.stop_pressed = True
-	
-	def raise_increase_time_pressed(self):
-		"""Raise method for event increase_time_pressed.
-		"""
-		self.in_event_queue.put(self.__raise_increase_time_pressed_call)
-		self.run_cycle()
-	
-	def __raise_increase_time_pressed_call(self):
-		"""Raise callback for event increase_time_pressed.
-		"""
-		self.increase_time_pressed = True
-	
-	def raise_door_opened(self):
-		"""Raise method for event door_opened.
-		"""
-		self.in_event_queue.put(self.__raise_door_opened_call)
-		self.run_cycle()
-	
-	def __raise_door_opened_call(self):
-		"""Raise callback for event door_opened.
-		"""
-		self.door_opened = True
-	
-	def raise_door_closed(self):
-		"""Raise method for event door_closed.
-		"""
-		self.in_event_queue.put(self.__raise_door_closed_call)
-		self.run_cycle()
-	
-	def __raise_door_closed_call(self):
-		"""Raise callback for event door_closed.
-		"""
-		self.door_closed = True
-	
-	def __entry_action_main_region_magnetron_off(self):
-		"""Entry action for state 'MagnetronOff'..
-		"""
-		self.timer_service.set_timer(self, 0, 250, False)
-		
-	def __entry_action_main_region_magnetron_on(self):
-		"""Entry action for state 'MagnetronOn'..
-		"""
-		self.timer_service.set_timer(self, 1, 250, False)
-		self.turn_magnetron_on_observable.next()
-		
-	def __exit_action_main_region_magnetron_off(self):
-		"""Exit action for state 'MagnetronOff'..
-		"""
-		self.timer_service.unset_timer(self, 0)
-		
-	def __exit_action_main_region_magnetron_on(self):
-		"""Exit action for state 'MagnetronOn'..
-		"""
-		self.timer_service.unset_timer(self, 1)
-		self.turn_magnetron_off_observable.next()
-		
-	def __enter_sequence_main_region_magnetron_off_default(self):
-		"""'default' enter sequence for state MagnetronOff.
-		"""
-		self.__entry_action_main_region_magnetron_off()
-		self.__state_vector[0] = self.State.main_region_magnetron_off
-		self.__state_conf_vector_changed = True
-		
-	def __enter_sequence_main_region_magnetron_on_default(self):
-		"""'default' enter sequence for state MagnetronOn.
-		"""
-		self.__entry_action_main_region_magnetron_on()
-		self.__state_vector[0] = self.State.main_region_magnetron_on
-		self.__state_conf_vector_changed = True
-		
-	def __enter_sequence_main_region_default(self):
-		"""'default' enter sequence for region main region.
-		"""
-		self.__react_main_region__entry_default()
-		
-	def __exit_sequence_main_region_magnetron_off(self):
-		"""Default exit sequence for state MagnetronOff.
-		"""
-		self.__state_vector[0] = self.State.null_state
-		self.__exit_action_main_region_magnetron_off()
-		
-	def __exit_sequence_main_region_magnetron_on(self):
-		"""Default exit sequence for state MagnetronOn.
-		"""
-		self.__state_vector[0] = self.State.null_state
-		self.__exit_action_main_region_magnetron_on()
-		
-	def __exit_sequence_main_region(self):
-		"""Default exit sequence for region main region.
-		"""
-		state = self.__state_vector[0]
-		if state == self.State.main_region_magnetron_off:
-			self.__exit_sequence_main_region_magnetron_off()
-		elif state == self.State.main_region_magnetron_on:
-			self.__exit_sequence_main_region_magnetron_on()
-		
-	def __react_main_region__entry_default(self):
-		"""Default react sequence for initial entry .
-		"""
-		self.__enter_sequence_main_region_magnetron_off_default()
-		
-	def __react(self, transitioned_before):
-		"""Implementation of __react function.
-		"""
-		return transitioned_before
-	
-	
-	def __main_region_magnetron_off_react(self, transitioned_before):
-		"""Implementation of __main_region_magnetron_off_react function.
-		"""
-		transitioned_after = self.__react(transitioned_before)
-		if transitioned_after < 0:
-			if self.__time_events[0]:
-				self.__exit_sequence_main_region_magnetron_off()
-				self.__time_events[0] = False
-				self.__enter_sequence_main_region_magnetron_on_default()
-				transitioned_after = 0
-		return transitioned_after
-	
-	
-	def __main_region_magnetron_on_react(self, transitioned_before):
-		"""Implementation of __main_region_magnetron_on_react function.
-		"""
-		transitioned_after = self.__react(transitioned_before)
-		if transitioned_after < 0:
-			if self.__time_events[1]:
-				self.__exit_sequence_main_region_magnetron_on()
-				self.__time_events[1] = False
-				self.__enter_sequence_main_region_magnetron_off_default()
-				transitioned_after = 0
-		return transitioned_after
-	
-	
-	def __clear_in_events(self):
-		"""Implementation of __clear_in_events function.
-		"""
-		self.start_pressed = False
-		self.stop_pressed = False
-		self.increase_time_pressed = False
-		self.door_opened = False
-		self.door_closed = False
-		self.__time_events[0] = False
-		self.__time_events[1] = False
-	
-	
-	def __micro_step(self):
-		"""Implementation of __micro_step function.
-		"""
-		state = self.__state_vector[0]
-		if state == self.State.main_region_magnetron_off:
-			self.__main_region_magnetron_off_react(-1)
-		elif state == self.State.main_region_magnetron_on:
-			self.__main_region_magnetron_on_react(-1)
-	
-	
-	def run_cycle(self):
-		"""Implementation of run_cycle function.
-		"""
-		if self.timer_service is None:
-			raise ValueError('Timer service must be set.')
-		
-		if self.__is_executing:
-			return
-		self.__is_executing = True
-		next_event = self.__get_next_event()
-		if next_event is not None:
-			self.__execute_queued_event(next_event)
-		condition_0 = True
-		while condition_0:
-			self.__micro_step()
-			self.__clear_in_events()
-			condition_0 = False
-			next_event = self.__get_next_event()
-			if next_event is not None:
-				self.__execute_queued_event(next_event)
-				condition_0 = True
-		self.__is_executing = False
-	
-	
-	def enter(self):
-		"""Implementation of enter function.
-		"""
-		if self.timer_service is None:
-			raise ValueError('Timer service must be set.')
-		
-		if self.__is_executing:
-			return
-		self.__is_executing = True
-		self.__enter_sequence_main_region_default()
-		self.__is_executing = False
-	
-	
-	def exit(self):
-		"""Implementation of exit function.
-		"""
-		if self.__is_executing:
-			return
-		self.__is_executing = True
-		self.__exit_sequence_main_region()
-		self.__is_executing = False
-	
-	
-	def trigger_without_event(self):
-		"""Implementation of triggerWithoutEvent function.
-		"""
-		self.run_cycle()
-	

Разлика између датотеке није приказан због своје велике величине
+ 1 - 43
microwave/YAKINDU_WORKSPACE/05_EmptyModel/Statechart.ysc


+ 20 - 61
microwave/YAKINDU_WORKSPACE/05_EmptyModel/srcgen/statechart.py

@@ -15,10 +15,9 @@ class Statechart:
 		""" State Enum
 		"""
 		(
-			main_region_magnetronoff,
-			main_region_magnetron_on,
+			main_region_default,
 			null_state
-		) = range(3)
+		) = range(2)
 	
 	
 	def __init__(self):
@@ -66,10 +65,8 @@ class Statechart:
 		"""Checks if the state is currently active.
 		"""
 		s = state
-		if s == self.__State.main_region_magnetronoff:
-			return self.__state_vector[0] == self.__State.main_region_magnetronoff
-		if s == self.__State.main_region_magnetron_on:
-			return self.__state_vector[0] == self.__State.main_region_magnetron_on
+		if s == self.__State.main_region_default:
+			return self.__state_vector[0] == self.__State.main_region_default
 		return False
 		
 	def __execute_queued_event(self, func):
@@ -135,18 +132,11 @@ class Statechart:
 		"""
 		self.door_closed = True
 	
-	def __enter_sequence_main_region_magnetronoff_default(self):
-		"""'default' enter sequence for state Magnetronoff.
+	def __enter_sequence_main_region_default_default(self):
+		"""'default' enter sequence for state Default.
 		"""
-		#'default' enter sequence for state Magnetronoff
-		self.__state_vector[0] = self.State.main_region_magnetronoff
-		self.__state_conf_vector_changed = True
-		
-	def __enter_sequence_main_region_magnetron_on_default(self):
-		"""'default' enter sequence for state MagnetronOn.
-		"""
-		#'default' enter sequence for state MagnetronOn
-		self.__state_vector[0] = self.State.main_region_magnetron_on
+		#'default' enter sequence for state Default
+		self.__state_vector[0] = self.State.main_region_default
 		self.__state_conf_vector_changed = True
 		
 	def __enter_sequence_main_region_default(self):
@@ -155,16 +145,10 @@ class Statechart:
 		#'default' enter sequence for region main region
 		self.__react_main_region__entry_default()
 		
-	def __exit_sequence_main_region_magnetronoff(self):
-		"""Default exit sequence for state Magnetronoff.
+	def __exit_sequence_main_region_default(self):
+		"""Default exit sequence for state Default.
 		"""
-		#Default exit sequence for state Magnetronoff
-		self.__state_vector[0] = self.State.null_state
-		
-	def __exit_sequence_main_region_magnetron_on(self):
-		"""Default exit sequence for state MagnetronOn.
-		"""
-		#Default exit sequence for state MagnetronOn
+		#Default exit sequence for state Default
 		self.__state_vector[0] = self.State.null_state
 		
 	def __exit_sequence_main_region(self):
@@ -172,16 +156,14 @@ class Statechart:
 		"""
 		#Default exit sequence for region main region
 		state = self.__state_vector[0]
-		if state == self.State.main_region_magnetronoff:
-			self.__exit_sequence_main_region_magnetronoff()
-		elif state == self.State.main_region_magnetron_on:
-			self.__exit_sequence_main_region_magnetron_on()
+		if state == self.State.main_region_default:
+			self.__exit_sequence_main_region_default()
 		
 	def __react_main_region__entry_default(self):
 		"""Default react sequence for initial entry .
 		"""
 		#Default react sequence for initial entry 
-		self.__enter_sequence_main_region_magnetronoff_default()
+		self.__enter_sequence_main_region_default_default()
 		
 	def __react(self, transitioned_before):
 		"""Implementation of __react function.
@@ -190,32 +172,11 @@ class Statechart:
 		return transitioned_before
 	
 	
-	def __main_region_magnetronoff_react(self, transitioned_before):
-		"""Implementation of __main_region_magnetronoff_react function.
-		"""
-		#The reactions of state Magnetronoff.
-		transitioned_after = self.__react(transitioned_before)
-		if transitioned_after < 0:
-			if self.start_pressed:
-				self.__exit_sequence_main_region_magnetronoff()
-				self.turn_magnetron_on_observable.next()
-				self.__enter_sequence_main_region_magnetron_on_default()
-				transitioned_after = 0
-		return transitioned_after
-	
-	
-	def __main_region_magnetron_on_react(self, transitioned_before):
-		"""Implementation of __main_region_magnetron_on_react function.
+	def __main_region_default_react(self, transitioned_before):
+		"""Implementation of __main_region_default_react function.
 		"""
-		#The reactions of state MagnetronOn.
-		transitioned_after = self.__react(transitioned_before)
-		if transitioned_after < 0:
-			if self.stop_pressed:
-				self.__exit_sequence_main_region_magnetron_on()
-				self.turn_magnetron_off_observable.next()
-				self.__enter_sequence_main_region_magnetronoff_default()
-				transitioned_after = 0
-		return transitioned_after
+		#The reactions of state Default.
+		return self.__react(transitioned_before)
 	
 	
 	def __clear_in_events(self):
@@ -232,10 +193,8 @@ class Statechart:
 		"""Implementation of __micro_step function.
 		"""
 		state = self.__state_vector[0]
-		if state == self.State.main_region_magnetronoff:
-			self.__main_region_magnetronoff_react(-1)
-		elif state == self.State.main_region_magnetron_on:
-			self.__main_region_magnetron_on_react(-1)
+		if state == self.State.main_region_default:
+			self.__main_region_default_react(-1)
 	
 	
 	def run_cycle(self):

+ 0 - 23
microwave/YAKINDU_WORKSPACE/11_EnterExitActions/.project

@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>11_EnterExitActions</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.yakindu.sct.builder.SCTBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
-		<nature>com.yakindu.sct.builder.SCTNature</nature>
-	</natures>
-</projectDescription>

+ 0 - 3
microwave/YAKINDU_WORKSPACE/11_EnterExitActions/.settings/org.eclipse.core.resources.prefs

@@ -1,3 +0,0 @@
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
-encoding/Statechart.ysc=UTF-8

+ 0 - 15
microwave/YAKINDU_WORKSPACE/11_EnterExitActions/Statechart.sgen

@@ -1,15 +0,0 @@
-GeneratorModel for create::python {
-
-	const PROJECT : string = "11_EnterExitActions"
-
-	const FOLDER : string = "srcgen"
-
-	statechart Statechart {
-
-		feature Outlet {
-			targetProject = PROJECT
-			targetFolder = FOLDER
-			libraryTargetFolder = "src"
-		}
-	}
-}

Разлика између датотеке није приказан због своје велике величине
+ 0 - 128
microwave/YAKINDU_WORKSPACE/11_EnterExitActions/Statechart.ysc


+ 0 - 5
microwave/YAKINDU_WORKSPACE/11_EnterExitActions/src/yakindu/__init__.py

@@ -1,5 +0,0 @@
-"""
-
-Empty file that initializes the package it is contained in.
-
-"""

+ 0 - 48
microwave/YAKINDU_WORKSPACE/11_EnterExitActions/src/yakindu/rx.py

@@ -1,48 +0,0 @@
-"""Implementation for Observer and Observables used for out events.
-Generated by itemis CREATE code generator.
-"""
-
-
-class Observer():
-	"""Observer implementation.
-	"""
-
-	def next(self, value=None):
-		"""Abstract next method, which must be implemented."""
-		raise NotImplementedError('user must define next() to use this base class')
-
-
-class Observable():
-	"""Observable implementation.
-	"""
-
-	def __init__(self):
-		self.observers = []
-
-	def next(self, value=None):
-		"""Calls next function from every observer.
-		"""
-		for observer in self.observers:
-			if observer is not None:
-				if value is None:
-					observer.next()
-				else:
-					observer.next(value)
-
-	def subscribe(self, observer):
-		"""Subscribe on specified observer.
-		"""
-		if observer is not None:
-			self.observers.append(observer)
-			return True
-		return False
-
-	def unsubscribe(self, observer):
-		"""Unsubscribe from specified observer.
-		"""
-		if observer is None:
-			return False
-		if observer in self.observers:
-			self.observers.remove(observer)
-			return True
-		return False

+ 0 - 303
microwave/YAKINDU_WORKSPACE/11_EnterExitActions/srcgen/statechart.py

@@ -1,303 +0,0 @@
-"""Implementation of statechart statechart.
-Generated by itemis CREATE code generator.
-"""
-
-import queue
-import sys, os
-sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../src')))
-from yakindu.rx import Observable
-
-class Statechart:
-	"""Implementation of the state machine Statechart.
-	"""
-
-	class State:
-		""" State Enum
-		"""
-		(
-			main_region_magnetron_off,
-			main_region_magnetron_on,
-			null_state
-		) = range(3)
-	
-	
-	def __init__(self):
-		""" Declares all necessary variables including list of states, histories etc. 
-		"""
-		
-		self.start_pressed = None
-		self.stop_pressed = None
-		self.increase_time_pressed = None
-		self.door_opened = None
-		self.door_closed = None
-		self.turn_magnetron_on = None
-		self.turn_magnetron_on_observable = Observable()
-		self.turn_magnetron_off = None
-		self.turn_magnetron_off_observable = Observable()
-		self.set_displayed_time = None
-		self.set_displayed_time_value = None
-		self.set_displayed_time_observable = Observable()
-		self.ring_bell = None
-		self.ring_bell_observable = Observable()
-		
-		self.in_event_queue = queue.Queue()
-		# enumeration of all states:
-		self.__State = Statechart.State
-		self.__state_conf_vector_changed = None
-		self.__state_vector = [None] * 1
-		for __state_index in range(1):
-			self.__state_vector[__state_index] = self.State.null_state
-		
-		# initializations:
-		self.__is_executing = False
-	
-	def is_active(self):
-		"""Checks if the state machine is active.
-		"""
-		return self.__state_vector[0] is not self.__State.null_state
-	
-	def is_final(self):
-		"""Checks if the statemachine is final.
-		Always returns 'false' since this state machine can never become final.
-		"""
-		return False
-			
-	def is_state_active(self, state):
-		"""Checks if the state is currently active.
-		"""
-		s = state
-		if s == self.__State.main_region_magnetron_off:
-			return self.__state_vector[0] == self.__State.main_region_magnetron_off
-		if s == self.__State.main_region_magnetron_on:
-			return self.__state_vector[0] == self.__State.main_region_magnetron_on
-		return False
-		
-	def __execute_queued_event(self, func):
-		func()
-	
-	def __get_next_event(self):
-		if not self.in_event_queue.empty():
-			return self.in_event_queue.get()
-		return None
-	
-	def raise_start_pressed(self):
-		"""Raise method for event start_pressed.
-		"""
-		self.in_event_queue.put(self.__raise_start_pressed_call)
-		self.run_cycle()
-	
-	def __raise_start_pressed_call(self):
-		"""Raise callback for event start_pressed.
-		"""
-		self.start_pressed = True
-	
-	def raise_stop_pressed(self):
-		"""Raise method for event stop_pressed.
-		"""
-		self.in_event_queue.put(self.__raise_stop_pressed_call)
-		self.run_cycle()
-	
-	def __raise_stop_pressed_call(self):
-		"""Raise callback for event stop_pressed.
-		"""
-		self.stop_pressed = True
-	
-	def raise_increase_time_pressed(self):
-		"""Raise method for event increase_time_pressed.
-		"""
-		self.in_event_queue.put(self.__raise_increase_time_pressed_call)
-		self.run_cycle()
-	
-	def __raise_increase_time_pressed_call(self):
-		"""Raise callback for event increase_time_pressed.
-		"""
-		self.increase_time_pressed = True
-	
-	def raise_door_opened(self):
-		"""Raise method for event door_opened.
-		"""
-		self.in_event_queue.put(self.__raise_door_opened_call)
-		self.run_cycle()
-	
-	def __raise_door_opened_call(self):
-		"""Raise callback for event door_opened.
-		"""
-		self.door_opened = True
-	
-	def raise_door_closed(self):
-		"""Raise method for event door_closed.
-		"""
-		self.in_event_queue.put(self.__raise_door_closed_call)
-		self.run_cycle()
-	
-	def __raise_door_closed_call(self):
-		"""Raise callback for event door_closed.
-		"""
-		self.door_closed = True
-	
-	def __entry_action_main_region_magnetron_on(self):
-		"""Entry action for state 'MagnetronOn'..
-		"""
-		#Entry action for state 'MagnetronOn'.
-		self.turn_magnetron_on_observable.next()
-		
-	def __exit_action_main_region_magnetron_on(self):
-		"""Exit action for state 'MagnetronOn'..
-		"""
-		#Exit action for state 'MagnetronOn'.
-		self.turn_magnetron_off_observable.next()
-		
-	def __enter_sequence_main_region_magnetron_off_default(self):
-		"""'default' enter sequence for state MagnetronOff.
-		"""
-		#'default' enter sequence for state MagnetronOff
-		self.__state_vector[0] = self.State.main_region_magnetron_off
-		self.__state_conf_vector_changed = True
-		
-	def __enter_sequence_main_region_magnetron_on_default(self):
-		"""'default' enter sequence for state MagnetronOn.
-		"""
-		#'default' enter sequence for state MagnetronOn
-		self.__entry_action_main_region_magnetron_on()
-		self.__state_vector[0] = self.State.main_region_magnetron_on
-		self.__state_conf_vector_changed = True
-		
-	def __enter_sequence_main_region_default(self):
-		"""'default' enter sequence for region main region.
-		"""
-		#'default' enter sequence for region main region
-		self.__react_main_region__entry_default()
-		
-	def __exit_sequence_main_region_magnetron_off(self):
-		"""Default exit sequence for state MagnetronOff.
-		"""
-		#Default exit sequence for state MagnetronOff
-		self.__state_vector[0] = self.State.null_state
-		
-	def __exit_sequence_main_region_magnetron_on(self):
-		"""Default exit sequence for state MagnetronOn.
-		"""
-		#Default exit sequence for state MagnetronOn
-		self.__state_vector[0] = self.State.null_state
-		self.__exit_action_main_region_magnetron_on()
-		
-	def __exit_sequence_main_region(self):
-		"""Default exit sequence for region main region.
-		"""
-		#Default exit sequence for region main region
-		state = self.__state_vector[0]
-		if state == self.State.main_region_magnetron_off:
-			self.__exit_sequence_main_region_magnetron_off()
-		elif state == self.State.main_region_magnetron_on:
-			self.__exit_sequence_main_region_magnetron_on()
-		
-	def __react_main_region__entry_default(self):
-		"""Default react sequence for initial entry .
-		"""
-		#Default react sequence for initial entry 
-		self.__enter_sequence_main_region_magnetron_off_default()
-		
-	def __react(self, transitioned_before):
-		"""Implementation of __react function.
-		"""
-		#State machine reactions.
-		return transitioned_before
-	
-	
-	def __main_region_magnetron_off_react(self, transitioned_before):
-		"""Implementation of __main_region_magnetron_off_react function.
-		"""
-		#The reactions of state MagnetronOff.
-		transitioned_after = self.__react(transitioned_before)
-		if transitioned_after < 0:
-			if self.start_pressed:
-				self.__exit_sequence_main_region_magnetron_off()
-				self.__enter_sequence_main_region_magnetron_on_default()
-				transitioned_after = 0
-		return transitioned_after
-	
-	
-	def __main_region_magnetron_on_react(self, transitioned_before):
-		"""Implementation of __main_region_magnetron_on_react function.
-		"""
-		#The reactions of state MagnetronOn.
-		transitioned_after = self.__react(transitioned_before)
-		if transitioned_after < 0:
-			if self.stop_pressed:
-				self.__exit_sequence_main_region_magnetron_on()
-				self.__enter_sequence_main_region_magnetron_off_default()
-				transitioned_after = 0
-		return transitioned_after
-	
-	
-	def __clear_in_events(self):
-		"""Implementation of __clear_in_events function.
-		"""
-		self.start_pressed = False
-		self.stop_pressed = False
-		self.increase_time_pressed = False
-		self.door_opened = False
-		self.door_closed = False
-	
-	
-	def __micro_step(self):
-		"""Implementation of __micro_step function.
-		"""
-		state = self.__state_vector[0]
-		if state == self.State.main_region_magnetron_off:
-			self.__main_region_magnetron_off_react(-1)
-		elif state == self.State.main_region_magnetron_on:
-			self.__main_region_magnetron_on_react(-1)
-	
-	
-	def run_cycle(self):
-		"""Implementation of run_cycle function.
-		"""
-		#Performs a 'run to completion' step.
-		if self.__is_executing:
-			return
-		self.__is_executing = True
-		next_event = self.__get_next_event()
-		if next_event is not None:
-			self.__execute_queued_event(next_event)
-		condition_0 = True
-		while condition_0:
-			self.__micro_step()
-			self.__clear_in_events()
-			condition_0 = False
-			next_event = self.__get_next_event()
-			if next_event is not None:
-				self.__execute_queued_event(next_event)
-				condition_0 = True
-		self.__is_executing = False
-	
-	
-	def enter(self):
-		"""Implementation of enter function.
-		"""
-		#Activates the state machine.
-		if self.__is_executing:
-			return
-		self.__is_executing = True
-		#Default enter sequence for statechart Statechart
-		self.__enter_sequence_main_region_default()
-		self.__is_executing = False
-	
-	
-	def exit(self):
-		"""Implementation of exit function.
-		"""
-		#Deactivates the state machine.
-		if self.__is_executing:
-			return
-		self.__is_executing = True
-		#Default exit sequence for statechart Statechart
-		self.__exit_sequence_main_region()
-		self.__is_executing = False
-	
-	
-	def trigger_without_event(self):
-		"""Implementation of triggerWithoutEvent function.
-		"""
-		self.run_cycle()
-	

+ 1 - 1
microwave/YAKINDU_WORKSPACE/31_TimerTimeoutWrong/Statechart.ysc

@@ -10,7 +10,7 @@
           </vertices>
           <vertices xsi:type="sgraph:State" xmi:id="_k_IFsKxLEe2SdOFvAhnR8A" specification="entry / raise turnMagnetronOn&#xA;exit / raise turnMagnetronOff" name="MagnetronOn" incomingTransitions="_oDRMIKxLEe2SdOFvAhnR8A _QAYMEJAiEe6ymuOU-sr3WA">
             <outgoingTransitions xmi:id="_s1-tMKxLEe2SdOFvAhnR8A" specification="stopPressed" target="_1y9hMKxJEe2SdOFvAhnR8A"/>
-            <outgoingTransitions xmi:id="_QAYMEJAiEe6ymuOU-sr3WA" specification="after 1s /&#xA;remainingTime -= 1;&#xA;raise setDisplayedTime: remainingTime" target="_k_IFsKxLEe2SdOFvAhnR8A"/>
+            <outgoingTransitions xmi:id="_QAYMEJAiEe6ymuOU-sr3WA" specification="after 1s [remainingTime > 0] /&#xA;remainingTime -= 1;&#xA;raise setDisplayedTime: remainingTime" target="_k_IFsKxLEe2SdOFvAhnR8A"/>
             <outgoingTransitions xmi:id="_aBGDEJAiEe6ymuOU-sr3WA" specification="[remainingTime==0] /&#xA;raise ringBell" target="_1y9hMKxJEe2SdOFvAhnR8A"/>
           </vertices>
           <vertices xsi:type="sgraph:State" xmi:id="_1y9hMKxJEe2SdOFvAhnR8A" name="MagnetronOff" incomingTransitions="_2TD9kKxJEe2SdOFvAhnR8A _s1-tMKxLEe2SdOFvAhnR8A _8sA_cJAhEe6ymuOU-sr3WA _aBGDEJAiEe6ymuOU-sr3WA">

+ 1 - 1
microwave/YAKINDU_WORKSPACE/31_TimerTimeoutWrong/srcgen/statechart.py

@@ -309,7 +309,7 @@ class Statechart:
 				self.__exit_sequence_main_region_door_closed_r1_magnetron_on()
 				self.__enter_sequence_main_region_door_closed_r1_magnetron_off_default()
 				transitioned_after = 0
-			elif self.__time_events[0]:
+			elif (self.__time_events[0]) and (self.__remaining_time > 0):
 				self.__exit_sequence_main_region_door_closed_r1_magnetron_on()
 				self.__remaining_time = self.__remaining_time - 1
 				self.set_displayed_time_observable.next(self.__remaining_time)

+ 126 - 126
microwave/YAKINDU_WORKSPACE/40_Orthogonality/Statechart.ysc

@@ -69,162 +69,162 @@
             </children>
           </children>
           <children xsi:type="notation:Compartment" xmi:id="_3o4VYpAkEe6P_oPuwzAI0A" type="StateFigureCompartment">
-            <children xmi:id="_3o6KkJAkEe6P_oPuwzAI0A" type="Region" element="_3o3HQJAkEe6P_oPuwzAI0A">
-              <children xsi:type="notation:DecorationNode" xmi:id="_3o6xoJAkEe6P_oPuwzAI0A" type="RegionName">
-                <styles xsi:type="notation:ShapeStyle" xmi:id="_3o6xoZAkEe6P_oPuwzAI0A"/>
-                <layoutConstraint xsi:type="notation:Location" xmi:id="_3o6xopAkEe6P_oPuwzAI0A"/>
+            <children xmi:id="_tUsEQKzCEe-tApdf59MQpw" type="Region" element="_3o3HQJAkEe6P_oPuwzAI0A">
+              <children xsi:type="notation:DecorationNode" xmi:id="_tUsEQazCEe-tApdf59MQpw" type="RegionName">
+                <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEQqzCEe-tApdf59MQpw"/>
+                <layoutConstraint xsi:type="notation:Location" xmi:id="_tUsEQ6zCEe-tApdf59MQpw"/>
               </children>
-              <children xsi:type="notation:Shape" xmi:id="_3o6xo5AkEe6P_oPuwzAI0A" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
-                <children xmi:id="_XresAJAhEe6ymuOU-sr3WA" type="State" element="_XrbBoJAhEe6ymuOU-sr3WA">
-                  <children xsi:type="notation:DecorationNode" xmi:id="_XrfTEJAhEe6ymuOU-sr3WA" type="StateName">
-                    <styles xsi:type="notation:ShapeStyle" xmi:id="_XrfTEZAhEe6ymuOU-sr3WA"/>
-                    <layoutConstraint xsi:type="notation:Location" xmi:id="_XrfTEpAhEe6ymuOU-sr3WA"/>
+              <children xsi:type="notation:Shape" xmi:id="_tUsERKzCEe-tApdf59MQpw" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                <children xmi:id="_tUsERazCEe-tApdf59MQpw" type="State" element="_XrbBoJAhEe6ymuOU-sr3WA">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_tUsERqzCEe-tApdf59MQpw" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsER6zCEe-tApdf59MQpw"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_tUsESKzCEe-tApdf59MQpw"/>
                   </children>
-                  <children xsi:type="notation:Compartment" xmi:id="_XrfTE5AhEe6ymuOU-sr3WA" type="StateTextCompartment">
-                    <children xsi:type="notation:Shape" xmi:id="_XrfTFJAhEe6ymuOU-sr3WA" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
-                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_XrfTFZAhEe6ymuOU-sr3WA"/>
+                  <children xsi:type="notation:Compartment" xmi:id="_tUsESazCEe-tApdf59MQpw" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="_tUsESqzCEe-tApdf59MQpw" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsES6zCEe-tApdf59MQpw"/>
                     </children>
                   </children>
-                  <children xsi:type="notation:Compartment" xmi:id="_XrfTFpAhEe6ymuOU-sr3WA" type="StateFigureCompartment">
-                    <children xmi:id="_XriWYJAhEe6ymuOU-sr3WA" type="Region" element="_Xrdd4JAhEe6ymuOU-sr3WA">
-                      <children xsi:type="notation:DecorationNode" xmi:id="_XriWY5AhEe6ymuOU-sr3WA" type="RegionName">
-                        <styles xsi:type="notation:ShapeStyle" xmi:id="_XriWZJAhEe6ymuOU-sr3WA"/>
-                        <layoutConstraint xsi:type="notation:Location" xmi:id="_XriWZZAhEe6ymuOU-sr3WA"/>
+                  <children xsi:type="notation:Compartment" xmi:id="_tUsETKzCEe-tApdf59MQpw" type="StateFigureCompartment">
+                    <children xmi:id="_tUsETazCEe-tApdf59MQpw" type="Region" element="_Xrdd4JAhEe6ymuOU-sr3WA">
+                      <children xsi:type="notation:DecorationNode" xmi:id="_tUsETqzCEe-tApdf59MQpw" type="RegionName">
+                        <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsET6zCEe-tApdf59MQpw"/>
+                        <layoutConstraint xsi:type="notation:Location" xmi:id="_tUsEUKzCEe-tApdf59MQpw"/>
                       </children>
-                      <children xsi:type="notation:Shape" xmi:id="_XriWZpAhEe6ymuOU-sr3WA" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
-                        <children xmi:id="_2B0ckKxJEe2SdOFvAhnR8A" type="Entry" element="_2BynYKxJEe2SdOFvAhnR8A">
-                          <children xmi:id="_2B1DoKxJEe2SdOFvAhnR8A" type="BorderItemLabelContainer">
-                            <children xsi:type="notation:DecorationNode" xmi:id="_2B1Do6xJEe2SdOFvAhnR8A" type="BorderItemLabel">
-                              <styles xsi:type="notation:ShapeStyle" xmi:id="_2B1DpKxJEe2SdOFvAhnR8A"/>
-                              <layoutConstraint xsi:type="notation:Location" xmi:id="_2B1DpaxJEe2SdOFvAhnR8A"/>
+                      <children xsi:type="notation:Shape" xmi:id="_tUsEUazCEe-tApdf59MQpw" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                        <children xmi:id="_tUsEUqzCEe-tApdf59MQpw" type="Entry" element="_2BynYKxJEe2SdOFvAhnR8A">
+                          <children xmi:id="_tUsEU6zCEe-tApdf59MQpw" type="BorderItemLabelContainer">
+                            <children xsi:type="notation:DecorationNode" xmi:id="_tUsEVKzCEe-tApdf59MQpw" type="BorderItemLabel">
+                              <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEVazCEe-tApdf59MQpw"/>
+                              <layoutConstraint xsi:type="notation:Location" xmi:id="_tUsEVqzCEe-tApdf59MQpw"/>
                             </children>
-                            <styles xsi:type="notation:ShapeStyle" xmi:id="_2B1DoaxJEe2SdOFvAhnR8A" fontName="Verdana" lineColor="4210752"/>
-                            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_2B1DoqxJEe2SdOFvAhnR8A"/>
+                            <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEV6zCEe-tApdf59MQpw" fontName="Verdana" lineColor="4210752"/>
+                            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEWKzCEe-tApdf59MQpw"/>
                           </children>
-                          <styles xsi:type="notation:ShapeStyle" xmi:id="_2B0ckaxJEe2SdOFvAhnR8A" fontName="Verdana" fillColor="0" lineColor="16777215"/>
-                          <styles xsi:type="notation:NamedStyle" xmi:id="_2B0ckqxJEe2SdOFvAhnR8A" name="allowColors"/>
-                          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_2B0ck6xJEe2SdOFvAhnR8A" x="73" y="7" width="15" height="15"/>
+                          <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEWazCEe-tApdf59MQpw" fontName="Verdana" fillColor="0" lineColor="16777215"/>
+                          <styles xsi:type="notation:NamedStyle" xmi:id="_tUsEWqzCEe-tApdf59MQpw" name="allowColors"/>
+                          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEW6zCEe-tApdf59MQpw" x="73" y="7" width="15" height="15"/>
                         </children>
-                        <children xmi:id="_k_Kh8KxLEe2SdOFvAhnR8A" type="State" element="_k_IFsKxLEe2SdOFvAhnR8A">
-                          <children xsi:type="notation:DecorationNode" xmi:id="_k_LwEKxLEe2SdOFvAhnR8A" type="StateName">
-                            <styles xsi:type="notation:ShapeStyle" xmi:id="_k_LwEaxLEe2SdOFvAhnR8A"/>
-                            <layoutConstraint xsi:type="notation:Location" xmi:id="_k_LwEqxLEe2SdOFvAhnR8A"/>
+                        <children xmi:id="_tUsEXKzCEe-tApdf59MQpw" type="State" element="_k_IFsKxLEe2SdOFvAhnR8A">
+                          <children xsi:type="notation:DecorationNode" xmi:id="_tUsEXazCEe-tApdf59MQpw" type="StateName">
+                            <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEXqzCEe-tApdf59MQpw"/>
+                            <layoutConstraint xsi:type="notation:Location" xmi:id="_tUsEX6zCEe-tApdf59MQpw"/>
                           </children>
-                          <children xsi:type="notation:Compartment" xmi:id="_k_LwE6xLEe2SdOFvAhnR8A" type="StateTextCompartment">
-                            <children xsi:type="notation:Shape" xmi:id="_k_LwFKxLEe2SdOFvAhnR8A" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
-                              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_k_LwFaxLEe2SdOFvAhnR8A"/>
+                          <children xsi:type="notation:Compartment" xmi:id="_tUsEYKzCEe-tApdf59MQpw" type="StateTextCompartment">
+                            <children xsi:type="notation:Shape" xmi:id="_tUsEYazCEe-tApdf59MQpw" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEYqzCEe-tApdf59MQpw"/>
                             </children>
                           </children>
-                          <children xsi:type="notation:Compartment" xmi:id="_k_MXIKxLEe2SdOFvAhnR8A" type="StateFigureCompartment">
-                            <children xmi:id="_NaW6IJAkEe6P_oPuwzAI0A" type="Region" element="_NaT20JAkEe6P_oPuwzAI0A">
-                              <children xsi:type="notation:DecorationNode" xmi:id="_NaYIQJAkEe6P_oPuwzAI0A" type="RegionName">
-                                <styles xsi:type="notation:ShapeStyle" xmi:id="_NaYIQZAkEe6P_oPuwzAI0A"/>
-                                <layoutConstraint xsi:type="notation:Location" xmi:id="_NaYIQpAkEe6P_oPuwzAI0A"/>
+                          <children xsi:type="notation:Compartment" xmi:id="_tUsEY6zCEe-tApdf59MQpw" type="StateFigureCompartment">
+                            <children xmi:id="_tUsEZKzCEe-tApdf59MQpw" type="Region" element="_NaT20JAkEe6P_oPuwzAI0A">
+                              <children xsi:type="notation:DecorationNode" xmi:id="_tUsEZazCEe-tApdf59MQpw" type="RegionName">
+                                <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEZqzCEe-tApdf59MQpw"/>
+                                <layoutConstraint xsi:type="notation:Location" xmi:id="_tUsEZ6zCEe-tApdf59MQpw"/>
                               </children>
-                              <children xsi:type="notation:Shape" xmi:id="_NaYIQ5AkEe6P_oPuwzAI0A" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
-                                <children xmi:id="_PyRMsJAkEe6P_oPuwzAI0A" type="State" element="_PyQloJAkEe6P_oPuwzAI0A">
-                                  <children xsi:type="notation:DecorationNode" xmi:id="_PyRzwJAkEe6P_oPuwzAI0A" type="StateName">
-                                    <styles xsi:type="notation:ShapeStyle" xmi:id="_PyRzwZAkEe6P_oPuwzAI0A"/>
-                                    <layoutConstraint xsi:type="notation:Location" xmi:id="_PyRzwpAkEe6P_oPuwzAI0A"/>
+                              <children xsi:type="notation:Shape" xmi:id="_tUsEaKzCEe-tApdf59MQpw" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                                <children xmi:id="_tUsEaazCEe-tApdf59MQpw" type="State" element="_PyQloJAkEe6P_oPuwzAI0A">
+                                  <children xsi:type="notation:DecorationNode" xmi:id="_tUsEaqzCEe-tApdf59MQpw" type="StateName">
+                                    <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEa6zCEe-tApdf59MQpw"/>
+                                    <layoutConstraint xsi:type="notation:Location" xmi:id="_tUsEbKzCEe-tApdf59MQpw"/>
                                   </children>
-                                  <children xsi:type="notation:Compartment" xmi:id="_PyRzw5AkEe6P_oPuwzAI0A" type="StateTextCompartment">
-                                    <children xsi:type="notation:Shape" xmi:id="_PyRzxJAkEe6P_oPuwzAI0A" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
-                                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_PyRzxZAkEe6P_oPuwzAI0A"/>
+                                  <children xsi:type="notation:Compartment" xmi:id="_tUsEbazCEe-tApdf59MQpw" type="StateTextCompartment">
+                                    <children xsi:type="notation:Shape" xmi:id="_tUsEbqzCEe-tApdf59MQpw" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEb6zCEe-tApdf59MQpw"/>
                                     </children>
                                   </children>
-                                  <children xsi:type="notation:Compartment" xmi:id="_PyRzxpAkEe6P_oPuwzAI0A" type="StateFigureCompartment"/>
-                                  <styles xsi:type="notation:ShapeStyle" xmi:id="_PyRMsZAkEe6P_oPuwzAI0A" fontName="Verdana" fillColor="15720400" lineColor="12632256"/>
-                                  <styles xsi:type="notation:FontStyle" xmi:id="_PyRMspAkEe6P_oPuwzAI0A"/>
-                                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_PySa0JAkEe6P_oPuwzAI0A" name="isHorizontal" booleanValue="true"/>
-                                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_PyRMs5AkEe6P_oPuwzAI0A" x="43" y="26" width="79" height="53"/>
+                                  <children xsi:type="notation:Compartment" xmi:id="_tUsEcKzCEe-tApdf59MQpw" type="StateFigureCompartment"/>
+                                  <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEcazCEe-tApdf59MQpw" fontName="Verdana" fillColor="15720400" lineColor="12632256"/>
+                                  <styles xsi:type="notation:FontStyle" xmi:id="_tUsEcqzCEe-tApdf59MQpw"/>
+                                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_tUsEc6zCEe-tApdf59MQpw" name="isHorizontal" booleanValue="true"/>
+                                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEdKzCEe-tApdf59MQpw" x="43" y="26" width="79" height="53"/>
                                 </children>
-                                <children xmi:id="_Qa8WQJAkEe6P_oPuwzAI0A" type="Entry" element="_Qa7IIJAkEe6P_oPuwzAI0A">
-                                  <children xmi:id="_Qa8WRJAkEe6P_oPuwzAI0A" type="BorderItemLabelContainer">
-                                    <children xsi:type="notation:DecorationNode" xmi:id="_Qa89UJAkEe6P_oPuwzAI0A" type="BorderItemLabel">
-                                      <styles xsi:type="notation:ShapeStyle" xmi:id="_Qa89UZAkEe6P_oPuwzAI0A"/>
-                                      <layoutConstraint xsi:type="notation:Location" xmi:id="_Qa89UpAkEe6P_oPuwzAI0A"/>
+                                <children xmi:id="_tUsEdazCEe-tApdf59MQpw" type="Entry" element="_Qa7IIJAkEe6P_oPuwzAI0A">
+                                  <children xmi:id="_tUsEdqzCEe-tApdf59MQpw" type="BorderItemLabelContainer">
+                                    <children xsi:type="notation:DecorationNode" xmi:id="_tUsEd6zCEe-tApdf59MQpw" type="BorderItemLabel">
+                                      <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEeKzCEe-tApdf59MQpw"/>
+                                      <layoutConstraint xsi:type="notation:Location" xmi:id="_tUsEeazCEe-tApdf59MQpw"/>
                                     </children>
-                                    <styles xsi:type="notation:ShapeStyle" xmi:id="_Qa8WRZAkEe6P_oPuwzAI0A" fontName="Verdana" lineColor="4210752"/>
-                                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_Qa8WRpAkEe6P_oPuwzAI0A"/>
+                                    <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEeqzCEe-tApdf59MQpw" fontName="Verdana" lineColor="4210752"/>
+                                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEe6zCEe-tApdf59MQpw"/>
                                   </children>
-                                  <styles xsi:type="notation:ShapeStyle" xmi:id="_Qa8WQZAkEe6P_oPuwzAI0A" fontName="Verdana" fillColor="0" lineColor="16777215"/>
-                                  <styles xsi:type="notation:NamedStyle" xmi:id="_Qa8WQpAkEe6P_oPuwzAI0A" name="allowColors"/>
-                                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_Qa8WQ5AkEe6P_oPuwzAI0A" x="6" y="46"/>
+                                  <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEfKzCEe-tApdf59MQpw" fontName="Verdana" fillColor="0" lineColor="16777215"/>
+                                  <styles xsi:type="notation:NamedStyle" xmi:id="_tUsEfazCEe-tApdf59MQpw" name="allowColors"/>
+                                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEfqzCEe-tApdf59MQpw" x="6" y="46"/>
                                 </children>
-                                <children xsi:type="notation:Shape" xmi:id="_uAbfUJAiEe6ymuOU-sr3WA" type="Choice" element="_uAZqIJAiEe6ymuOU-sr3WA" fontName="Verdana" lineColor="4210752">
-                                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_uAbfUZAiEe6ymuOU-sr3WA" x="179" y="59" width="34" height="34"/>
+                                <children xsi:type="notation:Shape" xmi:id="_tUsEf6zCEe-tApdf59MQpw" type="Choice" element="_uAZqIJAiEe6ymuOU-sr3WA" fontName="Verdana" lineColor="4210752">
+                                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEgKzCEe-tApdf59MQpw" x="179" y="59" width="34" height="34"/>
                                 </children>
-                                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_NaYIRJAkEe6P_oPuwzAI0A"/>
+                                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEgazCEe-tApdf59MQpw"/>
                               </children>
-                              <styles xsi:type="notation:ShapeStyle" xmi:id="_NaW6IZAkEe6P_oPuwzAI0A" fontName="Verdana" fillColor="16448250" lineColor="12632256"/>
-                              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_NaW6IpAkEe6P_oPuwzAI0A"/>
+                              <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEgqzCEe-tApdf59MQpw" fontName="Verdana" fillColor="16448250" lineColor="12632256"/>
+                              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEg6zCEe-tApdf59MQpw"/>
                             </children>
                           </children>
-                          <styles xsi:type="notation:ShapeStyle" xmi:id="_k_Kh8axLEe2SdOFvAhnR8A" fontName="Verdana" fillColor="15720400" lineColor="12632256"/>
-                          <styles xsi:type="notation:FontStyle" xmi:id="_k_Kh8qxLEe2SdOFvAhnR8A"/>
-                          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_k_MXIaxLEe2SdOFvAhnR8A" name="isHorizontal" booleanValue="true"/>
-                          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_k_Kh86xLEe2SdOFvAhnR8A" x="12" y="228" width="302" height="305"/>
+                          <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEhKzCEe-tApdf59MQpw" fontName="Verdana" fillColor="15720400" lineColor="12632256"/>
+                          <styles xsi:type="notation:FontStyle" xmi:id="_tUsEhazCEe-tApdf59MQpw"/>
+                          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_tUsEhqzCEe-tApdf59MQpw" name="isHorizontal" booleanValue="true"/>
+                          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEh6zCEe-tApdf59MQpw" x="12" y="228" width="302" height="305"/>
                         </children>
-                        <children xmi:id="_1zAkgKxJEe2SdOFvAhnR8A" type="State" element="_1y9hMKxJEe2SdOFvAhnR8A">
-                          <children xsi:type="notation:DecorationNode" xmi:id="_1zBLkKxJEe2SdOFvAhnR8A" type="StateName">
-                            <styles xsi:type="notation:ShapeStyle" xmi:id="_1zBLkaxJEe2SdOFvAhnR8A"/>
-                            <layoutConstraint xsi:type="notation:Location" xmi:id="_1zBLkqxJEe2SdOFvAhnR8A"/>
+                        <children xmi:id="_tUsEiKzCEe-tApdf59MQpw" type="State" element="_1y9hMKxJEe2SdOFvAhnR8A">
+                          <children xsi:type="notation:DecorationNode" xmi:id="_tUsEiazCEe-tApdf59MQpw" type="StateName">
+                            <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEiqzCEe-tApdf59MQpw"/>
+                            <layoutConstraint xsi:type="notation:Location" xmi:id="_tUsEi6zCEe-tApdf59MQpw"/>
                           </children>
-                          <children xsi:type="notation:Compartment" xmi:id="_1zByoKxJEe2SdOFvAhnR8A" type="StateTextCompartment">
-                            <children xsi:type="notation:Shape" xmi:id="_1zByoaxJEe2SdOFvAhnR8A" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
-                              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_1zByoqxJEe2SdOFvAhnR8A"/>
+                          <children xsi:type="notation:Compartment" xmi:id="_tUsEjKzCEe-tApdf59MQpw" type="StateTextCompartment">
+                            <children xsi:type="notation:Shape" xmi:id="_tUsEjazCEe-tApdf59MQpw" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEjqzCEe-tApdf59MQpw"/>
                             </children>
                           </children>
-                          <children xsi:type="notation:Compartment" xmi:id="_1zByo6xJEe2SdOFvAhnR8A" type="StateFigureCompartment"/>
-                          <styles xsi:type="notation:ShapeStyle" xmi:id="_1zAkgaxJEe2SdOFvAhnR8A" fontName="Verdana" fillColor="15720400" lineColor="12632256"/>
-                          <styles xsi:type="notation:FontStyle" xmi:id="_1zAkgqxJEe2SdOFvAhnR8A"/>
-                          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_1zCZsKxJEe2SdOFvAhnR8A" name="isHorizontal" booleanValue="true"/>
-                          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_1zAkg6xJEe2SdOFvAhnR8A" x="69" y="45" width="98" height="53"/>
+                          <children xsi:type="notation:Compartment" xmi:id="_tUsEj6zCEe-tApdf59MQpw" type="StateFigureCompartment"/>
+                          <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEkKzCEe-tApdf59MQpw" fontName="Verdana" fillColor="15720400" lineColor="12632256"/>
+                          <styles xsi:type="notation:FontStyle" xmi:id="_tUsEkazCEe-tApdf59MQpw"/>
+                          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_tUsEkqzCEe-tApdf59MQpw" name="isHorizontal" booleanValue="true"/>
+                          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEk6zCEe-tApdf59MQpw" x="69" y="45" width="98" height="53"/>
                         </children>
-                        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_XriWZ5AhEe6ymuOU-sr3WA"/>
+                        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsElKzCEe-tApdf59MQpw"/>
                       </children>
-                      <styles xsi:type="notation:ShapeStyle" xmi:id="_XriWYZAhEe6ymuOU-sr3WA" fontName="Verdana" fillColor="16448250" lineColor="12632256"/>
-                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_XriWYpAhEe6ymuOU-sr3WA"/>
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsElazCEe-tApdf59MQpw" fontName="Verdana" fillColor="16448250" lineColor="12632256"/>
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsElqzCEe-tApdf59MQpw"/>
                     </children>
                   </children>
-                  <styles xsi:type="notation:ShapeStyle" xmi:id="_XresAZAhEe6ymuOU-sr3WA" fontName="Verdana" fillColor="15720400" lineColor="12632256"/>
-                  <styles xsi:type="notation:FontStyle" xmi:id="_XresApAhEe6ymuOU-sr3WA"/>
-                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_XrfTF5AhEe6ymuOU-sr3WA" name="isHorizontal" booleanValue="true"/>
-                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_XresA5AhEe6ymuOU-sr3WA" x="66" y="21" width="417" height="645"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEl6zCEe-tApdf59MQpw" fontName="Verdana" fillColor="15720400" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_tUsEmKzCEe-tApdf59MQpw"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_tUsEmazCEe-tApdf59MQpw" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEmqzCEe-tApdf59MQpw" x="66" y="21" width="417" height="645"/>
                 </children>
-                <children xmi:id="_JyYOMJAhEe6ymuOU-sr3WA" type="State" element="_JyN2IJAhEe6ymuOU-sr3WA">
-                  <children xsi:type="notation:DecorationNode" xmi:id="_JyY1QpAhEe6ymuOU-sr3WA" type="StateName">
-                    <styles xsi:type="notation:ShapeStyle" xmi:id="_JyY1Q5AhEe6ymuOU-sr3WA"/>
-                    <layoutConstraint xsi:type="notation:Location" xmi:id="_JyZcUJAhEe6ymuOU-sr3WA"/>
+                <children xmi:id="_tUsEm6zCEe-tApdf59MQpw" type="State" element="_JyN2IJAhEe6ymuOU-sr3WA">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_tUsEnKzCEe-tApdf59MQpw" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEnazCEe-tApdf59MQpw"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_tUsEnqzCEe-tApdf59MQpw"/>
                   </children>
-                  <children xsi:type="notation:Compartment" xmi:id="_JyZcUZAhEe6ymuOU-sr3WA" type="StateTextCompartment">
-                    <children xsi:type="notation:Shape" xmi:id="_JyZcUpAhEe6ymuOU-sr3WA" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
-                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_JyZcU5AhEe6ymuOU-sr3WA"/>
+                  <children xsi:type="notation:Compartment" xmi:id="_tUsEn6zCEe-tApdf59MQpw" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="_tUsEoKzCEe-tApdf59MQpw" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEoazCEe-tApdf59MQpw"/>
                     </children>
                   </children>
-                  <children xsi:type="notation:Compartment" xmi:id="_JyZcVJAhEe6ymuOU-sr3WA" type="StateFigureCompartment"/>
-                  <styles xsi:type="notation:ShapeStyle" xmi:id="_JyYOMZAhEe6ymuOU-sr3WA" fontName="Verdana" fillColor="15720400" lineColor="12632256"/>
-                  <styles xsi:type="notation:FontStyle" xmi:id="_JyY1QJAhEe6ymuOU-sr3WA"/>
-                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_JyZcVZAhEe6ymuOU-sr3WA" name="isHorizontal" booleanValue="true"/>
-                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_JyY1QZAhEe6ymuOU-sr3WA" x="616" y="265" width="74" height="53"/>
+                  <children xsi:type="notation:Compartment" xmi:id="_tUsEoqzCEe-tApdf59MQpw" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEo6zCEe-tApdf59MQpw" fontName="Verdana" fillColor="15720400" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_tUsEpKzCEe-tApdf59MQpw"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_tUsEpazCEe-tApdf59MQpw" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEpqzCEe-tApdf59MQpw" x="616" y="265" width="74" height="53"/>
                 </children>
-                <children xmi:id="_iljM4JAhEe6ymuOU-sr3WA" type="Entry" element="_ilhXsJAhEe6ymuOU-sr3WA">
-                  <children xmi:id="_iljM5JAhEe6ymuOU-sr3WA" type="BorderItemLabelContainer">
-                    <children xsi:type="notation:DecorationNode" xmi:id="_iljM55AhEe6ymuOU-sr3WA" type="BorderItemLabel">
-                      <styles xsi:type="notation:ShapeStyle" xmi:id="_iljM6JAhEe6ymuOU-sr3WA"/>
-                      <layoutConstraint xsi:type="notation:Location" xmi:id="_iljM6ZAhEe6ymuOU-sr3WA"/>
+                <children xmi:id="_tUsEp6zCEe-tApdf59MQpw" type="Entry" element="_ilhXsJAhEe6ymuOU-sr3WA">
+                  <children xmi:id="_tUsEqKzCEe-tApdf59MQpw" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_tUsEqazCEe-tApdf59MQpw" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEqqzCEe-tApdf59MQpw"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_tUsEq6zCEe-tApdf59MQpw"/>
                     </children>
-                    <styles xsi:type="notation:ShapeStyle" xmi:id="_iljM5ZAhEe6ymuOU-sr3WA" fontName="Verdana" lineColor="4210752"/>
-                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_iljM5pAhEe6ymuOU-sr3WA"/>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsErKzCEe-tApdf59MQpw" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsErazCEe-tApdf59MQpw"/>
                   </children>
-                  <styles xsi:type="notation:ShapeStyle" xmi:id="_iljM4ZAhEe6ymuOU-sr3WA" fontName="Verdana" fillColor="0" lineColor="16777215"/>
-                  <styles xsi:type="notation:NamedStyle" xmi:id="_iljM4pAhEe6ymuOU-sr3WA" name="allowColors"/>
-                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_iljM45AhEe6ymuOU-sr3WA" x="19" y="109" width="15" height="15"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsErqzCEe-tApdf59MQpw" fontName="Verdana" fillColor="0" lineColor="16777215"/>
+                  <styles xsi:type="notation:NamedStyle" xmi:id="_tUsEr6zCEe-tApdf59MQpw" name="allowColors"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEsKzCEe-tApdf59MQpw" x="19" y="109" width="15" height="15"/>
                 </children>
-                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_3o6xpJAkEe6P_oPuwzAI0A"/>
+                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEsazCEe-tApdf59MQpw"/>
               </children>
-              <styles xsi:type="notation:ShapeStyle" xmi:id="_3o6KkZAkEe6P_oPuwzAI0A" fontName="Verdana" fillColor="16448250" lineColor="12632256"/>
-              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_3o6KkpAkEe6P_oPuwzAI0A"/>
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_tUsEsqzCEe-tApdf59MQpw" fontName="Verdana" fillColor="16448250" lineColor="12632256"/>
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_tUsEs6zCEe-tApdf59MQpw"/>
             </children>
             <children xmi:id="_3o7YsJAkEe6P_oPuwzAI0A" type="Region" element="_3o3HQZAkEe6P_oPuwzAI0A">
               <children xsi:type="notation:DecorationNode" xmi:id="_3o7Ys5AkEe6P_oPuwzAI0A" type="RegionName">
@@ -314,7 +314,7 @@
     </children>
     <styles xsi:type="notation:BooleanValueStyle" xmi:id="_D1kIOqxEEe2zPcKEzbpeTQ" name="inlineDefinitionSection"/>
     <styles xsi:type="notation:DiagramStyle" xmi:id="_D1kIO6xEEe2zPcKEzbpeTQ"/>
-    <edges xmi:id="_2TFywKxJEe2SdOFvAhnR8A" type="Transition" element="_2TD9kKxJEe2SdOFvAhnR8A" source="_2B0ckKxJEe2SdOFvAhnR8A" target="_1zAkgKxJEe2SdOFvAhnR8A">
+    <edges xmi:id="_2TFywKxJEe2SdOFvAhnR8A" type="Transition" element="_2TD9kKxJEe2SdOFvAhnR8A" source="_tUsEUqzCEe-tApdf59MQpw" target="_tUsEiKzCEe-tApdf59MQpw">
       <children xsi:type="notation:DecorationNode" xmi:id="_2TGZ0axJEe2SdOFvAhnR8A" type="TransitionExpression">
         <styles xsi:type="notation:ShapeStyle" xmi:id="_2TGZ0qxJEe2SdOFvAhnR8A"/>
         <layoutConstraint xsi:type="notation:Location" xmi:id="_2TGZ06xJEe2SdOFvAhnR8A" y="10"/>
@@ -323,7 +323,7 @@
       <styles xsi:type="notation:FontStyle" xmi:id="_2TGZ0KxJEe2SdOFvAhnR8A" fontName="Verdana"/>
       <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_2TFywqxJEe2SdOFvAhnR8A" points="[1, 6, -24, -51]$[-10, 51, -35, -6]"/>
     </edges>
-    <edges xmi:id="_oDSaQKxLEe2SdOFvAhnR8A" type="Transition" element="_oDRMIKxLEe2SdOFvAhnR8A" source="_1zAkgKxJEe2SdOFvAhnR8A" target="_k_Kh8KxLEe2SdOFvAhnR8A">
+    <edges xmi:id="_oDSaQKxLEe2SdOFvAhnR8A" type="Transition" element="_oDRMIKxLEe2SdOFvAhnR8A" source="_tUsEiKzCEe-tApdf59MQpw" target="_tUsEXKzCEe-tApdf59MQpw">
       <children xsi:type="notation:DecorationNode" xmi:id="_oDTBUaxLEe2SdOFvAhnR8A" type="TransitionExpression">
         <styles xsi:type="notation:ShapeStyle" xmi:id="_oDTBUqxLEe2SdOFvAhnR8A"/>
         <layoutConstraint xsi:type="notation:Location" xmi:id="_oDTBU6xLEe2SdOFvAhnR8A" x="31" y="-21"/>
@@ -334,7 +334,7 @@
       <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_oDUPcKxLEe2SdOFvAhnR8A" id="(0.8518518518518519,0.6981132075471698)"/>
       <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_oDUPcaxLEe2SdOFvAhnR8A" id="(0.8037383177570093,0.7924528301886793)"/>
     </edges>
-    <edges xmi:id="_s1_7UKxLEe2SdOFvAhnR8A" type="Transition" element="_s1-tMKxLEe2SdOFvAhnR8A" source="_k_Kh8KxLEe2SdOFvAhnR8A" target="_1zAkgKxJEe2SdOFvAhnR8A">
+    <edges xmi:id="_s1_7UKxLEe2SdOFvAhnR8A" type="Transition" element="_s1-tMKxLEe2SdOFvAhnR8A" source="_tUsEXKzCEe-tApdf59MQpw" target="_tUsEiKzCEe-tApdf59MQpw">
       <children xsi:type="notation:DecorationNode" xmi:id="_s2AiYKxLEe2SdOFvAhnR8A" type="TransitionExpression">
         <styles xsi:type="notation:ShapeStyle" xmi:id="_s2AiYaxLEe2SdOFvAhnR8A"/>
         <layoutConstraint xsi:type="notation:Location" xmi:id="_s2AiYqxLEe2SdOFvAhnR8A" x="-37" y="-18"/>
@@ -344,7 +344,7 @@
       <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_s1_7UqxLEe2SdOFvAhnR8A" points="[-11, -23, -58, 158]$[-11, -89, -58, 92]$[37, -89, -10, 92]$[37, -154, -10, 27]"/>
       <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_s2BwgKxLEe2SdOFvAhnR8A" id="(0.19626168224299065,0.07547169811320754)"/>
     </edges>
-    <edges xmi:id="_e_2RgJAhEe6ymuOU-sr3WA" type="Transition" element="_e_1DYJAhEe6ymuOU-sr3WA" source="_XresAJAhEe6ymuOU-sr3WA" target="_JyYOMJAhEe6ymuOU-sr3WA">
+    <edges xmi:id="_e_2RgJAhEe6ymuOU-sr3WA" type="Transition" element="_e_1DYJAhEe6ymuOU-sr3WA" source="_tUsERazCEe-tApdf59MQpw" target="_tUsEm6zCEe-tApdf59MQpw">
       <children xsi:type="notation:DecorationNode" xmi:id="_e_24k5AhEe6ymuOU-sr3WA" type="TransitionExpression">
         <styles xsi:type="notation:ShapeStyle" xmi:id="_e_24lJAhEe6ymuOU-sr3WA"/>
         <layoutConstraint xsi:type="notation:Location" xmi:id="_e_24lZAhEe6ymuOU-sr3WA" x="10" y="23"/>
@@ -355,7 +355,7 @@
       <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_e_4GsJAhEe6ymuOU-sr3WA" id="(0.9840764331210191,0.4037122969837587)"/>
       <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_e_4GsZAhEe6ymuOU-sr3WA" id="(0.32432432432432434,0.8113207547169812)"/>
     </edges>
-    <edges xmi:id="_hgNVcJAhEe6ymuOU-sr3WA" type="Transition" element="_hgMuYJAhEe6ymuOU-sr3WA" source="_JyYOMJAhEe6ymuOU-sr3WA" target="_XresAJAhEe6ymuOU-sr3WA">
+    <edges xmi:id="_hgNVcJAhEe6ymuOU-sr3WA" type="Transition" element="_hgMuYJAhEe6ymuOU-sr3WA" source="_tUsEm6zCEe-tApdf59MQpw" target="_tUsERazCEe-tApdf59MQpw">
       <children xsi:type="notation:DecorationNode" xmi:id="_hgNVdJAhEe6ymuOU-sr3WA" type="TransitionExpression">
         <styles xsi:type="notation:ShapeStyle" xmi:id="_hgNVdZAhEe6ymuOU-sr3WA"/>
         <layoutConstraint xsi:type="notation:Location" xmi:id="_hgNVdpAhEe6ymuOU-sr3WA" x="-8" y="19"/>
@@ -366,7 +366,7 @@
       <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_hgOjkJAhEe6ymuOU-sr3WA" id="(0.1891891891891892,0.18867924528301888)"/>
       <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_hgOjkZAhEe6ymuOU-sr3WA" id="(0.9840764331210191,0.43155452436194897)"/>
     </edges>
-    <edges xmi:id="_i8a0wJAhEe6ymuOU-sr3WA" type="Transition" element="_i8Y_kJAhEe6ymuOU-sr3WA" source="_iljM4JAhEe6ymuOU-sr3WA" target="_XresAJAhEe6ymuOU-sr3WA">
+    <edges xmi:id="_i8a0wJAhEe6ymuOU-sr3WA" type="Transition" element="_i8Y_kJAhEe6ymuOU-sr3WA" source="_tUsEp6zCEe-tApdf59MQpw" target="_tUsERazCEe-tApdf59MQpw">
       <children xsi:type="notation:DecorationNode" xmi:id="_i8bb0JAhEe6ymuOU-sr3WA" type="TransitionExpression">
         <styles xsi:type="notation:ShapeStyle" xmi:id="_i8bb0ZAhEe6ymuOU-sr3WA"/>
         <layoutConstraint xsi:type="notation:Location" xmi:id="_i8bb0pAhEe6ymuOU-sr3WA" y="10"/>
@@ -376,7 +376,7 @@
       <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_i8a0wpAhEe6ymuOU-sr3WA" points="[6, -1, -52, 63]$[40, -1, -18, 63]"/>
       <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_i8cp8JAhEe6ymuOU-sr3WA" id="(0.044585987261146494,0.048723897911832945)"/>
     </edges>
-    <edges xmi:id="_QAYzIJAiEe6ymuOU-sr3WA" type="Transition" element="_QAYMEJAiEe6ymuOU-sr3WA" source="_PyRMsJAkEe6P_oPuwzAI0A" target="_uAbfUJAiEe6ymuOU-sr3WA">
+    <edges xmi:id="_QAYzIJAiEe6ymuOU-sr3WA" type="Transition" element="_QAYMEJAiEe6ymuOU-sr3WA" source="_tUsEaazCEe-tApdf59MQpw" target="_tUsEf6zCEe-tApdf59MQpw">
       <children xsi:type="notation:DecorationNode" xmi:id="_QAZaMZAiEe6ymuOU-sr3WA" type="TransitionExpression">
         <styles xsi:type="notation:ShapeStyle" xmi:id="_QAZaMpAiEe6ymuOU-sr3WA"/>
         <layoutConstraint xsi:type="notation:Location" xmi:id="_QAZaM5AiEe6ymuOU-sr3WA" x="7" y="27"/>
@@ -387,7 +387,7 @@
       <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_QAaBQJAiEe6ymuOU-sr3WA" id="(0.7215189873417721,0.8113207547169812)"/>
       <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_zcoCQJAiEe6ymuOU-sr3WA" id="(0.8235294117647058,0.7058823529411765)"/>
     </edges>
-    <edges xmi:id="_aBH4QJAiEe6ymuOU-sr3WA" type="Transition" element="_aBGDEJAiEe6ymuOU-sr3WA" source="_uAbfUJAiEe6ymuOU-sr3WA" target="_1zAkgKxJEe2SdOFvAhnR8A">
+    <edges xmi:id="_aBH4QJAiEe6ymuOU-sr3WA" type="Transition" element="_aBGDEJAiEe6ymuOU-sr3WA" source="_tUsEf6zCEe-tApdf59MQpw" target="_tUsEiKzCEe-tApdf59MQpw">
       <children xsi:type="notation:DecorationNode" xmi:id="_aBH4RJAiEe6ymuOU-sr3WA" type="TransitionExpression">
         <styles xsi:type="notation:ShapeStyle" xmi:id="_aBH4RZAiEe6ymuOU-sr3WA"/>
         <layoutConstraint xsi:type="notation:Location" xmi:id="_aBH4RpAiEe6ymuOU-sr3WA" x="-189" y="59"/>
@@ -398,7 +398,7 @@
       <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_aBKUgJAiEe6ymuOU-sr3WA" id="(0.26666666666666666,0.2)"/>
       <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_aBKUgZAiEe6ymuOU-sr3WA" id="(0.8673469387755102,0.5471698113207547)"/>
     </edges>
-    <edges xmi:id="_1DIGAJAiEe6ymuOU-sr3WA" type="Transition" element="_1DHe8JAiEe6ymuOU-sr3WA" source="_uAbfUJAiEe6ymuOU-sr3WA" target="_PyRMsJAkEe6P_oPuwzAI0A">
+    <edges xmi:id="_1DIGAJAiEe6ymuOU-sr3WA" type="Transition" element="_1DHe8JAiEe6ymuOU-sr3WA" source="_tUsEf6zCEe-tApdf59MQpw" target="_tUsEaazCEe-tApdf59MQpw">
       <children xsi:type="notation:DecorationNode" xmi:id="_1DIGBJAiEe6ymuOU-sr3WA" type="TransitionExpression">
         <styles xsi:type="notation:ShapeStyle" xmi:id="_1DIGBZAiEe6ymuOU-sr3WA"/>
         <layoutConstraint xsi:type="notation:Location" xmi:id="_1DIGBpAiEe6ymuOU-sr3WA" x="18" y="9"/>
@@ -408,7 +408,7 @@
       <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_1DIGApAiEe6ymuOU-sr3WA" points="[19, -8, 120, 12]$[19, -27, 120, -7]$[-61, -27, 40, -7]"/>
       <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_1DItEJAiEe6ymuOU-sr3WA" id="(0.11764705882352941,0.38235294117647056)"/>
     </edges>
-    <edges xmi:id="_QzBfEJAkEe6P_oPuwzAI0A" type="Transition" element="_Qy_p4JAkEe6P_oPuwzAI0A" source="_Qa8WQJAkEe6P_oPuwzAI0A" target="_PyRMsJAkEe6P_oPuwzAI0A">
+    <edges xmi:id="_QzBfEJAkEe6P_oPuwzAI0A" type="Transition" element="_Qy_p4JAkEe6P_oPuwzAI0A" source="_tUsEdazCEe-tApdf59MQpw" target="_tUsEaazCEe-tApdf59MQpw">
       <children xsi:type="notation:DecorationNode" xmi:id="_QzCGIZAkEe6P_oPuwzAI0A" type="TransitionExpression">
         <styles xsi:type="notation:ShapeStyle" xmi:id="_QzCGIpAkEe6P_oPuwzAI0A"/>
         <layoutConstraint xsi:type="notation:Location" xmi:id="_QzCGI5AkEe6P_oPuwzAI0A" y="10"/>

+ 19 - 6
microwave/YAKINDU_WORKSPACE/40_Orthogonality/srcgen/statechart.py

@@ -287,19 +287,23 @@ class Statechart:
 		"""
 		#Default exit sequence for state doorClosed
 		self.__exit_sequence_main_region_orthogonal_state_r1_door_closed_r1()
+		self.__state_vector[0] = self.State.main_region_orthogonal_state
+		self.__state_conf_vector_position = 0
 		
 	def __exit_sequence_main_region_orthogonal_state_r1_door_closed_r1_magnetron_on(self):
 		"""Default exit sequence for state MagnetronOn.
 		"""
 		#Default exit sequence for state MagnetronOn
 		self.__exit_sequence_main_region_orthogonal_state_r1_door_closed_r1_magnetron_on_r1()
+		self.__state_vector[0] = self.State.main_region_orthogonal_state_r1door_closed
+		self.__state_conf_vector_position = 0
 		self.__exit_action_main_region_orthogonal_state_r1_door_closed_r1_magnetron_on()
 		
 	def __exit_sequence_main_region_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_check_time(self):
 		"""Default exit sequence for state CheckTime.
 		"""
 		#Default exit sequence for state CheckTime
-		self.__state_vector[0] = self.State.null_state
+		self.__state_vector[0] = self.State.main_region_orthogonal_state_r1door_closed_r1magnetron_on
 		self.__state_conf_vector_position = 0
 		self.__exit_action_main_region_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_check_time()
 		
@@ -307,21 +311,21 @@ class Statechart:
 		"""Default exit sequence for state MagnetronOff.
 		"""
 		#Default exit sequence for state MagnetronOff
-		self.__state_vector[0] = self.State.null_state
+		self.__state_vector[0] = self.State.main_region_orthogonal_state_r1door_closed
 		self.__state_conf_vector_position = 0
 		
 	def __exit_sequence_main_region_orthogonal_state_r1_door_open(self):
 		"""Default exit sequence for state DoorOpen.
 		"""
 		#Default exit sequence for state DoorOpen
-		self.__state_vector[0] = self.State.null_state
+		self.__state_vector[0] = self.State.main_region_orthogonal_state
 		self.__state_conf_vector_position = 0
 		
 	def __exit_sequence_main_region_orthogonal_state_r2_time_control(self):
 		"""Default exit sequence for state TimeControl.
 		"""
 		#Default exit sequence for state TimeControl
-		self.__state_vector[1] = self.State.null_state
+		self.__state_vector[1] = self.State.main_region_orthogonal_state
 		self.__state_conf_vector_position = 1
 		
 	def __exit_sequence_main_region(self):
@@ -329,7 +333,11 @@ class Statechart:
 		"""
 		#Default exit sequence for region main region
 		state = self.__state_vector[0]
-		if state == self.State.main_region_orthogonal_state_r1door_closed_r1magnetron_on_r1check_time:
+		if state == self.State.main_region_orthogonal_state_r1door_closed:
+			self.__exit_sequence_main_region_orthogonal_state_r1_door_closed()
+		elif state == self.State.main_region_orthogonal_state_r1door_closed_r1magnetron_on:
+			self.__exit_sequence_main_region_orthogonal_state_r1_door_closed_r1_magnetron_on()
+		elif state == self.State.main_region_orthogonal_state_r1door_closed_r1magnetron_on_r1check_time:
 			self.__exit_sequence_main_region_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_check_time()
 			self.__exit_action_main_region_orthogonal_state_r1_door_closed_r1_magnetron_on()
 		elif state == self.State.main_region_orthogonal_state_r1door_closed_r1magnetron_off:
@@ -345,7 +353,9 @@ class Statechart:
 		"""
 		#Default exit sequence for region r1
 		state = self.__state_vector[0]
-		if state == self.State.main_region_orthogonal_state_r1door_closed_r1magnetron_on_r1check_time:
+		if state == self.State.main_region_orthogonal_state_r1door_closed_r1magnetron_on:
+			self.__exit_sequence_main_region_orthogonal_state_r1_door_closed_r1_magnetron_on()
+		elif state == self.State.main_region_orthogonal_state_r1door_closed_r1magnetron_on_r1check_time:
 			self.__exit_sequence_main_region_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_check_time()
 			self.__exit_action_main_region_orthogonal_state_r1_door_closed_r1_magnetron_on()
 		elif state == self.State.main_region_orthogonal_state_r1door_closed_r1magnetron_off:
@@ -575,6 +585,9 @@ class Statechart:
 		self.__is_executing = True
 		#Default exit sequence for statechart Statechart
 		self.__exit_sequence_main_region()
+		self.__state_vector[0] = self.State.null_state
+		self.__state_vector[1] = self.State.null_state
+		self.__state_conf_vector_position = 1
 		self.__is_executing = False
 	
 	

+ 0 - 23
microwave/YAKINDU_WORKSPACE/60_Correction1/.project

@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>60_Correction1</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.yakindu.sct.builder.SCTBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
-		<nature>com.yakindu.sct.builder.SCTNature</nature>
-	</natures>
-</projectDescription>

+ 0 - 3
microwave/YAKINDU_WORKSPACE/60_Correction1/.settings/org.eclipse.core.resources.prefs

@@ -1,3 +0,0 @@
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
-encoding/Statechart.ysc=UTF-8

+ 0 - 15
microwave/YAKINDU_WORKSPACE/60_Correction1/Statechart.sgen

@@ -1,15 +0,0 @@
-GeneratorModel for create::python {
-
-	const PROJECT : string = "60_Correction1"
-
-	const FOLDER : string = "srcgen"
-
-	statechart Statechart {
-
-		feature Outlet {
-			targetProject = PROJECT
-			targetFolder = FOLDER
-			libraryTargetFolder = "src"
-		}
-	}
-}

Разлика између датотеке није приказан због своје велике величине
+ 0 - 701
microwave/YAKINDU_WORKSPACE/60_Correction1/Statechart.ysc


+ 0 - 5
microwave/YAKINDU_WORKSPACE/60_Correction1/src/yakindu/__init__.py

@@ -1,5 +0,0 @@
-"""
-
-Empty file that initializes the package it is contained in.
-
-"""

+ 0 - 48
microwave/YAKINDU_WORKSPACE/60_Correction1/src/yakindu/rx.py

@@ -1,48 +0,0 @@
-"""Implementation for Observer and Observables used for out events.
-Generated by itemis CREATE code generator.
-"""
-
-
-class Observer():
-	"""Observer implementation.
-	"""
-
-	def next(self, value=None):
-		"""Abstract next method, which must be implemented."""
-		raise NotImplementedError('user must define next() to use this base class')
-
-
-class Observable():
-	"""Observable implementation.
-	"""
-
-	def __init__(self):
-		self.observers = []
-
-	def next(self, value=None):
-		"""Calls next function from every observer.
-		"""
-		for observer in self.observers:
-			if observer is not None:
-				if value is None:
-					observer.next()
-				else:
-					observer.next(value)
-
-	def subscribe(self, observer):
-		"""Subscribe on specified observer.
-		"""
-		if observer is not None:
-			self.observers.append(observer)
-			return True
-		return False
-
-	def unsubscribe(self, observer):
-		"""Unsubscribe from specified observer.
-		"""
-		if observer is None:
-			return False
-		if observer in self.observers:
-			self.observers.remove(observer)
-			return True
-		return False

+ 0 - 784
microwave/YAKINDU_WORKSPACE/60_Correction1/srcgen/statechart.py

@@ -1,784 +0,0 @@
-"""Implementation of statechart statechart.
-Generated by itemis CREATE code generator.
-"""
-
-import queue
-import sys, os
-sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../src')))
-from yakindu.rx import Observable
-
-class Statechart:
-	"""Implementation of the state machine Statechart.
-	"""
-
-	class State:
-		""" State Enum
-		"""
-		(
-			main_region_child_lockable,
-			main_region_child_lockable_r1locked,
-			main_region_child_lockable_r1orthogonal_state,
-			main_region_child_lockable_r1orthogonal_state_r1door_open,
-			main_region_child_lockable_r1orthogonal_state_r1door_closed,
-			main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on,
-			main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a,
-			main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off,
-			main_region_child_lockable_r1orthogonal_state_r2time_control,
-			main_region_child_lockable_r2detect_clicks,
-			null_state
-		) = range(11)
-	
-	
-	def __init__(self):
-		""" Declares all necessary variables including list of states, histories etc. 
-		"""
-		
-		self.start_pressed = None
-		self.stop_pressed = None
-		self.increase_time_pressed = None
-		self.door_opened = None
-		self.door_closed = None
-		self.turn_magnetron_on = None
-		self.turn_magnetron_on_observable = Observable()
-		self.turn_magnetron_off = None
-		self.turn_magnetron_off_observable = Observable()
-		self.set_displayed_time = None
-		self.set_displayed_time_value = None
-		self.set_displayed_time_observable = Observable()
-		self.ring_bell = None
-		self.ring_bell_observable = Observable()
-		
-		self.__internal_event_queue = queue.Queue()
-		self.in_event_queue = queue.Queue()
-		self.__remaining_time = None
-		self.__clicks = None
-		self.lock_unlock = None
-		
-		# enumeration of all states:
-		self.__State = Statechart.State
-		self.__state_conf_vector_changed = None
-		self.__state_vector = [None] * 3
-		for __state_index in range(3):
-			self.__state_vector[__state_index] = self.State.null_state
-		
-		# for timed statechart:
-		self.timer_service = None
-		self.__time_events = [None] * 2
-		
-		# history vector:
-		self.__history_vector = [None] * 1
-		for __history_index in range(1):
-			self.__history_vector[__history_index] = self.State.null_state
-		
-		# initializations:
-		self.__remaining_time = 0
-		self.__clicks = 0
-		self.__is_executing = False
-		self.__state_conf_vector_position = None
-	
-	def is_active(self):
-		"""Checks if the state machine is active.
-		"""
-		return self.__state_vector[0] is not self.__State.null_state or self.__state_vector[1] is not self.__State.null_state or self.__state_vector[2] is not self.__State.null_state
-	
-	def is_final(self):
-		"""Checks if the statemachine is final.
-		Always returns 'false' since this state machine can never become final.
-		"""
-		return False
-			
-	def is_state_active(self, state):
-		"""Checks if the state is currently active.
-		"""
-		s = state
-		if s == self.__State.main_region_child_lockable:
-			return (self.__state_vector[0] >= self.__State.main_region_child_lockable)\
-				and (self.__state_vector[0] <= self.__State.main_region_child_lockable_r2detect_clicks)
-		if s == self.__State.main_region_child_lockable_r1locked:
-			return self.__state_vector[0] == self.__State.main_region_child_lockable_r1locked
-		if s == self.__State.main_region_child_lockable_r1orthogonal_state:
-			return (self.__state_vector[0] >= self.__State.main_region_child_lockable_r1orthogonal_state)\
-				and (self.__state_vector[0] <= self.__State.main_region_child_lockable_r1orthogonal_state_r2time_control)
-		if s == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_open:
-			return self.__state_vector[0] == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_open
-		if s == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed:
-			return (self.__state_vector[0] >= self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed)\
-				and (self.__state_vector[0] <= self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off)
-		if s == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on:
-			return (self.__state_vector[0] >= self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on)\
-				and (self.__state_vector[0] <= self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a)
-		if s == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a:
-			return self.__state_vector[0] == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a
-		if s == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off:
-			return self.__state_vector[0] == self.__State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off
-		if s == self.__State.main_region_child_lockable_r1orthogonal_state_r2time_control:
-			return self.__state_vector[1] == self.__State.main_region_child_lockable_r1orthogonal_state_r2time_control
-		if s == self.__State.main_region_child_lockable_r2detect_clicks:
-			return self.__state_vector[2] == self.__State.main_region_child_lockable_r2detect_clicks
-		return False
-		
-	def time_elapsed(self, event_id):
-		"""Add time events to in event queue
-		"""
-		if event_id in range(2):
-			self.in_event_queue.put(lambda: self.raise_time_event(event_id))
-			self.run_cycle()
-	
-	def raise_time_event(self, event_id):
-		"""Raise timed events using the event_id.
-		"""
-		self.__time_events[event_id] = True
-	
-	def __execute_queued_event(self, func):
-		func()
-	
-	def __get_next_event(self):
-		if not self.__internal_event_queue.empty():
-			return self.__internal_event_queue.get()
-		if not self.in_event_queue.empty():
-			return self.in_event_queue.get()
-		return None
-	
-	
-	def raise_lock_unlock(self):
-		"""Raise method for event lock_unlock.
-		"""
-		self.__internal_event_queue.put(self.__raise_lock_unlock_call)
-	
-	def __raise_lock_unlock_call(self):
-		"""Raise callback for event lock_unlock.
-		"""
-		self.lock_unlock = True
-	
-	def raise_start_pressed(self):
-		"""Raise method for event start_pressed.
-		"""
-		self.in_event_queue.put(self.__raise_start_pressed_call)
-		self.run_cycle()
-	
-	def __raise_start_pressed_call(self):
-		"""Raise callback for event start_pressed.
-		"""
-		self.start_pressed = True
-	
-	def raise_stop_pressed(self):
-		"""Raise method for event stop_pressed.
-		"""
-		self.in_event_queue.put(self.__raise_stop_pressed_call)
-		self.run_cycle()
-	
-	def __raise_stop_pressed_call(self):
-		"""Raise callback for event stop_pressed.
-		"""
-		self.stop_pressed = True
-	
-	def raise_increase_time_pressed(self):
-		"""Raise method for event increase_time_pressed.
-		"""
-		self.in_event_queue.put(self.__raise_increase_time_pressed_call)
-		self.run_cycle()
-	
-	def __raise_increase_time_pressed_call(self):
-		"""Raise callback for event increase_time_pressed.
-		"""
-		self.increase_time_pressed = True
-	
-	def raise_door_opened(self):
-		"""Raise method for event door_opened.
-		"""
-		self.in_event_queue.put(self.__raise_door_opened_call)
-		self.run_cycle()
-	
-	def __raise_door_opened_call(self):
-		"""Raise callback for event door_opened.
-		"""
-		self.door_opened = True
-	
-	def raise_door_closed(self):
-		"""Raise method for event door_closed.
-		"""
-		self.in_event_queue.put(self.__raise_door_closed_call)
-		self.run_cycle()
-	
-	def __raise_door_closed_call(self):
-		"""Raise callback for event door_closed.
-		"""
-		self.door_closed = True
-	
-	def __effect_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_tr1(self):
-		""".
-		"""
-		self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
-		self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_default()
-		
-	def __entry_action_main_region_child_lockable_r1_locked(self):
-		"""Entry action for state 'Locked'..
-		"""
-		self.set_displayed_time_observable.next(9999)
-		
-	def __entry_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on(self):
-		"""Entry action for state 'MagnetronOn'..
-		"""
-		self.turn_magnetron_on_observable.next()
-		
-	def __entry_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a(self):
-		"""Entry action for state 'A'..
-		"""
-		self.timer_service.set_timer(self, 0, (1 * 1000), False)
-		
-	def __entry_action_main_region_child_lockable_r2_detect_clicks(self):
-		"""Entry action for state 'DetectClicks'..
-		"""
-		self.timer_service.set_timer(self, 1, 500, False)
-		
-	def __exit_action_main_region_child_lockable_r1_locked(self):
-		"""Exit action for state 'Locked'..
-		"""
-		self.set_displayed_time_observable.next(self.__remaining_time)
-		
-	def __exit_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on(self):
-		"""Exit action for state 'MagnetronOn'..
-		"""
-		self.turn_magnetron_off_observable.next()
-		
-	def __exit_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a(self):
-		"""Exit action for state 'A'..
-		"""
-		self.timer_service.unset_timer(self, 0)
-		
-	def __exit_action_main_region_child_lockable_r2_detect_clicks(self):
-		"""Exit action for state 'DetectClicks'..
-		"""
-		self.timer_service.unset_timer(self, 1)
-		
-	def __enter_sequence_main_region_child_lockable_default(self):
-		"""'default' enter sequence for state ChildLockable.
-		"""
-		self.__enter_sequence_main_region_child_lockable_r1_default()
-		self.__enter_sequence_main_region_child_lockable_r2_default()
-		
-	def __enter_sequence_main_region_child_lockable_r1_locked_default(self):
-		"""'default' enter sequence for state Locked.
-		"""
-		self.__entry_action_main_region_child_lockable_r1_locked()
-		self.__state_vector[0] = self.State.main_region_child_lockable_r1locked
-		self.__state_conf_vector_position = 0
-		self.__state_conf_vector_changed = True
-		
-	def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_default(self):
-		"""'default' enter sequence for state OrthogonalState.
-		"""
-		self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_default()
-		self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r2_default()
-		
-	def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_open_default(self):
-		"""'default' enter sequence for state DoorOpen.
-		"""
-		self.__state_vector[0] = self.State.main_region_child_lockable_r1orthogonal_state_r1door_open
-		self.__state_conf_vector_position = 0
-		self.__state_conf_vector_changed = True
-		
-	def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_default(self):
-		"""'default' enter sequence for state DoorClosed.
-		"""
-		self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_default()
-		
-	def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_default(self):
-		"""'default' enter sequence for state MagnetronOn.
-		"""
-		self.__entry_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
-		self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_default()
-		self.__history_vector[0] = self.__state_vector[0]
-		
-	def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a_default(self):
-		"""'default' enter sequence for state A.
-		"""
-		self.__entry_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a()
-		self.__state_vector[0] = self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a
-		self.__state_conf_vector_position = 0
-		self.__state_conf_vector_changed = True
-		
-	def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_default(self):
-		"""'default' enter sequence for state MagnetronOff.
-		"""
-		self.__state_vector[0] = self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off
-		self.__state_conf_vector_position = 0
-		self.__state_conf_vector_changed = True
-		self.__history_vector[0] = self.__state_vector[0]
-		
-	def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r2_time_control_default(self):
-		"""'default' enter sequence for state TimeControl.
-		"""
-		self.__state_vector[1] = self.State.main_region_child_lockable_r1orthogonal_state_r2time_control
-		self.__state_conf_vector_position = 1
-		self.__state_conf_vector_changed = True
-		
-	def __enter_sequence_main_region_child_lockable_r2_detect_clicks_default(self):
-		"""'default' enter sequence for state DetectClicks.
-		"""
-		self.__entry_action_main_region_child_lockable_r2_detect_clicks()
-		self.__state_vector[2] = self.State.main_region_child_lockable_r2detect_clicks
-		self.__state_conf_vector_position = 2
-		self.__state_conf_vector_changed = True
-		
-	def __enter_sequence_main_region_default(self):
-		"""'default' enter sequence for region main region.
-		"""
-		self.__react_main_region__entry_default()
-		
-	def __enter_sequence_main_region_child_lockable_r1_default(self):
-		"""'default' enter sequence for region r1.
-		"""
-		self.__react_main_region_child_lockable_r1__entry_default()
-		
-	def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_default(self):
-		"""'default' enter sequence for region r1.
-		"""
-		self.__react_main_region_child_lockable_r1_orthogonal_state_r1__entry_default()
-		
-	def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_default(self):
-		"""'default' enter sequence for region r1.
-		"""
-		self.__react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1__entry_default()
-		
-	def __shallow_enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1(self):
-		"""shallow enterSequence with history in child r1.
-		"""
-		state = self.__history_vector[0]
-		if state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a:
-			self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_default()
-		elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off:
-			self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_default()
-		
-	def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_default(self):
-		"""'default' enter sequence for region r1.
-		"""
-		self.__react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1__entry_default()
-		
-	def __enter_sequence_main_region_child_lockable_r1_orthogonal_state_r2_default(self):
-		"""'default' enter sequence for region r2.
-		"""
-		self.__react_main_region_child_lockable_r1_orthogonal_state_r2__entry_default()
-		
-	def __enter_sequence_main_region_child_lockable_r2_default(self):
-		"""'default' enter sequence for region r2.
-		"""
-		self.__react_main_region_child_lockable_r2__entry_default()
-		
-	def __exit_sequence_main_region_child_lockable_r1_locked(self):
-		"""Default exit sequence for state Locked.
-		"""
-		self.__state_vector[0] = self.State.null_state
-		self.__state_conf_vector_position = 0
-		self.__exit_action_main_region_child_lockable_r1_locked()
-		
-	def __exit_sequence_main_region_child_lockable_r1_orthogonal_state(self):
-		"""Default exit sequence for state OrthogonalState.
-		"""
-		self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1()
-		self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r2()
-		
-	def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_open(self):
-		"""Default exit sequence for state DoorOpen.
-		"""
-		self.__state_vector[0] = self.State.null_state
-		self.__state_conf_vector_position = 0
-		
-	def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed(self):
-		"""Default exit sequence for state DoorClosed.
-		"""
-		self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1()
-		
-	def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on(self):
-		"""Default exit sequence for state MagnetronOn.
-		"""
-		self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1()
-		self.__exit_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
-		
-	def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a(self):
-		"""Default exit sequence for state A.
-		"""
-		self.__state_vector[0] = self.State.null_state
-		self.__state_conf_vector_position = 0
-		self.__exit_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a()
-		
-	def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off(self):
-		"""Default exit sequence for state MagnetronOff.
-		"""
-		self.__state_vector[0] = self.State.null_state
-		self.__state_conf_vector_position = 0
-		
-	def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r2_time_control(self):
-		"""Default exit sequence for state TimeControl.
-		"""
-		self.__state_vector[1] = self.State.null_state
-		self.__state_conf_vector_position = 1
-		
-	def __exit_sequence_main_region_child_lockable_r2_detect_clicks(self):
-		"""Default exit sequence for state DetectClicks.
-		"""
-		self.__state_vector[2] = self.State.null_state
-		self.__state_conf_vector_position = 2
-		self.__exit_action_main_region_child_lockable_r2_detect_clicks()
-		
-	def __exit_sequence_main_region(self):
-		"""Default exit sequence for region main region.
-		"""
-		state = self.__state_vector[0]
-		if state == self.State.main_region_child_lockable_r1locked:
-			self.__exit_sequence_main_region_child_lockable_r1_locked()
-		elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_open:
-			self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_open()
-		elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a:
-			self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a()
-			self.__exit_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
-		elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off:
-			self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off()
-		state = self.__state_vector[1]
-		if state == self.State.main_region_child_lockable_r1orthogonal_state_r2time_control:
-			self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r2_time_control()
-		state = self.__state_vector[2]
-		if state == self.State.main_region_child_lockable_r2detect_clicks:
-			self.__exit_sequence_main_region_child_lockable_r2_detect_clicks()
-		
-	def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1(self):
-		"""Default exit sequence for region r1.
-		"""
-		state = self.__state_vector[0]
-		if state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_open:
-			self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_open()
-		elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a:
-			self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a()
-			self.__exit_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
-		elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off:
-			self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off()
-		
-	def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1(self):
-		"""Default exit sequence for region r1.
-		"""
-		state = self.__state_vector[0]
-		if state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a:
-			self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a()
-			self.__exit_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
-		elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off:
-			self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off()
-		
-	def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1(self):
-		"""Default exit sequence for region r1.
-		"""
-		state = self.__state_vector[0]
-		if state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a:
-			self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a()
-		
-	def __exit_sequence_main_region_child_lockable_r1_orthogonal_state_r2(self):
-		"""Default exit sequence for region r2.
-		"""
-		state = self.__state_vector[1]
-		if state == self.State.main_region_child_lockable_r1orthogonal_state_r2time_control:
-			self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r2_time_control()
-		
-	def __react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1__choice_0(self):
-		"""The reactions of state null..
-		"""
-		if self.__remaining_time == 0:
-			self.__entry_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
-			self.__react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_done()
-			self.__history_vector[0] = self.__state_vector[0]
-		else:
-			self.__entry_action_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
-			self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a_default()
-			self.__history_vector[0] = self.__state_vector[0]
-		
-	def __react_main_region_child_lockable_r2__choice_0(self):
-		"""The reactions of state null..
-		"""
-		if self.__clicks == 3:
-			self.raise_lock_unlock()
-			self.__enter_sequence_main_region_child_lockable_r2_detect_clicks_default()
-		else:
-			self.__enter_sequence_main_region_child_lockable_r2_detect_clicks_default()
-		
-	def __react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1__entry_default(self):
-		"""Default react sequence for initial entry .
-		"""
-		self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a_default()
-		
-	def __react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1__entry_default(self):
-		"""Default react sequence for initial entry .
-		"""
-		self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_default()
-		
-	def __react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_h(self):
-		"""Default react sequence for shallow history entry h.
-		"""
-		#Enter the region with shallow history
-		if self.__history_vector[0] is not self.State.null_state:
-			self.__shallow_enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1()
-		else:
-			self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_default()
-		
-	def __react_main_region_child_lockable_r1_orthogonal_state_r1__entry_default(self):
-		"""Default react sequence for initial entry .
-		"""
-		self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_default()
-		
-	def __react_main_region_child_lockable_r1_orthogonal_state_r2__entry_default(self):
-		"""Default react sequence for initial entry .
-		"""
-		self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r2_time_control_default()
-		
-	def __react_main_region_child_lockable_r1__entry_default(self):
-		"""Default react sequence for initial entry .
-		"""
-		self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_default()
-		
-	def __react_main_region_child_lockable_r2__entry_default(self):
-		"""Default react sequence for initial entry .
-		"""
-		self.__enter_sequence_main_region_child_lockable_r2_detect_clicks_default()
-		
-	def __react_main_region__entry_default(self):
-		"""Default react sequence for initial entry .
-		"""
-		self.__enter_sequence_main_region_child_lockable_default()
-		
-	def __react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_done(self):
-		"""The reactions of exit done..
-		"""
-		self.__effect_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_tr1()
-		
-	def __react(self, transitioned_before):
-		"""Implementation of __react function.
-		"""
-		return transitioned_before
-	
-	
-	def __main_region_child_lockable_react(self, transitioned_before):
-		"""Implementation of __main_region_child_lockable_react function.
-		"""
-		return self.__react(transitioned_before)
-	
-	
-	def __main_region_child_lockable_r1_locked_react(self, transitioned_before):
-		"""Implementation of __main_region_child_lockable_r1_locked_react function.
-		"""
-		transitioned_after = self.__main_region_child_lockable_react(transitioned_before)
-		if transitioned_after < 0:
-			if self.lock_unlock:
-				self.__exit_sequence_main_region_child_lockable_r1_locked()
-				self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_default()
-				transitioned_after = 0
-		return transitioned_after
-	
-	
-	def __main_region_child_lockable_r1_orthogonal_state_react(self, transitioned_before):
-		"""Implementation of __main_region_child_lockable_r1_orthogonal_state_react function.
-		"""
-		transitioned_after = self.__main_region_child_lockable_react(transitioned_before)
-		if transitioned_after < 0:
-			if self.lock_unlock:
-				self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state()
-				self.__enter_sequence_main_region_child_lockable_r1_locked_default()
-				transitioned_after = 1
-		return transitioned_after
-	
-	
-	def __main_region_child_lockable_r1_orthogonal_state_r1_door_open_react(self, transitioned_before):
-		"""Implementation of __main_region_child_lockable_r1_orthogonal_state_r1_door_open_react function.
-		"""
-		transitioned_after = self.__main_region_child_lockable_r1_orthogonal_state_react(transitioned_before)
-		if transitioned_after < 0:
-			if self.door_closed:
-				self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_open()
-				self.__react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_h()
-				transitioned_after = 0
-		return transitioned_after
-	
-	
-	def __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_react(self, transitioned_before):
-		"""Implementation of __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_react function.
-		"""
-		transitioned_after = self.__main_region_child_lockable_r1_orthogonal_state_react(transitioned_before)
-		if transitioned_after < 0:
-			if self.door_opened:
-				self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed()
-				self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_open_default()
-				transitioned_after = 0
-		return transitioned_after
-	
-	
-	def __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_react(self, transitioned_before):
-		"""Implementation of __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_react function.
-		"""
-		transitioned_after = self.__main_region_child_lockable_r1_orthogonal_state_r1_door_closed_react(transitioned_before)
-		if transitioned_after < 0:
-			if self.stop_pressed:
-				self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
-				self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_default()
-				transitioned_after = 0
-		return transitioned_after
-	
-	
-	def __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a_react(self, transitioned_before):
-		"""Implementation of __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a_react function.
-		"""
-		transitioned_after = self.__main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_react(transitioned_before)
-		if transitioned_after < 0:
-			if self.__time_events[0]:
-				self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on()
-				self.__remaining_time = self.__remaining_time - 1
-				self.set_displayed_time_observable.next(self.__remaining_time)
-				self.__time_events[0] = False
-				self.__react_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1__choice_0()
-				transitioned_after = 0
-		return transitioned_after
-	
-	
-	def __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_react(self, transitioned_before):
-		"""Implementation of __main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_react function.
-		"""
-		transitioned_after = self.__main_region_child_lockable_r1_orthogonal_state_r1_door_closed_react(transitioned_before)
-		if transitioned_after < 0:
-			if self.start_pressed:
-				self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off()
-				self.__remaining_time = 10 if self.__remaining_time == 0 else self.__remaining_time
-				self.set_displayed_time_observable.next(self.__remaining_time)
-				self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_default()
-				transitioned_after = 0
-			elif self.stop_pressed:
-				self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off()
-				self.__remaining_time = 0
-				self.set_displayed_time_observable.next(0)
-				self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_default()
-				transitioned_after = 0
-		return transitioned_after
-	
-	
-	def __main_region_child_lockable_r1_orthogonal_state_r2_time_control_react(self, transitioned_before):
-		"""Implementation of __main_region_child_lockable_r1_orthogonal_state_r2_time_control_react function.
-		"""
-		transitioned_after = transitioned_before
-		if transitioned_after < 1:
-			if self.increase_time_pressed:
-				self.__exit_sequence_main_region_child_lockable_r1_orthogonal_state_r2_time_control()
-				self.__remaining_time = self.__remaining_time + 10
-				self.set_displayed_time_observable.next(self.__remaining_time)
-				self.__enter_sequence_main_region_child_lockable_r1_orthogonal_state_r2_time_control_default()
-				transitioned_after = 1
-		return transitioned_after
-	
-	
-	def __main_region_child_lockable_r2_detect_clicks_react(self, transitioned_before):
-		"""Implementation of __main_region_child_lockable_r2_detect_clicks_react function.
-		"""
-		transitioned_after = transitioned_before
-		if transitioned_after < 2:
-			if self.stop_pressed:
-				self.__exit_sequence_main_region_child_lockable_r2_detect_clicks()
-				self.__clicks = self.__clicks + 1
-				self.__react_main_region_child_lockable_r2__choice_0()
-				transitioned_after = 2
-			elif self.__time_events[1]:
-				self.__exit_sequence_main_region_child_lockable_r2_detect_clicks()
-				self.__clicks = 0
-				self.__time_events[1] = False
-				self.__enter_sequence_main_region_child_lockable_r2_detect_clicks_default()
-				transitioned_after = 2
-		return transitioned_after
-	
-	
-	def __clear_in_events(self):
-		"""Implementation of __clear_in_events function.
-		"""
-		self.start_pressed = False
-		self.stop_pressed = False
-		self.increase_time_pressed = False
-		self.door_opened = False
-		self.door_closed = False
-		self.__time_events[0] = False
-		self.__time_events[1] = False
-	
-	
-	def __clear_internal_events(self):
-		"""Implementation of __clear_internal_events function.
-		"""
-		self.lock_unlock = False
-	
-	
-	def __micro_step(self):
-		"""Implementation of __micro_step function.
-		"""
-		transitioned = -1
-		self.__state_conf_vector_position = 0
-		state = self.__state_vector[0]
-		if state == self.State.main_region_child_lockable_r1locked:
-			transitioned = self.__main_region_child_lockable_r1_locked_react(transitioned)
-		elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_open:
-			transitioned = self.__main_region_child_lockable_r1_orthogonal_state_r1_door_open_react(transitioned)
-		elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_on_r1a:
-			transitioned = self.__main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_on_r1_a_react(transitioned)
-		elif state == self.State.main_region_child_lockable_r1orthogonal_state_r1door_closed_r1magnetron_off:
-			transitioned = self.__main_region_child_lockable_r1_orthogonal_state_r1_door_closed_r1_magnetron_off_react(transitioned)
-		if self.__state_conf_vector_position < 1:
-			state = self.__state_vector[1]
-			if state == self.State.main_region_child_lockable_r1orthogonal_state_r2time_control:
-				transitioned = self.__main_region_child_lockable_r1_orthogonal_state_r2_time_control_react(transitioned)
-		if self.__state_conf_vector_position < 2:
-			state = self.__state_vector[2]
-			if state == self.State.main_region_child_lockable_r2detect_clicks:
-				self.__main_region_child_lockable_r2_detect_clicks_react(transitioned)
-	
-	
-	def run_cycle(self):
-		"""Implementation of run_cycle function.
-		"""
-		if self.timer_service is None:
-			raise ValueError('Timer service must be set.')
-		
-		if self.__is_executing:
-			return
-		self.__is_executing = True
-		next_event = self.__get_next_event()
-		if next_event is not None:
-			self.__execute_queued_event(next_event)
-		condition_0 = True
-		while condition_0:
-			self.__micro_step()
-			self.__clear_in_events()
-			self.__clear_internal_events()
-			condition_0 = False
-			next_event = self.__get_next_event()
-			if next_event is not None:
-				self.__execute_queued_event(next_event)
-				condition_0 = True
-		self.__is_executing = False
-	
-	
-	def enter(self):
-		"""Implementation of enter function.
-		"""
-		if self.timer_service is None:
-			raise ValueError('Timer service must be set.')
-		
-		if self.__is_executing:
-			return
-		self.__is_executing = True
-		self.__enter_sequence_main_region_default()
-		self.__is_executing = False
-	
-	
-	def exit(self):
-		"""Implementation of exit function.
-		"""
-		if self.__is_executing:
-			return
-		self.__is_executing = True
-		self.__exit_sequence_main_region()
-		self.__is_executing = False
-	
-	
-	def trigger_without_event(self):
-		"""Implementation of triggerWithoutEvent function.
-		"""
-		self.run_cycle()
-	

+ 23 - 0
microwave/checklist.txt

@@ -0,0 +1,23 @@
+When explaining Statecharts to students, must NOT forget:
+
+  - run generated code for final model
+
+  - introduce SuS  : what are the input/output events
+
+  - show empty model in YAKINDU
+
+  - show on/off model
+
+      - debug in YAKINDU
+
+      - generate code
+
+      - show generated code
+
+      - run the generated code
+
+  - continue with the examples
+
+  - when showing the door-example, run it interactively and turn it into a test case
+
+  - introduce assignment

+ 4 - 1
microwave/test.py

@@ -15,13 +15,16 @@ SCENARIOS = [
         (4262358465, "door_opened", None),
     ],
     "output_trace": [
+        # start button was pressed, setting timer to 10 and starting the microwave
         (1739451957, "set_displayed_time", 10),
         (1739451957, "turn_magnetron_on", None),
+        # timer counts down:
         (2739451957, "set_displayed_time", 9),
         (3739451957, "set_displayed_time", 8),
+        # door is opened:
         (4262358465, "turn_magnetron_off", None),
     ],
-}
+},
 ]
 
 IDEMPOTENT = [