Definizione della cronologia attività

Questo articolo descrive la definizione del record di cronologia attività archiviato in Dataverse nella tabella Cronologia progetti. Un record di cronologia attività rappresenta una modifica a un'attività.

"Modifica tipo" definisce il tipo di record di cronologia.

Sintassi Descrizione
TaskCreated rappresenta quando viene creata l'attività
Modifica attività rappresenta quando l'attività viene modificata
TaskDeleted rappresenta quando l'attività viene eliminata
Annulla rappresenta quando una modifica è stata annullata
Rifare rappresenta quando una modifica è stata rifatto
DependentEdit rappresenta quando un'attività è stata modificata a causa di una modifica a un'altra attività

Record di cronologia

Tutti i record di cronologia condividono un set comune di campi:

Campo Descrizione
Project il progetto a cui è correlata la cronologia
Attività progetto l'attività a cui è correlata la cronologia. È vuoto se l'attività viene eliminata
XrmUserId L'utente Xrm che ha apportato la modifica all'attività
Data e ora data e ora in cui è stata generata la modifica
Modifica tipo tipo di record di cronologia
Dettagli contenente i dati della cronologia in formato JSON

Le sezioni seguenti descrivono il contenuto del campo payload Dettagli a seconda del tipo di record della cronologia e delle modifiche apportate. Per le descrizioni delle colonne all'interno di Dettagli, vedere Esportare la definizione del contenuto del progetto

Dettagli attivitàcreati

Il record viene creato al momento della creazione dell'attività. Il payload è vuoto.

Dettagli di TaskDeleted

Contiene una singola proprietà "name", ovvero il nome dell'attività al momento dell'eliminazione.

Esempio:

{"name":"Pour concrete"}

Annulla/Ripristina dettagli

Proprietà "revisions" con un valore di matrice contenente tutti i numeri di revisione annullati o rifatti. Il numero corrisponde al suffisso nella proprietà di revisione del record di cronologia.

Esempio:

{"revisions":[11,12]}

Corrisponde al record di cronologia con suffisso del record di revisione (00000000011) in:

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

Dettagli dell'attività Modificata

TaskEdited rappresenta le modifiche alle proprietà dirette di un'attività e crea, elimina e modifica qualsiasi elemento figlio dell'attività, ad esempio elementi dell'elenco di controllo, allegati, assegnazioni, collegamenti e così via.

Modifiche ai campi attività dirette

I dettagli hanno una proprietà "field" con un valore dell'oggetto JSON. Tale oggetto ha i nomi di proprietà modificati come chiavi (possono essere presenti più proprietà dell'attività modificate in una singola azione utente), con un oggetto come valore. Tale oggetto proprietà ha chiavi "precedenti" e "aggiornate" con i valori con i valori precedente e nuovo della proprietà.

Esempio:

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

Per le proprietà di grandi dimensioni (ad esempio, l'assegnazione di note "totalWorkContour"), viene generato un JSON vuoto e non i valori precedenti/aggiornati.

Esempio:

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

Modifiche delle attività che completano un'attività

Qualsiasi modifica di proprietà che completa un'attività aggiunge anche una proprietà booleana completata.

Esempio:

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

Modifiche all'elemento figlio dell'attività

Gli elementi figlio sono simili alle modifiche dei campi, ma la chiave è il nome della proprietà di navigazione e il valore è una matrice. Gli elementi nella matrice possono essere creati (con una proprietà "created":true), deletes ("deleted":true property) o edits (nessun creato o eliminato, ma elenco di proprietà modificate). Gli elementi figlio creati o eliminati hanno un set di proprietà minime necessarie per eseguire il rendering dell'elemento con valori impostati direttamente sulla proprietà . Le modifiche hanno lo stesso formato delle modifiche dei campi nell'attività con i valori precedenti e aggiornati.

Esempio di creazione:

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

Modifica di esempio:

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

Proprietà incluse per le operazioni di creazione ed eliminazione

Per semplici elementi figlio dell'attività (ad esempio elementi dell'elenco di controllo, allegati) durante la creazione e l'eliminazione, vengono incluse tutte le proprietà necessarie per eseguire il rendering di tale elemento. Gli elementi dell'elenco di controllo includono il nome e gli allegati, tra cui nome, uri e tipo.

Tutti gli elementi figlio che sono una relazione tra altre entità includono l'ID dell'altra entità. Ad esempio, le assegnazioni includono resourceId e i collegamenti includono predecessorId.

DependentModifica dettagli

I record di modifica dipendenti vengono generati per un'attività se una modifica a un'altra attività causa la modifica dell'attività corrente. Il record di cronologia include le modifiche apportate all'attività corrente e una proprietà sourceEdit che indica le modifiche apportate all'attività di origine che ha causato la modifica dell'attività corrente.

Esempio: viene aggiunto un collegamento a un'altra attività (origine) all'attività corrente e la data di inizio corrente dell'attività viene spostata fuori un giorno:

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

Più modifiche all'origine

Le operazioni bulk possono modificare più attività contemporaneamente e possono causare più modifiche dipendenti. In questo scenario, le attività nell'operazione bulk sono incluse nell'origineModita con un tipo di record CompoundEdit. Esempi di questi scenari includono l'eliminazione di più attività, il collegamento di più attività, il rientro di più attività. Un record CompoundEdit include il numero di modifiche e le prime tre modifiche.

Esempio

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

Modifiche alle attività di riepilogo

Alcune operazioni, ad esempio l'eliminazione di un'attività o il rientro di un'attività, possono generare più record se l'attività modificata è un'attività di riepilogo perché tali modifiche si applicano anche agli elementi figlio dell'attività. Tutti i record dipendenti includono l'attività di riepilogo come sourceEdit.

Dimensioni record

Il campo Dettagli ha una dimensione massima di 1000 caratteri. Se il record di modifica iniziale supera i 1000 caratteri, il record di cronologia viene ridotto. Tutte le modifiche alle stringhe sono limitate a 100 caratteri e il numero di campi modificati è limitato a 6. Una proprietà "troncata" indica quanti campi diretti non sono stati inclusi. Una proprietà "truncatedElements" indica il numero di elementi figlio non scritti.

Se le dimensioni del record con le restrizioni precedenti superano i 1000 caratteri, l'intero record non viene generato.

Esempio

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