Partager via


Définition de l’historique des tâches

Cet article décrit la définition de l’enregistrement d’historique des tâches stocké dans Dataverse dans la table Historique du projet. Un enregistrement d’historique des tâches représente une modification apportée à une tâche.

« Modifier le type » définit le type d’enregistrement d’historique.

Syntaxe Description
TaskCreated représente lors de la création de la tâche
TaskEdited représente quand la tâche est modifiée
TaskDeleted représente le moment où la tâche est supprimée
Undo représente lorsqu’une modification a été annulée
Redo représente lorsqu’une modification a été refaite
DépendantModifier représente lorsqu’une tâche a été modifiée en raison d’une modification apportée à une autre tâche

Enregistrements d’historique

Tous les enregistrements d’historique partagent un ensemble commun de champs :

Champ Description
Project le projet à laquelle l’historique est lié
Tâche de projet tâche à laquelle l’historique est lié. Il est vide si la tâche est supprimée
XrmUserId L’utilisateur Xrm qui a apporté la modification à la tâche
Timestamp date et heure de génération de la modification
Modifier le type type d’enregistrement d’historique
Détails contenant les données d’historique au format JSON

Les sections suivantes décrivent ce que contient le champ de charge utile Détails en fonction du type d’enregistrement d’historique et de ce qui a été modifié. Pour obtenir la description des colonnes dans détails, consultez Exporter la définition de contenu du projet.

Détails de la tâchecréée

L’enregistrement est créé lors de la création de la tâche. La charge utile est vide.

Détails de la tâche supprimée

Contient une propriété unique « name », qui est le nom de la tâche lors de sa suppression.

Exemple :

{"name":"Pour concrete"}

Détails de l’annulation/de la restauration

Propriété « revisions » avec une valeur de tableau contenant tous les numéros de révision qui ont été annulés ou refaits. Le nombre correspond au suffixe dans la propriété revision de l’enregistrement d’historique.

Exemple :

{"revisions":[11,12]}

Qui correspond à l’enregistrement d’historique avec le suffixe d’enregistrement de révision (0000000011) dans :

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

Détails de la modification de la tâche

TaskEdited représente les modifications de propriétés directes sur une tâche et crée, supprime et modifie des éléments enfants de tâche, par exemple, des éléments de liste de contrôle, des pièces jointes, des affectations, des liens, etc.

Modifications directes des champs de tâche

Les détails ont une propriété « field » avec une valeur d’objet JSON. Cet objet a les noms de propriété modifiés en tant que clés (plusieurs propriétés de tâche peuvent être modifiées dans une seule action utilisateur), avec un objet comme valeur. Cet objet de propriété a des clés « précédent » et « mis à jour » avec les valeurs anciennes et nouvelles de la propriété.

Exemple :

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

Pour les propriétés volumineuses (par exemple l’affectation de notes « totalWorkContour »), un code JSON vide est émis et non les valeurs précédentes/mises à jour.

Exemple :

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

Modifications de tâche qui terminent une tâche

Toute modification de propriété qui termine une tâche ajoute également une propriété booléenne terminée.

Exemple :

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

Modifications d’éléments enfants de tâche

Les éléments enfants sont similaires aux modifications de champ, mais la clé est le nom de la propriété de navigation et la valeur est un tableau. Les éléments du tableau peuvent être créés (a une propriété « created »:true), des suppressions (« deleted »:true property) ou des modifications (aucune propriété créée ou supprimée, mais une liste de propriétés modifiées). Les éléments enfants créés ou supprimés ont un ensemble de propriétés minimales nécessaires pour afficher l’élément avec des valeurs définies directement sur la propriété. Les modifications ont le même format que les modifications de champ sur la tâche avec les valeurs précédentes et mises à jour.

Exemple de création :

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

Exemple de modification :

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

Propriétés incluses pour les créations et les suppressions

Pour les éléments enfants de tâche simples (comme case activée liste Éléments, pièces jointes) lors de la création et de la suppression, toutes les propriétés requises pour afficher cet élément sont incluses. Les éléments de liste de contrôle incluent le nom et les pièces jointes incluent le nom, l’URI et le type.

Tous les éléments enfants qui sont une relation entre d’autres entités incluent l’ID de l’autre entité. Par exemple, les affectations incluent le resourceId et les liens incluent le prédécesseurId.

Détails de l’modification dépendante

Les enregistrements de modification dépendants sont générés pour une tâche si une modification apportée à une autre tâche entraîne la modification de la tâche actuelle. L’enregistrement d’historique inclut les modifications apportées à la tâche actuelle et une propriété sourceEdit indiquant les modifications apportées à la tâche source qui ont provoqué la modification de la tâche actuelle.

Exemple : Un lien est ajouté à une autre tâche (source) vers la tâche actuelle et la date de début de la tâche actuelle est déplacée d’un jour :

{
  "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"
        }
      ]
    }
  }
}

Modifications de plusieurs sources

Les opérations en bloc peuvent modifier plusieurs tâches à la fois et peuvent entraîner plusieurs modifications dépendantes. Dans ce scénario, les tâches de l’opération en bloc sont incluses dans sourceEdit avec un type d’enregistrement CompoundEdit. Parmi ces scénarios, citons la suppression de plusieurs tâches, la liaison de plusieurs tâches et la mise en retrait de plusieurs tâches. Un enregistrement CompoundEdit inclut le nombre de modifications et les trois premières modifications.

Exemple

{
  "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"
      }
    ]
  }
}

Modifications des tâches récapitulatives

Certaines opérations, telles que la suppression d’une tâche ou la mise en retrait d’une tâche, peuvent générer plusieurs enregistrements si la tâche modifiée est une tâche récapitulative, car ces modifications s’appliquent également aux enfants de la tâche. Tous les enregistrements dépendants incluent la tâche récapitulative comme sourceEdit.

Taille de l’enregistrement

Le champ Détails a une taille maximale de 1 000 caractères. Si l’enregistrement de modification initial dépasse 1 000 caractères, l’enregistrement d’historique est supprimé. Toutes les modifications de chaîne sont limitées à 100 caractères et le nombre de champs modifiés est limité à 6. Une propriété « tronquée » indique le nombre de champs directs qui n’ont pas été inclus. Une propriété « tronquéElements » indique le nombre d’éléments enfants qui n’ont pas été écrits.

Si la taille de l’enregistrement avec les restrictions ci-dessus dépasse 1 000 caractères, l’enregistrement entier n’est pas généré.

Exemple

{
  "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
        }
      }
    ]
  }
}