Metadatos administrados: Modelo de objetos y controles (I)

Mediante el servicio de metadatos podremos asociar a nuestro contenido metadatos con una estructura con sentido para nuestra organización. Además de la poder manejarlos desde la interfaz gráfica, dispondremos de un modelo de objetos para realizar el mantenimiento, consultas y visualizarlo mediante controles.

Modelo de objetos

SharePoint nos proporciona una serie de clases para manejar y navegar por la estructura de metadatos. Para obtener una referencia al conjunto de almacenes de términos definidos para una Colección de Sitios utilizaremos la clase TaxonomySession. Mediante la propiedad TermStores podremos obtener los distintos almacenes de términos del tipo TermStore que representa un almacén de grupos de términos.

Para obtener los grupos de términos utilizaremos la propiedad Groups de la clase TermStore que nos devolverá una colección de elementos del tipo Group.

Para obtener los conjuntos de términos de un grupo utilizaremos la propiedad TermSets.

Para ilustrar un ejemplo:

SPSite site = SPContext.Current.Site;
TaxonomySession session = new TaxonomySession(site);
TermStore termStore = session.TermStores["Servicio de metadatos administrados"]; // Almacén de términos
Group group = termStore.Groups["MiGrupo"]; // Grupo de términos
TermSet productsTermSet = group.TermSets["MiConjunto"]; // Conjunto de términos

Term termino = productsTermSet.Terms[“MiTérmino”]; // Término o palabra

Para manejar una columna de tipo “Metadatos administrados” disponemos de la clase TaxonomyField, con el método GetFieldValue() obtendremos una referencia del tipo TaxonomyFieldValue para manejar los valores almacenados en la columna.

De la clase TaxonomyFieldValue podemos obtener el identificador del término almacenado con la propiedad TermGuid y con la propiedad Label el texto del término.

SPList listaConMetadato = SPContext.Current.Site.RootWeb.Lists["NombreLista"];
SPListItem itemConMetdato = listaConMetadato.Items[0];
TaxonomyFieldValue valordeMetadato = new TaxonomyFieldValue((string)itemConMetdato["NombreColumna"]);
string idTermino = valordeMetadato.TermGuid;
string textoTermino = valordeMetadato.Label;

 

Controles

En la parte visual dispondremos de varios controles como:

  • TaxonomyFieldControl
  • TaxonomyWebTaggingControl

Ambos controles los encontraremos en la dll Microsoft.SharePoint.Taxonomy.dll en el namespace Microsoft.SharePoint.Taxonomy. Para registrar estos controles en una página o control utilizaremos:

<%@ Register Tagprefix="Taxonomy" Namespace="Microsoft.SharePoint.Taxonomy" Assembly="Microsoft.SharePoint.Taxonomy, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

 

El control TaxonomyFieldControl lo utilizaremos para poder asociar un elemento de una lista o biblioteca a un metadato, es el control que utilizará SharePoint al visualizar una columna de tipo “Metadatos administrados”. Por ejemplo las páginas wiki disponen de la opción de catalogar las páginas mediante una columna de tipo “Metadatos administrados” y en el layouts:

<Taxonomy:TaxonomyFieldControl FieldName="Wiki_x0020_Page_x0020_Categories" EmptyValueDescriptionForTargetTemplate="<%$Resources:cms,enterwiki_nocategories_assigned%>" DisableInputFieldLabel="true" runat="server" />

image

 

El control TaxonomyWebTaggingControl  lo utilizaremos para navegar por la estructura de metadatos. Para utilizarlo tendremos que indicarle que subconjunto del árbol de metadatos utilizará, por ejemplo:

taggingTaxonomy.SspId.Add(termStore.Id);
taggingTaxonomy.TermSetId.Add(productsTermSet.Id);
taggingTaxonomy.AllowFillIn = true; // Permite autocompletar
taggingTaxonomy.IsMulti = false; // Indica si permite multiselección

Para leer el metadato seleccionado, disponemos de la propiedad “Text” que devuelve los términos seleccionados con el formato “Término|GUID”. En este caso no podremos utilizar una clase del tipo TaxonomyFieldValue para extraer los valores por separado ya que el formato que devuelve la propiedad TaxonomyWebTaggingControl.Text no es compatible.

Publicado por

Mario Cortés

Mario Cortés Flores es MVP en Office 365, trabaja en Plain Concepts como Team Lead y escribe habitualmente en geeks.ms/blogs/mcortes y en Twitter @mariocortesf. Podréis encontrarlo colaborando activamente con la comunidad de MadPoint y SUGES

2 comentarios sobre “Metadatos administrados: Modelo de objetos y controles (I)”

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *