Contexte de commande
Les commandes peuvent obtenir des informations à l'aide du contexte de commande. Par exemple, les informations disponibles incluent l'ID de l'utilisateur, l'objet utilisateur, l'identificateur de langue et l'identificateur de magasin.
Lors de l'écriture d'une commande, vous avez accès au contexte de commande en appelant la méthode getCommandContext() de la superclasse de la commande. Le contexte de commande est défini sur la commande du contrôleur lorsque la commande est appelée par la façade du composant. Une commande de contrôleur doit propager le contexte de commande à toutes les instructions de tâche ou commandes de contrôleur qui sont appelées pendant le traitement.
Dans les versions précédentes, les informations décrites dans la liste suivante étaient stockées dans l'objet contexte de commande. Avec l'introduction du contexte métier dans cette version, ces informations sont maintenant stockées dans divers contextes métier. Le contexte de commande devient une classe d'aide d'encapsulation en plus de ces contextes métier. On peut récupérer directement le même élément d'information en récupérant le contexte métier approprié à l'aide de la méthode CommandContext.getContext(businessContextName). Les informations qui ne sont pas disponibles dans les contextes métier restent disponibles et locales pour l'objet contexte de commande. Une commande peut obtenir les informations clés suivantes à partir du contexte de commande :
- getUserId() et getUser()
- Obtient l'ID utilisateur ou l'objet utilisateur par rapport auquel la requête en cours doit s'exécuter. L'userId de la session en cours est stocké dans le BaseContext. Chaque contexte de base est associé à un identificateur d'activité stocké dans la session. Cette session peut être maintenue de l'une des deux façons suivantes : à l'aide d'un cookie HCL Commerce ou d'un objet de session WebSphere Application Server persistant. Le contexte de commande cache la complexité de la gestion de session d'une commande. Au lieu de récupérer l'ID utilisateur à partir du contexte de commande, il peut également être récupéré à partir du code suivant :
- getStoreId(), getStore()
- Obtient le magasin associé à la requête en cours. Pour les demandes Web, cette méthode renvoie l'ID du magasin dans l'URL. Si l'ID du magasin n'est pas spécifié dans l'URL, il peut être récupéré à partir du contexte de base de l'activité enregistrée dans la session des requêtes précédentes. Pour les requêtes lancées à partir d'autres canaux, l'exécution HCL Commerce essaie d'abord de récupérer l'ID de magasin à partir des données d'activité que le client a transmises avec la requête. Si on n'en trouve aucun dans les données d'activité, l'ID de magasin stocké dans le contexte de base de l'activité sera utilisé. Une autre façon de récupérer l'ID du magasin est la suivante :
- getLanguageId()
- Renvoie l'ID de langue à utiliser pour la requête en cours. Si l'ID de langue est spécifié dans l'URL d'une requête Web ou dans les données d'activité, l'exécution HCL Commerce valide d'abord si cet ID de langue est pris en charge par le magasin. Si c'est le cas, cet ID de langue sera renvoyé par cette méthode. S'il n'est pas pris en charge, il utilisera ensuite l'ID de langue stocké dans le GlobalizationContext de l'activité de la session. Toutefois, s'il s'agit de la première requête et donc qu'aucun ID de langue n'est disponible dans le contexte de mondialisation de l'activité et réutilisé pour les requêtes ultérieures.
- L'ID de la langue préférée de l'utilisateur est d'abord validé et vérifié pour savoir s'il est pris en charge par le magasin. Si la valeur est true, cette méthode renvoie cet ID de langue.
- S'il n'est pas pris en charge, cette méthode renvoie la langue par défaut du magasin.
Une autre façon de récupérer l'ID de langue est possible à partir du contexte de mondialisation :
GlobalizationContext globalizationContext = (GlobalizationContext)getCommandContext().getContext(GlobalizationContext.CONTEXT_NAME); globalizationContext.getLanguageId(); - getCurrency()
- Renvoie la devise à utiliser pour la requête en cours. La devise est stockée dans le GlobalizationContext et extraite du languageId dans le cadre de la structure de mondialisation. Par conséquent, la logique derrière cette méthode est similaire à celle de la méthode getLanguageId(). La commande SetCurrencyPreference doit être utilisée pour modifier la devise de la session.
- getCurrentTradingAgreements()
- getCurrentTradingAgreements(CommandContext)
- Renvoie l'ensemble des accords commerciaux utilisés pour la session en cours. Cet ensemble peut être l'ensemble des accords commerciaux auxquels l'utilisateur a droit, ou il peut s'agir d'un sous-ensemble défini par la commande ContractSetInSession. Une commande doit toujours obtenir l'objet d'accord commercial à partir du contexte de commande pour tirer parti du cache d'objet. Vous pouvez obtenir l'accord commercial actuel en appelant la méthode getCurrentTradingAgreements(CommandContext).
Le contexte de commande doit être utilisé comme objet en lecture seule. Vous ne devez pas appeler ses méthodes de setter.