ΚΕΦΑΛΑΙΟ Web Services Προϋποθέσεις εγκατάστασης Web Services για το Κεφάλαιο 4.50 1. Κεφάλαιο έκδοση 4.51e build 458 ή νεότερο 2. Internet Information Server (IIS) version 6 ή νεότερος 3. Σε κάποιον υπολογιστή του δικτύου (µε αντίστοιχες προδιαγραφές) να εκτελείται η εφαρµογή Kef32Srv, ώστε να επικοινωνεί µε αυτόν το Web Service Module του Κεφαλαίου 4 4. Ρύθµιση του(των) firewall ώστε να επιτρέπεται η πρόσβαση του IIS στην εφαρµογή Kef32Srv µέσω TCP/IP σε προκαθορισµένη από εσάς πόρτα. Βήµατα εγκατάστασης Web Services για το Κεφάλαιο 4.50 1. Εγκατάσταση του Web Service Module του Κεφαλαίου 4 είτε από το CD της εγκατάστασης είτε µπορείτε να το κατεβάσετε από το Internet, από την αντίστοιχη θυρίδα. 2. Κατά την εγκατάσταση του Web Service Module ορίζουµε το IP Address και το Port στο οποίο ο IIS θα επικοινωνήσει, για να αντλήσει ή να καταχωρήσει δεδοµένα. Οι τιµές αυτές καταχωρούνται στο Registry των Windows (HKEY_LOCAL_MACHINE\SOFTWARE\Altec\Capital4\WebServices), και µπορείτε να τις τροποποιήσετε, αν έχετε αλλάξει τις ρυθµίσεις για την πρόσβαση στον Kef32Srv. 3. Ρύθµιση του Kef32Srv ώστε να µπορεί να δέχετε συνδέσεις από τον IIS, ρυθµίζοντας αντίστοιχα την πόρτα και για µεγαλύτερη προστασία τη διεύθυνση (IP Address) του IIS ώστε να αποτρέπονται connections από µη εγκεκριµµένους σταθµούς. 4. Τέλος, για το import δεδοµένων µέσω Web Services, απαιτείται ένα σενάριο DB Link ώστε να µπορεί αυτό να πραγµατοποιηθεί.
Ρυθµίσεις στον Kef32Srv Login Options Εδώ ορίζουµε την εταιρεία, τον χρήστη και το password µε τα οποίο θα εκτελούνται οι κλήσεις στα WebServices. Security Εδώ πρέπει να καθορίσετε τα IP των Web Servers που θέλετε να έχουν πρόσβαση στον Kef32Srv. Η αρχική ρύθµιση επιτρέπει την πρόσβαση σε όλους. Για αλλαγή στην πρόσβαση µπορείτε να επιλέξετε τη διεύθυνση (0.0.0.0) όπως αυτή εµφανίζεται στη λίστα των διευθύνσεων και µε διπλό click επάνω της να αλλάξετε την πρόσβαση (status) από Forbid (απαγόρευση πρόσβασης) σε Allow (ελεύθερη πρόσβαση) ή απλά να πατήσετε στο πλήκτρο «Allow». Πατήστε στο πλήκτρο Save για να αποθηκεύσετε όλες τις ρυθµίσεις. Server Options Port Number: Καθορίστε την πόρτα στην οποία θα περιµένει ο διακοµιστής για νέες συνδέσεις. Auto Start Server: Ενεργοποιήστε τη συγκεκριµένη επιλογή, αν θέλετε ο διακοµιστής να ξεκινά αυτόµατα τη διαδικασία αναµονής συνδέσεων. Run On Windows Startup: Ενεργοποιήστε τη συγκεκριµένη επιλογή, αν θέλετε κάθε φορά που γίνεται επανεκκίνηση στον υπολογιστή σας, να εκτελείται και ο διακοµιστής. Select Bind Address: Ορίστε την IP µε την οποία θέλετε να ξεκινήσει ο Server ή επιλέξτε Auto Bind για να ορισθεί αυτόµατα από το πρόγραµµα.
Start: Πατήστε στο πλήκτρο «Start» για να ξεκινήσει η διαδικασία αναµονής συνδέσεων. Όταν αυτή ολοκληρωθεί τότε θα εµφανιστεί στην status line αυτού του προγράµµατος το µήνυµα «Server is started». Shutdown: Πατήστε στο πλήκτρο «Shutdown» για να σταµατήσει η διαδικασία αναµονής συνδέσεων. Όταν αυτή ολοκληρωθεί τότε θα εµφανιστεί στην status line αυτού του προγράµµατος το µήνυµα «WebService Server is down».
WebServices Interface για το Κεφάλαιο Υπάρχουν 3 µέθοδοι για να «διαβαστούν» και να «καταχωρηθούν» δεδοµένα µέσω WebServices. Οι µέθοδοι αυτοί µπορούν να επιστραφούν µε την παρακάτω κλήση (http://localhost/kefweb/capital4xml.dll?intf=iicapital4xml) και στη συνέχεια µπορούν να χρησιµοποιηθούν σαν import σε κάποιο development tool, όπως το Delphi ή το Visual Studio. Οι παραπάνω κλήσεις GetCapital4Data και GetCapital4DataLog χρησιµοποιούνται για τη λήψη δεδοµένων από το Κεφάλαιο, ενώ η InsertCapital4Data για την καταχώρηση. Όλα τα δεδοµένα που επιστρέφονται είναι σε µορφή XML, ενώ και το Input για την καταχώρηση είναι επίσης σε µορφή XML. GetCapital4Data Γενική Περιγραφή Αυτή η κλήση επιστρέφει ένα XML κείµενο µε δεδοµένα από το Κεφάλαιο. Table Name: το όνοµα του πίνακα της βάσης του Κεφαλαίου από τον οποίο θέλουµε να αντλήσουµε τα δεδοµένα. Ειδικά για αυτό το πεδίο, θα πρέπει να αναφέρουµε ότι εκτελώντας µία κλήση στον πίνακα TABLES µας επιστρέφονται όλοι οι διαθέσιµοι πίνακες του Κεφαλαίου καθώς και µία σύντοµη περιγραφή για τα στοιχεία που περιλαµβάνει ο καθένας από αυτούς. Fields: Τα πεδία που θέλουµε να µας επιστραφούν, αν η παράµετρος είναι κενή τότε επιστρέφονται όλα τα πεδία του συγκεκριµένου πίνακα. Αν θέλουµε να µας επιστραφούν µόνο συγκριµένα πεδία τότε αυτά τα προσθέτουµε διαχωρίζοντάς τα µε το σύµβολο ; πχ, για τον κωδικό και την περιγραφή του είδους τα πεδία θα είχαν την παρακάτω µορφή : scode;sname Filter: Επιστρέφει µόνο τις εγγραφές που ικανοποιούν τη συνθήκη που περιγράφετε πχ. ένα απλό φίλτρο θα έχει τη µορφή scode like 1* and sname like Α*, ή scode= 01-001.
GetCapital4DataLog Γενική Περιγραφή Αυτή η κλήση επιστρέφει ένα XML κείµενο µε δεδοµένα από το Κεφάλαιο και λειτουργεί όπως η GetCapital4Data µε την προσθήκη 3 πεδίων που επιτρέπουν να αγνοήσουµε τις ρυθµίσεις που έχουµε βάλει στον Kef32Srv, ζητώντας στοιχεία από άλλες εταιρείες του Κεφαλαίου. CompanyId: Η εταιρεία του Κεφαλαίου UserName: Το όνοµα του χρήστη. Password: Ο κωδικός πρόσβασης του χρήστη InsertCapitalData Γενική Περιγραφή Αυτή η κλήση παίρνει σαν παράµετρο ένα XML κείµενο και καταχωρεί τα δεδοµένα του στο Κεφάλαιο. XMLData: εδοµένα µε συγκεκριµένη γραµµατική XML που θα υποστούν επεξεργασία από τον Kef32Srv και θα καταχωρήσουν στο Κεφάλαιο οτιδήποτε µπορεί να καταχωρηθεί µέσω ενός σεναρίου DBLink. Παράδειγµα GetCapital4Data Παράδειγµα κλήσης του πίνακα TABLES GetCapitalDataSet('tables','','') Και το αποτέλεσµα που επιστρέφεται είναι : <?xml version="1.0" encoding="utf-8"?> <xmldata> <metadata><fields Count="2"> <field name="tablename" description="πίνακας" type="string" size="31" /> <field name="tablecomment" description="περιγραφή" type="string" size="63" /> </fields> </metadata> <rowdata> <row TableName="StockItemFX" TableComment="Αποθήκη" /> <row TableName="StockStore" TableComment="Αθροιστές αποθήκης ανά Α/Χ" />......... </rowdata> </xmldata> Γραµµατική XML Όπως φαίνεται και παραπάνω, το XML κείµενο χωρίζεται σε 2 τµήµατα. Το πρώτο (metadata) περιγράφει τα πεδία που θα επιστραφούν για κάθε record και το δεύτερο (rowdata) είναι ουσιαστικά τα δεδοµένα που θα επιστραφούν. Metadata FieldName: Το όνοµα του πεδίου όπως αυτό θα εµφανίζεται για κάθε γραµµή (row) δεδοµένων. Description: Είναι η περιγραφή του πεδίου, συνήθως είναι αυτή που εµφανίζεται και στις αντίστοιχες οθόνες input του Κεφαλαίου, και µπορεί να χρησιµοποιηθεί και ως τίτλος στήλης σε ένα grid που θα παρουσιάζει τα δεδοµένα.
Type: Ο τύπος του πεδίου που θα επιστραφεί και µπορεί να είναι ένας από τους ακόλουθους, String, Integer, Float, Boolean, Datetime. Size: Έχει τιµή αν το πεδίο είναι αλφαριθµητικό (string) και είναι το µέγεθος του πεδίου όπως αυτό περιγράφεται στο Κεφάλαιο. RowData Για κάθε record στο αρχείο δεδοµένων επιστρέφεται µία γραµµή (row) σε µορφή XML. Κάθε γραµµή έχει τόσα fields όσα περιγράφονται στο τµήµα των metadata. Αναλυτικά παραδείγµατα κλήσης και διαχείρησης του XML κειµένου που επιστρέφεται µε τα Web Services του Κεφαλαίου, µπορείτε να κατεβάσετε από τις αντίστοιχες θυρίδες και υπάρχουν τόσο για Visual Studio 2008 όσο και για Delphi 7.
Παράδειγµα InsertCapitalData Παράδειγµα κλήσης <xml> <script name="test.sce" user="" password="" companyid=""/> <table name="impstockitem"> <row scode="02-002" sname="test02" svatcode="1" /> <row scode="02-003" sname="test03" svatcode="1" /> <row scode="02-004" sname="test04" svatcode="1" /> <row scode="02-005" sname="test05" svatcode="2" /> <row scode="02-006" sname="test06" svatcode="3" /> </table> </xml> Γραµµατική XML για το import Εδώ ουσιαστικά πρέπει να περιγράψουµε ένα XML κείµενο, το οποίο θα υποστεί επεξεργαστία από τον Kef32Srv και στην συνέχεια θα καταχωρήσει τα δεδοµένα του στο Κεφάλαιο εκτελώντας τη διαδικασία του DBLink. Script Το κοµµάτι που περιγράφει το script. Ουσιαστικά περιγράφει και τον τρόπο µε τον οποίο θα πρέπει να εκτελεστεί το Κεφάλαιο ώστε να εκτελέσει ορθώς το σενάριο. Οι παράµετροι του script µπορεί να είναι οι εξής: Name: το όνοµα του script που πρέπει να βρίσκεται µέσα στο directory του DBLink και είναι και το µόνο υποχρεωτικό πεδίο για να γίνει το import. User: το όνοµα του χρήστη που θα γίνει login, αν είναι κενό τότε χρησιµοποιείται η αντίστοιχη παράµετρος από τον Kef32Srv. Password: το password του χρήστη, που επίσης µπορεί να αγνοηθεί αν θέλουµε να χρησιµοποιήσουµε αυτό του Kef32Srv. CompanyId: η εταιρεία στην οποία θα γίνει το import, επίσης αγνοείται και χρησιµοποιείται του Kef32Srv. CurrentDate: η ηµεροµηνία που θα γίνει login στο πρόγραµµα, που αν είναι κενή ή παραληφθεί χρησιµοποιείται η τρέχουσα. BranchId: το υποκατάστηµα που αν παραληφθεί τότε η default τιµή είναι το 1. table name="όνοµα πίνακα" Εδώ πλέον περιγράφουµε τα πεδία και τα δεδοµένα που θέλουµε να καταχωρηθούν για κάθε πεδίο. Εδώ δεν είναι απαραίτητο να καταχωρούµε τον ίδιο αριθµό πεδίων για κάθε γραµµή (row), και µπορούµε επίσης να προσθέσουµε στο ίδιο script και περισσότερους από έναν πίνακες δηλαδή στο παραπάνω παράδειγµα, θα µπορούσαµε µετά το τέλος του πίνακα της αποθήκης να βάλουµε τον πίνακα των κινήσεων πελατών (ImpCustomer). Πρέπει να σηµειώσουµε ότι, η ονοµατολογία των πεδίων είναι ίδια µε αυτή που δηµιουργείται στους αντίστοιχους πίνακες κατά τη διαδικασία δηµιουργίας τους µέσα από το Κεφάλαιο και µε τη διαδικασία DBLink κατά τη δηµιουργία του σεναρίου. Αναλυτικό παραδείγµα import κλήσης µέσω των Web Services του Κεφαλαίου, µπορείτε να κατεβάσετε από τις αντίστοιχες θυρίδες των e-services.