There is no table called "ProductPriority" in the attached model. I assume you mean "DispatchRule"?
While a comment in the code in the Queues' On Entry trigger states that it supposedly closes the output to wait until the correct item has arrived, it doesn't actually do so. So the queues always release the next item to the processor immediately.
In general I would suggest to use a list for this. You won't need any custom code to have the processors pull the items in the correct order.
jsp-scheduling_1.fsm
In the attached model the system stops at some point because the distribution based on the "Route" table does not allow the items to be processed according to "DispatchRule" currently.