Tính toán dự án theo phương pháp lập trình bằng C#

Chúng tôi có thể tính toán lịch trình hoặc chi phí của dự án bằng cách sử dụng các chế độ tính toán được xác định trong tùy chọn Dự án cho Microsoft Project. Lịch trình dự án hiển thị ngày bắt đầu và ngày kết thúc của tất cả các nhiệm vụ của dự án. Microsoft Project cho phép tính toán dự án theo cách thủ công hoặc tự động. Là một nhà phát triển C#, chúng tôi có thể dễ dàng thiết lập chế độ tính toán dự án trong các ứng dụng .NET và tính toán các thuộc tính của dự án. Trong bài này, chúng ta sẽ học cách tính toán một dự án theo chương trình bằng C#.

Các chủ đề sau sẽ được đề cập trong bài viết này:

API C# để tính toán dự án theo chương trình

Để thiết lập chế độ tính toán dự án, chúng tôi sẽ sử dụng API Aspose.Tasks for .NET. Nó cung cấp ba chế độ tính toán dự án, để tính toán giá trị của các thuộc tính phụ thuộc. Các chế độ tính toán này là:

  • Không có - nó chỉ đặt các thuộc tính cần thiết và không tính toán lại ngày và chi phí của dự án.
  • Thủ công - nó chỉ đặt các thuộc tính đối tượng phụ thuộc mà không tính toán lại ngày và chi phí của dự án.
  • Tự động - nó tự động tính toán lại ngày tháng của dự án và các thuộc tính chi phí.

API xác định các chế độ tính toán được đề cập ở trên trong kiểu liệt kê Chế độ tính toán. Thuộc tính Chế độ tính toán của lớp Dự án cho phép thiết lập hoặc nhận giá trị của Chế độ tính toán. API cũng cho phép thao tác một dự án hiện có để thêm một số sửa đổi. Hơn nữa, nó tạo điều kiện thuận lợi cho việc thực hiện các hoạt động quản lý dự án cơ bản cũng như nâng cao một cách liền mạch. Vui lòng tải xuống DLL của API hoặc cài đặt nó bằng NuGet.

PM> Install-Package Aspose.Tasks

Tính toán dự án thủ công bằng C#

Chúng tôi có thể đặt chế độ tính toán thành thủ công và xác minh nó bằng cách làm theo các bước dưới đây:

  1. Đầu tiên, tạo một thể hiện của lớp Project.
  2. Tiếp theo, đặt chế độ tính toán thành Thủ công.
  3. Sau đó, chỉ định ngày bắt đầu dự án.
  4. Tiếp theo, thêm các nhiệm vụ mới, ví dụ: Nhiệm vụ 1 và Nhiệm vụ 2.
  5. Sau đó, đọc các thuộc tính tác vụ được đặt ở chế độ thủ công.
  6. Sau đó, khởi tạo một đối tượng của lớp TaskLinks và liên kết các tác vụ.
  7. Cuối cùng, xác minh ngày bắt đầu và ngày kết thúc của Nhiệm vụ 2.

Mẫu mã sau đây cho thấy cách tính toán thủ công một dự án bằng C#.

// Ví dụ mã này trình bày cách thiết lập Chế độ tính toán dự án thủ công.
// Tạo một phiên bản của Dự án
Project project = new Project();

// Đặt chế độ tính toán thành Thủ công
project.CalculationMode = CalculationMode.Manual;

// Đặt ngày bắt đầu dự án
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Thêm nhiệm vụ mới
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Các thuộc tính cần thiết được đặt ở chế độ thủ công
Console.WriteLine("Task1.Id Equals 1 : {0} ", task1.Get(Tsk.Id).Equals(1));
Console.WriteLine("Task1 OutlineLevel Equals 1 : {0} ", task1.Get(Tsk.OutlineLevel).Equals(1));
Console.WriteLine("Task1 Start Equals 15/04/2015 08:00 AM : {0} ", task1.Get(Tsk.Start).Equals(new DateTime(2015, 4, 15, 8, 0, 0)));
Console.WriteLine("Task1 Finish Equals 15/04/2015 05:00 PM : {0} ", task1.Get(Tsk.Finish).Equals(new DateTime(2015, 4, 15, 17, 0, 0)));
Console.WriteLine("Task1 Duration Equals 1 day : {0} ", task1.Get(Tsk.Duration).ToString().Equals("1 day"));
Console.WriteLine("Task2 Start Equals 15/04/2015 08:00 AM : {0} ", task2.Get(Tsk.Start).Equals(new DateTime(2015, 4, 15, 8, 0, 0)));
Console.WriteLine("Task2 Finish Equals 15/04/2015 05:00 PM : {0} ", task2.Get(Tsk.Finish).Equals(new DateTime(2015, 4, 15, 17, 0, 0)));
Console.WriteLine("Task2 Duration Equals 1 day : {0} ", task2.Get(Tsk.Duration).ToString().Equals("1 day"));

// Liên kết hai nhiệm vụ với nhau, ngày tháng của chúng sẽ không được tính toán lại ở chế độ thủ công
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Không có thay đổi về ngày của Nhiệm vụ 2
Console.WriteLine("Task1 Start Equals Task2 Start : {0} ", task1.Get(Tsk.Start).Equals(task2.Get(Tsk.Start)));
Console.WriteLine("Task1 Finish Equals Task2 Finish : {0} ", task1.Get(Tsk.Finish).Equals(task2.Get(Tsk.Finish)));
Task1.Id Equals 1 : True
Task1 OutlineLevel Equals 1 : True
Task1 Start Equals 15/04/2015 08:00 AM : True
Task1 Finish Equals 15/04/2015 05:00 PM : True
Task1 Duration Equals 1 day : True
Task2 Start Equals 15/04/2015 08:00 AM : True
Task2 Finish Equals 15/04/2015 05:00 PM : True
Task2 Duration Equals 1 day : True
Task1 Start Equals Task2 Start : True
Task1 Finish Equals Task2 Finish : True

Tính toán dự án tự động bằng C#

Chúng tôi có thể đặt chế độ tính toán thành tự động và xác minh nó bằng cách làm theo các bước dưới đây:

  1. Đầu tiên, tạo một thể hiện của lớp Project.
  2. Tiếp theo, đặt chế độ tính toán thành Tự động.
  3. Sau đó, đặt ngày bắt đầu dự án.
  4. Bây giờ, hãy thêm các nhiệm vụ mới, ví dụ: Nhiệm vụ 1 và Nhiệm vụ 2.
  5. Sau đó, khởi tạo một đối tượng của lớp TaskLinks và liên kết các tác vụ.
  6. Cuối cùng, xác minh các ngày được tính toán lại.

Mẫu mã sau đây cho thấy cách tính toán dự án tự động bằng C#.

// Ví dụ mã này trình bày cách đặt Chế độ tính toán dự án tự động.
// Tạo một phiên bản của Dự án
Project project = new Project();

// Đặt chế độ tính toán thành Tự động
project.CalculationMode = CalculationMode.Automatic;

// Đặt ngày bắt đầu dự án
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Thêm nhiệm vụ mới
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Liên kết các nhiệm vụ
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Xác minh các ngày được tính toán lại
Console.WriteLine("Task1 Start + 1 Equals Task2 Start : {0} ", task1.Get(Tsk.Start).AddDays(1).Equals(task2.Get(Tsk.Start)));
Console.WriteLine("Task1 Finish + 1 Equals Task2 Finish : {0} ", task1.Get(Tsk.Finish).AddDays(1).Equals(task2.Get(Tsk.Finish)));
Console.WriteLine("RootTask Finish Equals Task2 Finish : {0} ", task2.Get(Tsk.Finish).Equals(project.RootTask.Get(Tsk.Finish)));
Console.WriteLine("Project Finish Date Equals Task2 Finish : {0} ", task2.Get(Tsk.Finish).Equals(project.Get(Prj.FinishDate)));
Task1 Start + 1 Equals Task2 Start : True
Task1 Finish + 1 Equals Task2 Finish : True
RootTask Finish Equals Task2 Finish : True
Project Finish Date Equals Task2 Finish : True

Không có chế độ tính toán dự án trong C#

Chúng tôi có thể đặt chế độ tính toán thành tự động và xác minh nó bằng cách làm theo các bước dưới đây:

  1. Đầu tiên, tạo một thể hiện của lớp Project.
  2. Tiếp theo, đặt chế độ tính toán thành Không có.
  3. Sau đó, chỉ định ngày bắt đầu dự án.
  4. Tiếp theo, thêm một nhiệm vụ mới, ví dụ: Nhiệm vụ 1.
  5. Sau đó, đọc thuộc tính nhiệm vụ.
  6. Sau đó, đặt thời lượng tác vụ tính bằng ngày.
  7. Cuối cùng, xác minh ngày bắt đầu và ngày kết thúc của Nhiệm vụ.

Mẫu mã sau đây cho thấy cách đặt tính toán dự án thành không sử dụng C#.

// Ví dụ mã này trình bày cách đặt Chế độ tính toán dự án thành Không có.
// Tạo một phiên bản của Dự án
Project project = new Project();

// Đặt chế độ tính toán thành Không có
project.CalculationMode = CalculationMode.None;

// Thêm một nhiệm vụ mới
Aspose.Tasks.Task task = project.RootTask.Children.Add("Task");

// Lưu ý rằng ngay cả id cũng không được tính toán
Console.WriteLine("Task.Id Equals 0 : {0} ", task.Get(Tsk.Id).Equals(0));
Console.WriteLine("Task.OutlineLevel Equals 0 : {0} ", task.Get(Tsk.OutlineLevel).Equals(0));
Console.WriteLine("Task Start Equals DateTime.MinValue : {0} ", task.Get(Tsk.Start).Equals(DateTime.MinValue));
Console.WriteLine("Task Finish Equals DateTime.MinValue : {0} ", task.Get(Tsk.Finish).Equals(DateTime.MinValue));
Console.WriteLine("Task Duration Equals 0 mins : {0} ", task.Get(Tsk.Duration).ToString().Equals("0 mins"));

// Đặt thuộc tính thời lượng
task.Set(Tsk.Duration, project.GetDuration(2, TimeUnitType.Day));
Console.WriteLine("Task Duration Equals 2 days : {0} ", task.Get(Tsk.Duration).ToString().Equals("2 days"));
Console.WriteLine("Task Start Equals DateTime.MinValue  : {0} ", task.Get(Tsk.Start).Equals(DateTime.MinValue));
Console.WriteLine("Task Finish Equals DateTime.MinValue  : {0} ", task.Get(Tsk.Finish).Equals(DateTime.MinValue));
Task.Id Equals 0 : True
Task.OutlineLevel Equals 0 : False
Task Start Equals DateTime.MinValue : True
Task Finish Equals DateTime.MinValue : True
Task Duration Equals 0 mins : True
Task Duration Equals 2 days : True
Task Start Equals DateTime.MinValue  : True
Task Finish Equals DateTime.MinValue  : True

Nhận giấy phép miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để dùng thử thư viện mà không có giới hạn đánh giá.

Sự kết luận

Trong bài này, chúng ta đã học cách thiết lập các chế độ tính toán dự án theo chương trình. Chúng ta cũng đã thấy cách tính giá trị của các thuộc tính phụ thuộc trong mỗi chế độ tính toán bằng cách sử dụng C#. Ngoài ra, bạn có thể tìm hiểu thêm về Aspose.Tasks for .NET API bằng cách sử dụng tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn.

Xem thêm