DesignPattern '''Name:''' Actor Decision Tree Pattern '''Type:''' Behavioral(?) '''Problem:''' A software system exists where more than one piece of input is needed from an actor. In order to minimize communication between components (or tiers) of the system, the system needs to retrieve multiple pieces of input from the user sequentially before communicating with the "business logic" component. For example, let's say there is a system with a GUI front-end, and a business layer back-end. To maximize back-end communication efficiency, a series of questions need to be posed to the user before communicating again to the back end. How can the front-end process a finite list of questions when the set of questions posed depends on previous answers? '''Context:''' The contexts in which I have seen a need for this pattern are when the ''cost'' of communicating from the UI layer to the business layer is expensive enough that it is desirable to have the UI layer process a set of questions with the user before returning results to the business layer. '''Proposed Solution:''' I don't have one (yet)! Conceptually, I can picture a tree. Each ''node'' in the tree consists of: 1. A question to be posed (e.g. ''Are you having a problem with your keyboard, mouse, or monitor?'') 1. Possible answers (''keyboard,mouse,monitor'') 1. New nodes for each possible answer (''keyboard=Did you spill coffee on your keyboard?,mouse=have you cleaned your mouse ball recently?,monitor=Is it plugged in?'') I think the number of possible responses and the number of questions in the tree would have to be limited to prevent considerable growth. '''Resulting Context:''' I'm hoping for a flexible method of minimizing back and forth between UI and business layer. '''Pattern Category:''' Behavioral(?) -ChrisJansen ''Of course this is the first step toward a more complicated language of business logic interpreted by the UI. So watch out: GreenspunsTenthLaw applies. In a limited form this pattern is applicable (I also used to generate java script from the business logic).'' ---- CategoryPattern