Kateqoriya Arxivləri: SharePoint

Sirli SharePoint səhvlər giderme.

Baxış:

Windows SharePoint Services üçün xüsusi funksionallığı inkişaf zamanı Düzgü çətindir 3.0 (WSS) və ya 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.

Mən başqa sirli səhvlər həll böyük uğurlar bu texnika istifadə.

Yanaşma:

SharePoint olan bir günlük faylı bir Tanı günlük informasiya çox qənaət 12 arı şanı.

The "12 hive" is usually located at "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12". (Bu mümkün varsa emin değilim 12 yerdə daha yaşamaq kovanı, faktiki olaraq).

Bu fikir cari log faylı tapmaq üçün, 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.
  • Seçin və MS Excel daxil qəşəng yapışdırıb.

Xoşladığım metodu:

  1. Bu gösteren bir Windows Explorer açın 12 Hive qeydlərə.
  2. Redaktə tarixi ilə göstərmək baxımından Sırala (ilk ən son).
  3. En son günlük faylı seçin.
  4. Bir web browser pəncərəsində, səhv baş baş məcbur.
  5. Tez cari günlük faylını açmaq və MS Excel üçün içeriğini kopyalayın.
  6. Başa get və müvafiq entries təhlil.

Digər qeydlər:

Mənim cari, tanı Login yerləşir 12 Hive qeydlər kataloqu.

MS ən yaxşı təcrübələr (Mike T uyğun olaraq. 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, bu halda siz açıq-aydın-u mənim əvəzinə orada günlük faylını tapmaq lazımdır ediyorum 12 Hive yer).

Bu giriş kimi məsələlərə ünvanlanmışdır:

  • SharePoint iş bir daxili hata nedeniyle başlatılamadı.
  • (daha artıq əlavə ediləcək)
  • Bu giriş iş səhvlər faydalı diaqnostikası olunub (e.g. "The workflow failed to start due to an internal error").

MOSS: Təşkilatın səmərəli tətbiqi

(this entry cross posted between http://paulgalvin.spaces.live.com/blog/http://blogs.conchango.com)

Bu saytda ilanları öz və mütləq Conchango mövqelərini təmsil etmir, strategiyaları və ya fikir.

Baxış:

Bu giriş-də böyük bəzi məlumatlar təsvir (3,000 istifadəçilər) 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, we are approximately 50% complete with the first phase of the project. As things progress, I’ll update this entry and/or write new entries.

In this specific case, 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. Siz təsəvvür edə bilərsiniz, this was not the best rollout strategy (which the client readily admits) and when MOSS arrived on the scene, the client resolved to "do it right" and hired us to help them.

One of the central questions facing us when we started implementing this project was: How do we introduce MOSS to this client? Given that the client already had experience with SharePoint, we wondered — do we need to do "differential" training or do we start from the ground up? 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, document management, axtarış, security, audience targeting, project management, "fabulous forty" şablonları, iş, business data connector, və s.. Couple this with the fact that it’s a large organization that can truly make use of virtually every major MOSS feature and you have the makings of a great project with an enterprise reach and many good things happening.

We’re confronted with this issue time and time again … MOSS has an enterprise reach with its enterprise feature-set, yet even somewhat sophisticated clients have a hard time mentally absorbing those features, let alone incorporating an appreciable fraction of them into their daily routine.

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.

Scope:

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" is bad. Faktiki olaraq, the "less" that we decided for the initial rollout was miles ahead of where they were before we started. Bizim halda, the "less" turned into:

  • Simple document management using document libraries, version control and content types.
  • Effective search based on content types and customized advance search (via managed properties, XSLT to produce pretty results, və s.).

In addition to the above enterprise-wide features (meaning that they were to be rolled out to all departments and users), we added the following singleton in-scope mini-projects:

  • Proof of concept BDC integration.
  • Multi-step and multi-branch workflow process created via SPD.
  • Complex InfoPath form.
  • Surfacing KPI’s for some business process (probably HR talent acquisition in our case, though that may change).

The scope here is not 100% accurate but representative of our approach and sufficient for my purpose here, which is to explain what I consider to be an "effective" introduction of MOSS that will set the client firmly down the golden path to full MOSS adoption.

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. Lakin, they will be "out there" and one hopes that other business units will know of or learn about them and want those features for themselves, leading to greater adoption. These singleton success stories also serve to provide our sales team "ammunition" for successfully winning second, third and n-phase projects.

What Did We Introduce and Why?

Having settled on document management and search as a baseline enterprise-wide requirement, we needed to start gathering details. As a practical matter, this revolved around understanding their documents and that ultimately mapped to understanding content types.

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, it has columns and columns are defined in terms of data types, but CT data types include more than simple integer/date, but also "choice" and "lookup" and the like." We can talk about "extending" məzmun növləri, 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. İ.E., nearly everyone that matters in a MOSS rollout.

Using a white board is iffy. I’ve presented the idea of a content type and drawn brilliant (or so they seem) pictures of content types and what they do for you in terms of search and how they can be expanded, və s.. Sonda, it does feel like some light bulbs have turned on, but the resulting white board picture is a mess.

This led us to our current and so far most effective landing place: a MOSS sandbox site configured to show these features.

Using the sandbox site, we demonstrate:

  • Content types:
    • Creating a CT with multiple data types (text, tarix, choice, boolean, lookup, və s.).
    • Extending a CT by creating a new CT based on a parent.
    • Searching for documents using CT metadata.
  • Document kitabxana:
    • Associating a single CT with a library.
    • What happens when we upload a document to that library?
    • Associating multiple CT’s with a doc library.
    • What happens when we upload a document to that library?
    • Filtering and sorting via column headings in a doc lib.
    • Document library views:
      • Sorting
      • Grouping
      • "Quick entry" (data sheet view)
      • "Untagged data" (to assist with migration to MOSS from other content sources; more on this below).

The Sandbox Site:

We designed our sandbox site to be a permanent feature in the development environment to be used for training purposes long after we finish the project and included several artifacts as described:

Məzmun növləri:

We defined the following content types: Invoice, Purchase Order, Services Invoice.

We selected Invoice and Purchase order because they are more or less universally under
stood entities. Everyone in business understands that an invoice is a demand for payment to a customer for an amount issued on a certain tarix to be paid as per some payment terms. This leads to a natural definition of a CT which we called "Training Invoice" (to distinguish it from any other kind of 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 and added just one column, "services rendered".

With the above, we can now demonstrate some key features of CT’s without getting bogged down trying to explain an abstract concept first; everyone already understands what we mean by "invoice" and "purchase order" and are instead able to focus on mechanics of the CT itself.

Custom Lists:

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.

Document kitabxana:

We created two document libraries: "Invoices" and "Mixed Documents".

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

We configured the "Mixed Documents" library to manage all three CT’s.

Create several views that show sorting, filtering, data sheet and grouping.

Axtar:

We defined two new managed properties and mapped them to Invoice Number and Customer.

We created a new customized advance search site and modified it to enable users to search for "invoices" using those two mapped properties.

Modify the XSLT so that the invoice and customer number, when present, appear in an HTML table in a bright color. The objective here is to demonstrate that such formatting is possible.

Putting it all together:

We arrange for key users to participate in a demo.

We follow this simple script:

  1. Describe the meaning and purpose of a CT, using invoices and purchase orders as examples.
  2. Show the invoice CT definition while simultaneously assuring them that they don’t need to use those screens themselves, just pick up the concepts.
  3. Go to the invoices document library.
  4. Upload a document.
  5. Demonstrate that the customer drop-down is really sourced from a custom list.
  6. Add a new customer to the customer list and then update the recently uploaded invoice’s meta data with the newly created customer.
  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. Demonstrate column-level filtering.
  10. Show different views that demonstrate multi-level sorting, filtering and grouping.
  11. Show the data sheet view.
  12. Explain the purpose of a "untagged documents" keçirmək.
  13. Switch to the customized advanced search.
  14. Artıq, the recently uploaded document should have been crawled and indexed, so perform a search that demonstrates ability to locate that invoice via the mapped property.
  15. We demonstrate the difference between searching via mapped properties vs. just a text search.

Bu noktada, we are more or less done with the demo. It seems to take about 30 üçün 45 dəqiqə, depending on how many questions people ask.

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, both at a high level (just name and business purpose) 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.

In Summary:

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 / examples themselves.

Business users walk away from theses sessions with "homework" in the form of excel documents which they are now competent to fill out and use for designing their own first-cut content types.

Nəhayət, as we perform demos over time, the client’s team members themselves become more able to carry forward, do the demo’s themselves and generally free up the rest of us up to work on more complex issues, such as global taxonomy, complex workflows, BDC and the like.

MOSS: Funksional Example - Xüsusi Veri Tipi

Biznes Ssenari:

Istehsal şirkəti üçün mamır Enterprise-geniş həyata keçirilməsi ilə 30+ sites və bir neçə çox korporativ şöbələri.

Biznes məqsədi:

Biznes qruplarının bir çox baxmayaraq (şöbələri, locations, və s.), müəyyən məlumatların qlobal səviyyədə təmin olunmalıdır. Məsələn, şirkətin bütün fiziki yeri nüfuzlu master siyahısı (e.g. istehsal, anbar locations, satış ofisləri) bir mərkəzi yer saxlamalıdır.

Texniki Problem:

Müəssisə taksonomisi birdən çox site kolleksiyalar istifadə edərək həyata keçirilib. Biz xüsusi WSS siyahısına fiziki locations nüfuzlu siyahısını yaratmaq üçün xoşuma gəldi olardı. Sonra, biz bir içerik növü bir sütun üçün lazım zaman (və ya bir sütun siyahısı və ya doc kitabxana əlavə) ki, olan korporativ locations, we would create a column using the "lookup" Bu master siyahısına datatype və point.

Təəssüf ki,, lookup datatypes must access a source list "locally" bizim nüfuzlu siyahısı site kolleksiyaları əhatə edə bilməz, yəni.

Texniki Həll:

SPField əsaslanır və onun ListItems master WSS siyahıdan yaşayır UI bir DropDownList kimi təmsil həyata yeni bir xüsusi data type həyata keçirilməsi.

Biz adlı yeni bir site kolleksiyası yaradılmış "http://localhost/EnterpriseData". Orada, we created a custom list named "Corporate Locations". This list just uses the standard "Title" faktiki korporativ yerlərin siyahısı domain.

Bir WSS xüsusi bir veri növü yaratmaq üçün bir neçə diskret addımlar aşağıdakı. Onlar:

  1. SPField olan vərəsəlik bir sinif müəyyən (əgər tələb olunarsa başqa bir yataqlarından varis ola bilər).

Burada üçün kod:

ictimai sinfi XYZZYCorporateLocationField : SPFieldText
{
ictimai XYZZYCorporateLocationField
(SPFieldCollection sahələri, sim typeName, sim displayName)
: baza(sahələri, typeName, displayName) { }

ictimai XYZZYCorporateLocationField
(SPFieldCollection sahələri, sim displayName)
: baza(sahələri, displayName) { }

ictimai alıqlamaq BaseFieldControl FieldRenderingControl
{
almaq
{
BaseFieldControl control = yeni XYZZYCorporateLocationFieldControl();
control.FieldName = bu.InternalName;
qayıtmaq control;
} //almaq
} // fieldrenderingcontrol

ictimai alıqlamaq sim GetValidatedString(obyekt dəyər)
{
əgər (bu.Required || value.ToString().Bərabər(Sim.Boş))
{
atmaq yeni SPFieldValidationException ("Department is not assigned.");
}
qayıtmaq baza.GetValidatedString(dəyər);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Baza sahəsində nəzarət vərəsəlik başqa bir sinif müəyyən, kimi:

ictimai sinfi XYZZYCorporateLocationFieldControl : BaseFieldControl
{
müdafiə DropDownList XYZZYCorporateLocationSelector;

müdafiə alıqlamaq sim DefaultTemplateName
{
almaq
{
qayıtmaq "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

ictimai alıqlamaq obyekt Dəyər
{
almaq
{
EnsureChildControls();
qayıtmaq bu.XYZZYCorporateLocationSelector.SelectedValue;
} // almaq
təyin etmək
{
EnsureChildControls();
bu.XYZZYCorporateLocationSelector.SelectedValue = (sim)bu.ItemFieldValue;
} // təyin etmək
} // override object Value

müdafiə alıqlamaq ləğv CreateChildControls()
{

əgər (bu.Field == null || bu.ControlMode == SPControlMode.Göstərmək)
qayıtmaq;

baza.CreateChildControls();

bu.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer.FindControl("XYZZYCorporateLocationSelector");

əgər (bu.XYZZYCorporateLocationSelector == null)
atmaq yeni Istisna("ERROR: Cannot load .ASCX file!");

əgər (!bu.Page.IsPostBack)
{

istifadə (SPSite site = yeni SPSite("http://localhost / enterprisedata"))
{
istifadə (SPWeb web = site.OpenWeb())
{

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

foreach (Tüpürmək XYZZYCorporateLocation ilə currentList.Items)
{
əgər (XYZZYCorporateLocation["Title"] == null) davam etdirmək;

sim theTitle;
theTitle = XYZZYCorporateLocation["Title"].ToString();

bu.XYZZYCorporateLocationSelector.Items.Add
(yeni ListItem(theTitle, theTitle));

} // foreach

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

} // if not a postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Yuxarıda kodu əsasən yerləşən WSS xüsusi siyahısından dəyərləri ilə DropDownList məskunlaşdırılması üçün məntiq həyata keçirir http://localhost/enterprisedata and named "Corporate Departments".

Mən bir tək. Cs fayl həm də dərsləri müəyyən, bu tərtib və GAC onu qoymaq (tələb olunan güclü, əlbəttə).

  1. Nəzarət şablon həyata keçirilməsi (.ascx) kimi:

<%@ Nəzarət Dil="C#" Vərəsəlik="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Version = 12.0.0.0, Mədəniyyət = neytral,PublicKeyToken = 71e9bce111e9429c" compilationMode="Always" %>
<%
@ Qeydiyyat Tagprefix="wssawc" Adlar fəzası="Microsoft.SharePoint.WebControls" Yığma="Microsoft.SharePoint, Version = 12.0.0.0, Mədəniyyət = neytral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Qeydiyyat Tagprefix="SharePoint" Adlar fəzası="Microsoft.SharePoint.WebControls" Yığma="Microsoft.SharePoint, Version = 12.0.0.0, Mədəniyyət = neytral, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID="XYZZYCorporateLocationFieldControl" runat="server">
<Şablon>
<asp:DropDownList ID="XYZZYCorporateLocationSelector" runat="server" />
</Şablon>
</
SharePoint:RenderingTemplate>

Yuxarıda c daxil qeyd olunur:\Program Files Common Files Microsoft paylaşılan web server uzantıları 12 controltemplates.

  1. Nəhayət, biz ..... 12 XML qovluğuna saxlamaq üçün XML fayl yaratmaq. Bu, bizim xüsusi data type müəyyən CAML və mənim məsələn, bu kimi:

<?xml variant="1.0" encoding="utf-8" ?>
<
FieldTypes>
<
FieldType>
<
Sahə Ad="TypeName">CorporateLocations</Sahə>
<
Sahə Ad="ParentType">Mətn</Sahə>
<
Sahə Ad="TypeDisplayName">Corporate Locations</Sahə>
<
Sahə Ad="TypeShortDescription">All XYZZY Corporate locations including manufacturing or other facilities.</Sahə>
<
Sahə Ad="UserCreatable">TRUE</Sahə>
<
Sahə Ad="ShowInListCreate">TRUE</Sahə>
<
Sahə Ad="ShowInDocumentLibraryCreate">TRUE</Sahə>
<
Sahə Ad="ShowInSurveyCreate">TRUE</Sahə>
<
Sahə Ad="ShowInColumnTemplateCreate">TRUE</Sahə>
<
Sahə Ad="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Version = 1.0.0.0, Mədəniyyət = neytral, PublicKeyToken=b0b19e85410990c4</Sahə>
<
RenderPattern Ad="DisplayPattern">
<
Switch>
<
Expr>
<
Sütun />
</
Expr>

<Hal Dəyər=""/>

<Default>
<
HTML>
<![CDATA[
<span style="color:Red"><b>]]>
</
HTML>

<
Sütun SubColumnNumber="0" HTMLEncode="TRUE"/>

<HTML><![CDATA[</b></aşırım>]]></HTML>

</
Default>
</
Switch>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
This XML file adds the custom data type to the WSS "library" və GAC'd toplaşmaq qarşı bu qədər oyunları.

Yer daxil bütün bu bit hərəkət sonra, server iisreset və bütün gözəl iş başlamaq lazımdır.

MOSS: Xüsusi siyahı dəqiqləşdirilməsi

SDK vasitəsilə xüsusi siyahılarının yenilənməsi çox yaxşı nümunələr var. Burada hələ bir başqa.

Biznes problem: InfoPath form istifadəçi online alınması requisitions daxil imkan verir ki, nəzərdə tutulmuşdur. PO sənədlər ədəd ənənəvi ardıcıllığı based tam dəyərlər və avtomatik olaraq hesablanır olmalıdır.

Business Solution: Iki sütun olan xüsusi MOSS siyahısı yaradın: "ControlField" and "ControlValue". Dəyəri sütun növbəti alınması rekvizisiya sayı ehtiva edir. Note that the generic "control" Konvensiyanın adlandırma ehtiyac kimi istifadə edilə bilər ki, gələcək nəzarət sahələrdə təmin edir.

Texniki Həll: InfoPath müştəri tərəfindən əldə bir internet xidmət yarat. Web service geri növbəti alınması rekvizisiya sayı və yenilikləri siyahı dəyəri qaytarır.

Öyrənilmiş Dərslər:

  • InfoPath forma bir məlumat mənbəyi kimi web service eklerken, Mən bunu zəruri UDC üçün çevirmək və bir veri bağlantısı kitabxana onu saxlamaq tapılmadı.
  • Mən də zəruri mərkəzi xidmətlərin idarəetmə vasitəsilə cross domain scripting imkan tapdı // Application Management // şəklində server konfiqurasiya.
  • Ilk dəfə forma web service daxil olmaq üçün cəhd, bir müddət alır və münasibətilə, o vaxt ki,. Mən zaman aşımı ayarları genişləndirmək formada server konfiqurasiya parametrləri ilə fiddled və kömək görünürdü.

Kod:

istifadə Sistem;
istifadə System.Web;
istifadə System.Web.Services;
istifadə System.Web.Services.Protocols;
istifadə Microsoft.SharePoint;
istifadə System.Configuration;

[Belediyesi Web Services(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
ictimai sinfi PoService : System.Web.Services.Belediyesi Web Services
{
ictimai PoService () {

//Uncomment the following line if using designed components
//InitializeComponent();
}

/// <xülasə>
/// Obtain the next PO number from the sharepoint po number control list.
/// Increment the PO number in that list.
/// </xülasə>
/// <yekunları></yekunları>
[WebMethod]
ictimai sim GetNextPoNumber()
{
sim SpPoControlSiteName; // Name of the actual MOSS site that hosts the PO Control list.
sim SpPoControlListName; // Name of the actual MOSS list containing the Po control.

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

sim nextPoReqNumber = "xyzzy";

istifadə (SPSite site = yeni SPSite(SpPoControlSiteName))
{
istifadə (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpPoControlListName];

foreach (Tüpürmək controlItem ilə currentList.Items)
{

əgər (((sim)controlItem["ControlField"]).Bərabər("NextPoNumber"))
{
nextPoReqNumber = (sim)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Çevirmək.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")

qayıtmaq nextPoReqNumber;

}
}