任务历史记录定义
本文介绍“项目历史记录”表中存储在 Dataverse 中的任务历史记录的定义。 任务历史记录表示对任务的更改。
“编辑类型”定义历史记录的类型。
语法 | 说明 |
---|---|
TaskCreated | 表示创建任务时 |
TaskEdited | 表示编辑任务的时间 |
TaskDeleted | 表示何时删除任务 |
Undo | 表示何时撤消更改 |
Redo | 表示已重做更改时 |
DependentEdit | 表示由于对另一个任务的更改而修改的任务 |
历史记录
所有历史记录共享一组通用字段,包括:
字段 | 说明 |
---|---|
Project | 与历史记录相关的项目 |
项目任务 | 与历史记录相关的任务。 如果删除任务,则为空 |
XrmUserId | 对任务进行更改的 Xrm 用户 |
Timestamp | 生成更改的日期和时间 |
编辑类型 | 历史记录的类型 |
详细信息 | 包含 JSON 格式的历史记录数据 |
以下部分介绍了“详细信息”有效负载字段包含的内容,具体取决于历史记录的类型和编辑的内容。 有关详细信息中列的说明,请查看 导出项目内容定义
TaskCreated 详细信息
创建任务时会创建记录。 有效负载为空。
TaskDeleted 详细信息
包含单个属性“name”,这是删除任务时的任务的名称。
示例:
{"name":"Pour concrete"}
撤消/重做详细信息
包含已撤消或重做的所有修订号的数组值的“revisions”属性。 该数字对应于历史记录的修订属性中的后缀。
示例:
{"revisions":[11,12]}
与修订记录后缀 (0000000011 的历史记录匹配,) :
msxrm\_orgxxxyyyy.crm.dynamics.com\_ff69bc0e-3f66-41c3-b40c-aa3035517e38\_0000000011
TaskEdited 详细信息
TaskEdited 表示任务的直接属性编辑,并创建、删除和编辑任何任务子项,例如清单项、附件、作业、链接等。
直接任务域编辑
详细信息具有具有 JSON 对象值的“field”属性。 该对象具有已更改的属性名称作为键, (可以在单个用户操作) 中编辑多个任务属性,并将对象作为值。 该属性对象具有“previous”和“updated”键,这些值具有属性的旧值和新值。
示例:
{
"fields": {
"name": {
"previous": "Pour concrete",
"updated": "Eat donuts"
}
}
}
对于大型属性 (例如注释分配“totalWorkContour”) ,将发出空 JSON,而不是以前的/更新的值。
示例:
{
"fields": {
"notes": {}
}
}
完成任务的任务编辑
完成任务的任何属性编辑也会添加已完成的布尔属性。
示例:
{
"fields": {
"percentComplete": {
"previous": 75,
"updated": 100
}
},
"completed": true
}
任务子元素编辑
子元素类似于字段编辑,但键是导航属性名称,值是数组。 数组中的项可以创建 (具有“created”:true 属性) 、删除 (“deleted”:true 属性) ,或编辑 (未创建或删除,但) 编辑的属性列表。 创建或删除的子元素具有呈现项所需的一组最小属性,这些项具有直接在属性上设置的值。 编辑的格式与任务中的字段编辑具有相同的格式,其中包含以前的值和更新的值。
创建示例:
{
"fields": {
"checklistItems": [
{
"id": "f4be3c03-bc04-ee11-83c4-e04f43e61e09",
"created": true,
"name": "checklistItem1"
}
]
}
}
示例编辑:
{
"fields": {
"checklistItems": [
{
"id": "54219e93-bd04-ee11-83c4-e04f43e61e09",
"completed": {
"previous": false,
"updated": true
}
}
]
}
}
创建和删除的包含属性
对于简单任务子元素 (,例如检查列表项、附件在创建和删除时) ,将包括呈现该项目所需的所有属性。 清单项包括名称,附件包括名称、URI 和类型。
属于其他实体之间关系的任何子元素都包括另一个实体的 ID。 例如,分配包括 resourceId,链接包括 predecessorId。
DependentEdit 详细信息
如果对另一个任务的更改导致修改当前任务,则为任务生成依赖编辑记录。 历史记录包括对当前任务的更改,以及一个 sourceEdit 属性,该属性指示对导致当前任务被修改的源任务的更改。
示例:将链接添加到另一个任务 (源) 当前任务,当前任务的开始日期在一天移出:
{
"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"
}
]
}
}
}
多个源编辑
批量操作可以一次更改多个任务,并可能导致多个依赖性更改。 在这种情况下,批量操作中的任务包含在 sourceEdit 中,其记录类型为 CompoundEdit。 这些方案的示例包括删除多个任务、链接多个任务、缩进多个任务。 CompoundEdit 记录包括编辑计数和前三次编辑。
示例
{
"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"
}
]
}
}
编辑摘要任务
如果编辑的任务是摘要任务,某些操作(如删除任务或缩进任务)可能会生成多个记录,因为这些编辑也适用于任务的子任务。 所有从属记录都包含作为 sourceEdit 的摘要任务。
记录大小
详细信息字段的最大大小为 1000 个字符。 如果初始更改记录超过 1000 个字符,则会剪裁历史记录。 所有字符串更改限制为 100 个字符,更改的字段数限制为 6。 “截断”属性指示未包含的直接字段数。 “truncatedElements”属性指示未写出的子元素的数量。
如果具有上述限制的记录的大小超过 1000 个字符,则不会生成整个记录。
示例
{
"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
}
}
]
}
}