Hi Rich,
thanks for pointing this out. I think the javadoc is slightly harsh on this one. It's bad practice to use the invoke method (which gives you a return value) if that is being used to get information out of the aggregate (i.e. a query). However, if you have an external Command Handler, this method is the best way to interact with the aggregate.
Still, the preferred way to interact with an Aggregate is through command objects and @CommandHandler annotations on the aggregate itself. If that is not possible, then the execute() method is a good alternative.
Cheers,
Allard