Identification de tâches en cours d'exécution

Lorsqu'une tâche est en cours d'exécution, l'enregistrement dans la base de données des tâches est verrouillé jusqu'à ce que la tâche soit terminée. Déterminez si une tâche est en cours d'exécution ou non.

Pourquoi et quand exécuter cette tâche

Avant la version 6.0.2, toutes les tâches s'exécutaient dans une seule transaction globale. Ce processus empêchait non seulement la tâche de s'exécuter plus d'une fois avec succès, mais il bloquait également toutes les tentatives de lecture de l'état de la tâche, puisque chaque tâche utilisait un isolement de transaction validé à la lecture.

Deux méthodes permettent de déterminer si une tâche est en cours d'exécution :
  1. NotificationSink

    Un EJB NotificationSink peut être défini sur la tâche à l'aide de la méthode setNotificationSink sur l'objet TaskInfo. Le bean NotificationSink peut alors consigner le cycle de vie de la tâche dans un enregistrement de base de données distinct dans une table personnalisée. Ceci aboutit alors à un journal historique de la tâche qui peut être interrogé indépendamment du planificateur. Cette solution s'applique à toutes les versions du service Scheduler. Pour plus d'informations, reportez-vous à la rubrique Réception de notifications d'un planificateur.

  2. Exécution différée et lecture non validée

    La version 6.0.2 et ultérieure ajoute deux nouveaux comportements qui permettent au planificateur de trouver et d'extraire des méthodes d'API, telles que getTask, getTaskStatus ou findTasksByName, pour voir l'état courant de la tâche sans bloquer. Pour voir l'état courant de la tâche, ainsi que l'état d'exécution non validé, procédez comme suit :

Procédure

  1. Activez l'isolement de transaction non validé à la lecture pour les méthodes read du planificateur afin d'empêcher ces méthodes de bloquer lorsqu'une tâche est en cours d'exécution. Pour définir l'isolement de transaction par défaut pour les méthodes read, reportez-vous à la rubrique Configuration de l'isolement de transaction par défaut du planificateur.
    Important : Si la base de données du planificateur ne prend pas en charge les lectures non validées, Oracle par exemple, il se peut qu'il soit impossible de déterminer si une tâche est en cours d'exécution à moins que vous n'utilisiez la qualité de service QOS_ATLEASTONCE.
  2. Utilisez l'option TaskInfo.EXECUTION_DELAYEDUPDATE sur la méthode TaskInfo.setTaskExecutionOptions afin d'obliger le planificateur à écrire l'état TaskStatus.RUNNING dans la tâche lorsque l'exécution de celle-ci commence.

Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsch_identify
Nom du fichier : tsch_identify.html