Dispatch FlowItem basing on queue availability

Dispatch FlowItem basing on queue availability

don_masmoudi
Enthusiast Enthusiast
279 Views
2 Replies
Message 1 of 3

Dispatch FlowItem basing on queue availability

don_masmoudi
Enthusiast
Enthusiast

Hello, 

 

Could you help me with this example?

The objective is to dispatch the flow item based on queue availability. For example, when an item is ready, the operator sends the product to the first available queue (Queue 2; if it is not available, then Queue 3, and so on).

Queues are filled sequentially (Queue 1, then Queue 2, then Queue 3). If Queues 1 and 2 are freed in the meantime, Queue 4 is filled next, after which the operator can loop back to Queue 1. The logic must take into account that two queues are managed simultaneously.

The operator is responsible for two processors.

Is there an optimized solution for managing the process flow when we have more than 20 processors? In that case, it becomes difficult to replicate the process-flow blocks.

You will find the example in the attached file.

 

Best regrads, 

0 Likes
280 Views
2 Replies
Replies (2)
Message 2 of 3

FelixMoehlmann
Collaborator
Collaborator

Assigning a Queue to the item would best be done by pulling them from a list. You can use groups to allow the logic to scale to any number of processors.

The same result can also be achieved without using Process Flow. Make the Processors push the item to an item list in the Send to Port field and activate the Pull behaviour on the Queues and have them pull from that list. By adding a Back Order Strategy to the list that depends on the position within a group you can control which Queue receives an item first. In the attached model I chose a 'weird' order in the group on purpose to demonstrate how this works.

0 Likes
Message 3 of 3

don_masmoudi
Enthusiast
Enthusiast

@FelixMoehlmann, thank you for your response.

Queues are filled sequentially (Queue 1, then Queue 2, then Queue 3, and so on). If Queue 1 and Queue 2 are freed in the meantime (where Queue3 is filled), Queue 4 will be filled next. After that, the operator can loop back to Queue 1. (Basing on 4 queues (1,2,3 & 4).
The logic must take into account that two queues are managed simultaneously.

If the first queue (in this example, Queue 2), the second queue (Queue 3), and the third queue (Queue 4) are full, and if Queue 2 and Queue 3 are freed in the meantime, the next queue to be filled is Queue 5 (the next one) and not Queue 2 In this example.

 

Thank you in advance!

Best regards, 

 

 

 

0 Likes