Home > Artigo, SharePoint Technologies > SharePoint 2010 List Definition e Content Types

SharePoint 2010 List Definition e Content Types


Overview

As tecnologias SharePoint, tanto a versão gratuita, que acompanha as licenças de Windows Server (SharePoint Foundation 2010) como a versão licenciada à parte (Microsoft SharePoint Server 2010), vem ganhando destaque cada vez maior no mercado de Tecnologia da Informação nos últimos anos. Isso, graças a boa adoção da sua versão anterior, o Windows SharePoint Services (WSS) 3.0 e o Microsoft Office SharePoint Server (MOSS) 2007.

Com lançamento recente da nova versão do produto (SharePoint 2010), percebemos, logo de cara, uma forte adoção da nova plataforma. Foram feitas inúmeras melhorias, desde performance até recursos atuais que o mercado exige, inclusive, com grande foco às “Redes Sociais”. Obviamente que direcionado para o lado corporativo.

Este artigo traz uma definição de como podemos utilizar melhor o pontencial que o SharePoint nos proporciona. Vou abordar dois recursos que devem ser utilizados quando estivermos “Arquitetando” e “Planejando” nossas aplicações baseado no SharePoint. São eles: List Definition e Content Types.

Solução

Um Tipo De Conteúdo (Content Type) é uma coleção reutilizável de metadados (colunas) para uma categoria de itens ou documentos em uma biblioteca de documentos ou lista do SharePoint 2010. Tipos De Conteúdo permitem que você gerencie as configurações para uma categoria de informações de uma maneira centralizada e reutilizável.

Pense no seguinte: Você possui uma lista do SharePoint com o nome “Chamados”. Nesta lista, nós temos três tipos de Chamados. Nível I, Nível II e Nível III. Cada um destes tipos possui um conjunto de informações compartilhadas (por exemplo, Descrição do Chamado) e algumas informações específicas de cada tipo (por exemplo, “Assigned To” e/ou Abrir chamado com fabricante?).

Então, podemos criar três Tipos De Conteúdo para esta lista. Onde compartilhamos as informações gerais, e adicionais a cada tipo, a sua definição específica.

Atrelado à isso, iremos criar um List Definition que irá conter estes três Tipos de Conteúdo. Assim, teremos disponível no site, um modelo de lista que já comtempla estes Tipos de Conteúdo.

Vamos ver como isso funciona na prática:

NOTA: No final do documento, estão os screenshots do resultado dos passos que iremos realizar a seguir.

Requisitos:

· Microsoft SharePoint 2010;

· Visual Studio 2010;

· SQL Server 2008;

· Windows 7 (ambiente de testes) ou Windows Server 2008;

Crie um projeto SharePoint List Definition

1. Inicie o Visual Studio 2010, clique em File, aponte para New, e então clique em Project.

2. Na janela de diálogo New Project, na seção Installed Templates, clique em Visual C#, clique em SharePoint e, em seguida, clique em 2010.

3. Clique em List Definition. Na caixa Name, digite Chamados e, em seguida, clique em OK.

clip_image002

4. No SharePoint Customization Wizard, digite o site local que você deseja usar para este exemplo (como http://localhost/). Para o trust level, selecione Deploy as a farm solution e, em seguida, clique em Next.

clip_image004

5. Na tela seguinte, devemos dar o Display Name e selecionar qual Tipo de List Definition o nosso novo List Definition irá herdar suas características. Neste caso, iremos selecionar Custom List, e em seguida, clique em Finish.

clip_image006

NOTA: Deixe marcada a caixa de seleção para adicionar uma instância de uma lista baseada no nosso List Definition ao seu site, assim que a feature for ativada. Ou seja, ao ativar a Feature, será criada uma lista automaticamente no site.

6. No Solution Explorer, expanda ListInstance1 e abra o arquivo Elements.xml.

clip_image007

7. Dentro do elemento do ListInstance mude o Title para Chamados e mude o TemplateType para 10002.

Code Snippet

<?xml version="1.0" encoding="utf-8"?>

<Elements xmlns="http://schemas.microsoft.com/sharepoint/"&gt;

<ListInstance Title="Chamados"

OnQuickLaunch="TRUE"

TemplateType="10002"

Url="Lists/Chamados-ListInstance1"

Description="My List Instance">

</ListInstance>

</Elements>

NOTA: Estas são as configurações da lista (instance) que será criada ao ativar a Feature. Perceba, por exemplo, que já podemos especificar qual será a url de acesso a lista.

8. No Solution Explorer, abra o Elements.xml.

clip_image008

9. Dentro do elemento ListTemplate, mude o Type para 10002 e adicione o atributo DisallowContentTypes="FALSE", como abaixo:

Code Snippet

<!– Do not change the value of the Name attribute below. If it does not match the folder name of the List Definition project item, an error will occur when the project is run. –>

<ListTemplate

Name="ListDefinition1"

Type="10002"

DisallowContentTypes="FALSE"

BaseType="0"

OnQuickLaunch="TRUE"

SecurityBits="11"

Sequence="410"

DisplayName="Chamados – ListDefinition"

Description="My List Definition"

Image="/_layouts/images/itgen.png"/>

10. Insira o seguinte xml no topo do Elements no arquivo Elements.xml. Este XML descreve o Content Type do Item do Chamado que a lista irá armazenar.

Code Snippet

<ContentType

ID="0x010089E3E6DB8C9B4B3FBB980447E313CE99"

Name="Chamado Item Nível I"

Group="Meus Content Types"

Description="Chamado item content type Nível I."

Version="0">

<FieldRefs>

<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" />      <!–Campo padrão do SharePoint (Title)–>

<FieldRef ID="{cb55bba1-81a9-47b6-8e6c-6a7da1d25234}" />

</FieldRefs>

</ContentType>

 

<ContentType

ID="0x010089E3E6DB8C9B4B3FBB980447E313CE98"

Name="Chamado Item Nível II"

Group="Meus Content Types"

Description="Chamado item content type Nível II."

Version="0">

<FieldRefs>

<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" />      <!–Campo padrão do SharePoint (Title)–>

<FieldRef ID="{cb55bba1-81a9-47b6-8e6c-6a7da1d25234}" />

<FieldRef ID="{aa4a82dd-5b32-4507-9874-4e1c7bca3456}" />

</FieldRefs>

</ContentType>

 

<ContentType

D="0x010089E3E6DB8C9B4B3FBB980447E313CE97"

Name="Chamado Item Nível III"

Group="Meus Content Types"

Description="Chamado item content type Nível III."

Version="0">

<FieldRefs>

<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" />      <!–Campo padrão do SharePoint (Title)–>

<FieldRef ID="{cb55bba1-81a9-47b6-8e6c-6a7da1d25234}" />

<FieldRef ID="{aa4a82dd-5b32-4507-9874-4e1c7bca3456}" />

<FieldRef ID="{EAFE7594-266D-4865-9A16-99A4BAAA2171}" />

</FieldRefs>

</ContentType>

11. Agora, insira o seguinte XML acima deste último que acabamos de inserir. Este XML contém os campos (colunas) que o Content usará.

Code Snippet

<Field

Type="Note"

DisplayName="Descrição do Chamado"

Required="FALSE"

NumLines="6"

RichText="FALSE"

Sortable="FALSE"

ID="{cb55bba1-81a9-47b6-8e6c-6a7da1d25234}"

StaticName="ChamadoDescription"

Name="ChamadoDescription"

Group="Minhas Colunas" />

 

<Field

Type="Text"

DisplayName="Atribuído a"

Required="FALSE"

MaxLength="255"

ID="{aa4a82dd-5b32-4507-9874-4e1c7bca3456}"

StaticName="ChamadoAssignedTo"

Name="ChamadoAssignedTo"

Group="Minhas Colunas" />

 

<Field

ID="{EAFE7594-266D-4865-9A16-99A4BAAA2171}"

Name="AbrirChamado"

DisplayName="Abrir chamado com fabricante?"

Type="Choice"

Required="FALSE"

Format="Dropdown"

FillInChoice="FALSE"

Group="Minhas Colunas">

<Default>Sim</Default>

<CHOICES>

<CHOICE>Sim</CHOICE>

<CHOICE>Não</CHOICE>

</CHOICES>

</Field>

12. No Solution Explorer, abra o Schema.xml.

clip_image009

13. Adicione o atributo EnableContentTypes="TRUE" para o elemento da Lista dentro do arquivo Schema.xml.

clip_image011

14. Insira o seguinte XML dentro do elemento ContentTypes no schema.xml. Este XML descreve os tipos de conteúdo que a lista irá armazenar.

Code Snippet

<ContentTypeRef ID="0x010089E3E6DB8C9B4B3FBB980447E313CE99" />

<ContentTypeRef ID="0x010089E3E6DB8C9B4B3FBB980447E313CE98" />

<ContentTypeRef ID="0x010089E3E6DB8C9B4B3FBB980447E313CE97" />

15. Deverá ficar assim, o elemento ContentTypes:

Code Snippet

<ContentTypes>

<ContentTypeRef ID="0x010089E3E6DB8C9B4B3FBB980447E313CE99" />

<ContentTypeRef ID="0x010089E3E6DB8C9B4B3FBB980447E313CE98" />

<ContentTypeRef ID="0x010089E3E6DB8C9B4B3FBB980447E313CE97" />

</ContentTypes>

16. Insira o seguinte XML dentro do elemento Fields. Este XML descreve os campos (colunas) que a lista irá armazenar. Estes campos estão diretamente relacionados aos ContentType que adicionamos anteriormente. O elemento Fields deverá ficar assim:

Code Snippet

<Fields>

Field Type="Note" DisplayName="Descrição do Chamado" Required="FALSE" NumLines="6" RichText="FALSE" Sortable="FALSE" ID="{cb55bba1-81a9-47b6-8e6c-6a7da1d25234}" StaticName="ChamadoDescription" Name="ChamadoDescription" Group="Minhas Colunas" />

<Field Type="Text" DisplayName="Atribuído a" Required="FALSE" MaxLength="255" ID="{aa4a82dd-5b32-4507-9874-4e1c7bca3456}" StaticName="ChamadoAssignedTo" Name="ChamadoAssignedTo" Group="Minhas Colunas" />

<Field Type="Choice" DisplayName="Abrir chamado com fabricante?" Required="FALSE" ID="{EAFE7594-266D-4865-9A16-99A4BAAA2171}" Name="AbrirChamado" Format="Dropdown" FillInChoice="FALSE" Group="Minhas Colunas">

<Default>Sim</Default>

<CHOICES>

<CHOICE>Sim</CHOICE>

<CHOICE>Não</CHOICE>

</CHOICES>

</Field>

</Fields>

clip_image013

17. No menu, cliquem em Build, e em seguida, clique em Deploy Chamados.

clip_image014

ScreenShots

Template da lista:

clip_image016

Tipos de Conteúdo da Lista:

clip_image017

Nível I:

clip_image018

Nível II:

clip_image019

Nível III:

clip_image020

List Settings – Content Types e Columns:

clip_image022

Site Columns

clip_image024

NOTA: Estas colunas ficam disponíveis para que sejam adicionadas a outras listas do site.

Content Types

clip_image026

NOTA: Estes Content Types ficam disponíveis para que sejam adicionados a outras listas do site.

Conclusão

Neste artigo criamos um List Definition que possui três Content Types (que podem ser adicionados a outras listas sem problemas). Com isso, conseguimos planejar e arquitetar melhor nossa implantação de uma aplicação baseado no SharePoint 2010 Server, criando componentes reutilizáveis e padronizados.

Seguindo este modelo conseguimos ainda automatizar processos de Deploy, criando listas padronizadas e vinculadas a features.

Espero que o conteúdo deste artigo tenha sido tão útil para vocês como é pra mim!

Até a próxima! Grande Abraço!

Referências

http://msdn.microsoft.com/en-us/library/ms472236.aspx – Introduction to Content Types
http://msdn.microsoft.com/en-us/library/ms415091.aspx – List Element (List)
http://msdn.microsoft.com/en-us/library/ms460922.aspx – List Definition (Schema.xml) Files
http://msdn.microsoft.com/en-us/library/aa543822.aspx – Content Type IDs
http://msdn.microsoft.com/en-us/library/aa544268.aspx – Content Type Element (Content Type)
http://msdn.microsoft.com/en-us/library/ms463449.aspx – Content Type Definitions

Advertisements
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s

%d bloggers like this: