Καταλαβαίνω οτι σαν "οραμα" το περιγράφω σε υπερβολικά high-level, οπότε σκέφτομαι να μοιραστώ μαζί σας κάποιες πρόχειρες σημειώσεις που είχα κρατήσει στο παρελθόν σχετικά με αυτό. Να ειστε επιεικείς, είναι πολύ πολύ πρόχειρες και εξετάζουν ένα μόνο πράγμα, αλλά πιστεύω οτι μπορούν να δώσουν μια αρχή κατανόησης. Παμε λοιπον λιγο βαθύτερα (ωσπου να δω και ο,τι πρέπει να δω απο SPS):
Θα επιχειρήσω να κανω μια προκαταρκτική περιγραφή του πως βλέπω τα Information Objects (η για συντομια IOs - αυτή η ονομασία είναι η πρώτη που μου ήρθε στο μυαλό) που θα ήθελα να διαχειρίζεται ένα τέτοιο σύστημα.
Key Points
Επίκεντρο του συστήματος είναι τα πληροφοριακά αντικείμενα (information objects)
Τα IO έχουν δυναμική δομή, η οποία καθορίζεται από μεταμοντέλο δεδομένων (Metamodel). Ενδέχεται μέσω ενός συγγενούς μεταμοντέλου να ορίζεται και δυναμική συμπεριφορά των IOs ώς προς τις λειτουργίες τους, δεν έχει όμως διερευνηθεί ακόμα η σκοπιμότητα να ανατεθεί responsibility στα ίδια τα objects για αυτό.
Το API θα επιτρέπει τη δημιουργία νέων IO classes. Οι classes εδώ αναφέρονται στο context και όχι στο στατικό μοντέλο.
Τι περιέχουν τα ΙΟ?
Ομάδα απλών attributes (string, number, boolean, etc)
Ομάδα σύνθετων attributes (π.χ. τιμές προερχόμενες από lookup, complex τιμές)
Ομάδα ακόμα πιο σύνθετων attributes (π.χ. τιμές προερχόμενες από δυναμικά δημιουργούμενο lookup - απο άλλη database ή απο querying σε άλλα IOs)
Ετσι ένα ΙΟ μπορεί να ανήκει σε μια κλάση, και να καθορίζεται η δομή του. Π.χ. για καρτέλα πελάτη:
Ονομα (string)
Ηλικία (int)
Κατηγορία (στατικό single-value lookup, π.χ. νομικό πρόσωπο/φυσικό πρόσωπο)
Κατηγορία σε σχέση με εταιρία (δενδροειδές single-value στατικό lookup π.χ. δεν ξέρω.)
Τομείς ενασχόλησης (στατικο multi-value lookup π.χ. υπολογιστές, σιδερώστρες, οικοδομές, μπριζόλες)
Τα attributes των ΙΟ θα πρέπει ΤΟΥΛΑΧΙΣΤΟΝ να έχουν χαρακτηριστικό mandatory/nonmandatory ενώ αργότερα ίσως να έχει νόημα να μπουν και security features σε attribute level, το security εν γένει όμως αποτελεί άλλο θέμα συζήτησης.
Ζητούμενα:
Ποσα και ποια είδη attributes θα έχουμε
Πώς θα ορίζουμε «περίεργα» attributes (e.g. hyperlink, image).
Πόσα και ποια είδη lookup attributes θα έχουμε και πως θα τα ορίζουμε.
Πως θα τα διαχειριζόμαστε
Πως θα υλοποιηθεί το database κομμάτι (προτεινόμενη είναι σταθερή δομή database με "σπασιμο" σε πινακες ανα data type - μεγάλο κόστος στο retrieval το οποίο μπορεί να μειωθεί με τεχνικές lazy loading, και συνδυασμό serialization / caching, σχετικά μεγάλο κόστος στο save, απιαστο στο search, εύκολα διαχειρίσιμο και εύκολο για τη μετέπειτα συγγραφή βοηθητικών εργαλείων).
Βλέπω 3 πράγματα χοντρικά: IO Definition API, IO management (CRUD operations) API, IO querying API.
Τελος σημειώσεων. Ελπίζω να εδωσα μια πληρέστερη νότα και ιδέα (βεβαια, γύρω απο το 1% του όλου πράγματος, αλλά και αυτό κάτι ειναι).
Σωτήρης Φιλιππίδης
DotSee Web Services