Working with new version
of Aspose.Tasks
Aspose.Tasks
now based on MPP and XML formats (instead of MPX as previous releases) and as a
result doesn’t have a lot of limitations brought by old and obsolete MPX format. It
supports most of features and properties of MPP/XML files.
Public API
of Aspose.Tasks was changed to make it simpler and more convenient for managing
projects.
These MS
Project formats are supported:
- MS Project 2003 MPP binary
format (read-only).
- MS Project 2007 MPP binary
format (read-only).
- MS Project XML format
(read/write).
Simple Programmers Guide
Opening Files
This
example shows how to open projects in MPP and XML formats:
[C#]
ProjectReader reader = new ProjectReader();
Project project = reader.Read(new FileStream("project.mpp", FileMode.Open));
ProjectReader reader = new ProjectReader();
Project project = reader.Read(new FileStream("project.xml", FileMode.Open));
[VB]
Dim reader As
ProjectReader = New ProjectReader()
Dim project As Project =
reader.Read(New FileStream("project.mpp", FileMode.Open))
Dim reader As
ProjectReader = New ProjectReader()
Dim project As Project =
reader.Read(New FileStream("project.xml", FileMode.Open))
Saving project in XML
format
In this
example we will save project to a file in XML format:
[C#]
ProjectWriter writer = new ProjectWriter();
writer.Write(project, new FileStream("new_prj.xml",
FileMode.Create, FileAccess.Write), TasksDataFormat.XML);
[VB]
Dim writer As
ProjectWriter = New ProjectWriter()
writer.Write(project,New FileStream("new_prj.xml",FileMode.Create,FileAccess.Write),TasksDataFormat.XML)
Creating simple project
from scratch
This
example shows full process of creating project with calendar, tasks and
resources:
// Create new empty
project
Project project = new Project();
// Create calendars and
add it to our project
Calendar cal1 = Calendar.MakeStandardCalendar();
cal1.Uid = 1;
cal1.Name = "Cal1";
Calendar cal2 = Calendar.MakeStandardCalendar();
cal2.Uid = 2;
cal2.Name = "Cal2";
project.Calendars.Add(cal1);
project.Calendars.Add(cal2);
// Create 5 tasks
Task task1 = new
Task("task1");
Task task2 = new
Task("task2");
Task task3 = new
Task("task3");
Task task4 = new
Task("task4");
Task task5 = new
Task("task5");
// Add first task as Root
all other
// tasks as it’s children
tasks
project.RootTask = task1;
task1.Children.Add(task2);
task1.Children.Add(task4);
task1.Children.Add(task5);
task2.Children.Add(task3);
// Tasks 1 and 2 will use
calendar “Cal1”
task1.Calendar = cal1;
task2.Calendar = cal1;
// Tasks 3 and 5 will use
calendar “Cal2”
task3.Calendar = cal2;
task5.Calendar = cal2;
// Task 5 will be started
after the finish of Task 4
project.TaskLinks.Add(new TaskLink(task4, task5,
TaskLinkType.FinishToStart));
// Create 2 resources and
also add it to the project
Resource res1 = new Resource("resource1");
res1.Uid = 1;
Resource res2 = new Resource("resource2");
res2.Uid = 2;
project.Resources.Add(res1);
project.Resources.Add(res2);
// Resource can use own
customized calendars
res1.Calendar = cal2;
res2.Calendar = cal1;
// Now assign resources
to tasks
project.ResourceAssignments.Add(new ResourceAssignment(task2, res1));
project.ResourceAssignments.Add(new ResourceAssignment(task4, res2));
project.ResourceAssignments.Add(new ResourceAssignment(task3, res1));
// IDs and UIDs should be
recalculated
// after we finished
project managing
project.CalcTaskIds();
project.CalcTaskUids();
project.CalcResourceIds();
project.CalcResourceUids();
project.CalcResourceAssignmentIds();
project.CalcResourceAssignmentUids();
// Now we can write
created project to a file
// as shown in the
previous example
Writing extended
attributes to XML project
There 2
parts of each extended attribute should be added to a project ExtendedAttributeDefinition
and ExtendedAttribute.
// Read XML project
ProjectReader reader = new ProjectReader();
Project project = reader.Read(new
FileStream("_3.xml",
FileMode.Open));
ArrayList eads = project.ExtendedAttributes;
if (eads == null)
{
eads = new ArrayList();
project.ExtendedAttributes = eads;
}
// Create extended
attribute definition
ExtendedAttributeDefinition ead = new ExtendedAttributeDefinition();
ead.FieldId = ((int)ExtendedAttributeTask.Start7).ToString();
ead.FieldName = "Start7";
eads.Add(ead);
// Get task with
OutlineNumber 1.4
Task task_1_4 = (Task)((Task)project.RootTask.Children[0]).Children[3];
// Create Start7 field
ArrayList eas = task_1_4.ExtendedAttribute;
if (eas == null)
{
eas = new ArrayList();
task_1_4.ExtendedAttribute = eas;
}
string dateTimeFormat = "yyyy-MM-ddTHH:mm:ss";
ExtendedAttribute ea = new ExtendedAttribute();
ea.FieldId = ead.FieldId;
ea.Value = XmlConvert.ToString(DateTime.Now, dateTimeFormat);
eas.Add(ea);
ProjectWriter writer = new ProjectWriter();
writer.Write(project, new FileStream("_3_.xml", FileMode.Create,
FileAccess.Write), TasksDataFormat.XML);
All values
should be converted to a string.
- Text value stored “as is”.
- Boolean (Flag1-Flag10) should
be stored as “0” or “1”.
- Double values like Cost1-Cost10
should be multiplied by 100.0d and converted to string using
XmlConvert.ToString(cost1 * 100.0d).
- DateTime converted to string as
described above.
- TimeSpan values use next
formula:
string ts = "PT"
+ Math.Round(elementVal.TotalHours) + "H" +
elementVal.Minutes + "M" + elementVal.Seconds + "S";
Alexey Zhilin
Team Leader
Aspose Tyumen Team
About Us Contact Us