Execution states - MeteoraProjects/MeteoraDesigner GitHub Wiki

Internal execution states

M - Internal execution states description

M - Internal execution states core semantic

  • internal execution states describes types of execution of any considered task in the context of order of execution of the task's internal subtasks (only adjacent internal relatives) and the way how the internal subtask's completion states can influence all other tasks (that have any relations with the considered task)
  • any task must have only one internal execution state at any moment
  • considered task with any of the internal execution states doesn't have to be unique
  • any execution state can be used simultaneously with any completion state
  • any internal task of the considered task must have one of the corresponding external tasks

M - Internal execution states full description

  • serial internal execution states

    • concept - serial internal states are for task's that internal tasks must execute only in sequence and one and only subtask is permitted to execution for the considered task at any moment (but can be the cases, when simultaneously several subtasks of the considered tasks is executing in the contexts of other external tasks, that is co-owners of that subtasks)
    • serial internal execution states are
      • serial internal execution
        • if the next subtask to execute in sequence is frozen/frozenWithUnlockedRelatives/frozenWithUnlockedRelativesBy, the application shifts the permitted task's position to the next enabled or active subtask
        • if any of external (or/and recursively external's external task) is in frozen or frozenWithForciblyUnlockedBy state (and the task is not unlocker for the mentioned blocked task/tasks) then they become frozenBy
      • serial strict
        • in case if any relative of considered is frozen the considered task is getting pointed frozenBy state, and all it's progress is blocked
        • in case if any relative of considered task is frozenWithUnlockedRelatives the considered task acting like corresponding non-strict
        • in case if any relative/relatives of considered task is/are in frozenWithUnlockedRelativesBy state/states the considered task acting like corresponding non-strict only in the case, if it is unlocker for the frozenWithUnlockedRelativesBy task/tasks (!)
  • concurrent internal execution states

    • concept - states for tasks permits any kind of execution (user may implement serial-like, concurrent-like, parallel-like, mono-like execution order for the considered task's internal tasks by himself, because it's up to user), but semantic of the name of the execution state presumes the concurrent implementation
    • concurrent internal execution states are
      • concurrent internal execution
        • if any of the subtasks is frozen/frozenWithUnlockedRelatives/frozenWithUnlockedRelativesBy/frozenBy, the considered task's overall execution won't be affected and the active subtasks continue their executions
        • if any of external (or/and recursively external's external task) is in frozen or frozenWithForciblyUnlockedBy state (and the task is not unlocker for the mentioned blocked task/tasks) then they become frozenBy
      • concurrent strict internal execution
        • similar to the serial-strict internal execution
  • parallel internal execution states

    • concept - after starting of any subtask of the considered task all subtasks become active (except the case of activating subtask that was frozen/frozenWithUnlockedRelatives/frozenWithUnlockedRelativesBy/frozenBy before, in this particular case starting on one task doesn't activating other blocked)
    • parallel internal execution states are
      • parallel internal execution
        • similar to the concurrent internal execution
      • parallel strict internal execution
        • the similar to the serial-strict
  • mono internal execution states

    • concept - can be chosen to start any from the subtasks of the considered task and only one can be active at any moment from the considered task's context (but can be the cases, when simultaneously several subtasks of the considered tasks is executing in the contexts of other external tasks, that is co-owners of that subtasks))
    • mono internal execution states are
      • mono internal execution
        • similar to the concurrent internal execution (but with the difference, that only one task execution is appliable in the moment in context of the considered tasks (with exclusion, mentioned in the concept)
      • mono strict internal execution
        • the similar to the serial-strict internal execution

M - Transition of internal execution states (common principle)

  • to any considered state is possible to switch from any internal execution state
    • (trigger_switchToInternalExecutionStateName - name of the state, any of eigth)
      • triggering
        • user changing the state by his will in a handmode
    • (postCondition1.1.1()) verify task with internal relatives, in case of the choozen option "switch all internal subtasks recursively" will be swithed to considered internal execution state
      • (postCondition1.1.2()) verify/update the future renewal pointed completion states for the user's tasks (//TODO more effective)
      • (postCondition1.1.3()) ask the user updateCheckNoCycle or not

O - External execution states

O - External execution states description

O - External execution states transitions