חשב פרויקט באופן פרוגרמטי באמצעות C#

אנו יכולים לחשב לוחות זמנים או עלויות של פרויקטים באמצעות מצבי חישוב המוגדרים באפשרויות Project עבור Microsoft Project. לוח זמנים לפרויקט מציג את תאריך ההתחלה והסיום של כל משימות הפרויקט. Microsoft Project מאפשר את חישוב הפרויקט באופן ידני או אוטומטי. כמפתחי C#, אנו יכולים להגדיר בקלות מצב חישוב פרויקט ביישומי NET ולחשב מאפייני פרויקט. במאמר זה נלמד כיצד לחשב פרויקט באופן פרוגרמטי באמצעות C#.

הנושאים הבאים יכוסו במאמר זה:

C# API לחישוב פרויקט באופן פרוגרמטי

להגדרת מצבי חישוב פרויקטים, נשתמש ב-Aspose.Tasks for .NET API. הוא מספק שלושה מצבי חישוב פרויקט, כדי לחשב את הערכים של מאפיינים תלויים. מצבי החישוב הללו הם:

  • אין - הוא מגדיר רק מאפיינים נחוצים ואינו מחשב מחדש את תאריכי הפרויקט והעלויות.
  • ידני - הוא מגדיר רק מאפייני אובייקט תלויים ללא חישוב מחדש של תאריכי פרויקט ועלויות.
  • אוטומטי - זה מחשב מחדש את תאריכי הפרויקט ומאפייני העלות באופן אוטומטי.

ה-API מגדיר את מצבי החישוב שהוזכרו לעיל בספירת CalculationMode. המאפיין CalculationMode של המחלקה Project מאפשר להגדיר או לקבל את הערך של CalculationMode. ה-API מאפשר גם לבצע מניפולציות על פרויקט קיים על מנת להוסיף כמה שינויים. יתר על כן, זה מקל על ביצוע פעולות ניהול פרויקטים בסיסיות כמו גם מתקדמות בצורה חלקה. אנא הורד את ה-DLL של ה-API או התקן אותו באמצעות NuGet.

PM> Install-Package Aspose.Tasks

חישוב ידני של פרויקט באמצעות C#

אנו יכולים להגדיר את מצב החישוב לידני ולאמת אותו על ידי ביצוע השלבים המפורטים להלן:

  1. ראשית, צור מופע של המחלקה Project.
  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. ראשית, צור מופע של המחלקה Project.
  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. ראשית, צור מופע של המחלקה Project.
  2. לאחר מכן, הגדר את מצב החישוב ל-None.
  3. לאחר מכן, ציין את תאריך תחילת הפרויקט.
  4. לאחר מכן, הוסף משימה חדשה, למשל, משימה 1.
  5. לאחר מכן, קרא את מאפייני המשימה.
  6. לאחר מכן, הגדר את משך המשימה בימים.
  7. לבסוף, אמת את תאריך ההתחלה והסיום של המשימה.

דוגמת הקוד הבאה מראה כיצד להגדיר את חישוב הפרויקט ללא שימוש באמצעות C#.

// דוגמה זו מדגימה כיצד להגדיר את מצב חישוב פרויקט ל-None.
// צור מופע של הפרויקט
Project project = new Project();

// הגדר את מצב החישוב ל-None
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 עבור .NET API באמצעות תיעוד. בכל מקרה של אי בהירות, אנא אל תהסס לפנות אלינו בפורום.

ראה גם