Nov 1, 2011

Πώς να συμμαζέψουμε (clean up) ένα JHeadstart project

Αυτό το χρονικό διάστημα αισθάνομαι πολύ τυχερός γιατί ένα καινούργιο project ξεκίνησε βασισμένο στον JHeadstart 11g. Είχα αναφερθεί και στο παρελθόν για την έκδοση JHS 10g ως απαραίτητο συμπλήρωμα ανάπτυξης στο ADF. Στην τελευταία έκδοση (11g) τα πράγματα είναι πιο μπλεγμένα: το ADF έχει γίνει πιο παραγωγικό πλαίσιο παρέχοντας με ευκολία βασικές αλλά και προηγμένες δυνατότητες στο web development. Από την άλλη, υπάρχει ακόμα περιθώριο για αυτοματισμούς και πειθαρχία όπως επιβάλλει το code generation του JHeadstart. Ίσως η συμβολή του να μην είναι τόσο καθοριστική όπως στην έκδοση 10g, αλλά εξακολουθεί να δίνει μεγάλη ευελιξία στις ομάδες ανάπτυξης, ιδίως σε αυτές που κάνουν τα πρώτα τους βήματα σε ADF.

Ένα από τα "παράπονα" που είχα και από την έκδοση 10g είχε να κάνει με τα κατάλοιπα του code generation που πια δεν χρησιμοποιούνται. Για παράδειγμα, στην εξέλιξη του project μας φτιάχνουμε ένα JHeadstart Lov, που έπειτα το εγκαταλείπουμε. Ή φτιάχνουμε μερικές σελίδες πάνω σε κάποια view objects που τελικά δεν χρησιμοποιούμε. Πώς μπορούμε να εντοπίσουμε τέτοια άχρηστα; Πώς μπορούμε να τακτοποιήσουμε τα generated artifacts (pages, task flows) του JHeadstart που είναι ανενεργά;

Μια προσέγγιση είναι να μην κρατάμε τα αρχεία που παράγονται από το JHeadstart σε ένα versioning σύστημα, ώστε να μπορούμε ανά πάσα ώρα και στιγμή να κάνουμε ένα project checkout και ένα καθαρό code generation ολόκληρης της εφαρμογής.Υπάρχουν μειονεκτήματα σε αυτό, καθώς είναι ενάντιο στα best practices. Συχνά επίσης κρατάμε σελίδες που έτσι και αλλιώς έχουμε "παγώσει" από το generation. Αυτόματο build και deployment δεν είναι εφικτό. Έχουμε να κάνουμε με μεγάλο αριθμό αρχείων που δεν γίνονται version και αυτό μπορεί να προκαλέσει σύγχυση. Μια εναλλακτική, είναι να προκαλέσουμε ένα code generation, και να δούμε το timestamp των αρχείων που δεν έχουν μεταβληθεί στο αμέσως προηγούμενο χρονικό διάστημα. Αυτό θα μας οδηγήσει στην ανίχνευση παλαιών σελίδων, task flows ή κώδικα που δεν είναι πια απαραίτητος και δεν παράγεται εκ νέου.

Πηγαίνοντας λοιπόν από command line στο ViewController project μας (που λειτουργεί ο JHS) υπάρχουν δυο βασικοί κατάλογοι που γράφει το JHeadstart: ο public_html και ο adfmsrc (για τα page definitions): Για τον μεν πρώτο, μπορούμε να βρούμε τα αρχεία που δεν έχουν αλλάξει τα τελευταία πέντε λεπτά:

cd public_html && find . ! -mmin -5 | grep -v "jheadstart/"

ενώ για τον δεύτερο η εντολή είναι:

cd adfmsrc && find . ! -mmin -30

Έτσι μπορούμε να δούμε τα αρχεία που δεν έχουν μεταβληθεί, να τα εξετάσουμε και ενδεχόμενα να τα διαγράψουμε αν δεν μας είναι πια απαραίτητα.

No comments: