# Les tâches programmées

# Introduction

Les tâches programmées permettent de lancer, à intervalle régulier, des actions. Une action est le résultat du déclenchement d'une route.

La description d'une tâche se fait dans un fichier XML à l'aide du schéma https://platform.anakeen.com/4/schemas/task/1.0.

# Arguments de la tâche

Les balises à renseigner sont :

  • @name : le nom logique de la tâche
  • @label : le titre de la tâche
  • task/user/@login : indique le login du compte avec lequel la tâche est exécutée.
  • task/crontab : indique la périodicité au format crontab.
  • task/route : indique la référence de la route a exécuter
    • task/route/@ns : namespace de la route (routes/@namespace du fichier de définition de la route)
    • task/route/@ref : nom de la route (route/@name du fichier de définition de la route)
    • task/route/@method : methode HTTP de la route (route/method du fichier de définition de la route)
    • task/route/argument/@name : nom de variable du pattern (route/@pattern du fichier de définition de la route)
    • task/route/argument/ : valeur de la variable du pattern (route/@pattern du fichier de définition de la route)
    • task/route/query-field/@name : nom d'un argument pour la requête (route/@pattern du fichier de définition de la route)
    • task/route/query-field/ : valeur d'un argument pour la requête (route/@pattern du fichier de définition de la route)
  • task/description : description textuelle de la tâche qui est effectuée
  • task/status : (active/disabled) : indique si la tâche doit être exécutée (active) ou ignorée (disabled).

La tâche est exécutée à la date calculée à partir la périodicité donné dans l'argument task/crontab.

WARNING

La périodicité minimum est de 5 minutes

# Importation de la tâche

La tâche est enregistrée en exécutant la commande d'importation sur le serveur

./ank.php --script=importConfiguration --file=vendor/My/tasks/myFirstTasks.xml

# Exemple

Soit une route déclarée dans le fichier de configuration des routes vendor/My/config/myRoutes.xml:

<?xml version="1.0"?>
<sde:config xmlns:sde="https://platform.anakeen.com/4/schemas/sde/1.0">
    <sde:routes namespace="Test">
        <sde:route name="TheRoute">
            <sde:callable>\My\Routes\Tests\TestConfig</sde:callable>
            <sde:method>POST</sde:method>
            <sde:pattern>/tests/routes/{mykey}</sde:pattern>
            <sde:description>Route test config</sde:description>
            <sde:requiredAccess/>
        </sde:route>
    </sde:routes>
</sde:config>

Dans cet exemple, la référence de la route Test::TheRoute ainsi que son paramètre mykey sont indiqués.
Fichier : vendor/My/tasks/myFirstTasks.xml:

<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
              xmlns:task="https://platform.anakeen.com/4/schemas/task/1.0">
    <task:task name="TST_TASK0001" label="Ma lourde tâche">
        <task:user login="admin"/>

        <task:description>Quelque chose à faire...</task:description>

        <task:route ns="Test" ref="TheRoute" method="POST">
            <task:argument name="mykey">Hello</task:argument>
            <task:query-field name="y">World</task:query-field>
        </task:route>

        <task:crontab>4,30 6 * * 1-5</task:crontab>
        <task:status>active</task:status>
    </task:task>
</smart:config>