Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών Οδηγός Εργαστηρίου ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ

Σχετικά έγγραφα
Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 10η Διάλεξη: Web Services

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

Υπηρεσίες Ιστού (Web Services) Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 9: Web Services. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

Κατανεμημένα Συστήματα με Java. Ενότητα # 18: Υπηρεσίες Ιστού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα

Η Γλώσσα WS-BPEL 2.0. Εργαστήριο Ανάλυσης Συστημάτων και Τεχνολογίας Λογισμικού. S3Laboratory

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ

Πίνακας Εικόνων. 22/04/2014 Έκδοση 3.0.1

ΚΕΦΑΛΑΙΟ 17: Web Services Εισαγωγή

Paybybank RESTful API GUIDE

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

PayByBank RESTful API GUIDE

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. DICOM Επικοινωνία Γενικά

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τµήµα ιοικητικής Επιστήµης και Τεχνολογίας ΥΛΟΠΟΙΗΣΗ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ - ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ JAVA.

Μηχανή εκτέλεσης ροών εργασίας για συστήματα χαμηλών προδιαγραφών

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.


Υπηρεσιοστρεφής Αρχιτεκτονική SOA (Service Oriented Architecture)

Επίσημη Εφημερίδα της Ευρωπαϊκής Ένωσης L 274/9

Η Γλώσσα WS-BPEL 2.0. Εργαστήριο Ανάλυσης Συστημάτων και Τεχνολογίας Λογισμικού. S3Laboratory

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 7 ο Εργαστήριο -

Τεχνολογίες ιαδικτύου

Η Γλώσσα WS-BPEL 2.0. Εργαστήριο Ανάλυσης Συστημάτων και Τεχνολογίας Λογισμικού. S3Laboratory

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΕΤΑΙΡΕΙΩΝ ΔΙΑΜΕΣΟΛΑΒΗΣΗΣ ΣΤΗ ΜΕΤΑΦΟΡΑ ΚΕΦΑΛΑΙΩΝ

Web Services. και SOAP

Η Γλώσσα WS-BPEL 2.0. Εργαστήριο Ανάλυσης Συστημάτων και Τεχνολογίας Λογισμικού. S3Laboratory

Χειμερινό εξάμηνο Διδάσκοντες: Ν. Παπασπύρου, Β. Βεσκούκης, Κ. Σαΐδης

Μεταπτυχιακή Διατριβή

Τεχνολογία Πολυμέσων. Ενότητα # 2: Εφαρμογές πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κατανεμημένα Συστήματα. Ενότητα # 11: Μηνυματοστρεφές ενδιάμεσο λογισμικό Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Περιεχόμενα. Πρόλογος... xiii

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική»

Περιγραφή Διαδικασίας Υποβολής Συναλλαγών από τις ΕΠΕΥ. Transaction Reporting System (TRS)

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. WSDLBook:

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA

Οδηγίες αξιοποίησης για τον Εκπαιδευτικό

Τα web services του παρατηρητηρίου τιμών ακολουθούν λογική REST και απαντούν σε GET requests ως ακολούθως:

Βιοϊατρική τεχνολογία

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

Εργαστηριακή Άσκηση 5

ΕΡΓΑΣΙΑ. (στο μάθημα: Τεχνολογίες Εφαρμογών Διαδικτύου του Η εξαμήνου σπουδών του Τμήματος Πληροφορικής & Τηλ/νιών)

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Λογισμικό Δικτύων Τετράδιο μαθητή

Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων ιαχείριση ικτύων ρ.αρίστη Γαλάνη Ακαδημαϊκό Έτος

Εφαρμογή Μεθοδολογίας ICONIX

ΟΔΗΓΟΣ ΔΙΑΣΥΝΔΕΣΗΣ για το Έργο «Ανάπτυξη Πλατφόρμας Παροχής Υπηρεσιών Αποστολής και Λήψης Σύντομων Μηνυμάτων»

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

ΕΘΝΙΚΟ & ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝ/ΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ

PayByBank RESTful API

ALERTS ή EDA (Event Driven Actions)

Γκέγκα Ευρώπη Κωστοπούλου Ειρήνη

Εισαγωγή στον Προγραμματισμό με C++

ΠΜΣ 513 ΤΕΧΝΟΛΟΓΙΑ ΗΛΕΚΤΡΟΝ ΙΚΟΥ ΕΜΠΟΡΙΟΥ ΥΠΟΧΡΕΩΤΙΚΗ ΕΡΓΑΣΙΑ 2015

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Ενότητα 1: Εισαγωγή στις Βάσεις Δεδομένων. Αθανάσιος Σπυριδάκος Διοίκηση Επιχειρήσεων

Διαγραφή Επιλέγετε Διαγραφή για να διαγράψετε μία ήδη υπάρχουσα διαδικασία εισαγωγής ASCII

ARTius με PostgreSQL

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Ταχύτητα, Απλότητα & Αξιοπιστία

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

ΑΝΑΛΥΤΙΚΟ ΩΡΟΛΟΓΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΚΑΤΑΡΤΙΣΗΣ

Σηµασιολογικές Υπηρεσίες Ιστού

Εγχειρίδιο χρήσης Intalio Designer Εγχειρίδιο χρήσης Intalio Designer

ΟΙ ΨΗΦΙΑΚΕΣ ΕΙΚΟΝΙΚΕΣ ΚΟΙΝΟΤΗΤΕΣ ΩΣ ΔΟΜΕΣ ΣΤΗΡΙΞΗΣ ΤΟΥ ΕΚΠΑΙΔΕΥΤΙΚΟΥ ΈΡΓΟΥ

ΥΠΟΥΡΓΕΙΟ ΕΘΝΙΚΗΣ ΠΑΙΔΕΙΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ ΠΟΛΥΜΕΣΑ- ΔΙΚΤΥΑ ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ

Μια διαδικτυακή υπηρεσία ελέγχου συμβατότητας ενός σχεδίου μαθήματος με το πρότυπο IMS-LD

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Έκδοση Εγγράφου: 1.2- Ημερομηνία Τελευταίας Ενημέρωσης: 21 Ιανουαρίου Upload zip αρχείων-

Διαβάστε στο Παράρτημα Α.1 πώς θα γράψετε ένα πρόγραμμα PHP για την παροχή δεδομένων σε μορφή διαφορετική από την HTML.

Προδιαγραφές διασύνδεσης ΠΣ ΑΤΛΑΣ με ΠΣ ΔΑΣΤΑ

09 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Τεχνολογία Λογισμικού

«ΛΕΙΤΟΥΡΓΙΑ ΚΕΝΤΡΟΥ ΔΙΑΛΕΙΤΟΥΡΓΙΚΟΤΗΤΑΣ ΤΟΥ ΥΠΟΥΡΓΕΙΟΥ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΘΕΣΗΣ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ» ΑΠΟΦΑΣΗ Ο ΥΠΟΥΡΓΟΣ ΟΙΚΟΝΟΜΙΚΩΝ

Προγραμματισμός ΙI (Θ)

Σενάριο Χρήσης myschool

Εργαστήριο 4 Ασκήσεις: Διαχείριση Δικτύου (nmap, iptables) και Προχωρημένες Εντολές Unix (grep, ps, cut, find)

* Enterprise Resource Planning ** Customer Relationship Management

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Ενσωματωμένα Συστήματα

ΤΕΙ Κρήτης, Παράρτηµα Χανίων

PayByBank RESTful API v8.0

4η ιάλεξη. UML ιαγράμματα αλληλεπίδρασης

Ημερομηνία Παράδοσης: 4/4/2013

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Java & Java EE 3o Μέρος: Διασφάλιση ασφάλειας σε εφαρμογές Java Enterprise Edition. Κακαρόντζας Γεώργιος

Οδηγός Γρήγορης Παραμετροποίησης Auto Moto Cube

Σχεδίαση και Ανάπτυξη Ιστότοπων

Μητρώο [.gr] Οδηγός ιασύνδεσης. Αξιοποίησης του Εξυπηρετητή EPP. Έκδοση 2.0. [ EPP Server Connection and Use Guide ]

Ενότητα 6 (κεφάλαιο 19) Υπηρεσιοκεντρική Αρχιτεκτονική

Transcript:

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών Οδηγός Εργαστηρίου: Χρήση REST υπηρεσιών σε BPEL Διεργασίες ΓΕΩΡΓΙΟΣ Χ. ΑΘΑΝΑΣΟΠΟΥΛΟΣ

1 Εισαγωγή Στόχος του συγκεκριμένου οδηγού είναι η εξοικείωση με την δημιουργία «εικονικών» περιγραφών REST υπηρεσιών με την χρήση της WSDL, που επιτρέπουν την διασύνδεση των συγκεκριμένων υπηρεσιών από μια διαδικασία BPEL. Ο οδηγός αυτός συνοδεύεται από σχετικό κώδικα ο οποίος υλοποιήθηκε στα πλαίσια του εργαστηρίου του μαθήματος. Ο κώδικας είναι διαθέσιμος από την σελίδα του μαθήματος στην πλατφόρμα του e-class. Θα πρέπει να τονιστεί ότι στην περίπτωση όπου κανείς επιθυμεί την εκτέλεση των παραδειγμάτων του εργαστηρίου στο τοπικό του σύστημα θα πρέπει να αλλάξει την διεύθυνση του εξυπηρετητή που χρησιμοποιείται στο κώδικα του παραδείγματος, πχ. από chloe.di.uoa.gr:8080 σε localhost:8080. 2 REST υπηρεσίες Τα χαρακτηριστικά και οι μέθοδοι ανάπτυξης REST υπηρεσιών παρουσιάστηκαν σε προηγούμενο εργαστήριο του μαθήματος. Ωστόσο, κάποια σημαντικά στοιχεία που πρέπει να αναφερθούν στα πλαίσια του παρόντος εργαστηρίου είναι: Η χρήση του πρωτοκόλλου HTTP ως δομικό στοιχείο για την κλήση των υπηρεσιών Η δυνατότητα των REST υπηρεσιών να προσφέρουν τα αποτελέσματα τους σε διάφορες μορφές, π.χ. XML και JSON Η έλλειψη μιας κοινώς αποδεκτής περιγραφής Παρόλα αυτά, για την χρήση μιας REST υπηρεσίας από μια επιχειρησιακή διαδικασία περιεγραμμένη σε BPEL κρίνεται απαραίτητο: να υπάρχει κατάλληλη περιγραφή της υπηρεσίας σε WSDL, να ανταλλάσσει μηνύματα σε XML, και να μπορεί να κληθεί η συγκεκριμένη υπηρεσία χρησιμοποιώντας του τυπικούς μηχανισμούς που προσφέρει μια μηχανή εκτέλεσης διαδικασιών. Από τις απαιτήσεις αυτές, την μεν πρώτη θα την ικανοποιήσουμε κατασκευάζοντας μια περιγραφή σε γλώσσα WSDL, την δεύτερη θα πρέπει να την επιβάλουμε στον κατασκευαστή της υπηρεσίας ενώ την δε τρίτη θα μας την καλύψει η προσφερόμενη υλοποίηση του ODE. Για να είναι δυνατή η χρήση μιας REST υπηρεσίας από μια BPEL διαδικασία, η υπηρεσία θα πρέπει να ανταλλάσσει XML μηνύματα και να χρησιμοποιεί το πρωτόκολλο HTTP για την ανταλλαγή των μηνυμάτων. Επιπλέον, η συγκεκριμένη πληροφορία θα πρέπει να αποτελεί μέρος της περιγραφής μιας υπηρεσίας. Η κατασκευή της WSDL περιγραφής για μια REST υπηρεσία αποτελεί το στόχο των επόμενων βημάτων μας.

3 Περιγραφή REST υπηρεσιών 3.1 Abstract part Ξεκινώντας με τη περιγραφή μιας REST υπηρεσίας με την χρήση WSDL, το πρώτο στοιχείο που πρέπει να προσέξει κάνεις έχει να κάνει με την περιγραφή των μηνυμάτων που ανταλλάσσονται. Εάν τα μηνύματα που ανταλλάσσονται με μια υπηρεσία είναι σύνθετα θα πρέπει να κατασκευαστούν περιγραφές των σχετικών τύπων οι οποίες θα προστεθούν είτε στο types στοιχείο μιας WSDL περιγραφής είστε σε ξεχωριστά schema documents. Στην περίπτωση λειτουργιών (operations) που περιλαμβάνουν ορίσματα απλών τύπων αυτά είναι καλύτερο να προσδιορίζονται ως ξεχωριστά τμήματα (parts) του μηνύματος εισόδου, για να είναι ευκολότερη η αντιστοίχιση τους στο σχετικό binding που θα καθοριστεί. Για παράδειγμα για μια REST υπηρεσία ελέγχου πιστοληπτικής ικανότητας το abstract τμήμα του WSDL που αναπτύχθηκε παρουσιάζεται στην κάτωθι εικόνα. <types> <xsd:schema targetnamespace="http://j2ee.netbeans.org/wsdl/restservice/restservice"> <xsd:complextype name="customertype"> <xsd:sequence> <xsd:element name="addressline1" type="xsd:string" minoccurs="0"></xsd:element> <xsd:element name="addressline2" type="xsd:string" minoccurs="0"></xsd:element> <xsd:element name="city" type="xsd:string" minoccurs="0"></xsd:element> <xsd:element name="creditlimit" type="xsd:integer" minoccurs="1"></xsd:element> <xsd:element name="customerid" type="xsd:integer" minoccurs="1"></xsd:element> <xsd:element name="email" type="xsd:string" minoccurs="1"></xsd:element> <xsd:element name="fax" type="xsd:string" minoccurs="1"></xsd:element> <xsd:element name="name" type="xsd:string" minoccurs="1"></xsd:element> <xsd:element name="phone" type="xsd:string" minoccurs="1"></xsd:element> <xsd:element name="state" type="xsd:string" minoccurs="1"></xsd:element> </xsd:sequence> </xsd:complextype> </xsd:schema> </types> <message name="findrequest"> <part name="id" type="xsd:string"/> </message> <message name="findresponse"> <part name="customer" type="tns:customertype"/> </message> <porttype name="customerpt"> <operation name="find"> <input name="input1" message="tns:findrequest"/> <output name="output1" message="tns:findresponse"/> </operation> </porttype>

Στην παραπάνω εικόνα μπορεί εύκολα να αναγνωρίσει κανείς τον τύπο customertype που έχει δημιουργηθεί για την περιγραφή των στοιχείων του πελάτη που ανταλλάσσει η προσφερόμενη υπηρεσία με τους χρήστες της. Σημαντικό στοιχείο που πρέπει να προσεχθεί ιδιαίτερα, για την ορθή λειτουργία του μηχανισμού κλήσης REST υπηρεσιών, είναι το target namespace κάτω από το οποίο έχει οριστεί ο συγκεκριμένο τύπος. Θα πρέπει το συγκεκριμένο namespace να συμφωνεί με αυτό που χρησιμοποιεί η REST υπηρεσία. Για να επιτευχθεί ο συγκεκριμένο στόχος θα πρέπει στην class (Customer) που έχει δημιουργηθεί στο NetBeans project (RestService) το οποίο περιέχει τον κώδικα της REST υπηρεσίας να βεβαιωθούμε ότι το namespace attribute στο σχετικό annotation (@XMLRootElement) της κλάσης Customer έχει την ίδια τιμή με αυτή του τύπου στο schema (δες την κάτωθι εικόνα). Σημειώνουμε ότι στο PortType που θα περιέχει τις λειτουργίες που υποστηρίζει η συγκεκριμένη υπηρεσία, μπορούμε να ορίσουμε τόσες λειτουργίες (operations) όσα και τα resources x λειτουργίες της REST υπηρεσίας (ή και λιγότερες εφόσον το επιθυμούμε). Στο WSDL του παραδείγματος που προσφέρεται έχουμε ορίσει ένα operation που αντιστοιχεί στην ανάκτηση του resource Customer με την χρήση της λειτουργίας GET. Στην περίπτωση που επιθυμούσαμε την υποστήριξη και άλλων λειτουργιών, π.χ. POST, DELETE, ή και άλλων resources, π.χ. Order, θα έπρεπε να προσθέσουμε αντίστοιχες λειτουργίες στο PortType του συγκεκριμένου WSDL. 3.2 Concrete Part Το τελικό στοιχείο, για να μπορέσει να υποστηριχθεί η κλήση REST υπηρεσιών με την χρήση μιας WSDL περιγραφής, είναι ο καθορισμός του απαραίτητου binding και του concrete part του WSDL κειμένου. Το WSDL έχει επεκταθεί κατάλληλα έτσι ώστε να μπορεί να υποστηρίζει και plain HTTP bindings

(http://www.w3.org/tr/wsdl#_http). Σημειώνουμε ότι από specification ορίζεται ότι οι HTTP λειτουργίες που μπορούν να υποστηριχθούν είναι οι GET & POST οπότε για την REST υπηρεσία την οποία θα προσφέρουμε είναι απαραίτητο να ακολουθήσουμε την low-rest προσέγγιση ανάπτυξης. Ένας απλός και χρήσιμος οδηγός για το πώς μπορεί κανείς να καθορίσει τις διάφορες μορφές του HTTP binding που μπορούν να χρησιμοποιηθούν είναι διαθέσιμος από το εξής link: http://docs.oracle.com/cd/e19509-01/821-0015/cnfg_http-bc-get-post-processing_r/index.html. Εάν και οι δυνατοί συνδυασμοί ως προς το τελικό binding που μπορούμε να έχουμε είναι πολλοί θα πρέπει πάντοτε αυτοί να βρίσκονται εντός των περιορισμών που ορίζονται από την μηχανή εκτέλεσης, π.χ. ODE (https://ode.apache.org/wsdl-11-http-bindingsupport.html). Οι επεκτάσεις της WSDL που έχουν οριστεί για την κατασκευή HTTP bindings περιλαμβάνουν: Το <http:binding> που καθορίζει το είδος της HTTP λειτουργίας που θα χρησιμοποιηθεί από το συγκεκριμένο binding, π.χ. GET. Το <http:operation> που καθορίζει την σχετική διεύθυνση της κάθε λειτουργίας. Το συγκεκριμένο στοιχείο καθορίζει την διεύθυνση μιας λειτουργίας σχετικά ως προς την τιμή του <http:address> που καθορίζεται στο αντίστοιχο port. Τα <http:urlencoded> και <http:urlreplacement> που ορίζουν πως τα σχετικά τμήματα (parts) του μηνύματος εισόδου μιας λειτουργίας κωδικοποιούνται και μεταφέρονται από το σχετικό HTTP request. Στα πλαίσια του παραδείγματος του εργαστηρίου, έχει καθοριστεί συγκεκριμένο binding (HttpBinding) από το οποίο γίνεται κλήση με βάση το HTTP GET operation. Επιπλέον για την μεταφορά των παραμέτρων κλήσης αντιγράφουμε (urlreplacement) τις τιμές των τμημάτων (parts) του μηνύματος εισόδου της κάθε λειτουργίας (operation) στην σχετική διεύθυνση που χρησιμοποιεί η κάθε μια εξ αυτών.

<binding name="httpbinding" type="tns:customerpt"> <http:binding verb="get"/> <operation name="find"> <http:operation location="gr.uoa.rest.customer/(id)"/> <input name="input1"> <http:urlreplacement/> </input> <output name="output1"> <mime:content part="customer" type="application/xml"/> </output> </operation> </binding> <service name="restservice"> <port name="restservicehttpport" binding="tns:httpbinding"> <http:address location="http://chloe.di.uoa.gr:8080/restservice/webresources"/> </port> </service> Με βάση το επιλεγμένο encoding (urlreplacement) για την λειτουργία find η τιμή του part με όνομα id χρησιμοποιείται στον σχηματισμό της τελική διεύθυνσης (URL) που θα κληθεί για την εκτέλεση της συγκεκριμένης λειτουργίας. Συγκεκριμένα για την αναζήτηση των στοιχείων του πελάτη με id=3 το URL που σχηματιστεί είναι : http://chloe.di.uoa.gr:8080/restservice/webresources/gr.uoa.rest.customer/3 Όπως μπορεί εύκολα κανείς να αναγνωρίσει, στο καθορισμένο binding έχει οριστεί ότι το αποτέλεσμα της κλήσης και συγκεκριμένα η τιμή του part customer θα είναι της μορφής xml κειμένου. Η δήλωση αυτή είναι απαραίτητη για να μπορέσει να γίνει η αναγνώριση του αποτελέσματος κατά την εκτέλεση διαδικασίας που χρησιμοποιεί το αποτέλεσμα της συγκεκριμένης λειτουργίας. Θα πρέπει εδώ να τονίσουμε ότι αντί της συγκεκριμένης μορφής κλήσεων θα μπορούσε κάλλιστα η τιμές των παραμέτρων κλήσης να μεταφερθούν ως urlencoded, δλδ ως name=value ζεύγη τα οποία διαχωρίζονται μεταξύ τους με την χρήση του & και με την διεύθυνση της υπηρεσίας με την χρήση του?. Σε κάθε περίπτωση όμως, δεδομένου ότι το αποτέλεσμα της κλήσης θα θέλαμε να γίνει αποδεκτό από διαδικασίες οι οποίες θα εκτελούνται από το ODE, αυτό θα πρέπει είναι φορμαρισμένο ως XML μήνυμα.