Components:
ArchWizard

ArchWizard - An Editing Assistant for xADL 2.0 Documents

ArchWizard is an editing assistant meant to automate repetitive editing operations associated with the manipulation of xADL 2.0 documents.  It is not a tool that is meant to be used alone; ArchWizard should be used in tandem with an actual editor for xADL documents (ArchEdit is one such editor that is included in ArchStudio; note that depending on the level of sophistication of the editor used, some of ArchWizard's functionality may be redundant).  ArchWizard is completely schema dependent; in other words, it adapts to whatever architectural model is defined in the xADL schemas used to define the architecture description language (ADL) being used.  It provides an interface that allows the user to specify the following kinds of basic tasks for automation: creation and addition of children elements, and the setting of default values for editable fields.  These facilities alone allow a lot of the "busywork" of architectural editing to be automated resulting in architect time savings.

An ArchWizard screenshot with the base xADL 2.0 schemas is shown here (click to expand in new window):

archwizard screenshot 1

The tree-based view shows the possible structure that the architecture being developed can have.  When a node is selected, default values for editable attributes and children nodes can be set.


Using ArchWizard

ArchWizard - like many ArchStudio tools - is invoked from the Invoke menu of the File Manager/Invoker.  The tool monitors architectural editing activity by listening to events broadcast by the xArchADT; any actions taken by ArchWizard will affect all open architectural description documents. 

The right part of the "Customization" display of ArchWizard - as seen in the screenshot above - will show the possible structure of an architectural definition; this display is built from the schema-based libraries being used by ArchStudio during the current execution.  This adds a bit of processing overhead for ArchWizard during start-up, but assures that the tool can adapt to any set of xADL schemas.  The screenshot above is showing the default xADL 2.0 schemas.

When a nde is selected, any attributes of that node are displayed on the top right window.  Entering a default value in these attribute fields will result in that default value being set for all future elements of that type.  For the example shown in the screenshot above, all future "ArchStructure" elements will have the value of their "Id" attribute set to "foo" as soon as they are created.

Any possible children elements of a selected node are displayed on the bottom right window. Here, users can use checkmarks and counters to indicate that the number of selected elements should be automatically created for all elements that are of the selected node's type.  Note that counters are not displayed for children elements of which there can be only one instance.  For the example shown in the screenshot everytime an "ArchStructure" element is created, a "Description" and two "Connector" children will also be created.  Further customization can be done for these children elements by selecting their corresponding nodes.


ArchWizard Menu Options

The ArchWizard menu bar provides three selections: Settings, Configure, and About.

Selecting the "Settings" menu option will provide the user options to save or load a customization settings file - these are files that store the current selections displayed by ArchWizard.  This allows architects to have multiple customization files reflecting different preference configurations, or settings corresponding to different architectural schemas.  Settings files can be loaded into ArchWizard even when using a different schema than the one used when the customization file was created.  ArchWizard will make a best-effort attempt to load settings into the current tree by trying to match its structure to that of the customization file.  A customization file which includes some settings we've found useful can be found here.

Selecting the "Configure" menu option allows the user to set values for certain ArchWizard settings.  Currently, there is only one: "Overwrite On Promote."  Selecting this option will overwrite the values of any common attributes to match default values of the promoted element rather than its parent.  For example - if this option is checked   when a "Component" is promoted to an "OptionalComponent," the default values set for the "OptionalComponent" will overwrite any attributes shared with "Component."

Selecting the "About" menu option will display a fairly standard dialog with basic developer and copyright information.


ArchWizard Extension Manager

Of course, only some kinds of automated tasks can be described in terms of default values and element additions.  To support custom automation, ArchWizard provides a component-based extension mechanism; custom extension components can be built and integrated into the ArchStudio environment by architects wishing to extend ArchWizard.

Selecting the "Extension Manager" tab on the ArchWizard main display will show the status of any ArchWizardExtension components present in the ArchStudio environment.  A screenshot of this is shown here (click to expand in new window):

archwizard screenshot 2

The display shows a list of extension components present as well as their activity status, which can be toggled using the provided buttons.  The initial ArchWizard release includes two such extension components: TypeMatchingArchWizardExtension, and NamingConventionArchWizardExtension that we've found useful while editing our own architecture descriptions.  These extension components can be used when architecting your own systems, or as examples providing guidance for writing your own.


Creating New Extension Components

For extensive background information on developing for ArchStudio, read the Running/Developing section.

For ArchWizard extension components, an abstract base Java class called AbstractArchWizardExtension is provided to ease the development of these components.  The base class implements all functionality having to do with the communication between each extension component and the ArchWizard Extension Manager, and the basic tasks of communication with the rest of the ArchStudio environment.  Architects wishing to create their own components should extend this base class, and implement the two abstract methods described below in addition to any code pertaining to the tasks intended to be performed.

API documentation for AbstractArchWizardExtension is also available; you can find it along with the rest of the ArchStudio docs.


Any additional questions or comments about the operation, extension mechanism, and maintenance of ArchWizard should be sent to John Georgas.