Difference between revisions of "HowTo:Create UBIK Plugin"
| m (→See also) | |||
| (32 intermediate revisions by 2 users 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'''. | |
| − | + | ||
| − | + | ||
| + | === Interface: IUbikPlugin === | ||
| + | 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))] | ||
| − | + |      public class TestPlugin : UBIK.Injection.IUbikPlugin | |
| − |      public class  | + | |
|      { |      { | ||
|      } |      } | ||
| − | |||
| </source> | </source> | ||
| + | === Interface: IUbikInjectionMetaData === | ||
| + | Managing plugins correctly presumes the following information, as defined by the interface <code>UBIK.Injection.IUbikInjectionMetaData</code>. | ||
| + | <source lang="csharp"> | ||
| + |     [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")] | ||
| + | </source> | ||
| − | = | + | ==== Mandatory information ==== | 
| − | + | {| class="wikitable" | width = "100%" | |
| − | + | ||
| − | + | ||
| − | === Mandatory information === | + | |
| − | + | ||
| − | {| class="wikitable" | width = " | + | |
| |- | |- | ||
| ! Name !! Type !! Description | ! Name !! Type !! Description | ||
| |- | |- | ||
| − | | ID||  | + | | ID|| {{MSDN/String}} || Unique ID of the plugin | 
| |- | |- | ||
| − | | Type|| System.Type || Systemtype of the  | + | | Type|| System.Type || Systemtype of the plugin; used for filtering the plugins during loading. | 
| |- | |- | ||
| |} | |} | ||
| − | + | ==== Optional information ==== | |
| − | + | {| class="wikitable" | width = "100%" | |
| − | === Optional information === | + | |
| − | + | ||
| − | {| 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]] | ||
| + | * [[HowTo:Create_UBIK_Module]] | ||
| + | * [[HowTo:Provide_system_definitions_with_a_custom_plugin]] | ||
| + | * [[UBIK_Plugin_Design]] | ||
| − | [[Category:Injecting]] | + | [[Category:How-To|Create UBIK Plugin]] | 
| − | [[Category: | + | [[Category:Injecting|Create UBIK Plugin]] | 
| + | [[Category:Plugin|Create UBIK Plugin]] | ||
Latest revision as of 07:46, 6 October 2025
UBIK® Plugins are loaded dynamically into the UBIK® Kernel by the UBIK® Injection Management based on the Microsoft Extensibility Framework (MEF).

