SharePoint 2010. Crear definición de columnas de Metadata desde código

Como todos sabéis, desde Visual Studio podemos crear listas, tipos de contenido y columnas de sitios, que definan nuestra solución y que nos genere un paquete que permita hacer el despliegue en múltiples granjas. También, con este tipo de soluciones, tendremos un control de versiones, utilizando TFS o similar, de nuestro proyecto.

Entre los tipos de columnas que podemos crear, tenemos las columnas de taxonomía o metadatos administrados, que son aquellas que permiten a los usuarios clasificar la información usando la taxonomía empresarial y sus conjuntos de términos.

La mejor forma de crear la definición de estas columnas, de forma declarativa en Visual Studio, es usar el tipo TaxonomyFieldType o TaxonomyFieldTypeMulti, junto a un Event Receiver, cuando se activa la característica, que localiza el conjunto de términos en el servicio de metadatos administrados y lo asocia a la definición de la columna, resumiendo:

Definimos la columna de sitio

<Field
ID={00000000-0000-0000-0000-000000000000}
Type=TaxonomyFieldType
Name=Organismo
DisplayName=Organismo
ShowField=Term1033
Required=FALSE
Group=Columnas Gestión documental></Field>

Asociamos el conjunto de términos a la columna cuando se activa la característica

SPSite site = properties.Feature.Parent as
SPSite;


Guid fieldId = new
Guid(“{A3AFED68-C20D-4157-81DF-0DCF422853F1}”);


if (site.RootWeb.Fields.Contains(fieldId))

{


TaxonomySession session = new
TaxonomySession(site);

 


if (session.TermStores.Count != 0)

{



var termStore = session.DefaultKeywordsTermStore;


var group = termStore.Groups.GetByName(“Gestion documental”);


var termSet = group.TermSets[“Organismos”];

 


TaxonomyField field = site.RootWeb.Fields[fieldId] as
TaxonomyField;

 


// Connect to MMS

field.SspId = termSet.TermStore.Id;

field.TermSetId = termSet.Id;

field.TargetTemplate = string.Empty;

field.AnchorId = Guid.Empty;

field.Update();

}

}

 

Para asociar el conjunto de términos, tenemos que acceder al almacenamiento de términos (TermStore), mediante una sesión de Taxonomía (TaxonomySession), obtener el grupo que le corresponda y el conjunto de términos que le vamos a asociar. Todo esto agregando la referencia al ensamblado Microsoft.SharePoint.Taxonomy.

 

Saludos a todos…

Deja un comentario

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