Mar 28, 2011

Κάνοντας testing σε business events του Oracle SOA Suite

Αναμφίβολα ένα από τα κυριότερα χαρακτηριστικά του Oracle SOA Suite 11g είναι η εκκίνηση και κατανάλωση business events (http://download.oracle.com/docs/cd/E17904_01/integration.1111/e10224/obe_intro.htm#CHDIBHBE) από διάφορα στοιχεία της πλατφόρμας όπως ADF BC, BPEL, BPM και η διακίνησή τους διαμέσου του EDN (Event Delivery Network) Πώς μπορούμε όμως να δοκιμάσουμε, με αυτοματοποιημένο, επαναληπτικό τρόπο ένα business event;

Αν συνδεθούμε στον Enterprise Manager και ανατρέξουμε στα business events που τρέχουν, τότε επιλέγοντας ένα από αυτά, παρουσιάζεται η επιλογή Test.

Πατώντας αυτό το κουμπί, βρισκόμαστε αντιμέτωποι με μια οθόνη που θα πρέπει να συμπληρώσουμε το payload του business event. Προτού αναφερθούμε στο τι θα πληκτρολογήσουμε σε αυτήν την περιοχή, ας συγκρατήσουμε δυο πληροφορίες: το όνομα του event και το namespace στο οποίο ανήκει.

Τώρα προκειμένου να μάθουμε τι μορφή του XML payload που προκύπτει από ένα business event, δεν έχουμε παρά να ενεργοποιήσουμε το business event logging (http://www.xenta.nl/blog/2010/05/09/oracle-soa-suite-11g-enable-logging-for-edn-events/) και να παράγουμε ένα δοκιμαστικό μήνυμα ώστε να μπορούμε να το αναπαράγουμε στην συνέχεια. O πίνακας που κρατάει το logging του EDN είναι ο edn_log_messages και βρίσκεται στο SOAINFRA σχήμα.

Έχοντας και αυτή την πληροφορία στα χέρια μας, μπορούμε να συμπληρώσουμε το XML payload στον Enterprise Manager αλλάζοντας απλά το id του μηνύματος (ώστε να διατηρήσουμε την μοναδικότητα των μηνυμάτων) και να πατήσουμε το κουμπί Publish. Επιπρόσθετα, για να κάνουμε έναν αυτοματισμό του testing μας, μπορούμε να στείλουμε απευθείας το XML payload στο message queue που τα διαχειρίζεται με την βοήθεια PL/SQL. Αναλυτικότερα, η PL/SQL procedure του SOAINFRA σχήματος με το signature:

procedure edn_publish_event(namespace in varchar2, local_name in varchar2, payload in clob, priority in binary_integer default 5)

είναι αυτό ακριβώς που ψάχνουμε. Γνωρίζοντας το namespace και το local name του event (που τα "ανακαλύψαμε" στον Enterprise Manager) καθώς και το XML payload, μπορούμε να καλέσουμε την procedure, κάνοντας commit στο τέλος. Το business event θα ξεκινήσει χωρίς να χρειαστεί να έχουμε στη διάθεση μας ένα user interface.

No comments: