Βασικά Μοντέλα και Έννοιες Διεργασιών
Συστήματα Μετάβασης (Transition Systems) Χρησιμοποιούνται ευρέως για να περιγράψουν την πρόοδο μιας διεργασίας κατά τη διάρκεια της εκτέλεσής της. Για κάθε διεργασία υπάρχει μοναδικό σύστημα μετάβασης. Τα συστήματα μετάβασης είναι κατευθυνόμενοι γράφοι. Οι κόμβοι του γράφου αναπαριστούν καταστάσεις (states) της διεργασίας και οι ακμές γεγονότα (events) που λαμβάνουν χώρα κατά τη διάρκεια της εκτέλεσης. Υπάρχουν δύο ειδικές καταστάσεις: Η αρχική, από την οποία υπάρχουν μόνο εξερχόμενες ακμές. Η τελική, στην οποία υπάρχουν μόνο εισερχόμενες ακμές. Όλες οι υπόλοιπες καταστάσεις λέγονται εσωτερικές. Η κατάσταση μιας διεργασίας τη χρονική στιγμή t αναπαρίσταται ως το σύνολο των εργασιών που έχουν ολοκληρωθεί μέχρι εκείνη τη χρονική στιγμή.
Παράδειγμα 1 : Συναρμολόγηση S1 S2 S3 S4 S5 S6 S7 S8 S9 Start Assembly of Box and Motherboard End Assembly of Box Prepare Box Prepare Motherboard Install Power Supply Install Screen Install CPU Install Memory Install Disk Controller
Σύστημα Μετάβασης Συναρμολόγησης Install screen Prepare motherboard S1 Prepare case S2 S3 Install power supply S4 S5 S6 Install CPU Install memory S7 S8 Install disk controller S9 Initial State of the process “prepare box and motherboard” Case done Power supply done Αυτή δεν είναι ακριβής αναπαράσταση γιατί διάφορα γεγονότα θα μπορούσαν να συμβούν παράλληλα Final State of the process “prepare box and motherboard”
Ακριβέστερη αναπαράσταση συναρμολόγησης 2=prepare case 5= prepare motherboard 3=install power supply 6=install CPU S1 S2 S3 S4 S5 S6 S7 S8 [2] [5] [2,5] [3] [3,5] [6] [2,6]
Εξαγωγή συστήματος μετάβασης από την περιγραφή διεργασίας Προσδιορίζουμε το σύνολο Ε, που περιέχει όλα τα ατομικά γεγονότα (ενέργειες). Χωρίζουμε το Ε σε κλάσεις ισοδυναμίας με βάση τη σχέση αιτιότητας μεταξύ γεγονότων, Ε1, Ε2, ... Προσθέτουμε στο Ε όλους τους δυνατούς συνδυασμούς γεγονότων: ένας δυνατός συνδυασμός γεγονότων περιέχει το πολύ ένα γεγονός από κάθε κλάση ισοδυναμίας. Κατασκευάζουμε το σύνολο καταστάσεων S. Αρχικά S={S_initial}. Βρίσκουμε όλα τα Ε_initial E που μπορούν να συμβούν στη δεδομένη κατάσταση. Για κάθε ένα, κατασκευάζουμε την επόμενη κατάσταση και την προσθέτουμε στο S. Η διαδικασία επαναλαμβάνεται μέχρι το S_goal να περιληφθεί στο S.
Ιδιότητες Συστημάτων Μετάβασης Θέλουμε να εξασφαλίσουμε για κάθε σύστημα μετάβασης διάφορες ιδιότητες Οτι η τελική κατάσταση είναι προσβάσιμη από κάθε κατάσταση (άρα η διεργασία μας μπορεί να τερματίσει από οποιαδήποτε κατάσταση κι αν βρεθεί). Οτι δεν υπάρχουν κύκλοι σε κάποιο υπο-γράφο (loops) (άρα η διεργασία μας θα προοδεύει προς την ολοκλήρωσή της). Δύο ιδιότητες ιδιαίτερης σημασίας: Ασφάλεια (safety): τίποτα “κακό” δεν θα συμβεί ποτέ κατά την εκτέλεση της διεργασίας. Ζωτικότητα (liveness): κάτι “καλό” θα συμβεί κάποτε στη διάρκεια εκτέλεσης της διεργασίας.
Παράδειγμα 2: Υπολογισμός Α Β C F D G Ε Κάθε κόμβος αντιστοιχεί στην εκτέλεση ενός προγράμματος. Τα βέλη απεικονίζουν σχέσεις παραγωγού-καταναλωτή μεταξύ των προγραμμάτων. Οι διεκεκομμένες γραμμές απεικονίζουν XOR σχέσεις (αμοιβαία αποκλειόμενες επιλογές). Παραβίαση Ζωτικότητας: Αν μετά το Β επιλεγεί το D, η διεργασία δεν τερματίζει. Γιατί?
Προσοχή όμως... t1 t2 t3 t4 A B p q Deadlock Μπορεί η αρχική περιγραφή της διεργασίας να ικανοποιεί την ιδιότητα ζωτικότητας, αλλά κάποιο σενάριο εκτέλεσης να την παραβιάζει λόγω της κατανομής πόρων. t1 t2 t3 t4 A B p q Deadlock
Μοτίβα ροών εργασίας (workflow patterns) Οι υπο-διεργασίες και οι ατομικές εργασίες σε μια ροή μπορούν να σχετίζονται χρονικά με διάφορους τρόπους. Οι γλώσσες περιγραφής ροών και οι μηχανισμοί ενεργοποίησής τους πρέπει να υποστηρίζουν όλες αυτές τις δυνατές χρονικές σχέσεις. Μια βασική κατηγοριοποίηση αυτών των δυνατών χρονικών σχέσεων μεταξύ διεργασιών παρουσιάζεται στο http://tmitwww.tm.tue.nl/research/patterns
Sequence Pattern Οι εργασίες εκτελούνται αυστηρά σειριακά, η μια μετά την άλλη. Κάθε διεργασία στην αλυσσίδα (εκτός από την πρώτη) μπορεί να ξεκινήσει μόνο εφόσον έχει ολοκληρωθεί η προηγούμενή της. Α Β C
Ουσιαστικά είναι fork routing task AND split Pattern Πολλαπλές εργασίες εκτελούνται ταυτόχρονα. Μόλις ολοκληρωθεί η προηγούμενή τους ενεργοποιούνται όλες. Α Β C AND Αν η σύζευξη είναι έμμεση, δεν υπάρχει fork routing task, και πρόσθετες συνθήκες ισχύουν για την ενεργοποίηση κάθε μιας από τις επόμενες. Ουσιαστικά είναι fork routing task
Synchronization Pattern Πολλαπλές εργασίες εκτελούνται ταυτόχρονα. Μόλις ολοκληρωθούν όλες ενεργοποιείται η επόμενη. Α Β C AND Ουσιαστικά είναι join routing task
XOR split Pattern Β XOR Α C Μετά την ολοκλήρωση μιας διεργασίας απαιτείται απόφαση για την επόμενη μεταξύ αμοιβαία αποκλειόμενων διεργασιών: μόνο μια από τις επόμενες εκτελείται. Α Β C XOR
XOR join Pattern Β XOR Α C Μια διεργασία ενεργοποιείται μετά την ολοκλήρωση μιας από πολλές πιθανές προηγούμενες. Α Β C XOR
OR split Pattern Μετά την ολοκλήρωση μιας διεργασίας υπάρχουν πολλές πιθανές επόμενες. Εκτελείται τουλάχιστον μια (αλλά μπορεί και όλες) από αυτές. Α Β C OR
Multiple Merge Pattern Πολλαπλή ενεργοποίηση διεργασίας χωρίς συγχρονισμό των διεργασιών που εκτελούνται παράλληλα. Α Β C XOR AND D Μετά την D εκτελούνται παράλληλα οι B και C. Όταν τερματίσει μία από αυτές, π.χ. Β, εκτελείται η Α. Όταν τερματίσει και η άλλη, π.χ. C, τότε εκτελείται ξανά η Α.
Discriminator Pattern Α Β C DIS AND D Μετά την D εκτελούνται παράλληλα οι B και C. Όταν τερματίσει μία από αυτές, π.χ. Β, εκτελείται η Α. Όταν τερματίσει και η άλλη, π.χ. C, τότε αρχικοποιείται ξανά η διεργασία DIS.
N/M join Pattern Α Β C 2/3 AND D E M>N διεργασίες εκτελούνται παράλληλα. Μόλις Ν ολοκληρωθούν, ενεργοποιείται η επόμενη διεργασία Α Β C 2/3 AND D E Πότε ενεργοποιείται η Α?
Ενεργοποίηση Ροής Εργασίας (Διεργασίας) Η ενεργοποίηση αναπαριστά την ενεργό φάση στον κύκλο ζωής μιας ροής εργασίας, δηλαδή τη φάση κατά την οποία εκτελείται η διεργασία. Στιγμιότυπο Διεργασίας Ενεργοποίηση Ορισμός Διεργασίας Κατάσταση Εργασίας Αδρανής Ενεργή Προϋποθέσεις εργασιών Διακοπή για αναμονή π.χ. Πόρων ή αποτελεσμάτων Περατωθείσα Διακεκομμένη
Μοντέλα Ενεργοποίησης Ροών Εργασίας Περιγράφουν το περιβάλλον και τους μηχανισμούς ελέγχου που εξασφαλίζουν ομαλή μετάβαση από μια εργασία στην επόμενή της.
Ιεραρχικό Μοντέλο Πράκτορας Πράκτορας Ελέγχου Πράκτορας Ελέγχου Εργασία Πράκτορας Ελέγχου Εργασία Πράκτορας Ελέγχου Εργασία Πράκτορας Ελέγχου Εργασία Πράκτορας Ελέγχου Εργασία Μηχανή Ενεργοποίησης Ροής Εργασίας
Συγχρονισμός Ροών Εργασίας Δοθέντων Συστήματος Σ, με αρχική κατάσταση σ_initial και τελική σ_final Ομάδας διεργασιών P={p1, p2, …, pn}, όπου κάθε διεργασία pi έχει pre(pi), post(pi), attr(pi) Ροής Εργασίας με γράφο Α, όπου οι κόμβοι είναι διεργασίες και οι ακμές pipj σημαίνουν ότι pre(pj) post(pi) Συνόλου περιορισμών C={C1, C2, …, Cm} Το πρόβλημα του συγχρονισμού είναι να φτάσει το Σ στην κατάσταση σ_final, ξεκινώντας από την σ_initial, σαν αποτέλεσμα κάποιας διεργασίας P_final P, υπό περιορισμούς Ci C. H σ_initial θεωρείται ότι εκπληρώνει τις προϋποθέσεις για κάποια P_initial.
Μοντέλο Ισχυρού Συγχρονισμού (strong coordination) Το σύνολο διεργασιών P εκτελείται υπό την επίβλεψη μιας ή περισσότερων διεργασιών επιστασίας. Μια διεργασία επιστασίας λειτουργεί σαν μηχανή ενεργοποίησης και εξασφαλίζει την ομαλή μετάβαση από τη μια διεργασία στην άλλη με βάση το γράφο διεργασιών. Μπορεί να χρησιμοποιηθεί το Ιεραρχικό Μοντέλο: ο επιστάτης στο επίπεδο e επιβλέπει τις διεργασίες στο επίπεδο e+1, με τις διεργασίες οργανωμένες σε μορφή δέντρου.
Μοντέλο Ασθενούς Συγχρονισμού (weak coordination) Το σύνολο διεργασιών Ρ εκτελείται χωρίς κεντρική επίβλεψη από ειδική διεργασία. Peer-to-peer επικοινωνία μεταξύ διεργασιών μέσω κοινού χώρου (tuple space). Όταν μια διεργασία ολοκληρώνεται, τοποθετεί σύμβολα (πιθανά και μέρος των αποτελεσμάτων της) στον κοινό χώρο. Κάθε διεργασία επισκέπτεται τον κοινό χώρο για να διαπιστώσει αν εκπληρώνονται οι προϋποθέσεις εκκίνησής της. Στην απλούστερη περίπτωση ο κοινός χώρος είναι διάνυσμα Ν διεργασιών, όπου 1 στη θέση i του διανύσματος σημαίνει ότι η διεργασία Pi έχει ολοκληρωθεί.