Explorar o código

Add additional exception handling cases

Yentl Van Tendeloo %!s(int64=7) %!d(string=hai) anos
pai
achega
a126da0ebf
Modificáronse 3 ficheiros con 222 adicións e 6 borrados
  1. 27 0
      classes/window/activity.xml
  2. 74 4
      classes/window/attribute_editor.xml
  3. 121 2
      frontend.py

+ 27 - 0
classes/window/activity.xml

@@ -256,10 +256,28 @@
                                 self.subprocess = subprocess.Popen([sys.executable, sys.argv[0], "--address", data['mv_address'], "--username", data['username'], "--password", data['password'], "--taskname", taskname, "--spawn", "./run_chatwindow.py"])
                             </script>
                         </transition>
+
+                        <transition event="mv_exception" target="../../closing">
+                            <parameter name="ID"/>
+                            <parameter name="exception_name"/>
+                            <parameter name="description"/>
+                            <raise event="errorlog_log" scope="broad">
+                                <parameter expr="'Could not execute activity: %s -- %s' % (exception_name, description)"/>
+                            </raise>
+                        </transition>
                     </state>
 
                     <state id="processing">
                         <transition event="mv_response" target="../alter_context_result"/>
+
+                        <transition event="mv_exception" target="../../closing">
+                            <parameter name="ID"/>
+                            <parameter name="exception_name"/>
+                            <parameter name="description"/>
+                            <raise event="errorlog_log" scope="broad">
+                                <parameter expr="'Error during execution of activity: %s -- %s' % (exception_name, description)"/>
+                            </raise>
+                        </transition>
                     </state>
 
                     <state id="alter_context_result" initial="check_next">
@@ -354,6 +372,15 @@
                                 self.output_signature_iter = dict(self.output_signature)
                             </script>
                         </transition>
+
+                        <transition event="mv_exception" target="../../ready">
+                            <parameter name="ID"/>
+                            <parameter name="exception_name"/>
+                            <parameter name="description"/>
+                            <raise event="errorlog_log" scope="broad">
+                                <parameter expr="'Could not read signature of activity: %s -- %s' % (exception_name, description)"/>
+                            </raise>
+                        </transition>
                     </state>
 
                     <state id="add_input" initial="check_next">

+ 74 - 4
classes/window/attribute_editor.xml

@@ -62,11 +62,18 @@
                     <transition event="mv_response" target="../resolve_name_of_attr_type">
                         <parameter name="result"/>
                         <script>
-                            print("Resolving " + str(self.allowed_types))
                             self.allowed_types = list(result)
                             self.resolved_allowed_types = {}
                         </script>
                     </transition>
+                    <transition event="mv_exception" target="../../closing">
+                        <parameter name="ID"/>
+                        <parameter name="exception_name"/>
+                        <parameter name="description"/>
+                        <raise event="errorlog_log" scope="broad">
+                            <parameter expr="'Could not fetch all attribute instances: %s -- %s' % (exception_name, description)"/>
+                        </raise>
+                    </transition>
                 </state>
 
                 <state id="resolve_name_of_attr_type" initial="request">
@@ -94,6 +101,14 @@
                                 self.resolved_allowed_types[result["name"]] = self.allowed_types.pop(0)
                             </script>
                         </transition>
+                        <transition event="mv_exception" target="../../../closing">
+                            <parameter name="ID"/>
+                            <parameter name="exception_name"/>
+                            <parameter name="description"/>
+                            <raise event="errorlog_log" scope="broad">
+                                <parameter expr="'Could not read name of attributes: %s -- %s' % (exception_name, description)"/>
+                            </raise>
+                        </transition>
                     </state>
                 </state>
 
@@ -120,6 +135,14 @@
                             self.counter = 0
                         </script>
                     </transition>
+                    <transition event="mv_exception" target="../../closing">
+                        <parameter name="ID"/>
+                        <parameter name="exception_name"/>
+                        <parameter name="description"/>
+                        <raise event="errorlog_log" scope="broad">
+                            <parameter expr="'Could not read attributes for element: %s -- %s' % (exception_name, description)"/>
+                        </raise>
+                    </transition>
                 </state>
 
                 <state id="create_entries" initial="check_list">
@@ -324,9 +347,8 @@
                 <transition event="button_pressed" cond="event_name == 'create' and self.allowed_types" target="../create_new_entry">
                     <parameter name="event_name"/>
                     <script>
-                        self.attr_modify = {'name': self.get_unique_attr_name(), 'type': self.reverse_attr_names[next(iter(self.allowed_types))], 'optional': True}
-                    </script>
-                </transition>
+                        gself.attr_modify = {'name': self.get_unique_attr_name(), 'type': self.reverse_attr_names[next(iter(self.allowed_types))], 'optional': True2
+                    </script> </transition>
 
                 <transition event="changed_dropdown" target="../change_type">
                     <parameter name="event_name"/>
@@ -361,6 +383,14 @@
                 </onentry>
 
                 <transition event="mv_response" target="../running"/>
+                <transition event="mv_exception" target="../running">
+                    <parameter name="ID"/>
+                    <parameter name="exception_name"/>
+                    <parameter name="description"/>
+                    <raise event="errorlog_log" scope="broad">
+                        <parameter expr="'Could not update attribute type for element: %s -- %s' % (exception_name, description)"/>
+                    </raise>
+                </transition>
             </state>
 
             <state id="change_name" initial="waiting">
@@ -427,6 +457,14 @@
                             del self.associations_delete[self.parameter[0]]
                         </script>
                     </transition>
+                    <transition event="mv_exception" target="../../running">
+                        <parameter name="ID"/>
+                        <parameter name="exception_name"/>
+                        <parameter name="description"/>
+                        <raise event="errorlog_log" scope="broad">
+                            <parameter expr="'Could not update attribute name for element: %s -- %s' % (exception_name, description)"/>
+                        </raise>
+                    </transition>
                 </state>
             </state>
 
@@ -461,6 +499,14 @@
                         self.associations_delete = {}
                     </script>
                 </transition>
+                <transition event="mv_exception" target="../running">
+                    <parameter name="ID"/>
+                    <parameter name="exception_name"/>
+                    <parameter name="description"/>
+                    <raise event="errorlog_log" scope="broad">
+                        <parameter expr="'Could not register a new attribute for element: %s -- %s' % (exception_name, description)"/>
+                    </raise>
+                </transition>
             </state>
 
             <state id="make_optional">
@@ -474,6 +520,14 @@
                 <transition event="mv_response" target="../running">
                     <raise event="activate" scope="narrow" target="self.associations_optional[self.parameter]"/>
                 </transition>
+                <transition event="mv_exception" target="../running">
+                    <parameter name="ID"/>
+                    <parameter name="exception_name"/>
+                    <parameter name="description"/>
+                    <raise event="errorlog_log" scope="broad">
+                        <parameter expr="'Could not make attribute optional: %s -- %s' % (exception_name, description)"/>
+                    </raise>
+                </transition>
             </state>
 
             <state id="make_mandatory">
@@ -487,6 +541,14 @@
                 <transition event="mv_response" target="../running">
                     <raise event="deactivate" scope="narrow" target="self.associations_optional[self.parameter]"/>
                 </transition>
+                <transition event="mv_exception" target="../running">
+                    <parameter name="ID"/>
+                    <parameter name="exception_name"/>
+                    <parameter name="description"/>
+                    <raise event="errorlog_log" scope="broad">
+                        <parameter expr="'Could not make attribute mandatory: %s -- %s' % (exception_name, description)"/>
+                    </raise>
+                </transition>
             </state>
 
             <state id="delete_entry">
@@ -517,6 +579,14 @@
                         del self.associations_delete[self.parameter]
                     </script>
                 </transition>
+                <transition event="mv_exception" target="../running">
+                    <parameter name="ID"/>
+                    <parameter name="exception_name"/>
+                    <parameter name="description"/>
+                    <raise event="errorlog_log" scope="broad">
+                        <parameter expr="'Could not delete attribute: %s -- %s' % (exception_name, description)"/>
+                    </raise>
+                </transition>
             </state>
 
             <state id="closing">

+ 121 - 2
frontend.py

@@ -4670,6 +4670,10 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         _all_init_get_attr_types_0.setAction(self._all_init_get_attr_types_0_exec)
         _all_init_get_attr_types_0.setTrigger(Event("mv_response", None))
         self.states["/all/init/get_attr_types"].addTransition(_all_init_get_attr_types_0)
+        _all_init_get_attr_types_1 = Transition(self, self.states["/all/init/get_attr_types"], [self.states["/all/closing"]])
+        _all_init_get_attr_types_1.setAction(self._all_init_get_attr_types_1_exec)
+        _all_init_get_attr_types_1.setTrigger(Event("mv_exception", None))
+        self.states["/all/init/get_attr_types"].addTransition(_all_init_get_attr_types_1)
         
         # transition /all/init/resolve_name_of_attr_type/request
         _all_init_resolve_name_of_attr_type_request_0 = Transition(self, self.states["/all/init/resolve_name_of_attr_type/request"], [self.states["/all/init/resolve_name_of_attr_type/response"]])
@@ -4688,12 +4692,20 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         _all_init_resolve_name_of_attr_type_response_0.setAction(self._all_init_resolve_name_of_attr_type_response_0_exec)
         _all_init_resolve_name_of_attr_type_response_0.setTrigger(Event("mv_response", None))
         self.states["/all/init/resolve_name_of_attr_type/response"].addTransition(_all_init_resolve_name_of_attr_type_response_0)
+        _all_init_resolve_name_of_attr_type_response_1 = Transition(self, self.states["/all/init/resolve_name_of_attr_type/response"], [self.states["/all/closing"]])
+        _all_init_resolve_name_of_attr_type_response_1.setAction(self._all_init_resolve_name_of_attr_type_response_1_exec)
+        _all_init_resolve_name_of_attr_type_response_1.setTrigger(Event("mv_exception", None))
+        self.states["/all/init/resolve_name_of_attr_type/response"].addTransition(_all_init_resolve_name_of_attr_type_response_1)
         
         # transition /all/init/get_defined_attrs
         _all_init_get_defined_attrs_0 = Transition(self, self.states["/all/init/get_defined_attrs"], [self.states["/all/init/create_entries"]])
         _all_init_get_defined_attrs_0.setAction(self._all_init_get_defined_attrs_0_exec)
         _all_init_get_defined_attrs_0.setTrigger(Event("mv_response", None))
         self.states["/all/init/get_defined_attrs"].addTransition(_all_init_get_defined_attrs_0)
+        _all_init_get_defined_attrs_1 = Transition(self, self.states["/all/init/get_defined_attrs"], [self.states["/all/closing"]])
+        _all_init_get_defined_attrs_1.setAction(self._all_init_get_defined_attrs_1_exec)
+        _all_init_get_defined_attrs_1.setTrigger(Event("mv_exception", None))
+        self.states["/all/init/get_defined_attrs"].addTransition(_all_init_get_defined_attrs_1)
         
         # transition /all/init/create_entries/check_list
         _all_init_create_entries_check_list_0 = Transition(self, self.states["/all/init/create_entries/check_list"], [self.states["/all/init/create_entries/create_entry"]])
@@ -4804,6 +4816,10 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         _all_change_type_0 = Transition(self, self.states["/all/change_type"], [self.states["/all/running"]])
         _all_change_type_0.setTrigger(Event("mv_response", None))
         self.states["/all/change_type"].addTransition(_all_change_type_0)
+        _all_change_type_1 = Transition(self, self.states["/all/change_type"], [self.states["/all/running"]])
+        _all_change_type_1.setAction(self._all_change_type_1_exec)
+        _all_change_type_1.setTrigger(Event("mv_exception", None))
+        self.states["/all/change_type"].addTransition(_all_change_type_1)
         
         # transition /all/change_name/waiting
         _all_change_name_waiting_0 = Transition(self, self.states["/all/change_name/waiting"], [self.states["/all/change_name/commit"]])
@@ -4823,30 +4839,50 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         _all_change_name_commit_1.setAction(self._all_change_name_commit_1_exec)
         _all_change_name_commit_1.setTrigger(Event("mv_response", None))
         self.states["/all/change_name/commit"].addTransition(_all_change_name_commit_1)
+        _all_change_name_commit_2 = Transition(self, self.states["/all/change_name/commit"], [self.states["/all/running"]])
+        _all_change_name_commit_2.setAction(self._all_change_name_commit_2_exec)
+        _all_change_name_commit_2.setTrigger(Event("mv_exception", None))
+        self.states["/all/change_name/commit"].addTransition(_all_change_name_commit_2)
         
         # transition /all/create_new_entry
         _all_create_new_entry_0 = Transition(self, self.states["/all/create_new_entry"], [self.states["/all/init/get_defined_attrs"]])
         _all_create_new_entry_0.setAction(self._all_create_new_entry_0_exec)
         _all_create_new_entry_0.setTrigger(Event("mv_response", None))
         self.states["/all/create_new_entry"].addTransition(_all_create_new_entry_0)
+        _all_create_new_entry_1 = Transition(self, self.states["/all/create_new_entry"], [self.states["/all/running"]])
+        _all_create_new_entry_1.setAction(self._all_create_new_entry_1_exec)
+        _all_create_new_entry_1.setTrigger(Event("mv_exception", None))
+        self.states["/all/create_new_entry"].addTransition(_all_create_new_entry_1)
         
         # transition /all/make_optional
         _all_make_optional_0 = Transition(self, self.states["/all/make_optional"], [self.states["/all/running"]])
         _all_make_optional_0.setAction(self._all_make_optional_0_exec)
         _all_make_optional_0.setTrigger(Event("mv_response", None))
         self.states["/all/make_optional"].addTransition(_all_make_optional_0)
+        _all_make_optional_1 = Transition(self, self.states["/all/make_optional"], [self.states["/all/running"]])
+        _all_make_optional_1.setAction(self._all_make_optional_1_exec)
+        _all_make_optional_1.setTrigger(Event("mv_exception", None))
+        self.states["/all/make_optional"].addTransition(_all_make_optional_1)
         
         # transition /all/make_mandatory
         _all_make_mandatory_0 = Transition(self, self.states["/all/make_mandatory"], [self.states["/all/running"]])
         _all_make_mandatory_0.setAction(self._all_make_mandatory_0_exec)
         _all_make_mandatory_0.setTrigger(Event("mv_response", None))
         self.states["/all/make_mandatory"].addTransition(_all_make_mandatory_0)
+        _all_make_mandatory_1 = Transition(self, self.states["/all/make_mandatory"], [self.states["/all/running"]])
+        _all_make_mandatory_1.setAction(self._all_make_mandatory_1_exec)
+        _all_make_mandatory_1.setTrigger(Event("mv_exception", None))
+        self.states["/all/make_mandatory"].addTransition(_all_make_mandatory_1)
         
         # transition /all/delete_entry
         _all_delete_entry_0 = Transition(self, self.states["/all/delete_entry"], [self.states["/all/running"]])
         _all_delete_entry_0.setAction(self._all_delete_entry_0_exec)
         _all_delete_entry_0.setTrigger(Event("mv_response", None))
         self.states["/all/delete_entry"].addTransition(_all_delete_entry_0)
+        _all_delete_entry_1 = Transition(self, self.states["/all/delete_entry"], [self.states["/all/running"]])
+        _all_delete_entry_1.setAction(self._all_delete_entry_1_exec)
+        _all_delete_entry_1.setTrigger(Event("mv_exception", None))
+        self.states["/all/delete_entry"].addTransition(_all_delete_entry_1)
         
         # transition /all/closing
         _all_closing_0 = Transition(self, self.states["/all/closing"], [self.states["/all/close"]])
@@ -4932,10 +4968,15 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     
     def _all_init_get_attr_types_0_exec(self, parameters):
         result = parameters[0]
-        print("Resolving " + str(self.allowed_types))
         self.allowed_types = list(result)
         self.resolved_allowed_types = {}
     
+    def _all_init_get_attr_types_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not fetch all attribute instances: %s -- %s' % (exception_name, description)])]))
+    
     def _all_init_resolve_name_of_attr_type_request_0_exec(self, parameters):
         self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("mv_request", None, ['read_attrs', [current_model, self.allowed_types[0]]])]))
     
@@ -4954,6 +4995,12 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.reverse_attr_names[result['name']] = self.allowed_types[0]
         self.resolved_allowed_types[result["name"]] = self.allowed_types.pop(0)
     
+    def _all_init_resolve_name_of_attr_type_response_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not read name of attributes: %s -- %s' % (exception_name, description)])]))
+    
     def _all_init_get_defined_attrs_0_exec(self, parameters):
         result = parameters[0]
         result_mandatory, result_optional = result
@@ -4967,6 +5014,12 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.attrs_modify = dict(self.attrs)
         self.counter = 0
     
+    def _all_init_get_defined_attrs_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not read attributes for element: %s -- %s' % (exception_name, description)])]))
+    
     def _all_init_create_entries_check_list_0_guard(self, parameters):
         return self.attrs_modify
     
@@ -5044,7 +5097,7 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     
     def _all_running_3_exec(self, parameters):
         event_name = parameters[0]
-        self.attr_modify = {'name': self.get_unique_attr_name(), 'type': self.reverse_attr_names[next(iter(self.allowed_types))], 'optional': True}
+        gself.attr_modify = {'name': self.get_unique_attr_name(), 'type': self.reverse_attr_names[next(iter(self.allowed_types))], 'optional': True2
     
     def _all_running_3_guard(self, parameters):
         event_name = parameters[0]
@@ -5067,6 +5120,12 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
     def _all_running_6_guard(self, parameters):
         return self.dirty
     
+    def _all_change_type_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not update attribute type for element: %s -- %s' % (exception_name, description)])]))
+    
     def _all_change_name_waiting_1_exec(self, parameters):
         original_name = parameters[0]
         new_name = parameters[1]
@@ -5092,6 +5151,12 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         del self.associations_optional[self.parameter[0]]
         del self.associations_delete[self.parameter[0]]
     
+    def _all_change_name_commit_2_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not update attribute name for element: %s -- %s' % (exception_name, description)])]))
+    
     def _all_create_new_entry_0_exec(self, parameters):
         self.big_step.outputEventOM(Event("delete_instance", None, [self, 'names']))
         self.big_step.outputEventOM(Event("delete_instance", None, [self, 'types']))
@@ -5103,12 +5168,30 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.associations_optional = {}
         self.associations_delete = {}
     
+    def _all_create_new_entry_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not register a new attribute for element: %s -- %s' % (exception_name, description)])]))
+    
     def _all_make_optional_0_exec(self, parameters):
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.associations_optional[self.parameter], Event("activate", None, [])]))
     
+    def _all_make_optional_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not make attribute optional: %s -- %s' % (exception_name, description)])]))
+    
     def _all_make_mandatory_0_exec(self, parameters):
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.associations_optional[self.parameter], Event("deactivate", None, [])]))
     
+    def _all_make_mandatory_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not make attribute mandatory: %s -- %s' % (exception_name, description)])]))
+    
     def _all_delete_entry_0_exec(self, parameters):
         self.big_step.outputEventOM(Event("delete_instance", None, [self, self.associations_name[self.parameter]]))
         self.big_step.outputEventOM(Event("delete_instance", None, [self, self.associations_type[self.parameter]]))
@@ -5119,6 +5202,12 @@ class AttributeEditor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         del self.associations_optional[self.parameter]
         del self.associations_delete[self.parameter]
     
+    def _all_delete_entry_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not delete attribute: %s -- %s' % (exception_name, description)])]))
+    
     def initializeStatechart(self):
         # enter default state
         self.default_targets = self.states["/all"].getEffectiveTargetStates()
@@ -8863,11 +8952,19 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         _all_all_execute_execute_0.setAction(self._all_all_execute_execute_0_exec)
         _all_all_execute_execute_0.setTrigger(Event("mv_response", None))
         self.states["/all/all/execute/execute"].addTransition(_all_all_execute_execute_0)
+        _all_all_execute_execute_1 = Transition(self, self.states["/all/all/execute/execute"], [self.states["/all/all/closing"]])
+        _all_all_execute_execute_1.setAction(self._all_all_execute_execute_1_exec)
+        _all_all_execute_execute_1.setTrigger(Event("mv_exception", None))
+        self.states["/all/all/execute/execute"].addTransition(_all_all_execute_execute_1)
         
         # transition /all/all/execute/processing
         _all_all_execute_processing_0 = Transition(self, self.states["/all/all/execute/processing"], [self.states["/all/all/execute/alter_context_result"]])
         _all_all_execute_processing_0.setTrigger(Event("mv_response", None))
         self.states["/all/all/execute/processing"].addTransition(_all_all_execute_processing_0)
+        _all_all_execute_processing_1 = Transition(self, self.states["/all/all/execute/processing"], [self.states["/all/all/closing"]])
+        _all_all_execute_processing_1.setAction(self._all_all_execute_processing_1_exec)
+        _all_all_execute_processing_1.setTrigger(Event("mv_exception", None))
+        self.states["/all/all/execute/processing"].addTransition(_all_all_execute_processing_1)
         
         # transition /all/all/execute/alter_context_result/check_next
         _all_all_execute_alter_context_result_check_next_0 = Transition(self, self.states["/all/all/execute/alter_context_result/check_next"], [self.states["/all/all/execute/alter_context_result/add"]])
@@ -8911,6 +9008,10 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         _all_all_redraw_signature_read_signature_0.setAction(self._all_all_redraw_signature_read_signature_0_exec)
         _all_all_redraw_signature_read_signature_0.setTrigger(Event("mv_response", None))
         self.states["/all/all/redraw_signature/read_signature"].addTransition(_all_all_redraw_signature_read_signature_0)
+        _all_all_redraw_signature_read_signature_1 = Transition(self, self.states["/all/all/redraw_signature/read_signature"], [self.states["/all/all/ready"]])
+        _all_all_redraw_signature_read_signature_1.setAction(self._all_all_redraw_signature_read_signature_1_exec)
+        _all_all_redraw_signature_read_signature_1.setTrigger(Event("mv_exception", None))
+        self.states["/all/all/redraw_signature/read_signature"].addTransition(_all_all_redraw_signature_read_signature_1)
         
         # transition /all/all/redraw_signature/add_input/check_next
         _all_all_redraw_signature_add_input_check_next_0 = Transition(self, self.states["/all/all/redraw_signature/add_input/check_next"], [self.states["/all/all/redraw_signature/add_input/create_label"]])
@@ -9203,6 +9304,18 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         taskname = parameters[0]
         self.subprocess = subprocess.Popen([sys.executable, sys.argv[0], "--address", data['mv_address'], "--username", data['username'], "--password", data['password'], "--taskname", taskname, "--spawn", "./run_chatwindow.py"])
     
+    def _all_all_execute_execute_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not execute activity: %s -- %s' % (exception_name, description)])]))
+    
+    def _all_all_execute_processing_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Error during execution of activity: %s -- %s' % (exception_name, description)])]))
+    
     def _all_all_execute_alter_context_result_check_next_0_guard(self, parameters):
         return self.exec_output_signature
     
@@ -9232,6 +9345,12 @@ class ActivityExecutor(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         self.input_signature_iter = dict(self.input_signature)
         self.output_signature_iter = dict(self.output_signature)
     
+    def _all_all_redraw_signature_read_signature_1_exec(self, parameters):
+        ID = parameters[0]
+        exception_name = parameters[1]
+        description = parameters[2]
+        self.big_step.outputEventOM(Event("broad_cast", None, [self, Event("errorlog_log", None, ['Could not read signature of activity: %s -- %s' % (exception_name, description)])]))
+    
     def _all_all_redraw_signature_add_input_check_next_0_exec(self, parameters):
         self.counter += 1
         self.current = self.input_signature_iter.popitem()