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