Here is a go at it:
1) create a instance variable for each "collection" area.
workerUse = 0
2)Create a instance variable for the worker:
workerBusy = 0
3) When a worker starts to use the "collection" area.
System > set value > collectionArea.workerUse = 1
System > set value > worker.workerBusy = 1
4) On collection area destory:
System > set value > worker.workerBusy = 0
System > set value > collectionArea.workerUse = 0
5)Have an event that tells the worker what do(move,fight,harvest) based off what worker.workerBusy is set too.. 1=fight 2=harvest 3=return to path etc...
I actually have a similar set up right now! However, on step 4, if I were to set value to worker.workerBusy = 0, all Workers (since there will be multiple) will be set to stop working.
I actually came up with an idea of perhaps using a For Each Collection Area condition combined with a "Pick Worker" condition to handle the collection zones, and then separately have a "dead mans switch" so when the above event stops, it will automatically change back to default actions...
Unless you or anyone else has come up with a better idea!
Thank you for putting a good effort in, I've actually been trying to figure this out for a few hours now..
edit: Figured out a fix-- basically links a collection area with the worker.
Saw a nifty trick here
http(removethis)://www.scirra.com/tutorials/361/understanding-uid-iid-health-cards-and-rocket-smoke-trail
Created a "number" instance variable called "parent" and just referred to the UID whenever I needed to pick it.