Difference between revisions of "HowTo:Create UBIK Plugin"
(→Interface: UBIK.Injection.IUbikPlugin) |
(→MetaData) |
||
Line 19: | Line 19: | ||
== MetaData == | == MetaData == | ||
− | + | Managing plugins correctly requires to provice the following information, as defined by the interface '''UBIK.Injection.IUbikInjectionMetaData'''. | |
− | + | ||
+ | The plugin must implement the '''IUbikPlugin''' interface. Additionally, the plugin has to be registered for MEF composition by defining the export contract via the attributes. | ||
+ | <source lang="csharp"> | ||
+ | [Export(typeof(UBIK.Injection.IUbikPlugin))] | ||
+ | [ExportMetadata("ID", "C149402E-BC86-46D6-8D1B-63C86894EA77")] | ||
+ | [ExportMetadata("Type", typeof(TestPlugin))] | ||
+ | [ExportMetadata("Name", "TestPlugin" )] | ||
+ | [ExportMetadata("Description", "Tests the injection management")] | ||
+ | [ExportMetadata("Version", 1)] | ||
+ | [ExportMetadata("Company", "Augmensys GmbH")] | ||
+ | |||
+ | public class TestPlugin : UBIK.Injection.IUbikPlugin | ||
+ | { | ||
+ | } | ||
+ | </source> | ||
=== Mandatory information === | === Mandatory information === |
Revision as of 10:42, 19 March 2015
UBIK® Plugins are dynamically loaded into the UBIK® Kernel using the Microsoft Extensibility Framework (MEF).
Contents
Basic Prerequisites
If you want to create a plugin which can be loaded into UBIK® you have to include references to
- System.ComponentModel.Composition
- UBIK.Injection
UBIK® Injection Management provides access to all the basic features used by the Kernel to identifiy and categorize the available plugins. This management is provided by a library called UBIK.Injection.
Interface: UBIK.Injection.IUbikPlugin
The plugin must implement the IUbikPlugin interface.
public class TestPlugin : UBIK.Injection.IUbikPlugin
{
}
MetaData
Managing plugins correctly requires to provice the following information, as defined by the interface UBIK.Injection.IUbikInjectionMetaData.
The plugin must implement the IUbikPlugin interface. Additionally, the plugin has to be registered for MEF composition by defining the export contract via the attributes.
[ExportMetadata("ID", "C149402E-BC86-46D6-8D1B-63C86894EA77")]
[ExportMetadata("Type", typeof(TestPlugin))]
[ExportMetadata("Name", "TestPlugin" )]
[ExportMetadata("Description", "Tests the injection management")]
[ExportMetadata("Version", 1)]
[ExportMetadata("Company", "Augmensys GmbH")]
public class TestPlugin : UBIK.Injection.IUbikPlugin
{
}
Mandatory information
Name | Type | Description |
---|---|---|
ID | string | Unique ID of the Plugin |
Type | System.Type | Systemtype of the Plugin. Used for filtering the Plugins during loading. |
Optional information
Name | Type | Description |
---|---|---|
Name | string | Name of the plugin (for UI Presentation) |
Description | string | Name of the plugin (for UI Presentation) |
Version | int | Version of the plugin. As there are more plugins with the same ID, only the plugin with the highest Version is available. |
TargetApplication | PluginTargetApplication | Possibility to limit the plugin for a single type of application. |
MinimumKernelVersion | string | Minimum required Kernel version: Format x.x.x.x |
MinimumDatabaseVersion | string | Minimum required Database version: Format x.x.x.x |
Company | string | Information about the Company (for UI Presentation) |
Copyright | string | Copyright Information (for UI Presentation) |
Example:
[ExportMetadata("ID", "23B72354-A26F-449E-A7DA-F874B4167248")]
[ExportMetadata("Type", typeof(myPlugIn))]
[ExportMetadata("Name", "my Plugin")]
[ExportMetadata("Description", "does fancy things in version 2.4")]
[ExportMetadata("Version", 3)]
[ExportMetadata("MinimumKernelVersion", "2.4.0.0")]
[ExportMetadata("MinimumDatabaseVersion", "2.4.0.0")]
[ExportMetadata("Company", "Augmensys GmbH")]
[ExportMetadata("Copyright", "2014, Augmensys GmbH")]
public class myPlugIn : UBIK.Injection.IUbikPlugin
{
}