Αρχεία κατηγοριών: SharePoint

Τρόπος αντιμετώπισης προβλημάτων σφαλμάτων μυστηριώδη SharePoint.

Επισκόπηση:

Εντοπισμού σφαλμάτων είναι δύσκολο κατά την ανάπτυξη της προσαρμοσμένης λειτουργικότητας για τις υπηρεσίες Windows SharePoint Services 3.0 (WSS) ή το Microsoft Office SharePoint Server (MOSS). Ο κύριος ένοχος είναι που SharePoint επιφάνειες κανονικά πολύ λίγο διαγνωστικές πληροφορίες σχετικά με το πρόγραμμα περιήγησης στο web όταν παρουσιάζεται ένα σφάλμα. Αυτό το ιστολόγιο εισόδου περιγράφει τον τρόπο για να εντοπίσετε επιπλέον δημιουργείται από το σύστημα διαγνωστικές πληροφορίες που μπορεί να προσφέρει συχνά ότι επιπλέον κομμάτι της λεπτομέρεια ότι ένας χρειάζεται για να προσδιορίσει τις αιτίες ρίζας. Αυτό μπορεί να οδηγήσει στην επίλυση του προβλήματος.

Έχω χρησιμοποιήσει αυτή την τεχνική με μεγάλη επιτυχία να λύσει αλλιώς μυστηριώδεις λάθη.

Προσέγγιση:

SharePoint σώζει πολλή πληροφορίες σε ένα διαγνωστικό αρχείο καταγραφής σε ένα αρχείο καταγραφής σε το 12 Κυψέλη.

Η κυψέλη"12" συνήθως βρίσκεται στο "C:\Πρόγραμμα ΕφαρμογώνΚοινά FilesMicrosoft SharedWeb διακομιστή Extensions12». (Δεν είμαι σίγουρος αν είναι δυνατόν για το 12 κυψέλη για να ζήσει οπουδήποτε αλλού, Στην πραγματικότητα).

Η ιδέα είναι να εντοπίσετε το τρέχον αρχείο καταγραφής, επιβάλετε το σφάλμα και στη συνέχεια να ανοίξετε γρήγορα το αρχείο καταγραφής. Αυτά τα αρχεία καταγραφής που χαρακτηρίζεται από:

  • Άφθονες ποσότητες πληροφοριών. Του SharePoint δημιουργεί μια πολύ μεγάλη ποσότητα διαγνωστικές πληροφορίες και γράφει σε αυτό το αρχείο καταγραφής πολύ γρήγορα. Θα πρέπει να είναι γρήγορη με τα δάχτυλα για να τον αιχμαλωτίσετε.
  • Πολλαπλότητα. SharePoint δεν γράφει σε ένα ενιαίο αρχείο καταγραφής, αλλά μάλλον να δημιουργεί πολλαπλά αρχεία καταγραφής στην ακολουθία.
  • Αντιγράψτε και επικολλήστε όμορφα στο MS Excel.

Μου αγαπημένη μέθοδος:

  1. Ανοίξτε την εξερεύνηση των windows επιλέγοντας το 12 hivelogs.
  2. Τακτοποιήσετε την προβολή για να δείξει κατά την τροποποιημένη ημερομηνία (η πιο πρόσφατη πρώτη).
  3. Επισημάνετε το πιο πρόσφατο αρχείο καταγραφής.
  4. Σε ένα παράθυρο του προγράμματος περιήγησης web, αναγκάσει το σφάλμα να συμβεί.
  5. Ανοίξτε το τρέχον αρχείο καταγραφής γρήγορα και να αντιγράψετε τα περιεχόμενά στο MS Excel.
  6. Μεταβείτε στο τέλος και να αναλύσει τις σχετικές εγγραφές.

Άλλες σημειώσεις:

Από προεπιλογή, το διαγνωστικό αρχείο καταγραφής βρίσκεται στο το 12 hiveLOGS Κατάλογος.

MS βέλτιστες πρακτικές (σύμφωνα με τον Mike T. της Microsoft) αναφέρουν ότι τα αρχεία καταγραφής θα πρέπει να αποθηκεύονται σε ένα ξεχωριστό σκληρό δίσκο. Αυτό που κάνει μέσω κεντρικής admin. Ο διαχειριστής συστήματος μπορεί να κάνει αυτό, στην περίπτωση αυτή θα πρέπει προφανώς να βρείτε το αρχείο καταγραφής εκεί αντί για το προεπιλεγμένο 12 Κυψέλη τοποθεσία).

Αυτό το λήμμα εξετάζει ζητήματα όπως:

  • Ροής εργασίας του SharePoint που απέτυχε να ξεκινήσει, λόγω εσωτερικού σφάλματος.
  • (περισσότερα πρέπει να προστεθεί διαχρονικά)
  • Αυτή η καταχώρηση έχει χρήσιμη διάγνωση σφαλμάτων ροής εργασίας (π.χ.. "Η ροή εργασίας απέτυχε να ξεκινήσει, λόγω εσωτερικού σφάλματος").

MOSS: Αποτελεσματική εισαγωγή, σε οργανισμό που

(Αυτή η εγγραφή που καταχωρήθηκε cross μεταξύ http://paulgalvin.spaces.live.com/blog/ και http://blogs.conchango.com)

Οι καταχωρήσεις σε αυτό το site είναι δική μου και δεν εκπροσωπούν απαραίτητα τις θέσεις της Conchango, στρατηγικές ή γνώμες.

Επισκόπηση:

Η καταχώρηση αυτή περιγράφει ορισμένες πληροφορίες παρασκηνίου σχετικά με ένα μεγάλο (3,000 οι χρήστες) Microsoft Office SharePoint Server (MOSS) εγκατάσταση και αυτό που κάναμε για να πάρει το έργο τροχαίο με τέτοιο τρόπο ότι ο πελάτης είναι ικανοποιημένος και σταθερά κάτω από ένα μονοπάτι που καταλήγει με πλήρη υιοθέτηση το σύνολο δυνατοτήτων MOSS. Από το γράψιμο της καταχώρησης, είμαστε περίπου 50% πλήρης, με την πρώτη φάση του έργου. Καθώς τα πράγματα προχωρούν, Εγώ θα ενημερώσετε αυτήν την καταχώρηση ή/και γράψετε νέες εγγραφές.

Στη συγκεκριμένη περίπτωση, η εταιρεία είχε ήδη εγκατασταθεί του SharePoint Portal Server 2003. Ομάδα εγκαταστήσει το προϊόν σε ένα είδος "Δείξτε μας αν κάποιος ενδιαφέρεται" μόδα. Υιοθετήθηκε γρήγορα από πολλούς χρήστες σε επιχειρήσεις και έγινε αρκετά δημοφιλής στην επιχείρηση σε μεγάλο. Όπως μπορείτε να φανταστείτε, Αυτό δεν ήταν η καλύτερη στρατηγική ανάπτυξης (οποία εύκολα παραδέχεται στον υπολογιστή-πελάτη) και όταν MOSS κατέφθασαν στην περιοχή, ο υπολογιστής-πελάτης αποφάσισε να «κάνει δεξιά" και προσέλαβε τη βοήθειά μας.

Ένα από τα κεντρικά θέματα που έχουμε μπροστά μας όταν ξεκινήσαμε την υλοποίηση αυτού του έργου ήταν: Πώς εισάγουμε MOSS για αυτό το πρόγραμμα πελάτης? Δεδομένου ότι ο πελάτης είχε ήδη εμπειρία με το SharePoint, Αναρρωτηθήκαμε — χρειαζόμαστε να κάνουμε «διαφορική" κατάρτισης ή δεν ξεκινάμε από το έδαφος μέχρι? Μετά από συνεργασία με τους βασικούς χρήστες, είμαστε αποφασισμένοι ότι θεωρώντας το ως ένα πράσινο πρόγραμμα τομέων έβγαινε περισσότερο νόημα.

Την απόφαση αυτή έδωσε το σημείο εκκίνησης, αλλά μας άφησε ακόμα με την σημαντική απαίτηση για την εξεύρεση μια καλή στρατηγική για να ξεδιπλώσει MOSS στην επιχείρηση. Το ΒΡΎΟ είναι ένα τέτοιο μεγάλο ζώο … περιλαμβάνει διαχείριση περιεχομένου, Διαχείριση εγγράφων, Αναζήτηση, ασφαλείας, ακροατηρίου, διαχείριση έργου, «καταπληκτικά σαράντα" πρότυπα, ροή εργασίας, επιχειρηματικών δεδομένων σύνδεσης, κλπ. Ζευγάρι αυτό με το γεγονός ότι είναι μια μεγάλη εταιρεία που μπορεί να πραγματικά καθιστούν τη χρήση του σχεδόν σε κάθε μείζονα MOSS δυνατότητα και σας έχουν τις προϋποθέσεις να είναι από ένα μεγάλο έργο με ένα εταιρικό reach και πολλά καλά πράγματα που συμβαίνουν.

Βρισκόμαστε και είστε αντιμέτωποι με αυτό το θέμα ξανά και ξανά … MOSS έχει μια επιχείρηση φτάσει με την επιχείρηση σετ, ακόμα καν κάπως εξεζητημένη υπολογιστές-πελάτες έχουν σκληρό χρόνο απορρόφησης διανοητικώς αυτές οι δυνατότητες, Ας μόνος, ενσωματώνοντας ένα αξιόλογο κλάσμα από αυτά στην καθημερινή τους ζωή.

Δεν έχω μια μαγική λύση για το πρόβλημα. Απευθύνομαι αντίθετα ακριβώς τα πρώτα κιόλας βήματα που έχουμε πάρει με τον πελάτη για να τους οδηγήσει στο δρόμο για την επιτυχημένη υιοθέτηση μακροπρόθεσμης.

Πεδίο εφαρμογής:

Όσο περισσότερο θα ήθελα η ομάδα να δημιουργήσει επίτηδες ένα σχέδιο που περιελάμβανε τα ορόσημα ως «PoepleSoft ένταξης μέσω BDC ολοκληρωθεί», "Νέα διυπουργική προϊόν έναρξη ροής εργασίας πλήρη" και «Εκτελεστική διαχείριση KPI αποδεκτή», Έπρεπε να συμβιβαστεί με κάτι λιγότερο. Αυτό δεν πρόκειται να πει ότι «η λιγότερο" είναι κακό. Στην πραγματικότητα, το λιγότερο»" ότι αποφασίσαμε για την αρχική ανάπτυξη ήταν μίλια μπροστά από όπου ήταν προτού ξεκινήσουμε. Στην περίπτωσή μας, το λιγότερο»" μετατραπεί σε:

  • Διαχείριση απλό έγγραφο χρησιμοποιώντας βιβλιοθήκες εγγράφων, έκδοση τύπους ελέγχου και περιεχόμενο.
  • Αποτελεσματική αναζήτηση με βάση τους τύπους περιεχομένου και προσαρμοσμένη αναζήτηση εκ των προτέρων (μέσω διαχειριζόμενες ιδιότητες, XSLT, για να παράγουν αρκετά αποτελέσματα, κλπ).

Εκτός από τα παραπάνω χαρακτηριστικά ολόκληρη την επιχείρηση (την έννοια ότι θα είχαν να επεκταθεί σε όλες τις υπηρεσίες και τους χρήστες), προσθέσαμε τα ακόλουθα singleton στο εμβέλειας μίνι-έργα:

  • Απόδειξη της έννοιας BDC ολοκλήρωσης.
  • Διαδικασία τέτοιας και διακλαδωμένο ροής εργασίας που δημιουργήθηκε μέσω του ΕΕΠ.
  • Σύνθετη φόρμα του InfoPath.
  • Υλικό του KPI για κάποια επιχειρηματική διαδικασία (στην περίπτωσή μας κατά πάσα πιθανότητα HR ταλέντο απόκτηση, Παρόλο που μπορεί να αλλάξει).

Εδώ το πεδίο εφαρμογής δεν είναι 100% ακριβή αλλά εκπρόσωπος της προσέγγισής μας και επαρκές για σκοπός μου εδώ, που είναι για να εξηγήσω την άποψή μου είναι ένα αποτελεσματικό»" εισαγωγή των ΒΡΎΩΝ που θα ορίσει το πρόγραμμα-πελάτης σταθερά για την χρυσή δρόμο για την πλήρη υιοθέτηση MOSS.

Εγώ δεν θα γράψω πολλά περισσότερα για το singleton σε αυτήν την είσοδο. Θέλω να επισημάνω ότι αυτά είναι μέρος της στρατηγικής μας γενικότερος. Η ιδέα είναι να προσφέρει υψηλής λειτουργικότητας ακόμα να εφαρμόσουν πυρήνα έγγραφο διαχείρισης και αναζήτησης δυνατότητες σε όλους τους χρήστες, υψηλή ορατή και ιδιαίτερα αντιπροσωπευτικό παραδείγματα άλλων χαρακτηριστικών γνωρισμάτων ΒΡΎΑ πυρήνα που είναι απλά πέρα από την ικανότητα των περισσότερων χρηστών να απορροφούν σε αυτό το πρώιμο στάδιο. Ωστόσο, «εκεί θα έχουν" και μία ελπίζει ότι άλλες επιχειρηματικές μονάδες θα γνωρίζουν ή μάθετε σχετικά με τους και θέλετε αυτές οι δυνατότητες για τον εαυτό τους, οδηγεί σε μεγαλύτερη έκδοση. Αυτές τις ιστορίες επιτυχίας singleton χρησιμεύουν επίσης για να παρέχει το προσωπικό μας "πυρομαχικά" που κέρδισε με επιτυχία το δεύτερο, Τρίτη και n-φάση έργα.

Τι Did εισάγουμε και γιατί?

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

Έχω βρεθεί είναι δύσκολο να εξηγηθεί τύπους περιεχομένου χωρίς οπτική βοηθοί. Περισσότερες τεχνικές λαϊκή να περπατήσετε μακριά από μια συζήτηση σχετικά με τους τύπους περιεχομένου όταν CT είναι περιγράφονται με όρους της βάσης δεδομένων. "Η Αξονική είναι παρόμοια με έναν πίνακα βάσης δεδομένων, έχει στήλες και στήλες έχουν οριστεί όσον αφορά τους τύπους δεδομένων, αλλά CT τύπους δεδομένων περιλαμβάνει πάνω από το απλό ακέραιος αριθμός/ημερομηνία, αλλά επίσης «επιλογή" και «αναζήτησης" και τα παρόμοια." Μπορούμε να μιλήσουμε για «επέκταση" τύποι περιεχομένου, σαν ένα μπορεί να κληρονομήσει από τη λειτουργία από μια βασική κλάση σε αντικειμενοστραφείς γλώσσες. Ωστόσο αυτό προφανώς δεν είναι χρήσιμο για την μεταφορά τμήμα admin, όστις έχει καμία τεχνική φόντου. Δηλαδή, σχεδόν όλοι αυτό που έχει σημασία σε ένα ανάπτυξης MOSS.

Χρησιμοποιώντας ένα λευκό του σκάφους είναι αμφίβολος. Έχω παρουσιάσει την ιδέα ενός τύπου περιεχομένου και συντάσσονται με Μπριγιάν (ή έτσι φαίνεται ότι) εικόνες των τύπων περιεχομένου και τι κάνουν για σας από την άποψη της αναζήτησης και πώς αυτοί μπορούν να επεκταθούν, κλπ. Στο τέλος, αυτό αισθάνομαι σαν να έχουν ενεργοποιημένη κάποια λαμπτήρες πυράκτωσης, αλλά η προκύπτουσα εικόνα λευκό του σκάφους είναι ένα χάος.

Αυτό μας οδήγησε στο να μας τόπο εκφόρτωσης τρέχουσα και έτσι πολύ πιο αποτελεσματική: μια τοποθεσία sandbox MOSS έχει ρυθμιστεί για την εμφάνιση αυτών των χαρακτηριστικών.

Χρησιμοποιώντας την τοποθεσία του sandbox, δείχνουμε:

  • Τύποι περιεχομένου:
    • Τη δημιουργία ενός CT με πολλούς τύπους δεδομένων (κείμενο, ημερομηνία, επιλογή, δυαδική τιμή, αναζήτησης, κλπ).
    • Παράταση ενός CT, δημιουργώντας μια νέα CT που βασίζονται σε ένα γονικό.
    • Αναζήτηση εγγράφων με τη χρήση μεταδεδομένων CT.
  • Βιβλιοθήκες εγγράφων:
    • Συσχετίζοντας ένα ενιαίο CT με μια βιβλιοθήκη.
    • Τι συμβαίνει όταν μεταφέρουμε ένα έγγραφο σε αυτήν τη βιβλιοθήκη?
    • Συσχέτιση του πολλαπλές CT με μια βιβλιοθήκη doc.
    • Τι συμβαίνει όταν μεταφέρουμε ένα έγγραφο σε αυτήν τη βιβλιοθήκη?
    • Φιλτράρισμα και ταξινόμηση μέσω επικεφαλίδες στηλών σε ένα doc lib.
    • Προβολές βιβλιοθήκης εγγράφων:
      • Ταξινόμηση
      • Ομαδοποίηση
      • «Γρήγορη καταχώρηση" (Προβολή φύλλου δεδομένων)
      • «Χωρίς tag στοιχείων" (να συνδράμει με μετανάστευση με ΒΡΎΑ από άλλες προελεύσεις περιεχομένου; περισσότερα σχετικά με αυτό, κάτω από).

Η τοποθεσία του Sandbox:

Εμείς σχεδιασμένο site μας sandbox είναι ένα μόνιμο χαρακτηριστικό στο περιβάλλον ανάπτυξης που θα χρησιμοποιηθεί για σκοπούς εκπαίδευσης και επιμόρφωσης, εδώ και καιρό αφού τελειώσουμε το έργο και περιλαμβάνονται πολλές ατέλειες, όπως περιγράφεται:

Τύποι περιεχομένου:

Εμείς ορίζονται οι παρακάτω τύποι περιεχομένου: Τιμολόγιο, Παραγγελία αγοράς, Τιμολόγιο υπηρεσιών.

Επιλέξαμε τιμολόγιο και αγορών σειρά επειδή είναι λιγότερο ή περισσότερο καθολικά κάτω
στάθηκε οντότητες. Ο καθένας στην επιχείρηση καταλαβαίνει ότι ένα τιμολόγιο είναι αίτημα πληρωμής σε ένα πελατών για μια ποσό εκδίδεται για ορισμένο ημερομηνία που πρέπει να καταβληθεί σύμφωνα με ορισμένες όροι πληρωμής. Αυτό οδηγεί σε έναν φυσικό ορισμό του CT που είχαμε αποκαλέσει "κατάρτιση τιμολογίου" (για να ξεχωρίζει από κάθε άλλο είδος του τιμολογίου). Ομοίως εύκολα ορίζεται η παραγγελία αγοράς. Δημιουργήσαμε επίσης ένα "κατάρτιση τιμολογίου υπηρεσίες" δημιουργώντας μια νέα CT με βάση το τιμολόγιο εκπαίδευση»" CT και προστέθηκε μία μόνο στήλη, «υπηρεσιών».

Με την παραπάνω, τώρα μπορούμε να δείξουμε κάποιες βασικές δυνατότητες των της CT χωρίς να μην βαλτώσουν προσπαθώντας να εξηγήσουμε πρώτα μια αφηρημένη έννοια; ήδη όλοι καταλαβαίνουν τι εννοούμε «τιμολόγιο" και «παραγγελία αγοράς" και αντί να είναι σε θέση να επικεντρωθεί σε μηχανική από το CT εαυτό.

Οι προσαρμοσμένες λίστες:

CT με τις στήλες του τύπου αναζήτησης»" Τοποθετήστε μια προσαρμοσμένη λίστα ή βιβλιοθήκη εγγράφων. Χρησιμοποιούμε αυτό εκτενώς και για το sandbox, Φτιάξαμε ένα υποστήριξη προσαρμοσμένη λίστα που περιέχει τους πελάτες. Διαλέξαμε τους πελάτες επειδή είναι μια εύκολη ιδέα να κατανοήσουν και εύκολο να αποδειχθεί. Το τιμολόγιο CT έχει μια στήλη, «πελάτη" που ορίζεται τύπου «αναζήτησης" που να οδηγεί σε αυτόν τον κατάλογο.

Δημιουργήσαμε μια παρόμοια προσαρμοσμένη λίστα για να διαχειριστεί «προμηθευτές" για την παραγγελία αγοράς»" CT.

Βιβλιοθήκες εγγράφων:

Δημιουργήσαμε δύο βιβλιοθήκες εγγράφων: «Τιμολόγια" και «Ανάμεικτα έγγραφα».

Μας έχει ρυθμιστεί τιμολόγια βιβλιοθήκη εγγράφων για τη διαχείριση εγγράφων μόνο CT τύπου «Τιμολόγιο».

Μας έχει ρυθμιστεί η ανάμεικτα έγγραφα»" βιβλιοθήκη για να διαχειριστείτε όλες τρεις CT της.

Να δημιουργήσετε πολλές προβολές που εμφανίζουν την ταξινόμηση, Φιλτράρισμα, φύλλο δεδομένων και ομαδοποίηση.

Αναζήτηση:

Εμείς ορίζονται δύο νέες διαχειριζόμενες ιδιότητες και αντιστοιχιστεί τους αριθμός τιμολογίου και πελατών.

Μας δημιούργησε μια νέα τοποθεσία αναζήτησης προσαρμοσμένη εκ των προτέρων και να επιτρέψετε στους χρήστες την αναζήτηση για «τιμολόγια τροποποιήθηκε" χρησιμοποιώντας αυτές τις δύο ιδιότητες αντιστοιχισμένες.

Τροποποιήστε το αρχείο XSLT έτσι ώστε ο αριθμός τιμολογίου και πελατών, Όταν υποβάλει, εμφανίζονται σε έναν πίνακα HTML σε ένα φωτεινό χρώμα. Ο στόχος εδώ είναι να αποδείξει ότι τέτοιας μορφοποίησης είναι δυνατό.

Θέτοντάς όλοι μαζί:

Εμείς τακτοποίηση για βασικοί χρήστες να συμμετέχουν σε ένα demo.

Ακολουθούμε αυτήν απλών δέσμης ενεργειών:

  1. Περιγράφουν την έννοια και ο σκοπός του ενός CT, χρησιμοποιώντας τιμολόγια και παραγγελίες αγορών ως παραδείγματα.
  2. Εμφάνιση τιμολογίου CT ορισμό ταυτόχρονα τους διαβεβαιώνει ότι δεν χρειάζεται να χρησιμοποιήσει αυτές τις οθόνες οι ίδιοι, απλώς σηκώστε τις έννοιες.
  3. Μεταβείτε στη βιβλιοθήκη εγγράφων τιμολόγια.
  4. Αποστείλετε ένα έγγραφο.
  5. Αποδεικνύουν ότι ο πελάτης drop-down είναι πραγματικά αντλήθηκαν από μια προσαρμοσμένη λίστα.
  6. Προσθέσετε ένα νέο πελάτη στη λίστα πελατών και στη συνέχεια να ενημερώσετε δεδομένα meta πρόσφατα απεσταλμένο του τιμολογίου με το πρόσφατα δημιουργημένο πελατών.
  7. Εναλλαγή των μεικτών εγγράφων»" Βιβλιοθήκη και να ανεβάσετε ένα έγγραφο. Εξηγήσει πώς το σύστημα σας ζητά για έναν τύπο εγγράφου.
  8. Πηγαίνετε πίσω στο τιμολόγια βιβλιοθήκη εγγράφων και να δείξει πώς κάνοντας κλικ σε ένα όνομα στήλης αλλάζει τη σειρά ταξινόμησης.
  9. Αποδείξει φιλτράρισμα σε επίπεδο στήλης.
  10. Εμφανίζονται διαφορετικές προβολές που επιδεικνύουν ταξινόμηση πολλών επιπέδων, το φιλτράρισμα, και ομαδοποίηση.
  11. Εμφάνιση στην προβολή φύλλου δεδομένων.
  12. Εξηγήστε το σκοπό της μια "μη Σημασμένα έγγραφα" προβολή.
  13. Μεταβείτε στο την προσαρμοσμένη αναζήτηση για προχωρημένους.
  14. Από τώρα, το πρόσφατα απεσταλμένο έγγραφο θα πρέπει να έχουν ανιχνεύεται και στο ευρετήριο, Επομένως, εκτελέστε αναζήτηση που δείχνει ικανότητα να εντοπίσετε τιμολογίου μέσω της ιδιότητας αντιστοιχισμένη.
  15. Μπορούμε να δείξουμε τη διαφορά μεταξύ αναζήτηση μέσω ιδιότητες αντιστοιχισμένες vs. μόλις ένα κείμενο αναζήτησης.

Σε αυτό το σημείο, που είναι περισσότερο ή λιγότερο να κάνει με το demo. Φαίνεται να παίρνει σχετικά με 30 να 45 συνοπτικά πρακτικά, ανάλογα με το πόσα άτομα ερωτήσεις ρωτήσω.

Θα τους στείλουμε στη συνέχεια πίσω στα θρανία με τα "μαθήματα". Αυτό αποτελείται από ένα απλό φύλλο Εxcel, όπου ζητάμε να καθορίσει για μας τι νομίζουν ότι χρειάζονται από την άποψη της CT, τόσο σε υψηλό επίπεδο (σκοπό αυτό μόνο όνομα και την επαγγελματική) καθώς και στήλες και τύπο δεδομένων θα αποθηκεύουν στη στήλη. Δεν ζητάμε να ορίσετε τύπους δεδομένων στήλης σύμφωνα με MOSS, αλλά εμπορικών όρων.

Στην περίληψη:

Δημιουργήσαμε ένα περιβάλλον sandbox που μπορούμε να χρησιμοποιήσουμε για να αποδείξει κάποια βασικά χαρακτηριστικά ΒΡΎΑ των οποίων η αίτηση αναιρέσεως είναι ολόκληρη την επιχείρηση.

Μοντελοποιήσαμε εύκολα κατανοητή και κοινές επιχειρηματικές οντότητες έτσι ώστε οι χρήστες να επικεντρωθεί στην τα ΒΡΎΑ και δεν κολλάμε στις οντότητες / Παραδείγματα οι ίδιοι.

Επιχειρηματικούς χρήστες φύγετε από διατριβές συνεδρίες με σπίτι»" στη μορφή excel έγγραφα τα οποία είναι τώρα αρμόδια να συμπληρώσετε και να χρησιμοποιούν για το σχεδιασμό του δικούς τους τύπους περιεχομένου πρώτης κοπής.

Τέλος, όπως πραγματοποιούμε επιδείξεις διαχρονικά, τα μέλη της Ομάδας του πελάτη οι ίδιοι γίνονται περισσότερο σε θέση να μεταφέρει, κάνει το demo του οι ίδιοι και γενικά ελευθερώσετε το υπόλοιπο από εμάς να εργάζονται σε πιο περίπλοκα ζητήματα, όπως η παγκόσμια ταξινομία, σύνθετες ροές εργασίας, BDC και παρόμοια είδη.

MOSS: Λειτουργική παράδειγμα-προσαρμοσμένα δεδομένα τύπου

Επιχειρηματικό σενάριο:

Υλοποίηση εταιρικών βρύα για κατασκευαστική εταιρεία με 30+ τοποθεσίες και μερικές δεκάδες εταιρικά τμήματα.

Στόχος της επιχείρησης:

Παρά μια πληθώρα επιχειρηματικούς ομίλους (τμήματα, τοποθεσίες, κλπ), ορισμένα δεδομένα πρέπει να διατηρηθούν σε παγκόσμιο επίπεδο. Για παράδειγμα, μια έγκυρη κύρια λίστα όλες οι φυσικές τοποθεσίες της εταιρείας (π.χ.. εγκαταστάσεις παραγωγής, Tοποθεσίες αποθηκών, γραφεία πωλήσεων) θα πρέπει να διατηρηθεί σε μια κεντρική τοποθεσία.

Τεχνικό πρόβλημα:

Η ταξινόμηση του επιχείρηση τέθηκε σε εφαρμογή χρησιμοποιώντας πολλαπλές συλλογές τοποθεσιών. Θα θέλαμε να δημιουργήσετε έγκυρες κατάλογο των φυσικές τοποθεσίες σε μια προσαρμοσμένη λίστα WSS. Στη συνέχεια, όταν έπρεπε να έχουμε μια στήλη σε έναν τύπο περιεχομένου (ή μια στήλη που προστίθενται σε μια λίστα ή doc βιβλιοθήκη) η έκθεση περιείχε ΕΤΑΙΡΙΚΕΣ ΤΟΠΟΘΕΣΙΕΣ, θα μπορούσαμε να δημιουργήσουμε μια στήλη χρησιμοποιώντας την "Αναζήτηση" ο τύπος δεδομένων και σημείο σε αυτόν τον κύριο κατάλογο.

Δυστυχώς, Τύποι αναζήτησης δεδομένων πρέπει να έχετε πρόσβαση σε μια πηγή λίστα "τοπικά" πράγμα που σημαίνει ότι οι έγκυρες λίστα μας δεν μπορεί να επεκταθεί συλλογές τοποθεσιών.

Τεχνική λύση:

Εφαρμογή ενός νέου τύπου προσαρμοσμένα δεδομένα εφαρμόζεται με βάση SPField και αναπαριστώνται από μια αναπτυσσόμενη λίστα στο UI του οποίου ListItems συμπλήρωση από τον κύριο κατάλογο WSS.

Δημιουργήσαμε μια νέα συλλογή τοποθεσιών ονομάζεται "http://localhost/EnterpriseData". Εκεί, έχουμε δημιουργήσει μια προσαρμοσμένη λίστα που ονομάζεται "Εταιρική θέσεις". Αυτή η λίστα χρησιμοποιεί ακριβώς το πρότυπο "Τίτλος" πεδίο που περιέχει τον κατάλογο των πραγματικών ΕΤΑΙΡΙΚΕΣ ΤΟΠΟΘΕΣΙΕΣ.

Ακολουθεί αρκετές διακριτά βήματα για να δημιουργήσετε έναν τύπο προσαρμοσμένα δεδομένα σε WSS. Είναι:

  1. Καθορίσετε μια κατηγορία που κληρονομεί από SPField (μπορεί να κληρονομούν από άλλα πεδία εάν απαιτείται).

Εδώ είναι ο κωδικός για αυτό:

δημόσια Κατηγορία XYZZYCorporateLocationField : SPFieldText
{
δημόσια XYZZYCorporateLocationField
(Το SPFieldCollection πεδία, συμβολοσειρά Όνομα τύπου, συμβολοσειρά displayName)
: βάση(πεδία, Όνομα τύπου, displayName) { }

δημόσια XYZZYCorporateLocationField
(Το SPFieldCollection πεδία, συμβολοσειρά displayName)
: βάση(πεδία, displayName) { }

δημόσια παράκαμψη BaseFieldControl FieldRenderingControl
{
πάρετε
{
BaseFieldControl ελέγχου = νέα XYZZYCorporateLocationFieldControl();
ελέγχου. Όνομα πεδίου = αυτό.InternalName;
επιστροφή ελέγχου;
} //πάρετε
} // fieldrenderingcontrol

δημόσια παράκαμψη συμβολοσειρά GetValidatedString(αντικείμενο αξία)
{
Αν (αυτό.Απαιτείται || αξία. ToString().Ισούται με(Συμβολοσειρά.Άδειο))
{
ρίξει νέα SPFieldValidationException ("Το τμήμα δεν έχει εκχωρηθεί.");
}
επιστροφή βάση.GetValidatedString(αξία);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Καθορίσετε μια άλλη κατηγορία που κληρονομεί από τον έλεγχο του πεδίου βάσης, όπως και στην:

δημόσια Κατηγορία XYZZYCorporateLocationFieldControl : BaseFieldControl
{
προστατεύονται ΑΝΑΠΤΥΣΣΟΜΕΝΗ ΛΙΣΤΑ XYZZYCorporateLocationSelector;

προστατεύονται παράκαμψη συμβολοσειρά DefaultTemplateName
{
πάρετε
{
επιστροφή "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

δημόσια παράκαμψη αντικείμενο Αξία
{
πάρετε
{
EnsureChildControls();
επιστροφή αυτό.XYZZYCorporateLocationSelector.SelectedValue;
} // πάρετε
Σύνολο
{
EnsureChildControls();
αυτό.XYZZYCorporateLocationSelector.SelectedValue = (συμβολοσειρά)αυτό.ItemFieldValue;
} // Σύνολο
} // παράκαμψη αντικείμενο αξίας

προστατεύονται παράκαμψη άκυρη CreateChildControls()
{

Αν (αυτό.Πεδίο == τιμή null || αυτό.ControlMode == SPControlMode.Οθόνη)
επιστροφή;

βάση.CreateChildControls();

αυτό.XYZZYCorporateLocationSelector =
(ΑΝΑΠΤΥΣΣΟΜΕΝΗ ΛΙΣΤΑ)FindControl TemplateContainer.("XYZZYCorporateLocationSelector");

Αν (αυτό.XYZZYCorporateLocationSelector == τιμή null)
ρίξει νέα Εξαίρεση("ΣΦΆΛΜΑ: Δεν μπορεί να φορτώσει. Αρχείο ASCX!");

Αν (!αυτό.IsPostBack σελίδα.)
{

χρήση (SPSite ιστοσελίδα = νέα SPSite("http://localhost/enterprisedata"))
{
χρήση (SPWeb Web = site. Επιθετικό())
{

SPList currentList = web. Λίστες[«ΕΤΑΙΡΙΚΕΣ ΤΟΠΟΘΕΣΙΕΣ"];

foreach (SPItem XYZZYCorporateLocation σε currentList.Items)
{
Αν (XYZZYCorporateLocation["Τίτλος"] == τιμή null) «««;

συμβολοσειρά τον τίτλο;
τον τίτλο = XYZZYCorporateLocation["Τίτλος"].ToString();

αυτό.XYZZYCorporateLocationSelector.Items.Add
(νέα Στοιχείο λίστας(τον τίτλο, τον τίτλο));

} // foreach

} // χρησιμοποιώντας spweb web = site.openweb()
} // χρησιμοποιώντας την ιστοσελίδα spsite = νέα spsite("http://localhost/enterprisedata")

} // Αν δεν είναι μια καταχώρηση προς τα πίσω

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Ο παραπάνω κώδικας βασικά υλοποιεί τη λογική για την εποίκηση την αναπτυσσόμενη λίστα με τις τιμές από το WSS προσαρμοσμένη λίστα που βρίσκεται στο http://localhost/enterprisedata και που ονομάζεται "εταιρική τµήµατα".

Εγώ ορίζονται δύο κατηγορίες σε ένα ενιαίο .cs αρχείο, συνέταξε το και το βάζουμε στο GAC (απαιτείται ισχυρή, Φυσικά).

  1. Εφαρμόσει ένα πρότυπο ελέγχου (.ascx) όπως φαίνεται:

<%@ Ελέγχου Γλώσσα= "C#" Κληρονομεί="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Έκδοση = 12.0.0.0, κουλτούρα = ουδέτερη,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Πάντα" %>
<%
@ Εγγράψου Στοιχείο tagPrefix= "wssawc" Namespace="Microsoft.SharePoint.WebControls" Συνέλευση="Microsoft.SharePoint, Έκδοση = 12.0.0.0, Πολιτισμός = ουδέτερη, PublicKeyToken = 71e9bce111e9429c" %> <%@ Εγγράψου Στοιχείο tagPrefix= "SharePoint" Namespace="Microsoft.SharePoint.WebControls" Συνέλευση="Microsoft.SharePoint, Έκδοση = 12.0.0.0, Πολιτισμός = ουδέτερη, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:Πρότυπο_απόδοσης για ID= "XYZZYCorporateLocationFieldControl" RUNAT= "διακομιστής">
<Πρότυπο>
<ASP:ΑΝΑΠΤΥΣΣΟΜΕΝΗ ΛΙΣΤΑ ID= "XYZZYCorporateLocationSelector" RUNAT= "διακομιστή" />
</Πρότυπο>
</
SharePoint:Πρότυπο_απόδοσης για>

Τα παραπάνω είναι αποθηκευμένο σε c:\πρόγραμμα ΕφαρμογώνΚοινά filesmicrosoft sharedweb διακομιστή extensions12controltemplates.

  1. Τέλος, δημιουργούμε ένα αρχείο XML για να αποθηκεύσετε σε το... 12XML κατάλογο. Αυτό είναι CAML, η οποία καθορίζει τους κανόνες μας προσαρμοσμένα δεδομένα Τύπος και για παράδειγμα μου, μοιάζει με αυτό:

<?XML έκδοση="1.0" κωδικοποίηση="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Πεδίο Όνομα="Όνομα τύπου">CorporateLocations</Πεδίο>
<
Πεδίο Όνομα="ParentType">Κείμενο</Πεδίο>
<
Πεδίο Όνομα="TypeDisplayName">ΕΤΑΙΡΙΚΕΣ ΤΟΠΟΘΕΣΙΕΣ</Πεδίο>
<
Πεδίο Όνομα="TypeShortDescription">Όλα XYZZY ΕΤΑΙΡΙΚΕΣ ΤΟΠΟΘΕΣΙΕΣ, συμπεριλαμβανομένων των εγκαταστάσεων παραγωγής ή άλλες.</Πεδίο>
<
Πεδίο Όνομα="UserCreatable">ΑΛΉΘΕΙΑ</Πεδίο>
<
Πεδίο Όνομα="ShowInListCreate">ΑΛΉΘΕΙΑ</Πεδίο>
<
Πεδίο Όνομα="ShowInDocumentLibraryCreate">ΑΛΉΘΕΙΑ</Πεδίο>
<
Πεδίο Όνομα="ShowInSurveyCreate">ΑΛΉΘΕΙΑ</Πεδίο>
<
Πεδίο Όνομα="ShowInColumnTemplateCreate">ΑΛΉΘΕΙΑ</Πεδίο>
<
Πεδίο Όνομα="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Έκδοση = 1.0.0.0, Πολιτισμός = ουδέτερη, PublicKeyToken = b0b19e85410990c4</Πεδίο>
<
RenderPattern Όνομα="DisplayPattern">
<
Διακόπτης>
<
Expr>
<
Στήλη />
</
Expr>

<Περίπτωση Αξία=""/>

<Προεπιλογή>
<
HTML>
<![CDATA[
<span style = "χρώμα:Κόκκινο"><β>]]>
</
HTML>

<
Στήλη SubColumnNumber="0" HTMLEncode="ΑΛΉΘΕΙΑ"/>

<HTML><![CDATA[</β></span>]]></HTML>

</
Προεπιλογή>
</
Διακόπτης>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Αυτό το αρχείο XML προσθέτει ο προσαρμοσμένα δεδομένα Τύπος το WSS "βιβλιοθήκη" και αγώνες εναντίον GAC είχε Συνέλευση.

Μετά τη μετακίνηση όλα αυτά τα κομμάτια στη θέση, iisreset στο διακομιστή και αυτό θα πρέπει όλοι να ξεκινήσουμε λειτουργεί πολύ καλά.

MOSS: Ενημέρωση μια προσαρμοσμένη λίστα

Υπάρχουν πολλά καλά παραδείγματα του ενημέρωση προσαρμοσμένες λίστες μέσω το SDK. Εδώ είναι ακόμα μια.

Προβλήματος των επιχειρήσεων: Φόρμα InfoPath έχει σχεδιαστεί ότι επιτρέπει στους χρήστες να εισέλθουν σε απευθείας σύνδεση αγοράσει επιτάξεις. PO αναπλήρωσης αριθμοί πρέπει να είναι παραδοσιακό ακολουθία με βάση ακέραιες τιμές και υπολογίζεται αυτόματα.

Επιχειρηματική λύση: Δημιουργήσετε μια προσαρμοσμένη λίστα ΒΡΎΑ που περιέχει δύο στήλες: "ControlField" και "ControlValue". Η στήλη αξία περιέχει τον επόμενο αριθμό αναπλήρωσης αγορά. Σημειώστε ότι το γενικό "ελέγχου" ονομάζοντας σύμβαση προβλέπει μελλοντικές ελέγχου πεδία που μπορούν να χρησιμοποιηθούν, ανάλογα με τις ανάγκες.

Τεχνική λύση: Δημιουργήσετε μια διαδικτυακή υπηρεσία που προσεγγίζεται από τον πελάτη του InfoPath. Η υπηρεσία web που επιστρέφει πίσω τον επόμενο αριθμό αναπλήρωσης αγορά και ενημερώνει την τιμή της λίστας.

Διδάγματα:

  • Κατά την προσθήκη αυτής της υπηρεσίας web ως αρχείο προέλευσης δεδομένων στη φόρμα του InfoPath, Θεώρησε αναγκαίο να μετατρέψει σε μια udc και να το αποθηκεύσετε σε μια βιβλιοθήκη σύνδεσης δεδομένων.
  • Βρήκα επίσης απαραίτητα, ώστε μεταξύ τομέων scripting μέσω κεντρικών υπηρεσιών διοίκησης // διαχείριση εφαρμογών // ρύθμιση παραμέτρων του διακομιστή μορφή.
  • Πρώτη φορά τη μορφή προσπάθησε να αποκτήσετε πρόσβαση στην υπηρεσία web, παίρνει λίγο και περιστασιακά, θα ώρα έξω. Έχω ανακατευτήκατε με τις ρυθμίσεις σε μορφή διαμόρφωση διακομιστή για να αναπτύξετε τις ρυθμίσεις χρονικού ορίου και αυτό φάνηκε να βοηθήσει.

Ο κώδικας:

χρήση Σύστημα;
χρήση System.Web;
χρήση System.Web.Services;
χρήση System.Web.Services.Protocols;
χρήση Microsoft.SharePoint;
χρήση System.Configuration;

[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
δημόσια Κατηγορία PoService : System.Web.Services.WebService
{
δημόσια PoService () {

//Αποσχολιάστε την ακόλουθη γραμμή, αν χρησιμοποιείτε σχεδιασμένα συστατικά
//InitializeComponent();
}

/// <Περίληψη>
/// Επιδιώξω τον επόμενο αριθμό PO po αριθμός ελέγχου λίστα sharepoint.
/// Προσαύξηση τον αριθμό PO στον εν λόγω κατάλογο.
/// </Περίληψη>
/// <επιστρέφει></επιστρέφει>
[WebMethod]
δημόσια συμβολοσειρά GetNextPoNumber()
{
συμβολοσειρά SpPoControlSiteName; // Όνομα της πραγματικής τοποθεσίας ΒΡΎΑ που φιλοξενεί τη λίστα ελέγχου PO.
συμβολοσειρά SpPoControlListName; // Όνομα της πραγματικής ΒΡΎΑ λίστας που περιέχει το στοιχείο ελέγχου ανά.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

συμβολοσειρά nextPoReqNumber = "xyzzy";

χρήση (SPSite ιστοσελίδα = νέα SPSite(SpPoControlSiteName))
{
χρήση (SPWeb Web = site. Επιθετικό())
{

SPList currentList = web. Λίστες[SpPoControlListName];

foreach (SPItem controlItem σε currentList.Items)
{

Αν (((συμβολοσειρά)controlItem["ControlField"]).Ισούται με("NextPoNumber"))
{
nextPoReqNumber = (συμβολοσειρά)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Μετατροπή.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}

} // Εντόπιση, ανάγνωση και ενημέρωση ο αριθμός Εντολής αγοράς στη λίστα.


} // χρησιμοποιώντας spweb web = site.openweb()
} // χρησιμοποιώντας την ιστοσελίδα spsite = νέα spsite("http://localhost/τελευταίες")

επιστροφή nextPoReqNumber;

}
}