Changes

HowTo:Create UBIK Plugin

2,569 bytes added, 15:22, 28 November 2014
Created page with "Microsoft Extensibility Framework (MEF) is used to dynamically load Plugins into the UBIK Kernel. == Basic Prerequisites == If you want to create a Plugin which can be loaded..."
Microsoft Extensibility Framework (MEF) is used to dynamically load Plugins into the UBIK Kernel.

== Basic Prerequisites ==
If you want to create a Plugin which can be loaded in UBIK you have to refer to System.ComponentModel.Composition.

UBIK Injection Managemnt 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. You have to refer to this library as well.

=== References: ===
* System.ComponentModel.Composition
* UBIK.Injection


== Interface UBIK.Injection.IUbikPlugin ==
Your plugin must implement the Ubik Plugin Interface.
To register your plugin for MEF composition by defining the export contract via an Attribute.

<source lang="csharp">

[Export(typeof(UBIK.Injection.IUbikPlugin))]
public class myPlugIn : UBIK.Injection.IUbikPlugin
{
}

</source>



== MetaData ==
Ubik needs some Meta Information to manage plugins correctly.
The available MetaInformation are defined by the interface UBIK.Injection.IUbikInjectionMetaData

=== Mandatory information ===

{| class="wikitable" | width = "50%"
|-
! 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 ===

{| class="wikitable" | width = "50%"
|-
! 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
|-
|}


Example:

<source lang="csharp">

[Export(typeof(UBIK.Injection.IUbikPlugin))]
[ExportMetadata("ID", "23B72354-A26F-449E-A7DA-F874B4167248")]
[ExportMetadata("Type", typeof(UBIK.Injection.IUbikPlugin))]
[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")]
public class myPlugIn : UBIK.Injection.IUbikPlugin
{

}

</source>
1,579
edits