Command Message
Le message ordre — une intention claire d'action.
Problème
Comment exprimer dans la messagerie qu'on veut qu'un destinataire fasse quelque chose ? Le format doit être clair, identifiable, sans ambiguïté.
Forces
- Confondre une commande avec une notification mène à des bugs (action exécutée deux fois ou jamais).
- Les commandes peuvent échouer — il faut une convention de rejet.
- Les commandes en EDI sont souvent des messages-types spécifiques (ORDERS, ORDCHG, ORDRSP).
Solution
Distinguer explicitement un Command Message d'un Document/Event Message. Conventions : (1) verbe à l'impératif dans le type (CreateOrder, CancelInvoice), (2) attente d'un acknowledgement positif/négatif, (3) intent identifiable dans le header. En EDI : ORDERS = Command (passe la commande), ORDRSP = Document Response.
Implémentation EDI
En EDI, le Command Message est typiquement le message-amont du cycle PO : ORDERS (EDIFACT) / 850 (X12) sont des commandes au sens EIP — 'passe cette commande, je veux ces produits'. ORDCHG / 860 = Modify command. ORDERS-CANCEL implicite via ORDCHG avec quantité 0 = Cancel command. L'acknowledgement est ORDRSP / 855.
Anti-patterns
- Un Command Message sans réponse attendue — l'émetteur ne sait jamais si l'action a réussi.
- Plusieurs commandes dans un seul message sans corrélation — l'émetteur ne sait pas laquelle a échoué.
- Confondre Command et Event — un INVOIC est un Document Event ('j'ai facturé'), pas un Command ('facture-moi').
Patterns liés
- Document Message — pattern complémentaire.
- Event Message — troisième style.
Sources
- Hohpe G., Woolf B. — EIP, Command Message (p. 145). www.enterpriseintegrationpatterns.com/patterns/messaging/CommandMessage.html