Premium support for our pure JavaScript UI components
When an event has 2 predecessors, with default Finish-to-Start dependency type, it will be scheduled to start at the latest end date of the 2 predecessors.
I would like instead the event to be scheduled to start at the EARLIEST of the 2 predecessors end date.
Is it possible ?
The current logic of Finish-To-Start
dependency is the successor must start >= the predecessor finishes.
What you describe sounds like one dependency is satisfied (the one having the earlies date) and the second dependency is violated since the successor start <= the corresponding predecessor finishes.
If you want a dependency to be a pure visual thing you can deactivate it with providing false
to its active field
It is not only a visual thing, I would like the engine to enforce the rule sucessor must start >= (earliest predecessor finish)
I was wondering if some config exist to do this automatically, but if not, I can probably do the validation manually using some events.
This is an important feature for us and I realize it is not only a user input validation, the engine calculation must respect this rule: sucessor must start >= (earliest of predecessors finish)
The use case is beer fermenting in vessels.
You can see in the screenshot below, beer is fermenting in F1 and F3, and vessel's content is transferred/merged into F7. F3 fermenting time is planned to be shorter so it will be transferred first into F7, and F7 start time must be set at this time (not when F1 is transferred).
Can you please give us any insights how to make the scheduler engine respect this rule.
- 2023-04-11_11-37.png (60.87 KiB) Viewed 201 times
Dependency constraints are implemented in ScheduledByDependenciesEarlyEventMixin
mixin of EventModel
.You can find its source code in Engine/quark/model/scheduler_pro/ScheduledByDependenciesEarlyEventMixin.ts
file. Check calculateEarlyStartDateConstraintIntervals
and calculateEarlyEndDateConstraintIntervals
methods.
The methods build constraining intervals based on the event incoming dependencies.
You basically need to override the methods to include only one interval ..with the minimal date. That's where I would start and it could be enough if your project uses only Finish-To-Start
dependencies.