7/31/98 - Jack Harich - Document Map
The Bean Assembler does not use the Composite Pattern for System Tree implementation. Instead a node is an Item. An Item is a container if it _has_ a Basket or is a worker if it _has_ a BeanWrapper. We use "Basket" to avoid semantic or actual conflict with java.awt.Container.
A bean need not implement any special interface or extend a special class to be used in the BA. This is because the bean can be configured with reflection via container configuration. However, the main advantage of using the BA is system assembly via parameter driven reusables, and so nearly all bean implement various interfaces, as shown on the model under TypicalBean. There is no subclassing to be a BA bean, since this is rather limiting.
As an example, suppose a reusable needs to be started after it's setParam() is called and closed when that portion of the system closes. The bean would implement ParamDriven, BeanActionStart and BeanActionClose.
We have avoided a single massive worker interface because it would invariably break as the BA required new functionality here. Many single interfaces are far more efficient and extensible.
The various bean interfaces are carefully designed to provide a very flexible and powerful standardized infrastructure at the JVM level. This is similar to that provided by CORBA for interprocess work. but much simpler and lightweight.
Examine the System Tree context menu, which has items Start, Pause, Resume, Close. These are enabled if a bean implements the relevant interface. This allows the user to directly control a bean, such as to pause it while testing various parameters, and then resume it to let the system continue. This is very useful for evolving a system while it's running..
The terms worker, bean, reusable and component are interchangeble in the BA.