Thursday, June 17, 2010

Tools For Administration

ViSit Anywhere provides a number of specialized tools for performing administrative tasks.  Our previous experience with ViSit and ViSit Web have shown that geospatial projects often evolve over time.  To manage this evolution a robust administration framework must be present.  ViSit Anywhere's change management provides the foundation for ensuring that the project configuration can be easily and transparently applied over the entire user base.  The post discusses some of the tools available to administrators for managing project change.  It is important to point out that most ViSit Anywhere users (even those making complex edits) are unlikely to need to use these tools.


The Project Tree

As stated previously on this site, a ViSit Anywhere project is managed by a hierarchy of project objects, including the object types used, the project schema and the project instance data.  Administrators can view the project hierarchy by activating the ribbon's Project tab and selecting the Project button from the Manage chunk.  This displays the main project tree control in a dockable panel.  The project tree control is based on a Outlook 2007 style navigation bar.  This type of control has a main display area (typically showing the full project tree and a set of navigation bars or buttons on the bottom that allow the view to be switched.  In our case, you can create sub-trees simply by selecting a node in the visible tree and dragging it onto the bar on the bottom.  Selecting a button will switch between tree views.





The docked panel is only the visible face of the ViSit Anywhere tree controller.  This object acts a server of project tree branches for other ViSit Anywhere tools and applications.  These sub-trees have the same functionality as the tree in the main view, but often add other features.  For example, the Place navigation tool collects all the available places, and will navigate when a Place is double-clicked.  The exact same functionality is available in the main tree (except that the Places may be dispersed across several branches there).


Right-clicking on a tree now presents the object's contextual menu that provides several tools for project configuration.  These will be discussed later in this document.  The items displayed in the contextual menu are controlled either by the selected node, its parent or one of the top level controllers (such as the type controller or the change manager).



Check Mode

It is very important for administrators to know that a configuration is valid.  ViSit Anywhere provides a special Check mode on the project tree to assist in this task.  To activate check mode either click on the Check button from the context menu of a node in the project tree, or select the Check button from Manage chunk in the Project ribbon page.  When this is done the selected node and all its child nodes are checked (errors bubble-up to the top level node to facilitate their location).  While in check mode, the image icons associated with the tree nodes take on an addition overlay that indicates the state of the object (based on its internal checking algorithm).  The state might be OK, Warning or Error.  Nodes in a warning or error state have an additional text message associated with the tree node text.  To disable check mode, just un-check the Check button.





Discovery
Discovery is a foundation technology in ViSit Anywhere.  The idea is that certain project types, in under well-defined conditions do know how to "discover" (basically create configured objects) themselves without the need for an administrator to perform the configuration.  For organizations with data already in a relation database, Discover can be used to import the database schema (and eventually the data) into the new project.
  This is an important topic, so I will be spending more time on discovery and integration in an upcoming post.  For now, lets say that to use the discovery tools, simply select a tree node and then select the Discover Mode button, either in the project tree's contextual menu or the  Manage chunk on the Project ribbon page.  This puts the select item into Discovery state, at which time it tries to discover children objects.  Discovered children are displayed in the project tree with a question mark overlay on their node icon.  Discovered children can be added to a project simply by integrating them using the Integrate item in the discovered child's contextual menu.  Integrated objects become fully functional project objects.

As a simply example, consider the integration of a new snap-in application into ViSit Anywhere.  In order to add a ViSit Anywhere application to a project, we simply copy the .NET assemblies to the ViSit Anywhere program directory.  Next, we open the project tree and navigate to the Types object.  The object represented by this node is the type controller and it implicitly know how to discover ViSit Anywhere types.  When we activate Discover mode on the Types object (left side of the following screenshot) it scans the .NET assemblies in its domain path and shows the ViSit Anywhere types that are available for integration with the project.  The discovered types are shown in the project tree, decorated with the Discovered overlay (right side of the following screenshot).  The object can be integrated into the project (as fully validate project types) by selecting the Integrate action in the contextual menu associated with the discovered object.  We will be discussing the implementation of ViSit Anywhere snap-in applications in an upcoming post.


Create
ViSit Anywhere also provides standard project configuration tools.  These are best used when starting without existing data.  In these cases, discovery is of little help (there is nothing to discover).  Fortunately ViSit Anywhere provide the tool to create new project objects from the project tree.  In this case, the parent object knows what type of children that it can have, so and which types can be created from nothing, so the list of objects to create is filtered.  For example, the screenshot below shows all the types that might be created as direct children of a Module object.  Note, object creation in this way make most sense for schema objects.  Type objects are best discovered and instance object typically created editing tools or discovered from existing data.  Once the user has created an object, it can be configure easily using the object properties controls.  This type of object creation and configuration is based on long standard Windows usage idioms and this allows users to quickly learn how to do basic configuration.


Navigators
The configuration of the project objects is generally performed with the project tree.  This configuration often means that one object depends on the configuration of another, for example, a Relation object associates one Table to another.  In cases like this, it is often important to inspect and configure these object at the same time.  This can be difficult in very large projects, as such objects are often implemented in a disjoint, modular fashion.  To aid administrator deal with these types of complex associations, ViSit Anywhere provides Project Tree navigators in an objects context menu.  In the example below, when we right click on a table, we automatically see navigations to its parent tables.  Selecting one of these items will move the selected node in the Project Tree to the related object.


Drag-And-Drop
Drag and drop is another important technique used in ViSit Anywhere configuration.  By select a node in the Project Tree we can move, copy and depending on the drop site, even create new objects.  For example, by dropping one table column on another, in another table we can create a relation between the two tables.  Drag and drop often provides a simple, unambiguous way to achieve complex configurations.
Configuration Wizards
In some cases, configuration is very complex and may require a valid sequence of operations to effectively preform the task.  In these cases, ViSit Anywhere provides configuration wizards that allows the administrator to proceed step-by-step through the complex configuration task.


The Properties Control

The Project Tree allows us to configure the overall structure of the ViSit Anywhere project and it allows us to navigate and invoke different aspects of the project objects.  However, to configure the details of each object another tool is required.  This is the job of the Properties Control.  Each object in a ViSit Anywhere project implements a unique set of controls to facilitate its configuration.  This uses standard Windows user interface idioms which helps administrators in dealing with the diverse set of configurations possible.  For example, the screenshot below shows how we can customize the color of a line graphic by configuring the associated context.  Note, that context set is a hierarchy of objects that allows properties to be inherited and overridden.



The Properties Control is closely associated with the Project Tree control.  In order to facilitate the administration of the project, when the selection in the Project Tree changes, the read-only properties control is automatically updated so that the administrator can also check the specific configuration of any object quickly and easily.  Also it is important to point out that all the configurations discussed in post are change managed.  This means that when an administrator has finished a configuration task, he simply has to commit his changes to the ViSit Anywhere project server and the new configuration will automatically be installed on all other client machine when they synchronize to the server.  There is no need to make provisions for special configuration distributions.

 

Conclusions

This post has given a brief introduction to many of the tools available to ViSit Anywhere administrators.  We believe that they provide a unique environment for configuring geo-spatial data projects.  In upcoming posts we will look closer at many of the features we have introduced here.



No comments: