docs: def execute(self, state, inputs=None, outputs=None, backward_execution=False):
          """Execute the user 'execute' function specified in the script
  
          :param ExecutionState state: the state belonging to the execute function, refers to 'self'
          :param dict inputs: the input data of the script
          :param dict outputs: the output data of the script
          :param bool backward_execution: Flag whether to run the script in backwards mode
          :return: Return value of the execute script
          :rtype: str | int
          """
          if not outputs:
              outputs = {}
          if not inputs:
              inputs = {}
          if backward_execution:
              if hasattr(self._compiled_module, "backward_execute"):
                  return self._compiled_module.backward_execute(
                      state, inputs, outputs, rafcon.core.singleton.global_variable_manager
                  )
              else:
                  logger.debug("No backward execution method found for state %s" % state.name)
                  return None
          else:
              return self._compiled_module.execute(state, inputs, outputs,
                                                   rafcon.core.singleton.global_variable_manager)