Share via


Atualizar campos personalizados em massa e criar sites de projeto a partir de um fluxo de trabalho no Project Online

Para ajudar os clientes a aproveitar ao máximo o Project Online e melhorar a flexibilidade e a extensibilidade dos nossos serviços, adicionamos dois métodos ao modelo de objeto no lado do cliente que você pode usar em aplicativos e fluxos de trabalho do Project Online.

Valor
UpdateCustomFields
Faz atualizações em massa de campos de projeto personalizados. Apenas para o Project Online. Disponível apenas na API REST.
CreateProjectSite
Cria um site do Project. Apenas para o Project Online. Disponível na API REST, no modelo de objeto de cliente gerenciado e no modelo de objeto do cliente JavaScript.

Além de fornecerem mais flexibilidade, esses métodos também proporcionam melhorias significativas de desempenho ao salvar e publicar projetos em um fluxo de trabalho. Este artigo descreve como usar os métodos na API REST e fornece instruções para criar um fluxo de trabalho que faz a atualização em massa de campos personalizados e um fluxo de trabalho que cria um site do Project.

Observação

Para saber mais sobre como chamar APIs REST de fluxos de trabalho do SharePoint 2013, confira Entender e usar a interface REST do SharePoint 2013 e chamar a API rest do SharePoint 2013 de um fluxo de trabalho do SharePoint Designer.

Fazer atualizações em massa de campos de projeto personalizados com base em um fluxo de trabalho

Anteriormente, fluxos de trabalho podiam atualizar apenas um campo personalizado de cada vez. Essa atualização individual de campos de projeto personalizados pode resultar em uma experiência insatisfatória do usuário final ao fazer a transição entre Páginas de Detalhes do Projeto. Cada atualização exigia uma solicitação de servidor separada usando a ação Definir Campo de Projeto, e a atualização de vários campos personalizados em uma rede de alta latência e baixa largura de banda resultava em uma sobrecarga incomum. Para resolver esse problema, adicionamos o método UpdateCustomFields à API REST, que permite a atualização em massa de campos personalizados. Para usar UpdateCustomFields, você transmite um dicionário que contém os nomes e os valores de todos os campos personalizados que deseja atualizar.

O método REST pode ser encontrado no seguinte ponto de extremidade:

https://<site-url>/_api/ProjectServer/Projects('<guid>')/Draft/UpdateCustomFields()

Observação

Substitua o <site-url> espaço reservado nos exemplos pela URL do site do PWA (Project Web App) e pelo <guid> espaço reservado pelo UID do projeto.

Esta seção descreve como criar um fluxo de trabalho que faz a atualização em massa de campos personalizados de um projeto. O fluxo de trabalho segue estas etapas avançadas:

  • Aguarde o projeto que você deseja atualizar para fazer check-in.

  • Crie um conjunto de dados que define todas as atualizações de campo personalizadas para o projeto.

  • Confira o projeto.

  • Chame UpdateCustomFields para aplicar as atualizações de campo personalizadas ao projeto.

  • Registre informações relevantes na lista de histórico do fluxo de trabalho (se necessário).

  • Publique o projeto.

  • Faça check-in no projeto.

O fluxo de trabalho completo final é semelhante e este:

Fluxo de trabalho de ponta a ponta

Para criar um fluxo de trabalho que faz a atualização em massa de campos personalizados

  1. Opcional. Armazene a URL completa do seu projeto em uma variável que você possa usar por todo o fluxo de trabalho.

    Armazene a URL do projeto em uma variável

  2. Adicione a ação Aguardar o Evento do Projeto ao fluxo de trabalho e escolha o eventoQuando é feito o check-in de um projeto.

    Aguarde o check-in do projeto em

  3. Crie um dicionário requestHeader usando a ação Criar Dicionário. Você usará o mesmo cabeçalho de solicitação para todas as chamadas de serviço Web nesse fluxo de trabalho.

    Criar o dicionário requestHeader

  4. Adicione os dois itens a seguir ao dicionário.

    Nome Tipo Valor
    Accept
    Cadeia de caracteres
    application/json; odata=verbose
    Content-Type
    Cadeia de caracteres
    application/json; odata=verbose

    Adicionando um cabeçalho Aceitar

  5. Crie um dicionário requestBody usando a ação Criar Dicionário. Esse dicionário armazena todas as atualizações de campo que você deseja aplicar.

    Cada atualização de campo personalizado requer quatro linhas: (1) o tipo de metadados do campo, (2) a chave do campo, (3) o valor do campo e (4) o tipo de valor do campo.

    • __metadata/type O tipo de metadados do campo. Esse registro é sempre o mesmo e usa os seguintes valores:

      • Nome: customFieldDictionary(i)/__metadata/type (em que i é o índice de cada campo personalizado no dicionário, começando com 0)

      • Type: cadeia de caracteres

      • Valor: SP.KeyValue

      Definindo uma atualização de campo personalizada

    • Key O nome interno do campo personalizado, no formato: Custom_ce23fbf43fa0e411941000155d3c8201

      Você pode encontrar o nome interno de um campo personalizado navegando até seu ponto de extremidade InternalName: https://<site-url>/_api/ProjectServer/CustomFields('<guid>')/InternalName

      Se tiver criado seus campos personalizados manualmente, os valores serão diferentes para cada site. Se você planeja reutilizar o fluxo de trabalho em vários sites, certifique-se de que as IDs dos campos personalizados estejam corretas.

    • Value O valor a ser atribuído ao campo personalizado. Para campos personalizados vinculados a tabelas de pesquisa, você precisa usar os nomes internos das entradas da tabela de pesquisa ao invés dos valores reais dessa tabela.

      É possível encontrar o nome interno da entrada da tabela de pesquisa no seguinte ponto de extremidade: https://<site-url>/_api/ProjectServer/CustomFields('<guid>')/LookupEntries('<guid>')/InternalName

      Se você tiver um campo personalizado de tabela de pesquisa configurado para aceitar vários valores, use ;# para concatenar valores (conforme mostrado no dicionário de exemplo abaixo).

    • ValueType O tipo do campo personalizado que você está atualizando.

      • Para campos Text, Duration, Flag e LookupTable, use Edm.String

      • Para campos Number, use Edm.Int32, Edm.Double ou qualquer outro tipo de número aceito por OData

      • Para campos Date, use Edm.DateTime

      O dicionário de exemplo abaixo define atualizações para três campos personalizados. A primeira é para um campo personalizado de tabela de pesquisa com vários valores, a segunda é para um campo numérico e a terceira, para um campo de data. Observe como o índice customFieldDictionary é incrementado.

      Observação

      Esses valores são apenas para fins ilustrativos. Os pares de valor/chave que você usará dependem dos seus dados do PWA.

      Nome Tipo Valor
      customFieldDictionary(0)/__metadata/type
      Cadeia de caracteres
      SP.KeyValue
      customFieldDictionary(0)/Key
      Cadeia de caracteres
      Custom_ce23fbf43fa0e411941000155d3c8201
      customFieldDictionary(0)/Value
      Cadeia de caracteres
      Entry_b9a2fd69279de411940f00155d3c8201;#Entry_baa2fd69279de411940f00155d3c8201
      customFieldDictionary(0)/ValueType
      Cadeia de caracteres
      Edm.String
      customFieldDictionary(1)/__metadata/type
      Cadeia de caracteres
      SP.KeyValue
      customFieldDictionary(1)/Key
      Cadeia de caracteres
      Custom_c7f114c97098e411940f00155d3c8201
      customFieldDictionary(1)/Value
      Cadeia de caracteres
      90,5
      customFieldDictionary(1)/ValueType
      Cadeia de caracteres
      Edm.Double
      customFieldDictionary(2)/__metadata/type
      Cadeia de caracteres
      SP.KeyValue
      customFieldDictionary(2)/Key
      Cadeia de caracteres
      Custom_c6fb67e0b9a1e411941000155d3c8201
      customFieldDictionary(2)/Value
      Cadeia de caracteres
      2015-04-01T00:00:00
      customFieldDictionary(2)/ValueType
      Cadeia de caracteres
      Edm.DateTime

      Dicionário que define o dicionário de atualizações de campo personalizado

  6. Adicione uma ação Chamar Serviço Web HTTP para fazer check-out do projeto.

    Chamar o método Checkout

  7. Edite as propriedades da chamada de serviço Web para especificar o cabeçalho da solicitação. Para abrir a caixa de diálogo Propriedades, clique com o botão direito do mouse na ação e escolha Propriedades.

    Especifique o cabeçalho de solicitação nas propriedades de chamada do serviço Web

  8. Adicione uma ação Chamar Serviço Web HTTP para chamar o método UpdateCustomFields.

    Criar uma ação de Serviço Web HTTP de Chamada

    Observe o /Draft/ segmento na URL do serviço Web. A URL completa deve ter a seguinte aparência: https://<site-url>/_api/ProjectServer/Projects('<guid>')/Draft/UpdateCustomFields()

    Chamar o método UpdateCustomFields

  9. Edite as propriedades da chamada do serviço Web para associar os parâmetros RequestHeader e RequestContent aos dicionários que você criou. Você também pode criar uma nova variável para armazenar ResponseContent.

    Associar os dicionários ao cabeçalho de solicitação e ao conteúdo

  10. Opcional. Leia o conteúdo do dicionário de resposta para verificar o estado do trabalho da fila e registre as informações na lista do histórico do fluxo de trabalho.

    Configuração do log

  11. Adicione uma chamada de serviço Web ao ponto de extremidade Publish para publicar o projeto. Sempre use o mesmo cabeçalho de solicitação.

    Chamar o método Publicar

    Propriedades da chamada Publicar serviço Web

  12. Adicione uma chamada final de serviço Web ao ponto de extremidade Checkin para fazer check-in do projeto.

    Chamar o método Checkin

    Propriedades para a chamada de serviço Web Checkin

Criar um site do Project com base em um fluxo de trabalho

Cada projeto pode ter seus próprios sites dedicados do SharePoint, nos quais os membros das equipes podem colaborar, compartilhar documentos, fazer perguntas e assim por diante. Anteriormente, sites só podiam ser criados automaticamente na primeira publicação ou manualmente pelo gerente de projetos no Project Professional, ou pelo administrador nas configurações do PWA, ou podiam ser desabilitados.

Adicionamos o método CreateProjectSite para que você possa escolher quando criar sites de projeto. Isso é particularmente útil para organizações que desejam criar seus sites automaticamente quando uma proposta de projeto atinge um estágio específico em um fluxo de trabalho predefinido, ao invés de criá-lo na primeira publicação. Adiar a criação do site de projeto melhora significativamente o desempenho de criação de um projeto.

Pré-requisito: Antes de poder usar CreateProjectSite, a configuração Permitir que os usuários escolham deve ser definida para criação de site de projeto em Configurações de PWA Configurações conectadas>de sites >do SharePoint.

Configuração

Para criar um fluxo de trabalho que cria um site do Project

  1. Crie ou edite um fluxo de trabalho existente e selecione a etapa em que você deseja criar seus sites do Project.

  2. Crie um dicionário requestHeader usando a ação Criar Dicionário.

    Criar o dicionário requestHeader

  3. Adicione os dois itens a seguir ao dicionário.

    Nome Tipo Valor
    Accept
    Cadeia de caracteres
    application/json; odata=verbose
    Content-Type
    Cadeia de caracteres
    application/json; odata=verbose

    Adicionando um cabeçalho Aceitar

  4. Adicione a ação Chamar Serviço Web HTTP. Altere o tipo de solicitação para usar POST e defina a URL usando o seguinte formato:

    https://<site-url>/_api/ProjectServer/Projects('<guid>')/CreateProjectSite('New web name')

    Criando o URI do ponto de extremidade CreateProjectSite

    Transmita o nome do site do Project para o método CreateProjectSite como uma cadeia de caracteres. Para usar o nome do projeto como o nome do site, transmita uma cadeia vazia. Certifique-se de usar nomes exclusivos para que o próximo site de projeto que você criar funcione.

  5. Edite as propriedades da chamada do serviço Web para associar o parâmetro RequestHeader ao dicionário que você criou.

    Associando o dicionário à

Confira também