HCL Commerce commandes de service

La commande de service est le point d'entrée de la façade de composant où le document BOD (Business Object Document) commence à être traité par la logique métier.

La commande de service est une commande qui étend l'infrastructure des commandes du WebSphere Application Server (et pas du Transaction server), et seule la commande de contrôleur de service de niveau supérieur doit étendre une implémentation spécifique. La commande de contrôleur de service est une commande BOD d'instance et doit étendre les commandes BOD abstraites. La commande service décompose la requête en une série de tâches métier et appelle les commandes appropriées pour effectuer ces tâches. Pour plus d'informations à propos de l'infrastructure des commandes, consultez la rubrique Command class.

Idéalement, la commande de contrôleur de service ne doit pas effectuer d'accès à la base de données. Au lieu de cela, elle devrait appeler des commandes de tâches métier pour effectuer le calcul de base de données requis. Si une résolution est requise, ce qui nécessite l'accès à la base de données, cette résolution doit faire partie d'une instruction de tâche métier de validation appelée dans la méthode validate(). Non seulement cette tâche de validation valide le BOD spécifié, mais elle doit également effectuer tout accès à la base de données pour résoudre les informations requises associées à l'opération.

Ces instructions de tâches métier sont des commandes WebSphere Application Server et la seule condition placée sur l'implémentation est qu'elle suit le modèle de commande. Aucune connaissance supplémentaire de l'implémentation HCL Commerce ou des interfaces n'est requise. Pour les instructions de tâches métier, la commande doit uniquement étendre les classes de commande, mais utilise la classe com.ibm.commerce.foundation.server.commands.CommandFactory pour instancier l'implémentation de commande.

La fabrique de commandes est utilisée pour créer une instance de la commande. La fabrique de commandes détermine par configuration l'implémentation appropriée pour une commande particulière. L'implémentation instanciée peut dépendre d'une série d'informations, mais au minimum elle dépend de l'interface de la commande pour l'instanciation. En raison de la nature courante de la façon dont les requêtes sont structurées, la fabrique de commandes peut être utilisée pour extraire ces tâches et déterminer l'implémentation appropriée.

Bien que la fabrique de commandes exige au moins le nom de l'interface de la commande pour l'instanciation, elle prend en charge l'acceptation d'un objet CommandKey pour instancier une implémentation. La clé de commande est un moyen d'ajouter une condition supplémentaire pour déterminer si l'implémentation de la tâche par défaut doit être utilisée ou, en fonction de cette condition particulière, si une autre implémentation doit être utilisée. L'implémentation par défaut est toujours utilisée dans le cas où la condition ne correspond pas à une implémentation.

Par exemple, pour prendre en charge la recherche, le pattern de conception Get recommande de séparer la logique en une tâche d'extraction et une tâche de composition. L'implémentation de chacune de ces tâches dépend non seulement du nom d'interface de la tâche, mais aussi d'une "clé XPath" pour la tâche d'extraction ou d'un "Profil d'accès" pour les tâches de composition. Cette condition permet d'ajouter de nouvelles expressions de recherche ou des profils d'accès avec un minimum de personnalisation. Plutôt que d'étendre une tâche existante pour ajouter la prise en charge de cette fonctionnalité, la condition est utilisée pour trouver la nouvelle implémentation associée à ce nouveau comportement.

Il existe différentes clés de commande selon le type de commande à exécuter. Pour la commande Fetch, une clé de commande Get est nécessaire pour ajouter l'expression XPath comme faisant partie de la clé pour récupérer l'implémentation. Il en va de même pour les clés de commande d'action spécifiques pour sélectionner des implémentations particulières qui ne sont pas uniquement basées sur l'interface de commande.