On every startup, a modeling tool scans the plugins directory, and searches for subdirectories there:
If a subdirectory contains the plugin descriptor file, the plugin's manager reads the descriptor file.
If requirements specified in a descriptor file are fulfilled, the plugin's manager loads a specified class (the specified plugin class must be derived from the com.nomagic.magicdraw.plugins.Plugin class). Then a method init() of the loaded class is called. The init() method can add GUI components using the actions architecture or do other activities and return from the method. The init() method is called only if isSupported() returns true.
The following figure illustrates how do plugins work.