I'm coming from a strong Discrete Event Simulation background using Witness, and I am struggling a bit with FlexSim because it is structured so differently. Something I did in Witness all the time was write input rules for a machine or conveyor based on the state of other machines, conveyors or buffers. For example, if I have two machines in series (Source ->Buffer A->Processor A -> Buffer B -> Processor B ->Sink). I want to have Processor A pull the first part from Buffer A, process, then push to Buffer B, then Processor B pull from Buffer B, process, then push to the sink. I don't want Processor A to pull the next part from Buffer A until Processor B is finished with the first part.
In witness, this would be a simple input rule for Processor A:
IF (NPARTS(BufferB) + NPARTS(ProcessorB)) = 0
PULL FROM BufferA
ELSE
WAIT
ENDIF
In FlexSim it seems like all of the input rules are designed to tell the Processor which input port to pull from, rather than whether or not to pull something in the first place. What am I missing?