Last modified on 3 August 2016, at 12:08

Create UBIK Module

Revision as of 12:08, 3 August 2016 by KNO (Talk | contribs) (Created page with "{{UBIK}} Modules are loaded dynamically into the {{UBIK}} Kernel by the {{UBIK}} Injection Management based on the [https://msdn.microsoft.com/de-de/l...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

UBIK® Modules are loaded dynamically into the UBIK® Kernel by the UBIK® Injection Management based on the Microsoft Extensibility Framework (MEF).

[edit]

Introduction

Basic Prerequisites

Creating an own plugin requires to add 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: IUbikModule

The module must implement the UBIK.Injection.IUbikModule interface and has to be registered for MEF composition by defining the export contract via an attribute.

    [Export(typeof(UBIK.Injection.IUbikModule))]

    public class TestModule : UBIK.Injection.IUbikModule
    {
    }

Interface: IUbikInjectionMetaData

Managing modules correctly presumes the following information, as defined by the interface UBIK.Injection.IUbikInjectionMetaData.

    [ExportMetadata("ID", "C149402E-BC86-46D6-8D1B-63C86894EA77")]
    [ExportMetadata("Type", typeof(TestModule))]
    [ExportMetadata("Name", "TestModule" )]
    [ExportMetadata("Description", "Tests the injection management")]
    [ExportMetadata("Version", 1)]
    [ExportMetadata("Company", "Augmensys GmbH")]

Mandatory information

Name Type Description
ID String Unique ID of the module
Type System.Type Systemtype of the module; used for filtering the module during loading.

Optional information

Name Type Description
Name String Name of the module (for UI Presentation)
Description String Descrirption of the module (for UI Presentation)
Version Integer Version of the module. As there are more modules with the same ID, only the module with the highest Version is available.
TargetApplication PluginTargetApplication Possibility to limit the module 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

    [Export(typeof(UBIK.Injection.IUbikModule))]
    [ExportMetadata("ID", "C149402E-BC86-46D6-8D1B-63C86894EA77")]
    [ExportMetadata("Type", typeof(TestPlugin))]
    [ExportMetadata("Name", "TestModule" )]
    [ExportMetadata("Description", "Tests the injection management")]
    [ExportMetadata("Version", 1)]
    [ExportMetadata("MinimumKernelVersion", "2.4.0.0")]
    [ExportMetadata("MinimumDatabaseVersion", "2.4.0.0")]
    [ExportMetadata("Company", "Augmensys GmbH")]
    [ExportMetadata("Copyright", "2014, Augmensys GmbH")]

    public class TestModule : UBIK.Injection.IUbikModule
    {

    }

See also