Plugins are special Modules that are exposed to the user through the Workbench GUI. This is typically done using the main menu, or the context-sensitive menu. Much of the MySQL Workbench functionality is implemented using plugins; for example, table, view, and routine editors are native C++ plugins, as are the forward and reverse engineering wizards. The Administrator facility in MySQL Workbench is implemented entirely as a plugin in Python.
A plugin can be a simple function that performs some action on an
input, and ends without further interaction with the user.
Examples of this include auto-arranging a diagram, or making batch
changes to objects. To create a simple plugin, the function must
be located in a module and declared as a plugin using the
plugin
decorator of the
ModuleInfo
object.
Plugins can have an indefinite runtime, such as when they are driven by the user through a graphical user interface. This is the case for the object editors and wizards within MySQL Workbench. Although the wizard type of plugin must be declared in the usual way, only the entry point of the plugin will need to be executed in the plugin function, as most of the additional functionality will be invoked as a result of the user interacting with the GUI.
Reloading a plugin requires MySQL Workbench to be restarted.
Imported plugin files (and their compiled counterparts) are stored here:
Table C.3 User Plugin File Location
Operating System | File Path |
---|---|
Windows | %AppData%\MySQL\Workbench\modules |
macOS | ~username/Library/Application Support/MySQL/Workbench/modules |
Linux | ~username/.mysql/workbench/modules |
Declare a plugin using this syntax:
@ModuleInfo.plugin(plugin_name, caption, [input], [groups], [pluginMenu])
These parameters are defined as follows:
plugin_name: A unique name for the plugin. It may contain only alphanumeric characters, dots, and underscores.
caption: A caption to use for the plugin in menus.
input: An optional list of input arguments.
-
groups: Optional list of groups the plugin belongs to. Recognized values are:
Overview/Utility
: The menu in the Model Overview.Model/Utility
: The menu for diagram objects.Menu/<category>
: The menu in the main menu.
pluginMenu: Optional name of a submenu in the Plugins menu where the plugin should appear. For example, , , . This is equivalent to adding a
Menu/<category>
in the groups list.