First off, this is a kick ass first start. Very nice work Craig.
Comments:
Activity.java:
Add more methods
Step[] getSteps()
void setSteps(Step[] steps)
Context.java:
Context is being used as a name for way to many things to make it this
generic. I think this should be renamed to something like
"StateContext.java"
I could be wrong here because I don't see the entire picture yet, but I
think that Scope should be managed outside of the Context. Take this
technique from Turbine/Velocity of being able to nest Contexts and
provide scope through referencing nested Contexts.
Step.java:
Next/Previous. What happens if there isn't one? Only execute throws a
StepException. Also, I would prefer a more JavaBean syntax than
"execute". I believe "do" is the right keyword...ie: "doExecute()". Can
someone point me to the java.sun.com documentation on the method naming
conventions for Beans?
More comments to follow as I look into things further.
-jon