حساب المشروع برمجيا باستخدام C#

يمكننا حساب جداول المشروع أو التكاليف باستخدام أوضاع الحساب المحددة في خيارات Project لـ Microsoft Project. يعرض جدول المشروع تاريخ البدء والانتهاء لجميع مهام المشروع. يسمح Microsoft Project بحساب المشروع يدويًا أو تلقائيًا. بصفتنا مطور C# ، يمكننا بسهولة تعيين وضع حساب المشروع في تطبيقات .NET وحساب خصائص المشروع. في هذه المقالة ، سوف نتعلم كيفية حساب المشروع برمجيًا باستخدام C#.

سيتم تناول الموضوعات التالية في هذه المقالة:

C# API لحساب المشروع برمجيًا

لتعيين أوضاع حساب المشروع ، سنستخدم Aspose.Tasks for .NET API. يوفر ثلاثة أوضاع لحساب المشروع ، لحساب قيم الخصائص التابعة. أوضاع الحساب هذه هي:

  • لا شيء - يعيّن الخصائص الضرورية فقط ولا يعيد حساب تواريخ المشروع وتكاليفه.
  • يدوي - يعيّن فقط خصائص الكائن التابعة دون إعادة حساب تواريخ المشروع وتكاليفه.
  • تلقائي - يعيد حساب تواريخ المشروع وخصائص التكلفة تلقائيًا.

تحدد API أوضاع الحساب المذكورة أعلاه في تعداد CalculationMode. تسمح خاصية CalculationMode لفئة مشروع بتعيين أو الحصول على قيمة CalculationMode. تسمح API أيضًا بمعالجة مشروع موجود لإضافة بعض التعديلات. علاوة على ذلك ، فإنه يسهل أداء عمليات إدارة المشاريع الأساسية والمتقدمة بسلاسة. يرجى إما تنزيل DLL الخاصة بواجهة برمجة التطبيقات أو تثبيته باستخدام NuGet.

PM> Install-Package Aspose.Tasks

حساب المشروع اليدوي باستخدام C#

يمكننا ضبط وضع الحساب على يدوي والتحقق منه باتباع الخطوات الواردة أدناه:

  1. أولاً ، قم بإنشاء مثيل لفئة المشروع.
  2. بعد ذلك ، اضبط وضع الحساب على يدوي.
  3. ثم حدد تاريخ بدء المشروع.
  4. بعد ذلك ، أضف مهام جديدة ، على سبيل المثال ، المهمة 1 والمهمة 2.
  5. بعد ذلك ، اقرأ خصائص المهمة المعينة في الوضع اليدوي.
  6. بعد ذلك ، قم بتهيئة كائن لفئة TaskLinks وربط المهام.
  7. أخيرًا ، تحقق من تاريخ بدء المهمة 2 وانتهائها.

يوضح نموذج التعليمات البرمجية التالي كيفية حساب مشروع يدويًا باستخدام C#.

// يوضح مثال الرمز هذا كيفية تعيين وضع الحساب اليدوي للمشروع.
// قم بإنشاء مثيل للمشروع
Project project = new Project();

// اضبط وضع الحساب على يدوي
project.CalculationMode = CalculationMode.Manual;

// حدد تاريخ بدء المشروع
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// أضف مهام جديدة
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// يتم ضبط الخصائص الضرورية في الوضع اليدوي
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"));

// ربط مهمتين معًا لن يتم إعادة حساب تواريخهما في الوضع اليدوي
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// لا تغيير في تواريخ المهمة 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

حساب تلقائي للمشروع باستخدام C#

يمكننا ضبط وضع الحساب على تلقائي والتحقق منه باتباع الخطوات الواردة أدناه:

  1. أولاً ، قم بإنشاء مثيل لفئة المشروع.
  2. بعد ذلك ، اضبط وضع الحساب على تلقائي.
  3. ثم قم بتعيين تاريخ بدء المشروع.
  4. الآن ، أضف مهام جديدة ، على سبيل المثال ، المهمة 1 والمهمة 2.
  5. بعد ذلك ، قم بتهيئة كائن لفئة TaskLinks وربط المهام.
  6. أخيرًا ، تحقق من التواريخ المعاد حسابها.

يوضح نموذج التعليمات البرمجية التالي كيفية حساب المشروع تلقائيًا باستخدام C#.

// يوضح مثال الرمز هذا كيفية تعيين وضع الحساب التلقائي للمشروع.
// قم بإنشاء مثيل للمشروع
Project project = new Project();

// اضبط وضع الحساب على تلقائي
project.CalculationMode = CalculationMode.Automatic;

// حدد تاريخ بدء المشروع
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// أضف مهام جديدة
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// ربط المهام
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// تحقق من التواريخ المعاد حسابها
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

لا يوجد وضع حساب المشروع في C#

يمكننا ضبط وضع الحساب على تلقائي والتحقق منه باتباع الخطوات الواردة أدناه:

  1. أولاً ، قم بإنشاء مثيل لفئة المشروع.
  2. بعد ذلك ، اضبط وضع الحساب على لا شيء.
  3. ثم حدد تاريخ بدء المشروع.
  4. بعد ذلك ، أضف مهمة جديدة ، على سبيل المثال ، المهمة 1.
  5. ثم اقرأ خصائص المهمة.
  6. بعد ذلك ، حدد مدة المهمة بالأيام.
  7. أخيرًا ، تحقق من تاريخ بدء المهمة وانتهائها.

يُظهر نموذج التعليمات البرمجية التالي كيفية تعيين حساب المشروع على بلا باستخدام C#.

// يوضح مثال الرمز هذا كيفية تعيين وضع حساب المشروع على لا شيء.
// قم بإنشاء مثيل للمشروع
Project project = new Project();

// اضبط وضع الحساب على لا شيء
project.CalculationMode = CalculationMode.None;

// أضف مهمة جديدة
Aspose.Tasks.Task task = project.RootTask.Children.Add("Task");

// لاحظ أنه لم يتم حساب المعرفات الزوجية
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"));

// حدد خاصية المدة
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

احصل على رخصة مجانية

يمكنك الحصول على ترخيص مؤقت مجاني لتجربة المكتبة دون قيود التقييم.

استنتاج

في هذه المقالة ، تعلمنا كيفية تعيين أوضاع حساب المشروع برمجيًا. لقد رأينا أيضًا كيف يتم حساب قيم الخصائص التابعة في كل وضع حساب باستخدام C#. بالإضافة إلى ذلك ، يمكنك معرفة المزيد حول Aspose.Tasks for .NET API باستخدام التوثيق. في حالة وجود أي غموض ، فلا تتردد في الاتصال بنا على المنتدى.

أنظر أيضا