Definição de histórico de tarefas

Este artigo descreve a definição do registro de histórico de tarefas armazenado no Dataverse na tabela Histórico do Projeto. Um registro de histórico de tarefas representa uma alteração em uma tarefa.

"Editar Tipo" define o tipo de registro de histórico.

Sintaxe Descrição
TaskCreated representa quando a tarefa é criada
TaskEdited representa quando a tarefa é editada
TaskDeleted representa quando a tarefa é excluída
Undo representa quando uma alteração foi desfeita
Refazer representa quando uma alteração foi refeito
DependentEdit representa quando uma tarefa modificada devido a uma alteração em outra tarefa

Registros históricos

Todos os registros de histórico compartilham um conjunto comum de campos incluem:

Campo Descrição
Project o projeto ao qual o histórico está relacionado
Tarefa project a tarefa à qual o histórico está relacionado. Ele ficará em branco se a tarefa for excluída
XrmUserId o usuário Xrm que fez a alteração na tarefa
Carimbo de data/hora a data e hora em que a alteração foi gerada
Editar Tipo o tipo de registro de histórico
Detalhes que contém os dados de histórico em um formato JSON

As seções a seguir descrevem o que o campo de carga Detalhes contém dependendo do tipo de registro de histórico e do que foi editado. Para obter as descrições das colunas dentro dos Detalhes, examine Exportar Definição de Conteúdo do Projeto

Detalhes do TaskCreated

O registro é criado quando a tarefa é criada. A carga está vazia.

Detalhes do TaskDeleted

Contém uma única propriedade "name", que é o nome da tarefa quando ela foi excluída.

Exemplo:

{"name":"Pour concrete"}

Detalhes de desfazer/refazer

Uma propriedade "revisões" com um valor de matriz que contém todos os números de revisão que foram desfeitos ou refeitos. O número corresponde ao sufixo na propriedade de revisão do registro histórico.

Exemplo:

{"revisions":[11,12]}

Que corresponde ao registro histórico com sufixo de registro de revisão (0000000011) em:

msxrm\_orgxxxyyyy.crm.dynamics.com\_ff69bc0e-3f66-41c3-b40c-aa3035517e38\_0000000011

Detalhes de TaskEdited

TaskEdited representa edições diretas de propriedade em uma tarefa e cria, exclui e edita em quaisquer itens filho da tarefa, por exemplo, itens de lista de verificação, anexos, atribuições, links e assim por diante.

Edições diretas do campo de tarefas

Os detalhes têm uma propriedade "field" com um valor de objeto JSON. Esse objeto tem os nomes de propriedade alterados como chaves (pode haver várias propriedades de tarefa editadas em uma única ação do usuário), com um objeto como o valor. Esse objeto de propriedade tem chaves "anteriores" e "atualizadas" com os valores com os valores antigos e novos da propriedade.

Exemplo:

{
  "fields": {
    "name": {
      "previous": "Pour concrete",
      "updated": "Eat donuts"
    }
  }
}

Para propriedades grandes (por exemplo, observa a atribuição "totalWorkContour"), um JSON vazio é emitido e não os valores anteriores/atualizados.

Exemplo:

 {
  "fields": {
    "notes": {}
  }
}

Edições de tarefas que completam uma tarefa

Qualquer edição de propriedade que conclua uma tarefa também adiciona uma propriedade booliana concluída.

Exemplo:

{
  "fields": {
    "percentComplete": {
      "previous": 75,
      "updated": 100
    }
  },
  "completed": true
}

Edições de elemento filho da tarefa

Os elementos filho são semelhantes às edições de campo, mas a chave é o nome da propriedade de navegação e o valor é uma matriz. Os itens na matriz podem ser criados (tem uma propriedade "created":true), exclui ("deleted":true property) ou edita (nenhuma criação ou exclusão, mas lista de propriedades editadas). Elementos filho criados ou excluídos têm um conjunto de propriedades mínimas necessárias para renderizar o item com valores definidos diretamente na propriedade. As edições têm o mesmo formato que as edições de campo na tarefa com os valores anteriores e atualizados.

Criação de exemplo:

{
  "fields": {
    "checklistItems": [
      {
        "id": "f4be3c03-bc04-ee11-83c4-e04f43e61e09",
        "created": true,
        "name": "checklistItem1"
      }
    ]
  }
}

Edição de exemplo:

{
  "fields": {
    "checklistItems": [
      {
        "id": "54219e93-bd04-ee11-83c4-e04f43e61e09",
        "completed": {
          "previous": false,
          "updated": true
        }
      }
    ]
  }
}

Propriedades incluídas para criações e exclusões

Para elementos filho de tarefa simples (como marcar lista Itens, anexos) ao ser criado e excluído, todas as propriedades necessárias para renderizar esse item são incluídas. Os itens de lista de verificação incluem o nome e os anexos incluem nome, uri e tipo.

Todos os elementos filho que são uma relação entre outras entidades incluem a ID da outra entidade. Por exemplo, as atribuições incluem o resourceId e os links incluem o predecessorId.

Detalhes do DependentEdit

Os registros de edição dependentes serão gerados para uma tarefa se uma alteração em outra tarefa fizer com que a tarefa atual seja modificada. O registro de histórico inclui as alterações na tarefa atual e uma propriedade sourceEdit indicando as alterações na tarefa de origem que fizeram com que a tarefa atual fosse modificada.

Exemplo: um link é adicionado a outra tarefa (origem) à tarefa atual e a data de início da tarefa atual é movida para fora um dia:

{
  "fields": {
    "start": {
      "previous": "2015-11-17T08:00:00Z",
      "updated": "2015-11-18T08:00:00Z"
    }
  },
  "sourceEdit": {
    "type": "TaskEdited",
    "taskId": "a6f33356-cd04-ee11-83c4-e04f43e61e09",
    "fields": {
      "predecessors": [
        {
          "id": "abf33356-cd04-ee11-83c4-e04f43e61e09",
          "created": true,
          "predecessorId": "a4f33356-cd04-ee11-83c4-e04f43e61e09"
        }
      ]
    }
  }
}

Várias edições de origem

As operações em massa podem alterar várias tarefas ao mesmo tempo e podem levar a várias alterações dependentes. Nesse cenário, as tarefas na operação em massa são incluídas no sourceEdit com um tipo de registro CompoundEdit. Exemplos desses cenários incluem excluir várias tarefas, vincular várias tarefas, recuar várias tarefas. Um registro CompoundEdit inclui a contagem de edições e as três primeiras edições.

Exemplo

{
  "fields": {
    "start": {
      "previous": "2015-11-17T08:00:00Z",
      "updated": "2015-11-16T08:00:00Z"
    }
  },
  "sourceEdit": {
    "type": "CompoundEdit",
    "count": 2,
    "edits": [
      {
        "type": "TaskDeleted",
        "taskId": "f3233655-ce04-ee11-83c4-e04f43e61e09",
        "name": "Task A"
      },
      {
        "type": "TaskDeleted",
        "taskId": "f1233655-ce04-ee11-83c4-e04f43e61e09",
        "name": "Task B"
      }
    ]
  }
}

Edições para tarefas de resumo

Determinadas operações, como excluir uma tarefa ou recuar uma tarefa, podem gerar vários registros se a tarefa editada for uma tarefa de resumo, pois essas edições também se aplicam aos filhos da tarefa. Todos os registros dependentes incluem a tarefa de resumo como o sourceEdit.

Tamanho do registro

O campo Detalhes tem um tamanho máximo de 1000 caracteres. Se o registro de alteração inicial exceder 1000 caracteres, o registro de histórico será reduzido. Todas as alterações de cadeia de caracteres são limitadas a 100 caracteres e o número de campos alterados é limitado a 6. Uma propriedade "truncada" indica quantos campos diretos não foram incluídos. Uma propriedade "truncatedElements" indica o número de elementos filho que não foram gravados.

Se o tamanho do registro com as restrições acima exceder 1000 caracteres, todo o registro não será gerado.

Exemplo

{
  "fields": {
    "start": {
      "previous": "2015-11-17T08:00:00Z",
      "updated": "2015-11-10T08:00:00Z"
    }
  },
  "sourceEdit": {
    "type": "CompoundEdit",
    "count": 2,
    "edits": [
      {
        "type": "TaskEdited",
        "taskld": "225a7a3b-a916-ee11-a35f-480fcf4e7967",
        "fields": {
          "name": {
            "previous": "Prepare Preliminary Project Scope Statement",
            "updated": "Summarize Project Results and Lessons Learned"
          },
          "start": {
            "previous": "2015-11-16T08:00:00Z",
            "updated": "2017-11-16T08:00: 00Z"
          },
          "truncated": 5
        }
      },
      {
        "type": "TaskEdited",
        "taskld": "245a7a3b-a916-ee11-a35f-480fcf4e7967",
        "fields": {
          "name": {
            "previous": "Prepare Preliminary Project Scope Statement",
            "updated": "Develop High Level Work Breakdown Structure"
          },
          "start": {
            "previous": "2015-11-16T08:00:00Z",
            "updated": "2017-11-16T08:00:00Z"
          },
          "truncated": 5
        }
      }
    ]
  }
}