リソースを作成し、タスクにリンクします
MPPファイルを使用している間、リソースを作成し、プロジェクトのタスクにリンクする必要がある場合があります。この記事では、.NETアプリケーションにMPPファイルをロードし、 VSTOと ASOPSE.TASKS for .NETの両方を使用してタスクにリソースを割り当てる方法を示します。
導入
プロジェクトのスケジューリングでは、リソースをタスクに関連付けることで、ワークロードの計画、コストの見積もり、および進捗追跡が可能になります。リソースは通常、人、機器、または材料を表し、それらの適切な割り当ては意味のあるプロジェクト分析の鍵です。
この記事は、プログラム的にする方法を示しています:
- Microsoftプロジェクトファイルに新しいリソースを追加します。
- これらのリソースをタスクに割り当てます。
この機能は、.NET APIのLegacy VSTO Interopと最新のAspose.tasksの両方を使用して実証されています。
リソースを作成し、VSTOを使用してタスクにリンクします
リソースを作成し、Microsoft Office Interopを使用してタスクにリンクするには:
- ビジュアルスタジオプロジェクトを作成します。
- comタブからMicrosoft Project 12.0オブジェクトライブラリへの参照を追加します。
microsoft.office.interop.msproject
をインポートします。- 以下のコードサンプルを使用してください。
スクリーンショットの前後に、ガントのプロジェクト構造とリソースビューが表示されます。
📎入力ファイル:ガントチャートビュー
📎入力ファイル:リソースシートビュー
VSTOコードの例
1 Microsoft.Office.Interop.MSProject.Application projectApplication = new Application();
2 object missingValue = System.Reflection.Missing.Value;
3
4 projectApplication.FileOpenEx(@"SampleProject.mpp",
5 missingValue, missingValue, missingValue, missingValue,
6 missingValue, missingValue, missingValue, missingValue,
7 missingValue, missingValue, PjPoolOpen.pjPoolReadOnly,
8 missingValue, missingValue, missingValue, missingValue,
9 missingValue);
10
11 Microsoft.Office.Interop.MSProject.Project project = projectApplication.ActiveProject;
12
13 int iResourceId = 1;
14
15 foreach (Task tsk in project.Tasks)
16 {
17 string developer = "Developer0" + iResourceId;
18 project.Resources.Add(developer, iResourceId);
19 tsk.Assignments.Add(tsk.ID, iResourceId, missingValue);
20 iResourceId++;
21 }
22
23 projectApplication.FileCloseAll(Microsoft.Office.Interop.MSProject.PjSaveType.pjSave);
Output file: Gantt chart view
Output file: Resource sheet view
注記
- リソースはタスクごとに順番に追加され、割り当てられます。
Assignments.Add
メソッドには、タスクとリソースの識別子が必要です。- COM 相互運用には、ライフサイクルと参照の管理を慎重に行う必要があります。
Aspose.Tasks for .NET を使用してリソースを作成し、タスクにリンクする
Aspose.Tasks を使用して同じことを行うには、次の手順を実行します。
- Visual Studio プロジェクトを作成します。
- .NET タブで Aspose.Tasks への参照を追加します。
Aspose.Tasks
名前空間をインポートします。- 以下のサンプルコードを使用します。
1Project project = new Project("New Project.mpp");
2
3// Declare ChildTasksCollector class object
4ChildTasksCollector collector = new ChildTasksCollector();
5
6// Use TaskUtils to get all children tasks in RootTask
7TaskUtils.Apply(project.RootTask, collector, 0);
8
9// Define Resources
10for (int i = 0; i <= 4; i++)
11{
12 // Add resource to project
13 Resource newResource = project.Resources.Add("Developer0" + i);
14 newResource.Set(Rsc.Type, ResourceType.Work);
15
16 // Define assignment
17 ResourceAssignment newResourceAssignment = project.ResourceAssignments.Add((Task)collector.Tasks[i], newResource);
18}
19
20project.Save("CreateResourcesAndLinkToTasks_out.mpp", SaveFileFormat.MPP);
ハイライト
- リソースは
project.Resources.Add
メソッドで追加されます。 - 割り当ては
project.ResourceAssignments.Add(task, resource)
を使用してタスクにリンクされます。 - API は簡潔で、完全に管理されており、サーバー環境と互換性があります。
比較表
機能 | VSTO / 相互運用性 | Aspose.Tasks for .NET |
---|---|---|
Microsoft Project が必要 | ✅ はい | ❌ いいえ |
プラットフォームサポート | 🖥 Windows のみ | ✅ クロスプラットフォーム |
導入しやすい | ❌ Office ランタイムが必要 | ✅ .NET で完結 |
API の冗長性 | ⚠ 高 | ✅ 最小限で直感的 |
割り当て方法 | Assignments.Add(taskID, resourceID) | ResourceAssignments.Add(task, res) |
出力ファイル形式の柔軟性 | 限定的 | ✅ MPP、XML、PDF、HTML など |
概要
リソースの作成と割り当ては、現実的で追跡可能なプロジェクト計画を作成する上で重要なステップです。VSTO は Microsoft Project のオブジェクト モデルへのネイティブ アクセスを提供しますが、移植性、拡張性、コードの複雑さの点で制限があります。
Aspose.Tasks for .NET は、Microsoft Project をインストールすることなく、MPP ファイルで効率的なリソース管理を可能にする高レベル API を提供します。そのため、Web アプリ、サービス、およびクロスプラットフォーム .NET ワークロードに最適なソリューションです。
関連するシナリオについては、以下をご覧ください。