MPPにメタデータを書きます
Contents
[
Hide
Show
].NETのAspose.tasksは、Microsoft Project(MPP)ファイルにメタデータを書き込む機能を提供します。これには、カレンダー、タスク、タスクリンク、リソース、リソースの割り当てに関連するプロパティが含まれます。このようなメタデータは、統合、検証、またはプロジェクト追跡ワークフローに不可欠です。
この例は、Asops.tasks APIを使用して、さまざまなタイプのメタデータをMPPファイルに書き込む方法を示しています。タスクの連絡先情報、リソース割り当ての詳細、カレンダー設定、カスタム属性などの一般的なフィールドをカバーしています。
例で使用されているメタデータ
次のメタデータフィールドが適用されます。
- カレンダー
- CalendarName
- タスク
- Contact
- IsMarked
- IgnoreWarnings
- TaskLink
- LagFormat
- LinkLag
- リソース
- Type
- Initials
- MaxUnits
- Code
- Group
- EmailAddress
- NTAccount
- IsGeneric
- AccrueAt
- TeamAssignmentPool
- CostCenter
- ResourceasSignment
- Uid
- Work
- RemainingWork
- RegularWork
- Start
- Finish
ここではマークされており、無知なワーニングはタスクのために新しく追加されたフィールドです。同様に、リソースについては、TeamAssignmentPoolとCostCenterプロパティが提供されます。
MPPファイルにメタデータを書き込む方法を示すために、サンプルコードで次の手順に従います。
- 新しい空白のMPPファイルを開きます。
- プロジェクトカレンダーの月曜日に労働時間を追加し、プロジェクトカレンダー名を変更します。
- タスクリンクとラグを備えた3つのタスクを追加します。
- 2つのリソース、1つの予算作業、1つの予算コストリソース(合計4つ)を追加します。
- プロジェクトルートタスク(プロジェクトの要約タスク)に予算リソースを割り当てます。
- 別の2つのリソースを最初と2番目のタスクに割り当てます。
- プロジェクトのベースラインを設定します。
- 新しいタスク拡張属性を追加します。
- 変更をMPPファイルとして保存します。
1Project project = new Project("New Project.mpp");
2
3// Add working times to project calendar
4WorkingTime wt = new WorkingTime();
5wt.FromTime = new DateTime(2010, 1, 1, 19, 0, 0);
6wt.ToTime = new DateTime(2010, 1, 1, 20, 0, 0);
7WeekDay day = project.Get(Prj.Calendar).WeekDays.ToList()[1];
8day.WorkingTimes.Add(wt);
9
10// Change calendar name
11project.Get(Prj.Calendar).Name = "CHANGED NAME!";
12
13// Add tasks and set task meta data
14Task task = project.RootTask.Children.Add("Task 1");
15task.Set(Tsk.DurationFormat, TimeUnitType.Day);
16task.Set(Tsk.Duration, project.GetDuration(3));
17task.Set(Tsk.Contact, "Rsc 1");
18task.Set(Tsk.IsMarked, true);
19task.Set(Tsk.IgnoreWarnings, true);
20Task task2 = project.RootTask.Children.Add("Task 2");
21task2.Set(Tsk.DurationFormat, TimeUnitType.Day);
22task2.Set(Tsk.Contact, "Rsc 2");
23
24// Link tasks
25project.TaskLinks.Add(task, task2, TaskLinkType.FinishToStart, project.GetDuration(-1, TimeUnitType.Day));
26
27// Set project start date
28project.Set(Prj.StartDate, new DateTime(2013, 8, 13, 9, 0, 0));
29
30// Add resource and set resource meta data
31Resource resource = project.Resources.Add("Rsc 1");
32resource.Set(Rsc.Type, ResourceType.Work);
33resource.Set(Rsc.Initials, "WR");
34resource.Set(Rsc.AccrueAt, CostAccrualType.Prorated);
35resource.Set(Rsc.MaxUnits, 1);
36resource.Set(Rsc.Code, "Code 1");
37resource.Set(Rsc.Group, "Workers");
38resource.Set(Rsc.EMailAddress, "1@gmail.com");
39resource.Set(Rsc.WindowsUserAccount, "user_acc1");
40resource.Set(Rsc.IsGeneric, new NullableBool(true));
41resource.Set(Rsc.AccrueAt, CostAccrualType.End);
42resource.Set(Rsc.StandardRate, 10);
43resource.Set(Rsc.StandardRateFormat, RateFormatType.Day);
44resource.Set(Rsc.OvertimeRate, 15);
45resource.Set(Rsc.OvertimeRateFormat, RateFormatType.Hour);
46resource.Set(Rsc.IsTeamAssignmentPool, true);
47resource.Set(Rsc.CostCenter, "Cost Center 1");
48
49// Create resource assignment and set resource assignment meta data
50ResourceAssignment assignment = project.ResourceAssignments.Add(task, resource);
51assignment.Set(Asn.Uid, 1);
52assignment.Set(Asn.Work, task.Get(Tsk.Duration));
53assignment.Set(Asn.RemainingWork, assignment.Get(Asn.Work));
54assignment.Set(Asn.RegularWork, assignment.Get(Asn.Work));
55task.Set(Tsk.Work, assignment.Get(Asn.Work));
56
57resource.Set(Rsc.Work, task.Get(Tsk.Work));
58assignment.Set(Asn.Start, task.Get(Tsk.Start));
59assignment.Set(Asn.Finish, task.Get(Tsk.Finish));
60
61// Add extended attribute for project and task
62ExtendedAttributeDefinition attr = ExtendedAttributeDefinition.CreateTaskDefinition(CustomFieldType.Flag, ExtendedAttributeTask.Flag1, "My Flag Field");
63project.ExtendedAttributes.Add(attr);
64
65ExtendedAttribute taskAttr = attr.CreateExtendedAttribute();
66taskAttr.FlagValue = true;
67task2.ExtendedAttributes.Add(taskAttr);
68
69project.Save("WriteMetaData_out.mpp", SaveFileFormat.MPP);
概要
MPP ファイルにメタデータを書き込むには、さまざまなプロジェクト要素に対して構造化されたフィールドを設定する必要があります。Aspose.Tasks for .NET を使用すると、オブジェクトモデルを通じてこれらのフィールドに直接アクセスできます。このアプローチにより、他のシステムとの統合が可能となり、MPP ファイルを詳細なレポート作成や検証のために準備できます。