fyi - You seem to be referring to a zone by name that doesn't exist in "Decide: Buffer lleno?". But you don't need to use the zone to get the content of the buffer - you can just find the buffer and use buffer.subnodes.length.
Why do you have a connector from that decision going back to the source after a delay? Your source interarrival will generate more tokens to create items.
This seems over complex for something that is handled almost by default using port connections to objects and limiting the capacities of the queues/processors.
If you describe the process in terms of behavior it might be easier - eg.:
- You have different coloured items that fill buffer 1 and then buffer2 when buffer1 is full.
- The cabin will process same coloured items until it cannot find the same color at which point it will switch to another color and that processing them.
You don't say how many the cabin can process or how long they take.