Կարգավիճակի արխիվներ: Sharepoint

Ինչպես troubleshoot խորհրդավոր SharePoint սխալները.

Overview:

Կարգաբերում, դժվար է, երբ զարգացող գործարկողի ֆունկցիոնալությունը է Windows SharePoint ծառայություններ 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 փեթակ.

The "12 hive" is usually located at "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12". (Վստահ չեմ, եթե դա հնարավոր է 12 փեթակ է ապրել: Դուք էլ, փաստորեն).

Գաղափարն է տեղադրել ընթացիկ ֆայլը, 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 փեթակ տեղեկամատյանները.
  2. Տեսակավորելու տեսարան ցույց է մոդիֆիկացված ամսաթվի (վերջերս է).
  3. Կարեւորում առավել ֆայլը.
  4. Մի վեբ բրաուզերի պատուհանում, ստիպել սխալ է տեղի ունենում.
  5. Արագ բացել ընթացիկ ֆայլը եւ պատճենը, դրա բովանդակությունը MS Excel.
  6. Անցնել, մինչեւ վերջ եւ վերլուծել համապատասխան գրառում.

Այլ Նշումներ:

Ըստ դեֆոլտի, դիագնոստիկ մուտք գտնվում է 12 փեթակ տեղեկամատյանները ցուցակում.

MS լավագույն փորձի (ace ի Mike 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, որի դեպքում դուք ուզում ակնհայտորեն պետք է գտնել ֆայլը կա թե դեֆոլտի 12 փեթակ դիրքը).

Այս գրառումը անդրադառնում է այնպիսի հիմնախնդիրներ ինչպիսիք:

  • 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 դիրքերը, ռազմավարությունների եւ կարծիքները.

Overview:

Այս գրառումը նկարագրում որոշ տեղեկություններ է մեծ (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. Ինչպես կարող եք պատկերացնել, սա ոչ թե լավագույն rollout ռազմավարությունը (որը հաճախորդը հեշտությամբ ընդունում) եւ երբ MOSS ժամանել է դեպքի վայր, the client resolved to "do it right" եւ վարձու մեզ օգնել.

Մեկը կենտրոնական հարցերից կանգնած է մեզ, երբ մենք սկսեցինք իրականացնել այս նախագիծը եղել է: Ինչպես ենք մենք ներկայացնում 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" կաղապարներ, աշխատանքի արդյունքում, բիզնես տվյալների միակցիչ, եւ այլն:. Couple this with the fact that it’s a large organization that կարող իսկապես օգտվել գրեթե յուրաքանչյուր խոշոր MOSS հնարավորությունը, եւ դուք ունեք մի մեծ ծրագրի makings է ձեռնարկության հասնել, եւ շատ լավ բաներ happening.

Մենք բախվում այս հարցով ժամանակի եւ ժամանակի կրկին … MOSS ունի ձեռնարկության հասանելիության իր ձեռնարկության feature-set, բայց նույնիսկ փոքր - ինչ բարդ հաճախորդները ունեն ծանր ժամանակ մտավոր կլանող այն հատկանիշները, թող մենակ ներառում է գնահատելի խմբակցության նրանց մեջ իրենց առօրյան.

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" վերածվեց:

  • Simple Փաստաթղթաշրջանառության կառավարման կիրառման փաստաթուղթը գրադարաններ, version control and content types.
  • Արդյունավետ որոնման հիմնված բովանդակության տեսակների եւ անհատական ​​որոնում (միջոցով հաջողվել հատկությունների, XSLT արտադրել գեղեցիկ արդյունքները, եւ այլն:).

Ի լրումն վերը նշված ձեռնարկությունների լայն հնարավորությունները (նշանակում է, որ նրանք պետք է ուղղում բոլոր վարչությունների եւ օգտագործողների), մենք ավելացրել հետեւյալ SINGLETON in-շրջանակը մինի - ծրագրեր:

  • Proof հայեցակարգի BDC ինտեգրման.
  • Multi-քայլ եւ բազմամյա մասնաճյուղ workflow գործընթացը ստեղծված միջոցով SPD.
  • Complex InfoPath ձեւ.
  • Surfacing 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 ավազամանը site կազմաձեւվել ցուցադրել այդ հատկանիշները.

Օգտագործելով Sandbox կայքը, Մենք ցույց:

  • Բովանդակության տեսակներ:
    • Ստեղծելով CT բազմաթիվ տվյալների տեսակների (տեքստ, ամսաթիվ, ընտրություն, Բուլյան, lookup, եւ այլն:).
    • Ընդլայնումը եւ CT ստեղծելով նոր CT հիման վրա ծնող.
    • Որոնում Փաստաթղթերի օգտագործելով CT մետատվյալներ.
  • Փաստաթղթերի որոնում:
    • Associating մի CT հետ գրադարան.
    • Ինչ է տեղի ունենում, երբ մենք վերբեռնեք փաստաթուղթ այդ գրադարանին?
    • Associating բազմակի CT ի հետ doc գրադարան.
    • Ինչ է տեղի ունենում, երբ մենք վերբեռնեք փաստաթուղթ այդ գրադարանին?
    • Զտիչ եւ տեսակավորման միջոցով սյունակի Դուք մի doc lib.
    • Փաստաթղթերի գրադարանի դիտում:
      • Տեսակավորում
      • Խմբավորումը
      • "Quick entry" (տվյալների թերթիկ տեսք)
      • "Untagged data" (աջակցել է արտագաղթի MOSS այլ բովանդակության աղբյուրներից; այլ այս է ստորեւ).

The Sandbox Site:

Մենք մշակել ենք Sandbox կայքը լինել մշտական ​​խաղարկային զարգացման միջավայր, որոնք պետք է օգտագործել ուսուցման նպատակներով երկար հետո մենք ավարտել ծրագիրը ներառում է մի քանի artifacts ինչպես նկարագրված:

Բովանդակության տեսակներ:

Մենք սահմանել հետեւյալ բովանդակությամբ տեսակները: Ապրանքագիր, Գնման պատվերի, Ծառայություններ հաշիվ - ապրանքագրերի.

Մենք ընտրել հաշիվ - ապրանքագրերի, եւ գնման պատվերի, քանի որ նրանք կարող են քիչ թե շատ համընդհանուր տակ
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" CT, եւ ավելացրեց միայն մեկ սյունակ, "services rendered".

With վերոնշյալ, մենք կարող ենք այժմ ցույց տալ որոշ առանցքային հատկանիշները 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" CT.

Փաստաթղթերի որոնում:

Մենք ստեղծել ենք երկու փաստաթուղթը գրադարաններ: "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.

Դնում միասին:

Մենք կազմակերպում բառ օգտվողները մասնակցելու ցուցադրություն.

Մենք հետեւում ենք այս պարզ սցենար:

  1. Նկարագրեք իմաստը եւ նպատակը մի CT, օգտագործելով հաշիվ - ապրանքագրերի եւ գնման պատվերներ, ինչպես օրինակ.
  2. Ցուցադրել ապրանքագիր CT սահմանումը միաժամանակ վստահեցնելով, որ նրանք պետք չէ օգտագործել այդ էկրաններ են, պարզապես վերցնել հասկացությունները.
  3. Գնալ դեպի հաշիվ ապրանքագրեր փաստաթղթի գրադարանի.
  4. Վերբեռնել փաստաթուղթը.
  5. Ցույց տալ, որ հաճախորդը բացվող իսկապես sourced է մաքսային ցուցակից.
  6. Ավելացնել նոր հաճախորդին, ինչպես նաեւ հաճախորդի ցուցակում, ապա թարմացնել Վերջին Ավելացվածները հաշիվը ծանոթյություններ Meta տվյալների հետ նորաստեղծ հաճախորդի.
  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. Առայժմ, Վերջերս Վերբեռնման փաստաթուղթը պետք է տարածման եւ ինդեքսավորվում, որ կատարել որոնում, որը ցուցաբերում կարողությունը կմնա այդ ապրանքագիր միջոցով mapped գույքի.
  15. Մենք ցույց տալ տարբերությունը որոնման միջոցով mapped հատկությունների vs. մի տեքստում.

Այս պահին, we are more or less done with the demo. It seems to take about 30 դեպի 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 փաստաթղթեր, որոնք նրանք պետք է իրավասու լրացնել եւ օգտագործել նախագծման իրենց առաջին cut բովանդակության տեսակի.

Վերջապես, քանի որ մենք կատարել դեմո ժամանակի, Հաճախորդի թիմի անդամները իրենք ավելի կարողանում տանել առաջ, անել դեմո - ի իրենք եւ, ընդհանրապես, ազատ մինչեւ մնացած մեզ է աշխատել ավելի բարդ խնդիրների, ինչպիսիք են գլոբալ taxonomy, համալիր workflows, BDC եւ այլն.

MOSS: Ֆունկցիոնալ Օրինակ - Custom Data Type

Բիզնես Սցենար:

Enterprise - լայն կիրառումը MOSS արտադրական ընկերության հետ 30+ կայքեր եւ մի քանի տասնյակ կորպորատիվ վարչություններ.

Բիզնես Նպատակ:

Չնայած բազմաթիվ բիզնես խմբերի (ԲԱԺԻՆՆԵՐ, տեղերը, եւ այլն:), որոշ տվյալները պետք է պահպանվեն մի գլոբալ մակարդակով. Օրինակ,, հեղինակավոր վարպետ ցանկը բոլոր ֆիզիկական տեղաբաշխման ընկերության (e.g. արտադրական միջոցներ, պահեստային տեղերը, վաճառքի գրասենյակները) պետք է պահպանվի նաեւ կենտրոնական վայրում.

Տեխնիկական Problem:

Ձեռնարկությունը taxonomy իրականացվել, օգտագործելով մի քանի կայքի հավաքածուներ. Մենք սիրում է ստեղծել հեղինակավոր ցանկը ֆիզիկական վայրերում մաքսային WSS ցուցակում. Ապա, երբ մենք պետք է ունենանք սյունը մի բովանդակության տեսակի (կամ սյունակ է, որը ցուցակում կամ doc գրադարան) որ պարունակում կորպորատիվ վայրերը, we would create a column using the "lookup" datatype եւ կետն այս վարպետության ցուցակում.

Ցավոք,, lookup datatypes must access a source list "locally" նշանակում է, որ մեր հեղինակավոր ցանկը կարող span Տեղում հավաքածու.

Տեխնիկական Solution:

Իրականացնել նոր գործարկողի տվյալների տեսակն իրականացվում հիման վրա SPField եւ ներկայացված է որպես DropDownList է UI, որի ListItems բնակեցնել այդ վարպետի WSS ցուցակում.

Մենք ստեղծել ենք նոր կայքը հավաքածու կոչված "http://localhost/EnterpriseData". Կան, we created a custom list named "Corporate Locations". This list just uses the standard "Title" դաշտը պարունակում ցուցակը փաստացի կորպորատիվ վայրերում.

One հետեւում է դիսկրետ քայլերի ստեղծել գործարկողի տվյալների մուտքագրել WSS. Նրանք:

  1. Սահմանում դաս, որը ժառանգում են SPField (կարելի ժառանգել է այլ ոլորտներում, եթե անհրաժեշտ է).

Ահա կոդը համար:

հասարակություն դաս XYZZYCorporateLocationField : SPFieldText
{
հասարակություն XYZZYCorporateLocationField
(SPFieldCollection fields, լարային typeName, լարային displayName)
: բազա(fields, typeName, displayName) { }

հասարակություն XYZZYCorporateLocationField
(SPFieldCollection fields, լարային displayName)
: բազա(fields, displayName) { }

հասարակություն ոտնատակ տալ BaseFieldControl FieldRenderingControl
{
ստանալ
{
BaseFieldControl control = նոր XYZZYCorporateLocationFieldControl();
control.FieldName = սա.Ներքին Անունը;
վերադարձ control;
} //ստանալ
} // fieldrenderingcontrol

հասարակություն ոտնատակ տալ լարային GetValidatedString(օբյեկտ արժեք)
{
եթե (սա.Required || value.ToString().Հավասար(Լար.Դատարկ))
{
նետում նոր SPFieldValidationException ("Department is not assigned.");
}
վերադարձ բազա.GetValidatedString(արժեք);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Սահմանել մեկ այլ խավի, որ ժառանգում են բազային դաշտային վերահսկողության, ինչպես:

հասարակություն դաս XYZZYCorporateLocationFieldControl : BaseFieldControl
{
պաշտպանված DropDownList XYZZYCorporateLocationSelector;

պաշտպանված ոտնատակ տալ լարային DefaultTemplateName
{
ստանալ
{
վերադարձ "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

հասարակություն ոտնատակ տալ օբյեկտ Արժեք
{
ստանալ
{
EnsureChildControls();
վերադարձ սա.XYZZYCorporateLocationSelector.SelectedValue;
} // ստանալ
սահմանել
{
EnsureChildControls();
սա.XYZZYCorporateLocationSelector.SelectedValue = (լարային)սա.ItemFieldValue;
} // սահմանել
} // override object Value

պաշտպանված ոտնատակ տալ անվավեր 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"];

ԲՀԿ (Թքել XYZZYCorporateLocation մեջ currentList.Items)
{
եթե (XYZZYCorporateLocation["Title"] == զրո) շարունակել;

լարային theTitle;
theTitle = XYZZYCorporateLocation["Title"].ToString();

սա.XYZZYCorporateLocationSelector.Items.Add
(նոր ListItem(theTitle, theTitle));

} // ԲՀԿ

} // 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. Իրականացնել Կառավարման ձեւանմուշ (.ascx) ինչպես ցուցադրված է:

<%@ Վերահսկել Լեզու="C#" Ժառանգում="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Version = 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. Վերջապես, մենք ստեղծել XML ֆայլ է փրկել են ..... 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 պահանջ համարները պետք է լինի ավանդական հաջորդականությունը ի թիվ արժեքները եւ հաշվարկվում է ավտոմատ կերպով.

Բիզնես Solution: Ստեղծել գործարկողի MOSS ցանկը պարունակող երկու սյունակների: "ControlField" and "ControlValue". Արժեքը սյունակը պարունակում է հաջորդ գնման պահանջ համարը. Note that the generic "control" անվանելու Կոնվենցիայի հետագա կառավարման ոլորտներում, որը կարող է օգտագործվել որպես անհրաժեշտ.

Տեխնիկական Solution: Ստեղծել վեբ ծառայություն մուտք գործել կողմից InfoPath հաճախորդի. Վեբ ծառայությունը վերադարձնում հետ հերթական գնման պահանջ համարը եւ թարմացումներ արժեքը ցուցակի.

Քաղված դասերը:

  • Երբ որ այս վեբ ծառայություն, որպես տվյալների աղբյուր է InfoPath ձեւով, Ես գտա, որ անհրաժեշտ է փոխարկել այն UDC եւ պահպանել այն տվյալների կապի գրադարան.
  • Ես էլ գտա, որ անհրաժեշտ է հնարավորություն տալ խաչ դոմենի Scripting միջոցով կենտրոնական ծառայությունների կառավարման // դիմումը կառավարում // Ձեւ սերվերի կոնֆիգուրացիայի.
  • Առաջին անգամ ձեւը փորձեց օգտվել ինտերնետային ծառայություններից, Այն տեւում է մի քիչ, իսկ կապակցությամբ, դա Ժամանակը ավարտվեց. Ես fiddled պարամետրերով ձեւի սերվերի կոնֆիգուրացիայի ընդլայնել timeout պարամետրերը, եւ որ կարծես օգնել.

Կոդը:

օգտագործելով Համակարգ;
օգտագործելով 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.
/// </ամփոփում>
/// <վերադառնում></վերադառնում>
[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];

ԲՀԿ (Թքել controlItem մեջ currentList.Items)
{

եթե (((լարային)controlItem["ControlField"]).Հավասար("NextPoNumber"))
{
nextPoReqNumber = (լարային)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Փոխակերպել.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;

}
}