Une définition de modèle logique est requise pour les services exposés par un schéma XML. Dans HCL Commerce, la définition de modèle logique est représentée en tant que nom. HCL Commerce utilise ses propres noms simplifiés, types définis et types de schéma XML primitifs. HCL Commerce n'utilise pas les noms et les types de bases fournis par OAGIS.
Les noms définissent le nom de chaque élément de données dans le modèle logique et l'affectent à un type de données. Ce type de données peut être un type de schéma XML primitif, tel que booléen, ou un type complexe. Un type complexe désigne une construction d'éléments de données tel que CurrencyType qui contient le prix (représenté par un type double) et la devise (représentée par une chaîne). Un nom peut contenir une ou plusieurs parties de nom (parfois dénommées éléments de nom). Une partie de nom est un type XML complexe, qui fait partie d'un nom et sur lequel il est possible d'agir indépendamment. Les parties de nom représentent les parties d'un nom logique. La division d'un nom en plusieurs parties simplifie le codage et réduit la portée des commandes et des médiateurs. Au lieu de traiter le nom dans son intégralité, le code se concentre sur le seul traitement de la partie de nom concernée. A l'arrivée d'une demande, celle-ci est décomposée en ses différentes parties et la commande appropriée à chacune est exécutée. Par exemple, le nom CatalogEntry contient une liste de descriptions. Une description de catalogEntry est considérée comme une partie de nom et traitée à l'aide de ChangeCatalogEntryDescriptionCmdImpl et de ChangeCatalogEntryDescriptionMediator.
Le mappage entre un nom, une partie de nom et la commande à exécuter est réalisé dans la table CMDREG, tandis que le mappage entre un nom, une partie de nom et le médiateur à utiliser est défini dans le fichier wc-business-object-mediator.xml.
Il n'est pas obligatoire de décomposer les noms en différentes parties. Autrement dit, si un nom est relativement simple, l'intégralité de son contenu, y compris les types XML complexes, peut être traitée par la même commande et le même médiateur.
HCL Commerce propose certaines constructions de type complexe prédéfinies qui sont partagées par tous les noms. Vous pouvez utiliser ces types dans vos noms personnalisés.
| Types d'identificateur Identifient et distinguent de manière unique une instance d'un objet dans un canevas d'identification de tous les autres objets dans ce même canevas. Par exemple, PersonIdentifierType, OrganizationIdentifierType, CatalogExternalIdentifierType |
IBM/Commerce/Resources/ComponentsIdentifierTypes.xsd |
| Types de base Types non spécifiques à un domaine. Par exemple, DescriptionType, LanguageType, CurrencyType, CharType ou UserDataType. |
IBM/Commerce/Resources/ComponentsBaseTypes.xsd |
| Types communs de composants Types spécifiques à un domaine et partagés entre les composants. Vous devez inclure CommonTypes.xsd si vous désirez utiliser les types définis dans IdentifierTypes.xsd et BaseTypes.xsd. |
IBM/Commerce/Resources/ComponentsCommonTypes.xsd Inclut IdentifierTypes.xsd et BaseTypes.xsd |
Les types utilisés uniquement au sein d'un module de service mais partagés entre les noms sont définis dans un fichier XSD commun, tel que CatalogCommon.xsd
Le tableau suivant récapitule des règles générales à respecter lors de la création de noms.
Conventions
| Dispositif général |
- Modélisez les noms de sorte que plusieurs services puissent interagir avec un même nom. Un objet métier qui évoque une liste de paramètres de commande de contrôleur HCL Commerce n'est pas défini comme il se doit.
- Optimisez les objets métier en tant que vue logique de votre activité. Un modèle logique conçu correctement doit être compréhensible par les utilisateurs professionnels tandis qu'un schéma de base de données est optimisé pour les opérations de stockage et d'extraction.
- N'utilisez pas d'abréviations sauf s'il s'agit de formes abrégées connues et d'acronymes utilisés dans le secteur d'activité. Par exemple, ID et SKU sont des acronymes acceptables alors que
Grp ne l'est pas.
- Utilisez des noms explicites. N'utilisez pas de symboles ou de chiffres.
- Ajoutez des annotations au schéma pour décrire ses éléments. Tout particulièrement, annotez les éléments dans lesquels les valeurs ont une signification spécifique. Par exemple, ajoutez des annotations au schéma ProcessNoun pour décrire les actions possibles du verbe Process.
- Incluez des informations spécifiques au magasin dans le nom, ou dans la partie de nom, lorsque l'objet métier comporte un contexte spécifique au magasin. A titre d'exemple, un site pourrait héberger plusieurs magasins vendant les mêmes marchandises. dans ce cas, une entrée de catalogue n'est pas spécifique au magasin. Chaque magasin disposant de son propre catalogue, le catalogue est donc spécifique au magasin.
- Modélisez l'objet métier afin qu'il puisse inclure, le cas échéant, des données provenant d'autres noms. Par exemple, le prix d'une entrée de catalogue varie en fonction du client, des remises, du segment de clientèle, etc, et pour plus de clarté, le nom CatalogEntry n'inclut pas d'informations de prix. Les informations de prix figurent dans le nom PriceList.
- Créez des noms personnalisés se référant à des noms HCL Commerce. Pour créer, par exemple, un nom se rapportant à une entrée de catalogue, incluez l'identificateur d'entrée de catalogue
CatalogEntryIdentifierType dans votre nom. Cette association permet au service de requérir d'autres informations. Le nom Order se réfère au type StoreIdentifier en utilisant cette méthode.
|
| Types |
- Concaténez les termes, chacun devant débuter par une majuscule.
- Terminez le nom par
Type. Ceci différencie les objets du type défini des éléments de ce type.
- Incluez un élément UserData dans tous les types complexes. L'élément UserData permet la personnalisation.
- Définissez des types énumératifs dans le schéma. Concaténez les termes, chacun devant débuter par une majuscule. Définissez, par exemple, un type énumératif pour les valeurs d'adresse telles que
Home, Office et Cottage. N'utilisez pas de valeurs de bits internes pour définir des types énumératifs mais des valeurs significatives pour l'utilisateur.
- Utilisez le type normalizedString pour une énumération. Concaténez les termes, chacun devant débuter par une majuscule.
- Utilisez une union avec EnumerationExtensionType (défini dans IdentifierTypes.xsd) pour prendre en charge l'extension. EnumerationExtensionType reçoit une valeur suivant le canevas
x[0-9A-Za-z][0-9A-Za-z_.]*.
<simpleType name="AddressUsageEnumerationType">
<annotation>
<documentation>Indicates how usage of the address:
Shipping: Shipping address
Billing: Billing address
ShippingAndBilling: Shipping and Billing address
</documentation>
</annotation>
<restriction base="normalizedString">
<enumeration value="Shipping"/>
<enumeration value="Billing"/>
<enumeration value="ShippingAndBilling"/>
</restriction>
</simpleType>
<simpleType name="AddressUsageType">
<annotation>
<documentation>Allows extension to the default address usage types.
</documentation>
</annotation>
<union memberTypes="wcf:AddressUsageEnumerationType
wcf:EnumerationExtensionType"/>
</simpleType>
- Incluez un identificateur de type complexe composé d'une clé interne (clé primaire) et d'un identificateur externe. Ce type d'identificateur est utilisé par d'autres types pour se référer à cet objet. IdentifierType contient :
- UniqueID
- Chaîne UniqueID requise mappée généralement à la clé primaire. Pour identifier un objet lui-même, une clé interne ou un identificateur externe peuvent être utilisés. Cependant, la clé interne est toujours renvoyée dans la réponse.
- Identificateurs externes
- Les identificateurs externes sont facultatifs. Pour se référer à un autre objet (clé externe), utilisez une clé interne ou un identificateur externe. Si un identificateur externe est utilisé, il ne peut plus être modifié après l'enregistrement de l'objet.
<complexType name="PersonIdentifierType">
<sequence>
<element maxOccurs="1" minOccurs="0" name="UniqueID" type="string"></element>
<element maxOccurs="1" minOccurs="0" name="DistinguishedName" type="string"></element>
</sequence>
</complexType>
|
| Eléments |
- Concaténez les termes, chacun devant débuter par une majuscule.
- N'utilisez pas de traits de soulignement dans les noms d'éléments.
- Utilisez un nom cohérent avec le type correspondant mais sans le faire suivre de
Type.
- Si l'élément est un identificateur de type simple, apposez ID à la fin du nom. Par exemple,
SomeObjectNameID.
|
| Attributs |
- Concaténez les termes, le premier débutant par une lettre minuscule et les autres par une majuscule.
- N'utilisez pas de traits de soulignement dans les noms d'attributs.
- Des attributs doivent être utilisés pour cibler des valeurs d'élément et des éléments pour cibler le contenu principal. Les types complexes doivent comporter au moins un élément.
|
| Espace-noms |
Un mappage univoque existe entre l'espace nom et les modules de service. Plusieurs objets métier peuvent partager le même espace nom. Un espace nom est composé de trois parties :
domain name
- Nom de domaine de votre société.
/xmlns/prod/commerce/9
- Indique un objet associé à HCL Commerce et basé sur l'enveloppe de traitement OAGIS 9.
business-service identifier
- Classifie un groupe de noms.
Par exemple : http://www.mycompany.com/xmlns/prod/commerce/9/orderLes valeurs par défaut pour les attributs d'espace de noms sont elementFormDefault="qualified" et attributeFormDefault="unqualified". |