Releases: joniles/mpxj
Releases · joniles/mpxj
Version 11.4.0
- Added the "Resource Pool File" attribute to ProjectProperties, which represents the full path of the resource pool used by an MPP file. This attribute is accessible via the
getResourcePoolFile
andsetResourcePoolFile
methods. - Added the
getResourcePoolObject
method to allow the resource pool file to be located and read - Added support for reading the task attribute Subproject GUID from MPP files. This attribute can be accessed via the
getSubprojectGUID
andsetSubprojectGUID
methods. - Added support for the task attribute "External Project". When this attribute is true it indicates that the task represents a subproject. The attribute is accessed via the
getExternalProject
andsetExternalProject
methods. - When reading an MSPDI file with external task predecessors, MPXJ now attempts to recreate the placeholder external tasks which would be present if the equivalent MPP file was read.
- External task predecessors are now represented when writing an MSPDI file.
- Added the Task method
getSubprojectObject
which allows the caller to retrieve a ProjectFile instance representing the external project linked to a task. - Added the Task method
expandSubproject
. For task which represent an external project, this method automatically loads the external project and attaches the tasks it contains as children of the current task. This is analogous to the behavior in Microsoft Project where a subproject is expanded to reveal the tasks it contains. - Added the ProjectFile method
expandSubprojects
which identifies any tasks in the project which represent an external project and expands them, linking the tasks from the external project as children of the task in the parent project. Note that the method works recursively so multiple levels of external tasks will be expanded. - Updated to ensure that the
internal_name
attribute of aUserdefinedField
is generated if not present. - Updated to avoid an exception when reading notebook topics from PMXML files.
- Marked the Task method
setSubprojectName
as deprecated. Use thesetSubProjectFile
method instead. - Marked the Task method
getSubprojectName
as deprecated. UsegetSubprojectFile
instead. - Marked the Task method
setExternalTaskProject
as deprecated. Use thesetSubprojectFile
method instead. - Marked the Task method
getExternalTaskProject
as deprecated. Use thegetSubprojectFile
method instead. - Marked the ProjectFile method
getSubProjects
as deprecated. Use the subproject attributes on individual tasks instead. - Marked the Task methods
getSubProject
andsetSubProject
as deprecated. Use the subproject attributes instead.
Version 11.3.2
- Improve default values provided for P6 calendars with missing data.
- Implement both "planned dates" and "current dates" strategies for populating P6 baselines.
- Ensure the Project GUID is read from MPP files.
Version 11.3.1
- Improve accuracy of resource assignment Actual Start and Actual Finish dates when reading MPP files.
- Avoid generating timephased data for zero duration tasks.
- Improve preservation of custom timephased data start and end times.
Version 11.3.0
- Implemented
PrimaveraXERFileWriter
to allow MPXJ to write XER files. - Updated the
ActivityCode
class to ensure that both the scope Project ID and EPS ID can be represented when reading a P6 schedule. (Potentially breaking change if you were using this class). - Ensure secondary constraint date and type are written to PMXML files.
- Ensure leveling priority is written to PMXML files.
- Ensure WBS UDF values are written to PMXML files.
- Ensure integer UDF values are read correctly from XER files and P6 databases.
- Add methods to allow the project's default calendar unique ID to be set and retrieved.
- Add method to allow a calendar's parent calendar unique ID to be retrieved.
- Add method to allow a task's parent task unique ID to be retrieved.
- Add methods to allow a resource assignment's role unique ID to be set and retrieved.
- Add methods to allow a resource assignment's cost account unique ID to be set and retrieved.
- Add method to allow a cost account's parent unique ID to be retrieved.
- Add method to allow an expense item's cost account unique ID to be retrieved.
- Add method to allow an expense item's category unique ID to be retrieved.
- Added
WorkContour.isDefault()
method to allow "built in" resouce curves/work contours to be distinguished from user defined curves. - Updated to retrieve the project's start date from Phoenix PPX files (Contributed by Rohit Sinha).
- Provide access to notebook topics from P6 schedules via the
ProjectFile.getNotesTopics()
method. - Capture unique ID of Activity and WBS notes from P6 schedules.
- Improve the calculation used to determine At Completion Duration of activities when reading XER files and P6 databases.
- Improve representation of certain duration values written to MSPDI files.
- Improve accuracy of certain work calculations where the specified time period does not start with a working day.
- Fix an issue which caused negative timephased work values to be generated when reading certain MPP files.
- Fix an issue reading XER files where the
critical_drtn_hr_cnt
field is expressed a decimal rather than an integer. - Fix an issue populating the WBS attribute for activities read from certain XER files.
Version 11.2.0
- The project property Critical Slack Limit is now represented as a
Duration
rather than as anInteger
. (Potentially breaking change if you were using this property directly). TaskType
is now a simple enum with all Microsoft Project specific functionality moved intoTaskTypeHelper
. (Potentially breaking change if you were using theTaskType
methodsgetInstance
orgetValue
in your code)- When reading the task type from P6 schedule the mapping to the MPXJ
TaskType
enum has been updated to more closely match P6. The main changes are that the P6 type "Fixed Units" now maps toTaskType.FIXED_WORK
and the "Fixed Duration & Units" type now maps to a new enumeration valueTaskType.FIXED_DURATION_AND_UNITS
. - Added support for reading project calendar exceptions from Phoenix schedules (based on a contribution by Rohit Sinha).
- The Resource attribute Active now defaults to true if the schedule being read doesn't support or contain a value for this attribute.
- Add suport for reading and writing the Resource's Active flag for P6 schedules.
- Add suport for reading and writing the Resource's Default Units/Time value for P6 schedules.
- Add suport for reading and writing the Project's Critical Slack Limit value for P6 schedules.
- Fixed an issue reading certain types of Enterprise Custom Fields containing date values.
- Ensure activity code value parent can be set to null.
- Improved existing .Net extension methods and added support for more types.
- Added NuGet package icon
- Simplified NuGet packaging
Version 11.1.0
- Write activity code definitions and activity code assignments to PMXML files.
- Added support for "secure" and "max length" attributes to the
ActivityCode
class. - Added
getChildCodes
method toActivityCode
andActivityCodeValue
to make it easier to traverse activity code values hierarchically. - Added
setDescription
method toStep
class to make it simpler to add a plan text description.
Version 11.0.0
- User defined fields read from P6, Asta and GanttProject schedules are now represented by instances of
UserDefinedField
. They will no longer be mapped to custom field instances. - Enterprise Custom Fields read from MPP and MSPDI files are now represented by instances of
UserDefinedField
. - When writing MSPDI files, UserDefinedField instances which were originally read from enterprise custom fields will be written to the MSPDI file as enterprise custom fields.
- When writing MSPDI files, UserDefinedField instances which were from applications other than Microsoft Project will automatically be mapped to available custom fields.
- When writing MPX files, UserDefinedField instances will automatically be mapped to available custom fields.
- The
UserDefinedField
type implements theFieldType
interface and so can be used with theFieldContainer
get
andset
methods to work with the contents of the user defined fields. - The
ProjectFile.getUserDefinedFields()
method has been added to provide access to all user defined fields defined in the project. - The
CustomFieldContainer
returned byProjectFile.getCustomFields()
will contain entries for allUserDefinedField
instances. - The various
getFieldTypeByAlias
andgetFieldByAlias
methods will retrieve user defined fields by name. - Added the convenience method
ProjectFile.getPopulatedFields()
to retrieve details of all populated fields across the project. This avoids the caller having to individually retrieve the populated fields from the tasks container, resource container and so on. - Updated the
getPopulatedFields
methods to return aSet
ofFieldType
rather than aSet
ofTaskField
,ResourceField
etc. - The various
getPopulatedFields
methods will include instances ofUserDefinedField
in the returned collection if relevant. - All
ENTERPRISE_CUSTOM_FIELDn
values have been removed from theTaskField
,ResourceField
,AssignmentField
andProjectField
enumerations. - The
getEnterpriseCustomField
andsetEnterpriseCustomField
methods have been removed fromProjectProperties
, Task,
Resourceand
ResourceAssignment`. - Project UDFs are now read from P6 schedules.
- Project UDFs are now written to PMXML files.
- All code previously marked as deprecated has been removed.
Version 10.16.2
- Updated to improve reading resource attributes from certain MPP14 files.
Version 10.16.1
- Updated to make resource curve definitions (work contours) available in the
WorkContourContainer
. This container is accessed using theProjectFile.getWorkContours()
method.
Version 10.16.0
- Improve accuracy when normalising timephased data.
- Add support for reading activity steps from XER files, PMXML files and Primavera databases.
- Add support for writing activity steps to PMXML files.
- Updated PMXML schema to version 22.12.
- Updated methods in the
GanttBarCommonStyle
andGanttBarStyle
classes to use aFieldType
instance rather than aTaskField
instance to allow more flexibility. (Note: this may be a breaking change if you are currently using these classes.) - Optionally include some Microsoft Project layout data in JSON output.