Difference between revisions of "HowTo:Create UBIK Plugin"
(→Interface: IUbikInjectionMetaData) |
m |
||
(20 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | {{UBIK}} Plugins are | + | {{UBIK}} Plugins are loaded dynamically into the {{UBIK}} Kernel by the {{UBIK}} [[Injection_Management|Injection Management]] based on the [https://msdn.microsoft.com/de-de/library/dd460648%28v=vs.110%29.aspx Microsoft Extensibility Framework (MEF)]. |
− | == Basic Prerequisites == | + | = Introduction = |
− | + | === Basic Prerequisites === | |
+ | Creating an own plugin requires to add references to | ||
* System.ComponentModel.Composition | * System.ComponentModel.Composition | ||
* UBIK.Injection | * 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'''. | {{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: | + | === Interface: IUbikPlugin === |
− | The plugin must implement the | + | The plugin must implement the <code>UBIK.Injection.IUbikPlugin</code> interface and has to be registered for MEF composition by defining the export contract via an attribute. |
<source lang="csharp"> | <source lang="csharp"> | ||
[Export(typeof(UBIK.Injection.IUbikPlugin))] | [Export(typeof(UBIK.Injection.IUbikPlugin))] | ||
Line 18: | Line 20: | ||
</source> | </source> | ||
− | == Interface: IUbikInjectionMetaData == | + | === Interface: IUbikInjectionMetaData === |
− | Managing plugins correctly presumes the following information, as defined by the interface | + | Managing plugins correctly presumes the following information, as defined by the interface <code>UBIK.Injection.IUbikInjectionMetaData</code>. |
<source lang="csharp"> | <source lang="csharp"> | ||
Line 30: | Line 32: | ||
</source> | </source> | ||
− | === Mandatory information === | + | ==== Mandatory information ==== |
− | {| class="wikitable" | width = " | + | {| class="wikitable" | width = "100%" |
|- | |- | ||
! Name !! Type !! Description | ! Name !! Type !! Description | ||
Line 41: | Line 43: | ||
|} | |} | ||
− | === Optional information === | + | ==== Optional information ==== |
− | + | {| class="wikitable" | width = "100%" | |
− | {| class="wikitable" | width = " | + | |
|- | |- | ||
! Name !! Type !! Description | ! Name !! Type !! Description | ||
|- | |- | ||
− | | Name|| | + | | Name|| {{MSDN/String}} || Name of the plugin (for UI Presentation) |
|- | |- | ||
− | | Description|| | + | | Description|| {{MSDN/String}} || Name of the plugin (for UI Presentation) |
|- | |- | ||
− | | Version|| | + | | Version|| {{MSDN/Int32}} || 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. | | TargetApplication|| PluginTargetApplication|| Possibility to limit the plugin for a single type of application. | ||
|- | |- | ||
− | | MinimumKernelVersion|| | + | | MinimumKernelVersion|| {{MSDN/String}} || Minimum required Kernel version: Format x.x.x.x |
|- | |- | ||
− | | MinimumDatabaseVersion|| | + | | MinimumDatabaseVersion|| {{MSDN/String}} || Minimum required Database version: Format x.x.x.x |
|- | |- | ||
− | | Company|| | + | | Company|| {{MSDN/String}} || Information about the Company (for UI Presentation) |
|- | |- | ||
− | | Copyright|| | + | | Copyright|| {{MSDN/String}} || Copyright Information (for UI Presentation) |
|- | |- | ||
|} | |} | ||
− | + | = Example = | |
− | Example | + | |
− | + | ||
<source lang="csharp"> | <source lang="csharp"> | ||
− | |||
[Export(typeof(UBIK.Injection.IUbikPlugin))] | [Export(typeof(UBIK.Injection.IUbikPlugin))] | ||
− | [ExportMetadata("ID", " | + | [ExportMetadata("ID", "C149402E-BC86-46D6-8D1B-63C86894EA77")] |
− | [ExportMetadata("Type", typeof( | + | [ExportMetadata("Type", typeof(TestPlugin))] |
− | [ExportMetadata("Name", " | + | [ExportMetadata("Name", "TestPlugin" )] |
− | [ExportMetadata("Description", " | + | [ExportMetadata("Description", "Tests the injection management")] |
− | [ExportMetadata("Version", | + | [ExportMetadata("Version", 1)] |
[ExportMetadata("MinimumKernelVersion", "2.4.0.0")] | [ExportMetadata("MinimumKernelVersion", "2.4.0.0")] | ||
[ExportMetadata("MinimumDatabaseVersion", "2.4.0.0")] | [ExportMetadata("MinimumDatabaseVersion", "2.4.0.0")] | ||
[ExportMetadata("Company", "Augmensys GmbH")] | [ExportMetadata("Company", "Augmensys GmbH")] | ||
[ExportMetadata("Copyright", "2014, Augmensys GmbH")] | [ExportMetadata("Copyright", "2014, Augmensys GmbH")] | ||
− | public class | + | public class TestPlugin : UBIK.Injection.IUbikPlugin |
{ | { | ||
} | } | ||
− | |||
</source> | </source> | ||
− | == | + | <headertabs /> |
− | * [[Create_UBIK_Workflow_Activity_Plugin|UBIK Workflow Activity Plugin]] | + | |
+ | == See also == | ||
+ | * [[Injection_Management]] | ||
+ | * [[HowTo:Create_UBIK_Workflow_Activity_Plugin|UBIK Workflow Activity Plugin]] | ||
− | [[Category: | + | [[Category:How-To|Create UBIK Plugin]] |
− | [[Category: | + | [[Category:Injecting|Create UBIK Plugin]] |
Latest revision as of 11:45, 3 August 2016
UBIK® Plugins are loaded dynamically into the UBIK® Kernel by the UBIK® Injection Management based on the Microsoft Extensibility Framework (MEF).