Gestions des tasks < 2.2.0
Ce document explique le concept de tĂąches dans le contexte de l'OIP (Open Insurance Platform). Les tĂąches sont des fonctions qui peuvent ĂȘtre exĂ©cutĂ©es manuellement par un utilisateur ou automatiquement par un planificateur (cron) pour des Ă©vĂ©nements rĂ©currents. Le document fournit des instructions sur la façon de dĂ©finir et d'utiliser des tĂąches dans la configuration de l'OIP, y compris l'utilisation manuelle et l'utilisation avec cron. Il explique Ă©galement comment lancer une tĂąche et mettre Ă jour son Ă©tat Ă l'aide des fonctions fournies.
Tasks
Ce fonctionnement est valable jusqu'Ă la version 2.2.0.
Bien qu'il soit toujours disponible dans les versions supérieur, ses controllers sont passés en statut Deprecated et ne sont plus maintenues.
Il est vivement conseillé de passer à la nouvelle version de gestion des tasks mise en place a partir de la version 2.2.0
Introduction
Les tĂąches (tasks) sont des fonctions qui peuvent ĂȘtre Ă©xĂ©cutĂ©es par un utilisateur ou par un planificateur (cron) pour des Ă©vĂšnements rĂ©curents, par exemple tous les jours Ă 18h.
Utilisation manuelle
Dans votre configuration de l'OIP, vous devez ajouter une propriété tasks
export default {
...votreConfig,
tasks: {
nomDeLaTask: callbackAssocieeAVotreTask
}
};Utilisation avec CRON
Vous pouvez aussi déclarer une task et la faire executer par un cron.
export default {
...votreConfig,
tasks: {
nomDeLaTask: {
callback: callbackAssocieeAVotreTask,
// équivalent de tous les jours à 18h
cron: '0 18 * * *'
}
}
};Lancer une task
Pour lancer une task définie, vous devez appeler la fonction runTask
import { runTask } from '@fasstech/oip-core/controllers';
/**
* @param {string} projectId
*/
export const monTraitement = (projectId) => {
runTask({ taskName: 'nomDeLaTask', projectId });
};Mettre à jour l'état d'une task
Vous pouvez mettre à jour l'état d'une task avec la méthode onUpdateTaskStateHandler
import { onUpdateTaskStateHandler } from '@fasstech/oip-core/process';
export const myTask = async ({ taskHandler }) => {
const updateTask = onUpdateTaskStateHandler(taskHandler);
console.log('Task started');
await new Promise(res => setTimeout(res, 1500)); // heavy processing
updateTask({ state: 'IN_PROGRESS' });
console.log('Task in progress');
await new Promise(res => setTimeout(res, 4200)); // heavy processing
updateTask({ state: 'COMPLETED' });
};