Jump to: navigation, search

Create UBIK Module


Revision as of 14:48, 7 October 2024 by ARU (Talk | contribs)

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.IUbikPlugin))]

    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(TestModule))]
    [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
    {
        public ISystemDefinitionProvider SystemDefinitionsProvider
        {
            get
            {
                return TestSysDefProvider.Instance;
            }
        }

        public void Initialize(UBIKEnvironment environment)
        {
        }

        public bool Initialized()
        {
            return true;
        }

        public void Terminate()
        {
        }

        public List<ModuleInfo> DependencyModules
        {
            get;
        } = new List<ModuleInfo>();
    }

To be implemented for IUbikModule

Name Description
SystemDefinitionsProvider The instance of the SystemDefinitions for the respective module is provided.
Initialize Initializes the module.
Initialized Returns true when the plugin is initialized
Terminate Terminates the UBIKEnvironment if it has been initialized.
DependencyModules Returns the module information for which it has a dependency.

See also