SharePoint 4 Developers

Guia de referência adicional em desenvolvimento .NET / SharePoint

Lição 1 - Core SharePoint Features – Parte II

Esse post é a continuação da lição Core SharePoint Features, onde veremos definições, tipos e exemplo de criação de Listas.

Tudo bem pessoal?

Esse post é a continuação da lição Core SharePoint Features, onde veremos definições, tipos e exemplo de criação de Listas.

O entendimento desse objeto é essencial para a compreensão de como o WSS e MOSS armazenam dados e os disponibilizam aos usuários.

Listas e Libraries (Bibliotecas)

São tabelas de dados, parecidas com as tabelas de um banco de dados. Porém não podemos comparar uma lista do Sharepoint a uma simples tabela de banco de dados, cuja função é de armazenar registros.

Uma lista é uma mini-aplicação dentro do Sharepoint, criada a partir de templates de listas que suportam recursos como workflows, content types*, versionamento e permissões.

Nas tabelas 1 e 2 podemos ver quais são as listas disponibilizadas pelo WSS e MOSS respectivamente.

Lista

Utilização

Announcements

Divulgar novidades, status ou outras informações.

Contacts

Armazenar dados de contato (telefone, e-mail). Contatos podem ser compartilhados com o Outlook.

Discussion Board

Criação de itens de discussão entre membros do time.

Custom List

Criação de uma nova lista com colunas básicas e standard view.

Custom List in Datasheet view

Criação de uma nova lista com colunas básicas e datasheet view.

Import Spreadsheet

Criação de uma nova lista com colunas e dados de uma planilha. Inclui datasheet view.

Links

Lista páginas web e outros recursos relacionados a uma tarefa (task) ou projeto.

Calendar

Lista eventos, marcos e deadlines que podem ser exibidos graficamente como uma página de calendário. Calendários podem ser compartilhados com o Outlook.

Tasks

Exibe tarefas (work items).

Project Tasks

Exibe tarefas de projeto (work items) que podem ser exibidos graficamente em formato de Gantt Chart.

Issue Tracking

Relaciona problemas a pessoas e mantém progresso da solução.

Survey

Apura votos de uma série de questões e exibe os resultados graficamente.

Tabela 1 – Templates de listas disponibilizados pelo WSS

Lista

Utilização

Languages and Translators

Adiciona Línguas e traduções pela utilização do workflow chamado Translation Management.

KPI List

Exibe progresso de uma série de objetivos graficamente.

Tabela 2 – Templates de listas adicionais do MOSS

Libraries (Bibliotecas) são tipos especiais de listas, cuja principal diferença de uma lista é a sua utilização para armazenamento de arquivos.

Nas tabelas 3 e 4 podemos ver quais são as libraries disponibilizadas pelo WSS e MOSS respectivamente.

Lista

Utilização

Document Library

Armazena e compartilha documentos Office e outros arquivos.

Form Library

Publicação de formulários InfoPath.

Wiki Page Library

Compartilhar páginas web que podem ser editadas por múltiplos autores.

Picture Library

Armazena e compartilha arquivos de imagens.

Basic Page

Armazena páginas web no formato HTML.

Web Part Page

Armazena web parts.

Tabela 3 – Templates de libraries disponibilizados pelo WSS

Lista

Utilização

Translation Management Library

Criação de documentos em múltiplas Línguas e gerencia sua tradução.

Report Library

Publicação de relatórios utilizando planilhas Excel.

Data Connection Library

Publicação de Office Data Connection (ODC) e arquivos Universal Data Connection (UDC).

Slide Library

Publicação de apresentações PowerPoint 2007.

Tabela 4 – Templates de libraries adicionais pelo MOSS

Dentre todos os tipos de listas e libraries mostradas nas tabelas acima, criaremos uma library que, além de possuir todas as características de uma lista, também oferece o recurso para armazenamento de arquivos.

Vejamos a criação de uma library utilizando o template Document Library, que por sinal é o mesmo utilizado na criação padrão da library Shared Documents (Fig. 1).

OBS: Nos próximos posts da lição 1 esse mesmo exemplo será utilizado nas explicações.

Para visualizarmos algumas libraries disponibilizadas no site, clique em View All Site Content (Fig. 1).

419BF2880E221BB9_217_0[1]
Figura 1 – Página principal

Na Fig. 2 algumas listas e libraries são exibidas agrupadas em categorias, já estando disponíveis no site por padrão quando da criação de um novo site.

419BF2880E221BB9_217_1[1]
Figura 2 – Conteúdo do Site

Clique em Create. Iremos criar uma lista com base em um template de library do tipo Document Library.

419BF2880E221BB9_217_2[1]
Figura 3 – Criação de Library

O nome de nossa library é bem sugestivo e nos diz um pouco a respeito de como utilizar listas para armazenamento de documentos. Nossa lista se chamará VIDocs, conforme exibido na Fig. 4, que significa Very Important Documents. É dessa forma que devemos utilizar libraries, armazenando apenas documentos importantes.
Algumas empresas insistem em transformar o Sharepoint como um repositório de arquivos, porém não enxergam algumas limitações no crescimento de listas e de problemas de performance que podem ocorrer.

Atenção: Esse é um assunto polêmico que nos renderá um outro post em breve. Minha recomendação é de armazenar apenas documentos importantes, a não ser que você saiba exatamente o que está fazendo.

419BF2880E221BB9_217_3[1]
Figura 4 – Detalhes da criação da Library

Clique em New ou faça o upload de alguns documentos na nova library para ver como é bem simples armazenar arquivos.

Faça o upload preferencialmente de tipos de arquivos diferentes tais como documentos Word, texto, PDF, Excel, etc.

Se você possui o Office 2003 Pro ou o Office 2007 instalado, você conseguirá utilizar a feature Upload Multiple Documents.

419BF2880E221BB9_217_4[1]
Figura 5 – Upload de documentos

OBS: Existem outras formas de realizar upload em massa de arquivos, que não serão demonstradas nesse post. Se você tiver interesse em saber mais sobre isso de imediato, por favor me contate, do contrário disponibilizarei um post da categoria Dicas e Truques para esse fim.

A lição 1 continua no próximo post, com explicações de colunas e views.

----------------------------------------------------------------------------------------------------------
content types* - Coleção de configurações de conteúdo. (Veremos mais adiante)
----------------------------------------------------------------------------------------------------------

Referências:

http://msdn.microsoft.com/en-us/library/dd490727.aspx
Livro: Essential SharePoint 2007 (Addison Wesley Series)
Livro: Essential SharePoint 2007, Second Edition (O'Reilly, 2007)

[]’s

Marcel Medina

Clique aqui para ler o mesmo conteúdo em Inglês.

Macro SharePointDebugger

Essa macro facilitará (e muito) sua vida debugando os serviços W3wp e OWSTIMER, que o SharePoint utiliza.

Tudo bem pessoal?

Estou inaugurando uma nova seção chamada “Dicas e Truques”, cujo objetivo principal é compartilhar dicas e experiências (macetes).

Nesse post disponibilizarei uma macro que facilitará (e muito) sua vida debugando os serviços W3wp e OWSTIMER, que o SharePoint utiliza. Se você não sabe o que são e para que servem tais serviços, dê uma olhada abaixo:

  • OWSTimer – SharePoint Timer Service é um Windows service que é instalado com o Windows SharePoint Services (WSS). É utilizado para lidar com os jobs agendados relacionados ao WSS. Pensou em Custom Timer Jobs, esse é o serviço a ser debugado.

  • W3wp – Trata-se de um work process associado ao application pool do IIS. Se você possui mais de um application pool, mais de uma instância do w3wp.exe é executada. É um processo que geralmente aloca bastante memória. Pensou em qualquer customização para o SharePoint, esse é o serviço a ser debugado.

Em poucas palavras, uma macro é uma coleção de comandos, cujo objetivo é a automação de ações repetitivas dentro uma IDE. Ex: Excel, Visual Studio.

Que ação repetitiva você se refere?

Para debugar qualquer customização para o SharePoint, você precisa utilizar o conhecido anexador de processos (attacher) do Visual Studio, encontrado em: Debug > Attach to Process, conforme Fig. 1 e 2. E, além disso, é necessário selecionar os serviços desejados. Fazer isso uma vez não é nenhum problema, mas é muito chato quando você precisa repetir isso várias vezes. Sem falar dos erros de attach que aparecem de vez em quando.

419BF2880E221BB9_204_0[1]
Fig. 1 – Anexar processo

419BF2880E221BB9_204_1[1]
Fig.2 – Anexar processo manualmente

Qual seria a solução para esse caso?

Você pode criar suas próprias macros no Visual Studio para facilitar o seu dia-a-dia com desenvolvimento. O código abaixo é apenas um exemplo de macro, específico para anexar processos utilizados pelo SharePoint com o objetivo de debug:

Code Snippet
  1. Imports System
  2. Imports EnvDTE
  3. Imports EnvDTE80
  4. Imports System.Diagnostics
  5.  
  6. Public Module SharePointDebugger
  7.  
  8.     Function AttachToProcess(ByVal processName As String) As Boolean
  9.         Dim proc As EnvDTE.Process
  10.         Dim attached As Boolean
  11.         For Each proc In DTE.Debugger.LocalProcesses
  12.             If (Right(proc.Name, Len(processName)) = processName) Then
  13.                 proc.Attach()
  14.                 attached = True
  15.             End If
  16.         Next
  17.  
  18.         Return attached
  19.     End Function
  20.  
  21.     Sub AttachDebuggerToWssTimerService()
  22.         Dim processToAttachTo As String = "OWSTIMER.EXE"
  23.  
  24.         If Not AttachToProcess(processToAttachTo) Then
  25.             MsgBox(processToAttachTo & " is not running")
  26.         End If
  27.     End Sub
  28.  
  29.     Sub AttachDebuggerToIIS()
  30.         Dim processToAttachTo As String = "w3wp.exe"
  31.  
  32.         If Not AttachToProcess(processToAttachTo) Then
  33.             MsgBox(processToAttachTo & " is not running")
  34.         End If
  35.     End Sub
  36.  
  37. End Module

Download do código

Agora você só precisa adicionar esse código ao Visual Studio. Para fazer isso acesse a aba Macro Explorer (ALT+F8):

419BF2880E221BB9_204_2[1]
Fig. 3 – Habilitar visualização do Macro Explorer

Antes de tudo, se você fez o download do código Sharepoint.vb, pode inserir o código diretamente em MyMacros pela IDE de macros (Macros IDE):

419BF2880E221BB9_204_3[1]
Fig. 4 – Ativar Macro IDE pelo Macro Explorer

419BF2880E221BB9_204_4[1]
Fig. 5 – Adicionar código existente

Se não fez o download, insira o código manualmente. Na raiz MyMacros adicione um novo módulo chamado SharepointDebugger:

419BF2880E221BB9_204_5[1]
Fig. 6 – Adicionar novo módulo

Uma vez que o módulo foi adicionado, é necessário editá-lo:

419BF2880E221BB9_204_6[1]
Fig. 7 – Editar módulo

Bastando colar o código na região comentada (apenas as Subs e Function) e salvar:

419BF2880E221BB9_204_7[1]
Fig. 8 – Colar código

Feito isso, sua macro já está pronta para ser executada:

419BF2880E221BB9_204_8[1]
Fig. 9 – Visualizar macros

Mas antes crie um atalho para chamar as rotinas criadas. Você não vai querer executar as macros com cliques de mouse, certo? Usaremos atalhos de teclado. Para isso devemos criar um mapeamento do teclado em Tools > Options > Environment > Keyboard.

Em show commands digite o nome do módulo SharepointDebugger. Você irá perceber que a lista de macros será filtrada automaticamente:

419BF2880E221BB9_204_9[1]
Fig. 10 – Selecionar macros

Você pode criar seus próprios atalhos de teclado conforme desejar, clicando no campo “Press shortcut keys” e selecionado as teclas desejadas.

Para esse exemplo utilize Ctrl + Shift + P, A. Isso significa que você deve apertar juntos Ctrl+Shift+P, soltá-los e apertar A (de Attach). Por fim, clique em Assign:

419BF2880E221BB9_204_10[1]
Fig. 11 – Adicionar atalhos

Repare que esse atalho só foi criado para a rotina AttachDebuggerToIIS. Você deve criar um outro atalho para a outra rotina AttachDebuggerToWssTimerService.

Para parar o debug, ou você clica no botão Stop na aba de controles do Visual Studio, ou você cria outro mapeamento para tal. Para isso procure pela macro detachall:

419BF2880E221BB9_204_11[1]
Fig. 12 – Adicionar atalho para DetachAll

Para esse exemplo utilize Ctrl + Shift + P, D (de detach).

Essas macros tem me ajudado bastante no debug de aplicações para o SharePoint e espero que também venha a te ajudar.

Referências para criação deste post:
http://msdn.microsoft.com/pt-br/library/b4c73967.aspx
http://office.microsoft.com/pt-br/help/HA100072101046.aspx
http://www.andrewconnell.com/blog/archive/2007/01/25/5855.aspx

[]’s

Marcel Medina

Clique aqui para ler o mesmo conteúdo em Inglês.

Lição 1 - Core SharePoint Features – Parte I

Essa série irá abordar um conteúdo focado para o desenvolvedor de soluções em Sharepoint (WSS 3.0/ MOSS 2007). Nela serão apresentados os recursos essenciais que todos precisam entender. São eles: Site collections e sites, listas, colunas, views e web parts.

Pessoal, tudo bem?

Como falado no post anterior, nesse post iniciaremos a série “Lições de SharePoint”. Essa série irá abordar um conteúdo focado para o desenvolvedor de soluções em SharePoint (WSS 3.0/ MOSS 2007).

Alguns podem estar se perguntando, de quantas lições essa série é composta? Posso afirmar de mais de 10 lições... Tem bastante conteúdo para ser apresentado.

Essa lição inicial chama-se Core SharePoint Features. Nela serão apresentados os recursos essenciais que todos precisam entender. São eles: Site collections e sites, listas, colunas, views e web parts.

Iniciaremos nesse momento com essa lição, pois as demais possuem dependência dessa. Se após a leitura do post você tiver alguma dúvida, peço para que deixe seu comentário. Assim podemos compartilhar mais informações a respeito desse assunto.

Bem, vamos ao que interessa.

Site Collections e Sites

Os sites são organizados de forma hierárquica dentro do WSS e MOSS, da mesma forma que um sistema de arquivos. Porém, ao invés de unidades, pastas e subpastas, temos web applications, site collections e sites.

A figura abaixo mostra a estrutura básica de como os sites são organizados:

419BF2880E221BB9_173_0

Fig. 1 – Estrutura hierárquica de sites

Esta estrutura se inicia com os servidores de um farm (coleção de um ou mais SharePoint servers) e vai até os subsites.

Os Site Collections atuam como containers de sites, sendo que este contém um site em seu root (raiz), conforme podemos ver na Fig. 1. Onde /sites/RH é seu top-level site.

Dica: se a sua empresa possui vários departamentos, crie para cada departamento um site collection. Dessa forma todos os sites criados abaixo do respectivo site collection desfrutarão de um mesmo contexto de segurança (permissões administrativas), ou seja, dentro desse contexto de segurança cada departamento poderá gerenciar seus respectivos sites.

Para complementar essa dica, na Fig. 2 podemos ver Managed Paths padrões na criação de site collections: sites e (root)

419BF2880E221BB9_173_1

Fig. 2 – Exemplo de Managed Paths

Obs: Você pode criar seus próprios Managed Paths no momento de criar um site collection. Na Fig. 3 é exibida a tela de criação de Site Collections.

419BF2880E221BB9_173_2

Fig. 3 – Tela de criação de Site Collections

Atentar para os tipos de Managed Paths: Wildcard e Explicit inclusion.

A principal diferença entre esses tipos é de que um Explicit inclusion só pode ser utilizado para adicionar o site collection especificado em seu path, conforme Fig. 4.

Enquanto que o Wildcard pode ser utilizado várias vezes para adicionar site collections subordinados ao path, conforme Fig. 5.

419BF2880E221BB9_173_3

Fig 4. Explicit inclusion

419BF2880E221BB9_173_4

Fig 5. Wildcard inclusion

Figuras falam mais do que palavras, conseguem ver a diferença?

Voltando ao assunto, para aqueles que gostam de ver para crer, estou anexando um link de código para recuperar Site Collections e Sites:

http://msdn.microsoft.com/en-us/library/ms462161.aspx

Tem vários exemplos para testar dentro do ambiente do SharePoint apenas. Caso queira testá-los em um Console Application, siga por esse exemplo:

http://msdn.microsoft.com/en-us/library/ms438026.aspx

Lembrando: No que diz respeito à API de desenvolvimento, SPSite representa um site collection e SPWeb representa um site.

Outra opção para verificar sites collections está disponível na aba de Application Management, conforme Fig. 6.

419BF2880E221BB9_173_5

Fig. 6 – Application Management contém lista de site collections

Bem, vimos nesse post definições sobre sites e sites collections, alguns conceitos básicos para entendimento de como estruturar seu site.

Essa lição não terminou, na próxima parte continuarei falando sobre listas, colunas, views e web parts.

[]’s

Marcel Medina

Clique aqui para ler o mesmo conteúdo em Inglês.