Méthodes de gestion des tâches à l'aide d'un planificateur

Le planificateur fournit plusieurs méthodes de gestion des tâches.

Lors de la création d'une tâche via l'appel de la méthode create() sur un planificateur, un objet TaskStatus est envoyé à l'appelant. L'objet TaskStatus contient l'ID tâche, qui correspond à un identificateur unique. L'API du planificateur et le MBean WASScheduler définissent plusieurs méthodes supplémentaires relatives à la gestion des tâches, chacune acceptant l'ID tâche sous forme de paramètre. Les méthodes de gestion de tâche suivantes sont définies :
suspend()
Permet d'interrompre une tâche. La tâche ne s'exécute que lors de sa reprise.
resume()
Permet la reprise d'une tâche précédemment interrompue.
cancel()
Permet d'annuler une tâche. La tâche n'est pas exécutée et ne peut pas être reprise.
purge()
Permet la suppression définitive d'une tâche du magasin persistant.
getStatus()
Renvoie l'état en cours de la tâche.
Utilisez l'exemple d'API suivant pour créer et annuler une tâche :
//Création de la tâche. 
TaskInfo taskInfo = ...
TaskStatus status = scheduler.create(taskInfo);

//Obtention de l'ID tâche
String taskId = status.getTaskId();

//Annulation de la tâche. Spécifiez l'indicateur purgeAlso de sorte que la tâche ne reste pas dans le magasin persistant
scheduler.cancel(taskId,true);
Utilisez les opérations de script JACL suivantes dans l'outil wsadmin pour créer et annuler une tâche :
set jndiName sched/MyScheduler

# Mapper le nom JNDI au nom mbean.  Le nom mbean est 
# formé en remplaçant le caractère / dans le nom jndi par le caractère . et en le faisant précéder de 
# Scheduler_ 
regsub -all {/} $jndiName "." jndiName
set mbeanName Scheduler_$jndiName

puts "Looking-up Scheduler MBean $mbeanName"
set sched [$AdminControl queryNames WebSphere:*,type=WASScheduler,name=$mbeanName]
puts $sched

# Obtenir le format ObjectName du MBean Scheduler
set schedO [$AdminControl makeObjectName $sched]

# Créer un objet TaskInfo…
# (une partie du code est exclue…)
set params [java::new {java.lang.Object[]} 1]
$params set 0 $taskInfo

set sigs [java::new {java.lang.String[]} 1]
$sigs set 0 com.ibm.websphere.scheduler.TaskInfo

set taskStatus [java::cast com.ibm.websphere.scheduler.TaskStatus [$AdminControl invoke_jmx $schedO
 create $params $sigs]]

set taskID [$taskStatus getTaskId]
puts "La tâche a été créée.  TaskID= $taskID"

# Annuler la tâche à l'aide de l'ID tâche à partir de l'objet TaskStatus renvoyé pendant l'opération create.
set params [java::new {java.lang.Object[]} 1]
$params set 0 false

set sigs [java::new {java.lang.String[]} 1]
$sigs set 0 java.lang.boolean

set taskStatus [java::cast com.ibm.websphere.scheduler.TaskStatus [$AdminControl invoke_jmx $schedO
 cancel $params $sigs]]

Transactionnalité. Toutes les méthodes de l'API du planificateur sont transactionnelles. En présence d'un contexte transactionnel global, celui-ci sert à exécuter l'opération. Si une exception imprévue est émise, la transaction est marquée pour être annulée et l'appelant doit la gérer de façon appropriée. Si une exception prévue ou déclarée est émise, la transaction reste intacte et l'appelant doit choisir d'annuler ou de valider la transaction. Si la transaction est annulée à un moment donné, toutes les opérations du planificateur effectuées dans le cadre de la transaction sont également annulées.

En présence d'un contexte transactionnel local, celui-ci est interrompu et une nouveau contexte transactionnel global est lancé. De même, si aucun contexte transactionnel n'est actif, un contexte transactionnel global est lancé. Dans les deux cas, si une exception imprévue est émise, la transaction est annulée. Si une exception déclarée est émise, la transaction est validée.

Si une autre unité d'exécution modifie simultanément la tâche en question, une exception TaskPending est émise, car les planificateurs verrouillent la base de données avec optimisme. L'application appelante peut ensuite relancer l'opération.

Les fonctions de gestion des tâches peuvent se bloquer si la tâche est en cours d'exécution. Etant donné que le planificateur garantit que chaque tâche sera exécutée une seule fois, la tâche doit être verrouillée pendant la durée d'une tâche en cours d'exécution. De la même façon, si une tâche est modifiée à l'aide d'une des fonctions de gestion mais que la transaction globale n'est pas validée, toutes les autres fonctions de gestion émises par une autre transaction pour cette tâche seront bloquées.

La méthode TaskHandler.process() d'un bean de session sans état peut changer son propre état. Toutefois, la tâche doit être exécutée avec la même transaction que le planificateur. Par conséquent, une tâche en cours d'exécution ne peut se modifier elle-même que si elle utilise les types de transactions gérées par conteneur Requise ou Obligatoire. Si le type de transaction Requiert un nouvel élément est spécifié sur la méthode process(), toutes les fonctions de gestion se bloquent.

Toutes les méthodes définies par l'API du planificateur sont décrites dans la documentation sur les API.


Icône indiquant le type de rubrique Rubrique de concept



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=csch_managetask
Nom du fichier : csch_managetask.html