Plugin Architecture

What is a Plugin

Urbemis 2007 was written using Microsoft's Smart Client - Composite UI Application Block. The benefits of this library are that it provides a very well-designed dependency injection system, an eventing system and a plugin architecture. A plugin architecture means that the program was written in distinct parts, or modules. Urbemis 2007 has one module that handles all of the Windows forms, and one module that performs all of the data manipulations and calculations. This new version of Urbemis includes a module for entering and saving Named Equipment Lists.

Why is this important

What this means to the Urbemis 2007 user community is that certain types of functionality can be added to Urbemis without touching the base code of the model. For example, if a region needs a report unique to that area, a separate module can be written and 'plugged into' Urbemis. Say that a region wanted to monitor annual ROG and NOX emissions and print a warning report whenever the amounts were over 100 tons per year. The code for this report would be placed into a .dll file. Users from that region would copy the new .dll file into their Urbemis program directory, edit the ProfileCatalog.xml file (adding one line telling Urbemis to load this new module), and they would have the new features the next time they started Urbemis. Once loaded, the new module has access to the data and events in the primary code base of Urbemis.

How can I turn off a Plugin

To turn off a plugin, edit the ProfileCatalog.xml file and remove the line containing the name of the module that is to be removed. Or, the line can be commented out by placing these symbols at the start of the line: . The ProfileCatalog.xml is a simple text file that can be edited with Notepad, or any other text editor. It is not necessary to remove the .dll file from the Urbemis program directory.

How can I turn on a Plugin

To turn a plugin on, place the .dll file in the Urbemis program directory, and add the following line to the ProfileCatalog.xml file: <ModuleInfo AssemblyFile="Urbemis.Equipment.dll" />