Sharepoint.Dev() Just another SharePoint weblog

4Aug/100

WSPBuilder – Explorando o Add-in no Visual Studio

Achei um texto interessante sobre como utilizar o WSPBuilder.
Está bem detalhado e ensina a aproveitar os recursos da ferramenta pra gerar o pacote WSP de forma automatizada...

Vale a pena dar uma lida

WSPBuilder - Walkthrough of the Visual Studio Add-in 

1Aug/100

Recebimento de Emails no SharePoint não dispara o workflow automaticamente

No último projeto que participei tive que configurar uma biblioteca de documentos para receber emails automaticamente e ao mesmo criei um workflow para tomar algumas ações quando o email chegasse. O workflow foi criado pelo SharePoint Designer.
Bom, eis o problema.

Quando o email chegava na bilioteca o workflow não era disparado.

Encontrei a solução nesse KB da Microsoft http://support.microsoft.com/kb/953289/

Executei o comando stsadm -o setproperty -pn declarativeworkflowautostartonemailenabled -pv true e meu problema estava resolvido.

Vale a dica para quem estiver passando por essas dificuldades!!
Abraços!!

27Jul/100

Buscar Informações do AD para Web Parts, sem utilizar SSP

Como já perceberam eu ando bem afastado do blog, faz tempo que não o atualizo e compartilho mais de minhas experiências em projetos... desculpe-me mas estou realmente complicado de tempo e assuntos pessoais a tratar.

Pois bem, mas não esqueci de vocês não e por isso vou deixar aqui uma dica bem interessante sobre como trabalhar com Informações do AD sem utilizar o SSP.

O texto é do meu amigo Marcelo Leite e pode ser lido neste link: Buscar Informações do AD para Web Parts, sem utilizar SSP !!

Abraços!

:)

21Mar/100

Usando LINQ

Olá todos,

Um pequeno post sobre sobre como usar o LINQ para retornar os dados do Sharepoint.

A forma mais comum seria retornar um SPListItemCollection (SPList["lista"].Items) ou utilizando SPQuery para fazer os filtros necessários.

Eu particularmente não gosto muito de utilizar SPQuery pois precisamos criar uma  "grande" string. E ainda fica pouco dinamico a montagem desse filtro. Confesso que já cheguei a criar um método que cria dinamicamente esta query utilizando AND, OR e CONTAINS e ORDENAÇÃO mas deu trabalho pra montar a lógica visando utilizar mais de um parametro. E ainda acabei deixando de usar depois que aprendi o básico de LINQ.

O exemplo abaixo é um começo para se trabalhar como LINQ retornando um List<> (Generic.List) de SPListItems

public List ObterItens(SPList lista)
{
   List itens = (from SPListItem i in lista.Items
                              where i["Coluna"].ToString() == "texto para comparação"
                               orderby i.Created descending
                               select i).ToList();

   return itens;
}

Basicamente este código acima faz um filtro de uma determinada coluna (i["Coluna"]) e ordena pela data de criação dos itens.

Ainda estou na minha fase de estudos explorando todos as possibilidades do uso do LINQ.
Espero que possa auxiliar mais alguém.

Em breve posto meus novos testes e estudos.
Abraços a todos.

9Feb/100

Biblioteca de WebParts – dotDEV

Depois de mais uns tempos conturbados eis-me aqui novamente atualizando o blog. E mais uma vez com notícias boas também.
Além de estar preparando um post sobre como usar LINQ para buscar e trabalhar as informações do SharePoint eu estou planejando também uma área onde armazenarei algumas WebParts que já tive situações em que tive que desenvolve-las e outras WP que surgiram na minha cabeça numa ou outra hora qualquer.

Só preciso organizá-las, gerar os pacotes de instalação para disponibiliza-las aqui no site. Ainda dando continuidade à idéia de difundir mais o SharePoint, principalmente detalhes técnicos, estas WebParts ficarão disponíveis para download.

De qualquer forma estou a disposição caso queiram se adiantar antes dessa seção nova. Basta entrar em contato comigo pelo email filipe.cavalcante@dotdev.com.br ou filipe.cavalcante@gmail.com!

Aguardem mais atualizações!

23Nov/090

Cancelar Workflow via programação

No último projeto tivemos que dar a possibilidade para o usuário encerrar o andamento do fluxo manualmente. Para isso um método foi criado:

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    using (SPSite site = new SPSite(siteID))
    {
          using (SPWeb web = new SPWeb(relativeWeb))
         {
              SPWorkflowManager manager = site.WorkflowManager;
              SPListItem item = web.Lists[listname].GetItemByID(itemID);
              foreach(SPWorkflow workflow in manager.GetItemActiveWorkflows(item))
              {
                       SPWorkflowManager.CancelWorkflow(workflow);
              }
          }
    }
});

Detalhe para o "SPSecurity.RunWithElevatedPrivileges()" que faz com que o código possa ser executado por qualquer usuário que esteja logado.

O código que está no nosso projeto não é exatamente este, não coloquei algumas ações específicas do nosso projeto, mas basicamente para encerrar o fluxo, que é o tema deste post é esse!

Até a próxima!

Referencia: http://pointstoshare.spaces.live.com/Blog/cns!AEC42F315B4528B0!3045.entry?sa=648616426

18Nov/090

Estamos de volta… e com novidades.

Olá pessoal,

Faz um bom tempo que não mexia no meu blog. Eu havia migrado para este novo servidor, mas depois por um vacilo meu acabei apagando-o involuntariamente e depois fiquei com preguiça de reconfigurar, restaurar tudo de novo...
Mas enfim... o importante é que agora estamos de volta e com novidades.

Todos ja sabem que o Sharepoint 2010 está chegando né? Pois bem, algumas das pessoas que trabalham comigo foram na conferência em Las Vegas sobre o Sharepoint 2010 e em breve pretendo fazer alguns comentários sobre as novidades da nova versão.

Mas enquanto isso, vou deixar aqui um exemplo de código simples para fazer upload de documento para uma biblioteca de documentos do sharepoint com metadados

public static bool UploadDocumento(SPWeb web, string docLib, Documento documento, ParametrosList parametros, bool overwrite)
        {
            try
            {
                Hashtable docProperties = new Hashtable();
                // Metadados
                foreach (Parametros var in parametros)
                {
                    docProperties[var.Parametro] = var.Valor;
                }

                SPFolder folder = web.Folders[docLib];
                SPFile file = folder.Files.Add(documento.Nome, documento.FileBytes, docProperties ,overwrite);

                return true;
            }
            catch
            { return false; }
        }

Bem simples.

Nesse método existem dois objetos que eu criei na mão para auxiliar na passagem dos parametros para este método. O objeto 'Documento" basicamente carrega as informações vindas do componente FileUpload, e o objeto "ParametroList" é uma lista de parametros genérico que utilizo para o sistema todo, e conterão as informações dos metadados e seus respectivos valores.

Nesse exemplo não fiz tratamento de erro, simplesmente e retorna um BOOLEANO indicando se foi feito o upload corretamente na biblioteca de documento ou não.

Abraços

4May/090

Sharepoint e layouts Crossbrowsers.

Talvez vocês tenham percebido que constantemente tenho mudado o layout do blog, isso se dá ao fato de que eu nunca estou satisfeito com os que estão disponíveis pelo wordpress. Nada contra, tem uns ótimos, mas nenhum me agrada 100%.

Bom, com isso meu pensamento sobre satisfação continua mais forte do que nunca: "Quer bem feito e do jeito que imagina? Faça você mesmo." Em breve construirei um layout novo pra esse site. Simples, funcional e bonito. Bom, vou tentar agregar tudo isso junto. Até mesmo porque preciso dar uma relembrada e estudada nas novidades de CSS e xHTML.

Com os novos browsers recém lançados é bom saber quais limitações de layout, hacks e as adequações aos padrões webstandart. Pra quem trabalha com criações de sites, sistemas web e até mesmo com sharepoint esse conhecimento é fundametal. Bom, pelo menos essa é minha opnião.

Voltando um pouco o assunto ao sharepoint. Quem trabalha com customização de layout para sharepoint sabe a dificuldade que é adequar o layout desenhado ao sharepoint. Infelizmente ainda vejo a Microsoft pecar nesse sentido, na padronização do código gerado automaticamente pelos componentes de seus softwares, e isso envolve Visual Studio também. Ja tentaram entender um código html de um portal Sharepoint? Tem que se ter paciencia e no minimo um conhecimento intermediário de html pra conseguir achar alguma coisa. Não é dificil mas também não é facil.

Bom. Aqui vai a MINHA opnião sobre customização de layout de sharepoint. Todos os portais, sejam internet, intranet, extranet etc devem ser focados aos browsers mais comuns, tipo Firefox, Opera, IE, etc. Isso deve ser bem definido na proposta do projeto.

Para portais "Internet" isso é no minimo o mais importante, ja imaginou um portal em sharepoint que o layout não funciona corretamente no Firefox? Corrigir um layout ja montado pode ser mais trabalhoso do que se criar um já voltado e adequado aos browsers mais influente no mundo WWW.

2Apr/090

Lista "Sites Templates" para ser usado via STSADM

Para criar um novo Site Collection via STSADM alguns paramentros são exigidos e outros são opnionais, como é o caso do template do site. Abaixo a lista destes templates:

GLOBAL#0 = Global template;
STS#0 = Team Site
STS#1 = Blank Site
STS#2 = Document Workspace
MPS#0 = Basic Meeting Workspace
MPS#1 = Blank Meeting Workspace
MPS#2 = Decision Meeting Workspace
MPS#3 = Social Meeting Workspace
MPS#4 = Multipage Meeting Workspace
CENTRALADMIN#0 = Central Admin Site
WIKI#0 = Wiki Site
BLOG#0 = Blog
BDR#0 = Document Center
OFFILE#0 = Records Center
OFFILE#1 = Records Center
OSRV#0 = Shared Services Administration Site
SPS#0 = SharePoint Portal Server Site
SPSPERS#0 = SharePoint Portal Server Personal Space
SPSMSITE#0 = Personalization Site
SPSTOC#0 = Contents area Template
SPSTOPIC#0 = Topic area template
SPSNEWS#0 = News Site
CMSPUBLISHING#0 = Publishing Site
BLANKINTERNET#0 = Publishing Site
BLANKINTERNET#1 = Press Releases Site
BLANKINTERNET#2 = Publishing Site with Workflow
SPSNHOME#0 = News Site
SPSSITES#0 = Site Directory
SPSCOMMU#0 = Community area template
SPSREPORTCENTER#0 = Report Center
SPSPORTAL#0 = Collaboration Portal
SRCHCEN#0 = Search Center with Tabs
PROFILES#0 = Profiles
BLANKINTERNETCONTAINER#0 = Publishing Portal
SPSMSITEHOST#0 = My Site Host
SRCHCENTERLITE#0 = Search Center
SRCHCENTERLITE#1 = Search Center
SPSBWEB#0 = SharePoint Portal Server BucketWeb Template

21Jan/090

Principais benefícios do SQLServer 2008 para o Sharepoint

Um link interessante que fala sobre os principais benefícios do SQLServer 2008 para o Sharepoint.

http://www.sharepointbrasil.net/Lists/Postagens/Post.aspx?List=f1df0d58-e1cd-4bd2-ada1-b45e0fe1ec60&ID=75