Premium support for our pure JavaScript UI components


Post by guillaume.morin »

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 ?


Post by arcady »

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


Post by guillaume.morin »

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.


Post by arcady »

There is no such config.


Post by guillaume.morin »

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
2023-04-11_11-37.png (60.87 KiB) Viewed 112 times

Post by arcady »

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.


Post Reply