It looks to me that I threw a disturbing idea. Now I change the subject for more discussions of different opinions.
Craig mentioned the "go to" statement in programming languages and hinted it could be an evil if Chain implement the semantics of "go to" (I just called it "jump behavior"). If we recognize Chain as a high level pattern regulator, I would not agree such a comparison is appropriate unless someone could convince me the following observations are questionable. * I studied several workflow engines (not page flow stuff, they manage persisted workload for people) They all implement, one way or another, the "jump behavior". I could not see they violate the OO design principles as high level regulators. * Struts itself, as a MVC pattern regulator in its core, implements the "go to" semantics when Action returns a ForwardConfig. It does a "go to" the next page, right? -:) In another word, IMHO, low level language principles may not be applicable to high level pattern/structure regulators. Hope people re-think it. I also recognize the facts that we do not want to overgrow Chain into an xml based rule engine. It should be just chain. But for such a simple requirement, one way is to model it as a "if" decision (Craig way), another way is to model it as a pseudo controller (Ted way). They are kind of cumbersome to use. It violates the "Simple thing should be simple" principle - a principle that supercedes other programming principles. The Filter thing could offer a simple solution, but I haven't looked it in details yet. The "jump behavior" requirement is very obvious in Java Server Faces Specification too. When the renderResponse() is called on FacesContext, the control is transferred to the Render Response phase after the current phase. This is another evidence of the "jump behavior" in high level pattern regulators. I would like people to open mind and think, if we add a method in Chain that allows us to execute the chain starting with a given index (currently the starting index is 0). Will that make the thing simple? Or the idea is still disturbing somewhere? Jing Netspread Carrier http://www.netspread.com