Mapeando Custom Fields com FluentPS
No post anterior aprendemos como utilizar a biblioteca FluentPS, que facilita o trabalho de manipular informações do Project Server.
Nesse post vamos ver como recuperar informações de campos personalizados do Project Server, os Enterprise Custom Fields.
O que são Enterprise Custom Fields?
Enterprise Custom Fields permitem extender os campos fornecidos por padrão pelo Project Server, podendo ser associados às entidades Projeto, Recurso e Tarefas. Eles são geralmente utilizados para atender a alguma necessidade específica da empresa/organização.
Os Enterprise Custom Fields são armazenados no Banco de Dados do próprio Project Server.
Onde estão os Enterprise Custom Fields?
Os campos personalizados podem ser encontrados no PWA site, através do link Configurações do Servidor.
Agora navegue até a seção Dados da Empresa.
Selecione a opção Campos Personalizados da Empresa e Tabelas de Pesquisa para ver os campos cadastrados do servidor.
Nosso Exemplo
A nossa aplicação vai recuperar os dados do campo Departamento de um determinado projeto. Para isso, vamos criar a entrada Departamento de TI nesse campo.
Observação: lembre que você deve associar ao projeto o valor do campo Departamento que acabamos de criar, utilizando, por exemplo, o Microsoft Project Professional.
Usando o código do post anterior, vamos modificar a classe ProjectInfo. Criaremos a propriedade ProjectDepartment da seguinte forma:
[PSLookupField("9d77d62a-a92e-4d40-adc8-446c90eb7456", LookupTableUid="e7397277-1ab0-4096-b2dd-57029a055ba4", FieldName = "Departamentos do Projeto", LookupTableName = "Departamento")] public string ProjectDepartment { get; set; }
Para mapearmos o campo Departamento, utilizamos o atributo PSLookupField, recebendo em seu construtor os seguintes parâmetros: o ID do campo, o ID da tabela de lookup (tabela de pesquisa, em Português), o nome do campo e o nome da tabela de lookup.
Para recuperar o ID do campo, basta clicar no campo
e copiar o GUID na parte inferior da página:
Da mesma forma, para acessar o ID da tabela de lookup Departamento basta clicar nela,
naveguar até a parte inferior da pagina e copiar o GUID:
Agora altere a classe Program.cs para exibir o nome do Departamento associado ao projeto.
Console.WriteLine("Project Department: {0}", project.ProjectDepartment);
Pronto! Agora é só executar o código e o Departamento do projeto será exibido.
Novamente, se quiser mais informações sobre o FluentPS e o mapeamento de Custom Fields, acesse http://www.projectserver2010blog.com