Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών



Σχετικά έγγραφα
Εισαγωγή στο Ηλεκτρονικό Επιχειρείν. ΤΕΙ Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων - Πάτρα Κουτσονίκος Γιάννης

ΑΡΘΡΟ «ΕΞΙ ΣΤΟΥΣ ΔΕΚΑ ΕΛΛΗΝΕΣ ΧΡΗΣΙΜΟΠΟΙΟΥΝ ΠΛΕΟΝ ΚΑΘΗΜΕΡΙΝΑ ΤΟ ΔΙΑΔΙΚΤΥΟ»

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress

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

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

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

Συστήματα Διοίκησης ΕΙΣΑΓΩΓΗ. Ηλεκτρονικές Συναλλαγές. Καθηγητής Δ. Ασκούνης, Δ. Πανόπουλος

e-market: Παρουσίαση του μοντέλου των Ηλεκτρονικών Αγορών B2B βήμα προς βήμα Σπανού Σοφία

ΗΛΕΚΤΡΟΝΙΚΟ ΕΠΙΧΕΙΡΕΙΝ

B2B ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ ΜΕΡΟΣ Β

Τεχνολογίες Ανάπτυξης Ηλεκτρονικού Καταστήματος Μικρομεσαίας Επιχείρησης. Μικρομεσαίες Επιχειρήσεις και Καινοτομία

ΤΕΧΝΟΛΟΓΙΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΕΜΠΟΡΙΟΥ ΠΜΣ 513. Ακαδημαϊκό Έτος Εαρινό Εξάμηνο

Ηλεκτρονικό εμπόριο. Ψηφιακή οικονομία επιχειρηματικά μοντέλα ηλεκτρονικού εμπορίου

Κεφάλαιο 4 ο. Η ψηφιακή επιχείρηση: Ηλεκτρονικό εμπόριο και ηλεκτρονικό επιχειρείν

Ηλεκτρονική Επιχειρηματικότητα

Οδηγός Ηλεκτρονικού Επιχειρείν

Ηλεκτρονικό Εμπόριο. Ενότητα 7: Διαχείριση Εφοδιαστικής Αλυσίδας Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Ηλεκτρονικό Εμπόριο. Alexandros Socratous Λύκειο Αγίου Νεοφύτου Εμπορικά Β Λυκείου. Alexandros Socratous Economics

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

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Ηλεκτρονικό Εμπόριο. Ενότητα 1: Εισαγωγικές Έννοιες. Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

Ενότητα 4: Πληροφοριακά συστήματα για την επιχείρηση

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

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

ΜΕΡΟΣ ΠΡΩΤΟ: Θεωρητική Προσέγγιση...15

* Enterprise Resource Planning ** Customer Relationship Management

Σχεδιασµός βασισµένος σε συνιστώσες

Αξιολόγηση Υπηρεσιών ιαδικτύου µέσω Περιπτώσεων Μελέτης

Ηλεκτρονικό Επιχειρείν & Νέες Τεχνολογίες για Επιχειρηματικότητα ΔΕΟ45

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Ηλεκτρονικό Εμπόριο

Οι ηλεκτρονικές αγορές αποτελούν χρήσιμο

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Ηλεκτρονικά Καταστήματα E Shops

Δρ. Δημήτριος Α. Κουτσομητρόπουλος. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Α.Τ.Ε.Ι. Πάτρας

κώστας βεργίδης εισαγωγή στις βασικές έννοιες των επιχειρησιακών διεργασιών γραφείο 322 κτίριο Γ

Επιχειρησιακά Πληροφοριακά Συστήματα. Site: Στόχος Σκοπός μαθήματος

Τεχνολογίες Πληροφορικής και Επικοινωνιών (ΤΠΕ) στις Μικρομεσαίες Επιχειρήσεις (ΜΜΕ)

GoDigital.Store E-Commerce Platform

Οι Β2Β Ηλεκτρονικές Αγορές µε απλά λόγια

Ομαδοποίηση των απαιτήσεων του προτύπου ISO Σύστημα ποιότητας Ευθύνη της διοίκησης Διαχείριση πόρων Υλοποίηση του προϊόντος

Διαχείριση Εφοδιαστική Αλυσίδας. ΤΕΙ Κρήτης / Τμήμα Διοίκησης Επιχειρήσεων

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

B2B ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ

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

e-επιχειρείν Ορισμοί και Βασικές Έννοιες

Στρατηγική Επιλογή Capital B.O.S. Capital B.O.S.

Πολιτική Ασφαλείας Δεδομένων Πιστοποίηση ISO 27001:2013 από την TÜV Austria Hellas

Πανεπιστήμιο Αιγαίου Σχολή Κοινωνικών Επιστημών Τμήμα Πολιτισμικής Τεχνολογίας Και Επικοινωνίας

Τεχνολογίες Πληροφορίας και Επικοινωνίας στον Τουρισμό (Γ εξάμηνο)

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Ηλεκτρονικό Εμπόριο

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

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Dynamic Business Systems. Παρουσίαση Εφαρμογής

Επιχειρηματικά Μοντέλα στο Ηλεκτρονικό Εμπόριο. ΤΕΙ Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων - Πάτρα Κουτσονίκος Γιάννης

οικονομικές τάσεις Εκτεταμένη συνεργασία της εφοδιαστικής αλυσίδας. έργου FLUID-WIN το οποίο χρηματοδοτήθηκε από το 6ο Πρόγραμμα Πλαίσιο Παγκόσμιες

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

Βασικές Έννοιες Web Εφαρμογών

ιοίκηση Πληροφοριακών Συστηµάτων

Η-επιχειρείν και συνεργασία σε παγκόσμιο επίπεδο

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΥΠΟΥΡΓΕΙΟ ΟΙΚΟΝΟΜΙΑΣ ΥΠΟΔΟΜΩΝ, ΝΑΥΤΙΛΙΑΣ & ΤΟΥΡΙΣΜΟΥ ΑΠΟΦΑΣΗ ΕΠΙ ΔΗΛΩΣΗΣ ΣΗΜΑΤΟΣ ΑΠΟΦΑΣΗ ΕΞ 3113/

1 η ΕΝΟΤΗΤΑ. Δημιουργώντας εισόδημα online. Internet Μια αγορά συνεχιζόμενης ανάπτυξης. Πλεονεκτήματα

Τίτλος Ειδικού Θεματικού Προγράμματος: «Διοίκηση, Οργάνωση και Πληροφορική για Μικρομεσαίες Επιχειρήσεις»

Ηλεκτρονικές ηµοπρασίες

Τ.Ε.Ι. ΚΡΗΤΗΣ, Σ.Δ.Ο., Τμήμα Λογιστικής. ERP Systems

Αντικειμενοστρεφής Προγραμματισμός

9. Κάθε στρατηγική επιχειρηματική μονάδα αποφασίζει για την εταιρική στρατηγική που θα εφαρμόσει. α. Λάθος. β. Σωστό.

Το Μέλλον για τα Συστήματα Διαχείρισης Ακτινολογικής Εικόνας (PACS)

Πτυχιακή Εργασία Ηλεκτρονικό εμπόριο & Σημασιολογικός ιστός

Ηλεκτρονικό εμπόριο Απρίλιος 2011

Σχεδιαστικά Προγράμματα Επίπλου

Ηλεκτρονικό Εμπόριο. Ενότητα 6: Διαχείριση Σχέσεων με Πελάτες Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Κεφάλαιο 1 ο. Διοίκηση και διαχείριση της ψηφιακής επιχείρησης

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

Cloud ERP. Αλλάξτε τον τρόπο που κάνετε τη δουλειά σας

Η Oracle ανακοίνωσε την πιο ολοκληρωμένη λύση στον τομέα της Ανάλυσης δεδομένων στο Cloud

Ερεύνα ικανοποιήσης καταστημάτων OK Any Time Marker.

Σύστημα Διαχείρισης, Ελέγχου και Παρακολούθησης Ασθενοφόρων και Περιστατικών

Ονομάζομαι Βασιλάκος Γιάννης και είμαι Αντιπρόεδρος και Διευθύνων. Σύμβουλος της Κωτσόβολος, εταιρίας του Ομίλου Dixons Carphone με

ΟΡΓAΝΩΣΗ / ΔΙΟIΚΗΣΗ ΠΑΡΑΓΩΓHΣ: ΕΙΣΑΓΩΓΙΚEΣ EΝΝΟΙΕΣ. Διοίκηση Παραγωγής & Συστημάτων Υπηρεσιών ΕΡΓΑΣΤΗΡΙΟ ΣΥΣΤΗΜΑΤΩΝ ΑΠΟΦΑΣΕΩΝ ΚΑΙ ΔΙΟΙΚΗΣΗΣ

Νέες τεχνολογίες εισάγονται ή χρησιµοποιούνται

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

Τα logistics και οι επιχειρηματικές ευκαιρίες που προσφέρουν

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

Πληροφοριακά Συστήματα Απομακρυσμένης Εποπτείας και Μετρήσεων

1 Cosmos Business Systems SA Cosmos Consulting SA Software Solutions

«Το σήμερα και το αύριο στην αγορά εργασίας» TITAN, 24/11/2017

Περιεχόμενα Α ΜΕΡΟΣ. Πρόλογος των Συγγραφέων ΚΕΦΑΛΑΙΟ 1 Πληροφοριακά Συστήματα. ΚΕΦΑΛΑΙΟ 2 Πληροφοριακά Συστήματα και Σύγχρονη Επιχείρηση

Διαχείριση Έργων. Ενότητα 5: Χρονοδιάγραμμα προμηθειών, προγραμματισμός πόρων

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

Η Πληροφορική Επανάσταση Η Κοινωνία των πληροφοριών

E-SHOP.GR Η ΑΝΑΤΡΟΠΗ ΜΙΑΣ ΚΛΑΣΣΙΚΗΣ ΑΓΟΡΑΣ ΧΑΡΗ ΣΤΗΝ ΚΑΙΝΟΤΟΜΙΑ

Αναλυτική περιγραφή διδακτικών ενοτήτων. e-commerce Project Manager

Grow Greek Tourism Online για το Πώς συνεργάζονται Internet και τουρισμός

Τα τελευταία χρόνια, έχουμε βιώσει ένα κλίμα αβεβαιότητας που όπως ξέρετε, είναι ό,τι χειρότερο για τις επιχειρήσεις. Το μόνο σταθερό δεδομένο που

Προγραμματισμός διαδικτυακών εφαρμογών με PHP

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Επιβλέπων: ΠΟΤΗΡΑΚΗΣ ΑΝΤΩΝΙΟΣ

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΑΣ ΕΡΓΑΣΤΗΡΙΟ ΕΝΣΥΡΜΑΤΗΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΣ Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών Τρεχλή Ρωμανού-Αντώνιου του Βλασίου Αριθμός Μητρώου: 5846 Θέμα «Υλοποίηση συστήματος παραγγελιοδοσίας ηλεκτρονικού καταστήματος με χρήση υπηρεσιών διαδικτύου» Επιβλέπων Κουκιάς Μιχαήλ Αριθμός Διπλωματικής Εργασίας: Πάτρα, Ιούνιος 2013

ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η Διπλωματική Εργασία με θέμα «Υλοποίηση συστήματος παραγγελιοδοσίας ηλεκτρονικού καταστήματος με χρήση υπηρεσιών διαδικτύου» Του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Τρεχλή Ρωμανού-Αντώνιου του Βλασίου Αριθμός Μητρώου: 5846 Παρουσιάστηκε δημόσια και εξετάστηκε στο Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις.../../ Ο Επιβλέπων Ο Διευθυντής του Τομέα Κουκιάς Μιχαήλ Φακωτάκης Νικόλαος Επίκουρος Καθηγητής Καθηγητής

Αριθμός Διπλωματικής Εργασίας: Θέμα: «Υλοποίηση συστήματος παραγγελιοδοσίας ηλεκτρονικού καταστήματος με χρήση υπηρεσιών διαδικτύου» Φοιτητής: Τρεχλής Ρωμανός-Αντώνιος Επιβλέπων: Κουκιάς Μιχαήλ Περίληψη Η παρούσα διπλωματική εργασία πραγματεύεται τον σχεδιασμό και την υλοποίηση συστήματος για ηλεκτρονικές προμήθειες με χρήση της τεχνολογίας υπηρεσιών διαδικτύου. Ως ηλεκτρονική προμήθεια ορίζεται η διαδικασία με την οποία ένας φορέας προμηθεύεται τις υπηρσίες ή/και τα αγαθά που τον ενδιαφέρουν, με τη χρήση σύγχρονων διαδικτυακων και υπολογιστικών υπηρεσιών. Ο φορέας που μελετάμε εδώ είναι ένα ηλεκτρονικό βιβλιοπωλείο. Οι ηλεκτρονικές προμήθειες είναι ένα είδος ηλεκτρονικού εμπορίου, συνεπώς θα προηγηθεί μια θεωρητική ανάλυση σχετικά με το ηλεκτρονικό εμπόριο και, έπειτα, σχετικά με τις ηλεκτρονικές προμήθειες. Εν συνεχεία παρατίθεται η υλοποίηση ενός συστήματος ηλεκτρονικών προμηθειών με χρήση της τεχνολογίας των υπηρεσιών διαδικτύου, δηλαδή η σύσταση ενός ιστότοπου, ο οποίος περιέχει όλες τις απαραίτητες λειτουργίες ενός ηλεκτρονικού καταστήματος αγορών και, επιπλέον, το σύστημα ημιαυτοματοποιημένων προμηθειών, το οποίο περιλαμβάνει αντίστοιχες βάσεις δεδομένων για τις δοκιμές του συστήματος και τις υπηρεσίες διαδικτύου που το υλοποιούν. Στο σύστημα υπάρχουν τρία είδη χρηστών: οι πελάτες, οι προμηθευτές και ο διαχειριστής. Οι πελάτες έχουν τη δυνατότητα να κάνουν λιανικές αγορές. Οι προμηθευτές δεν χειρίζονται το σύστημα, αλλά οι πληροφορίες τους είναι αποθηκευμένες στη βάση δεδομένων. Τέλος, ο διαχειριστής διευθύνει τον ιστότοπο, βλέπει τις παραγγελίες που έχουν πραγματοποιηθεί και ενεργοποιεί το σύστημα παραγγελιών. Το σύστημα ομαδοποιεί τις αγορές σε καλάθια σύμφωνα με τις πιο συμφέρουσες τιμές και, μετά από έγκριση του διαχειριστή, προχωρεί σε παραγγελίες από τους προμηθευτές.

Για τη δημιουργία του ιστοτόπου χρησιμοποιήθηκε η τεχνολογία Java. Συγκεκριμένα, για τη δημιουργία δυναμικού περιεχομένου χρησιμοποιήθηκαν οι γλώσσες HTML, JSP, EL(Expression Language) και Java Servlet για ελεγκτή, ενώ για τη βάση δεδομένων χρησιμοποιήθηκαν POJO's (Plain Old Java Objects) με Annotations της βιβλιοθήκης Persistence και η βιβλιοθήκη Hibernate η οποία ανέλαβε τον ρόλο του διαμεσολαβητή με την υποκείμενη MySQL βάση δεδομένων. Το όλο σύστημα στήθηκε για λόγους ευκολίας στο NetBeans IDE και τρέχει στον εξυπηρετητή εφαρμογών Glassfish της Oracle, ο οποίος διατίθεται με άδεια Common Development and Distribution License (CDDL) και GNU General Public License (GPL).

Abstract This thesis discusses the design and implementation of an e-procurement system using the Web Services technology. E-procurement is defined as the process by which an entity procures services or/and goods that are of interest by using modern computing and internet services. The organization studied here is an electronic bookstore. Electronic procurement is a type of electronic commerce, thus a theoretical analysis of e-commerce and e-procurement is primarily necessary. The implementation of an electronic procurement system is then presented, specifically about the establishment of a website that contains all the necessary functions for an e-bookstore plus the semiautomatic system of e-procurment, that includes the databases needed to test it and the web services that implement it. The created system has mainly three kinds of users: clients, suppliers and administrator. Clients can create carts and make orders. The supplier's info are stored in the database. Finally, administrator manage the site and is responsible for tending to orders made by the clients and the initialization of e-procurment system. Then the system groups products into carts by their price and, after administrator's approval, proceed to commit the order. To create the site Java technologies were used. Specifically, for creating the dynamic web pages content, we used HTML, JSP, EL(Expression Language) and Java Servler for controller, while for managing the database we used POJO's with Persistence library annotations and the Hibernate Library for communication with the underlying MySQL database. The system was build with the help of NetBeans IDE and runs over Oracle Glassfish Application Server.

Πρόλογος Η παρούσα διπλωματική εργασία, ασχολείται με τη δημιουργία ενός συστήματος ηλεκτρονικών προμηθειών, στο οποίο ένας φορέας, στην περίπτωση αυτή ένα ηλεκτρονικό βιβλιοπωλείο, χρησιμοποιεί την τεχνολογία των υπηρεσιών διαδικτύου για να αυτοματοποιήσει και να απλοποιήσει τη διαδικασία παραγγελιών στους προμηθευτές του. Η παρούσα διπλωματική εργασία εκπονήθηκε στο Εργαστήριο Ενσύρματης Τηλεπικοινωνίας του Τμήματός μας. Θα ήθελα να ευχαριστήσω τιν επίκουρο καθηγητή κ. Κουκιά Μιχαήλ για την προσφορά του στην εκπόνηση της διπλωματικής αυτής εργασίας, όπως επίσης θα ήθελα να τον ευχαριστήσω για τις γνώσεις και τη βοήθεια που μου πρόσφερε όλο αυτόν τον καιρό. Επιπλέον, θα ήθελα να ευχαριστήσω τους φίλους μου για τις γνώσεις, τη βοήθεια και την ηθική υποστήριξη που μου προσέφεραν όποτε χρειάστηκε. Τέλος, θα ήθελα να ευχαριστήσω την οικογένειά μου, που ήταν πάντα παρούσα και με ανέχθηκε όλα αυτά τα χρόνια.

Εισαγωγή Σκοπός της Διπλωματικής αυτής εργασίας είναι η ανάπτυξη και υλοποίηση ενός συστήματος ηλεκτρονικών προμηθειών με τη χρήση υπηρεσιών διαδικτύου (web services). Για να γίνει περισσότερο κατανοητός ο όρος αυτός, χρειάζεται πρώτα να αναλυθεί ο όρος ηλεκτρονικό εμπόριο, αφού οι ηλεκτρονικές προμήθειες είναι ένα είδος ηλεκτρονικού εμπορίου. Ως ηλεκτρονικό εμπόριο ορίζεται το εμπόριο που πραγματοποιείται με ηλεκτρονικά μέσα, βασίζεται δηλαδή στην ηλεκτρονική μετάδοση δεδομένων. Αντίστοιχα, ως ηλεκτρονικές προμήθειες ορίζουμε τις προμήθειες οι οποίες πραγματοποιούνται με ηλεκτρονικά μέσα, όπου με τη λέξη προμήθειες ορίζεται η απόκτηση υλικών αγαθών ή/και υπηρεσιών με οικονομικό αντάλλαγμα. Το ηλεκτρονικό εμπόριο όπως και οι ηλεκτρονικές προμήθειες έχουν ένα κοινό χαρακτηριστικό: είναι και οι δύο υπηρεσίες εξ αποστάσεως, δηλαδή χρειάζεται ένας τρόπος επικοινωνίας μεταξύ των αγοραστών και των πωλητών για να πραγματοποιηθούν. Ο καλύτερος τρόπος είναι το διαδίκτυο, γι αυτόν τον λόγο το σύστημα ηλεκτρονικών προμηθειών που επιλέχτηκε για υλοποίηση στην παρούσα διπλωματική εργασία είναι ένας ιστότοπος, μέσω του οποίου εκτελούνται οι απαραίτητες λειτουργίες ενός συστήματος ηλεκτρονικών προμηθειών. Ο φορέας που επιλέχθηκε για να υλοποιηθεί είναι ένα ηλεκτρονικό βιβλιοπωλείο. Για να γίνει σαφής η σημασία της χρήσης υπηρεσιών διαδικτύου, θα πρέπει να μελετήσουμε τα μέσα τα οποία χρησιμοποιούνται σήμερα για την παραγγελιοδοσία των ηλεκτρονικών καταστημάτων προς τους προμηθευτές. Η μεθοδολογία που ακολουθείται είναι: 1. Τηλεφωνική επικοινωνία μεταξύ του ηλεκτρονικού καταστήματος και του προμηθευτή, για να βρεθούν τα ζητούμενα προιόντα. 2. Αποστολή φόρμας παραγγελείας μέσω ηλεκτρονικού ταχυδρομίου. 3. Πέρασμα της παραγγελίας στη βάση δεδομένων και επεξεργασία. Στην παραπάνω διαδικασία θα πρέπει να προστεθούν τα τηλεφωνήματα για επιβεβαίωση λήψεων, συμπληρωματικών παραγγελιών κ.λπ. Μπορεί κανείς να ισχυριστεί ότι με τις παραπάνω μεθόδους η διαδικασία παραγγελιοδοσίας διεξάγεται επιτυχώς. Όμως, δεν λαμβάνεται υπόψη αυτός που αναδεικνύεται ως ο κρίσιμος παράγοντας αυτής της διαδικασίας λόγω της μεγάλης ανταγωνιστικότητας της αγοράς στην εποχή μας: η πληθώρα των προμηθευτών, σε συνδυασμό με την ανάγκη μείωσης του κόστους και καλύτερης εξυπηρέτησης των πελατών. Με τις έως σήμερα χρησιμοποιούμενες μεθόδους, η διαδικασία επιλογής της πιο συμφέρουσας προμήθειας παραμένει χειροκίνητη και αυτό την καθιστά πολύ περίπλοκη και χρονοβόρα. Με το σύστημα που προτείνεται σε αυτήν τη διπλωματική εργασία, ολόκληρη η διαδικασία απλοποιείται, και ειδικότερα επιταχύνεται η παραγγελιοδοσία και η επιλογή του πιο συμφέροντος προμηθευτή, με τη χρήση της τεχνολογίας των υπηρεσιών διαδικτύου. Σε αυτήν την περίπτωση η διαδικασία έχει ως εξής: 1

1. Μέσω υπηρεσιών διαδικτύου, αποστέλλουμε σε όλους τους προμηθευτές μια λίστα με προϊόντα που επιθυμούμε να αγοράσουμε. 2. Μέσω υπηρεσιών διαδικτύου, το σύστημα του προμηθευτή μας απαντά αποστέλλοντας μια λίστα με προϊόντα και τιμές. 3. Χωρίζουμε τα προϊόντα σε καλάθια αγορών. Κάθε καλάθι αφορά σε έναν προμηθευτή και κάθε τέτοιο καλάθι περιέχει τα προϊόντα τα οποία συμφέρει να αγοραστούν από τον συγκεκριμένο προμηθευτή. 4. Μέσω υπηρεσιών διαδικτύου, αποστέλλουμε τις τελικές λίστες προϊόντων που θέλουμε να αγοράσουμε από κάθε προμηθευτή. Τη διαδικασία την εκκινεί και την επιβλέπει (εγκρίνει τα καλάθια αγορών) ο διαχειριστής του συστήματος, χωρίς να απαιτείται καμία προαπαιτούμενη γνώση για το σύστημα. Η υλοποίηση της εφαρμογής έχει ώς εξής: Αρχικά σχεδιάστηκαν οι οντότητες (POJO s) και ορίστηκαν τα Persistence annotations που θα τις μετέφραζαν σε MySQL script γλώσσα και, εν συνεχεία, υλοποιήθηκε το ηλεκτρονικό κατάστημα με τη χρήση των γλωσσών HTML, JSP, EL και Java Servlet. Έτσι κάναμε χρήση της αρχιτεκτονικής Μοντέλο - Παρουσίαση - Ελεγκτής (Model-View-Controller) 1, με τις οντότητες ως μοντέλο, τις σελίδες JSP ως παρουσίαση και τον Java Servlet ως ελεγκτή. Τέλος αναπτύχθηκαν σε γλώσσα Java οι απαιτούμενες Σχήμα 1: Model-View-Controller αρχιτεκτονική υπηρεσίες διαδικτύου, ώστε το ηλεκτρονικό βιβλιοπωλείο να μπορεί να επικοινωνήσει με τους προμηθευτές του και να παραγγείλει βιβλία. Η εφαρμογή παίζει πάνω από τον Oracle Glassfish εξυπηρετητή. Η εφαρμογή υποστηρίζει τρεις κατηγορίες χρηστών 2. Οι πελάτες μπορούν να εγγραφούν στον ιστότοπο, να δημιουργήσουν καλάθι αγορών και να παραγγείλουν βιβλία. Ο διαχειριστής είναι υπεύθυνος για τη συντήρηση του ιστότοπου, την επεξεργασία των παραγγελιών, τη διαχείρηση της βάσης δεδομένων και την ενεργοποίηση του συστήματος ηλεκτρονικών παραγγελιών. Οι προμηθευτές δεν χειρίζονται το σύστημα, αλλά πληροφορίες τους υπάρχουν στην βάση δεδομένων. 2

Σχήμα 2: Use Case Διάγραμμα Εφαρμογής Τα κεφάλαια της διπλωματικής έχουν ως εξής: Κεφάλαιο 1ο: Γίνεται μια θεωρητική ανάλυση σχετικά με το ηλεκτρονικό εμπόριο και τις ηλεκτρονικές προμήθειες. Κεφάλαιο 2ο: Γίνεται μία σύντομη ανάλυση της τεχνολογίας των υπηρεσιών διαδικτύου. Κεφάλαιο 3ο: Γίνεται ανάλυση των εργαλείων που χρησιμοποιήθηκαν για την υλοποίηση της εφαρμογής. Κεφάλαιο 4ο: Περιγράφεται η υλοποίηση της εφαρμογής (ηλεκτρονικό κατάστημα και υπηρεσίες διαδικτύου). Κεφάλαιο 5ο: Δίνονται παραδείγματα χρήσης του ιστότοπου από πελάτη και διαχειριστή. Τέλος, παρατίθεται η βιβλιογραφία και παράρτημα με τον κώδικα που αναπτύχθηκε για την υλοποίηση του συστήματος. 3

Περιεχόμενα 1 Ηλεκτρονικό Εμπόριο και Ηλεκτρονικές Προμήθειες 6 1.1 Ηλεκτρονικό εμπόριο: Ορισμός........................... 6 1.2 Ηλεκτρονικό Εμπόριο: Δημόσιοι φορείς...................... 7 1.3 Μοντέλα Ηλεκτρονικών Επιχειρήσεων....................... 8 1.4 Ηλεκτρονική Προμήθεια: Ορισμός......................... 8 1.5 Πλεονεκτήματα Ηλεκτρονικού Εμπορίου..................... 9 1.6 Μειονεκτήματα Ηλεκτρονικού Εμπορίου..................... 11 1.7 Υλοποίηση....................................... 13 2 Υπηρεσίες Διαδικτύου 14 2.1 Ορισμός των Υπηρεσιών Διαδικτύου........................ 14 2.2 Πλεονεκτήματα έναντι παλαιότερων κατανεμημένων τεχνολογιών....... 15 2.3 Web Services από επιχειρηματική σκοπιά..................... 16 2.4 Web Services από τεχνική σκοπιά......................... 17 2.5 Εφαρμογές των Web Services............................ 18 3 Εργαλεία που χρησιμοποιήθηκαν 20 3.1 Ανοικτό λογισμικό.................................. 20 3.2 Εξυπηρετητής Εφαρμογών(Application Server) - Glassfish........... 21 3.3 MySQL........................................ 21 3.4 J2EE.......................................... 21 3.4.1 JavaServer Pages............................... 21 3.4.2 JSTL...................................... 22 3.5 Hibernate και Persistence.............................. 22 4 Υλοποίηση Εφαρμογής 25 4.1 Εισαγωγή....................................... 25 4.2 Προαπαιτούμενα................................... 26 4.2.1 MySQL.................................... 26 4.2.2 NetBeans IDE................................. 26 4.3 Μοντέλο - Model................................... 29 4.4 Παρουσίαση - View................................. 31 4.5 Ελεγκτής - Controller................................ 33 4.5.1 Δημιουργία ελεγκτή............................. 33 4.5.2 Ανταλαγή δεδομένων μεταξύ ελεγκτή και σελίδων........... 35 4.5.3 Ερωτήματα στη Βάση Δεδομένων..................... 36 4.6 Υπηρεσίες Διαδικτύου - Web Services....................... 38 4.6.1 Δημιουργία.................................. 38 4.6.2 Υλοποίηση της Λογικής........................... 40 4.6.3 Ασφάλεια................................... 41 4

4.6.4 Κατανάλωση Υπηρεσιών Διαδικτύου.................... 42 5 Παραδείγματα Χρήσης 47 5.1 Απλός Χρήστης - Πελάτης.............................. 47 5.2 Διαχειριστής..................................... 50 5.3 Μελλοντικές Επεκτάσεις.............................. 51 6 Βιβλιογραφία 52 Αʹ Παράρτημα 56 Αʹ.1 Μοντέλο: Οντότητες και Data Beans........................ 56 Αʹ.2 Παρουσίαση: Σελίδες JSP.............................. 81 Αʹ.3 Ελεγκτής: Java Servlet................................ 118 Αʹ.4 Υπηρεσίες Διαδικτύου................................ 146 Αʹ.5 Αρχεία Ρυθμίσεων.................................. 152 5

1 Ηλεκτρονικό Εμπόριο και Ηλεκτρονικές Προμήθειες 1.1 Ηλεκτρονικό εμπόριο: Ορισμός Ως Ηλεκτρονικό Εμπόριο (Η.Ε.) ή αλλιώς ως e-commerce, ecommerce, e-comm, όπως είναι ευρέως γνωστό, ορίζεται το εμπόριο παροχής αγαθών και υπηρεσιών που πραγματοποιείται εξ αποστάσεως με ηλεκτρονικά μέσα, βασιζόμενο δηλαδή στην ηλεκτρονική μετάδοση δεδομένων, χωρίς να καθίσταται αναγκαία η φυσική παρουσία των συμβαλλομένων μερών, πωλητή-αγοραστή. Περιλαμβάνει το σύνολο των διαδικτυακών διαδικασιών: ανάπτυξη, προώθηση, πώληση, παράδοση, εξυπηρέτηση και πληρωμή για προϊόντα και υπηρεσίες. Το εύρος των ανταλλαγών που διεξάγονται ηλεκτρονικά έχει αυξηθεί ασυνήθιστα με την ευρεία χρήση του Διαδικτύου. Η διεξαγωγή του εμπορίου με αυτόν τον καινοφανή τρόπο προκαλεί και απορροφά καινοτομίες στην ηλεκτρονική μεταφορά χρηματικών πόρων, στη διαχείριση της εφοδιαστικής αλυσίδας (supply chain management), στο διαδικτυακό μάρκετινγκ (Internet marketing), στη διεκπεραίωση διαδικτυακών διαδικασιών (online transaction processing), στην ανταλλαγή ηλεκτρονικών δεδομένων (electronic data interchange, EDI), στην καταγραφή συστημάτων διοίκησης (inventory management) και στην αυτοματοποίηση συστημάτων συγκέντρωσης δεδομένων. Το ηλεκτρονικό εμπόριο θεωρείται γενικά ως μία πτυχή του e-business. Το ηλεκτρονικό εμπόριο διακρίνεται, αναλόγως των συμβαλλομένων μερών, στους ακόλουθους τύπους: B2B. Πρόκειται για ευφυές αρκτικόλεξο του αγγλικού όρου business to business και αφορά στο ηλεκτρονικό εμπόριο το οποίο διενεργείται μεταξύ επιχειρήσεων. Αυτό μπορεί να είναι ανοιχτό σε όλα τα ενδιαφερόμενα μέρη (ανταλλαγή εμπορευμάτων) ή περιορισμένο σε συγκεκριμένους προκαθορισμένους συμμετέχοντες (ιδιωτική ηλεκτρονική αγορά). B2C. Πρόκειται ομοίως για χρήση αρκτικόλεξου από τον αγγλικό όρο business to consumer και αφορά ηλεκτρονικό εμπόριο το οποίο διενεργείται μεταξύ επιχειρήσεων (προμηθευτών ή παροχής υπηρεσιών) και καταναλωτών των προϊόντων τους. Αυτός ο τύπος ηλεκτρονικού εμπορίου διεξάγεται από εταιρίες όπως η amazon.com. Η ηλεκτρονική αγορά αποτελεί μία μορφή ηλεκτρονικού εμπορίου στην οποία ο αγοραστής συνδέεται απευθείας με τον υπολογιστή του πωλητή συνήθως μέσω internet. Δεν εμπλέκεται καμία ενδιάμεση υπηρεσία. Οι συναλλαγές, αγορά ή πώληση, ολοκληρώνονται ηλεκτρονικά και διαδραστικά σε πραγματικό χρόνο, όπως γίνεται με την amazon.com για τα νέα βιβλία. Σε ορισμένες περιπτώσεις, ένας μεσάζων μπορεί να είναι παρών σε μία συναλλαγή, όπως γίνεται με τις συναλλαγές στο ebay.com. C2C. Συναλλαγές μεταξύ καταναλωτών. Τα βασικότερα χαρακτηριστικά του ηλεκτρονικού εμπορίου μεταξύ καταναλωτών είναι οι ηλεκτρονικοί πλειστηριασμοί, οι μικρές αγγελίες κ.λπ. Μοbile E-commerce: Αυτό αφορά το επιχειρούμενο ηλεκτρονικό τηλεφωνικό εμπόριο. 6

Εσωτερικό εμπόριο. Στόχος είναι η αποτελεσματικότερη λειτουργία των δραστηριοτήτων μιας επιχείρησης, ώστε να μπορεί να προσφέρει καλύτερα προιόντα και υπηρεσίες στους πελάτες της. Οι εφαρμογές του συνήθως εντάσσονται στη λειτουργία ενός τοπικού δικτύου (Intranet) και μπορούν να είναι: επικοινωνία μεταξύ ομάδων εργασίας, ηλεκτρονική δημοσίευση(άμεση διανομή πληροφοριών) κ.λπ. Τέλος, μπορούμε να ορίσουμε το ηλεκτρονικό εμπόριο από τέσσερις διαφορετικές οπτικές γωνίες: Επιχειρήσεις. Ως εφαρμογή νέων τεχνολογιών προς την κατεύθυνση του αυτοματισμού των συναλλαγών και της ροής εργασιών. Υπηρεσίες. Ως μηχανισμό που έχει στόχο να ικανοποιήσει την κοινή επιθυμία προμηθευτών και πελατών για καλύτερη ποιότητα υπηρεσιών, μεγαλύτερη ταχύτητα εκτέλεσης συναλλαγών και μικρότερο κόστος. Απόσταση. Ως δυνατότητα αγοραπωλησίας προιόντων και υπηρεσιών μεσω του διαδικτύου, ανεξάρτητα από τη γεωγραφική απόσταση. Επικοινωνία. Ως δυνατότητα παροχής πληροφοριών, προιόντων ή υπηρεσιών και πληρωμών μέσα από δίκτυα ηλεκτρονικών υπολογιστών. 1.2 Ηλεκτρονικό Εμπόριο: Δημόσιοι φορείς Η κατηγορία αυτή έχει δημιουργηθεί τα τελευταία χρόνια και αποτελεί κομμάτι ενός νέου αναπτυσσόμενου κλάδου, της ηλεκτρονικής διακυβέρνησης (e-government). Η μορφή αυτή περιλαμβάνει κυρίως δύο πλαίσια δραστηριοτήτων: Τη συνεργασία των δημοσίων φορέων με τις επιχειρήσεις (Business to Government- B2G): Καλύπτει κάθε μορφή ηλεκτρονικής επικοινωνίας μεταξύ επιχειρήσεων και κρατικών φορέων, τόσο για διεκπεραίωση φορολογικών ή άλλων υποχρεώσεων (διεκπεραίωση των συναλλαγών τους ηλεκτρονικά), όσο και για την αυτοματοποίηση της διαδικασίας των δημοσίων προμηθειών. Αφορά δραστηριότητες όπως: ηλεκτρονική παροχή πληροφοριών (ενημέρωση των επιχειρήσεων για διαγωνισμούς, προκηρύξεις, δημοπρασίες), ηλεκτρονική υποβολή αιτήσεων, ηλεκτρονική έκδοση πιστοποιητικών, προμήθειες δημοσίου, διευκόλυνση και αυτοματοποίηση των συναλλαγών, ηλεκτρονική πιστοποίηση της επιχείρησης, δυνατότητα ηλεκτρονικής πληρωμής κ,ά. Σε προηγμένες χώρες, η πρότυπη και μεθοδική λειτουργία του ηλεκτρονικού εμπορίου σ αυτήν τη μορφή έχει ως αποτέλεσμα τη μείωση των λειτουργικών εξόδων, την παροχή καλύτερων υπηρεσιών και τον αποτελεσματικότερο έλεγχο εσόδων και διαφάνειας. Σιγά-σιγά τίθενται και στη χώρα μας σε λειτουργία εφαρμογές οι οποίες θα οδηγήσουν σε ανάλογα αποτελέσματα (όπως, για παράδειγμα, η ηλεκτρονική υποβολή δηλώσεων ΦΠΑ και φόρου εισοδήματος). 7

Την επικοινωνία του κράτους με τον πολίτη (Consumer to Government - C2G), που περιλαμβάνει την ενημέρωση των πολιτών για τις υπηρεσίες τις οποίες παρέχει το κράτος και τη διεκπεραίωση των υποθέσεων τους σε σχέση με τις δημόσιες υπηρεσίες με ηλεκτρονικό τρόπο. Σ αυτήν την κατηγορία εντάσσονται δραστηριότητες όπως: ηλεκτρονική παροχή πληροφοριών, ηλεκτρονική πιστοποίηση πολιτών, ηλεκτρονική υποβολή αιτήσεων φορολογικών δηλώσεων, ηλεκτρονική έκδοση πιστοποιητικών και δυνατότητα ηλεκτρονικής πληρωμής από τον πολίτη. 1.3 Μοντέλα Ηλεκτρονικών Επιχειρήσεων Τα βασικά μοντέλα ηλεκτρονικών επιχειρήσεων είναι το ηλεκτρονικό κατάστημα (eshop), η ηλεκτρονική προμήθεια (e-procurment), η ηλεκτρονική δημοπρασία (e-auction), τα ηλεκτρονικά εμπορικά κέντρα (e-malls) και η ηλεκτρονική πύλη (e-portal). 1.4 Ηλεκτρονική Προμήθεια: Ορισμός Ηλεκτρονικές προμήθειες είναι ένας ευρύς όρος ο οποίος χρησιμοποιείται για να περιγράψει τη χρήση ηλεκτρονικών μεθόδων, μέσω Διαδικτύου, για τη διενέργεια συναλλαγών μεταξύ των επιχειρήσεων-αγοραστών και των επιχειρήσεων-προμηθευτών. Η διαδικασία Ηλεκτρονικών Προμηθειών καλύπτει όλες τις διαδικασίες της συναλλαγής και γενικά θα μπορούσε να αποτυπωθεί ως μια διαδικασία 3 βασικών σταδίων (Source-Procure-Analyze): Ανεύρεση προμηθευτή και διαπραγμάτευση (Source) Εκτέλεση Προμήθειας (Procure) Ανάλυση (Analyze) Οι ηλεκτρονικές προμήθειες ανήκουν κυρίως στη μορφή Β2Β Ηλεκτρονικού Εμπορίου (Επιχείρηση προς Επιχείρηση). Η δεύτερη, μικρότερη κατηγορία, είναι αυτή του Β2C Ηλεκτρονικού Εμπορίου (Επιχείρηση προς Καταναλωτή). Όταν ο φορέας είναι δημόσια υπηρεσία, τότε μιλάμε για δημόσιες ηλεκτρονικές προμήθειες B2G Ηλεκτρονικού Εμπορίου (Επιχείρηση προς Κράτος). Η νέα γενιά E-Procurement είναι πλέον on-demand ή ένα softwareas-a-service. Πρωταρχικός στόχος του e-procurement είναι να καταστεί δυνατή η ηλεκτρονική διαχείριση εφοδιαστικής αλυσίδας, που μπορεί να επιτευχθεί είτε αυτόνομα, είτε από κοινού είτε από ολοκληρωμένα εργαλεία λογισμικού. Υπάρχουν επτά βασικοί τύποι E-Procurement (Baily, P. J. H., 2008): Web-based ERP (Enterprise Resource Planning): Η δημιουργία και έγκριση παραγγελιοληψίας, η διάθεση εντολών αγοράς και η λήψη αγαθών/υπηρεσιών με τη χρήση ενός web-based συστήματος λογισμικού. e-mro (Maintenance, Repair and Overhaul): Όμοιο με το ERP, εκτός από το ότι τα αγαθά/υπηρεσίες που έχουν παραγγελθεί δεν σχετίζονται με τα προϊόντα συντήρησης, επισκευής και επιθεώρησης (MRO). 8

e-sourcing: Προσδιορισμός νέων προμηθευτών για μια ειδική κατηγορία αγοράς προϊόντων μέσω Διαδικτυακής τεχνολογίας. e-tendering: Αποστολή αιτημάτων για πληροφορίες και τιμές στους προμηθευτές και παραλαβή των απαντήσεών τους, μέσω Διαδικτυακής τεχνολογίας. e-reverse auctioning: Η χρήση της τεχνολογίας του Διαδικτύου για αγορά αγαθών/υπηρεσιών από διάφορους γνωστούς ή άγνωστους προμηθευτές. e-informing: Συγκέντρωση και διάχυση πληροφοριών αγοράς από- και προς εσωτερικές και εξωτερικές πηγές χρησιμοποιώντας Διαδικτυακή τεχνολογία. e-marketsites: Επεκτάσεις στο Web-based ERP για να επεκταθούν οι αλυσίδες αξίας. Αγοράζοντας από ηλεκτρονικές κοινότητες μπορούν να έχουν πρόσβαση στα προϊόντα και τις υπηρεσίες των επιθυμητών προμηθευτών, προσθέτοντάς τα σε shopping carts, μπορούν να κάνουν παραγγελίες, να ζητούν έγκριση, να αγοράζουν και να έχουν πρόσβαση σε ηλεκτρονικά τιμολόγια για την αλυσίδα προμηθειών από την πλευρά των προμηθευτών σε συνδυασμό με τα οικονομικά συστήματα των αγοραστών. 1.5 Πλεονεκτήματα Ηλεκτρονικού Εμπορίου Τα πλεονεκτήματα που προκύπτουν από τις εφαρμογές του ηλεκτρονικού εμπορίου είναι πολλά, γι αυτό μπορούμε να τα διακρίνουμε με βάση την πλευρά στην οποία προσπορίζουν όφελος. Έτσι, τα διακρίνουμε σε τρεις κατηγορίες με βάση: τα οφέλη για τους καταναλωτές, τα οφέλη για τους οργανισμούς και τα οφέλη για την κοινωνία γενικότερα. 1. Οφέλη για τους καταναλωτές: Καλύτερη και ταχύτερη εξυπηρέτηση πελατών: Το ΗΕ επιτρέπει στους πελάτες να αγοράζουν ή να κάνουν άλλου είδους συναλλαγές 24 ώρες το 24ωρο, όλο το έτος και σχεδόν από οποιοδήποτε μέρος, αυτοματοποιώντας τη διαδικασία απάντησης στις πιο συχνές και συνηθισμένες ερωτήσεις και επιτρέποντας έτσι στο ανθρώπινο δυναμικό της επιχείρησης να ασχοληθεί με τις περιπτώσεις οι οποίες πραγματικά απαιτούν προσοχή. Οι καταναλωτές μπορούν να λάβουν λεπτομερείς πληροφορίες μέσα σε λίγα λεπτά, δίχως απώλεια χρόνου και ταλαιπωρία, ενώ μειώνονται και οι μετακινήσεις. Η παράδοση των προϊόντων και των υπηρεσιών γίνεται ταχύτερα, ενώ για μερικά προϊόντα (π.χ. ψηφιακά) η παράδοση μπορεί να είναι άμεση. Δυνατότητα αλληλεπίδρασης με άλλους πελάτες: Το ΗΕ επιτρέπει στους πελάτες να έρχονται σε επαφή με άλλους πελάτες σε ηλεκτρονικές κοινότητες, στο πλαίσιο των οποίων μπορούν να ανταλλάσσουν απόψεις και να συγκρίνουν τις εμπειρίες τους. Μεγαλύτερη γκάμα προϊόντων: Προσφέρονται στους πελάτες περισσότερες επιλογές. Μπορούν να επιλέξουν μέσα από μεγάλη γκάμα προϊόντων και υπηρεσιών 9

από περισσότερες πηγές και ανεξάρτητα από τον τόπο διαμονής τους, αφού έχουν τη δυνατότητα πραγματοποίησης παγκόσμιων αγορών με ταυτόχρονη δυνατότητα εύκολης και γρήγορης σύγκρισης των προϊόντων αυτών. Χαμηλότερες τιμές προϊόντων: Η μείωση των τιμών των προϊόντων αποτελεί έμμεσο αποτέλεσμα της μείωσης του κόστους των συναλλαγών (κόστος παραγωγής και διακίνησης). Αν λάβουμε υπόψη μας ότι το λειτουργικό κόστος ενός ηλεκτρονικού καταστήματος είναι πολύ μικρότερο από το κόστος των αντίστοιχων φυσικών καταστημάτων, οδηγούμαστε στο λογικό συμπέρασμα ότι και τα προϊόντα που διακινούνται ή πωλούνται μέσω του διαδικτύου είναι επίσης φθηνότερα από τα αντίστοιχα των φυσικών καταστημάτων. Επιπλέον, το ηλεκτρονικό εμπόριο συμβάλλει στην τόνωση του ανταγωνισμού, με αποτέλεσμα τη δημιουργία προσφορών, εκπτώσεων και τη διάθεση αγαθών σε καλύτερες τιμές 2. Οφέλη για τις επιχειρήσεις: Πρόσβαση σε νέες αγορές: Το ΗΕ διευρύνει τον κύκλο εργασιών σε εθνικές και διεθνείς αγορές. Πρόκειται για σημαντικό όφελος, καθώς δίνει τη δυνατότητα στις επιχειρήσεις να έχουν παγκόσμια παρουσία. Αυτό τους δίνει την ευκαιρία (και ειδικά στις μικρομεσαίες επιχειρήσεις) να διευρύνουν τον κύκλο εργασιών τους σε νέες αγορές και σε καινούριο αγοραστικό κοινό. Περιορισμός άμεσου κόστους: Η χρήση ενός ψηφιακού δικτύου για τη δημοσίευση και τη μετάδοση πληροφοριών σε ηλεκτρονική μορφή μπορεί να μειώσει το κόστος σε σύγκριση με την επικοινωνία και τη δημοσίευση σε έντυπη μορφή (μειώνει το κόστος της δημιουργίας, επεξεργασίας, διανομής, αποθήκευσης και ανάκτησης πληροφοριών οι οποίες βρίσκονται σε χαρτί). Έτσι έχουμε μείωση του κόστους μια σειράς διαδικασιών που λαμβάνουν χώρα σε μια επιχείρηση, όπως: λειτουργικό κόστος, κόστος προώθησης/διαφήμισης, λειτουργικό κόστος ενδοπληροφόρησης, κόστος επικοινωνίας με τους προμηθευτές και αυτοματοποίηση της διαχείρισης παραγγελιών, διαχείριση της αποθήκης, καθώς και το κόστος υποστήριξης των πελατών σε 24ωρη βάση χωρίς την ανάγκη λειτουργίας ενός τηλεφωνικού κέντρου. Επίσης, το ΗΕ μειώνει σημαντικά το κόστος παραγωγής και διανομής των αγαθών, ειδικά σε προϊόντα τα οποία μεταφέρονται ηλεκτρονικά. Ταχύτερη παράδοση προϊόντων: Χάρη στην αμεσότητα της πρόσβασης στις νέες πληροφορίες, το ηλεκτρονικό εμπόριο επιτρέπει τη συντόμευση του χρόνου που απαιτείται για την παραγωγή και την παράδοση πληροφοριών και υπηρεσιών. Αυτό είναι ιδιαίτερα σημαντικό σε κλάδους οι οποίοι εξαρτώνται από την έγκαιρη παράδοση κρίσιμων πληροφοριών, όπως τα μέσα ενημέρωσης και η χρηματιστηριακή αγορά. Η βελτίωση της εικόνας της επιχείρησης, λόγω της ταχύτερης διεκπεραίωσης, τόσο των συναλλαγών της με τους καταναλωτές όσο και της επικοινωνίας με τις 10

άλλες επιχειρήσεις, επιτρέπει να αυξήσουν την ανταγωνιστικότητα τους, ανταποκρινόμενες περισσότερο στις ανάγκες του πελάτη. Καλύτερος έλεγχος αποθεμάτων: Οι ηλεκτρονικές επικοινωνίες επιταχύνουν την ολοκλήρωση των συναλλαγών, αυξάνοντας έτσι την ευελιξία στις προμήθειες των επιχειρήσεων. Οι επιχειρήσεις αξιοποιούν τη δυνατότητα αυτή με την εφαρμογή του συστήματος JIT (Just-In-Time), το οποίο μειώνει τα περιθώρια ανανέωσης των αποθεμάτων, περιορίζοντας έτσι σημαντικά το κόστος παραγωγής - διάθεσης των προϊόντων τους. Γενικότερα, ισχύει ο κανόνας ότι, όσο λιγότερος χρόνος απαιτείται για την ολοκλήρωση μιας παραγγελίας, τόσο μικρότερο απόθεμα είναι υποχρεωμένη να διατηρεί μια επιχείρηση, ώστε να μην υπάρξει διακοπή στις δραστηριότητές της. Έτσι, η αποθήκευση των προϊόντων ανταποκρίνεται στην πραγματική ζήτηση. Εξατομίκευση προϊόντων και υπηρεσιών: Το ΗΕ επιτρέπει τη λεπτομερή παρακολούθηση και καταγραφή του αγοραστικού προφίλ των πελατών μιας επιχείρησης, δίνοντας έτσι τη δυνατότητα, μέσα από συστήματα pull, παροχής εξατομικευμένων προϊόντων και υπηρεσιών σ αυτούς. 3. Οφέλη για την κοινωνία: Το ΗΕ επιτρέπει σε περισσότερα άτομα να εργάζονται στο σπίτι και να κάνουν λιγότερες μετακινήσεις για αγορές, με αποτέλεσμα να υπάρχει λιγότερη κίνηση στους δρόμους και μικρότερη μόλυνση του περιβάλλοντος. Βελτιώνει το πρόσωπο των δημοσίων υπηρεσιών του κράτους, προσφέροντας καλύτερη ποιότητα συναλλαγών με τον πολίτη και διευκολύνοντας την παροχή δημοσίων υπηρεσιών σ αυτούς, όπως: υπηρεσίες υγείας, εκπαίδευσης, φορολογικές (εφορία) κ.α., παρέχοντας εύκολη και γρήγορη εξυπηρέτηση. Επιτρέπει την πώληση αγαθών και την παροχή υπηρεσιών σε χαμηλότερες τιμές, δίνοντας τη δυνατότητα σε άτομα από λιγότερο ευνοημένες κοινωνικές ομάδες να αγοράσουν, βελτιώνοντας έτσι το βοιωτικό τους επίπεδο. Τέλος, επιτρέπει σε ανθρώπους από αναπτυσσόμενες χώρες και από αγροτικές περιοχές να απολαμβάνουν προϊόντα και υπηρεσίες που αλλιώς δεν θα ήταν διαθέσιμα για αυτούς. 1.6 Μειονεκτήματα Ηλεκτρονικού Εμπορίου Εκτός όμως από τα προαναφερθέντα πλεονεκτήματα, το ηλεκτρονικό εμπόριο παρουσιάζει και μια σειρά από μειονεκτήματα και κινδύνους που σχετίζονται με τις εμπορικές επικοινωνίες και τις συναλλαγές. Τους κινδύνους και τα μειονεκτήματα αυτά θα μπορούσαμε να τα διακρίνουμε σε δυο κατηγορίες: 1. Τεχνολογικής φύσης: 11

Υπάρχει έλλειψη κοινά αποδεκτών προτύπων ποιότητας, πρωτοκόλλων επικοινωνίας, καθώς και έλλειψη ασφαλείας και αξιοπιστίας. Υπάρχει ανεπαρκές εύρος ζώνης τηλεπικοινωνιών. Το δίκτυο αντιμετωπίζει σοβαρά προβλήματα κυκλοφορίας και έλλειψης επάρκειας στη μεταφορά δεδομένων λόγω της ραγδαίας αύξησης των συνδεδεμένων χρηστών. Μολονότι οι δικτυακές τεχνολογίες εξελίσσονται με ταχύτητα, η ανάγκη για μεγαλύτερο εύρος ζώνης και, κατά συνέπεια, ταχύτητα στη μεταφορά δεδομένων αυξάνεται με ακόμη μεγαλύτερο ρυθμό. Μέχρι τη στιγμή που αυτή η δυσκολία θα αντιμετωπιστεί, τα προβλήματα που σχετίζονται με την ποιότητα των υπηρεσιών θα παραμένουν. Επιπλέον απαιτούμενο κόστος για την υποδομή. Μολονότι οι εταιρείες αναγνωρίζουν τη σημασία του ηλεκτρονικού εμπορίου στο σύγχρονο επιχειρηματικό περιβάλλον, οι επενδύσεις υποδομής είναι ένας παράγοντας που πρέπει να εκτιμηθεί και να ληφθεί σοβαρά υπόψη. Τα εργαλεία ανάπτυξης λογισμικού είναι ακόμη υπό εξέλιξη. Υπάρχουν δυσκολίες στο συνδυασμό Διαδικτυακών εφαρμογών HE με υπάρχουσες εφαρμογές και βάσεις δεδομένων. Η εξυπηρέτηση διαδικασιών μεγάλης κλίμακας απαιτεί υψηλά αυτοματοποιημένα συστήματα και αποθήκες προϊόντων. 2. Μη τεχνολογικής φύσης: Τα θέματα ασφαλείας και προστασίας προσωπικών δεδομένων αποτρέπουν πιθανούς πελάτες. Είναι ένα από τα σημαντικότερα μειονεκτήματα του ΗΕ. Στο internet δύσκολα μπορεί κανείς να εγγυηθεί απόλυτη ασφάλεια στις συναλλαγές. Κι αυτό λειτουργεί ως ένας ψυχολογικός φραγμός για τον καταναλωτή, ο οποίος διστάζει να δώσει τα στοιχεία του (πιστωτική κάρτα) στο internet. Βέβαια, οι μέθοδοι κρυπτογράφησης και διασφάλισης απορρήτου βελτιώνονται συνεχώς, οι κίνδυνοι έχουν μειωθεί στο ελάχιστο και οι περιπτώσεις ηλεκτρονικής απάτης αποτελούν ασήμαντο ποσοστό. Επίσης, η γενικότερη έλλειψη εμπιστοσύνης στα συστήματα HE και σε άγνωστους προμηθευτές αποτρέπουν τους πιθανούς πελάτες. Οι πελάτες δεν εμπιστεύονται έναν άγνωστο, απρόσωπο πωλητή, τις συναλλαγές χωρίς έντυπες αποδείξεις αγοράς και τα ηλεκτρονικά χρήματα. Δεν υπάρχει φυσική επαφή του πελάτη με τα προϊόντα. Στο ΗΕ μεγάλο μειονέκτημα αποτελεί και το γεγονός ότι ο πελάτης δεν έχει τη δυνατότητα να επεξεργαστεί προσωπικά το προϊόν πριν το επιλέξει. Οι πελάτες νιώθουν μεγαλύτερη σιγουριά όταν έχουν άμεση επαφή με το προϊόν, για το λόγο αυτό υπάρχει μεγάλη επιφύλαξη στις ηλεκτρονικές αγορές προϊόντων και ιδιαίτερα στη χώρα μας. Πολλά ζητήματα που σχετίζονται με νομικά θέματα, κανονισμούς (π.χ. Φορολογικά θέματα), κυβερνητικές ρυθμίσεις κ.ά. παραμένουν ανεπίλυτα. 12

Τα αποτελέσματα και οι συνέπειες του ΗΕ δεν έχουν ακόμα πλήρως μελετηθεί και αξιολογηθεί. Το ΗΕ είναι ένας τομέας που μεταβάλλεται με ραγδαίο ρυθμό και έως σήμερα έχουν γίνει μόνον υποθέσεις σχετικά με την επιτυχία του. Υπάρχουν βέβαια επιτυχημένα παραδείγματα, αλλά μόλις τώρα διανύουμε το στάδιο της ωριμότητας. Και πολλοί οργανισμοί διστάζουν να εφαρμόσουν ηλεκτρονικές συναλλαγές. Στις περισσότερες περιπτώσεις δεν υπάρχει επαρκής αριθμός (κρίσιμη μάζα) των αγοραστών και των πωλητών που είναι απαραίτητοι για κερδοφόρες δραστηριότητες HE. Η σύνδεση στο internet κατά τόπους παραμένει ακριβή και άβολη και δεν είναι διαθέσιμη για όλους. Έτσι, εάν το πλατύ κοινό δεν έχει πρόσβαση στο διαδίκτυο, η προσπάθεια η οποία γίνεται δεν φτάνει στον τελικό καταναλωτή. 1.7 Υλοποίηση Στην διπλωματική αυτή ασχοληθήκαμε με την υλοποίηση ενός συστήματος ημιαυτοματοποιημένων ηλεκτρονικών προμηθειών μεταξύ επιχειρήσεων (Β2Β), με φορέα ένα ηλεκτρονικό βιβλιοπωλείο (e-shop). Το σύστημα υλοποιεί το e-tendering για τη λήψη πληροφοριών οι οποίες θα συμβάλλουν στο κομμάτι Web-based ERP για τη δημιουργία και έγκριση παραγγελιοδοσίας. 13

2 Υπηρεσίες Διαδικτύου 2.1 Ορισμός των Υπηρεσιών Διαδικτύου Υπάρχουν πολλοί ορισμοί για το τι είναι οι υπηρεσίες διαδικτύου (στο εξής web services ή, για συντομία, WS), περίπου όσοι και οι εταιρίες πληροφορικής οι οποίες αναπτύσσουν εργαλεία για τα web services. Ένας πολύ καλός ορισμός προέρχεται από την IBM: Τα web services είναι μια τεχνολογία που επιτρέπει στις εφαρμογές να επικοινωνούν μεταξύ τους ανεξαρτήτως πλατφόρμας και γλώσσας προγραμματισμού. Ένα web service είναι μια διεπαφή λογισμικού (software interface) που περιγράφει ένα άθροισμα από λειτουργίες προσέγγισιμες από το δίκτυο μέσω πρότυπων μηνυμάτων XML. Χρησιμοποιεί πρότυπα βασισμένα στη γλώσσα XML για να περιγράψει μία λειτουργία (operation) προς εκτέλεση, καθλως και τα δεδομένα προς ανταλλαγή με κάποια άλλη εφαρμογή. Μια ομάδα από web services οι οποίες αλληλεπιδρούν μεταξύ τους καθορίζει μια εφαρμογή web services. H Microsoft μέσα από το MSDN της καταλήγει ότι όλα τα web services έχουν τρία (3) κοινά χαρακτηριστικά: Τα web services εκθέτουν χρήσιμη λειτουργικότητα σε χρήστες του διαδικτύου μέσα από ένα πρότυπο δικτυακό πρωτόκολλο. Στις περισσότερες περιπτώσεις αυτό το πρωτόκολλο είναι το SOAP (Simple Object Access Protocol). Τα web services παρέχουν ένα τρόπο για να περιγράψουν τις διεπαφές τους με αρκετή λεπτομέρεια, ώστε να επιτρέψουν στον χρήστη τους να χτίσει μια εφαρμογή πελάτη η οποία να επικοινωνεί μαζί τους. Η περιγραφή συνήθως παρέχεται σε ένα έγγραφο XML το οποίο ονομάζεται έγγραφο WSDL (Web Services Description Language). Τα web services καταχωρούνται, ώστε οι δυνητικοί χρήστες να μπορούν να τα βρουν εύκολα. Αυτό γίνεται με το UDDI (Universal Discovery Description and Integration). Τα web services, λοιπόν, αποτελούν μία αρχιτεκτονική κατανεμημένων συστημάτων κατασκευασμένη από πολλά διαφορετικά υπολογιστικά συστήματα τα οποία επικοινωνούν μέσω του δικτύου ώστε να δημιουργήσουν ένα σύστημα. Αποτελούνται από ένα σύνολο προτύπων τα οποία επιστρέπουν στους υπεύθυνους για την ανάπτυξη (προγραμματιστές - developers) να υλοποιήσουν κατανεμημένες εφαρμογές (χρησιμοποιώντας διαφορετικά εργαλεία από διαφορετικούς προμηθευτές), ώστε να κατασκευάσουν εφαρμογές που χρησιμοποιούν έναν συνδυασμό από ενότητες λογισμικού (software modules) οι οποίες καλούνται από συστήματα τα οποία ανήκουν σε διαφορετικά τμήματα ενός οργανισμού ή σε διαφορετικούς οργανισμούς. 14

2.2 Πλεονεκτήματα έναντι παλαιότερων κατανεμημένων τεχνολογιών Μία εύλογη ερώτηση είναι τι διαφορετικό έχει να προσφέρει αυτή η τεχνολογία σε σχέση με προηγούμενες κατανεμημένες τεχνολογίες. 1. Ευκολότερος χειρισμός δεδομένων. Παραδοσιακά το κυριότερο πρόβλημα στις κατανεμημένες τεχνολογίες ήταν το λεγόμενο tight-coupling ή, στα ελληνικά, η ισχυρή συνδεδιμότητα. Μια εφαρμογή που καλούσε μια άλλη απομακρυσμένη ήταν αυστηρά δεμένη με αυτήν από την κλήση λειτουργίας (function call) που εκτελούσε και τις παραμέτρους που περνούσε. Στα περισσότερα συστήματα πριν από την έλευση των web services, ο τρόπος επικοινωνίας ήταν μια σταθερή διεπαφή με λίγη έως καθόλου ευελεξία ή προσαρμοστικότητα στα περιβάλλοντα ή στις συνεχώς μεταβαλλόμενες ανάγκες. Τα web services χρησιμοποιούν τη γλώσσα XML, η οποία μπορεί να περιγράψει οποιαδήποτε δεδομένα σε ένα πραγματικά ανεξάρτητο από πλατφόρμα τρόπο για ανταλλαγή αυτών των δεδομένων μεταξύ συστημάτων. Με αυτόν τον τρόπο οδηγούμαστε σε εφαρμογές με χαλαρή συνδεσιμότητα (loosely-coupled). Επιπλέον, τα web services μπορούν να λειτουργήσουν σε πιο αφηρημένο επίπεδο, στο οποίο μπορούν να επαναξιολογήσουν, να τροποποιήσουν ή να χειριστούν τύπους δεδομένων δυναμικά κατά περίπτωση. Έτσι, σε τεχνικό επίπεδο, τα web services μπορούν να χειριστούν δεδομένα πολύ ευκολότερα και να επιτρέψουν στο λογισμικό να επικοινωνεί πιο ελεύθερα. 2. Απλότητα πρωτοκόλλου επικοινωνίας. Τα web services χρησιμοποιούν ως πρωτόκολλο επικοινωνίας το SOAP. Το πρωτόκολλο αυτό είναι πολύ πιο απλό από πρωτόκολλα παλαιότερων τεχνολογιών, όπως αυτά που χρησιμοποούνταν από τα κατανεμημένα περιβάλλοντα CORBA, DCOM, RPC. Έτσι, το να δημιουργήσει κανείς μια υλοποίηση SOAP που υπόκειται στα πρότυπα (standards-compliant) είναι πολύ πιο εύκολο. Σήμερα μπορεί να βρει κανείς υλοποιήσεις του SOAP από τις μεγαλύτερες εταιρίες πληροφορικής, αλλά ακόμη και από μεμονωμένους προγραμματιστές, πράγμα αδιανόητο για παλαιότερες κατανεμημένες τεχνολογίες. 3. Απλότητα υποδομής. Τα web services λειτουργούν με πρότυπες γλώσσες και πρωτόκολλα όπως η XML, το HTTP και το TCP/IP. Η πλειονότητα των εταιριών έχουν ήδη τη δικτυακή υποδομή, καθώς και ανθρώπινο δυναμικό με γνώσεις και εμπειρία ώστε να την συντηρούν. Έτσι, το κόστος για την εφαρμογή των web services είναι σημαντικά μικρότερο από αυτό των προηγούμενων τεχνολογιών. 4. Ευκολία στην επικοινωνία. Με τις προηγούμενες τεχνολογίες η συνεργασία μεταξύ εταιριών αποτελούσε ένα σημαντικό πρόβλημα, διότι κατανεμημένες τεχνολογίες όπως CORBA και DCOM χρησιμοποιούσαν μη πρότυπες πόρτες. Αυτό είχε ως αποτέλεσμα η συνεργασία να προκαλεί άνοιγμα οπών στα τείχη προστασίας (firewalls), πράγμα το οποίο πολλές φορές δεν ήταν αποδεκτό από τους υπεύθυνους της πληροφορικής σε μια εταιρία, διότι έθετε σε κίνδυνο την ασφάλεια των συστημάτων. Επιπροσθέτως, 15

η χειροκίνητη διαδικασία η οποία απαιτούνταν για τη συνεργασία μιας εταιρίας με τους συνεργάτες της δεν επέτρεπε την ανάπτυξη μιας δυναμικής συνεργασίας. Τα web services μπορούν να χρησιμοποιήσουν (μεταξύ άλλων) το HTTP ως πρωτόκολλο μεταφοράς και τα περισσότερα τείχη προστασίας επιτρέπουν την πρόσβαση μέσω της θύρας 80 (πρότυπη θύρα για το HTTP). Με αυτόν τον τρόπο οδηγούμαστε σε ευκολότερες και δυναμικές συνεργασίες μεταξύ των συστημάτων των εταιριών. 5. Διαλειτουργικότητα και ευκολία ανάπτυξης νέων εφαρμογών. Οι προηγούμενες κατανεμημένες τεχνολογίες υπέφεραν από προβλήματα διαλειτουργικότητας, διότι κάθε προμηθευτής (vendor) υλοποιούσε το δικό του πρότυπο για distributed object messaging. Με την XML ως αποκλειστικό πρότυπο στα web services, συστήματα φτιαγμένα από διαφορετικές τεχνολογίες, όπως η Java και το.net, μπορούν να επικοινωνήσουν μεταξύ τους. Επιπλέον, λόγω της απλότητας της XML είναι πολύ πιο εύκολο να υλοποιηθούν νέες εφαρμογές σε μικρό χρονικό διάστημα. 2.3 Web Services από επιχειρηματική σκοπιά Σε ένα υψηλότερο εννοιολογικό επίπεδο, μπορούμε να δούμε τα web services ως μονάδες εργασίας (units of work). Κάνοντας ένα βήμα περαιτέρω, αυτές οι μονάδες μπορούν να συνδυαστούν σε εργασίες επιχειρησιακού προσανατολισμού για να χειριστούν συγκεκριμένες επιχειρησιακές λειτουργίες. Αυτό, με τη σειρά του, επιτρέπει σε μη καταρτισμένους τεχνικά ανθρώπους να σχεδιάσουν εφαρμογές οι οποίες μπορούν να χειριστούν τα επιχειρησιακά ζητήματα συνδυάζοντας τα web services σε ροές εργασίας. Το πλεονέκτημα που προκύπτει από αυτήν την πτυχή είναι ότι τα web services βοηθούν στη γεφύρωση του χάσματος ανάμεσα στους ανθρώπους του επιχειρείν και στους ανθρώπους της πληροφορικής σε ένα οργανισμό. Οι άνθρωποι του επιχειρείν μπορούν να περιγράψουν γεγονότα και δραστηριότητες και οι τεχνικοί μπορούν να τα συνδέσουν με τις κατάλληλες υπηρεσίες. Με καθολικά καθορισμένες διεπαφές και καλά σχεδιασμένες λειτουργίες, γίνεται επίσης εύκολο να επαναχρησιμοποιηθούν αυτές οι λειτουργίες. άρα, και οι εφαρμογές που αντιπροσωπεύουν. Η επαναχρησιμοποιήση μιας εφαρμογής λογισμικού σημαίνει καλύτερη απόδοση της επένδυσης (return on investment), διότι με τους ίδιους πόρους επαυξάνει την παραγωγικότητα. Επιτρέπει στους ανθρώπους να εξετάσουν το ενδεχόμενο να χρηιμοποιήσουν μια ήδη υπάρχουσα εφαρμογή με διαφορετικό τρόπο ή το ενδεχόμενο να προσφέρουν αυτήν την εφαρμογεί σε κάποιον συνεργάτη για να την χρησιμοποιήσει εκείνος με τρόπο που να προσιδιάζει στις δικές του ανάγκες, αυξάνοντας ενδεχομένως τις επιχειρησιακές συναλλαγές μεταξύ των συνεργατών. Επομένως, τα κύρια ζητήματα τα οποία προσπαθούν να λύσουν τα web services είναι τα ζητήματα ολοκλήρωσης (integration) δεδομένων και εφαρμογών και αυτά της μεταμόρφωσης των τεχνικών λειτουργιών σε υπολογιστικές λειτουργίες επιχειρησιακού προσανατολισμού. 16

2.4 Web Services από τεχνική σκοπιά Προκειμένου να επωφεληθούμε από όλα τα δυναμικά χαρακτηριστικά των web services, ώστε να συνδυάσουμε υπηρεσίες σε εφαρμογές, χρειάζεται πρώτα να χτίσουμε αυτές τις υπηρεσίες. Οι γλώσσες προγραματισμού στην πληροφορική συνεχώς εξελίσσονται. Ξεκινήσαμε δεκαετίες πριν με την ιδέα της function στην οποία παρέχουμε μερικές παραμέτρους, εκτελεί μια λειτουργία με αυτές τις παραμέτρους και επιστρέφει μια τιμή βασισμένη στους υπολογισμούς που πραγματοποιήθηκαν. Τελικά, αυτή η πρώτη έννοια εξελίχθηκε σε αντικείμενο (object), όπου κάθε αντικείμενο είχε όχι απλώς έναν αριθμό από λειτουργίες (functions) τις οποίες μπορεί να εκτελέσει, αλλά και τις δικές του ιδιωτικές μεταβλητές (private data variables), αντί να στηρίζεται σε εξωτερικές μεταβλητές του συστήματος που στο παρελθόν έκαναν πιο περίπλοκη την ανάπτυξη εφαρμογών. Δεδομένου ότι οι εφαρμογές άρχισαν να επικοινωνούν μεταξύ τους, η έννοια του καθορισμού καθολικών διεπαφών (universal interfaces) για αντικείμενα έγινε σημαντική, επιτρέποντας αντικείμενα σε διαφορετικές πλατφόρμες να επικοινωνούν, ακόμη και αν είχαν αναπτυχθεί σε διαφορετικές γλώσσες προγραμματισμού και εκτελούνταν σε διαφορετικά λειτουργικά συστήματα. Στο πιο πρόσφατο βήμα, τα web services κινήθηκαν προς την κατεύθυνση των διεπαφών και επικοινωνιών καθορισμένων με XML, ενώνοντας τελικά κάθε είδους εφαρμογή με οποιαδήποτε άλλη και παρέχοντας την ελευθερία στις εφαρμογές να αλλάξουν και να εξελιχθούν με τον χρόνο, αρκεί να είναι σχεδιασμένες σύμφωνα με την κατάλληλη διεπαφή. Η μεταβλητότητα της XML είναι αυτό που κάνει τα web services διαφορετικά από τεχνολογίες προηγούμενων γενεών. Επιτρέπει τον διαχωρισμό της γραμματικής δομής (syntax) και της γραμματικής έννοιας (semantics) και τον τρόπο με τον οποίο αυτά υποβάλλονται σε επεξεργασία και κατανοούνται από μία υπηρεσία και το περιβάλλον μέσα στο οποίο αυτή η υπηρεσία υπάρχει. Έτσι λοιπόν τώρα τα αντικείμενα μπορούν να καθοριστούν σαν υπηρεσίες οι οποίες επικοινωνούν με άλλες υπηρεσίες σε γραμματική καθορισμένη σε XML, με την οποία κάθε υπηρεσία μεταφράζει και αναλύει το μήνυμα σύμφωνα με την τοπική της υλοποίησης και το περιβάλλον της. Κατά συνέπεια, μια διακτυακή εφαρμογή μπορεί πραγματικά να συντεθεί από πολλαπλές οντότητες διαφόρων υλοποιήσεων και σχεδιασμών, εφόσον προσαρμόζονται στους κανόνες που καθορίζονται από την προσανατολισμένη στις υπηρεσίες αρχιτεκτονική τους. Κατά συνέπεια, τα web services μας επιτρέπουν: Την αλληλεπίδραση μεταξύ υπηρεσιών σε οποιαδήποτε πλατφόρμα, γραμμένες σε οποιαδήποτε γλωσσα προγραμματισμού. Να αντιληφθούμε λειτουργίες εφαρμογών ως εργασίες, οδηγούμενοι σε ανάπτυξη και ροές εργασιών προσανατολισμένες σε εργασίες. Αυτό επιτρέπει μια υψηλότερη αφαίρεση του λογισμικού το οποίο μπορεί να υιοθετηθεί από λιγότερο τεχνικά καταρτισμένους χρήστες. Τη χαλαρή συνδεσιμότητα μεταξύ εφαρμογών, πράγμα που σημαίνει ότι οι αλληλεπιδράσεις μεταξύ υπηρεσιών δεν θα διακόπτονται κάθε φορά που υπάρχει κάποια 17

αλλαγή. Την προσαρμογή ήδη υπάρχουσων εφαρμογών στις μεταβαλλόμενες επιχειρησιακές συνθήκες και ανάγκες των πελατών. Να παρέχουμε υπάρχουσες εφαρμογές λογισμικού με διαπαφές υπηρεσιών χωρίς να αλλάξουμε τις αρχικές εφαρμογές, επιτρέποντάς τους να λειτουργούν πλήρως στο περιβάλλον των υπηρεσιών. Να εισάγουμε άλλες διοικητικές λειτουργίες ή λειτυοργίες διαχείρισης διαδικασιών, όπως η αξιοπιστία, η υπευθυνότητα, η ασφάλεια, κ.λπ., ανεξάρτητες από την αρχική λειτουργία μιας εφαρομογής, αυξάνοντας κατά συνέπεια τη μεταβλητότητα και τη χρησιμότητά της στο επιχειρησιακό περιβάλλον. 2.5 Εφαρμογές των Web Services Τα πρώτα web services στόχευαν να αποτελέσουν πηγές πληροφορίας τις οποίες μπορεί κανείς πολύ εύκολα να ενσωματώσει στις εφαρμογές του: τιμές μετοχών, προβλέψεις καιρού, αποτελέσματα αθλητικών παινιδιών κ.λπ. Είναι εύκολο να φανταστεί κανείς μια ολόκληρη κατηγορία εφαρμογών που μπορεί να κατασκευάσει ώστε να αναλύει και να συνδυάζει πληροφορία που τον ενδιαφέρει και να την παρουσιάζει με ποικίλους τρόπους. Για παράδειγμα, θα μπορούσαμε να έχουμε ένα λογιστικό φύλλο (spreadsheet) το οποίο συνοψίζει όλη την οικονομική μας εικόνα: μετοχές, τραπεζικούς λογαριασμούς, δάνεια κ.λπ. Αν αυτή η πληροφορία ήταν διαθέσιμη μέσω web services, το λογιστικό φύλλο θα μπορούσε να ενημερώνεται συνεχώς. Οι περισσότερες από αυτές τις πληροφορίες είναι ήδη διαθέσιμες στον παγκόσμιο ιστό, αλλά τα web services θα κάνουν την προγραμματιστική πρόσβαση σε αυτές πιο εύκολη και πιο αξιόπιστη. Εκθέτοντας ήδη υπάρχουσες εφαρμογές ως web services, θα επιτρέψει στους χρήστες να κατασκευάσουν νέες πιο ισχυρές εφαρμογές οι οποίες χρησιμοποιούν τα web services σαν δομικά στοιχεία. Για παράδειγμα, ένας χρήστης θα μπορούσε να αναπτύξει μια εφαρμογή προμηθειών η οποία να παίρνει αυτόματα τιμές από προμηθευτές, να επιστρέπει στο χρήστη να επιλέξει προμηθευτή, να υποβάλει την παραγγελία και να παρακολουθεί την αποστολή έως ότου γίνει η παραλαβή της. Η εφαρμογή του προμηθευτή, εκτός από το να εκθέτει τις υπηρεσίες της στον ιστό, θα μπορούσε να χρησιμοποιήσει άλλα web services για να ελέγξει την πιστοληπτική ικανότητα του πελάτη, να χρεώσει τον τραπεζικό λογαριασμό του πελάτη και να καθορίσει την αποστολή με μια εταιρία μεταφορών. Στο άμεσο μέλλον, μερικά από τα πιο ενδιαφέροντα web services θα υποστηρίζουν εφαρμογές που χρησιμοποιούν τον ιστό για να κάνουν πράγματα τα οποία σήμερα φαντάζουν ανέφικτα. Για παράδειγμα, μία από τις υπηρεσίες που τα web services θα κάνουν δυνατή είναι η υπηρεσία ημερολογίου. Αν ο οδοντίατρος ή ο μηχανικός σας δημοσιοποιούσαν τα ημερολόγιά τους μέσω μιας τέτοιας web service, θα μπορούσατε να προγραμματίσετε τα ραντεβού σας με αυτούς ή θα μπορούσαν να προγραμματίσουν αυτοί τα ραντεβού κατευθείαν 18

στο δικό σας ημερολόγιο αν το επιθυμούσατε. Με λίγη φαντασία, μπορούμε να οραματιστούμε εκατοντάδες εφαρμογές οι οποίες μπορούν να κατασκευαστούν μόλις έχουμε τη δυνατότητα να προγραμματίσουμε τον ιστό. 19

3 Εργαλεία που χρησιμοποιήθηκαν Για την υλοποίηση της διπλωματικής εργασίας έχουμε χρησιμοποιήσει εργαλεία της τεχνολογίας Java. Αυτά περιλαμβάνουν την JSP (JavaServer Pages), JSTL (JSP Standard Tag Library), Java Servlet, Java Web Services και τις βιβλιοθήκες Persistence και Hibernate. Επιπλέον, χρησιμοποιήσαμε για εξυπηρετητή βάσης δεδομένων τον MySQL Server και για εξυπηρετητή εφαρμογών και υπηρεσιών διαδικτύου τον Oracle GlassFish Server Open Source Edition. Χαρακτηριστικό των παραπάνω εργαλειών είναι ο τύπος των αδειών χρήσης. Είναι δηλαδή λογισμικά ανοικτού κώδικα ή ελεύθερα λογισμικά. 3.1 Ανοικτό λογισμικό Το ελεύθερο λογισμικό, όπως ορίζεται από το Ίδρυμα Ελευθέρου Λογισμικού (Free Software Foundation), είναι λογισμικό που μπορεί να χρησιμοποιηθεί, αντιγραφεί, μελετηθεί, τροποποιηθεί και αναδιανεμηθεί χωρίς περιορισμό. Η ελευθερία από τέτοιους περιορισμούς είναι βασικό στοιχείο στην ιδέα του ελεύθερου λογισμικού. Το αντίθετο του ελεύθερου λογισμικού είναι το ιδιόκτητο λογισμικό και όχι το λογισμικό που πωλείται για κέρδος, δηλαδή το εμπορικό λογισμικό. Το ελεύθερο λογισμικό ορισμένες φορές αναφέρεται και σαν ανοιχτό λογισμικό ή λογισμικό ανοιχτού κώδικα, αλλά οι δύο έννοιες δεν είναι ταυτόσημες. Σύμφωνα με τον Richard Stallman, δεν είναι κάθε λογισμικό ελεύθερο μόνο και μόνο επειδή είναι ανοιχτού κώδικα. Eπίσης, πολλές συζητήσεις έχουν γίνει σχετικά με τη δυναμική και τα ιδιαίτερα γνωρίσματα των μοντέλων παραγωγής του Eλεύθερου Λογισμικού ως προτύπου μιας νέας μορφής κοινωνικής, οικονομικής και πολιτικής οργάνωσης. Εν γένει, σύμφωνα με την ισχύουσα νομοθεσία περί πνευματικής ιδιοκτησίας, η ελεύθερη αντιγραφή, διανομή και τροποποίηση του λογισμικού δεν επιτρέπεται. Για τον λόγο αυτό, οι εκδόσεις ελεύθερου λογισμικού κάνουν χρήση ειδικής άδειας (free software licence) με την οποία παραχωρείται στους χρήστες το δικαίωμα αντιγραφής, τροποποίησης και αναδιανομής του λογισμικού. Σύμφωνα με το Ίδρυμα Ελεύθερου Λογισμικού, οι άδειες χρήσης ελεύθερου λογισμικού πρέπει να περιλαμβάνουν τις εξής ελευθερίες [13]: Ελευθερία 0: Ελευθερία χρήσης του προγράμματος για οποιονδήποτε σκοπό. Ελευθερία 1: Ελευθερία μελέτης και τροποποίησης του προγράμματος. Ελευθερία 2: Ελευθερία αντιγραφής του προγράμματος. Ελευθερία 3: Ελευθερία βελτίωσης του προγράμματος και επανέκδοσης του, προς το συμφέρον της κοινότητας των χρηστών. Οι ελευθερίες 1 και 3 προϋποθέτουν την πρόσβαση των χρηστών στον πηγαίο κώδικα του λογισμικού. 20

3.2 Εξυπηρετητής Εφαρμογών(Application Server) - Glassfish Ο Glassfish είναι ένας ανοικτού κώδικα εξυπηρετητής εφαρμογών που ξεκίνησε από την Sun Microsystems για την πλατφορμα της Java EE και χορηγείται πλέον από την Oracle. Η υποστηριζόμενη έκδοση ονομάζεται Oracle GlassFish Server. Ο GlassFish είναι ελεύθερο λογισμικό με διπλή άδεια: την Common Development and Distribution License (CDDL) και την GNU General Public License (GPL). Ο GlassFish είναι η υλοποίηση αναφοράς της Java EE και, ως τέτοια, υποστηρίζει Enterprise JavaBeans, JPA, JavaServer Faces, JMS, RMI, JavaServer Pages, servlets, κ.λπ. Αυτό επιτρέπει στους developers να δημιουργούν εφαρμογές φορητές και επεκτάσιμες και οι οποίες μπορούν να ενσωματώσουν legacy τεχνολογίες. Ο GlassFish βασίζεται στον πηγαίο κώδικα που δημοσιοποιήθηκε από τη Sun και την Oracle. 3.3 MySQL Η MySQL είναι ένα σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων που μετρά περισσότερες από 11 εκατομμύρια εγκαταστάσεις. Έλαβε το όνομά της από την κόρη του Μόντυ Βιντένιους, τη Μάι (αγγλ. My). Το πρόγραμμα τρέχει έναν εξυπηρετητή (server) παρέχοντας πρόσβαση πολλών χρηστών σε ένα σύνολο βάσεων δεδομένων. Ο κωδικός του εγχειρήματος είναι διαθέσιμος μέσω της GNU General Public License, καθώς και μέσω ορισμένων ιδιόκτητων συμφωνιών. Ανήκει και χρηματοδοτείται από μία και μοναδική κερδοσκοπική εταιρία, τη σουηδική MySQL AB, η οποία σήμερα ανήκει στην Oracle. Η MySQL είναι δημοφιλής βάση δεδομένων για διαδικτυακά προγράμματα και ιστοσελίδες. Χρησιμοποιείται σε κάποιες από τις πιο διαδεδομένες διαδικτυακές υπηρεσίες, όπως το Flickr, το YouTube, η Wikipedia, το Google, το Facebook και το Twitter. 3.4 J2EE Η πλατφόρμα J2EE χρησιμοποιεί το διανεμημένο πρότυπο εφαρμογής. Αυτό σημαίνει ότι η λογική της εφαρμογής διαιρείται σε συστατικά σύμφωνα με τη λειτουργία και τα διάφορα τμήματα της εφαρμογής που την συναποτελούν, εγκαθίστανται σε διαφορετικές μηχανές, ανάλογα με το επίπεδο μέσα στο περιβάλλον J2EE που ανήκουν. 3.4.1 JavaServer Pages Οι Java Server Pages είναι ένα χρήσιμο πακέτο προγραμματισμού δυναμικών ιστοσελίδων που χρησιμοποιεί συνδυασμό HTML και Java. Είναι μια τεχνολογία σύγχρονη, συνεχώς εξελισσόμενη και παρέχει τεράστιες ευκολίες στον προγραμματιστή ανεξαρτήτως πλατφόρμας ή λειτουργικού συστήματος. Εντάσσεται στο πακέτο J2EE της εταιρείας Sun Microsystems που περιλαμβάνει και άλλες τεχνολογίες όπως Servlets και JavaBeans οι οποίες μπορούν να συνδυαστούν με τις Java Server Pages με πολύ καλά αποτελέσματα. 21

Οι JSP διαθέτουν και όλα τα πλεονεκτήματα της Java με κυριότερο ότι οι JSP είναι multi - platform. Οι σελίδες JSP τρέχουν σε οποιοδήποτε web server (Apache, IIS, κλπ) σε οποιοδήποτε λειτουργικό σύστημα (Windows, Unix κ.λπ) με τον ίδιο ακριβώς τρόπο. Αυτό το σημαντικό πλεονέκτημα των JSP προκύπτει από την Java Virtual Machine η οποία πραγματοποιεί όλες τις απαραίτητες ενέργειες ώστε ο κώδικας Java να τρέχει με τον ίδιο ακριβώς τρόπο σε κάθε μηχανή. Αυτό όπως υποστηρίζει κατηγορηματικά η Sun- είναι και το μεγαλύτερο πλεονέκτημα των JSP σε σχέση με την ανταγωνίστρια τεχνολογία της Microsoft,την ASP.NET. 3.4.2 JSTL H JSTL είναι μια βιβλιοθήκη από JSP tags, όμοια με τα HTML tags, με τα οποία μπορούν να γίνονται ενέργειες όπως, π.χ., loops και if-else αποφάσεις. Το πλεονέκτημα των JSTL tags σε σύγκριση με τον ισοδύναμο Java scriptlet κώδικα είναι ότι με τα tags η JSP σελίδα είναι αρκετά πιο ευανάγνωστη. Έτσι, συνδυάζοντας JSP Beans με την JSTL πετυχαίνουμε τον μέγιστο διαχωρισμό του presentation (HTML) από τη λογική (Java). 3.5 Hibernate και Persistence Το Hibernate είναι ένα open source object relational mapping tool για Java. Προσφέρει υψηλής απόδοσης object/relational persistence και query service για Java. Με το Hibernate μπορούμε να φτιάξουμε persistent classes και με τη Hibernate Query Language μπορούμε να γεφυρώσουμε τις σχέσεις σε όλες τις βάσεις δεδομένων. Μπορούμε να χρησημοποιήσουμε native SQL ή Java-based Κριτήρια. Αυτήν τη στιγμή το Hibernate είναι το πλέον δημοφιλές object/relational mapping solution για Java. Η αρχιτεκτονική του Hibernate φαίνεται στο παρακάτω διάγραμμα: Σχήμα 3: Διάγραμμα Αρχιτεκτονικής Hibernate 22

Όπως βλέπουμε παραπάνω, το Hibernate χρησημοποιεί τη βάση δεδομένων και τα αρχεία ρυθμίσεων για να υλοποιήσει persistence services (και persistent objects) στην εφαρμογή. Για να χρησημοποιήσουμε το Hibernate, πρέπει να φτιάξουμε Java classes (entities) για τον κάθε πίνακα στη βάση δεδομένων και μετά να κάνουμε αντιστοιχίες μεταβλητών σε κολώνες. Το Hibernate έχει τρεις βασικούς πυλώνες: Connection Management: Ο Hibernate Connection management κάνει τη διαχείρηση των συνδέσεων με τη βάση δεδομένων. Αυτή γενικά η διαδικασία είναι η πιο ακριβή από πλευράς πόρων για την εφαρμογή. Transaction management: Το Transaction management service χρησημοποιείται για να εκτελούνται πολλά ταυτόχρονα queries. Object relational mapping: Το Object relational mapping είναι μια τεχνική για τη σχεσιακή σύνδεση, η οποία μετατρέπει ένα μοντέλο σε ένα σχεσιακό μοντέλο. Αυτό το κομμάτι στο hibernate χρησημοποιείται για να κάνει τα select, insert, update and delete από τους πίνακες. Όταν καλούμε τη Session.save() μέθοδο σε ένα object, τότε αυτό διαβαζει τις μεταβλητές και εκτελεί τα queries. Ένα από τα πολύ ισχυρά όπλα του Hibernate είναι ότι μπορεί να συνδεθεί σχεδόν μέ όλες τις βάσεις δεδομένων χωρίς να χρειάζεται ΚΑΜΙΑ αλλαγή στην εφαρμογή μας παρά μόνον ένα XML Tag. Το Hibernate υποστηρίζει τις εξής διαλέκτους: DB2 - org.hibernate.dialect.db2dialect HypersonicSQL - org.hibernate.dialect.hsqldialect Informix - org.hibernate.dialect.informixdialect Ingres - org.hibernate.dialect.ingresdialect Interbase - org.hibernate.dialect.interbasedialect Pointbase - org.hibernate.dialect.pointbasedialect PostgreSQL - org.hibernate.dialect.postgresqldialect Mckoi SQL - org.hibernate.dialect.mckoidialect Microsoft SQL Server - org.hibernate.dialect.sqlserverdialect MySQL - org.hibernate.dialect.mysqldialect Oracle (any version) - org.hibernate.dialect.oracledialect Oracle 9 - org.hibernate.dialect.oracle9dialect 23

Progress - org.hibernate.dialect.progressdialect FrontBase - org.hibernate.dialect.frontbasedialect SAP DB - org.hibernate.dialect.sapdbdialect Sybase - org.hibernate.dialect.sybasedialect Sybase Anywhere - org.hibernate.dialect.sybaseanywheredialect To Hibernate χρησιμοποιεί Plain Old Java Objects (POJOs) για να κάνει map στους πίνακες της βάσης. 24

4 Υλοποίηση Εφαρμογής 4.1 Εισαγωγή Το σύστημα έχει ως φορέα ένα ηλεκτρονικό κατάστημα (βιβλιοπωλείο), στο οποίο παρέχεται η δυνατότητα να εκτελέσει παραγγελίες από τους προμηθευτές του με τη χρήση υπηρεσιών διαδικτύου. Πιο συγκεκριμένα: 1. Αρχικά υλοποιήθηκαν οι βασικές λειτουργίες ενός ηλεκτρονικού καταστήματος αγορών (καλάθι αγορών - κονσόλα διαχειριστή - βάση δεδομένων κ.λπ.) σύμφωνα με την αρχιτεκτονική Μοντέλο-Παρουσίαση-Ελεγκτής (Model-View-Controller). Μοντέλο (Model): ορίζει τα δεδομένα που θα χρησιμοποιηθούν από την εφαρμογή, καθώς και τις λειτουργίες (methods) που μπορούν να εκτελεστούν πάνω σε αυτά. Στην παρούσα εφαρμογή, το Μοντέλο είναι τα Data Bean. Κάποια από τα Data Bean είναι σημειωμένα με τη χρήση της βιβλιοθήκης Persistence. Αυτά αρχικά θα μετατραπούν σε οντότητες της βάσης δεδομένων και, για τον υπόλοιπο κύκλο ζωής, θα αντανακλούν αυτές τις οντότητες. Βασικές οντότητες της εφαρμογής είναι: η οντότητα Client (Client.java), η οποία περιέχει τα γνωρίσματα του χρήστη, η οντότητα Product (Product.java), η οποία περιέχει τα γνωρίσματα του προϊόντος, η οντότητα Supplier (Supplier.java), η οποία περιέχει τα γνωρίσματα του προμηθευτή, οι οντότητες ClientOrder, OrderedProduct, OrderProductPK, οι οποίες περιέχουν τα στοιχεία μιας συγκεκριμένης παραγγελίας και τα προϊόντα που αυτή περιλαμβάνει, και οι οντότητες SupplierOrder, SupplyOrderedProduct, SupplyOrderedProductPK, οι οποίες αποθηκεύουν τοπικά την παραγγελία που κάνει το κατάστημα στον προμηθευτή. Παρουσίαση (View): εμφανίζει τα δεδομένα στον χρήστη, χωρίς προηγούμενη επεξεργασία. Συνήθως υπάρχουν πολλαπλές παρουσιάσεις σε μία εφαρμογή. Για παράδειγμα, κάθε JSP είναι μία διαφορετική παρουσίαση. Ελεγκτής (Controller): είναι το πρόγραμμα το οποίο δένει τις παρουσιάσεις με τα μοντέλα. Στην παρούσα εφαρμογή, Ελεγκτής είναι ο Java Servlet. Ο Ελεγκτής είναι σημαντικός, επειδή διαχειρίζεται τα αιτήματα (request) από τον φυλλομετρητή και επιστρέφει την απάντηση (response) στον server. 2. Κατόπιν υλοποιήθηκε το ημιαυτόματο σύστημα παραγγελιοδοσίας, το οποίο, με τη χρήση υπηρεσιών διαδικτύου, παίρνει προσφορές από τους προμηθευτές του καταστήματος, συγκρίνει τα προϊόντα με κριτήριο το κόστος τους, δημιουργεί ένα καλάθι αγορών ανά προμηθευτή το οποίο περιέχει τα προϊόντα που συμφέρει να αγοραστούν από τον συγκεκριμένο προμηθευτή, εκτελεί την παραγγελία και παρακολουθεί την κατάστασή της. Η υλοποίηση της εφαρμογής χωρίζεται σε τέσσερα μέρη. Τα τρία πρώτα είναι η υλοποίηση της αρχιτεκτονικής Μοντέλο-Παρουσίαση-Ελεγκτής (Model-View-Controller). Το πρώτο 25

μέρος, Μοντέλο, είναι η δημιουργία των οντοτήτων με τα γνωρίσματά τους και το σχήμα της βάσης δεδομένων. Το δεύτερο μέρος, Παρουσίαση, περιλαμβάνει τις σελίδες JSP και τις εκφράσεις EL που δημιουργούν το δυναμικό περιεχόμενο. Το τρίτο μέρος είναι η υλοποίηση του ελεγκτή μαζί με τις βοηθητικές μεθόδους και κλάσεις. Το τέταρτο και τελευταίο μέρος είναι η υλοποίηση των υπηρεσιών διαδικτύου. Η εφαρμογή έχει στηθεί σε υπολογιστή με λειτουργικό Linux, αλλά μπορεί εξίσου εύκολα να τρέξει και σε υπολογιστή με λειτουργικό Windows. 4.2 Προαπαιτούμενα 4.2.1 MySQL Θα πρέπει, πριν ξεκινήσουμε την υλοποίηση, να ετοιμάσουμε το σύστημά μας με τα απαραίτητα εργαλεία. Στην συγκεκριμένη περίπτωση, πρέπει να έχουμε εγκαταστήσει τη MySQL βάση δεδομένων, το NetBeans IDE, τον Glassfish εξυπηρετητή και να έχουμε ξεκινήσει ένα νέο Project. Για να εγκαταστήσουμε τη MySQL γράφουμε στη γραμμή εντολών: apt-get install mysql-server Με την εντολή θα εκγατασταθεί στον υπολογιστή η MySQL και όσες βιβλιοθήκες χρειάζεται για να τρέξει. Θα δημιουργήσουμε μια νέα βάση δεδομένων αργότερα χρησιμοποιώντας το NetBeans. 4.2.2 NetBeans IDE Κατεβάζουμε από τον ιστότοπο netbeans.org το NetBeans IDE για Linux και προσέχουμε να περιλαμβάνει υποστήριξη για Java EE και τον εξυπηρετητή Glassfish. Αφού κατέβει, τρέχουμε από τη γραμμή εντολών την εντολή: sh netbeans-7.xx-javaee-linux.sh η οποία εγκαθιστά το NetBeans IDE. Κατά τη διάρκεια της εγκατάστασης μας ζητούνται κωδικοί για τον εξυπηρετητή Glassfish. Εισάγουμε κάποιο κωδικό, τον οποίο πρέπει να τον συγκρατήσουμε, και το αφήνουμε να συνεχίσει την προεπιλεγμένη εγκατάσταση. Στο τέλος τρέχουμε το NetBeans IDE. Από το menu, επιλέγουμε File->New Project και επιλέγουμε Web Application4. 26

Σχήμα 4: Επιλέγουμε τι project θέλουμε να δημιουργήσουμε Πατάμε το κουμπί Next και εμφανίζεται μια φόρμα στην οποία συμπληρώνουμε το όνομα του project5. Σχήμα 5: Επιλέγουμε το όνομα του project Πατάμε το κουμπί Next και εμφανίζεται μια λίστα με εξυπηρετητές από τους οποίους επιλέγουμε τον Glassfish6 27

Σχήμα 6: Επιλέγουμε τον εξυπηρετητή που θα τρέξει την εφαρμογή Τέλος πατάμε το κουμπί Finish. Για να δημιουργήσουμε μια νέα βάση δεδομένων, πηγαίνουμε από το menu και επιλέγουμε Window->Services και εμφανίζεται δεξιά ένα νέο tab7. Σχήμα 7: Λίστα με τις υπηρεσίες που είναι συνδεδεμένες με το NetBeans IDE Επιλέγουμε Databases και μας εμφανίζει μια λίστα με τις βάσεις δεδομένων που υπάρχουν στον υπολογιστή μας. Κάνουμε δεξί κλίκ στη MySQL Server και επιλέγουμε Connect. Μας ζητά κωδικό για να συνδεθεί και μας εμφανίζει μια λίστα με MySQL βάσεις δεδομένων8. 28

Σχήμα 8: Βάσεις Δεδομένων MySQL Πατώντας δεξί κλίκ μπορούμε να δημιουργήσουμε μια νέα κενή βάση δεδομένων. Με αυτά ρυθμισμένα μπορούμε να ξεκινήσουμε να σχεδιάζουμε την εφαρμογή. 4.3 Μοντέλο - Model Για τη δημιουργία των οντοτήτων του μοντέλου χρησιμοποιούμε τις βιβλιοθήκες Hibernate και Persistence. Αρχικά δημιουργούμε ένα σχήμα για τη βάση δεδομένων ώστε να γνωρίζουμε τι πρέπει να φτιάξουμε9. Σχήμα 9: Database schema Για τη δημιουργία των οντοτήτων εργαζόμαστε ως εξής: Αρχικά, με δεξί κλικ στο project και επιλέγοντας New, δημιουργούμε ένα Entity Class. Εισάγουμε όνομα κλάσης και όνομα πακέτου και πατάμε Next10 29

Σχήμα 10: Οθόνη εισαγωγής στοιχείων Οντότητας Εμφανίζεται τότε μια δεύτερη οθόνη. Σε αυτήν φροντίζουμε να επιλέξουμε Table Generation Strategy: Drop and Create. Με αυτήν την επιλογή, όποτε του ζητάμε να δημιουργήσει την οντότητα ως πίνακα στη βάση δεδομένων, πρώτα θα καταστρέφει τον παλιότερο πίνακα αφόσον υπάρχει. Τέλος, πατάμε Finish. Αυτόματα δημιουργείται μια νέα κλάση η οποία περιέχει κάποια βασικά Persistence annotations. package ent; import java.io.serializable; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.generationtype; import javax.persistence.id; @Entity public class NewEntity implements Serializable { private static final long serialversionuid = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; public Long getid() { return id; public void setid(long id) { this.id = id; 30

@Override public int hashcode() { int hash = 0; hash += (id!= null? id.hashcode() : 0); return hash; @Override public boolean equals(object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof NewEntity)) { return false; NewEntity other = (NewEntity) object; if ((this.id == null && other.id!= null) (this.id!= null &&!this.id.equals(other.id))) { return false; return true; @Override public String tostring() { return "ent.newentity[ id=" + id + " ]"; Υλοποιούμε, λοιπόν, για κάθε μία οντότητα μια τέτοια κλάση και ξεκινάμε να προσθέτουμε σε κάθε μία τα δικά της γνωρίσματα, εισάγοντας δηλαδή τα Persistence Annotations και τις μεθόδους get και set. Στο Παράρτημα βρίσκεται ο συνολικός κώδικας για τις κλάσεις οντοτήτων. 4.4 Παρουσίαση - View Για την παρουσίαση των δυναμικών σελίδων χρησιμοποιούμε την τεχνολογία JSP της Java και τη γλώσσα EL. Με τη δημιουργία του project έχει δημιουργηθεί μία σελίδα JSP, η index.jsp. Τις υπόλοιπες σελίδες θα τις δημιουργήσουμε μέσα στον φάκελο WEB-INF, ώστε να μην είναι προσβάσιμες από τη γραμμή URL του φυλλομετρητή. Γι αυτόν τον λόγο δημιουργούμε έναν νέο φάκελο εντός του φακέλου WEB-INF, τον οποίο ονομάζουμε view. Για να δημιουργήσουμε τον νέο φάκελο, κάνουμε δεξί κλικ στον φάκελο WEB-INF και επιλέγουμε New -> Folder. Με δεξί κλικ στον φάκελο view μπορούμε να δημιουργήσουμε νέες σελίδες JSP. Δημιουργούμε τις σελίδες που φαίνονται στο σχήμα 11 31

Σχήμα 11: O φάκελος view και οι σελίδες JSP εντός του Στις σελίδες αυτές δημιουργούμε τις φόρμες οι οποίες στέλνουν δεδομένα στον ελεγκτή και τις εκτυπώσεις δεδομένων από τον ελεγκτή. Παρατίθεται ο κώδικας της σελίδας results.jsp που παρουσιάζει τα αποτελέσματα της αναζήτησης και εξηγείται. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>... <!-- Κ1 --> <form name="searchquery" method="post" action="view"> <input type="text" name="query" value="${helper.searchquery.query" /> name="searchbutton" value="search" /> </form>... <!-- Κ2 --> <table id="producttable"> <c:foreach var="product" items="\${database" varstatus="iter"> <td>${product.id</td> <td>${product.sku</td> <td>${product.name</td> <td>${product.price </td> 32

<td> <p> <form action="view" method="post"> <input type="hidden" name="sku" value="${product.sku" /> name="addtocart" value="add To Cart" /> </form> </td> </c:foreach> </table> H πρώτη γραμμή εισάγει τη βιβλιοθήκη jstl η οποία είναι απαραίτητη για τη δημιουργία βρόγχου επανάληψης όπως φαίνεται στο 2ο κομμάτι. Η εντολή EL $database δηλώνει μια λίστα αντικειμένων που έχει σταλεί από τον ελεγκτή με την εντολή: request.setattribute("database", list); Αντίστοιχα η εντολή EL $helper.searchquery.query τυπώνει στην οθόνη το αλφαριθμητικό query του αντικειμένου searchquery το οποίο στάλθηκε από τον ελεγκτή με τη βοήθεια του helper. Το σύνολο του κώδικα για το κομμάτι της παρουσίασης υπάρχει στο Παράρτημα. 4.5 Ελεγκτής - Controller Ο πυρήνας του ηλεκτρονικού καταστήματος είναι ο ελεγκτής. Είναι αυτός που αποφασίζει τι θα εκτελεστεί και πότε. Για τον ελεγκτή χρησιμοποιήσαμε την τεχνολογία Java Servlet. 4.5.1 Δημιουργία ελεγκτή Δημιουργούμε τον ελεγκτή κάνοντας δεξί κλικ στο project και επιλέγοντας New -> Servlet. Στην οθόνη που εμφανίζεται, εισάγουμε το όνομα του ελεγκτή και το όνομα του πακέτου. Πατάμε Next και εμφανίζεται μια δεύτερη οθόνη στην οποία τσεκάρουμε την επιλογή Add information to deployment description (web.xml) 12. 33

Σχήμα 12: Η δεύτερη οθόνη της δημιουργίας του ελεγκτή Εκτός από τον ελεγκτή δημιουργείται στον φάκελο WEB-INF το αρχείο web.xml το οποίο περιέχει πληροφορίες για τον ελεγκτή. <?xml version="1.0" encoding="utf-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet> <servlet-name>newservlet</servlet-name> <servlet-class>contr.newservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>newservlet</servlet-name> <url-pattern>/newservlet</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> </web-app> Πρέπει να παρατηρήσουμε δύο σημεία. Το πρώτο είναι το όνομα του ελεγκτή. Από την παράθεση του κώδικα του results.jsp βλέπουμε στη φόρμα το όρισμα action. H τιμή του ορίσματος πρέπει να είναι το όνομα του ελεγκτή ώστε να μπορεί να επικοινωνήσει μαζί του. Το δεύτερο είναι το url pattern. Με αυτό ελέγχουμε τι εμφανίζεται στην μπάρα του φυλλομετρητή. Έτσι, αντί να φαίνεται η διαδρομή και το όνομα της σελίδας, φαίνεται μόνον 34

το url pattern. Θα το δούμε καλύτερα στη συνέχεια. Ανοίγοντας τώρα τον ελεγκτή βλέπουμε τέσσερις μεθόδους γραμμένες. Θα μας αποσχολήσουν οι δύο. Η doget και η dopost. Με αυτές ανταλλάσσουμε δεδομένα με τις jsp σελίδες. 4.5.2 Ανταλαγή δεδομένων μεταξύ ελεγκτή και σελίδων Για να στείλουμε δεδομένα στον ελεγκτή υλοποιούμε τη μέθοδο executebuttonmethod και με Java Annotations μαρκάρουμε τον κώδικα της Java. @ButtonMethod(buttonName="searchButton") public String searchmethod() { fillbeanfromrequest(searchquery); String query = searchquery.getquery(); List list; list = HibernateHelper.getListData(Product.class, "name", query); request.setattribute("database", list); return jsplocation("results.jsp"); Από την παράθεση του κώδικα του results.jsp βλέπουμε πως στο κουμπί υπάρχει το όρισμα name. name="searchbutton" value="search" /> Η τιμή του ορίσματος πρέπει να είναι ίδια με την τιμή του annotation (στο παράδειγμα είναι το searchbutton). Με αυτόν τον τρόπο ελέγχουμε τη ροή της εκτέλεσης από- και προς τις σελίδες jsp. Έχουμε εκτελέσει, λοιπόν, τον σωστό κώδικα. Πρέπει τώρα να πάρουμε τα δεδομένα της φόρμας ώστε να τα επεξεργαστούμε. Αυτό το καταφέρνουμε με τη μέθοδο fillbeanfromrequest και data beans. public void fillbeanfromrequest(object data) { try { org.apache.commons.beanutils.beanutils.populate(data, request.getparametermap()); catch (Exception e) { Χρησιμοποιούμε τη βιβλιθήκη commons-beanutils.jar και τη μέθοδο populate. Εδώ πρέπει να προσέξουμε τα ονόματα των ορισμάτων των data beans και των οντοτήτων να είναι ίδια με τις τιμές των πεδίων στις φόρμες των σελίδων. Στην εφαρμογή χρησιμοποιούμε μόνον τη μέθοδο post, οπότε ρυθμίζουμε τη μέθοδο του ελεγκτή dopost ως εξής: protected void dopost(httpservletrequest request, HttpServletResponse response) 35

throws ServletException, IOException { this.request = request; this.response = response; if (HibernateHelper.testDB(response)) { addhelpertosession("helper", SessionData.READ); String address = executebuttonmethod(); request.getrequestdispatcher(address).forward(request, response); Με τη μέθοδο addhelpertosession δίνουμε τη δυνατότητα αποστολής δεδομένων στις σελίδες μέσω του αντικειμένου helper. Με τη μέθοδο executebuttonmethod κάνουμε την επεξεργασία των δεδομένων και αποφασίζουμε σε ποια σελίδα θα κατευθυνθεί ο χρήστης. Τέλος, με την τελευταία εντολή κατευθύνουμε τη ροή της εκτέλεσης και στέλνουμε τα δεδομένα στις σελίδες. 4.5.3 Ερωτήματα στη Βάση Δεδομένων Για να επικοινωνήσουμε με τη βάση δεδομένων χρησιμοποιούμε τη βιβλιοθήκη Hibernate και τα data beans και τις εντότητες που έχουμε υλοποιήσει. Για ευκολία δημιουργούμε τη στατική κλάση HibernateHelper. Βασικά σημεία της κλάσης είναι: η μέθοδος που προετοιμάζει τους πίνακες και την επικοινωνία με τη βάση δεδομένων. Εκτελείται από τον ελεγκτή και βασική της λειτουργία είναι η δημιουργία του SessionFactory καλώντας τη μέθοδο createfactory. static public void initsessionfactory(properties props, Class... mappings) { if (addmappings(listclasses, mappings)) { closefactory(sessionfactory); sessionfactory = createfactory(props, listclasses); Σε συνεργασία με τον ελεγκτή, η κλάση μπορεί να δημιουργήσει τους πίνακες μέσω της μεθόδου createtable. static public void createtable(properties props, Class... mappings) { List<Class> templist = new ArrayList<Class>(); SessionFactory tempfactory; addmappings(templist, mappings); if (props == null) props = new Properties(); 36

props.setproperty(environment.hbm2ddl_auto, "create"); tempfactory = createfactory(props, templist); closefactory(tempfactory); Αφού εκτελεστεί η createtable για όλες τις οντότητες, έχουμε δημιουργήσει το σχήμα της βάσης δεδομένων που ορίσαμε πιο πάνω. Την πρώτη φορά που εκτελείται ο ελεγκτής, τρέχει τη μέθοδο inithibernate: public void init() { boolean create = Boolean.parseBoolean(getInitParameter("createDB")); Properties props = new Properties(); props.setproperty("hibernate.dialect", "org.hibernate.dialect.mysqldialect"); props.setproperty("hibernate.connection.driver_class", "com.mysql.jdbc.driver"); props.setproperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/whitebuffalo?zerodatetimebehavior=converttonull"); props.setproperty("hibernate.connection.username", "root"); props.setproperty("hibernate.connection.password", "password"); if (create) { HibernateHelper.createTable(props, Supplier.class, SupplierOrder.class, SupplyOrderedProduct.class, Client.class, Product.class, ClientOrder.class, OrderedProduct.class); HibernateHelper.initSessionFactory(props, Supplier.class, SupplierOrder.class, SupplyOrderedProduct.class, Client.class, Product.class, ClientOrder.class, OrderedProduct.class); Στην πρώτη γραμμή διαβάζει την τιμή που έχει η παράμετρος createdb στο αρχείο web.xml. <init-param> <description>if value is true then tables are created every time the applications starts.</description> 37

</init-param> <param-name>createdb</param-name> <param-value>false</param-value> Αν αυτή είναι αληθής, τότε δημιουργούνται από την αρχή οι πίνακες της βάσης δεδομένων και προετοιμάζονται για χρήση. Με το αντικείμενο Properties περνάμε ως παραμέτρους τον οδηγό και τα συνθηματικά ώστε να προετοιμαστεί η βάση δεδομένων. Τέλος, κάθε φορά που εκτελείται ο ελεγκτής, με τη μέθοδο dopost ελέγχουμε αν η βάση δεδομένων τρέχει. Χρησιμοποιούμε γι αυτόν το λόγο τη μέθοδο testdb της κλάσης HibernateHelper. 4.6 Υπηρεσίες Διαδικτύου - Web Services Το κομμάτι της υλοποίησης των υπηρεσιών διαδικτύου χωρίζεται σε τέσσερα μέρη: τη δημιουργία του interface, την υλοποίηση του bussiness logic, την ασφάλεια και την κατανάλωση των υπηρεσιών διαδικτύου. 4.6.1 Δημιουργία Με δεξί κλικ στο όνομα του project επιλέγουμε New -> WebService. Στην οθόνη που εμφανίζεται εισάγουμε το όνομα των υπηρεσιών διαδικτύου, το όνομα του πακέτου και επιλέγουμε Create Web Service From Scratch 13. Σχήμα 13: Δημιουργία Interface υπηρεσιών διαδικτύου 38

14. Ανοίγοντας το αρχείο επιλέγουμε να το εμφανίσουμε σχεδιαστικά και όχι ως κώδικα Σχήμα 14: Design View Στη συνέχεια πατάμε το κουμπί Add Operation και συμπληρώνουμε τη φόρμα που εμφανίζεται 15. Σχήμα 15: Εισαγωγή παραμέτρων Εισάγουμε τις παραμέτρους που δέχεται και πατάμε ΟΚ. Εάν πάμε τώρα στον κώδικα, θα δούμε τις παραμέτρους που ορίσαμε να δέχεται και τι επιστρέφει. 39

@WebMethod(operationName = "findproducts") public List<WSProductInfo> findproducts(@webparam(name = "clientcode") String clientcode, @WebParam(name = "wsproducts") List<WSProductInfo> wsproducts) {... Με αυτόν τον τρόπο δημιουργούμε web methods, δηλαδή μεθόδους που μπορούν να κληθούν απομακρυσμένα. Ταυτόχρονα, το NetBeans αναλαμβάνει να κατασκευάσει τα artifacts που χρειάζονται, τρέχοντας την εντολή της Java, wsgen καθώς και το wsdl αρχείο. 4.6.2 Υλοποίηση της Λογικής Επειδή η υπηρεσία θέλουμε να κάνει ερωτήματα στη βάση δεδομένων, χρησιμοποιούμε την κλάση HibernateHelper. Επίσης, δημιουργούμε την κλάση WSController η οποία αναλαμβάνει να διεκπεραιώσει τα ερωτήματα στη βάση. Με τις υπηρεσίες διαδικτύου υλοποιούμε τις εξής διαδικτυακές μεθόδους: 1. findproducts: δέχεται ως παραμέτρους έναν κωδικό χρήστη και μια λίστα προϊόντων, και επιστρέφει μια λίστα προϊόντων με τις αντίστοιχες τιμές τους, 2. commitorder: δέχεται ως παραμέτρους έναν κωδικό χρήστη και μια λίστα προϊόντων, και επιστρέφει έναν αριθμό επιβεβαίωσης παραγγελίας, 3. orderinfo: δέχεται ως παραμέτρους έναν κωδικό χρήστη και έναν αριθμό επιβεβαίωσης παραγγελίας και επιστέφει την κατάσταση της παραγγελίας. Η υλοποίηση έχει ως εξής: πρώτα δημιουργούμε ένα instance του WSController, στη συνέχεια καλούμε τη μέθοδο findproducthelper με όρισμα τη λίστα των προϊόντων που μας έχει αποστείλει ο χρήστης. Το αποτέλεσμα της εκτέλεσης το αποθηκεύουμε σε μια νέα λίστα την οποία επιστρέφουμε στον χρήστη. @WebMethod(operationName = "findproducts") public List<WSProductInfo> findproducts(@webparam(name = "clientcode") String clientcode, @WebParam(name = "wsproducts") List<WSProductInfo> wsproducts) { WSController controller = new WSController(); List<WSProductInfo> responce; responce = controller.findproducthelper(wsproducts); return responce; 40

Η υλοποίηση της μεθόδου findproducthelper έχει ως εξής: για κάθε ένα προϊόν ρωτάμε από τη βάση την τιμή του και τη διαθεσιμότητά του, στη συνέχεια τοποθετούμε τις νέες πληροφορίες σε μια λίστα την οποία επιστρέφουμε στη διαδικτυακή μέθοδο. public List<WSProductInfo> findproducthelper(list<wsproductinfo> productlist) { List<WSProductInfo> responce = new ArrayList<WSProductInfo>(); for (Object obj : productlist) { wsproduct = (WSProductInfo) obj; WSProductInfo temp = findproduct(wsproduct); if (temp!= null) { responce.add(temp); return responce; public WSProductInfo findproduct(wsproductinfo wsproduct) { Object dbobj = HibernateHelper.getFirstMatch(Product.class, "sku", wsproduct.getsku()); if (dbobj!= null) { Product p = (Product) dbobj; WSProductInfo temp = new WSProductInfo(); temp.setsku(p.getsku()); temp.setprice(p.getprice()); if (wsproduct.getquantity() == p.getquantity()) { temp.setquantity(wsproduct.getquantity()); else { temp.setquantity(p.getquantity()); return temp; else { return null; Αντίστοιχα, υλοποιούνται και οι άλλες δύο διαδικτυακές μέθοδοι. 4.6.3 Ασφάλεια Για την ασφάλεια χρησιμοποιήσαμε όνομα χρήστη και κωδικό πρόσβασης. Αυτό σημαίνει πως ο χρήστης των υπηρεσιών διαδικτύου θα πρέπει, πριν τις χρησιμοποιήσει, να έχει επικοινωνήσει με τον προμηθευτή για να πάρει όνομα και κωδικό. Η ρύθμιση ασφάλειας γίνεται επιλέγοντας από τη σχεδιαστική εμφάνιση το κουμπί Edit Web Service Attributes. Στην οθόνη που εμφανίζεται 16, 41

Σχήμα 16: Ασφάλεια Υπηρεσιών Διαδικτύου τσεκάρουμε τις επιλογές Reliable Message Delivery και Secure Service. Από τη λίστα Security Mechanism επιλέγουμε Username Authentication with Symmetric Key. Για την εφαρμογή χρησιμοποιούμε τους κωδικούς ανάπτυξης, επομένως τσεκάρουμε και την επιλογή Use Development Defaults. Θα αναφερθούμε στις ενέργειες του χρήστη σχετικά με την ασφάλεια, ώστε να χρησιμοποιήσει τις υπηρεσίες διαδικτύου, στο επόμενο υποκεφάλαιο. 4.6.4 Κατανάλωση Υπηρεσιών Διαδικτύου Αναφέραμε πιο πάνω πως το αρχείο wsdl δημοσιοποιείται αυτόματα από το NetBeans. Για να καταναλώσουμε τις υπηρεσίες διαδικτύου, θα πρέπει να γνωρίζουμε τη διεύθυνση του wsdl. Συνήθως έχει την μορφή: http://address:port/<project Name>/<WS Interface Name>?wsdl Εφόσον βρούμε τη διεύθυνση του wsdl, με δεξί κλικ στο όνομα του project επιλέγουμε New -> Web Service Client. Στην οθόνη που εμφανίζεται 17 42

Σχήμα 17: Κατανάλωση Υπηρεσιών Διαδικτύου επιλέγουμε WSDL URL και εισάγουμε εκεί τη διεύθυνση του wsdl αρχείου. Στη συνέχεια τσεκάρουμε την επιλογή Generate Dispatch code και πατάμε το κουμπί Finish. Εμφανίζεται ένας νέος φάκελος στα αρχεία του project με το όνομα Web Service Reference 18. Σχήμα 18: Web Service Reference Τον ανοίγουμε και κάνουμε δεξί κλικ στο περιεχόμενο. Επιλέγουμε το Edit Web Service Attributes. Στην οθόνη που εμφανίζεται 19, τσεκάρουμε την επιλογή της Ασφάλειας Use develpment defaults. 43

Σχήμα 19: Web Service Consumer Security Το NetBeans IDE αναλαμβάνει, εκτελώντας την Java εντολή wsimport, να δημιουργήσει τα artifacts που χρειάζονται για να επικοινωνήσει ο χρήστης με τις υπηρεσίες διαδικτύου 20. Σχήμα 20: Generated Sources Τα artifacts αποθηκεύονται στον φάκελο του project Generated Sources (jax-ws). 44

Για να χρησιμοποιήσουμε τις υπηρεσίες διαδικτύου, αφού έχουμε ολοκληρώσει την προεργασία, κάνουμε το εξής: δημιουργούμε μια υπηρεσία, ύστερα δημιουργούμε μια θύρα και, με τη βοήθεια της θύρας, εκτελούμε τη διαδικτυακή μέθοδο. CommerceWS_Service service1 = new CommerceWS_Service(); CommerceWS port1 = service1.getcommercewsport(); list = port1.findproducts("subarof.rt@gmail.com", cart1); Οι τρεις πάνω γραμμές είναι αρκετές για να περάσουμε στη list τα προϊόντα με τις τιμές τους. Παρατίθεται το sequence διάγραμμα διαδικασίας ανεύρεσης τιμών προϊόντων 21. Σχήμα 21: Sequence Διάγραμμα ανεύρεσης τιμών προϊόντων Αρχικά βρίσκει όλα τα προϊόντα των οποίων η ποσότητα είναι κάτω από μία τιμή. Στη συνέχεια αποστέλλει τη λίστα των προϊόντων σε όλους τους προμηθευτές μέσω των υπηρεσιών διαδικτύου. Οι προμηθευτές απαντούν αποστέλλοντας ο καθένας ξεχωριστή λίστα προϊόντων με τις αντίστοιχες τιμές τους. Στη συνέχεια, το σύστημα συγκρίνει τις τιμές των προϊόντων που έχουν στείλει οι προμηθευτές και δημιουργεί καλάθια αγορών για κάθε προμηθευτή, σύμφωνα με τις πιο συμφέρουσες τιμές. Τέλος, εμφανίζει τα καλάθια αγορών στον διαχειριστή για να εγκρίνει την παραγγελία. Αντίστοιχα, μόλις ο διαχειριστής πατήσει το κουμπί έγκρισης της παραγγελίας, αποστέλλεται το αίτημα παραγγελίας μαζί με το ιδιαίτερο καλάθι αγορών σε κάθε προμηθευτή, μέσω υπηρεσιών διαδικτύου. Οι προμηθευτές απαντάνε με των κωδικό επιβεβαίωσης παραγγελίας (confirmation code). Μόλις το σύστημα λάβει τον κωδικό, αποθηκεύει την παραγγελία τοπικά. Τέλος, όποτε επιθυμεί ο διαχειριστής να λάβει ενημέρωση της κατάστασης παραγγελίας, απλά πατάει το κουμπί το οποίο στέλνει, μέσω υπηρεσιών διαδικτύου, τον κωδικό επιβεβαίωσης. Ο προμηθευτης απαντά με τη νέα κατάσταση της παραγγελίας. Το σύστημα 45

ενημερώνει την τοπική βάση δεδομένων για την αλλαγή της κατάστασης. Επειδή δεν διαθέτουν όλοιοι προμηθευτές τις ίδιες υπηρεσίες διαδικτύου, είμαστε αναγκασμένοι να υλοποιήσουμε το σύστημα εισάγοντας τον απαραίτητο κώδικα για κάθε προμηθευτή ξεχωριστά. Με αποτέλεσμα να καθίσταται γρήγορα δύσκολη η επέκταση του συστήματος παραγγελιών. Στο επόμενο κεφάλαιο θα εκτεθεί ως μελλοντική επέκταση μία προτεινόμενη λύση. 46

5 Παραδείγματα Χρήσης Στο κεφάλαιο αυτό θα δείξουμε τον τρόπο λειτουργίας της εφαρμογής για τον πελάτη και για τον διαχειριστή. Ταυτόχρονα, θα καταδείξουμε τα σημεία εκείνα στα οποία υπάρχουν αδυναμίες και τους λόγους που αυτές δημιουργήθηκαν και θα προτείνουμε πιθανές μελλοντικές επακτάσεις που μπορούν να γίνουν στην εφαρμογή. 5.1 Απλός Χρήστης - Πελάτης Ο πελάτης, ανοίγοντας τον ιστότοπο, το πρώτο πράγμα που αντιμετωπίζει είναι μια ειδοποίηση ληγμένου πιστοποιητικού 22. Σχήμα 22: Ληγμένο Πιστοποιητικό Αυτό αντιμετωπίζεται πατώντας το κουμπί Proceed anyway, οπότε φορτώνει η κεντρική σελίδα του ιστότοπου 23. Σχήμα 23: Αρχική Σελίδα Στη συνέχεια ο πελάτης κάνει μια αναζήτηση στη βάση δεδομένων. Ο ιστότοπος τον προωθεί στη σελίδα αποτελεσμάτων 24. 47

Σχήμα 24: Σελίδα Αποτελεσμάτων Πατώντας το κουμπί Add To Cart, καταχωρεί στο καλάθι αγορών του το επιλεγμένο προϊόν. Ταυτόχρονα, στο κουμπί του καλαθιού (Cart) εμφανίζεται ο αριθμός των προϊόντων που περιέχει 25. Σχήμα 25: Καλάθι αγορών Από εδώ μπορεί είτε να συνεχίσει τις αγορές του, είτε να προχωρήσει στο Checkout. Πατώντας στο κουμπί Checkout προωθείται σε μια σελίδα σύνδεσης με τον λογαριασμό του 26. Σχήμα 26: Σελίδα σύνδεσης Θεωρώντας πως δεν είναι εγγεγραμένος, πατά το κουμπί Register. Οδηγείται σε μια φόρμα προσωπικών στοιχείων 27. 48