- Τα business events στο ADF προέρχονται αποκλειστικά από entities
- Ως συνέπεια του παραπάνω είναι δύσκολο να "κουβαλήσουν" συνδυαστικά attributes, υπολογιζόμενα ή από άλλες οντότητες
- Τα namespaces των business events είναι άμεσα συνδεδεμένα με το packaging των ADF entities, γεγονός που δεν είναι πολύ κομψό είτε για λόγους refactoring είτε για reusability από άλλες πηγές πληροφορίας
- Ενεργοποιώντας τα business events σε PL/SQL, μπορούμε να ξεκινήσουμε ροές απευθείας από τον embedded Weblogic του JDeveloper, διαφορετικά θα χρειαστεί να "πειράξουμε" τον embedded Weblogic ώστε να περιλαμβάνει τις SOA βιβλιοθήκες
Από την πλευρά της PL/SQL θα πρέπει τα διάφορα SOAINFRA σχήματα να επιτρέψουν την εκτέλεση της συνάρτησης edn_publish_event() στο κύριο σχήμα της εφαρμογής (πχ app_schema)
grant execute on edn_publish_event to app_schema;
Έπειτα στο σχεσιακό μας σχήμα και στην PL/SQL που θα ξεκινήσει το business event, θα γράψουμε μια δυναμική SQL ώστε να προσδιορίσουμε το SOA σχήμα στο οποίο θα καταλήξει το event. Για να διακρίνουμε τους χρήστες/προγραμματιστές μας ως προς τα σχήματα που χρησιμοποιούν θα χρησιμοποιήσουμε το package DBMS_APPLICATION_INFO (http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_appinf.htm) το οποίο μπορεί να κουβαλήσει σε κάθε session μια εξτρα πληροφορία, ορατή από το v$session, που μπορούμε αυθαίρετα να ορίσουμε. Έτσι λοιπόν, μπορούμε να γράψουμε κάτι σαν το εξής:
l_soa_schema VARCHAR2(32); ... dbms_application_info.read_client_info(l_soa_schema); execute immediate 'begin ' || l_soa_schema || '.edn_publish_event(...';
Αυτό που απομένει είναι τώρα η αρχικοποίηση του client info. Έχοντας την αντιστοίχηση του κάθε ενός προγραμματιστή με ένα SOA σχήμα, μπορούμε να χρησιμοποιήσουμε τη δυνατότητα εκτέλεσης μιας εντολής SQL σε κάθε άνοιγμα νεάς σύνδεσης στο Weblogic. Έτσι, για παράδειγμα μπορούμε να ορίσουμε ως SQL την αρχικοποίηση του session metadata για το τρίτο σχήμα του SOA.
SQL BEGIN DBMS_APPLICATION_INFO.SET_CLIENT_INFO('DEV03_SOAINFRA'); END;
Συνεπώς οποιαδήποτε νέα σύνδεση που ξεκινά από αυτό το connection pool θα έχει το αναγνωριστικό 'DEV03_SOAINFRA' που θα αξιοποιηθεί από την PL/SQL για την εκκίνηση του business event στον κατάλληλο SOA Server.
No comments:
Post a Comment