კატეგორია არქივი: SharePoint

როგორ პრობლემების საიდუმლოებით მოცული SharePoint შეცდომები.

მიმოხილვა:

დახვეწის ძნელია, როცა განვითარებად საბაჟო ფუნქციონალური for Windows SharePoint Services 3.0 (WSS) ან Microsoft Office SharePoint Server (Moss). The main culprit is that SharePoint normally surfaces very little diagnostic information on the web browser when an error occurs. This blog entry describes how to locate additional system-generated diagnostic information that can often provide that extra bit of detail that one needs in order to identify root causes. This can then lead to solving the problem.

მე არ გამოიყენება ამ ტექნიკის დიდი წარმატებით მოსაგვარებლად სხვაგვარად საიდუმლოებით მოცული შეცდომები.

მიდგომა:

SharePoint ნახტომი დიდი ინფორმაციის სადიაგნოსტიკო შესვლა ჟურნალი ფაილი 12 hive.

The "12 hive" is usually located at "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12". (მე არ ვარ დარწმუნებული, თუ ეს შესაძლებელია 12 hive იცხოვროს სხვაგან, სინამდვილეში).

იდეა იქნებიან მიმდინარე ჟურნალის ფაილი, force the error and then quickly open the log file. These log files are characterized by:

  • Copious amounts of information. SharePoint generates a very large amount of diagnostic information and writes it to that log file very quickly. You need to be quick with the fingers to capture it.
  • Multiplicity. SharePoint does not write to a single log file but rather generates multiple log files in sequence.
  • დააკოპირეთ ლამაზად შევიდა MS Excel.

ჩემი საყვარელი მეთოდი:

  1. ქმნის Windows Explorer მიუთითებს 12 hive მორების.
  2. Sort რათა ნახოთ მიერ განახლდა თარიღი (უახლესი პირველი).
  3. მონიშნეთ უახლესი ჟურნალი ფაილი.
  4. In ბრაუზერში ფანჯარა, აიძულოს შეცდომა უნდა მოხდეს.
  5. სწრაფად გახსნა მიმდინარე ჟურნალის ფაილის და დააკოპირეთ მისი შინაარსი, რომ MS Excel.
  6. გადახტომა ბოლოს და ანალიზი შესაბამისი მასალა.

სხვა შენიშვნები:

სტანდარტულად, სადიაგნოსტიკო ჟურნალი მდებარეობს 12 hive ლოგები დირექტორია,.

MS საუკეთესო პრაქტიკა (როგორც პოსტი მაიკ T. Microsoft-) state that the log files should be saved to a separate hard drive. One does this via central admin. Your system administrator may have done this, ამ შემთხვევაში ნეტავ აშკარად გვჭირდება, log ფაილი არსებობს ნაცვლად სტანდარტული 12 hive მდებარეობა).

ამ ჩანაწერში მიმართავს ისეთ საკითხებზე, როგორიცაა:

  • SharePoint workflow ვერ განხორციელდა იმის გამო, რომ შიდა შეცდომა.
  • (მეტი დაემატოს დროთა)
  • ამ ჩანაწერში უკვე გამოსადეგი დიაგნოზის workflow შეცდომები (e.g. "The workflow failed to start due to an internal error").

Moss: ეფექტური შესავალი ორგანიზაცია

(ამ ჩანაწერში ჯვარი გამოქვეყნდა შორის http://paulgalvin.spaces.live.com/blog/ და http://blogs.conchango.com)

გზავნილები ამ საიტზე არის საკუთარი და არ ასახავს Conchango პოზიციები, სტრატეგიების ან მოსაზრებები.

მიმოხილვა:

ამ ჩანაწერში ასახავს ზოგიერთ ფონზე ინფორმაციას დიდი (3,000 მომხმარებელი) Microsoft Office SharePoint Server (Moss) rollout and what we did to get the project rolling in such a way that the client is happy and firmly down a path that ends with full adoption of the MOSS feature set. As of the writing of the entry, ჩვენ დაახლოებით 50% complete with the first phase of the project. As things progress, მე განაახლებს ამ ჩანაწერში და / ან ჩაწერის ახალი ჩანაწერების.

ამ კონკრეტულ შემთხვევაში, the company had already installed SharePoint Portal Server 2003. The IT group installed the product in a sort of "let’s see if anyone cares" fashion. It was quickly adopted by many business users and became quite popular in the enterprise at large. As you can imagine, ეს არ იყო საუკეთესო rollout სტრატეგია (რაც კლიენტს ადვილად აღიარებს) და როდესაც MOSS მოვიდნენ, the client resolved to "do it right" და დაქირავებული us მათ დახმარებას.

ერთი ცენტრალური კითხვებს ჩვენს წინაშე მდგარ როცა დავიწყეთ ამ პროექტის განსახორციელებლად იყო: როგორ უნდა გააცნოს MOSS რომ ამ ორგანიზაციის? Given that the client already had experience with SharePoint, ჩვენ გვაინტერესებდა — do we need to do "differential" სასწავლო ან არ დავიწყებთ მიწიდან მდე? After working with key users, we determined that treating this as a green field project made more sense.

That decision gave a starting point but still left us with the major requirement of figuring out a good strategy for rolling MOSS out to the enterprise. MOSS is such a big animal … it includes content management, დოკუმენტის მართვა, ძებნის, უსაფრთხოების, აუდიტორიის გათვლილი, პროექტის მართვა, "fabulous forty" თარგები, workflow, ბიზნეს მონაცემები შემაერთებელი, და ა.შ.. Couple this with the fact that it’s a large organization that შეიძლება მართლაც გამოიყენოს პრაქტიკულად ყველა ძირითადი MOSS ფუნქცია და თქვენ საქმე დიდი პროექტი საწარმოს მიღწევა და ბევრი კარგი რამ ხდება.

ჩვენ თვალწინ ეს საკითხი დრო და დრო ისევ … MOSS აქვს საწარმოს მდიდარი თავისი საწარმოს მხატვრული კომპლექტი, ჯერჯერობით კი გარკვეულწილად დახვეწილი კლიენტებს რთული გონებრივი შთამნთქმელი იმ თვისებები, რომ აღარაფერი ვთქვათ, რომელიც შეიცავს საგრძნობ ფრაქცია თავიანთ ყოველდღიური.

I don’t have a magic solution to the problem. I instead address just the very first steps that we’ve taken with the client to lead them down the path to successful long-term adoption.

სფერო:

As much as I wanted the team to craft a project plan that included such milestones as "PoepleSoft Integration via BDC Completed", "New Cross-Departmental Product Launch Workflow Complete" and "Executive Management KPI’s Accepted", I had to settle for something less. This is not to say that "less" ცუდი. სინამდვილეში, the "less" that we decided for the initial rollout was miles ahead of where they were before we started. ჩვენს შემთხვევაში, the "less" გადაიქცა:

  • მარტივი დოკუმენტის მართვა გამოყენებით დოკუმენტის ბიბლიოთეკების, version control and content types.
  • ეფექტური ძიების საფუძველზე შინაარსი ტიპის და ადრინდელს წინასწარ ძებნა (მეშვეობით მოახერხა თვისებები, XSLT წარმოების საკმაოდ შედეგები, და ა.შ.).

გარდა ზემოთ საწარმოს მასშტაბით თვისებები (რაც იმას ნიშნავს, რომ ისინი უნდა შემოვიდა out ყველა დეპარტამენტებისა და წევრებს), ჩვენ დასძინა შემდეგ სინგლეტონი in-ფარგლებს მინი პროექტები:

  • მტკიცებულება კონცეფციის BDC ინტეგრაციის.
  • მრავალფუნქციური ნაბიჯი და მრავალ ფილიალში workflow პროცესის შექმნა მეშვეობით SPD.
  • კომპლექსი InfoPath ფორმა.
  • მოპირკეთება KPI-ს გარკვეული ბიზნეს პროცესის (ალბათ HR ნიჭი შეძენის ჩვენს შემთხვევაში, მიუხედავად იმისა, რომ შეიძლება შეიცვალოს).

ფარგლებს აქ არ არის 100% accurate but representative of our approach and sufficient for my purpose here, which is to explain what I consider to be an "effective" დანერგვა MOSS რომ იქნება კლიენტს მტკიცედ ქვემოთ ოქროს გეზი სრული MOSS მიღებას.

I won’t write much more about the singleton in this entry. I do want to point out that these are part of our over-arching strategy. The idea is to implement the core document management and search features to all users yet provide highly functional, high visible and highly representative examples of other core MOSS features which are simply beyond the ability of most users to absorb at this early stage. თუმცა, they will be "out there" და ერთი იმედოვნებს, რომ სხვა ბიზნეს ერთეულების ეცოდინებათ ან გაეცნონ მათ და სურვილია, რომ ეს თვისებები თავს, leading to greater adoption. These singleton success stories also serve to provide our sales team "ammunition" წარმატებით გამარჯვების მეორე, third and n-phase projects.

რა მივიღეთ დანერგვა და რატომ?

რა ჩამოსახლების დოკუმენტის მართვა და ძებნა როგორც საბაზისო საწარმოს მასშტაბით მოთხოვნა, we needed to start gathering details. As a practical matter, ამ ტრიალებს ირგვლივ გაგება საბუთები და რომ საბოლოო ჯამში mapped იმის გასაგებად შინაარსი ტიპის.

I’ve found it’s difficult to explain content types without visual aides. More technical folk can walk away from a discussion about content types when CT’s are described in database terms. "A CT is similar to a database table, მას სვეტები და სვეტების განისაზღვრება მონაცემთა ტიპები, მაგრამ CT მონაცემთა ტიპები ზე მეტ მარტივი რიცხვი / თარიღი, but also "choice" and "lookup" and the like." We can talk about "extending" შინაარსი ტიპის, much like one can inherit functionality from a base class in object oriented languages. However this is obviously not helpful for the transportation department admin person who has no technical background. ანუ, თითქმის ყველას, რომ საკითხების MOSS rollout.

Using a white board is iffy. I’ve presented the idea of a content type and drawn brilliant (ან, რათა მათ, როგორც ჩანს,) სურათები შინაარსი ტიპის და რას აკეთებს თქვენთვის თვალსაზრისით ძებნის და როგორ შეიძლება გაფართოვდა, და ა.შ.. და ბოლოს, ეს იმას გრძნობს, როგორც ზოგიერთი ნათურები არ ჩართეს, but the resulting white board picture is a mess.

ეს მიგვიყვანა ჩვენი დღევანდელი და ჯერჯერობით ყველაზე ეფექტური სადესანტო ადგილი: MOSS სავარჯიშოში საიტი კონფიგურაცია ნახოთ ეს თვისებები.

გამოყენება სავარჯიშოში საიტი, ჩვენ დემონსტრირება:

  • ინფორმაციის სახეები:
    • შექმნა CT მრავალი მონაცემთა ტიპები (ტექსტი, თარიღი, არჩევანი, ლოგიკური, საძიებელი, და ა.შ.).
    • გაფართოება CT შექმნის ახალ CT საფუძველზე მშობელს.
    • ეძებს დოკუმენტების გამოყენებით CT მეტადატის.
  • დოკუმენტი ბიბლიოთეკების:
    • ასოცირების ერთ CT ერთად ბიბლიოთეკაში.
    • რა ხდება, როდესაც ჩვენ ატვირთეთ დოკუმენტი, რომელიც ბიბლიოთეკაში?
    • ასოცირების შესახებ მრავალჯერადი CT-ს ერთად doc ბიბლიოთეკა.
    • რა ხდება, როდესაც ჩვენ ატვირთეთ დოკუმენტი, რომელიც ბიბლიოთეკაში?
    • ფილტრაცია და დახარისხება მეშვეობით სვეტი სასაქონლო in doc lib.
    • დოკუმენტის ბიბლიოთეკა ჩვენებები:
      • დახარისხება
      • დაჯგუფება
      • "Quick entry" (მონაცემების ფურცელი ხედვა)
      • "Untagged data" (დახმარება გაუწიოს მიგრაციის MOSS, სხვა შინაარსის წყაროები; მეტი ამ ქვემოთ).

Sandbox საიტის:

ჩვენ შემუშავებული ჩვენი სავარჯიშოში საიტი უნდა იყოს მუდმივად ფუნქცია განვითარების გარემო, რომელიც გამოიყენება სასწავლო მიზნებისთვის დიდი ხნის შემდეგ ჩვენ დასრულდება პროექტი და შედის რამდენიმე ნივთები, როგორც ეს აღწერილია:

ინფორმაციის სახეები:

ჩვენ განსაზღვრული შემდეგი შინაარსის ტიპის: ფაქტურა, შესყიდვის მიზნით, მომსახურება ფაქტურა.

ჩვენ შევარჩიეთ ანგარიშს და შესყიდვის მიზნით, რადგან ისინი მეტნაკლებად საყოველთაოდ ქვეშ
stood entities. Everyone in business understands that an invoice is a demand for payment to a დამკვეთის ამისთვის თანხა გაცემული გარკვეული თარიღი გადახდა თითო ზოგიერთი გადახდის პირობები. This leads to a natural definition of a CT which we called "Training Invoice" (ზღვარის მას რაიმე სხვა სახის ფაქტურის). The purchase order is similarly easily defined. We also created a "Training Services Invoice" by creating a new CT based upon the "Training Invoice" კომპიუტერული და დასძინა, მხოლოდ ერთი სვეტი, "services rendered".

აღნიშნული, ჩვენ ახლა დემონსტრირება რამოდენიმე ძირითადი მახასიათებლები CT-ის მიღების გარეშე bogged ქვემოთ ცდილობს ახსნას აბსტრაქტული ცნება პირველი; everyone already understands what we mean by "invoice" and "purchase order" და არიან ნაცვლად შეუძლია ფოკუსირება მექანიკის CT თავად.

საბაჟო სიები:

CT with columns of type "lookup" point to a custom list or document library. We use this extensively and for the sandbox, we created one supporting custom list that contains customers. We picked customers because it’s an easy concept to understand and easy to demonstrate. The Invoice CT has a column, "customer" that is defined of type "lookup" that points at this list.

We created a similar custom list to manage "vendors" for the "Purchase Order" კომპიუტერული.

დოკუმენტი ბიბლიოთეკების:

ჩვენ შევქმენით ორი დოკუმენტი ბიბლიოთეკების: "Invoices" and "Mixed Documents".

We configured the invoices document library to manage only documents of CT type "Invoice".

We configured the "Mixed Documents" ბიბლიოთეკის მართვის ყველა სამი CT ნახვა.

შექმნა რამდენიმე ჩვენებები, რომ ნახოთ დახარისხება, ფილტრაცია, მონაცემთა ფურცელი და დაჯგუფება.

ძიება:

ჩვენ განსაზღვრული ორი ახალი მოახერხა თვისებები და mapped მათ ინვოისის ნომერი და მომხმარებელთა.

We created a new customized advance search site and modified it to enable users to search for "invoices" გამოყენებით ამ ორი mapped თვისებები.

შეცვლა XSLT ისე, რომ ანგარიშფაქტურა და მომხმარებელთა რაოდენობის, როდესაც წინამდებარე, appear in an HTML table in a bright color. The objective here is to demonstrate that such formatting is possible.

ჩვენ ყველა ერთად:

ჩვენ მოვაწყოთ გასაღები წევრებს მონაწილეობა დემო.

ჩვენ დაიცვას მარტივი script:

  1. აღწერეთ მნიშვნელობა და მიზანი CT, გამოყენებით ანგარიშფაქტურების და შეძენა ბრძანებებს როგორც მაგალითი.
  2. ჩვენება ფაქტურის CT განმარტება ამავდროულად არწმუნებს მათ, რომ ისინი არ უნდა გამოვიყენოთ იმ ეკრანებზე თავად, უბრალოდ გააშუქა ცნებები.
  3. გადასვლა ანგარიშფაქტურების დოკუმენტის ბიბლიოთეკა.
  4. ატვირთე დოკუმენტი.
  5. დემონსტრირება, რომ მომხმარებელს ჩამოსაშლელი მართლაც sourced საწყისი საბაჟო სია.
  6. დამატება ახალი მომხმარებელი მომხმარებელს სიაში და შემდეგ განაახლებს აქაჩული ფაქტურის ნახვა მეტა მონაცემების ახლად შექმნილი დამკვეთის.
  7. Switch to the "mixed documents" library and upload a document. Explain how the system prompts for a document type.
  8. Go back to invoices document library and show how clicking on a column name changes sort order.
  9. აქციას სვეტი დონის ფილტრაცია.
  10. ჩვენება განსხვავებული შეხედულებები, რომ ვაჩვენოთ მრავალ დონის დახარისხება, ფილტრაცია და დაჯგუფება.
  11. ჩვენება მონაცემების ფურცელი ხედვა.
  12. Explain the purpose of a "untagged documents" სანახავად.
  13. შეცვლა ადრინდელს გაფართოებული ძიება.
  14. ახლა, ახალი აქაჩული დოკუმენტი უნდა crawled და ინდექსირებული, ასე ასრულებს ძებნის იმაზე უნარი იქნებიან, რომ ანგარიშფაქტურა მეშვეობით mapped ქონება.
  15. ჩვენ დემონსტრირება სხვაობა ეძებს მეშვეობით mapped თვისებები vs. მხოლოდ ტექსტი.

ამ ეტაპზე, we are more or less done with the demo. It seems to take about 30 to 45 წუთი, დამოკიდებულია რამდენი კითხვა ხალხი ითხოვს.

We then send them back to their desks with "homework". This consists of a simple excel spreadsheet where we ask them to define for us what they think they need in terms of CT’s, ორივე მაღალ დონეზე (უბრალოდ სახელი და ბიზნეს მიზნით) as well as columns and type of data they would store in the column. We don’t ask them to define column data types in MOSS terms, but business terms.

შემაჯამებელ:

We’ve created a sandbox environment that we can use to demonstrate some core MOSS features whose appeal are enterprise-wide.

We have modeled easily understood and common business entities so that users can focus on MOSS and not get bogged down on the entities / მაგალითები თავს.

Business users walk away from theses sessions with "homework" სახით Excel დოკუმენტები, რომელიც მათ ახლა კომპეტენტური შევსება და გამოიყენოს შემოთავაზებული საკუთარი პირველი დაჭრილი შინაარსი ტიპის.

და ბოლოს, როგორც ჩვენ შეასრულოს demos დროთა, კლიენტების გუნდის წევრები საკუთარ თავს კიდევ უფრო შეუძლია, განავითაროს, გავაკეთოთ დემო ნახვა თავს და ზოგადად უფასოა დანარჩენ ჩვენს მუშაობას უფრო რთული საკითხები, როგორიცაა გლობალური ტაქსონომიის, კომპლექსი workflows, BDC და ანალოგიური.

Moss: ფუნქციური მაგალითი - საბაჟო მონაცემთა გაცნობის

ბიზნეს სცენარი:

საწარმო მასშტაბით განხორციელებას MOSS წარმოების კომპანიას 30+ ადგილები და რამდენიმე ათეული კორპორატიული დეპარტამენტები.

ბიზნეს მიზანი:

მიუხედავად უამრავი ბიზნეს ჯგუფები (დეპარტამენტები, ადგილას, და ა.შ.), გარკვეული მონაცემები უნდა ინახებოდას გლობალურ დონეზე. მაგალითად, ავტორიტეტული სამაგისტრო სიაში ყველა ფიზიკური ადგილმდებარეობა კომპანია (e.g. საწარმოო ობიექტების, საწყობი ადგილას, გაყიდვების ოფისები) უნდა დარჩეს ცენტრალურ ადგილას.

ტექნიკური პრობლემა:

საწარმოს ტაქსონომიის განხორციელდა გამოყენებით მრავლობითი საიტი კოლექციების. ჩვენ არ მომეწონა, რომ შეიქმნას ავტორიტეტული ჩამონათვალი ფიზიკური ადგილებში საბაჟო WSS სია. მაშინ, როცა ჩვენ გვჭირდებოდა სვეტი ინფორმაციის ტიპი (ან სვეტი დაემატა სიას ან doc ბიბლიოთეკა) რომელიც შეიცავდა კორპორატიული ადგილას, we would create a column using the "lookup" თემები და წერტილი ამ სამაგისტრო სია.

სამწუხაროდ, lookup datatypes must access a source list "locally" რაც იმას ნიშნავს, რომ ჩვენი ავტორიტეტული სიაში ვერ საქმე საიტი კოლექციების.

ტექნიკური გადაწყვეტა:

განახორციელოს ახალი საბაჟო მონაცემთა ტიპის განხორციელებული საფუძველზე SPField და წარმოდგენილია როგორც DropDownList in UI რომლის ListItems populate ეხლა სამაგისტრო WSS სია.

ჩვენ შევქმენით ახალი საიტი კოლექციის მოუწოდა "http://localhost/EnterpriseData". არსებობს, we created a custom list named "Corporate Locations". This list just uses the standard "Title" სფეროში შეიცავს სიაში ფაქტობრივი კორპორატიული ადგილას.

ერთი შემდეგნაირად რამდენიმე დისკრეტული ნაბიჯები, რათა შეიქმნას საბაჟო მონაცემთა ტიპის WSS. ისინი:

  1. განსაზღვრავს კლასს, რომელიც მემკვიდრეობით ეხლა SPField (შეიძლება მემკვიდრეობის, სხვა სფეროებში საჭიროების შემთხვევაში).

აქ არის კოდი, რომელიც:

საჯარო კლასი XYZZYCorporateLocationField : SPFieldText
{
საჯარო XYZZYCorporateLocationField
(SPFieldCollection სფეროები, სიმებიანი typeName, სიმებიანი displayName)
: ბაზა(სფეროები, typeName, displayName) { }

საჯარო XYZZYCorporateLocationField
(SPFieldCollection სფეროები, სიმებიანი displayName)
: ბაზა(სფეროები, displayName) { }

საჯარო override BaseFieldControl FieldRenderingControl
{
მიიღეთ
{
BaseFieldControl control = ახალი XYZZYCorporateLocationFieldControl();
control.FieldName = ამ.შინაგან სახელი;
დაბრუნდნენ control;
} //მიიღეთ
} // fieldrenderingcontrol

საჯარო override სიმებიანი GetValidatedString(ობიექტი ღირებულება)
{
თუ (ამ.Required || value.ToString().შეადგენს(სიმებიანი.ცარიელი))
{
სახიფათოა ახალი SPFieldValidationException ("Department is not assigned.");
}
დაბრუნდნენ ბაზა.GetValidatedString(ღირებულება);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. განსაზღვრა კიდევ ერთი კლასი, რომელიც მემკვიდრეობით ბაზიდან სფეროში კონტროლი, , როგორც in:

საჯარო კლასი XYZZYCorporateLocationFieldControl : BaseFieldControl
{
დაცული DropDownList XYZZYCorporateLocationSelector;

დაცული override სიმებიანი DefaultTemplateName
{
მიიღეთ
{
დაბრუნდნენ "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

საჯარო override ობიექტი ფასი
{
მიიღეთ
{
EnsureChildControls();
დაბრუნდნენ ამ.XYZZYCorporateLocationSelector.SelectedValue;
} // მიიღეთ
მითითებული
{
EnsureChildControls();
ამ.XYZZYCorporateLocationSelector.SelectedValue = (სიმებიანი)ამ.ItemFieldValue;
} // მითითებული
} // override object Value

დაცული override ცნოს CreateChildControls()
{

თუ (ამ.Field == ნულოვანი || ამ.ControlMode == SPControlMode.ჩვენების)
დაბრუნდნენ;

ბაზა.CreateChildControls();

ამ.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer.FindControl("XYZZYCorporateLocationSelector");

თუ (ამ.XYZZYCorporateLocationSelector == ნულოვანი)
სახიფათოა ახალი გამონაკლისი("ERROR: Cannot load .ASCX file!");

თუ (!ამ.Page.IsPostBack)
{

გამოყენებით (SPSite site = ახალი SPSite("http://localhost / enterprisedata"))
{
გამოყენებით (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists["Corporate Locations"];

foreach (Spit XYZZYCorporateLocation in currentList.Items)
{
თუ (XYZZYCorporateLocation["Title"] == ნულოვანი) გაგრძელდება;

სიმებიანი theTitle;
theTitle = XYZZYCorporateLocation["Title"].ToString();

ამ.XYZZYCorporateLocationSelector.Items.Add
(ახალი ListItem(theTitle, theTitle));

} // foreach

} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/enterprisedata")

} // if not a postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

ზემოთ კოდი ძირითადად ახორციელებს ლოგიკა მცხოვრებ DropDownList ერთად ფასეულობათა WSS საბაჟო სიაში მდებარეობს http://localhost/enterprisedata and named "Corporate Departments".

მე განვმარტე, როგორც გაკვეთილებს ერთი. Cs ფაილი, შედგენილი და დააყენა მას GAC (ძლიერი საჭირო, რა თქმა უნდა).

  1. განახორციელოს კონტროლი template (.ascx) როგორც ნაჩვენებია:

<%@ კონტროლი ენა="C#" მემკვიდრეობით="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,მობილური = 12.0.0.0, კულტურისა = ნეიტრალური,PublicKeyToken = 71e9bce111e9429c" compilationMode="Always" %>
<%
@ რეგისტრაცია Tagprefix="wssawc" სახელთა სივრცე="Microsoft.SharePoint.WebControls" ასამბლეის="Microsoft.SharePoint, მობილური = 12.0.0.0, კულტურის = ნეიტრალური, PublicKeyToken = 71e9bce111e9429c" %> <%@ რეგისტრაცია Tagprefix="SharePoint" სახელთა სივრცე="Microsoft.SharePoint.WebControls" ასამბლეის="Microsoft.SharePoint, მობილური = 12.0.0.0, კულტურის = ნეიტრალური, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:გაწევა თარგის ID="XYZZYCorporateLocationFieldControl" runat="server">
<თარგი>
<ვერხვი:DropDownList ID="XYZZYCorporateLocationSelector" runat="server" />
</თარგი>
</
SharePoint:გაწევა თარგის>

ზემოთ ინახება შევიდა გ:\პროგრამის ფაილი საერთო ფაილი Microsoft საერთო სერვერზე გაგრძელება 12 controltemplates.

  1. და ბოლოს, ჩვენ ვქმნით ფაილში გადარჩენა შევიდა ..... 12 XML დირექტორია,. ეს არის CAML, რომელიც განსაზღვრავს ჩვენი საბაჟო მონაცემთა ტიპის და ჩემი მაგალითი, ასე გამოიყურება:

<?xml მობილური="1.0" კოდირების="utf-8" ?>
<
FieldTypes>
<
FieldType>
<
სფერო სახელი="TypeName">CorporateLocations</სფერო>
<
სფერო სახელი="ParentType">ტექსტი</სფერო>
<
სფერო სახელი="TypeDisplayName">Corporate Locations</სფერო>
<
სფერო სახელი="TypeShortDescription">All XYZZY Corporate locations including manufacturing or other facilities.</სფერო>
<
სფერო სახელი="UserCreatable">TRUE</სფერო>
<
სფერო სახელი="ShowInListCreate">TRUE</სფერო>
<
სფერო სახელი="ShowInDocumentLibraryCreate">TRUE</სფერო>
<
სფერო სახელი="ShowInSurveyCreate">TRUE</სფერო>
<
სფერო სახელი="ShowInColumnTemplateCreate">TRUE</სფერო>
<
სფერო სახელი="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, მობილური = 1.0.0.0, კულტურის = ნეიტრალური, PublicKeyToken=b0b19e85410990c4</სფერო>
<
RenderPattern სახელი="DisplayPattern">
<
შეცვლა>
<
Expr>
<
სვეტი />
</
Expr>

<საქმე ფასი=""/>

<სტანდარტული>
<
HTML>
<![CDATA[
<span style="color:Red"><ბ>]]>
</
HTML>

<
სვეტი SubcolumnNumber="0" HTMLEncode="TRUE"/>

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

</
სტანდარტული>
</
შეცვლა>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
This XML file adds the custom data type to the WSS "library" და შეესაბამება მას წინააღმდეგ GAC'd ასამბლეის.

მას შემდეგ, რაც მოძრაობს ყველა ამ bits შევიდა ადგილი, iisreset სერვერზე და ეს უნდა დაიწყოს მუშაობა ლამაზად.

Moss: განახლება საბაჟო სია

არსებობს ბევრი კარგი მაგალითი განახლების საბაჟო სიები მეშვეობით SDK. აქ არის კიდევ ერთი.

ბიზნესის პრობლემა: InfoPath ფორმა შემუშავებულია, რომელიც საშუალებას სტუმრების შემოსვლა ონლაინ შესყიდვა requisitions. PO ჩამორთმევისას ნომრები უნდა იყოს ტრადიციული თანმიმდევრობით დაფუძნებული მთელი ღირებულებები და გათვლილი ავტომატურად.

ბიზნეს გადაწყვეტილება: შექმნა საბაჟო MOSS სია, რომელიც შეიცავს ორ ბურჯს: "ControlField" and "ControlValue". The value column contains the next purchase requisition number. Note that the generic "control" naming convention provides for future control fields that may be used as needed.

ტექნიკური გადაწყვეტა: Create a web service accessed by the InfoPath client. The web service returns back the next purchase requisition number and updates the value of the list.

Lessons Learned:

  • When adding this web service as a data source to the InfoPath form, I found it necessary to convert it to a udc and store it into a data connection library.
  • I also found it necessary to enable cross domain scripting via central services administration // application management // form server configuration.
  • The first time the form tried to access the web service, it takes a while and on occasion, it would time out. I fiddled with settings in form server configuration to expand the timeout settings and that seemed to help.

The code:

გამოყენებით სისტემები;
გამოყენებით 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 the following line if using designed components
//InitializeComponent();
}

/// <შემაჯამებელი>
/// Obtain the next PO number from the sharepoint po number control list.
/// Increment the PO number in that list.
/// </შემაჯამებელი>
/// <returns></returns>
[WebMethod]
საჯარო სიმებიანი GetNextPoNumber()
{
სიმებიანი SpPoControlSiteName; // Name of the actual MOSS site that hosts the PO Control list.
სიმებიანი SpPoControlListName; // Name of the actual MOSS list containing the Po control.

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

სიმებიანი nextPoReqNumber = "xyzzy";

გამოყენებით (SPSite site = ახალი SPSite(SpPoControlSiteName))
{
გამოყენებით (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpPoControlListName];

foreach (Spit controlItem in currentList.Items)
{

თუ (((სიმებიანი)controlItem["ControlField"]).შეადგენს("NextPoNumber"))
{
nextPoReqNumber = (სიმებიანი)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Convert.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

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

} // Locating, reading and updating the PO number in the list.


} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")

დაბრუნდნენ nextPoReqNumber;

}
}