Travailler avec des expressions
Contents
[
Hide
Show
]Aspose.Tasks pour l’API Java peut utiliser les champs de tâche, de ressources et de projet comme formule dans les expressions. Des champs tels que le travail, le coût, les champs de nombres, la datetime, le booléen et les champs de projet tels que le nombre de tâches et le nombre de ressources peuvent être utilisés dans les expressions de formule dans un attribut étendu.
Utilisation de tâches et champs de ressources dans les calculs de formule
1// Create new project instance
2 Project project = new Project();
3
4java.util.Calendar cal = java.util.Calendar.getInstance();
5cal.set(2015, 26, 3, 8,0,0);
6
7project.set(Prj.START_DATE, cal.getTime());
8
9 // Add new task with extended attribute
10 Task task = project.getRootTask().getChildren().add("Task");
11 ExtendedAttributeDefinition extendedAttributeDefinition = ExtendedAttributeDefinition.createTaskDefinition(CustomFieldType.Text, ExtendedAttributeTask.Text5, "My Ext Attr");
12 project.getExtendedAttributes().add(extendedAttributeDefinition);
13 ExtendedAttribute extendedAttribute = extendedAttributeDefinition.createExtendedAttribute();
14 task.getExtendedAttributes().add(extendedAttribute);
15
16 // Add resource and resource assignment
17 Resource rsc = project.getResources().add("Rsc");
18 ResourceAssignment assn = project.getResourceAssignments().add(task, rsc);
19 return project;
1// see this helper method below
2Project project = CreateTestProjectWithCustomField();
3
4ExtendedAttributeDefinition attr = project.getExtendedAttributes().get(0);
5attr.setAlias("Days from finish to deadline");
6attr.setFormula("[Deadline] - [Finish]");
7
8java.util.Calendar cal = java.util.Calendar.getInstance();
9cal.set(2015, 26, 3, 8,0,0);
10
11Task task = project.getRootTask().getChildren().getById(1);
12task.set(Tsk.DEADLINE, cal.getTime());
13
14project.save("SaveFile.mpp", SaveFileFormat.MPP);
Using Arithmetic Expression
1Project project = CreateTestProjectWithCustomField();
2
3// Set arithmetic formula for extended attribute
4ExtendedAttributeDefinition attr = project.getExtendedAttributes().get(0);
5attr.setAlias("Arithmetic Expression");
6attr.setFormula("(1+3*(2+ -5)+8/2)^3");
7
8// Display extended attribute value
9Task task = project.getRootTask().getChildren().getById(1);
10System.out.println(task.getExtendedAttributes().get(0).getNumericValue());
Using Task Number Fields
1Project project = CreateTestProjectWithCustomField();
2
3// Set Formula
4ExtendedAttributeDefinition attr = project.getExtendedAttributes().get(0);
5attr.setAlias("Task number fields");
6attr.setFormula("(([Outline Level] + [Priority] + [% Complete])/2");
7
8Task task = project.getRootTask().getChildren().getById(1);
9
10// Print extended attribute value before and after updating task percent complete
11System.out.println(task.getExtendedAttributes().get(0).getNumericValue());
12
13task.set(Tsk.PERCENT_COMPLETE, 50);
14System.out.println(task.getExtendedAttributes().get(0).getNumericValue());
Formula With Boolean Values
1Project project = CreateTestProjectWithCustomField();
2
3// Set formula for extended attribute
4project.getExtendedAttributes().get(0).setFormula("[Critical]-[Marked]+4+[Active]-Not [Active]");
5
6// Print value of extened attribute
7Task task = project.getRootTask().getChildren().getById(1);
8System.out.println("Formula with boolean values" + task.getExtendedAttributes().get(0).getTextValue());
Formula With Project Fields
1Project project = CreateTestProjectWithCustomField();
2
3// Set formula for extended attribute
4project.getExtendedAttributes().get(0).setFormula("\"Total tasks: \" & [Task Count] & \" Total resources: \" & [Resource Count]");
5
6// Print value of extened attribute
7Task task = project.getRootTask().getChildren().getById(1);
8System.out.println("Formula with boolean values" + task.getExtendedAttributes().get(0).getTextValue());