タスク履歴の定義
この記事では、プロジェクト履歴テーブルの Dataverse に格納されるタスク履歴レコードの定義について説明します。 タスク履歴レコードは、タスクの変更を表します。
"Edit Type" は、履歴レコードの種類を定義します。
構文 | 説明 |
---|---|
TaskCreated | は、タスクの作成時を表します |
TaskEdited | は、タスクの編集時を表します |
TaskDeleted | は、タスクが削除されたときを表します |
Undo | は、変更が元に戻されたときを表します |
Redo | は、変更がやり直されたときを表します |
DependentEdit | は、別のタスクに対する変更のためにタスクが変更されたときを表します |
履歴レコード
すべての履歴レコードは、次のような共通のフィールド セットを共有します。
フィールド | 説明 |
---|---|
Project | 履歴が関連するプロジェクト |
プロジェクト タスク | 履歴が関連付けられているタスク。 タスクが削除された場合は空白です |
XrmUserId | タスクに変更を加えた Xrm ユーザー |
Timestamp | 変更が生成された日時 |
編集の種類 | 履歴レコードの種類 |
詳細 | JSON 形式の履歴データを含む |
次のセクションでは、履歴レコードの種類と編集内容に応じて、[詳細] ペイロード フィールドに含まれる内容について説明します。 [詳細] 内の列の説明については、「プロジェクト コンテンツ定義のエクスポート」を参照してください
TaskCreated の詳細
レコードは、タスクの作成時に作成されます。 ペイロードが空です。
TaskDeleted の詳細
1 つのプロパティ "name" が含まれます。これは、タスクが削除されたときの名前です。
例:
{"name":"Pour concrete"}
元に戻す/やり直しの詳細
元に戻すかやり直したすべてのリビジョン番号を保持する配列値を持つ "revision" プロパティ。 数値は、履歴レコードの revision プロパティのサフィックスに対応します。
例:
{"revisions":[11,12]}
リビジョン レコード サフィックス (0000000011) を含む履歴レコードと一致する対象:
msxrm\_orgxxxyyyy.crm.dynamics.com\_ff69bc0e-3f66-41c3-b40c-aa3035517e38\_0000000011
TaskEdited の詳細
TaskEdited は、タスクに対する直接のプロパティ編集を表し、タスクの子項目 (チェックリスト項目、添付ファイル、割り当て、リンクなど) を作成、削除、編集します。
直接タスク フィールドの編集
詳細には、JSON オブジェクト値を持つ "field" プロパティがあります。 そのオブジェクトには、変更されたプロパティ名がキーとして含まれます (1 つのユーザー アクションで複数のタスク プロパティを編集できます)。オブジェクトを値として指定します。 そのプロパティ オブジェクトには、プロパティの古い値と新しい値を持つ値を持つ "前" キーと "更新済み" キーがあります。
例:
{
"fields": {
"name": {
"previous": "Pour concrete",
"updated": "Eat donuts"
}
}
}
大きなプロパティ (たとえば、ノートの割り当て "totalWorkContour") の場合、空の JSON が生成され、以前または更新された値は生成されません。
例:
{
"fields": {
"notes": {}
}
}
タスクを完了するタスクの編集
タスクを完了するプロパティ編集では、完了したブール型プロパティも追加されます。
例:
{
"fields": {
"percentComplete": {
"previous": 75,
"updated": 100
}
},
"completed": true
}
タスク子要素の編集
子要素はフィールドの編集に似ていますが、キーはナビゲーション プロパティ名であり、値は配列です。 配列内の項目は、作成 ("created":true プロパティ)、削除 ("deleted":true プロパティ)、または編集 (作成または削除は行われませんが、編集されたプロパティの一覧) を作成できます。 作成または削除された子要素には、プロパティに直接設定された値を持つアイテムをレンダリングするために必要な最小プロパティのセットがあります。 編集の形式は、前の値と更新された値を含むタスクのフィールド編集と同じ形式です。
create の例:
{
"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 プロパティが含まれます。
例: 現在のタスクに別のタスク (ソース) にリンクが追加され、現在のタスクの開始日が 1 日外に移動されます。
{
"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"
}
]
}
}
}
複数のソース編集
一括操作では、一度に複数のタスクが変更され、複数の依存する変更が発生する可能性があります。 そのシナリオでは、一括操作のタスクは、CompoundEdit レコード型の sourceEdit に含まれます。 これらのシナリオの例としては、複数のタスクの削除、複数のタスクのリンク、複数のタスクのインデントなどがあります。 CompoundEdit レコードには、編集回数と最初の 3 つの編集が含まれます。
例
{
"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 としてサマリー タスクが含まれます。
レコード サイズ
詳細フィールドの最大サイズは 1,000 文字です。 最初の変更レコードが 1000 文字を超える場合、履歴レコードはトリミングされます。 すべての文字列の変更は 100 文字に制限され、変更されたフィールドの数は 6 に制限されます。 "切り捨てられた" プロパティは、含まれていない直接フィールドの数を示します。 "truncatedElements" プロパティは、書き出されなかった子要素の数を示します。
上記の制限があるレコードのサイズが 1,000 文字を超える場合、レコード全体は生成されません。
例
{
"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
}
}
]
}
}