Here are 3 different ways to do this. Each MD in the attached model is using one of these different methods.
5change-staff-idle-state-sitting_1.fsm
1. (MD1) In this method we remove MD1 from its default Object Process Flow (this flow just sends staff back to their reset position whenever they're released) and attach it to a new object flow that we make. First I clicked on MD1, and then in the Process Flow Object properties panel I clicked the red X button next to the dropdown that says Staff. This removes MD1 from the Staff object flow. Then I created a new object flow which I called DeskStaff that sends the MD to the chair on its Desk label whenever it's released and not immediately acquired by something else. I then used the sampler in the Process Flow Instances properties panel to attach MD1 to this flow.
This method takes a little more set up work, but is the cleanest overall, in my opinion.
2. (MD2) In the Arrivals flow I created a few activities that acquire MD2 with a low priority (should be 99 or less) so that other requests can preempt this "task". The token here just acquires the staff, and sends them to the chair on their Desk label and then sits on a preemptable Process activity.
3. (MD3) I created a new Down Behavior, which I called AtDesk, that has a low priority, is preemptable, and sets the Break Location to be the MDs Desk label. I then made a Time Table object, added MD3 as a member, and set the time from 8-5 to use the At Desk down behavior.
Matthew Gillespie
FlexSim Software Developer