Aller au contenu

Start Sub Task

Résumé

  • Nom interne : StartSubTask
  • Catégorie : Contrôle de Workflow
  • Objectif : Marquer le point d'entrée d'un sous-workflow imbriqué, intégré sous la clé "do" d'une tâche connecteur.
  • Type de tâche : Contrôle de Workflow

Compatibilité

  • Version minimale AndroMate : 1.1.0

  • Version maximale AndroMate : 1.1.0

  • Android minimum : Android 13 (API 33)

  • Android maximum testé : Android 16 (API 36)

  • Constructeurs supportés :

    • Samsung (One UI 6.x / 7.x / 8.x)
    • Autres constructeurs - pas encore supportés (Xiaomi HyperOS et Google Pixel en cours d'adaptation)
  • Permissions requises :

    • Aucune

Description détaillée

La tâche Start Sub Task est le point d'entrée obligatoire d'un sous-workflow imbriqué - l'objet "do" intégré dans une tâche connecteur comme Iterate ou ForEachElement. C'est l'équivalent du Start du workflow externe, mais limité à ce seul bloc "do".

Elle n'est pas interchangeable avec Start :

Start StartSubTask
Utilisé dans Le workflow externe, exactement une fois Chaque sous-workflow "do", exactement une fois
Déclare des variables Oui Non - le sous-workflow lit/écrit le même contexte partagé que le workflow externe
Configure Time_out / exec_policy Oui Non - ces réglages s'appliquent uniquement à l'exécution globale, définis une seule fois au sommet
Paramètres Time_out, exec_policy, variables Aucun - seulement un "id"

Comme Start, cette tâche n'effectue aucune action pendant l'exécution (elle retourne immédiatement) - c'est purement un marqueur indiquant au moteur où commencer à parcourir le graphe de ce sous-workflow.


Paramètres d'entrée

Cette tâche n'a aucun paramètre d'entrée au-delà de l'"id" requis par tout nœud.


Paramètres de sortie

Cette tâche ne produit aucune variable de sortie. Elle retourne VoidResult.


Exceptions

La tâche Start Sub Task ne lève aucune exception.


Diagramme d'exécution

flowchart TD
    Connector([Tâche connecteur, ex. Iterate]) --> Sub([StartSubTask\npoint d'entrée du sous-workflow])
    Sub --> Body[Corps du sous-workflow]
    Body --> End([End propre au do])
    End --> Continue([La tâche connecteur continue\nvers son lien externe 'to'])

    style Connector fill:#e3f2fd
    style Sub fill:#f3e5f5
    style Continue fill:#c8e6c9

Comment ça fonctionne :

  1. Une tâche connecteur (Iterate, ForEachElement) commence à exécuter son sous-workflow "do".
  2. Le moteur recherche le nœud de type StartSubTask à l'intérieur de cet objet "do" et commence la traversée à partir de lui.
  3. StartSubTask n'exécute aucune logique - le moteur passe immédiatement au nœud vers lequel pointent ses propres Links (limités au scope de "do").
  4. La traversée continue au sein des Links/End propres au sous-workflow, indépendamment du graphe externe, jusqu'à atteindre le propre End du sous-workflow.
  5. Une fois ce passage terminé, le contrôle revient à la tâche connecteur, qui répète le sous-workflow (selon sa propre règle de bouclage) ou continue vers le lien "to" du graphe externe.

Exemple JSON complet

{
  "Start": [
    { "id": "1000", "variables": [{ "variableName": "$i", "variableValue": "0", "is_kpi": false }] }
  ],
  "Iterate": [
    {
      "id": "1001",
      "iteration_variable_input": "$i",
      "start_index": 1,
      "end_index": 3,
      "do": {
        "StartSubTask": [{ "id": "10001" }],
        "TextReport": [{ "id": "10002", "texte": "i = $i", "texte_type": 0 }],
        "End": [{ "id": "10003" }],
        "Links": [
          { "from": "10001", "to": "10002" },
          { "from": "10002", "to": "10003" }
        ]
      }
    }
  ],
  "End": [{ "id": "1002" }],
  "Links": [
    { "from": "1000", "to": "1001" },
    { "from": "1001", "to": "1002" }
  ]
}