Tag-Archive for » java «

Thursday, March 19th, 2009 | Author: admin

Σε web application τα οποία γίνονται developed μέσω κάποιου agile process (και όχι μόνο), πολύ συχνά υπάρχουν πολλά version που συνυπάρχουν. Άλλο version στο μηχάνημα του κάθε developer, άλλο στο Production, άλλο στο pre-Prod, άλλο στο Testing, στο Acceptance, κτλ. Καλό θα είναι λοιπόν να έχεις έναν εύκολο τρόπο, ενσωματωμένο στη build διαδικασία σου, ο οποίος θα ενσωματώνει αυτόματα το version το οποίο πρόκειται να κάνεις ship.

more…

Category: Programming  | Tags: , , ,  | Leave a Comment
Monday, December 15th, 2008 | Author: admin

Σε προηγούμενο blogpost είδες πως μπορείς να χρησιμοποιήσεις το jBPM μέσω μιας απλής stand-alone java εφαρμογής. Το επόμενο βήμα λοιπόν, είναι να ενσωματώσεις το jBPM στο enterprise application σου και να το χρησιμοποιήσεις για να κάνεις handle πολλαπλά workflow τα οποία θα τρέχουν παράλληλα, από διαφορετικούς χρήστες και σε διαφορετικά states. Για να γίνει αυτό, θα πρέπει να συνδέσεις το jBPM με μια βάση δεδομένων έτσι ώστε να μπορείς να έχεις persistent state στα workflows σου.

Η διαδικασία είναι σχετικά απλή και το jBPM έχει σχεδιαστεί έτσι ώστε και να την απλοποιεί αλλά και να την κάνει generic-enough ώστε να μη σε δεσμεύει σε συγκεκριμένες DBs. Για το παράδειγμα αυτό, θα χρησιμοποιήσουμε τον client που έφτιαξες στο προηγούμενο blogpost επεκτείνοντάς τον κατάλληλα για τη σύνδεση του jBPM με τη MySQL.

more…

Category: Programming  | Tags: , , ,  | Leave a Comment
Monday, December 15th, 2008 | Author: admin

Έχεις στα requirements του project σου διαδικασίες που περιλαμβάνουν πολλαπλούς χρήστες, διαφορετικά execution paths και decision points, notifications και triggers ανάλογα με τα action και άλλα τέτοια ωραία δυναμικά constraints; Καλωσόρισες στον κόσμο των workflows! Όπως πάντα, θα αφήσω το κομμάτι της θεωρίας - που μπορείς να βρεις εύκολα με ένα γρήγορο search στο google - και θα προχωρήσω σε ένα hands-on παράδειγμα. Για το παράδειγμα αυτό θα χρησιμοποιήσουμε το JBoss jBPM και το Eclipse 3.4.0 (aka Ganymede).

more…

Category: Programming  | Tags: , ,  | Leave a Comment
Monday, November 03rd, 2008 | Author: admin

Αφού λοιπόν είδαμε τι ωραία πράγματα μπορούμε να κάνουμε με τα Rule Engines, ας δοκιμάσουμε κάτι hands-on. Αυτή τη στιγμή ένα από τα καλύτερα και πιο ολοκληρωμένα fully open source Rule Engines είναι το Drools της JBoss (a division of Red Hat :) ). Αρχικά, πήγαινε στη σελίδα με τα downloads του Drools και κατέβασε το Drools 4.0.7 Binaries. Αποσυμπίεσέ το σε ένα folder στο PC σου και άνοιξε το αγαπημένο σου IDE (για ‘μένα, το NetBeans ;) ).

Δε θα ασχοληθούμε με structuring και proper layering της demo εφαρμογής μας, οπότε έχε υπόψη σου ότι τα παρακάτω κομμάτια κώδικα υπάρχουν κυρίως για να σου δώσουν μια γρήγορη και πρώτη ιδέα του πως μπορείς να χρησιμοποιήσεις το Drools. Για applications στο production, you should try better than that ;)

Ας δούμε λοιπόν το specification της εφαρμογής μας. Ας υποθέσουμε λοιπόν ότι φτιάχνουμε - ένα πάααααρα πολύ απλό version - μιας εφαρμογής για τον υπολογισμό του λογαριασμού ενός πελάτη εταιρίας τηλεφωνίας. Τα στοιχεία του πελάτη αντιπροσωπεύονται από ένα Customer object και τα διάφορα items του λογαριασμού του από ένα ή περισσότερα BillItem objects. Όπως είναι λογικό, έχουμε πολλούς πελάτες, με λογαριασμούς με πολλαπλά items με τη διαφορά όμως ότι δεν έχουμε ενιαίο τρόπο υπολογισμού του τελικού κόστους του λογαριασμού μιας και ο κάθε πελάτης μπορεί να ανήκει σε διαφορετικό plan. Τι κάνουμε λοιπόν; Φτιάχνουμε ένα CostCalculator class το οποίο το επεκτείνουμε με νέες μεθόδους κάθε φορά που ένα νέο plan δημιουργείται από την εταιρία μας; Προσπαθούμε να το κάνουμε λίγο παραπάνω modularise και φτιάχνουμε όλες τις ρουτίνες υπολογισμού του κόστους των λογαριασμών με PL/SQL στη βάση, ώστε τουλάχιστον να μη χρειάζεται να κάνουμε re-deploy την εφαρμογή μας κάθε τρεις και λίγο; Φτιάχνουμε ένα custom τρόπο με τον οποίο μπορούμε να υπολογίσουμε το κόστος βασιζόμενοι σε data που έχουμε ορίσει σε κάποιο proprietary text file (του οποίου το format, φυσικά, βαριόμαστε να κάνουμε properly document και μόλις φύγει από την εταιρία ο άνθρωπος που το έφτιαξε ψάχνουμε να προσλάβουμε τους απόγονους του Ventris για να το αποκρυπτογραφήσουν); Χμ, γιατί δε δοκιμάζουμε να χρησιμοποιήσουμε ένα Rule Engine;

more…

Category: Programming  | Tags: , , ,  | Leave a Comment
Friday, October 31st, 2008 | Author: admin

Είναι γεγονός ότι οι σημερινές Enterprise Applications είναι τόσο πολύπλοκες όπου ένα μεγάλο μέρος του business logic τους μπορεί να χρησιμοποιηθεί ξανά και ξανά μεταξύ διαφορετικών υλοποιήσεων. Παρόλα αυτά, μικρές ή και μεγαλύτερες διαφορές στο πως ακριβώς η εφαρμογή καλείται να υλοποιήσει ένα συγκεκριμένο business requirement πολλές φορές μας οδηγούν στο να προτιμήσουμε να ξαναγράψουμε τον κώδικα από την αρχή παρά να προσπαθήσουμε να αλλάξουμε τον ήδη υπάρχοντα κώδικα που έχουμε από ένα παλαιότερο application.

Πως θα σου φαινόταν όμως αν μπορούσες να γράφεις τον κοινό κώδικα μόνο μια φορά σαν “Business Rules” και στα σημεία εκείνα όπου χρειάζεται να υλοποιήσεις εντελώς custom business logic να είχες τη δυνατότητα να τα “παραμετροποιήσεις” ουσιαστικά κανοντάς τα inject μέσα στον κωδικά σου από ένα εξωτερικό source; Welcome to the world of Rule Engines!

Ένα Rule Engine σου επιτρέπει να ορίσεις business rules, σε μορφή if-then, τα οποία κάνει evaluate και execute στο runtime έτσι ώστε να επιτύχεις διαχωρισμό του business knowledge από το implementation του και να μπορείς να αλλάζεις τη συμπεριφορά του application σου χωρίς να χρειάζεται, απαραίτητα, να αλλάξεις και τον κωδικά του.

more…