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):

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):

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.
- The TypeMatchingArchWizardExtension will make sure that the interfaces of Components and Connectors match the corresponding signatures of their specified types. This matching will be triggered when the "Type" element of these components and connectors is set or changed.
- The NamingConventionArchWizardExtension
implements some of the naming conventions for xADL 2.0 documents
regarding interface names for Components and Connectors, signature names
for Component and Connector types, Component and Connector type
suffixes, and and the names of Links. This extension component
will be triggered when the "Id" attribute of a Component or Connector is
set or changed, and when at least two points of a Link are set.
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.
getDescription
: This method should return aString
description of the component, and will be visible to ArchWizard users through the Extension Manager.handleStateChangeEvent
: This method investigates theXArchFlatEvent
parameter in order to determine whether it's an event that the extension component should respond to.
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.