Modèle de programmation d'instruction de tâche

Une nouvelle instruction de tâche doit agrandir la classe d'instruction de tâche abstraite com.ibm.commerce.command.TaskCommandImpl et implémenter une interface qui agrandit l'interface com.ibm.commerce.command.TaskCommand.

Le diagramme suivant illustre la relation de la classe et de l'interface d'implémentation d'une nouvelle instruction de tâche avec la classe et l'interface d'implémentation abstraites existantes. La classe et l'interface abstraites se trouvent toutes deux dans le package com.ibm.commerce.command.

Diagramme illustrant la relation de la classe et de l'interface d'implémentation d'une nouvelle instruction de tâche avec la classe et l'interface d'implémentation abstraite existantes : MyTaskCmdImpl agrandit TaskCommandImpl, et MyTaskCmd agrandit TaskCommand.

En Java, la nouvelle instruction de tâche MyTaskCmdImpl sera ensuite définie comme suit :


public class MyTaskCmdImpl extends com.ibm.commerce.command.TaskCommandImpl 
     implements MyTaskCmd 
{
        ...
}

Toutes les propriétés d'entrée et de sortie de l'instruction de tâche doivent être définies dans l'interface de commande, par exemple MyTaskCmd. L'appelant programme sur l'interface de l'instruction de tâche plutôt que sur la classe d'implémentation de l'instruction de tâche. Cela vous permet d'avoir plusieurs implémentations de l'instruction de tâche (une pour chaque magasin), sans que l'appelant ne se préoccupe de la classe d'implémentation à appeler.

Toutes les méthodes définies dans l'interface doivent être implémentées dans la classe d'implémentation. Etant donné que le contexte de commande doit être défini par l'appelant (une commande de contrôleur), l'instruction de tâche n'a pas besoin de définir le contexte de commande. L'instruction de tâche peut toutefois obtenir des informations de session supplémentaires à l'aide du contexte de commande.

En plus d'implémenter les méthodes définies dans l'interface d'instruction de tâche, vous devez écraser la méthode performExecute à partir de la classe com.ibm.commerce.command.TaskCommandImpl.

La méthode performExecute contient la logique métier de l'unité de travail particulière que l'instruction de tâche exécute. Elle doit appeler la méthode performExecute de la superclasse d'instruction de tâche avant d'exécuter toute logique commerciale. Le snippet de code suivant montre un exemple de méthode performExecute pour une instruction de tâche.


public void performExecute() throws ECException
{
     super.performExecute();

     // Include your business logic here.

     // Set output properties so the controller command
     // can retrieve the result from this task command.
}

L'infrastructure d'exécution appelle la méthode getResources de la commande de contrôleur pour déterminer les ressources protégeables auxquelles la commande accédera. Il se peut qu'une instruction de tâche soit exécutée pendant l'étendue d'une commande de contrôleur et qu'elle tente d'accéder à des ressources qui n'ont pas été renvoyées par la méthode getResources de la commande de contrôleur. Si tel est le cas, l'instruction de tâche elle-même peut implémenter une méthode getResources pour s'assurer que le contrôle d'accès est fourni pour les ressources protégeables.

Notez que, par défaut, getResources renvoie null pour une instruction de tâche et la vérification du contrôle d'accès au niveau des ressources n'est pas effectuée. Par conséquent, vous devez passer outre si l'instruction de tâche accède à des ressources protégeables.