Flow Controllers and Order Queues

A flow controller controls all modules derived from prov::OrderQueue. This includes normal queues, drivers, reservoirs, sequencers, and so on. More precisely, the flow controller controls the flow going out of these modules. When an order queue needs to dequeue from a heap, it calls (for example) self.dequeue ("some heap", GoodPort). This takes a message from the heap named "some heap" and puts it inside a special heap of the order queue which is named the heap out. The flow controller is then notified of a pending message waiting to go out of the order queue. The flow controller is triggered. When needed and allowed, the flush of the message out of the heap out into the module linked to the order queue on the GoodPort.

Therefore, the flow controller always controls the number of service orders messages currently being processed in the Fulfillment Provisioning flow.