[Canonical page](<https://docs.dhtmlx.com/planning-engine/java/api/changes/overview/>)
[Full documentation index](<https://docs.dhtmlx.com/planning-engine/llms.txt>)


# changes

Edits to a live project. [`SchedulingChanges`](<https://docs.dhtmlx.com/planning-engine/java/api/changes/scheduling-changes.md>) is the change set that [`Project#apply`](<https://docs.dhtmlx.com/planning-engine/java/api/project-apply.md>) commits, [`Project#preview`](<https://docs.dhtmlx.com/planning-engine/java/api/project-preview.md>) tries on a copy of the baseline, and [`Project#evaluate`](<https://docs.dhtmlx.com/planning-engine/java/api/project-evaluate.md>) scores as a candidate. [`Project#suggestAssignments`](<https://docs.dhtmlx.com/planning-engine/java/api/project-suggest-assignments.md>) returns one in its proposal. A change set holds one [`Changes<TAdd, TUpdate>`](<https://docs.dhtmlx.com/planning-engine/java/api/changes/changes.md>) per record kind (tasks, links, resources, assignments), each with `add`, `update` and `remove` lists.

Adds take full records. Tasks, resources and assignments use the input classes from [data](<https://docs.dhtmlx.com/planning-engine/java/api/data/overview.md>), and links use [`LinkAdd`](<https://docs.dhtmlx.com/planning-engine/java/api/changes/link-add.md>), whose `id` is optional. Updates are partial: every field of [`TaskUpdate`](<https://docs.dhtmlx.com/planning-engine/java/api/changes/task-update.md>), [`LinkUpdate`](<https://docs.dhtmlx.com/planning-engine/java/api/changes/link-update.md>), [`ResourceUpdate`](<https://docs.dhtmlx.com/planning-engine/java/api/changes/resource-update.md>) and [`AssignmentUpdate`](<https://docs.dhtmlx.com/planning-engine/java/api/changes/assignment-update.md>) except `id` is a [`Patch<T>`](<https://docs.dhtmlx.com/planning-engine/java/api/changes/patch.md>), which keeps, clears or sets the current value. Each update class takes the target `Id` in its constructor, starts with every patch field at `Patch.missing()`, and has a fluent `withX(value)` setter per field.

`Project#apply` returns an [`ApplyReport`](<https://docs.dhtmlx.com/planning-engine/java/api/changes/apply-report.md>) with the applied and rejected operations, the side effects (cascading removals and generated ids), the resync flag and the revision. Each rejection is a [`RejectedOperation`](<https://docs.dhtmlx.com/planning-engine/java/api/changes/rejected-operation.md>). Every type here is in the `org.dhtmlx.plen` package.

:::category-index
:::
