Codebeispiel: Webpart für Statistiken zu Funktionen und Daten für das soziale Netzwerk

Letzte Änderung: Montag, 22. August 2011

Gilt für: SharePoint Server 2010

Mit dem Webpart für Statistiken zu Funktionen und Daten für das soziale Netzwerk werden Statistiken zu Funktionen und Daten für das soziale Netzwerk angezeigt. Bei diesem Beispiel handelt es sich um ein Microsoft Visual Studio 2010 SharePoint-Visual-Webpartprojekt. Nachdem Sie dieses Projekt erstellt und auf Ihrer Microsoft SharePoint Server 2010-Website bereitgestellt haben, können Sie dieses Webpart jeder Seite hinzufügen, auf der Sie Statistiken für Aktivitäten zu thematischen Kategorien Ihrer Benutzer anzeigen möchten. Mit diesem Webpart werden die folgenden Informationen in drei Tabellen angezeigt:

  • Jede URL, die markiert wurde, und die Laufzeiten, mit denen jede URL markiert wurde.

  • Jede Laufzeit, die in einer thematischen Kategorie verwendet wurde, und wie oft diese Laufzeit verwendet wurde.

  • Jeder Benutzer, der eine thematische Kategorie hinzugefügt hat, und wie oft dieser Benutzer URLs markiert hat.

Installieren Sie dieses Codebeispiel auf Ihrem eigenen Computer, indem Sie das Microsoft SharePoint 2010 Software Development Kit (SDK) herunterladen oder aber das Beispiel von der Code Gallery herunterladen. Wenn Sie das SharePoint 2010 SDK herunterladen, wird das Beispiel im folgenden Speicherort des Dateisystems installiert: C:\Program Files\Microsoft SDKs\SharePoint 2010\Samples\Social Data and User Profiles.

Abrufen und Speichern der Daten mithilfe des Objektmodells

Mit dem Webpart für Statistiken zu Funktionen und Daten für das soziale Netzwerk werden ein UserProfileManager-Objekt und ein SocialTagManager-Objekt mithilfe eines SPServiceContext-Objekts erstellt, das Sie mit einer Website oder Websitesammlung erstellen, die Sie direkt in den Code schreiben.

//Change this value to the root URL for your site.
string socialDataStatsSite = "http://mysite";

using (SPSite siteColl = new SPSite(socialDataStatsSite))
{
//Create SocialTagManager with desired SPServiceContext.
SPServiceContext serviceContext = SPServiceContext.GetContext(siteColl);
UserProfileManager myUserProfileManager = new UserProfileManager(serviceContext);
SocialTagManager mySocialTagManager = new SocialTagManager(serviceContext);

Nur Benutzer, die in der Benutzerprofildienst-Anwendung in der Berechtigungs-Zugriffssteuerungsliste (Access Control List, ACL) aufgeführt sind, können eine Instanz eines UserProfileManager-Objekts erstellen. Zum Hinzufügen eines Benutzers zur Berechtigungs-ACL der Benutzerprofildienst-Anwendung führen Sie die Schritte in folgendem Verfahren aus.

So fügen Sie einen Benutzer zur Berechtigungs-ACL der Benutzerprofildienst-Anwendung hinzu

  1. Wechseln Sie im Browser zur Startseite der SharePoint-Zentraladministration.

  2. Navigieren Sie zur Seite Dienstanwendungen verwalten, die unter der Überschrift Anwendungsverwaltung aufgeführt wird.

  3. Wählen Sie die Option Benutzerprofildienst-Anwendung aus. Klicken Sie auf Berechtigungen.

  4. Fügen Sie in dem Dialogfeld die Benutzerkonten hinzu. Klicken Sie auf OK.

Thematische Kategorien verwenden nur gültige Taxonomielaufzeiten, weshalb das Webpart zunächst einmal alle thematischen Laufzeiten abrufen muss, die im aktuellen Taxonomiespeicher erstellt wurden. Jedes SocialTerm-Objekt enthält die Taxonomielaufzeit des aktuellen Taxonomiespeichers und eine Count-Eigenschaft, die angibt, wie oft diese Laufzeit in einer thematischen Kategorie verwendet wurde.

//Get all social terms and store in an array.
SocialTerm[] socTerms = mySocialTagManager.GetAllTerms();

Im nächsten Schritt werden die Dictionary-Objekte erstellt, in denen alle vom Webpart angezeigten Informationen gespeichert werden.

//Create a Dictionary to store values for tags on social URLs, number of times each social term is used,
//and number of times that each user has tagged a URL.
Dictionary<string, string> SocialUrlStats = new Dictionary<string, string>();
Dictionary<string, long> SocialTermStats = new Dictionary<string, long>();
Dictionary<string, int> SocialTagStats = new Dictionary<string, int>();

Wenn das Webpart alle thematischen Laufzeiten abgerufen hat, die in thematischen Kategorien verwendet wurden, durchläuft es das Array thematischer Laufzeiten, speichert die Anzahl für jede Laufzeit und ruft schließlich alle URLs ab, die mit den verschiedenen Laufzeiten markiert wurden, und speichert sie.

//Get a Taxonomy term for each SocialTerm, get the number of times each social term has been used in a tag,
//and get all the URLs for which that term has been used as a tag. Then map each URL to each of the terms with which
//it has been tagged.
foreach (SocialTerm aTerm in socTerms)
{
  string termName = aTerm.Term.Name;
  SocialTermStats.Add(termName, aTerm.Count);
  try
  {
    SocialUrl[] socURLs = mySocialTagManager.GetAllUrls(aTerm.Term);
    foreach (SocialUrl aUrl in socURLs)
    {
      string urlString = aUrl.Url.ToString();
      if (!SocialUrlStats.ContainsKey(urlString))
      {
        SocialUrlStats.Add(urlString, termName);
      }
      else
      {
        SocialUrlStats[urlString] += ", " + termName;
      }
    }
  }
  catch (UserNotFoundException unfE)
  {
// If the user is not found, handle exception.
  }
}

Das Webpart füllt dann das SocialTagStats-Objekt Dictionary auf, indem alle thematischen Kategorien abgerufen werden, die jeder Benutzer im UserProfileManager erstellt hat. Anschließend wird jede thematische Kategorie dem jeweiligen Besitzer zugeordnet.

//Get all the social tags in which the terms have been used.
List<SocialTag> socialTagsList = new List<SocialTag>();
foreach (UserProfile userProf in myUserProfileManager)
{
  try
  {
    SocialTag[] userTags = mySocialTagManager.GetTags(userProf, 0);
    foreach (SocialTag aTag in userTags)
      {
        socialTagsList.Add(aTag);
      }
  }
  catch (UserNotFoundException unfE )
  {
//If the user is not found, handle exception.
  }
}

//For each SocialTag, get the owner and get the number of times that owner has tagged a URL.
foreach (SocialTag aTag in socialTagsList)
{
  if (aTag != null)
  {
    if (!SocialTagStats.ContainsKey(aTag.Owner.DisplayName))
    {
      int tagCount = mySocialTagManager.GetCount(aTag.Owner);
      SocialTagStats.Add(aTag.Owner.DisplayName, tagCount);
    }
  }
}

Schließlich bindet das Webpart jedes Dictionary-Objekt an ein GridView-Objekt, um die abgerufenen Statistiken zu Funktionen und Daten für das soziale Netzwerk anzuzeigen. Die in der Benutzeroberfläche verwendeten Zeichenfolgen werden in einer Ressourcendatei gespeichert.

//Bind each Dictionary to a GridView control. Display localized header strings for each column.
GridView1.DataSource = SocialUrlStats;
GridView1.Columns[0].HeaderText = Properties.Resources.String1;
GridView1.Columns[1].HeaderText = Properties.Resources.String2;
GridView1.DataBind();
GridView2.DataSource = SocialTermStats;
GridView2.Columns[0].HeaderText = Properties.Resources.String3;
GridView2.Columns[1].HeaderText = Properties.Resources.String4;
GridView2.DataBind();
GridView3.DataSource = SocialTagStats;
GridView3.Columns[0].HeaderText = Properties.Resources.String5;
GridView3.Columns[1].HeaderText = Properties.Resources.String2;
GridView3.DataBind();
}

Erstellen und Ausführen des Beispiels

Die folgenden Schritte illustrieren, wie Sie dieses Projekt auf Ihrer Entwicklungs- oder Testwebsite testen können.

So erstellen Sie das Beispiel

  1. Erstellen Sie den Ordner Microsoft.SDK.Server.Samples, und entzippen Sie die Datei SocialDataStatistics.zip in diesen Ordner.

  2. Starten Sie Visual Studio 2010, und öffnen Sie die Datei SocialDataStatistics.sln, die in dem in Schritt 1 erstellten Ordner gespeichert ist.

  3. Geben Sie im Fenster Eigenschaften den Website-URL-Wert der absoluten Adresse Ihrer Entwicklungs- oder Testwebsite an, wie z. B. http://mysite/. Beachten Sie dabei den schließenden Schrägstrich ("/"). Legen Sie außerdem für diese URL den Wert der Zeichenfolge socialDataStatsSite in der Datei VisualWebPart1UserControl.ascx.cs fest.

  4. Fügen Sie dem Projekt Verweise auf folgende Assemblys hinzu, soweit diese noch nicht vorhanden sind:

    • Microsoft.SharePoint.dll

    • Microsoft.SharePoint.Taxonomy.dll

    • Microsoft.Office.Server.dll

    • Microsoft.Office.Server.UserProfiles.dll

  5. Klicken Sie im Menü Erstellen auf Projektmappe bereitstellen. Nach Abschluss der Erstellung wird das Webpart auf der Entwicklungs- oder Testwebsite installiert .

So führen Sie das Beispiel aus

  • Fügen Sie das neu installierte Webpart einer beliebigen Seite auf Ihrer Website zu. Wählen Sie in der Kategorie Benutzerdefiniert das Webpart VisualWebPartProject1 aus.

    TippTipp

    Wenn von der Seite ein Fehler generiert wird, der besagt, dass das Steuerelement für dieses Webpart nicht gefunden wurde, navigieren Sie zu \Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\CONTROLTEMPLATES, und benennen Sie SocialDataStatisticsWebPart in VisualWebPartProject1 um.

Siehe auch

Konzepte

Erstellen und Verwenden von Daten für soziale Netzwerke mit dem Objektmodell

Weitere Ressourcen

Code Gallery