It might not be that intuitive but the MXML syntax you're using creates a
MyTask object in you context and creates and array with tasks that it assigns
to the property "tasks" of MyTask, not of the context itself. It might help
to think of it as:
myContext.myTasks.tasks = [aTask, bTask];
When parsley introspects myContext, it will find myTasks and will process it.
It won't find aTask or bTask which are nested inside the tasks array in
myTasks.
In Flex MXML, when you set an id to a tag it then becomes a property of the
class in which it is being instantiated---in this case, the nested ATask and
BTask will become properties of the context in which you are declaring them.
So it will be more like:
myContext.myTasks.tasks = [aTask, bTask];
myContext.aTask = aTask;
myContext.bTask = bTask;
... So only then, when Parsley loops through the properties of your context,
will it find the nested tasks as well and will be able to process them.
I know MyTask doesn't have that myTask id, but it doesn't need it as it is a direct property of the context (so the automatically generated property name is enough). If you were to take out TaskA and TaskB out of the MyTask definition and put them out at the same level as MyTask you'll see that the PM is properly injected into them but, of course, they won't work on the queue as you need them to.
HTH,
Gabriel