Creating Shift Patterns in Process Flow

Creating Shift Patterns in Process Flow

sara_r4
Not applicable
30 Views
2 Replies
Message 1 of 3

Creating Shift Patterns in Process Flow

sara_r4
Not applicable

[ FlexSim 21.0.1 ]

I have a question regarding creating shift patterns using process flow. I have created a process flow for a sequence of process steps. A source creates tokens (each representing one process run) that proceed through the sequences of activities. This process represents a sequence of events that can occur only 5 days a week during specific shifts. Therefore, I need a way to have tokens stop (or be delayed) during the off-work periods.

To find a way to add this in, I looked on the Forums and found a starting point on a previous thread (attached), where an End of Shift Signal notifies an operator to go home by pushing a token to a list that the operator pulls tasks from. I do not have operators in my model, but was considering leveraging this approach. However, after some further modeling, I determined I would have to include a Decide activity before every process step (there are many) to have the token check a list for the End of Shift task before continuing with processing. Does anyone have a better way to do this that can be handled by adding in fewer activities?

I apologize that I cannot share my model due to confidentially concerns. Please let me know if any clarification is needed.

Thanks!

operator-shift-schedule.fsm

0 Likes
Accepted solutions (1)
31 Views
2 Replies
Replies (2)
Message 2 of 3

moehlmann_fe
Explorer
Explorer
Accepted solution

You could try to use the activites in the "Preemption" category for this.

1636360210234.png

"Save Token Context" saves the current status of the token(s) to a label on it. "Release Token" pulls them from their current activity and moves them to a different activity in the process flow. "Restore Token Context" will move them back to their previous activity (at the point when the context was saved) and they will resume from that point.

This can be used to "pause" tokens, by saving their context, moving them to a holding activity and then moving them back by restoring the context. Be careful though, if any pending events require the token to be in a certain position, you might run into problems when forcefully moving them around. If they are in a "Wait for Event" activity for example and the event happens while the token is paused, it will be stuck after restoring the context because it missed the event.

In the attached example, I use a time table to send a message to the process flow when a break starts/ends. An event-triggered source listens to those and creates a token that pulls the others into the "Token Store". Because the processor is also paused, the tokens can't miss the process finish event in the "Wait for Event" activity.

To save/release/restore tokens you need a reference to them. For this, I use an array label assigned to the process flow itself. When a token enters, it is added to array and later removed again before disappearing in the sink. Due to the variable process times, the tokens might arrive at the end in a different order, so I iterate over the array until the correct entry is found and then remove it.

PauseTokensExample.fsm

0 Likes
Message 3 of 3

connor_a
Not applicable

Hi @Sara R4, was Felix Möhlmann's answer helpful? If so, please click the "Accept" button at the bottom of their answer. Or if you still have questions, add a comment and we'll continue the conversation.

If we haven't heard back from you within 3 business days we'll auto-accept an answer, but you can always unaccept and comment back to reopen your question.

0 Likes