Skip to content
integrations.gr
Μενού
← Όλα τα άρθρα

Mapping & μορφές δεδομένων

Mapping παραγγελίας από JSON σε XML με maps και profiles στο Boomi

Από παραγγελία e-shop σε JSON σε παραγγελία ERP σε XML: profiles από δείγματα, Map με functions για ημερομηνία, συνένωση και lookup, και έλεγχος βήμα βήμα στο Boomi.

Από Ομάδα integrations.gr6 λεπτά ανάγνωσης

Read this article in English →

Το e-shop στέλνει τις νέες παραγγελίες σε JSON. Το ERP δέχεται παραγγελίες σε XML. Ανάμεσά τους υπάρχει ένα mapping, και από την ποιότητά του εξαρτάται αν οι παραγγελίες μπαίνουν σωστά στο ERP ή αν κάποιος τις ξαναπληκτρολογεί κάθε πρωί. Σε αυτό το άρθρο εξηγούμε πώς προσεγγίζεται ένα τέτοιο mapping σε οποιοδήποτε εργαλείο, και μετά το φτιάχνουμε στο Boomi.

Γιατί το «απλώς αντιγράφω τα πεδία» αποτυγχάνει

Στο χαρτί τα δύο έγγραφα μοιάζουν: και τα δύο έχουν πελάτη, ημερομηνία, γραμμές και σύνολο. Στην πράξη διαφέρουν με τρόπους που φαίνονται μόνο με πραγματικά δεδομένα:

  • Δομή. Το e-shop έχει εμφωλευμένο customer.billing.city, το ERP θέλει επίπεδο <BillCity>.
  • Μορφές. Το e-shop στέλνει 2026-10-23T14:05:00Z, το ERP θέλει 23/10/2026.
  • Κωδικοί. Το e-shop λέει "payment": "card", το ERP περιμένει τρόπο πληρωμής 07.
  • Σύνθετα πεδία. Το ERP έχει ένα πεδίο <CustomerName>, το e-shop έχει firstName και lastName.
  • Επαναλαμβανόμενα δεδομένα. Κάθε παραγγελία έχει μεταβλητό αριθμό γραμμών που πρέπει να γίνουν επαναλαμβανόμενα XML στοιχεία.

Η αντιγραφή πεδίο προς πεδίο δεν καλύπτει τίποτα από αυτά. Η προσέγγιση που δουλεύει είναι πρώτα να περιγράψετε με ακρίβεια και τις δύο μορφές (με schemas ή profiles από δείγματα), να γράψετε έναν κανόνα για κάθε πεδίο προορισμού, και μετά να υλοποιήσετε και να ελέγξετε τους κανόνες με πραγματικά δείγματα.

Το παράδειγμα

Η παραγγελία από το e-shop:

{
  "id": "WEB-58211",
  "createdAt": "2026-10-23T14:05:00Z",
  "payment": "card",
  "customer": {
    "id": "C-1042",
    "firstName": "Ελένη",
    "lastName": "Παπαδοπούλου",
    "billing": { "street": "Ερμού 12", "city": "Αθήνα", "zip": "10563" }
  },
  "lines": [
    { "sku": "TSH-001-M", "qty": 2, "price": 19.90 },
    { "sku": "MUG-014", "qty": 1, "price": 8.50 }
  ]
}

Η παραγγελία που περιμένει το ERP:

<SalesOrder>
  <ExternalRef>WEB-58211</ExternalRef>
  <OrderDate>23/10/2026</OrderDate>
  <CustomerCode>C-1042</CustomerCode>
  <CustomerName>Ελένη Παπαδοπούλου</CustomerName>
  <BillCity>Αθήνα</BillCity>
  <PaymentMethod>07</PaymentMethod>
  <Lines>
    <Line><ItemCode>TSH-001-M</ItemCode><Qty>2</Qty><UnitPrice>19.90</UnitPrice></Line>
    <Line><ItemCode>MUG-014</ItemCode><Qty>1</Qty><UnitPrice>8.50</UnitPrice></Line>
  </Lines>
</SalesOrder>

Πριν φτιάξετε οτιδήποτε, γράψτε τους κανόνες σε έναν μικρό πίνακα: πεδίο προορισμού, πεδίο πηγής, κανόνας. Για παράδειγμα OrderDate ← createdAt, μετατροπή σε τοπική ημερομηνία dd/MM/yyyy· PaymentMethod ← payment, lookup. Αυτός ο πίνακας είναι η προδιαγραφή του mapping και το σημείο αναφοράς για το testing.

Υλοποίηση στο Boomi

Στο Boomi, η δομή κάθε εγγράφου περιγράφεται από ένα profile, και ο μετασχηματισμός ανάμεσα σε δύο profiles είναι ένα Map component, που μπαίνει σε ένα process μέσω του shape Map.

Βήμα 1: Profiles από δείγματα

  1. Δημιουργήστε ένα νέο Profile component τύπου JSON. Χρησιμοποιήστε την επιλογή import και διαλέξτε ένα αρχείο με την παραπάνω παραγγελία. Το Boomi φτιάχνει το δέντρο των στοιχείων, με το lines ως επαναλαμβανόμενο array.
  2. Ελέγξτε τα στοιχεία που δημιουργήθηκαν. Ορίστε τύπο δεδομένων όπου μετράει: qty και price ως αριθμούς, createdAt ως date/time με τη μάσκα που αντιστοιχεί στη μορφή του e-shop. Αφήστε τα id και sku ως χαρακτήρες, ώστε να μη χαθούν αρχικά μηδενικά σε κωδικούς.
  3. Δημιουργήστε ένα Profile component τύπου XML και κάντε import το XSD του ERP αν το έχετε, αλλιώς ένα δείγμα XML παραγγελίας. Το XSD είναι καλύτερο: φέρνει υποχρεωτικά πεδία, μήκη και τύπους.
  4. Βεβαιωθείτε ότι το <Line> είναι επαναλαμβανόμενο (max occurs μεγαλύτερο από ένα). Αν το import έγινε από δείγμα με μία μόνο γραμμή, ίσως χρειαστεί να το διορθώσετε χειροκίνητα.

Χρησιμοποιήστε δείγμα με πραγματικούς ελληνικούς χαρακτήρες. Είναι ο φθηνότερος τρόπος να βρείτε νωρίς προβλήματα κωδικοποίησης.

Βήμα 2: Το Map

Δημιουργήστε ένα νέο Map component και ορίστε το JSON profile ως πηγή και το XML profile ως προορισμό. Μετά συνδέστε τα πεδία:

  • Απευθείας συνδέσεις. Σύρετε το id στο ExternalRef, το customer/id στο CustomerCode, το customer/billing/city στο BillCity.
  • Γραμμές. Συνδέστε lines/sku με Line/ItemCode, qty με Qty, price με UnitPrice. Επειδή και οι δύο πλευρές είναι επαναλαμβανόμενες, το Boomi δημιουργεί ένα <Line> για κάθε στοιχείο του array.

Βήμα 3: Map functions

Οι map functions μπαίνουν ανάμεσα σε πεδία πηγής και προορισμού και μετασχηματίζουν τις τιμές στη διαδρομή. Τις προσθέτετε από την περιοχή functions του map.

Μορφή ημερομηνίας. Προσθέστε μια function Date Format (στην κατηγορία ημερομηνιών). Ορίστε τη μάσκα εισόδου ώστε να ταιριάζει στο createdAt και τη μάσκα εξόδου dd/MM/yyyy. Εναλλακτικά, αν και τα δύο στοιχεία των profiles είναι τύπου date/time με τις δικές τους μάσκες, το Boomi μετατρέπει αυτόματα από τη μία μάσκα στην άλλη όταν τα συνδέσετε απευθείας. Διαλέξτε μία προσέγγιση και κρατήστε τη σταθερά.

Εδώ υπάρχει μια παγίδα: το createdAt είναι σε UTC. Μια παραγγελία στη 01:30 ώρα Αθήνας είναι ακόμη την προηγούμενη μέρα σε UTC. Αν η ημερομηνία παραγγελίας στο ERP πρέπει να είναι η τοπική, μετατρέψτε τη ζώνη ώρας πριν από τη μορφοποίηση. Ανάλογα με την έκδοση, αυτό γίνεται με μάσκες ημερομηνίας που περιλαμβάνουν offset ή με μια μικρή scripting function· ελέγξτε το με παραγγελία λίγο μετά τα μεσάνυχτα.

Συνένωση. Προσθέστε μια function String Concat (στην κατηγορία strings), συνδέστε firstName και lastName ως εισόδους, ορίστε κενό ως διαχωριστικό και συνδέστε την έξοδο στο CustomerName.

Lookup. Για τους τρόπους πληρωμής, η πιο γρήγορη επιλογή είναι μια function Simple Lookup: ένας μικρός πίνακας δύο στηλών μέσα στο map, για παράδειγμα card → 07, cod → 03, bank → 06. Συνδέστε το payment στην είσοδό της και την έξοδο στο PaymentMethod.

Το Simple Lookup αρκεί για ένα πρωτότυπο. Για κωδικούς που αλλάζουν ή διαφέρουν ανά περιβάλλον, χρησιμοποιήστε Cross Reference Table· το δείχνουμε στο Μετάφραση κωδικών ανάμεσα σε συστήματα με τα Cross Reference Tables του Boomi.

Προεπιλογές. Για πεδία προορισμού με σταθερή τιμή, όπως ο κωδικός εταιρείας, χρησιμοποιήστε default value στο στοιχείο προορισμού αντί για function.

Βήμα 4: Το map μέσα σε process

Φτιάξτε ένα process για δοκιμές: ένα shape Start χωρίς δεδομένα, ένα shape Message με το δείγμα JSON, μετά το shape Map με το map σας, και ένα shape Stop. Στην παραγωγή, το Message θα αντικατασταθεί από τον connector ή τον listener του e-shop, αλλά όσο φτιάχνετε το map θέλετε σταθερή, επαναλήψιμη είσοδο.

Μια πρακτική σημείωση για το shape Message: αντιμετωπίζει τις αγκύλες { } ως placeholders μεταβλητών, οπότε το JSON πρέπει να μπει μέσα σε μονά εισαγωγικά για να διαβαστεί αυτούσιο. Κάθε απόστροφος μέσα στο JSON πρέπει τότε να διπλασιαστεί.

Βήμα 5: Testing

  1. Πατήστε Test, διαλέξτε test runtime (ένα Atom ή ένα test cloud διαθέσιμο στον λογαριασμό σας) και τρέξτε.
  2. Όταν τελειώσει η εκτέλεση, επιλέξτε το shape Map και ανοίξτε το έγγραφο που βγήκε από αυτό. Συγκρίνετε το XML με την αναμενόμενη παραγγελία παραπάνω.
  3. Ελέγξτε όσα συνήθως πάνε στραβά: ελληνικοί χαρακτήρες ανέπαφοι, δύο στοιχεία <Line>, τιμές με τελεία ως υποδιαστολή, OrderDate στη σωστή μορφή και μέρα.
  4. Αλλάξτε το δείγμα και ξανατρέξτε: άγνωστος τρόπος πληρωμής, χωρίς lastName, παραγγελία στις 23:50 UTC. Σημειώστε τι κάνει το map σε κάθε περίπτωση και αποφασίστε αν αυτό θέλετε.

Τα ακριβή ονόματα των panels στο Test mode μπορεί να αλλάζουν από έκδοση σε έκδοση, αλλά η ιδέα μένει ίδια: κάθε shape κρατά τα έγγραφα που πέρασαν από αυτό, ώστε να βλέπετε πού χάλασε μια τιμή. Περισσότερα στο Testing των Boomi processes κατά την ανάπτυξη.

Πριν βγείτε σε παραγωγή

  • Αποφασίστε τι γίνεται με άγνωστους κωδικούς. Ένα lookup χωρίς αντιστοίχιση επιστρέφει κενή τιμή. Συνήθως θέλετε η παραγγελία να αποτύχει καθαρά, για παράδειγμα με ένα shape Decision ή Business Rules μετά το map.
  • Ελέγξτε τα μήκη απέναντι στο ERP. Αν το CustomerName έχει όριο 50 χαρακτήρων, αποφασίστε αν θα κόβετε ή θα απορρίπτετε, και κάντε το συνειδητά.
  • Κρατήστε τα δείγματα. Αποθηκεύστε τα δείγματα μαζί με την τεκμηρίωση του process. Είναι τα regression tests σας όταν αλλάξει το e-shop ή το ERP.
  • Κρατήστε την προδιαγραφή συγχρονισμένη. Όταν αλλάζετε το map, ενημερώνετε τον πίνακα, και αντίστροφα.

Συνοψίζοντας

Ένα καλό mapping ξεκινά με ακριβή περιγραφή και των δύο μορφών και έναν κανόνα για κάθε πεδίο. Στο Boomi, τα profiles κρατούν τις περιγραφές, το Map κρατά τους κανόνες, οι map functions χειρίζονται μορφές, συνενώσεις και lookups, και το Test mode σάς αφήνει να ελέγχετε κάθε αλλαγή με πραγματικά δείγματα. Για τη συνολική εικόνα των μορφών και των παγίδων, δείτε τον οδηγό για data mapping και μορφές δεδομένων.

Σχετικά άρθρα

Mapping & μορφές δεδομένων6 λεπτά ανάγνωσης

Μετάφραση κωδικών ανάμεσα σε συστήματα με τα Cross Reference Tables του Boomi

Κατηγορίες ΦΠΑ, τρόποι πληρωμής και κωδικοί αποθηκών διαφέρουν σε κάθε σύστημα. Πώς τους μεταφράζετε με Cross Reference Tables στο Boomi αντί για hardcoding, σωστά ανά περιβάλλον.

Αρχιτεκτονική & patterns5 λεπτά ανάγνωσης

Canonical data model στο Boomi

Σταματήστε να γράφετε mapping για κάθε ζευγάρι συστημάτων: σχεδιάστε ένα μικρό canonical μοντέλο παραγγελίας και υλοποιήστε το με κοινά profiles και maps στο Boomi.

Mapping & μορφές δεδομένων8 λεπτά ανάγνωσης

Data mapping και μορφές δεδομένων: πρακτικός οδηγός

JSON, XML, CSV, flat files και EDI, schemas, mapping πεδίων και lookups, και οι παγίδες που «σπάνε» τα integrations: κωδικοποιήσεις, υποδιαστολή, ημερομηνίες και ζώνες ώρας.