वर्ग पुरालेख: SharePoint

रहस्यमय SharePoint त्रुटियों का निवारण कैसे करें.

अवलोकन:

डिबगिंग जब Windows SharePoint सेवाओं के लिए कस्टम कार्यक्षमता का विकास मुश्किल है 3.0 (WSS) या Microsoft Office SharePoint सर्वर (काई). कोई त्रुटि तब होती है जब SharePoint सामान्य रूप से बहुत कम नैदानिक जानकारी पर वेब ब्राउज़र सतहों कि मुख्य अपराधी है. इस ब्लॉग प्रविष्टि का वर्णन करता है कि अक्सर कि अतिरिक्त प्रदान कर सकते हैं अतिरिक्त सिस्टम-जनरेट किया गया निदान जानकारी खोजने के लिए कैसे का विवरण कि एक बिट की जरूरत है मूल कारणों की पहचान करने के लिए. यह तो समस्या को हल करने के लिए नेतृत्व कर सकते हैं.

मैं इस तकनीक के साथ महान सफलता को हल करने के लिए इस्तेमाल किया है अन्यथा रहस्यमय त्रुटियाँ.

दृष्टिकोण:

SharePoint के लिए एक नैदानिक लॉग में कोई लॉग फ़ाइल में जानकारी का एक बड़ा सौदा बचाता है 12 हाइव.

"12 hive" आम तौर पर "ग पर स्थित है:\प्रोग्राम FilesMicrosoft SharedWeb सर्वर Extensions12 कार्यक्रम ". (मुझे यकीन है कि अगर यह संभव है नहीं कर रहा हूँ 12 हाइव कहीं और जीना, वास्तव में).

वर्तमान लॉग फ़ाइल की स्थिति जानें करने का विचार है, त्रुटि बल और फिर जल्दी से लॉग फ़ाइल खोलें. इन लॉग फ़ाइलों द्वारा विशेषता हैं:

  • प्रचुर मात्रा में जानकारी का. SharePoint निदान जानकारी का एक बहुत बड़ी राशि उत्पन्न करता है और यह कि लॉग फ़ाइल के लिए लिखता है बहुत जल्दी से. आप इसे पर कब्जा करने के लिए उंगलियों के साथ त्वरित होने की जरूरत.
  • बहुलता. SharePoint एक एकल लॉग फ़ाइल के लिए लिख नहीं करता है, लेकिन बजाय एकाधिक लॉग फ़ाइल अनुक्रम में उत्पन्न करता है.
  • की प्रतिलिपि बनाएँ और अच्छी तरह से एमएस Excel में चिपकाएँ.

मेरा पसंदीदा विधि:

  1. एक windows explorer को ओर इशारा करते हुए ऊपर खुला 12 hivelogs.
  2. दृश्य दिखाने के संशोधित दिनांक द्वारा सॉर्ट करें (सबसे हाल ही में प्रथम).
  3. सबसे वर्तमान लॉग फ़ाइल को हाइलाइट.
  4. एक वेब ब्राउज़र विंडो में, त्रुटि घटित करने के लिए मजबूर.
  5. जल्दी से मौजूदा लॉग फ़ाइल को खोलने और एमएस एक्सेल के लिए उसकी सामग्री की प्रतिलिपि बनाएँ.
  6. अंत करने के लिए कूद और प्रासंगिक प्रविष्टियों का विश्लेषण.

अन्य नोट्स:

डिफ़ॉल्ट रूप से, नैदानिक लॉग में स्थित है 12 hiveLOGS निर्देशिका.

एमएस सर्वोत्तम प्रथाओं (माइक टी के अनुसार. माइक्रोसॉफ्ट के) राज्य है कि एक अलग हार्ड ड्राइव करने के लिए लॉग इन फ़ाइलों को बचाया जाना चाहिए. एक इस के जरिए केंद्रीय व्यवस्थापक करता है. आपके सिस्टम व्यवस्थापक ने यह किया है सकते हैं, जो मामले में आप स्पष्ट रूप से डिफ़ॉल्ट के बजाय वहाँ लॉग फ़ाइल को खोजने के लिए की आवश्यकता होगी 12 हाइव स्थान).

इस प्रविष्टि मुद्दों के रूप में ऐसे पते:

  • SharePoint वर्कफ़्लो किसी आंतरिक त्रुटि के कारण प्रारंभ करने में विफल रहा.
  • (समय के साथ जोड़ा जा करने के लिए और अधिक)
  • इस प्रविष्टि उपयोगी वर्कफ़्लो त्रुटियों का निदान किया गया है (जैसे. "आंतरिक त्रुटि के कारण प्रारंभ करने के लिए वर्कफ़्लो में विफल").

काई: एक संगठन के लिए प्रभावी परिचय

(इस प्रविष्टि पार के बीच पोस्ट http://paulgalvin.spaces.live.com/blog/ और http://blogs.conchango.com)

इस साइट पर पोस्टिंग मेरे अपने हैं और जरूरी Conchango के पदों का प्रतिनिधित्व नहीं करते, रणनीति या राय.

अवलोकन:

इस प्रविष्टि पर एक बड़े कुछ पृष्ठभूमि जानकारी का वर्णन करता है (3,000 उपयोगकर्ता) Microsoft Office SharePoint सर्वर (काई) rollout और क्या हम इस तरह से है कि ग्राहक खुश है और मजबूती से एक रास्ता नीचे रोलिंग प्रोजेक्ट मिला कि काई सुविधा सेट के साथ पूर्ण दत्तक ग्रहण समाप्त होता है. प्रविष्टि के लेखन के रूप में, हम लगभग रहे हैं 50% परियोजना के पहले चरण के साथ पूर्ण करें. कुछ प्रगति के रूप में, / मैं हूँ इस प्रविष्टि अद्यतन करें या नई प्रविष्टियाँ लिख.

इस विशिष्ट मामले में, कंपनी पहले ही SharePoint पोर्टल सर्वर स्थापित किया था 2003. "चलो अगर किसी को परवाह है देखने के एक प्रकार में उत्पाद समूह आईटी स्थापित" फैशन. यह जल्दी से कई व्यवसाय उपयोगकर्ता द्वारा अपनाया गया था और बड़े पैमाने पर उद्यम में काफी लोकप्रिय हो गया. जैसा कि आप कल्पना कर सकते हैं, इस उत्तम rollout की रणनीति नहीं था (जो आसानी से ग्राहक स्वीकार करती हैं) और जब काई दृश्य पर पहुंचे, "यह करने के लिए सही क्लाइंट हल" और हमें उन्हें मदद करने के लिए किराए पर लिया.

एक केंद्रीय सवाल है जब हम इस परियोजना को लागू करने शुरू कर हमें सामना करना पड़ रहा था: कैसे हम इस ग्राहक के लिए काई परिचय करते हैं? यह देखते हुए कि ग्राहक पहले से SharePoint के साथ अनुभव था, हम सोच रहा था — हम "विभेदक क्या करना चाहिए" प्रशिक्षण या क्या हम जमीन से स्टार्ट अप? प्रमुख उपयोगकर्ताओं के साथ काम करने के बाद, हम निर्धारित किया है कि यह अधिक उपयुक्त बनाया एक ग्रीन फील्ड परियोजना के रूप में इलाज.

उस निर्णय एक प्रारंभिक बिंदु दे दी है लेकिन अभी भी हमारे प्रमुख आवश्यकता के काई बाहर रोलिंग के लिए उद्यम के लिए एक अच्छी रणनीति बाहर figuring के साथ छोड़ दिया. काई ऐसी एक बड़ा जानवर है … यह भी शामिल है सामग्री प्रबंधन, दस्तावेज़ प्रबंधन, खोज, सुरक्षा, लक्ष्य किए गए श्रोता, परियोजना प्रबंधन, "शानदार चालीस" टेम्पलेट्स, वर्कफ़्लो, व्यवसाय डेटा कनेक्टर, आदि. इस तथ्य यह है कि यह एक बड़े संगठन के साथ युगल कि कर सकते हैं सही मायने में लगभग हर प्रमुख काई का उपयोग कर सुविधा है और आप एक उद्यम पहुंच और कई अच्छी चीजें हो रहा के साथ एक महान परियोजना की कमाई है.

हम बार बार इस मुद्दे के साथ सामना कर रहे हैं … अपने उद्यम सुविधा सेट के साथ पहुँचने किसी एंटरप्राइज़ काई है, अभी भी कुछ हद तक परिष्कृत ग्राहकों है एक कठिन समय मानसिक रूप से उन सुविधाओं को अवशोषित, चलो अकेले उनमें से एक प्रशंसनीय अंश अपने दैनिक दिनचर्या में शामिल.

मैं एक जादू का समाधान समस्या करने के लिए नहीं है. मैं इसके बजाय बस बहुत पहला कदम है कि हम ले लिया है संबोधित उन्हें सफल दीर्घकालिक गोद लेने के लिए नीचे रास्ते का नेतृत्व करने के लिए ग्राहक के साथ.

स्कोप:

के रूप में ज्यादा के रूप में मैं टीम के लिए एक परियोजना की योजना है कि "PoepleSoft एकीकरण के जरिए BDC पूरा हो गया" के रूप में इस तरह के मील के पत्थर शामिल शिल्प चाहता था, "नया क्रॉस-विभागीय उत्पाद लांच वर्कफ़्लो पूर्ण" और "कार्यकारी प्रबंधन KPI स्वीकार किए जाते हैं", मैं कुछ के लिए व्यवस्थित कम था. यह कहना है कि "कम नहीं है" बुरा है. वास्तव में, "कम" कि हम के लिए प्रारंभिक rollout का फैसला किया गया था जहाँ वे थे इससे पहले कि हम शुरू से आगे मील की दूरी पर. हमारे मामले में, "कम" में बदल गया:

  • साधारण दस्तावेज़ प्रबंधन दस्तावेज़ लायब्रेरीज़ का उपयोग करना, संस्करण नियंत्रण और सामग्री प्रकार.
  • प्रभावी खोज सामग्री प्रकार पर आधारित है और अग्रिम खोज अनुकूलित (के माध्यम से प्रबंधित गुण, XSLT सुंदर परिणाम का उत्पादन करने के लिए, आदि).

उपरोक्त एंटरप्राइज़-वाइड सुविधाओं के अलावा (जिसका अर्थ है कि वे सभी विभागों और उपयोगकर्ताओं को लुढ़काया जा रहे थे), हम निम्नलिखित सिंगलटन में गुंजाइश मिनी-परियोजनाओं में जोड़ा:

  • BDC एकीकरण की अवधारणा का सबूत.
  • बहु-चरण और बहु-शाखा वर्कफ़्लो प्रक्रिया एसपीडी के द्वारा बनाई गई.
  • जटिल InfoPath प्रपत्र.
  • KPI के कुछ व्यवसाय प्रक्रिया के लिए सरफेसिंग (हमारे मामले में शायद HR प्रतिभा के अधिग्रहण, हालांकि बदल दे).

यहाँ स्कोप नहीं है 100% लेकिन हमारे दृष्टिकोण के प्रतिनिधि और यहाँ मेरा उद्देश्य के लिए पर्याप्त सटीक, जो मैं एक "प्रभावी होने के लिए विचार की व्याख्या करने के लिए है" काई कि स्वर्ण पथ नीचे मजबूती से ग्राहक पूरा काई गोद लेने के लिए सेट हो जाएगा का परिचय.

मैं इस प्रविष्टि में सिंगलटन के बारे में बहुत कुछ लिख नहीं होगा. मैं कहना है कि ये हमारे − रणनीति का हिस्सा हैं करने के लिए चाहते हैं. कोर दस्तावेज़ प्रबंधन और खोज सुविधाओं के लिए सभी उपयोगकर्ताओं को लागू अभी तक अत्यधिक कार्यात्मक प्रदान करने के लिए विचार है, उच्च दिखाई और अत्यधिक प्रतिनिधि उदाहरण अन्य कोर काई सुविधाएँ जो इस प्रारंभिक चरण में अवशोषित करने के लिए बस की क्षमता के अधिकांश उपयोगकर्ताओं से परे हैं. हालांकि, वे "वहाँ बाहर हो जाएगा" और एक अन्य व्यवसाय इकाइयों होगा का पता या उनके बारे में जानने और उन सुविधाओं को खुद के लिए चाहते हैं कि उम्मीद, अधिक से अधिक अपनाने के लिए अग्रणी. इन सिंगलटन सफलता कथाएँ भी हमारी विक्रय टीम "गोला बारूद उपलब्ध कराने के लिए सेवा" सफलतापूर्वक दूसरा जीतने के लिए, तीसरे और एन-चरण परियोजनाएं.

क्या हम अपना परिचय और क्यों?

दस्तावेज़ प्रबंधन और खोज पर एक बेसलाइन एंटरप्राइज़-वाइड आवश्यकता के रूप में बसे होने के, हम विवरण सभा शुरू करने की जरूरत. एक व्यावहारिक बात के रूप में, यह उनके दस्तावेजों और अंततः सामग्री प्रकारों को समझने के लिए मैप को समझने के चारों ओर घूमती.

मैंने पाया है यह दृश्य सहायकों के बिना सामग्री प्रकार की व्याख्या करना मुश्किल है. जब CT के डेटाबेस के संदर्भ में बताया गया है और अधिक तकनीकी लोक सामग्री प्रकारों के बारे में एक चर्चा से दूर चल कर सकते हैं. "ए सीटी एक डेटाबेस तालिका करने के लिए समान है, यह स्तंभ और स्तंभ डेटा प्रकार के संदर्भ में परिभाषित कर रहे हैं, लेकिन सरल पूर्णांक/दिनांक से अधिक CT डेटा प्रकारों में शामिल हैं, लेकिन इसके अलावा 'च्वाइस" और "लुकअप" और इस तरह।" हम "देने के बारे में बात कर सकते हैं" सामग्री प्रकार, बहुत तरह एक वस्तु उन्मुख भाषाओं में एक आधार वर्ग से कार्यक्षमता पा सकते हैं।. लेकिन यह स्पष्ट रूप से जो कोई तकनीकी पृष्ठभूमि है परिवहन विभाग व्यवस्थापक व्यक्ति के लिए उपयोगी नहीं है. यानी, लगभग हर कोई है कि एक काई rollout में मायने रखती है.

एक सफेद बोर्ड का उपयोग कर iffy है. मैं एक सामग्री प्रकार और निकालके प्रतिभाशाली का विचार प्रस्तुत किया है (या तो वे लगते हैं) सामग्री प्रकार के चित्र और क्या वे आप के लिए खोज के संदर्भ में क्या और कैसे वे विस्तारित किया जा सकता, आदि. अंत में, यह लग रहा है जैसे कुछ प्रकाश बल्ब चालू है, लेकिन जिसके परिणामस्वरूप व्हाइट बोर्ड तस्वीर एक गड़बड़ है.

यह हमें हमारे वर्तमान और इसलिए अब तक सबसे प्रभावी लैंडिंग जगह करने के लिए नेतृत्व: इन सुविधाओं को दिखाने के लिए कॉन्फ़िगर किया गया एक काई sandbox साइट.

Sandbox साइट का उपयोग कर, हम प्रदर्शन:

  • सामग्री प्रकार:
    • एकाधिक डेटा प्रकारों के साथ एक सीटी बनाना (पाठ, दिनांक, विकल्प, बूलियन, लुकअप, आदि).
    • एक माता पिता पर आधारित एक नया सीटी बनाने के द्वारा एक सीटी का विस्तार.
    • CT मेटाडेटा का उपयोग दस्तावेज़ों के लिए खोज.
  • दस्तावेज़ लायब्रेरीज़:
    • एक एकल CT लायब्रेरी के साथ संबद्ध करना.
    • क्या होता है जब हम उस लायब्रेरी के लिए कोई दस्तावेज़ अपलोड करें?
    • एकाधिक सीटी एक डॉक्टर लायब्रेरी के साथ संबद्ध करना.
    • क्या होता है जब हम उस लायब्रेरी के लिए कोई दस्तावेज़ अपलोड करें?
    • फ़िल्टरिंग और सॉर्टिंग के एक डॉक्टर उदारीकरण में स्तंभ शीर्षों के जरिए.
    • दस्तावेज़ लायब्रेरी दृश्य:
      • छंटाई
      • समूहीकरण
      • "त्वरित प्रवेश" (डेटा पत्रक देखें)
      • "Untagged डेटा" (उपक्रमों के लिए काई के लिए अन्य सामग्री स्रोतों से सहायता के लिए; नीचे इस पर अधिक जानकारी).

Sandbox साइट:

हम हमारे sandbox साइट हम परियोजना समाप्त करने के बाद लंबे प्रशिक्षण प्रयोजनों के लिए इस्तेमाल किया जा करने के लिए विकास के वातावरण में एक स्थायी फ़ीचर किया जा करने के लिए डिज़ाइन किया गया है और कई कलाकृतियों में वर्णित के रूप में शामिल:

सामग्री प्रकार:

हम निम्न सामग्री प्रकार परिभाषित किया: इनवॉयस, क्रय आदेश, सेवा इनवॉइस.

क्योंकि वे और अधिक या कम सर्वत्र के तहत कर रहे हैं हम चालान और खरीद आदेश चयनित
खड़े एंटिटीज़. व्यापार में हर कोई समझता है कि एक चालान भुगतान करने के लिए एक मांग है एक ग्राहक के लिए एक राशि एक खास पर जारी किए गए दिनांक कुछ के अनुसार भुगतान किया जाएगा करने के लिए भुगतान शर्तें. यह जो हम "प्रशिक्षण इनवॉइस नामक एक CT का एक प्राकृतिक परिभाषा के लिए सुराग" (यह चालान के किसी भी अन्य तरह से भेद करने के लिए). क्रय आदेश इसी प्रकार आसानी से परिभाषित किया गया है. हम भी एक "प्रशिक्षण सेवाओं के चालान बनाए" प्रशिक्षण इनवॉइस"पर आधारित एक नया सीटी बनाने के द्वारा" सीटी और जोड़ा गया बस एक स्तंभ, "प्रदान की गई सेवाओं".

इसके बाद के संस्करण के साथ, हम अब बिना पहले एक अमूर्त अवधारणा को समझाने की कोशिश कर रहा नीचे फंस गया हो रही सीटी के कुछ प्रमुख विशेषताएं प्रदर्शित कर सकते हैं; हर कोई पहले से ही समझता है हम क्या मतलब है द्वारा "इनवॉइस" और "खरीद आदेश" इसके बजाय सीटी की यांत्रिकी पर ध्यान केंद्रित करने के लिए कर रहे हैं और खुद.

कस्टम सूचियाँ:

स्तंभ प्रकार "लुकअप के साथ सीटी" किसी कस्टम सूची या दस्तावेज़ लायब्रेरी के लिए इंगित. हम इस का उपयोग बड़े पैमाने पर और sandbox के लिए, हम एक कस्टम सूची जिसमें ग्राहकों का समर्थन बनाया. यह एक आसान अवधारणा को समझने के लिए है, क्योंकि हम ग्राहकों के उठाया और प्रदर्शित करने के लिए आसान. इनवॉयस सीटी एक स्तंभ है, "ग्राहक" कि "लुकअप प्रकार से परिभाषित किया गया है" बताते हैं कि इस सूची में.

हम "विक्रेताओं को प्रबंधित करने के लिए एक समान कस्टम सूची बनाई" क्रय आदेश"के लिए" सीटी.

दस्तावेज़ लायब्रेरीज़:

हम दो दस्तावेज़ लायब्रेरीज़ बनाया: "चालान" और "मिश्रित दस्तावेजों".

हम सीटी प्रकार 'इनवॉइस' का एकमात्र दस्तावेज़ों का प्रबंधन करने के लिए इनवॉइस दस्तावेज़ लायब्रेरी कॉन्फ़िगर.

हम "मिश्रित दस्तावेजों कॉन्फ़िगर किया गया" सभी तीन सीटी का प्रबंधन करने के लिए पुस्तकालय.

कई बार देखे गए कि छँटाई के शो बनाएँ, फ़िल्टरिंग, डेटा पत्रक और समूहीकरण.

खोज:

हम दो नई प्रबंधित गुण परिभाषित किया गया और उन्हें इनवॉइस संख्या और ग्राहक के लिए मैप किया गया.

हम एक नए अनुकूलित अग्रिम खोज साइट बनाया और यह "इनवॉइस के लिए खोज करने के लिए उपयोगकर्ताओं को सक्षम करने के लिए संशोधित" उन दो मैप किए गए गुणों का उपयोग करना.

XSLT को संशोधित इतना है कि इनवॉइस और ग्राहक संख्या, जब उपस्थित, एक चमकीले रंग में एक HTML तालिका में दिखाई देते हैं. यहाँ उद्देश्य के प्रदर्शन है कि ऐसे स्वरूपण संभव है.

यह सब एक साथ लाना:

हम एक प्रदर्शन में भाग लेने के लिए प्रमुख प्रयोक्ताओं के लिए व्यवस्था.

हम इस सरल स्क्रिप्ट का पालन करें:

  1. एक सीटी के उद्देश्य और अर्थ का वर्णन, के रूप में उदाहरण का उपयोग कर चालान और क्रय आदेश.
  2. इनवॉयस CT परिभाषा के साथ-साथ उन्हें आश्वस्त नहीं कि वे खुद को उन स्क्रीन का उपयोग करने के लिए की जरूरत है जबकि दिखाएँ, बस ऊपर अवधारणाओं उठाओ.
  3. इनवॉइस दस्तावेज़ लायब्रेरी के लिए जाओ.
  4. कोई दस्तावेज़ अपलोड करें.
  5. ड्रॉप-डाउन ग्राहक वास्तव में एक कस्टम सूची से sourced है का प्रदर्शन.
  6. एक नया ग्राहक ग्राहक सूची में जोड़ें और तब नव निर्मित ग्राहक के साथ हाल ही में अपलोड की गई इनवॉइस मेटा डेटा अद्यतन करें.
  7. "मिश्रित दस्तावेजों के लिए स्विच करें" पुस्तकालय और कोई दस्तावेज़ अपलोड करें. समझाओ कैसे सिस्टम एक दस्तावेज़ प्रकार के लिए संकेत देता है.
  8. वापस जाने के लिए इनवॉइस दस्तावेज़ लायब्रेरी और शो कैसे एक स्तंभ नाम पर क्लिक करके सॉर्ट क्रम बदल जाता है.
  9. स्तंभ स्तर को छानने का प्रदर्शन.
  10. दिखाने के अलग अलग विचार है कि बहु स्तरीय छँटाई का प्रदर्शन, फ़िल्टर करना और समूहीकृत करना.
  11. डेटा पत्रक दृश्य दिखाएँ.
  12. एक "untagged दस्तावेजों के उद्देश्य से समझाने" दृश्य.
  13. अनुकूलित उन्नत खोज करने के लिए स्विच करें.
  14. अब तक, हाल ही में अपलोड की गई दस्तावेज़ क्रॉल अनुक्रमित और किया गया है चाहिए, इतना प्रदर्शन मैप किए गए संपत्ति के जरिए उस चालान का पता लगाएँ करने के लिए की क्षमता को दर्शाता है एक खोज.
  15. हम खोज के माध्यम से मैप की गई संपत्तियों बनाम के बीच अंतर का प्रदर्शन. सिर्फ एक पाठ खोज.

इस बिंदु पर, हम और अधिक या कम के साथ प्रदर्शन कर रहे हैं. यह के बारे में लेने के लिए लगता है 30 करने के लिए 45 मिनट, कितने सवालों के आधार पर लोग पूछते हैं.

हम तो उन्हें 'होमवर्क' के साथ अपने डेस्क के लिए वापस भेज. इस का एक सरल होते हैं जहां हम हमारे लिए क्या उन्हें लगता है कि वे की जरूरत है सीटी के संदर्भ में परिभाषित करने के लिए उन्हें पूछना एक्सेल स्प्रेडशीट, दोनों एक उच्च स्तर पर (बस नाम और व्यावसायिक उद्देश्य) स्तंभ और डेटा के प्रकार के रूप में भी वे स्तंभ में संग्रहीत होगा. हम उन्हें काई के संदर्भ में स्तंभ डेटा प्रकारों को परिभाषित करने के लिए न पूछें, लेकिन व्यापार शर्तें.

सारांश में:

हम एक sandbox वातावरण है कि हम कुछ कोर काई जिनकी अपील हैं एंटरप्राइज़-वाइड सुविधाओं को प्रदर्शित करने के लिए उपयोग कर सकते हैं बनाया है.

हम आसानी से समझ और आम व्यावसायिक संस्थाओं modeled है ताकि प्रयोक्ताओं काई पर ध्यान केंद्रित कर सकते हैं और संस्थाओं पर फंस नहीं मिलता / खुद को उदाहरण.

व्यापार उपयोगकर्ताओं "होमवर्क के साथ शोध करे सत्रों से दूर चलना" एक्सेल दस्तावेज, जो वे अब कर रहे हैं बाहर भरने और अपनी पहली कट सामग्री प्रकारों को डिजाइन करने के लिए उपयोग करने के लिए सक्षम के रूप में.

अंत में, जैसा कि हम समय के साथ प्रदर्शन प्रदर्शन, ग्राहक की टीम सदस्यों को खुद आगे ले जाने में सक्षम बनें, डेमो को खुद की और आम तौर पर हमें के बाकी के ऊपर और अधिक जटिल मुद्दों पर काम करने के लिए खाली करो, जैसे वैश्विक वर्गीकरण, जटिल workflows, BDC और जैसे.

काई: कार्यात्मक उदाहरण-कस्टम डेटा प्रकार

व्यापार परिदृश्य:

एंटरप्राइज़-वाइड कार्यान्वयन काई के साथ विनिर्माण कंपनी के लिए 30+ साइटों और कुछ दर्जन कॉर्पोरेट विभागों.

व्यवसाय उद्देश्य:

व्यापार समूहों की एक भीड़ के बावजूद (विभागों, स्थानों, आदि), निश्चित डेटा एक वैश्विक स्तर पर बनाए रखा जाना चाहिए. उदाहरण के लिए, कंपनी के सभी भौतिक स्थानों की एक आधिकारिक मास्टर सूची (जैसे. विनिर्माण सुविधाओं, गोदाम स्थान, बिक्री कार्यालयों) में एक केंद्रीय स्थान बनाए रखा जाना चाहिए.

तकनीकी समस्या:

एंटरप्राइज़ टेक्सॉनॉमी एकाधिक साइट संग्रह का उपयोग कर लागू किया गया था. हम भौतिक स्थानों की आधिकारिक सूची में कस्टम WSS सूची बनाने के लिए पसंद आया होगा. तब, जब हम किसी सामग्री प्रकार में कोई स्तंभ है जरूरी (या कोई स्तंभ किसी सूची या डॉक्टर लायब्रेरी पर जोड़ा गया) कि कॉर्पोरेट स्थानों समाहित, हम एक स्तंभ "लुकअप का उपयोग कर से पैदा होगा" डेटा प्रकार और इस बात के लिए मास्टर सूची.

दुर्भाग्य से, लुकअप डेटाटाइप्स "स्थानीय रूप से एक स्रोत सूची का उपयोग करना होगा" जिसका अर्थ है कि हमारे आधिकारिक सूची साइट संग्रहों का विस्तार नहीं कर सकता.

तकनीकी समाधान:

एक नई कस्टम डेटा प्रकार के आधार पर SPField कार्यान्वित किया और जिसका ListItems मास्टर WSS सूची से आबाद UI में एक DropDownList के रूप में प्रतिनिधित्व किया कार्यान्वित.

हम नामक एक नया साइट संग्रह बनाया "http://localhost/EnterpriseData". वहाँ, हम "कॉर्पोरेट स्थानों" नामक एक कस्टम सूची बनाई. यह सूची सिर्फ मानक "शीर्षक का उपयोग करता है" वास्तविक कॉर्पोरेट स्थानों की सूची शामिल करने के लिए फ़ील्ड.

एक WSS में कोई कस्टम डेटा प्रकार बनाने के लिए कई असतत कदम इस प्रकार. वे कर रहे हैं:

  1. एक वर्ग है जो से SPField संभालते परिभाषित करें (एक अन्य फ़ील्ड्स से वारिस हो सकता यदि आवश्यक).

यहाँ है कि के लिए कोड:

सार्वजनिक वर्ग XYZZYCorporateLocationField : SPFieldText
{
सार्वजनिक XYZZYCorporateLocationField
(SPFieldCollection फ़ील्ड् स, स्ट्रिंग typeName, स्ट्रिंग displayName)
: बेस(फ़ील्ड् स, typeName, displayName) { }

सार्वजनिक XYZZYCorporateLocationField
(SPFieldCollection फ़ील्ड् स, स्ट्रिंग displayName)
: बेस(फ़ील्ड् स, displayName) { }

सार्वजनिक ओवरराइड करें BaseFieldControl FieldRenderingControl
{
हो जाओ
{
BaseFieldControl नियंत्रण = नई XYZZYCorporateLocationFieldControl();
नियंत्रण। FieldName = यह.InternalName;
वापस जाएँ नियंत्रण;
} //हो जाओ
} // fieldrenderingcontrol

सार्वजनिक ओवरराइड करें स्ट्रिंग GetValidatedString(ऑब्जेक्ट मान)
{
अगर (यह.की आवश्यकता || मान। ToString().के बराबर होती है(स्ट्रिंग.खाली))
{
फेंक नई SPFieldValidationException ("विभाग सौंपा नहीं है।");
}
वापस जाएँ बेस.GetValidatedString(मान);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. आधार फ़ील्ड नियंत्रण से इनहेरीट करता एक और वर्ग को परिभाषित, के रूप में:

सार्वजनिक वर्ग XYZZYCorporateLocationFieldControl : BaseFieldControl
{
संरक्षित DropDownList XYZZYCorporateLocationSelector;

संरक्षित ओवरराइड करें स्ट्रिंग DefaultTemplateName
{
हो जाओ
{
वापस जाएँ "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

सार्वजनिक ओवरराइड करें ऑब्जेक्ट मान
{
हो जाओ
{
EnsureChildControls();
वापस जाएँ यह.XYZZYCorporateLocationSelector.SelectedValue;
} // हो जाओ
सेट करें
{
EnsureChildControls();
यह.XYZZYCorporateLocationSelector.SelectedValue = (स्ट्रिंग)यह.ItemFieldValue;
} // सेट करें
} // ऑब्जेक्ट मान को ओवरराइड

संरक्षित ओवरराइड करें शून्य CreateChildControls()
{

अगर (यह.फ़ील्ड = = अशक्त || यह.ControlMode = = SPControlMode.प्रदर्शन)
वापस जाएँ;

बेस.CreateChildControls();

यह.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer.FindControl("XYZZYCorporateLocationSelector");

अगर (यह.XYZZYCorporateLocationSelector = = अशक्त)
फेंक नई अपवाद("त्रुटि: लोड नहीं कर सकता। ASCX फ़ाइल!");

अगर (!यह.Page.IsPostBack)
{

का उपयोग कर (SPSite साइट = नई SPSite("http://लोकलहोस्ट/enterprisedata"))
{
का उपयोग कर (SPWeb वेब साइट =। OpenWeb())
{

SPList currentList वेब =। सूचियाँ["कॉर्पोरेट स्थानों"];

foreach (SPItem XYZZYCorporateLocation में currentList.Items)
{
अगर (XYZZYCorporateLocation["शीर्षक"] == अशक्त) «««;

स्ट्रिंग theTitle;
theTitle = XYZZYCorporateLocation["शीर्षक"].ToString();

यह.XYZZYCorporateLocationSelector.Items.Add
(नई ListItem(theTitle, theTitle));

} // foreach

} // spweb वेब का उपयोग = site.openweb()
} // spsite साइट का उपयोग करके नए spsite =("http://लोकलहोस्ट/enterprisedata")

} // नहीं तो एक postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

इसके बाद के संस्करण कोड मूल रूप से DropDownList WSS कस्टम सूची में स्थित से मूल्यों के साथ populating के लिए तर्क लागू करता है http://localhost/enterprisedata और नामांकित "कॉर्पोरेट विभागों".

मैं एक एकल .cs फ़ाइल में दोनों वर्गों परिभाषित, इसे संकलित किया और इसे GAC में डाल (मजबूत की आवश्यकता, बेशक).

  1. किसी नियंत्रण टेम्पलेट को लागू (.ascx) के रूप में दिखाया गया:

<%@ नियंत्रण भाषा"सी # =" संभालते="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:RenderingTemplate ID"XYZZYCorporateLocationFieldControl =" runat"सर्वर" =>
<टेम्पलेट>
<एएसपी:DropDownList ID"XYZZYCorporateLocationSelector =" runat"सर्वर =" />
</टेम्पलेट>
</
SharePoint:RenderingTemplate>

इसके बाद के संस्करण में सी सहेजी जाती है:\प्रोग्राम प्रोग्राम filesmicrosoft sharedweb सर्वर extensions12controltemplates.

  1. अंत में, हम में सहेजने के लिए एक XML फ़ाइल बनाएँ... 12XML निर्देशिका. इस CAML कि हमारे कस्टम डेटा प्रकार को परिभाषित करता है और मेरे उदाहरण के लिए, इस तरह दिखता है:

<?xml संस्करण="1.0" एन्कोडिंग="utf-8" ?>
<
FieldTypes>
<
FieldType>
<
फ़ील्ड नाम="TypeName">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[
<अवधि शैली = "रंग:लाल"><ख>]]>
</
HTML>

<
स्तंभ SubColumnNumber="0" HTMLEncode="सच"/>

<HTML><![CDATA[</ख></काल>]]></HTML>

</
डिफ़ॉल्ट>
</
स्विच>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
यह XML फ़ाइल कस्टम डेटा प्रकार जोड़ता है WSS "लायब्रेरी करने के लिए" और यह GAC के खिलाफ मैच था विधानसभा.

जगह में इन सभी बिट्स स्थानांतरण के बाद, iisreset पर सर्वर है और यह सब अच्छी तरह से कार्य करना प्रारंभ करना चाहिए.

काई: किसी कस्टम सूची अद्यतन करना

एसडीके के माध्यम से कस्टम सूचियों को अद्यतन करने का बहुत अच्छा उदाहरण हैं. यहाँ है अभी तक एक और.

व्यापार समस्या: InfoPath प्रपत्र डिज़ाइन किया गया है कि सक्षम बनाता है उपयोगकर्ताओं को ऑनलाइन दर्ज करने की माँग खरीद. PO पारंपरिक अनुक्रम संख्या होना चाहिए माँग पूर्णांक मानों के आधार और स्वचालित रूप से परिकलित.

व्यापार समाधान: एक कस्टम काई दो स्तंभों वाली सूची बनाएँ: "ControlField" और "ControlValue". मान स्तंभ जिसमें अगले खरीद माँग संख्या. के सामान्य नियंत्रण"कि ध्यान दें" नामकरण परिपाटी भविष्य नियंत्रण क्षेत्रों कि जरूरत के रूप में इस्तेमाल किया जा सकता के लिए प्रदान करता है.

तकनीकी समाधान: InfoPath ग्राहक द्वारा पहुँचा एक वेब सेवा बनाएँ. वेब सेवा वापस अगले खरीद माँग संख्या देता है और मूल्य सूची का अद्यतन करता है.

सबक सीखा:

  • जब इस वेब सेवा किसी डेटा स्रोत के रूप में InfoPath प्रपत्र के लिए जोड़ने, मैंने पाया यह यह करने के लिए एक udc कनवर्ट करें और उसे किसी डेटा कनेक्शन लायब्रेरी में संग्रहीत करने के लिए आवश्यक.
  • मैं भी इसे केंद्रीय सेवाओं के प्रशासन के माध्यम से पार डोमेन स्क्रिप्टिंग को सक्षम करने के लिए आवश्यक पाया // अनुप्रयोग प्रबंधन // प्रपत्र सर्वर कॉन्फ़िगरेशन.
  • पहली बार प्रपत्र वेब सेवा का उपयोग करने की कोशिश की, यह एक समय लेता है और इस अवसर पर, यह समय के बाहर होता. मुझे मध्यांतर सेटिंग्स का विस्तार करें करने के लिए सेटिंग्स के साथ प्रपत्र सर्वर कॉन्फ़िगरेशन में fiddled और मदद करने के लिए लग रहा था कि.

कोड:

का उपयोग कर प्रणाली;
का उपयोग कर 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 () {

//यदि का उपयोग कर निम्न पंक्ति घटक डिज़ाइन uncomment
//InitializeComponent();
}

/// <सारांश>
/// अगले पो संख्या से sharepoint पो संख्या नियंत्रण सूची प्राप्त करें.
/// उस सूची में वेतन वृद्धि पो संख्या.
/// </सारांश>
/// <रिटर्न></रिटर्न>
[WebMethod]
सार्वजनिक स्ट्रिंग GetNextPoNumber()
{
स्ट्रिंग SpPoControlSiteName; // वास्तविक काई साइट पो नियंत्रण सूची होस्ट का नाम.
स्ट्रिंग SpPoControlListName; // वास्तविक काई पो नियंत्रण वाली सूची का नाम.

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

स्ट्रिंग nextPoReqNumber = "xyzzy";

का उपयोग कर (SPSite साइट = नई SPSite(SpPoControlSiteName))
{
का उपयोग कर (SPWeb वेब साइट =। OpenWeb())
{

SPList currentList वेब =। सूचियाँ[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 वेब का उपयोग = site.openweb()
} // spsite साइट का उपयोग करके नए spsite =("http://लोकलहोस्ट mizuho")

वापस जाएँ nextPoReqNumber;

}
}