Μια δραστηριότητα είναι μια λογική ομαδοποίηση λειτουργιών που επικεντρώνεται γύρω από ένα συγκεκριμένο είδος εργασιών. Για παράδειγμα, η ανάπτυξη λογισμικού Java είναι μια κοινή δραστηριότητα που εκτελείται από τους χρήστες της πλατφόρμας και το JDT ορίζει πολλές συνεισφορές περιβάλλοντος χρήστη (προβολές, λειτουργίες επεξεργασίας, προοπτικές, προτιμήσεις κλπ) που είναι χρήσιμες μόνο κατά την εκτέλεση της δραστηριότητας αυτής. Πριν εξετάσουμε τη μηχανική του ορισμού μιας δραστηριότητας, ας δούμε πώς χρησιμοποιείται για να βοηθήσει στην "αποσυμφόρηση" του περιβάλλοντος χρήστη.
Η έννοια της δραστηριότητας εκτίθεται στο χρήστη, αν και ίσως δεν είναι εμφανής στο νέο χρήστη. Όταν ενεργοποιείται μια δραστηριότητα στην πλατφόρμα, εμφανίζονται οι συσχετισμένες με αυτή συνεισφορές του περιβάλλοντος χρήστη. Όταν απενεργοποιείται μια δραστηριότητα στην πλατφόρμα, οι συνεισφορές του περιβάλλοντος χρήστη σε αυτή δεν εμφανίζονται.
Οι χρήστες μπορούν να ενεργοποιήσουν και να απενεργοποιήσουν δραστηριότητες ανάλογα με
τις ανάγκες χρησιμοποιώντας τη σελίδα προτιμήσεων
Γενικά >
Δυνατότητες. (Οι δραστηριότητες αναφέρονται ως "δυνατότητες" στο περιβάλλον χρήστη, αν και χρησιμοποιούμε την ορολογία δραστηριοτήτων στο ΑPI).
Ορισμένες λειτουργίες χρήστη λειτουργούν ως σημεία ενεργοποίησης μιας δραστηριότητας. Για παράδειγμα, η δημιουργία έργου Java μπορεί να εκκινήσει την ενεργοποίηση μιας δραστηριότητας ανάπτυξης Java. Με αυτό τον τρόπο. οι χρήστες εκτίθενται στη νέα λειτουργία όσο τη χρειάζονται και σταδιακά μαθαίνουν για τις δραστηριότητες που έχουν στη διάθεσή τους και πώς αυτές επηρεάζουν το περιβάλλον χρήστη. Όταν ένας χρήστης χρησιμοποιεί για πρώτη φορά την πλατφόρμα, είναι επιθυμητό να είναι απενεργοποιημένες όσο το δυνατόν περισσότερες δραστηριότητες, ώστε η εφαρμογή να είναι όσο το δυνατόν πιο απλή. Οι επιλογές που γίνονται στη σελίδα υποδοχής μπορούν να βοηθήσουν στον καθορισμό των δραστηριοτήτων που πρέπει να ενεργοποιηθούν.
Είδαμε (στις Προοπτικές) πώς χρησιμοποιούνται οι προοπτικές για την οργάνωση διαφορετικών διατάξεων προβολών και συνόλων ενεργειών σε εργασίες. Γιατί χρειαζόμαστε τις δραστηριότητες; Αν και οι προοπτικές και οι δραστηριότητες ορίζουν παρόμοια είδη εργασιών, η κύρια διαφορά είναι πώς συσχετίζονται με αυτές οι συνεισφορές περιβάλλοντος χρήστη για μια πρόσθετη λειτουργία. Οι συνεισφορές περιβάλλοντος χρήστη συσχετίζονται με προοπτικές στον ορισμό επέκτασης της συνεισφοράς. Δηλαδή, μια πρόσθετη λειτουργία έχει την ευθύνη να καθορίσει σε ποιες προοπτικές ανήκουν οι προβολές και τα σύνολα εργασίας του. Οι πρόσθετες λειτουργίες έχουν την ελευθερία ορισμού των δικών τους προοπτικών. Ακόμα και όταν μια προοπτική δεν είναι ενεργή, ο χρήστης μπορεί να έχει πρόσβαση στις προβολές και τις ενέργειες που είναι συσχετισμένες με την προοπτική μέσω εντολών όπως η Εμφάνιση προβολής.
Οι δραστηριότητες αποτελούν ένα υψηλότερο επίπεδο οργάνωσης. Οι μεμονωμένες συνεισφορές περιβάλλοντος χρήστη δεν γνωρίζουν τις δραστηριότητες και δεν αναφέρονται σε δραστηριότητες στους δικούς τους ορισμούς επέκτασης. Μάλιστα, οι δραστηριότητες αναμένεται να ρυθμιστούν σε υψηλότερο επίπεδο όπως ενσωμάτωση/ρύθμιση πλατφόρμας ή εγκατάσταση προϊόντος. Οι μεμονωμένες πρόσθετες λειτουργίες συνήθως δεν ορίζουν νέες δραστηριότητες, εκτός εάν η πρόσθετη λειτουργία είναι μια πρόσθετη λειτουργία επιπέδου συστήματος που ορίζεται από ενοποιητή συστημάτων. Σε ένα συνηθισμένο σενάριο, ένας ενοποιητής συστήματος καθορίζει πώς η λειτουργία ομαδοποιείται σε δραστηριότητες και ποιες είναι ενεργοποιημένες ως προεπιλογή. Οι δραστηριότητες είναι συσχετισμένες με συνεισφορές περιβάλλοντος χρήστη χρησιμοποιώντας δεσμούς μοτίβων δραστηριότητας, μοτίβα που αντιστοιχούν στην ταυτότητα των συνεισφορών περιβάλλοντος χρήστη που κάνουν οι πρόσθετες λειτουργίες. Ένα παράδειγμα θα βοηθήσει στην κατάδειξη αυτών των εννοιών.
Οι δραστηριότητες ορίζονται χρησιμοποιώντας το σημείο επέκτασης org.eclipse.ui.activities. Ας κοιτάξουμε μια απλοποιημένη εκδοχή του πώς η πρόσθετη λειτουργία SDK του Eclipse ορίζει δύο δραστηριότητες - μία για την ανάπτυξη λογισμικού Java και μία για την ανάπτυξη πρόσθετων λειτουργιών:
<extension point="org.eclipse.ui.activities"> <activity name="Java Activity" description="Developing Java Software" id="org.eclipse.javaDevelopment"> </activity> <activity name="Plug-in Activity" description="Developing Eclipse Plug-ins" id="org.eclipse.plugInDevelopment"> </activity> ...
Οι δραστηριότητες αντιστοιχούνται σε ένα όνομα και μια περιγραφή που εμφανίζονται στο χρήστη όποτε αυτός ενεργοποιεί ή απενεργοποιεί δραστηριότητες ή διαφορετικά εμφανίζουν πληροφορίες για μια δραστηριότητα. Η ταυτότητα της δραστηριότητας χρησιμοποιείται κατά τον ορισμό δεσμών μοτίβων ή άλλων σχέσεων μεταξύ δραστηριοτήτων. Για παράδειγμα, μπορούμε να αποφασίσουμε ότι μια δραστηριότητα προϋποθέτει μια άλλη δραστηριότητα.
<activityRequirementBinding activityId="org.eclipse.plugInDevelopment" requiredActivityId="org.eclipse.javaDevelopment"> </activityRequirementBinding>
Ο δεσμός απαιτήσεων δηλώνει ότι η δραστηριότητα ανάπτυξης πρόσθετης λειτουργίας μπορεί να ενεργοποιηθεί μόνο όταν είναι ενεργοποιημένη η δραστηριότητα ανάπτυξης Java. Σχετικές δραστηριότητες μπορούν επίσης να συνδεθούν στις κατηγορίες, οι οποίες εμφανίζονται στο χρήστη όταν εργάζεται με δραστηριότητες.
<category name="Development" description="Software Development" id="org.eclipse.categories.developmentCategory"> </category> <categoryActivityBinding activityId="org.eclipse.javaDevelopment" categoryId="org.eclipse.categories.developmentCategory"> </categoryActivityBinding> <categoryActivityBinding activityId="org.eclipse.plugInDevelopment" categoryId="org.eclipse.categories.developmentCategory"> </categoryActivityBinding>
Η κατηγορία ομαδοποιεί τις σχετικές δραστηριότητες ανάπτυξης μαζί. Αυτή η κατηγορία εμφανίζεται στο χρήστη όταν ρυθμίζει δραστηριότητες μη αυτόματα.
Οι δραστηριότητες συσχετίζονται με συνεισφορές περιβάλλοντος χρήστη χρησιμοποιώντας αντιστοίχιση μοτίβων. Η αντιστοίχιση μοτίβων που χρησιμοποιείται στους δεσμούς μοτίβων δραστηριότητας ακολουθεί τους κανόνες που περιγράφονται στο πακέτο java.util.regex για κανονικές εκφράσεις. Τα μοτίβα που χρησιμοποιούνται από τον πάγκο εργασίας αποτελούνται από δύο τμήματα. Το πρώτο τμήμα χρησιμοποιεί την ταυτότητα της πρόσθετης λειτουργίας που συνεισφέρει την επέκταση περιβάλλοντος εργασίας. Το δεύτερο τμήμα είναι η ταυτότητα που χρησιμοποιεί η πρόσθετη λειτουργία κατά τον ορισμό της συνεισφοράς (το οποίο μπορεί να περιλαμβάνει την ταυτότητα της πρόσθετης λειτουργίας ως μέρος της ταυτότητας ή όχι). Χρησιμοποιείται η ακόλουθη μορφή:
plug-in-identifier + "/" + local-identifierΓια παράδειγμα, ο ακόλουθος δεσμός μοτίβων δραστηριότητας δηλώνει ότι μια συνεισφορά περιβάλλοντος εργασίας από οποιοδήποτε ταυτότητα πρόσθετης λειτουργίας JDT (org.eclipse.jdt.*) συσχετίζεται με τη δραστηριότητα ανάπτυξης Java ανεξάρτητα από την τοπική της ταυτότητα (.*).
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\..*/.*"> </activityPatternBinding>Ο επόμενος δεσμός είναι πιο συγκεκριμένος. Δηλώνει ότι η συνεισφορά με όνομα javanature που ορίζεται στον πυρήνα του JDT (org.eclipse.jdt.core) συσχετίζεται με τη δραστηριότητα ανάπτυξης Java.
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\.core/javanature"> </activityPatternBinding>Όπως βλέπετε, οι δεσμοί μοτίβων δραστηριότητας μπορούν να χρησιμοποιηθούν για τη συσχέτιση μεγάλων ομάδων συνεισφορών με μια συγκεκριμένη δραστηριότητα ή για τη συσχέτιση πολύ συγκεκριμένων συνεισφορών σε μια δραστηριότητα. Οι ακόλουθες συνεισφορες επηρεάζονται από δραστηριότητες:
Η σύμβαση που χρησιμοποιείται από τον πάγκο εργασίας (ταυτότητα πρόσθετης λειτουργίας + τοπική ταυτότητα) επιτρέπει την εύκολη σύνδεση με πρόσθετες λειτουργίες που δεν ακολουθούν απαραίτητα την πρακτική ονοματοδοσίας με τη χρήση προθήματος στις ταυτότητες των συνεισφορών περιβάλλοντος χρήστη με την ταυτότητα της πρόσθετης λειτουργίας. Οι πρόσθετες λειτουργίες που αλληλεπιδρούν απευθείας με το API δραστηριότητας έχουν την ελευθερία χρήσης της δικής τους μορφής για τον καθορισμό συνεισφορών και την αντιστοίχιση μοτίβων με τέτοια ονόματα.
Οι δραστηριότητες συσχετίζονται με συνεισφορές βοήθειας χρησιμοποιώντας το ίδιο σχήμα αντιστοίχισης μοτίβων που χρησιμοποιείται για συνεισφορές περιβάλλοντος χρήστη. Το δεύτερο τμήμα της ταυτότητας (η τοπική ταυτότητα) υποδεικνύει το όνομα του αρχείου πίνακα περιεχομένων. Για παράδειγμα, ο ακόλουθος δεσμός μοτίβων δραστηριότητας συσχετίζει όλα τα αρχεία πίνακα περιεχομένων που έχουν συνεισφέρει οι πρόσθετες λειτουργίες JDT (org.eclipse.jdt.*) με τη δραστηριότητα ανάπτυξης Java:
<activityPatternBinding activityId="org.eclipse.javaDevelopment" pattern="org\.eclipse\.jdt\..*/.*"> </activityPatternBinding>Όταν απενεργοποιείται η δραστηριότητα ανάπτυξης, τα βιβλία βοήθειας που συνεισφέρουν οι πρόσθετες λειτουργίες JDT ή κάθε δευτερεύον βιβλίο (πίνακες περιεχομένων με διασύνδεση προς ή διασυνδεδεμένοι από βιβλία JDT ), ακόμα και αν το έχει συνεισφέρει διαφορετική πρόσθετη λειτουργία, δεν θα εμφανιστούν στο περιβάλλον βοήθειας. Τα θέματα που ορίζονται στα βιβλία αυτά δεν θα εμφανιστούν επίσης στα αποτελέσματα αναζήτησης. Στην περίπτωση που οι πίνακες περιεχομένων JDT δεν εμφανίζονταν ως βασικοί πίνακες περιεχομένων, αλλά αντίθετα διασυνδέονται από άλλο πίνακα περιεχομένων για εμφάνιση ως υποδιακλαδώσεις εντός βιβλίου, η απενεργοποίηση της δραστηριότητας JDT θα έχει ως αποτέλεσμα την απόκρυψη των υποδιακλαδώσεων. Το περιέχον βιβλίο θα εμφανιστεί να ορίζει λιγότερα θέματα στο περιβάλλον χρήστη.
Με τη χρήση πιο συγκεκριμένου δεσμού, είναι δυνατή συσχέτιση δραστηριοτήτων με επιλεγμένους πίνακες περιεχομένων από πρόσθετες λειτουργίες που συνεισφέρουν πολλαπλούς πίνακες περιεχομένων στο σύστημα βοήθειας. Για παράδειγμα, ο ακόλουθος δεσμός μοτίβων δραστηριότητας συσχετίζει τον πίνακα περιεχομένων "Παραδείγματα" με τη δραστηριότητα παραδειγμάτων ανάπτυξης Java.
<activityPatternBinding activityId="org.eclipse.javaDevelopmentExamples" pattern="org\.eclipse\.jdt\.doc\.isv\.topics_Samples.xml"> </activityPatternBinding>Με τέτοιο δεσμό μοτίβων, η απενεργοποίηση της δραστηριότητας παραδειγμάτων ανάπτυξης Java θα αποκρύψει την ενότητα "Παραδείγματα" από το βιβλίο "Οδηγός ανάπτυξης πρόσθετων λειτουργιών JDT" .
Η υποστήριξη δραστηριοτήτων του πάγκου εργασίας περιλαμβάνει ένα API για εργασία με καθορισμένες δραστηριότητες και για αλλαγή της ενεργοποιημένης κατάστασής τους.. Οι περισσότερες πρόσθετες λειτουργίες δεν χρειάζεται να ασχοληθούν με αυτό το API, όμως είναι χρήσιμο κατά την υλοποίηση λειτουργίας που επιτρέπει στο χρήστη να εργαστεί με δραστηριότητες ή για την υλοποίηση των σημείων ενεργοποίησης μιας συγκεκριμένης δραστηριότητας. Υποτίθεται ότι κάθε πρόσθετη λειτουργία που χειρίζεται δραστηριότητες μέσω API γνωρίζει καλά τους τρόπους που ρυθμίζονται οι δραστηριότητες για ένα συγκεκριμένο προϊόν. Για παράδειγμα, ο ίδιος ο πάγκος εργασίας χρησιμοποιεί το API για την ενεργοποίηση δραστηριοτήτων όπως ανάπτυξης Java. Θα εξετάσουμε πώς ο πάγκος εργασίας χρησιμοποιεί το ΑΡΙ γενικής δραστηριότητας για την υλοποίηση στοιχείων ενεργοποίησης.
Το κέντρο όλης της δραστηριότητας στον πάγκο εργασίας είναι η IWorkbenchActivitySupport. Η υποστήριξη δραστηριοτήτων εργάζεται από κοινού με μια IActivityManager. Οι πρόσθετες λειτουργίες μπορούν να λάβουν τη χρήση υποστήριξης δραστηριοτήτων και τη λειτουργία διαχείρισης από εκεί.
IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport(); IActivityManager activityManager = workbenchActivitySupport.getActivityManager();Το ακόλουθο τμήμα κώδικα ενεργοποιεί τη δραστηριότητα ανάπτυξης Java (εάν δεν είναι ήδη ενεργοποιημένη). Εμφανίζει μια απλοποιημένη εκδοχή ενός στοιχείου ενεργοποίησης.
... //the user did something Java related. Enable the Java activity. Set enabledActivityIds = new HashSet(activityManager.getEnabledActivityIds()); if (enabledIds.add("org.eclipse.javaDevelopment")) workbenchActivitySupport.setEnabledActivityIds(enabledActivityIds);
Η IActivityManager ορίζει επίσης πρωτόκολλο για τη λήψη όλων των καθορισμένων ταυτοτήτων δραστηριοτήτων και κατηγοριών και τη λήψη της συσχετισμένης IActivity ή ICategory για συγκεκριμένη ταυτότητα. Τα αντικείμενα αυτά μπορούν να χρησιμοποιηθούν για τη διερεύνηση του ορισμού μιας δραστηριότητας ή κατηγορίας σε API, όπως λήψη των δεσμών μοτίβων ή των δεσμών απαιτήσεων. Οι λειτουργίες ακρόασης μπορούν να καταχωρηθούν στη λειτουργία διαχείρισης δραστηριοτήτων ή στις ίδιες τις δραστηριότητες και τις κατηγορίες για τον εντοπισμό αλλαγών στον ορισμό συγκεκριμένης δραστηριότητας ή στην ίδια τη λειτουργία διαχείρισης δραστηριοτήτων. Δείτε το πακέτο org.eclipse.ui.activities για περισσότερες πληροφορίες.