Création d'un nouveau contexte métier
Tous les contextes métier sont enregistrés dans un fichier de configuration de contexte métier. Dans le fichier, vous devez spécifier une classe de fabrique de contexte métier pour créer le contexte métier. Si la classe SimpleBusinessContextFactory, la classe de fabrique par défaut, est utilisée pour créer le contexte métier, vous devez fournir le nom de la classe d'implémentation comme l'un des paramètres de la fabrique. Pour enregistrer un contexte métier dans le système, reportez-vous au fichier de configuration de contexte métier.
Procédure
-
Classe de fabrique de contexte métier
Lors de la création de la classe de fabrique pour instancier l'objet de contexte métier, la classe doit implémenter l'interface BusinessContextFactory. Il existe deux méthodes que la classe de fabrique doit mettre en œuvre : createContextSPI() et destroyContextSPI(). Ces deux méthodes sont utilisées pour instancier et supprimer les contextes métier d'un type particulier.
Au lieu d'implémenter l'interface, vous pouvez également étendre la classe AbstractBusinessContextFactory. Cette classe abstraite offre une capacité de mise en commun d'objets qui permet de réutiliser un contexte métier. La méthode createContextSPI() récupère le contexte métier à partir d'un pool d'objets tandis que la méthode de destroyContextSPI() renvoie le contexte métier au pool. Pour tirer parti de cette fonctionnalité à partir de la classe abstraite, vous devez implémenter la méthode abstraite getContextSPIImplClassname() pour renvoyer le nom de classe d'implémentation de l'objet de contexte métier.
-
Classe d'implémentation du contexte métier
Chaque contexte métier enregistré sur le site doit implémenter les interfaces Context et ContextSPI. L'interface Context est étendue et fournit des méthodes utilisées par la logique métier pour récupérer les informations contextuelles. L'interface ContextSPI fournit des méthodes avec lesquelles le service de contexte métier peut interagir pour signaler des événements tels que le début ou la fin d'une requête.
Pour créer un nouveau contexte métier, vous devez définir une nouvelle interface, par exemple MyCustomContext, qui s'étend de l'interface Context. Dans la nouvelle interface, définissez un champ de constante statique appelé CONTEXT_NAME qui stocke le nom utilisé pour référencer ce contexte. D'après la convention HCL Commerce, le nom de package entièrement qualifié du contexte métier est utilisé, com.mycompany.context.custom.MyCustomContext. Toutes les méthodes exposées à la logique métier doivent également être définies. L'exemple suivant montre une nouvelle interface contextuelle :
public interface MyCustomContext extends Context { /** * The name of the context that are used to reference this context. */ public static final String CONTEXT_NAME = "com.mycompany.context.custom.MyCustomContext";/** * Method that is exposed to business logic. * Returns a string that is saved in this custom context.Maintenant que la nouvelle interface de contexte métier est définie, la classe concrète qui implémente cette interface doit être fournie. Cette classe d'implémentation doit implémenter les interfaces Context et ContexteSPI. Une classe AbstractContextImpl est fournie pour aider à implémenter la plupart des méthodes de ces interfaces. Lorsque vous créez une nouvelle classe d'implémentation personnalisée, vous devez étendre la classe AbstractContextImpl et implémenter votre nouvelle interface contextuelle. Par exemple :
public class MyCustomContextImpl extends AbstractContextImpl implements MyCustomContext {La nouvelle implémentation de contexte métier doit implémenter la méthode getContextName() pour renvoyer le nom à utiliser pour référencer cet objet. Cela doit renvoyer la variable CONTEXT_NAME définie dans l'interface.
public String getContextName() { return CONTEXT_NAME;} En plus de la méthode getContextName(), les méthodes abstraites suivantes de la classe AbstractContextImpl doivent être implémentées dans la nouvelle implémentation :
- initializeContext(ActivityData initData)
- Compte tenu d'un ensemble de paires nom-valeur définies dans le paramètre initData, initialisez le contexte métier. Cette méthode est appelée lorsqu'une nouvelle activité est lancée à partir du client.
- preInvokeContext(ActivityData sessionData)
- Compte tenu d'un ensemble de paires nom-valeur définies dans le paramètre sessionData, effectuez des tâches spécifiques au contexte avant l'exécution de la requête. Cette méthode est appelée lorsqu'une activité a déjà été établie et qu'une nouvelle requête est lancée par le client.
- getContextAttributes()
- Obtenez le tableau d'attributs à inclure dans la représentation de chaîne de ce contexte. Cette matrice sera ensuite sérialisée et stockée dans la base de données.
- setContextAttributes(String[] ctxAttrs)
- Compte tenu de la matrice d'attributs de contexte, remplissez le contexte en conséquence.
- clearContext()
- Réinitialisez l'attribut de ce contexte à sa valeur par défaut.