Informations techniques globales

XAT2V2 est le protocole privilégié des applications E-T-A-I, il permet la communication entre deux applications distantes qui peuvent être séparées par  internet ou par la barrière d’un intranet.

Notamment, il rend possible l’échange d’informations structurées entre un logiciel qui se trouve dans un réseau privé et un serveur web distant.

 

  • Un message XAT2 est un document XML valide dont les données sont régies par un schéma XSD.
    Le schéma XSD XAT2V2 est défini en séquence. Par conséquent, l’ordre des balises dans les XML XAT2V2 doit scrupuleusement respecter l’ordre défini dans l’XSD.

  • Un message XAT2 doit être encodé en UTF-8. L’en-tête HTTP du message doit contenir :
    Content-Type: application/xml; charset="UTF−8"

Voir ici, la description détaillée des différents éléments des messages XAT2.

Dictionnaires et Classifications

Afin d’offrir un modèle adaptable à tous les besoins, les messages XAT2 utilisent, dans de nombreux éléments, le type ClassificationType.

 

Un élément de type ClassificationType est une valeur textuelle qualifiée selon un dictionnaire de valeurs standard.
Il fait ainsi référence à :

  • un dictionnaire (attribut dictionary)
  • et, au sein de ce dictionnaire, à une entrée particulière (attribut ref).

Par exemple, description d’une personne de type Client avec sa civilité, son prénom et son nom :

<person>
  <breakdown-list>
    <classification dictionary="ETAI:person" ref="client" />
  </breakdown-list>
  <title dictionary="ETAI:personTitle" ref="Mrs" />
  <firstname>ZOE</firstname>
  <name>DUPONT</name>
</person>

Autre exemple, de l’immatriculation d’un véhicule :

<vehicle>
  <alternative-ref-list>
    <classification dictionary="ETAI:vehicle" ref="registration">AA123AA</classification>
  </alternative-ref-list>
</vehicle>

Liens internes des messages XAT2

La structure d’un message XAT2 est parfois complexe, et il devient nécessaire de créer des références entre ses propres éléments.

 

Par exemple, au prix d’une pièce s’appliquent une remise et un taux de TVA, mais ces entités sont représentées à des endroits différents du message. Il n’est donc pas possible de les mettre en relation simplement par la hiérarchie des éléments xat2.

Dans ce cas, un identifiant interne – internal-id – est attribué à la remise dans l’élément <discount> et au taux de TVA dans l’élément <VAT-rate>. Ces références internes sont rappelées dans l’élément <price> de la pièce.

[+ détails]


Règles concernant les identifiants et les références internes :

  1. La valeur d’un identifiant doit être unique au sein du message XAT2.
  2. Une référence a pour valeur l’identifiant d’un élément se trouvant dans le même message XAT2 (pas de référence vers d’autres messages).
  3. Une référence interne doit commencer obligatoirement par une lettre (règle XML).
  4. La valeur de la référence interne d’un élément xat2 n’a rien à voir avec la référence métier d’une pièce. Il s’agit d’un identifiant purement technique, valable uniquement dans le message XAT2 dans lequel il se trouve.
    Une même donnée métier (une même pièce, par exemple) peut très bien avoir deux valeurs d’identifiants différentes dans deux messages XAT2 différents.
  5. De nombreux éléments du schéma XAT2 peuvent avoir une référence interne : il est toujours possible d’attribuer un identifiant à chacun d’eux.
    Cependant, afin d’optimiser la taille des messages, il est recommandé de ne valoriser cet attribut que lorsque l’élément fait effectivement l’objet d’une référence au sein du message.

Description des différents éléments des messages XAT2

L’élément racine de tout message XAT2 est L’élément <xat2> :
<xat2 xmlns="http://xat2.etai.fr" version="2.0" />

 

Les attributs xmlns et version ont obligatoirement les valeurs indiquées ci-dessus.

 

L’élément <xat2> contient les éléments suivants, obligatoires ou optionnels :

  • L’élément <session-context> : liste obligatoire d’une ou plusieurs données permettant d’identifier l’émetteur du message, pour déterminer ses droits d’accès et autoriser – ou pas – le traitement de son message.
  • Une liste de dates <date-list> : optionnelle, permettant d’horodater le message (date de son arrivée, du traitement de la requête, …)
  • Une liste de messages <message-list> : optionnelle, pour indiquer le résultat des traitements effectués.
  • Une liste d’adresses <uri-list> : optionnelle, qui permet au Client et au Serveur d’échanger les adresses par lesquelles ils peuvent communiquer entre eux par d’autres voies (invocation du client par le serveur, accès à une application web, …).
  • L’élément <shuttle> : conteneur d’informations protocolaires, telles que <transport> (incluant <action-list>,
    <partner>, <admin-list>, <message-list>
    ) et d’informations métier, telles que :

    • <settings>
    • <person-list>
    • <vehicle-list>
    • <part-list>
    • <date-list>
    • <calculating-list> (incluant lui-même <price-list>, <part-list>, <operation-list>, <time-list>)

Voir la structure globale des messages XAT2V2 : [+ détails]

L’élément <session-context> (inclus dans l’élément <xat2>), est une liste d’une ou plusieurs données permettant d’identifier l’émetteur du message, pour déterminer ses droits d’accès et autoriser – ou pas – le traitement de son message.

 

Cette identification peut se faire…

  1. À partir d’un quadruplet d’identifiants :
    • <application-id> : identifiant unique de l’application Partenaire, qui permet son identification par le site serveur. Ce n’est pas un paramètre de connexion de l’utilisateur, il est identique pour tous les utilisateurs de la même application.
    • <dms-login> : identifiant de l’application Partenaire sur son site d’utilisation (il est spécifique au garage de l’utilisateur).
    • <garage-shared-id> : identifiant du garage de l’utilisateur.
    • <user-shared-id> : identifiant de l’utilisateur.

    [+ détails]

  2. OU à partir de l’identifiant unique de la session sur le serveur <session-id>, créé suite à un 1er échange.
    L’utilisation de cet identifiant de session permet d’économiser l’étape d’identification de l’appelant, lors du traitement des requêtes suivantes.
    Note : cet identifiant peut comporter jusqu’à 64 caractères.
    [+ détails]

L’élément <date-list> permet d’horodater la réponse à un message (date d’arrivée du message, date du traitement de la requête…) ou de compléter une donnée métier par une date.

 

Les dates sont représentées par des éléments de type ExplicitDateType.
Un élément de ce type représente une date et sa signification, via l’usage d’une Classification.
La date en elle-même est spécifiée en tant que valeur de l’élément <date>. Le format de la date est spécifié dans l’attribut format. Ce format suit le modèle Java.

 

Deux exemples d’utilisation de l’élément <date-list> : [+ détails]

L’élément <message-list> comporte une liste de messages de réponses du serveur XAT2, indiquant le résultat des traitements effectués.

 

Il doit être lu directement dans la réponse du message envoyé par la méthode POST :

 

  1. Dans l’élément <xat2> s’il s’agit d’un message protocolaire, indiquant le bon déroulement du service ou au contraire, un problème de communication. Les messages proviennent du dictionnaire de référence Xat2:message.
    • Accusé de réception « ack », indiquant le bon déroulement du service
      [+ détails]
    • Message d’alerte
      [+ détails]
    • Message d’erreur
      [+ détails]

     

  2. Dans l’élément <transport> s’il s’agit d’un message métier.
    Par exemple :

    • Message d’information sur le statut d’un panier de pièces envoyé vers un Distributeur.
      [+ détails]
    • Message d’erreur concernant l’identification impossible du dossier envoyé par l’application Partenaire
      [+ détails]

L’élément <uri-list> (inclus dans l’élément <xat2>), permet d’envoyer une liste d’adresses, en précisant leur utilité dans l’élément <uri-service>.

 

Par exemple :

  • Une application Partenaire peut envoyer son adresse de contact :
    <xat2 xmlns="http://xat2.etai.fr" version="2.0"/>
      <uri-list>
        <uri-service action="DMSaddress" direct-access="false">
          <uri>http://{adresse application Partenaire}</uri>
        </uri-service>
      </uri-list>
    </xat2>

    Note : l’attribut direct-access prend deux valeurs, true ou false.

    • true : l’application Partenaire est accessible en mode direct.
    • false : l’application Partenaire est accessible en mode indirect (l’application E.T.A.I envoie un ordre de redirection au navigateur de l’utilisateur).

     

  • Une application E.T.A.I peut répondre à une requête en donnant son adresse d’ouverture :
    <xat2 xmlns="http://xat2.etai.fr" version="2.0"/>
      <uri-list>
        <uri-service action="Display" direct-access="true">
          <uri>http://{nom de domaine}/rest/../xat2disp</uri>
        </uri-service>
      </uri-list>
    </xat2>

    Note : cette adresse d’ouverture doit être complétée avec l’identifiant unique de la session créée. Par exemple :
    http://{nom de domaine}/rest/../xat2disp?sessionid={valeur de l'identifiant de la session}

La création d’une session XAT2 se fait en émettant une requête avec un verbe explicité dans l’élément <action-list> (inclus dans l’élément <transport>).
Le verbe indique clairement le traitement dont la requête doit faire l’objet. La présence de cet élément est donc obligatoire.
[+ détails]


Ce verbe peut être :

  • Le verbe standard createSession. Ce  verbe est automatiquement connu de tout serveur gérant les sessions XAT2.
  • Tout autre verbe métier dont le traitement entraîne la création d’une session, si nécessaire. Ces verbes dépendent du service demandé et de l’application invoquée et sont listés en page de Carte d’identité des Services. Certains serveurs XAT2, pour des raisons pratiques, incluent la création de session à un ou plusieurs de leurs verbes.
  • Le verbe deleteSession, pour invalider la session en cours. Même si une session est automatiquement invalidée suite à une période d’inaction (dont la durée est configurable), il est demandé de limiter les ressources consommées par le serveur pour la gestion des sessions, en invalidant la session dès que le résultat a été reçu.

Pour certains serveurs, un même verbe peut posséder plusieurs déclinaisons. Dans ce cas, il est possible de compléter le verbe avec une ou plusieurs options.
La signification d’une option dépend totalement du service invoqué.
[+ détails]

 

Cas particulier de l’option « force » : elle permet de forcer la connexion au service demandé par le verbe.
Si, au moment du démarrage du service, un utilisateur est déjà connecté avec les mêmes identifiants que ceux de l’élément <session-context> :

  • en présence de <option>force</option>, la session de cet utilisateur est invalidée par le nouveau service.
  • en absence de cette option « force », le serveur XAT2V2 répond que la connexion est impossible. Le message est de type « ack » avec la référence « inWork » du dictionnaire Xat2:message.

 

Chaînage des verbes : une même requête XAT2 peut contenir plusieurs verbes. Dans ce cas, le serveur traite le message en lui appliquant chaque verbe, dans l’ordre dans lequel ils apparaissent dans l’élément <action-list>.
L’échec du traitement d’un verbe peut éventuellement stopper la chaîne de traitement (ce comportement est déterminé par le serveur).
Dans tous les cas, la réponse indique le résultat du traitement de chaque verbe, dans l’élément <message-list>.

La présence de l’élément <partner> (inclus dans l’élément <transport>) est fortement recommandée.

 

Cet élément permet d’identifier :

  • l’application Partenaire communiquant avec l’application E.T.A.I. :
    <xat2 xmlns="http://xat2.etai.fr" version="2.0"/>
      <shuttle>
        <transport>
          <partner>
            <name>{DMSname}</name>
            <editor dictionary="ETAI:editor" ref="{editorRef}"/>
            <version-code>{DMSversion}</version-code>
          </partner>
          <action-list>
          [...]
          </action-list>
        </transport>
      </shuttle>
    </xat2>
  • ou l’application E.T.A.I s’adressant à la plateforme d’un Distributeur :
    <partner>
      <name>{Application E-T-A-I}</name>
      <editor dictionary="ETAI:editor" ref="etai"/>
      <version-code>{applicationVersion}</version-code>
    </partner>

Placé dans l’élément <shuttle>, l’élément <admin-list> permet de déclarer les informations suivantes :

 

  • Dans l’élément <transport>, les identifiants du dossier, tels que :
    • L’identifiant du dossier dans la base de l’application Partenaire : partner
    • L’identifiant du dossier dans la base de l’application E.T.A.I : calculating
    <shuttle>
      <transport>
        <admin-list>
          <admin dictionary="ETAI:breakdown" ref="file" source="partner">88</admin>
          <admin dictionary="ETAI:breakdown" ref="file" source="calculating">99</admin>
        </admin-list>
      </transport>
      [...]
    </shuttle>
    • Le cas échéant, l’identifiant d’un panier/commande et/ou le numéro d’un bon de livraison
    <shuttle>
      <transport>
        <admin-list>
          <classification dictionary="ETAI:admin" ref="fileNumber" source="etai">{basketId}</admin>
          <classification dictionary="ETAI:admin" ref="deliveryNumber">{deliveryNumberValue}</classification>
        </admin-list>
      </transport>
    </shuttle>
  • Dans l’élément <file-list>, le numéro d’agrément d’une assurance associée à un dossier :
    <shuttle>
      <transport>
        [...]
      </transport>
      <file-list>
        <file>
          <admin-list>
            <classification dictionary="ETAI:agreement" ref="insurer">{agreementNumberValue}</classification>
          </admin-list>
        </file>
      </file-list>
      [...]
    </shuttle>

Rappel : ces différents éléments ne doivent être présents que dans le cas où il est nécessaire de transmettre une information.

Dans l’élément <settings> (inclus dans l’élément <shuttle>), peuvent être déclarés certains des paramètres suivants, utiles à l’élaboration des chiffrages :

 

  • Les taux de main-d’œuvre et les taux d’ingrédient de peinture, dans l’élément <labor-list>
    [+ détails]
    Les taux de main-d’œuvre sont caractérisés par l’élément <classification> faisant référence au dictionnaire ETAI:sector. Le taux de technicité est défini via le dictionnaire ETAI:level.
    Les valeurs possibles sont :

    • {sectorValue} : mechanical (mécanique) / body (carrosserie) / paint (peinture)
    • {levelValue} : 1 / 2 / 3

    Note : les applications E-T-A-I gèrent 3 niveaux de taux de mécanique (M1, M2, M3) et 3 niveaux de taux de carrosserie (T1, T2, T3), mais un seul taux de peinture P1.

     

    Les taux d’ingrédient de peinture sont caractérisés par l’élément <classification> faisant référence au dictionnaire ETAI:sector. Le taux d’ingrédient est défini via le dictionnaire ETAI:paint.
    Les valeurs possibles sont :

    • {sectorValue} : paint
    • {paintValue} : opaque (opaque) / varnished (vernie) / pearly (nacrée) / iridescent (irisée)

     

  • Les taux de TVA, dans l’élément <VAT-list>
    [+ détails]
  • Les différents types de remise, dans l’élément <discount-list>
    Note : si une remise ne s’applique qu’à un seul élément, elle n’a pas d’applicabilité et n’est pas déclarée ici.
    [+ détails]

Note importante pour les éléments <labor-list>, <VAT-list>, <discount-list>
Il est nécessaire d’utiliser des références internes (internal-id) pour lier :

  • les temps des opérations aux différents taux de main-d’œuvre ;
  • les prix aux taux de TVA ;
  • les prix aux remises.

À savoir : des valeurs par défaut – telles que l’unité de temps des opérations de main-d’œuvre (heure), l’unité de valeur monétaire (euro), la langue utilisée – peuvent être définies par défaut dans l’élément <default-shuttle-settings>, inclus dans l’élément <shuttle>.

<shuttle>
  <transport>
    [...]
  </transport>
  <default-shuttle-settings>
    <time-unit dictionary="ETAI:unit" ref="hour" />
    <currency dictionary="ETAI:unit" ref="euro" />
    <language dictionary="ETAI:language" ref="FR" />
  </default-shuttle-settings>
  [...]
</shuttle>

Dans l’élément <person-list> (inclus dans l’élément <shuttle>), sont déclarées les informations relatives aux différents intervenants : Client / Lésé (dans un dossier d’assurance) / Garage / Réseau du garage / Distributeur.

 

Excepté la qualité de l’intervenant, qui est obligatoire et définie via le dictionnaire ETAI:person, la présence des autres informations dépend du service concerné (voir les détails dans les cartes d’identité techniques de chaque service).
Les informations possibles sont :

  • Le nom et la civilité de l’intervenant : <name>, <firstname>, <title>
  • L’adresse : <place>
  • Les moyens de contact : <contact-list>
  • Les numéros d’agréments du client ou du garage : <agreement-list>
  • Les identifiants dans l’application E-T-A-I et/ou l’application Partenaire : <classification-list>
  • Le délai de paiement du client : <payment-delay>

[+ détails]


Note : dans certains cas (en réponse à une demande de stocks de pièces), il est possible de définir un lieu de stockage en le rattachant à un élément <person> de type "storageLocation".
[+ détails]

Inclus dans l’élément <shuttle>, la présence de l’élément <vehicle-list> est optionnelle.
Cet élément peut contenir (selon les flux xat2) de 1 à N éléments <vehicle>.

 

Dans chacun de ces éléments, peuvent être déclarées certaines des informations suivantes, fonction de l’attribut source :

  1. <vehicle> ou <vehicle source="partner"> ou <vehicle source="etai">
    • Le nom : <label>
    • Les identifiants Marque / Modèle / Variante / Version : <identification>
    • Les identifiants administratifs : <alternative-ref-list>
    • Les dates relatives au véhicule (1ère immatriculation, achat, contrôle technique…) : <date-list>
    • La couleur et la teinte du véhicule, son type de peinture : <color>
    • Le kilométrage du véhicule : <mileage-list>
    • Le prix HT du véhicule neuf : <price-list>
    • Les équipements du véhicule : <equipment-list>
    • Les données techniques telles que le carburant, la cylindrée, la boîte de vitesses, la puissance fiscale, le type de carrosserie, le nombre de portes…
    • La catégorie et la nationalité du véhicule : <vehicle-classification>
    • L’assurance du véhicule : <policy>
    • Le sinistre impliquant le véhicule : <accident>

    Voir exemple 1 : [+ détails]

  2. <vehicle source="calculating"> : dans cet élément, sont transférées des données du lésé ou du client relatives au véhicule.
    Voir exemple 2 : [+ détails]
  3. <vehicle source="3A">
    L’ensemble des critères « AAA » ou « 3A » (du nom de l’Association Auxiliaire de l’Automobile gérant le fichier des cartes grises françaises) est disponible via le dictionnaire "3A:vehicle".
    Voir exemple 3 : [+ détails]

Inclus dans l’élément <shuttle>, la présence de l’élément <part-list> est optionnelle.
L’élément <part-list> peut contenir de 1 à N éléments <part>, décrivant des pièces / ingrédients / pneus.

 

Note : cet élément <part-list> peut aussi être inclus dans l’élément <calculating-list>, lorsqu’il s’agit de décrire les pièces / ingrédients / pneus d’un chiffrage.

 

Dans chacun de ces éléments <part>, sont déclarés obligatoirement le type de l’élément (via le dictionnaire "ETAI:breakdown") et optionnellement les informations suivantes :

  • Le nom : <label>
  • Les références : <reference-list>
  • Le fournisseur : <supplier>
  • La famille et la sous-famille de l’élément : <classification-list>
  • La quantité : <quantity>
  • Le conditionnement : <packaging-list>
  • Le stock (type, quantité, disponibilité) : <stock-list>
  • Le taux de vétusté d’une pièce : <decay-rate-list>
  • Le prix : <price-list>
  • Le lien de la pièce avec le numéro d’un choc : <impact-link-list>
  • Le statut de l’élément : <status>

[+ détails]

L’élément <price-list> peut être présent dans les éléments suivants :

  • <part-list> : pour chaque élément <part> (décrivant des pièces / ingrédients / pneus), il est possible de définir un prix unitaire ou par lot, un prix d’achat ou de vente, avec remise et vétusté éventuelles.
    Voir exemple 1 : [+ détails]
  • <operation-list> : pour chaque élément <operation>, le prix peut correspondre à
    • un temps multiplié par le taux de main-d’œuvre adapté,
    • l’addition du prix des pièces et du temps multiplié par le taux de main-d’œuvre (coût global d’une opération, d’un plan d’entretien ou d’un forfait),
    • un prix unitaire, dans le cas des opérations de retraitement des déchets ou de consigne/déconsigne

    Voir exemple 2 : [+ détails]

  • <calculating-list> : prix totaux d’un chiffrage / devis / panier.
    Voir exemple 3 : [+ détails]
  • <vehicle-list> : prix du véhicule neuf, de ses équipements optionnels, valeur résiduelle du véhicule.
    Tous ces points sont détaillés dans l’onglet <vehicle-list>.

La liste des opérations d’un chiffrage est décrite dans 1 à N éléments <operation>, de l’élément <operation-list>, lui-même inclus dans l’élément <calculating-list>.

 

Si nécessaire (selon les applications E-T-A-I), une liste d’opérations peut être éventuellement liée à un accident, via la référence interne d’un numéro de choc (voir description de l’élément <accident> dans l’onglet <vehicle-list>).
Par exemple : <operation-list impact-internal-id="ID115">

 

Il existe plusieurs types d’opérations, classés selon les références suivantes du dictionnaire "ETAI:breakdown" :

  • Référence "labor" : concerne le temps d’une opération principale (classification : référence "main" dans le dictionnaire "ETAI:operationType"), complété éventuellement par
    • des opérations supplémentaires (référence "additionnal" dans le même dictionnaire)
    • des opérations YC (Y Compris) (référence "include" dans le même dictionnaire)
    • et des opérations NC (Non Compris) (référence "exclude" dans le même dictionnaire)
  • Référence "servicePlan" pour un plan d’entretien.
    Ce plan d’entretien peut lui-même contenir des opérations supplémentaires, ainsi que des opérations YC et NC.
  • Référence "depositBack" pour une opération de consigne.
  • Référence "wasteTreatment" pour une opération de retraitement des déchets.
  • Référence "nationalPackageDeal" pour des forfaits nationaux
  • Référence "packageDeal" ou "laborPackageDeal" ou "ptiPackageDeal" pour des forfaits locaux de différents types. Pour le  "packageDeal", le type doit être précisé via le dictionnaire "ETAI:packageDealType".

[+ détails]

L’élément <time-list>, inclus dans l’élément <calculating-list>, comporte différentes informations, selon les applications concernées.

 

Description basique du temps d’une opération :

<shuttle>
  <calculating-list>
    <calculating>
      <operation-list>
        <operation>

          <time-list>
            <time labor-internal-id="{laborInternalIdValue}">
            <!-- {laborInternalIdValue} fait référence à un taux de main-d'oeuvre 
            défini dans l’élément <settings> -->
              <value value-type="time">
                <!-- {timeValue} est un nombre décimal, avec une précision au centième 
                (exemple : 1.15). L’unité de temps est définie par défaut 
                dans l’élément <default-shuttle-settings> -->
                <amount>{timeValue}</amount>
              </value>
            </time>
          </time-list>

        </operation>
      </operation-list>
    </calculating>
  </calculating-list>
</shuttle>

Cas particulier des temps d’une opération composée qui comporterait plusieurs temps faisant appel à des activités différentes (mécanique / tôlerie / électricité / sellerie) et pour lesquels les taux de MO sont différents.

 

Par exemple, l’opération de remplacement de l’unité hydraulique ABS d’un véhicule pourrait nécessiter :

  • 0.50 h d’opération de tôlerie (taux de MO T1): déposer/poser roues et écrans pare-boue,
  • 0.90 h d’opération de mécanique (taux de MO M1) pour remplacer l’unité,
  • 0.45 h d’opération de mécanique (taux de MO M2) pour purger le circuit de freinage,
[...]
  <operation-list>
    <operation>
      <time-list>
        <!-- 0.50 h d’opération de tôlerie (identifiant interne du taux de MO : T1) -->
        <time labor-internal-id="T1">
          <value value-type="time">
            <amount>0.50</amount>
            <amount-of>
              <classification dictionary="ETAI:unit" ref="unit" />
            </amount-of>
          </value>
          <activity-list>
            <classification dictionary="ETAI:sector" ref="bodywork">TOL</classification>
          </activity-list>
        </time>
        <!-- 0.90 h d’opération de mécanique (identifiant interne du taux de MO : M1) -->
        <time labor-internal-id="M1">
          <value value-type="time">
            <amount>0.90</amount>
            <amount-of>
              <classification dictionary="ETAI:unit" ref="unit" />
            </amount-of>
          </value>
          <activity-list>
            <classification dictionary="ETAI:sector" ref="mechanical">MEC</classification>
          </activity-list>
        </time>
        <!-- 0.45 h d’opération de mécanique (identifiant interne du taux de MO : M2) -->
        <time labor-internal-id="M2">
          <value value-type="time">
            <amount>0.45</amount>
            <amount-of>
              <classification dictionary="ETAI:unit" ref="unit" />
            </amount-of>
          </value>
          <activity-list>
            <classification dictionary="ETAI:sector" ref="mechanical">MEC</classification>
          </activity-list>
        </time>
        <!-- Temps total de l’opération -->
        <time>
          <value value-type="time">
            <amount>1.85</amount>
            <amount-of>
              <classification dictionary="ETAI:unit" ref="packet" />
            </amount-of>
          </value>
        </time>
      </time-list>
    </operation>
  </operation-list>
[...]

Structure globale de l’élément <calculating-list> :

<shuttle>
  <calculating-list>
    <calculating>
      <price-list>[...]</price-list>
      <part-list>[...]</part-list>
      <operation-list>[...]</operation-list>
      <time-list>[...]</time-list>
    </calculating>
  </calculating-list>
</shuttle>