Compartir a través de


Ejemplo de código: Elemento web de estadísticas de datos de contenido social

Última modificación: lunes, 22 de agosto de 2011

Hace referencia a: SharePoint Server 2010

El elemento web de estadísticas de datos de contenido social muestra las estadísticas de los datos de contenido social. Este ejemplo es un proyecto de elemento web visual de SharePoint de Microsoft Visual Studio 2010. Después de crear e implementar este proyecto en el sitio de Microsoft SharePoint Server 2010, puede agregar este elemento web a cualquier página donde desee mostrar las estadísticas de las actividades de etiquetado temático de los usuarios. El elemento web muestra la información siguiente, en tres tablas:

  • Cada dirección URL que se ha etiquetado y los términos con los que se ha etiquetado cada dirección URL

  • Cada término que se ha usado en una etiqueta temática y el número de veces que se ha usado ese término

  • Cada usuario que ha agregado una etiqueta temática y el número de veces que el usuario ha etiquetado direcciones URL

Instale en este ejemplo de código en su propio equipo mediante la descarga del Kit de desarrollo de software de Microsoft SharePoint 2010 (SDK) o mediante la descarga del ejemplo de la Galería de códigos. Si descarga el SDK de SharePoint 2010, el ejemplo se instala en la siguiente ubicación del sistema de archivos: C:\Program Files\Microsoft SDKs\SharePoint 2010\Samples\Social Data and User Profiles.

Recuperación y almacenamiento de los datos mediante el modelo de objetos

El elemento web de estadísticas de datos de contenido social crea un objeto UserProfileManager y un objeto SocialTagManager mediante el uso de un objeto SPServiceContext creado con un sitio o una colección de sitios que se escribe directamente en el código.

//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);

Solo los usuarios que aparecen en la lista de control de acceso (ACL) de Permisos de la Aplicación de servicio de perfiles de usuario pueden crear una instancia del objeto UserProfileManager. Para agregar un usuario a la ACL de Permisos de la Aplicación de servicio de perfiles de usuario, siga los pasos del siguiente procedimiento.

Para agregar un usuario a la ACL de permisos de la aplicación de servicio de perfiles de usuario

  1. En el explorador, navegue a la página principal de Administración central de SharePoint.

  2. Navegue a la página Administrar aplicaciones de servicio, que aparece bajo el encabezado Administración de aplicaciones.

  3. Seleccione la opción Aplicación de servicio de perfiles de usuario. Haga clic en Permisos.

  4. En el cuadro de diálogo, agregue las cuentas de usuario. Haga clic en Aceptar.

Dado que las etiquetas temáticas solo usan términos de taxonomía válidos, la primera tarea que debe realizar el elemento web es recuperar todos los términos sociales que se crearon en el almacén de taxonomía actual. Cada objeto SocialTerm contiene el término de taxonomía del almacén de taxonomía actual y una propiedad Count que representa el número de veces que se ha usado el término en una etiqueta temática.

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

El siguiente paso consiste en crear objetos Dictionary que almacenan toda la información que muestra el elemento web.

//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>();

Cuando el elemento web ha recuperado todos los términos sociales que se han usado en etiquetas temáticas, este procesa una iteración de la matriz de términos sociales, almacena el recuento de cada término y, a continuación, recupera y almacena todas las direcciones URL que se han etiquetado con cada término.

//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.
  }
}

A continuación, el elemento web rellena el objeto SocialTagStatsDictionary al recuperar todas las etiquetas temáticas que cada usuario de UserProfileManager ha creado. Luego cada etiqueta temática se asigna a su propietario.

//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);
    }
  }
}

Por último, el elemento web enlaza con cada objeto Dictionary a un objeto GridView para mostrar las estadísticas de los datos de contenido social que ha recuperado. Las cadenas usadas en la interfaz de usuario se almacenan en un archivo de recursos.

//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();
}

Desarrollo y ejecución del ejemplo

En los siguientes pasos, se demuestra cómo se puede probar este proyecto en el sitio de prueba o desarrollo.

Para generar el ejemplo

  1. Cree una carpeta llamada Microsoft.SDK.Server.Samples y, a continuación, descomprima el archivo SocialDataStatistics.zip dentro de esta.

  2. Inicie Visual Studio 2010 y, a continuación, abra el archivo SocialDataStatistics.sln que se encuentra en la carpeta que creó en el paso 1.

  3. En la ventana Propiedades, especifique el valor de dirección URL del sitio de la dirección absoluta del sitio de prueba o desarrollo (por ejemplo, http://mysite/. Asegúrese de incluir la barra diagonal de cierre. Además, haga que esta dirección URL sea el valor de la cadena socialDataStatsSite en el archivo VisualWebPart1UserControl.ascx.cs.

  4. Si todavía no están presentes, agregue referencias a los siguientes ensamblados del proyecto:

    • Microsoft.SharePoint.dll

    • Microsoft.SharePoint.Taxonomy.dll

    • Microsoft.Office.Server.dll

    • Microsoft.Office.Server.UserProfiles.dll

  5. En el menú Generar, seleccione Implementar solución. Una vez completada la creación, el elemento web se instala en el sitio de prueba o desarrollo.

Para ejecutar el ejemplo

  • Agregue el elemento web recientemente instalado a cualquier página del sitio. En la categoría Personalizado, seleccione el elemento web VisualWebPartProject1.

    SugerenciaSugerencia

    Si la página genera un error que indica que no se encuentra el control de este elemento web, navegue a \Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\CONTROLTEMPLATES y, a continuación, cambie el nombre SocialDataStatisticsWebPart por VisualWebPartProject1.

Vea también

Conceptos

Creación y uso de datos de contenido social con el modelo de objetos

Otros recursos

Galería de códigos