Migrer vers Aspose.Tasks pour .net 8.0+
Aspose.tasks pour .NET 8.0.0 est une version remaniée de l’API qui comprend des changements considérables du point de vue de l’utilisation. Les principales différences des deux implémentations comprennent:
- L’API héritée autorisée à définir des domaines publics de diverses classes de données de projet telles que le projet, les tâches, les ressources, etc. tandis que la nouvelle implémentation introduit et obtient des méthodes pour obtenir la même chose
- Recalculer les méthodes qui doivent être appelées manuellement par l’utilisateur dans l’API Legacy après certaines opérations telles que les affectations de ressources. L’API ASPOSE.Tasks pour .NET effectue automatiquement la plupart de ces calculs sans l’intervention de l’utilisateur requise.
- La nouvelle API fournit des modes de recalcul manuel ainsi que automatique similaires à Microsoft Project (MSP). Le mode manuel ne calcule que les champs nécessaires tandis que le mode automatique recalcule tout. Cela élimine la nécessité d’appeler manuellement les méthodes de recalcul et améliore l’utilisation globale de l’API.
Cette nouvelle API est incompatible avec l’API Legacy et l’objectif de cet article est de vous aider à migrer votre code vers la nouvelle API. L’article montre des échantillons de code comparatifs de l’héritage et de la nouvelle implémentation de l’API, et comprend:
Définition des propriétés du projet par défaut
L’API héritée d’Aspose.tasks a permis de définir les propriétés par défaut d’un projet en définissant directement les attributs publics de la classe de projet. Dans la nouvelle implémentation de l’API, cependant, il expose SET et obtient des méthodes pour y parvenir.
Exemple de code API hérité
1 Project prj = new Project();
2 prj.StartDate = DateTime.Now;
3 prj.DefaultStartTime = prj.StartDate;
4 prj.DefaultTaskType = TaskType.FixedDuration;
5 prj.DefaultStandardRate = 15;
6 prj.DefaultOvertimeRate = 12;
7 prj.DefaultTaskEVMethod = EarnedValueMethodType.PercentComplete;
8 prj.DefaultFixedCostAccrual = CostAccrualType.Prorated;
9 prj.Save( "Project4.xml" , Aspose.Tasks.Saving.SaveFileFormat.XML);
1'Create a project instance
2 Dim prj As New Project()
3 prj.IsScheduleFromStart = True
4 prj.DefaultStartTime = prj.StartDate
5 prj.DefaultTaskType = TaskType.FixedDuration
6 prj.DefaultStandardRate = 15
7 prj.DefaultOvertimeRate = 12
8 prj.DefaultTaskEVMethod = EarnedValueMethodType.PercentComplete
9 prj.DefaultFixedCostAccrual = CostAccrualType.Prorated
10 prj.Save("Project4.xml", Aspose.Tasks.Saving.SaveFileFormat.XML)
New Aspose.Tasks for .NET 8.x Approach
1 Project project = new Project();
2 project.Set(Prj.ScheduleFromStart,true);
3 project.Set(Prj.StartDate, DateTime.Now);
4 project.Set(Prj.DefaultStartTime,project.Get(Prj.StartDate));
5 project.Task(TaskType, TaskType.FixedDuration);
6 project.Set(Prj.DefaultStandardRate, 15);
7 project.Set(Prj.DefaultOvertimeRate, 12);
8 project.Set(Prj.DefaultTaskEVMethod, EarnedValueMethodType.PercentComplete);
9 project.Set(Prj.DefaultFixedCostAccrual, CostAccrualType.Prorated);
10 project.Save("ProjectDefaultProps.xml", SaveFileFormat.XML);
1 Dim project As New Project()
2 project.[Set](Prj.ScheduleFromStart, True)
3 project.Task(TaskType, DateTime.Now)
4 project.[Set](Prj.DefaultStartTime, project.[Get](Prj.StartDate))
5 project.[Set](Prj.DefaultTaskType, TaskType.FixedDuration)
6 project.[Set](Prj.DefaultStandardRate, 15)
7 project.[Set](Prj.DefaultOvertimeRate, 12)
8 project.[Set](Prj.DefaultTaskEVMethod, EarnedValueMethodType.PercentComplete)
9 project.[Set](Prj.DefaultFixedCostAccrual, CostAccrualType.Prorated)
10 project.Save("ProjectDefaultProps.xml", SaveFileFormat.XML)
Creating and Adding Calendar to a Project
In order for proper functionality of Calendar items added to the Project, the legacy API required to recalculate Calendar UIDs. In the new API, however, UIDs recalculation are automatically dealt and there is no need to call the calculations manually.
Legacy API Code Sample
1 Project prj = new Project();
2 Aspose.Tasks.Calendar cal1 = new Aspose.Tasks.Calendar();
3 cal1.Name ="no info";
4 Aspose.Tasks.Calendar cal2 = new Aspose.Tasks.Calendar(1);
5 cal2.Name = "no name";
6 Aspose.Tasks.Calendar cal3 = new Aspose.Tasks.Calendar( "cal3" );
7 prj.Calendars.Add(cal1);
8 prj.Calendars.Add(cal2);
9 prj.Calendars.Add(cal3);
10 prj.Save( "Project.Xml", Aspose.Tasks.Saving.SaveFileFormat.XML);
1 'Create a project instance
2 Dim prj As New Project()
3 'Define Calendar
4 Dim cal1 As New Aspose.Tasks.Calendar()
5 cal1.Name = "no info"
6 Dim cal2 As New Aspose.Tasks.Calendar(1)
7 cal2.Name = "no name"
8 Dim cal3 As New Aspose.Tasks.Calendar("cal3")
9 prj.Calendars.Add(cal2)
10 prj.Calendars.Add(cal3)
11 prj.CalcCalendarUids()
12 'Save the Project
13 prj.Save("Project.Xml", Aspose.Tasks.Saving.SaveFileFormat.XML)
New Aspose.Tasks for .NET 8.x Approach
1
2
3 Project prj = new Project();
4 Aspose.Tasks.Calendar cal1 = prj.Calendars.Add("no info");
5 Aspose.Tasks.Calendar cal2 = prj.Calendars.Add("no name");
6 Aspose.Tasks.Calendar cal3 = prj.Calendars.Add("cal3");
7 prj.Save("Project.Xml", Aspose.Tasks.Saving.SaveFileFormat.XML);
1 'Create a project instance
2 Dim prj As New Project()
3 Dim cal1 As Aspose.Tasks.Calendar = prj.Cal
4 Dim cal2 As Aspose.Tasks.Calendar = prj.Calendars.Add("no name")
5 Dim cal3 As Aspose.Tasks.Calendar = prj.Calendars.Add("cal3")
6 prj.Save("Project.Xml", Aspose.Tasks.Saving.SaveFileFormat.XML)
Making A Standard Calendar
Recalculating Calendar UIDs are no more required in the new ASpose.Tasks’ API as compared to the legacy API.
Legacy API Code Sample
1
2
3 //Create a project instance
4 Project prj = new Project();
5 //Define Calendar and make it standard
6 Aspose.Tasks.Calendar cal1 = new Aspose.Tasks.Calendar("My Cal");
7 Aspose.Tasks.Calendar.MakeStandardCalendar(cal1);
8 prj.Calendars.Add(cal1);
9 prj.CalcCalendarUids();
10 prj.Save( "Project.Xml" , Aspose.Tasks.Saving.SaveFileFormat.XML);
1 'Create a project instance
2 Dim prj As New Project()
3 'Define Calendar and make it standard
4 Dim cal1 As New Aspose.Tasks.Calendar("My Cal")
5 Aspose.Tasks.Calendar.MakeStandardCalendar(cal1)
6 prj.Calendars.Add(cal1)
7 prj.CalcCalendarUids()
8 prj.Save("Project.Xml", Aspose.Tasks.Saving.SaveFileFormat.XML)
New Aspose.Tasks for .NET 8.x Approach
1 // Create a project instance
2 Project project = new Project();
3
4 // Define Calendar and make it standard
5 Aspose.Tasks.Calendar cal1 = project.Calendars.Add("My Cal");
6 Aspose.Tasks.Calendar.MakeStandardCalendar(cal1);
7 project.Save("Project.Xml", Aspose.Tasks.Saving.SaveFileFormat.XML);
1 'Create a project instance
2 Dim project As New Project()
3
4 'Define Calendar and make it standard
5 Dim cal1 As Aspose.Tasks.Calendar = project.Calendars.Add("My Cal")
6 Aspose.Tasks.Calendar.MakeStandardCalendar(cal1)
7
8 'Save the Project
9 project.Save("Project.Xml", Aspose.Tasks.Saving.SaveFileFormat.XML)
Create and Add Task to Project
Creating a new task in the legacy API, it required to define a root task, add it to the project as its root task, and then add a new task to this root task as a child. The new API, however, doesn’t need you to define the root task and takes care of it automatically while adding the first task to the project.
Legacy API Code Sample
1 Project project = new Project();
2 Task rootTask = new Task();
3 Task tskGen = new Task("Task1");
4 tskGen.Id = 1;
5 tskGen.Uid = 1;
6 tskGen.Start = DateTime.Parse("17-Aug-2009 8:00 AM" );
7 tskGen.Finish = DateTime.Parse( "17-Aug-2009 5:00 PM" );
8 project.RootTask = rootTask;
9 project.RootTask.Children.Add(tskGen);
10 project.Save("Project.xml", SaveFileFormat.XML);
1 Dim project As New Project()
2 Dim tskGen As New Task("Task1")
3 tskGen.Id = 1
4 tskGen.Uid = 1
5 tskGen.Start = DateTime.Parse("17-Aug-2009 8:00 AM")
6 tskGen.Finish = DateTime.Parse("17-Aug-2009 5:00 PM")
7 project.RootTask = rootTask
8 project.RootTask.Children.Add(tskGen)
9 project.Save("Project.xml", SaveFileFormat.XML)
New Aspose.Tasks for .NET 8.x Approach
1 Project project = new Project();
2 Task task = project.RootTask.Children.Add("Task 1");
3 task.Set(Tsk.Start, project.RootTask.Get(Tsk.Start).AddDays(1));
4 // set task start day
5 project.Save("CreateTasks.xml", SaveFileFormat.XML);
1 Dim project As New Project()
2 Dim task As Task = project.RootTask.Children.Add("Task 1")
3 task.[Set](Tsk.Start, project.RootTask.[Get](Tsk.Start).AddDays(1))
4 'set task start day
5 project.Save("CreateTasks.xml", SaveFileFormat.XML)
Create and Add Resource to Project
Set and Get methods have been added to the Resource class of the API for manipulating attributes related to a project’s Resource.
Legacy API Code Sample
1 Project project = new Project();
2 Resource res = Resource(new "Res1");
3 res.Id = 1;
4 res.Uid = 1;
5 res.Start = DateTime.Parse("19-Aug-2009 8:00 AM");
6 res.Finish = DateTime.Parse("19-Aug-2009 5:00 PM");
7 project.Resources.Add(res);
8 project.Save("Project.xml", SaveFileFormat.XML);
1 Dim project As New Project()
2 Dim res As New Resource("Res1")
3 res.Id = 1
4 res.Uid = 1
5 res.Start = DateTime.Parse("19-Aug-2009 8:00 AM")
6 res.Finish = DateTime.Parse("19-Aug-2009 5:00 PM")
7 project.Resources.Add(res)
8 project.Save("Project.xml", SaveFileFormat.XML)
New Aspose.Tasks for .NET 8.x Approach
1 Project project = new Project();
2 Resource rsc = project.Resources.Add("R1");
3 rsc.Set(Rsc.Start, DateTime.Parse("31-Aug-2014 8:00 AM"));
4 rsc.Set(Rsc.Finish, DateTime.Parse("31-Aug-2014 5:00 PM"));
5 project.Save("CreateResource.xml", SaveFileFormat.XML);
1 Dim project As New Project()
2 Dim rsc As Resource = project.Resources.Add("R1")
3 rsc.[Set](Rsc.Start, DateTime.Parse("31-Aug-2014 8:00 AM"))
4 rsc.[Set](Rsc.Finish, DateTime.Parse("31-Aug-2014 5:00 PM"))
5 project.Save("CreateResource.xml", SaveFileFormat.XML)
Create and Add Resource Assignment to Project
The ResourceAssignment class also introduces the Set and Get methods similar to other data collections of the API such as Tasks, Resources and Tasks Links.
Legacy API Code Sample
1 Project project = new Project();
2 Task tskRoot = new Task();
3 Task task = new Task("Task");
4 Resource rsc = new Resource();
5 rsc.StandardRate = 10;
6 rsc.OvertimeRate = 15;
7 ResourceAssignment assignment = new ResourceAssignment(task, rsc);
8 assignment.Uid = 1;
9 assignment.Start = DateTime.Parse("18-Aug-2009 8:00 AM" );
10 assignment.Finish = DateTime.Parse("18-Aug-2009 5:00 PM" );
11 project.RootTask = tskRoot;
12 project.RootTask.Children.Add(task);
13 project.Resources.Add(res);
14 project.ResourceAssignments.Add(assignment);
15 project.Save("project.xml", SaveFileFormat.XML);
1 Dim project As New Project()
2 Dim tskRoot As New Task()
3 Dim task As New Task("Task")
4 Dim rsc As New Resource()
5 rsc.StandardRate = 10
6 rsc.OvertimeRate = 15
7 Dim assignment As New ResourceAssignment(task, rsc)
8 assignment.Start = DateTime.Parse("18-Aug-2009 8:00 AM" )
9 assignment.Finish = DateTime.Parse("18-Aug-2009 5:00 PM" )
10 assignment.Uid = 1
11 project.RootTask = tskRoot
12 project.RootTask.Children.Add(task)
13 project.Resources.Add(res)
14 project.ResourceAssignments.Add(assignment)
15 project.Save("project.xml", SaveFileFormat.XML)
New Aspose.Tasks for .NET 8.x Approach
1 Project project = new Project();
2 Task task = project.RootTask.Children.Add("Task");
3 Resource rsc = project.Resources.Add("Rsc");
4 rsc.Set(Rsc.StandardRate, 10);
5 rsc.Set(Rsc.OvertimeRate, 15);
6 ResourceAssignment assignment = project.ResourceAssignments.Add(task, rsc);
7 assignment.Set(Assn.Start,DateTime.Parse("18-Aug-2009 8:00 AM" ));
8 assignment.Set(Assn.Finish, DateTime.Parse("18-Aug-2009 5:00 PM" ));
9 project.Save("ResourceAssignments.xml", SaveFileFormat.XML);
1 Dim project As New Project()
2 Dim task As Task = project.RootTask.Children.Add("Task")
3 Dim rsc As Resource = project.Resources.Add("Rsc")
4 rsc.[Set](Rsc.StandardRate, 10)
5 rsc.[Set](Rsc.OvertimeRate, 15)
6 Dim assignment As ResourceAssignment = project.ResourceAssignments.Add(task, rsc)
7 assignment.Set(Assn.Start,DateTime.Parse("18-Aug-2009 8:00 AM"))
8 assignment.Set(Assn.Finish, DateTime.Parse("18-Aug-2009 5:00 PM" ) project.Save("ResourceAssignments.xml", SaveFileFormat.XML))
Conclusion
Migrating to Aspose.Tasks for .NET 8.0.0+ involves:
- Replacing property-style assignments with the
Set
method. - Using constructors to create
Task
,Resource
, andCalendar
objects. - Adding these objects to the appropriate collections explicitly.
- Removing obsolete API usage such as
project.Tasks.Add()
orproject.Resources.NewResource()
.
By following these updated patterns, your project will be compatible with the latest version of Aspose.Tasks, benefiting from improved consistency and flexibility.