quarta-feira, 13 de novembro de 2013

Como salvar um formulário InfoPath em uma subpasta de uma biblioteca SharePoint

Recentemente precisei salvar um formulário InfoPath 2007 ( :-P ) no seu local original, que era uma subpasta em uma biblioteca de formulários em um SharePoint (2007 tb, :-P ). Como o nome da pasta era gerada dinamicamente no momento da criação do formulário, baseado em um dado que não está presente no mesmo, não há como (pelo menos eu não consegui) criar uma conexão de dados para submeter o formulário para seu local de armazenamento.

A única solução que encontrei foi criar um campo no formulário que armazenasse sua URL, de forma a usar este valor na hora de salvar o formulário. Mas como o formulário está rodando no SharePoint, e é um item de uma lista, o modelo de objetos server do SharePoint está disponível no code-behind do formulário. Usando SPWeb.GetListItem() para acessar o item da lista correspondente ao formulário, as propriedades deste item fornecem a URL do formulário no SharePoint.

     public void FormEvents_Submit(object sender, SubmitEventArgs e)
     {
         // Recupera referência ao formulário na biblioteca SharePoint baseado na sua URL
         SPListItem item = SPContext.Current.Web.GetListItem(this.Uri);
         // Salva o formulário. No código a seguir, a conexão gera o nome do arquivo, mas se o nome
         // deve ser gerado em run-time, pode ser setado através de FileSubmitConnection.FileName
         FileSubmitConnection conexaoSP = (FileSubmitConnection)this.DataConnections["SalvarArquivo"];
         conexaoSP.FolderUrl = item.Web.Url + item.File.ParentFolder.ServerRelativeUrl;
         conexaoSP.Execute();
         e.CancelableArgs.Cancel = false; // Informa o InfoPath que o submit foi ok
     }

sexta-feira, 2 de agosto de 2013

Novidades do Hyper-V no Windows 8

  1. Tem Hyper-V no Windows 8! (no Windows 7 era só o Virtual PC).
  2. Como no Windows 2008 R2, o Hyper-V do Windows 8 suporta VM's de 64 bits (o Virtual PC só suporta VM's de 32 bits, o que é bem restritivo - por exemplo, o SharePoint 2010 não tem versão em 32 bits).
  3. Vantagens em relação ao Hyper-V do W2008 R2:
    - Suporta stand-by da máquina host (no Window 2008, ou você tem o Hyper-V, ou você consegue habilitar o stand-by; um ou o outro, não os dois)
    - Suporta nativamente conexões de VM's a redes externas WiFi (no Windows 2008, nativamente, as VM's só podiam se conectar a redes cabeadas - apesar de existirem "formas alternativas" de se fazer isto).
  4. Novo recurso: Virtaul SAN Manager. Não estudei ainda, mas parece ser suporte a criação de storages virtuais. 
Alguns recursos são novos e outros já eram possíveis de se implementar mas foram incorporados ao produto. De qualquer forma, esta versão que é incluída com o Windows 8 é perfeita para quem trabalha com TI e tem necessidade de criação de ambientes virtuais para desenvolvimento e testes em uma máquina de trabalho.

segunda-feira, 13 de maio de 2013

Assim é que é divertido ;-)

Erro na configuração da integração entre o TFS 2012 e System Center Virtual Machine Manager 2012 pra testes com o Lab Management. Vou procurar no Google e retornam 3 resultados:


Assim que é divertido... ;-)

sexta-feira, 26 de abril de 2013

Arquitetura de Alta Disponibilidade para o TFS

O esquema a seguir foi derivado de uma implementação de alta disponibilidade que fizemos para o TFS. Tem umas escolhas de arquitetura legais, estão comentadas a seguir:



  • Usamos máquinas virtuais para hospedar os servidores. Isto permite diminuir o número de hosts físicos a gerenciar.
  • Usamos NLB para o TFS, o SharePoint e o Reporting Services, e Failover Cluster Feature para o SQL Server (Database Engine) e o Analysis Services. Estas são as tecnologias de alta disponibilidade recomendadas pela Microsoft para cada um dos produtos citados.
  • A distribuição dos nós de cada cluster (NLB ou Failover) em hosts físicos distintos permite que os serviços sobrevivam à queda de um dos hosts.
  • Para os produtos em NLB, além da alta disponibilidade ainda há a vantagem da distribuição de carga entre os servidores. Além disto, o cluster NLB detecta automaticamente o retorno de um servidor que havia caído, reincluindo-o no processo de distribuição de carga.
  • No caso dos produtos em cluster, como o Failover Cluster do Windows não suporta modo "ativo-ativo", no qual ambas as máquinas respondem a requisições, colocamos a máquina que é o nó ativo do cluster para o Database Engine como sendo o nó passivo do cluster para Analysis Service, e vice-versa. Isto evita a existência de uma máquina "parruda" (como tem que ser um servidor SQL Server) e "parada" (o nó passivo), pois ambas respondem a requisições.
  • Antes tínhamos uma instância do SQL Server para o TFS e outra para o SharePoint; agora ambos usam a mesma instância. Isto permite um melhor uso de recursos, p.e. RAM não usada por um produto pode ser usada por outro, o que não acontece em instâncias separadas.
  • O uso de um alias DNS para os clusters NLB tornam manutenções, movimentações e substituições de servidores invisíveis às máquinas dos desenvolvedores. Aliás o uso destes alias para é uma boa mesmo se você não tem um NLB por trás, exatamente pelas razões apresentadas.
Projetinho simplezinho mas bonitinho. Vai ficar mais bonito quando a gente jogar o Lab Management aí dentro.