terça-feira, 20 de dezembro de 2011

Business Connectivity Services (BCS) – Método Finder para External Content Types no SharePoint 2010



Mostrarei aqui como criar o método Finder, que faz com que você consiga fazer a visualização dos dados de seu External Content Type (ECT) do SharePoint 2010.

Neste exemplo, vamos criar uma nova conexão com a nossa base de dados para que em seguida possamos criar o método Finder para consumir os dados no SharePoint.

Vamos começar criando um banco de dados e uma tabela para que possamos testar se os dados foram importados.

Crie um banco de dados com nome “Development” e então crie uma tabela de nome “Funcionarios” com a estrutura abaixo e preencha alguns valores.


Conecte-se ao seu site com o SharePoint Designer 2010, no menu lateral esquerdo, clique em “External Content Types” em seguida clique em “External Content Type” no menu superior.


Altere o nome do seu ECT para “DevelopmentECT”. Em “External Content Type Operations” clique em “Click here to discover external data sources ...”.
Adicione uma nova conexão, selecione “SQL Server” e então informe os dados para a conexão.
Com a conexão criada, clique com o botão direito na tabela “Funcionarios” e então escolha “New Read List Operation”.

Agora basta seguir em Next, Next e Finish.
Com sua operação criada agora você somente precisa salvar e seu ECT estará criado com o método Finder.
Para verificar se os dados estão sendo lidos vamos utilizar o BCS buscar os dados.
Vá em uma página e adicione a seguinte web part.


 Faça a configuração da web part.



Se você tentar visualizar os dados você poderá ver o seguinte erro de acesso negado:


Para resolver este erro, você deve ir à Central Administration do SharePoint 2010.
Em “Application Management” clique em “Manage service applications”.
Procure “Business Connectivity Service”, clique em seu proxy e no menu superior clique em “Manage”.


Na página seguinte, basta selecionar “DevelopmentECT” e então clicar em “Set Object Permissions” na aba superior e adicionar seu usuário com suas devidas permissões.
Agora você poderá voltara à web part e verificar que os dados irão aparecer.

segunda-feira, 12 de dezembro de 2011

Manipulando arquivos e pastas do SharePoint 2010 com Visual Studio 2010



Neste post, mostrarei como realizar a manipulação de arquivos e pastas no SharePoint 2010 com o Visual Studio 2010, neste exemplo irei mostrar como realizar o check in e também o check out dos arquivos em uma determinada pasta programaticamente.

Para este exemplo vamos ao SharePoint e adicionar uma nova biblioteca de documentos.


Agora você poderá subir alguns documentos de exemplo para o nosso exemplo.

Com a biblioteca e documentos no SharePoint, agora vamos ao Visual Studio 2010.
Crie um novo projeto “Empty SharePoint Project”, selecione “Deploy as a farm solution”.

Clique com o botão direito no projeto, Add -> New Item.
Selecione “Web Part”, dê um nome à ela e então adicione ao projeto.

Vamos criar dois controles na web part:

- Label: Para exibir informações caso haja algum erro.
- Button: Para realizar a operação nos arquivos.

Primeiro declare os dois controles:

public Button button;
public Label lblAlert;


No método CreateChildControls adicione o seguinte código:

button = new Button();
button.ID = "btn1";
button.Text = "Executar";
button.Click += new EventHandler(button_Click);
Controls.Add(button);
Controls.Add(new LiteralControl("<br>"));

lblAlert = new Label();
lblAlert.ID = "lblAlert";
lblAlert.Text = "";
lblAlert.Visible = false;
Controls.Add(lblAlert);
Controls.Add(new LiteralControl("<br>"));


No código acima apenas criei e adicioneis os controles à web part. Também criei um EventHandler para o Click do botão, com isso você deve adicionar o código abaixo que implementará o Click do botão:


void button_Click(object sender, EventArgs e)
{
    try
    {
        SPWeb web = SPContext.Current.Web;

        SPSecurity.RunWithElevatedPrivileges(delegate
        {
            foreach (SPFolder folder in web.Folders)
            {

                if (folder.Name == "Documentos")
                {

                    foreach (SPFile file in folder.Files)
                    {
                        file.CheckOut();
                    }

                    break;
                }
            }
        });
    }
    catch (Exception ex)
    {
        lblAlert.Visible = true;
        lblAlert.Text = ex.Message;
    }

}


Bom, neste código criamos um SPWeb apontando para a web application onde está localizada a web part.
Utilizo também o método RunWithElevatedPrivilegies para evitar que ocorra algum tipo de erro quanto ao acesso as bibliotecas ou documentos.

Depois disso faço um foreach para ler as pastas, um novo foreach para ler os arquivos dentro desta pasta.

Quando encontrado um arquivo na pasta Documentos é realizado o seu checkout.
Agora basta você realizar o deploy da solução, adicionar sua web part em uma página e clicar no botão para executar a ação.



domingo, 11 de dezembro de 2011

Utilizando o ULS do SharePoint 2010 com Visual Studio 2010


Mostrarei aqui como utilizar o ULS (Unified Logging Service) do SharePoint 2010 para registrar erros entre outras marcações para realizar tanto o log quanto o debug de sua solução.

Neste exemplo, vamos criar uma simples web part que reproduzirá um erro de conversão de tipos apenas para mostrar o funcionamento do Log.

Primeiro você deve criar um novo projeto “Empty SharePoint Project” no Visual Studio 2010, em seguida selecione “Deploy as a farm solution”. Agora crie uma nova web part clicando com o botão direito no projeto, Add-> New Item. Então selecione Web Part na lista que aparecerá, dê um nome a ela e adicione.

No método “CreateChildControls” adicione o seguinte código:

OBS.: Importante lembrar que você deve adicionar “using Microsoft.SharePoint.Administration;” ao topo do seu arquivo .cs para que o código abaixo funcione como está.


Label lbl = new Label();
lbl.ID = "label1";
Controls.Add(lbl);

try
{
    string n = "mm";
    int i = Convert.ToInt32(n);
}
catch(Exception ex)
{
    lbl.Text = ex.Message;
    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("MatheusDev", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace);
}


No código acima, adicionamos um label e então o adicionamos aos controles da web part. Dentro do bloco try tento realizar a conversão de uma string (“mm”) em um int, no entanto esta conversão irá falhar entrando então no bloco catch que salvará o log do erro.

No método WriteTrace informamos todos os parâmetros necessários para a chamada.

Informamos um id para o registro, uma categoria do erro encontrado que neste exemplo informei “MatheusDev” somente para identificação no arquivo.
Através dos enumerators TraceSeverity e EventSeverity informamos os níveis de gravidade do erro.
Agora faça o deploy da solução no SharePoint 2010 e adicione a web part em sua página.

Você verá uma mensagem de erro em um label como abaixo:

“Input string was not in a correct format.”

Para verificar se o erro foi salvo no log, você deve acessar a pasta do SharePoint e então a pasta “LOGS”. Normalmente encontrada em “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\LOGS”.

Procure o arquivo com a atualização mais recente e então abra-o e poderá ver seu registro de erro salvo.


sexta-feira, 9 de dezembro de 2011

Importando e publicando definições de site do SharePoint 2010 utilizando o Visual Studio 2010


Neste post, exemplificarei como importar modelos de site do SharePoint 2010 para o Visual Studio 2010, fazer modificações e publicar como um novo modelo para a criação de sites.

Vamos começar criando um site em branco que servirá de base para construirmos nosso modelo.



Abra o SharePoint Designer 2010 e conecte-se ao site em branco criado. Clique no menu superior à direita e clique em “Save as Template”.

Você será redirecionado para uma página onde você poderá escolher o nome do arquivo, nome do template, sua descrição e também se deseja importar o conteúdo do site.


Ao clicar em OK, você deve aguardar a criação do arquivo wsp, se concluído com êxito vá à Galeria de Soluções e baixe o arquivo para sua máquina.


 Com o arquivo .wsp copiado para sua máquina, abra o Visual Studio 2010 e crie um novo projeto “Import SharePoint Solution Package”.


 Selecione “Deploy as na sandboxed solution”.


 Agora selecione o arquivo wsp copiado para sua máquina.


 Você deve selecionar também os itens que deseja importar.


 Após o Visual Studio realizar o carregamento de todos os arquivos para a solução eu criei uma web part Hello World para poder ser adicionada ao modelo de site, somente como exemplo de customização que pode ser realizada.


Após isso, fiz o “Build” do projeto e também o “Package”.
Com o arquivo wsp gerado, subi a solução para a Galeria de Soluções e agora basta ativá-la.


 Com a solução ativada, você poderá fazer o teste ao criar um novo site, você verá como modelo o seu site criado e quando adicionado irá ver a web part criada já na Galeria de Web Parts pronta para ser adicionada ao site.

domingo, 4 de dezembro de 2011

Event Receivers no SharePoint 2010 com Visual Studio 2010


Mostrarei neste post como manipular alguns eventos do SharePoint 2010 utilizando os Event Receivers. Em nosso exemplo, mostrarei a manipulação dos eventos de adição e remoção de itens de uma lista customizada no SharePoint.


Primeiro devemos criar nossa lista customizada que será usada para exemplificação.
Criei uma lista com o nome de “Funcionarios”.



Agora vamos criar outras colunas em nossa lista customizada.

A estrutura de campos da lista ficou como a imagem abaixo:


Troquei o nome da coluna “Title” que é criada automaticamente pelo SharePoint por “Nome”, que irá armazenar o nome do funcionário.

Também criei mais duas colunas, “Salario” do tipo número e “Data Fim do Contrato” do tipo data, ambas existem para que possamos criar uma regra para o cadastro de funcionários e também para remoção.

Bom, agora com o Visual Studio 2010 crie um projeto “Empty SharePoint Project”.

Com o projeto criado clique com o botão direito no projeto Add-> New Item. Na janela que aparecerá selecione “Event Receiver”, informe um nome para ele e adicione ao projeto.

Agora selecione as opções como na imagem abaixo:


-List Item Events: Com este item informamos que queremos manipular eventos de itens de lista.
-Custom List: Utilizamos este item pois a lista que utilizaremos não é uma lista nativa do site do SharePoint.
-An item is being added: Evento disparado ao iniciar o procedimento de adicionar um novo item, o procedimento ainda não foi concluído.
-An item is being deleted: Evento disparado ao iniciar o procedimento de remover um item, o procedimento ainda não foi concluído.

Agora insira o código abaixo nos métodos adicionados:


public override void ItemAdding(SPItemEventProperties properties)
{
    double Salario;


    if (properties.ListTitle == "Funcionarios")
    {
        if (properties.AfterProperties["Salario"] != null)
        {
            Salario = Convert.ToDouble(properties.AfterProperties["Salario"].ToString());

            if (Salario < 300)
                properties.Cancel = true;
        }
    }
}

/// <summary>
/// An item is being deleted.
/// </summary>

public override void ItemDeleting(SPItemEventProperties properties)
{

    DateTime DataFimContrato;

    if (properties.ListTitle == "Funcionarios")
    {
        if (properties.ListItem["Data Fim do Contrato"] != null)
        {

            DataFimContrato = Convert.ToDateTime(properties.ListItem["Data Fim do Contrato"].ToString());

            if (DateTime.Now > DataFimContrato)
                properties.Cancel = true;
        }
    }
}



O código é simples, a única diferença é quanto ao properties.Cancel onde definimos o cancelamento do procedimento.

A regra utilizada é simples: Para inserir um novo funcionário na lista, o salário deve ser maior que 300, caso contrário ele não será inserido.

Quanto à exclusão, somente poderá ser excluído o funcionário da lista caso a data atual seja maior que a data do fim do contrato, se a data do fim do contrato for maior que a data atual, o funcionário não será excluído da lista.

Agora basta realizar o deploy da solução e verificar a regra.