I'm modeling 3 production lines with the current goal of validating throughput results. There are currently two situations that can occur - either all of the lines finish their production for the day before the shift ends, or one (or more) lines do not finish in time.
I need all operations to go down at 5pm (handling this with a time table). If there is a line still processing, I need all flow items within that line to immediately leave with 0 time delay.
The way I am currently handling it is by looping through all objects on that line. If there are flowitems within that object, then I will destroyeventsofobject(processor/queue/combiner/etc). Then, I move those flow items to a designated area where they can be cleaned up with no delay. Once that all happens, I can re-set their states to idle/empty/collecting/etc, and finally let the time table set them down.
When I introduced operators at a later date, I had to start preempting/aborting their activities because they had been stuck working with a nonexistent flowitem. And now, I've worked myself into a situation where only some operators have to abort their activities. This has gotten messy.
My question is - is there a clean way to move objects through to the end with 0 time delay? This would include
- Forcing processors in the middle of processing to release their items with no further delay
- Forcing combiners to forget their target quantities and instead just release their partial batch
- No negative effects on operators currently working a task involving a flowitem that will no longer exist
I am open to alternative solutions, as long as I am able to set all objects down when the shift ends, and not have any leftover items.