La Subscription
*Le code fourni explique comment utiliser la mĂ©thode ï»żonUpdateTaskStateHandler ï»żdans le module **taskHandler.mjs ***pour envoyer des mises Ă jour aux utilisateurs dans les tĂąches. La mĂ©thode prend un paramĂštre objet avec des propriĂ©tĂ©s pour l'Ă©tat, l'erreur (facultatif) et les mĂ©tadonnĂ©es. Les exemples de code montrent comment utiliser la mĂ©thode dans diffĂ©rents scĂ©narios, tels que l'envoi d'un Ă©tat de dĂ©marrage, la gestion des erreurs et l'inclusion de mĂ©tadonnĂ©es supplĂ©mentaires.
Dans vos tùches (tasks), si vous désirez envoyer un nouvel état à vos utilisateurs, vous devez appeler la méthode onUpdateTaskStateHandler du module taskHandler.mjs.
Déclaration
declare type UpdateStateFunction = ({ state: { status: string; statusCode: number; }; error?: string; metadata: any; }): void;
declare const onUpdateTaskStateHandler: (handler: any): UpdateStateFunction;Cas nominal :
const runTask = async ({ pm, taskHandler }) => {
  const updateState = onUpdateTaskStateHandler(taskHandler);
  updateState({
    state: {
      status: 'START',
      statusCode: 200,
    },
  });  // votre traitement qui prends un certain temps
  await new Promise(res => setTimeout(res, 1000));
  updateState({
    state: {
      status: 'FINISH',
      statusCode: 200,
    },
  });
};Si une erreur arrive dans l'un de vos traitement :
const runTask = async ({ pm, taskHandler }) => {
const updateState = onUpdateTaskStateHandler(taskHandler);Â
updateState({
state: {
status: 'START',
statusCode: 200
}
});
try {
// votre traitement est en erreur
await Promise.reject(`Mon erreur`);
} catch (error) {
updateState({
state: {
status: 'ERROR',
statusCode: 404,
},
error,
});
}
};Vous pouvez également envoyer des metadata supplémentaires :
const runTask = async ({ pm, taskHandler }) => {
  const updateState = onUpdateTaskStateHandler(taskHandler);
  const documentId = 49.3;
  updateState({
    state: {
      status: 'START',
      statusCode: 200,
    },
    metadata: {
      documentId,
    },
  });  // votre traitement qui prends un certain temps
  await new Promise(res => setTimeout(res, 1000));
  updateState({
    state: {
      status: 'FINISH',
      statusCode: 200
    },
    metadata: {
      documentId,
    },
  });
};