Last modified on 11 March 2026, at 14:59

Difference between revisions of "UBIK Plugin Design"

(Supported capabilities and roadmap)
 
(20 intermediate revisions by 2 users not shown)
Line 1: Line 1:
The {{UBIK}} Plugin Design feature allows users to create a {{UBIK}} Plugin C# solution, including system definitions purely from customizing in {{UBIK}} Studio.  
+
The {{UBIK}} Plugin Design feature allows users to create a {{UBIK}} Plugin C# solution, including system definitions purely from customizing in {{UBIK}} Studio.{{Version/ServerSince|5.0.0}}
 +
== Overview ==
 +
=== Relevant use-cases ===
 +
Getting a customizing from one {{UBIK}} database into another can be quite a challenge. There are several use-cases in which this is required though:
 +
* '''Staging''': E.g., moving a feature from a test environment to the productive environment
 +
* '''Hotfixes''': A bugfix should be done in multiple environments
 +
* '''Reusing features''': A set of features should be reused in multiple projects
 +
* '''Standardization''': An implementation should be positioned as a verifiable standard package
 +
 
 +
=== Benefit of {{UBIK}} Plugins ===
 +
Plugins are a good way to deal with this, because of the following benefits:
 +
* Plugins can be developed and maintained using industry-standard processes and tools (e.g., IDEs like Visual Studio and CVSs like Git).
 +
* Plugins can be transported and deployed rather easily.
 +
* Plugins can be strong-named (signed) and versioned.
 +
* Plugins can be compiled, tested and even deployed automatically using DevOps infrastructure.
 +
 
 +
=== Manual configuration, automatic generation ===
 +
However, [[HowTo:Provide_system_definitions_with_a_custom_plugin|developing a {{UBIK}} Plugin]] from scratch is an expert-level task.
 +
Optimally, one could configure a customizing in {{UBIK}} Studio, as usual, and generate a Plugin out of this configuration.
 +
This can be achieved with the {{UBIK}} Plugin Design feature.
  
 
== Usage ==
 
== Usage ==
 +
=== Setup ===
 +
The {{UBIK}} Plugin Design feature-set is contained in a {{UBIK}} Plugin itself. It's called "UBIK.Module.PluginDesign" and can be downloaded from the [https://release.augmensys.com/download/modules/Plugins/ Release Portal].
 +
 +
To install it, copy & paste the UBIK.Module.PluginDesign.dll into the Injection folder of your {{UBIK}} Studio.
 +
After this, when connecting to a {{UBIK}} Environment (database), an upgrade dialog allowing the installation of the Plugin should appear.
 +
 
=== Creation of a new Plugin Design Configuration ===
 
=== Creation of a new Plugin Design Configuration ===
 
[[File:Plugin_Design_Configuration_instance.png|300px|thumb|Creating a plugin design configuration instance]]
 
[[File:Plugin_Design_Configuration_instance.png|300px|thumb|Creating a plugin design configuration instance]]
The feature is accessible through the "System.PluginDesign.PLUGIN_DESIGN_CONFIGURATION" metaclass in UBIK Studio.
+
The feature is accessible through the "System.PluginDesign.PLUGIN_DESIGN_CONFIGURATION" MetaClass in UBIK Studio.
 
A new Plugin Design Configuration instance can be created in the Bulk Editor to define a custom plugin context.
 
A new Plugin Design Configuration instance can be created in the Bulk Editor to define a custom plugin context.
  
 
=== Adding MetaClasses to the configuration ===
 
=== Adding MetaClasses to the configuration ===
 
[[File:Metaclass_Added.png|300px|thumb|Adding a MetaClass to the configuration]]
 
[[File:Metaclass_Added.png|300px|thumb|Adding a MetaClass to the configuration]]
Custom metaclasses can be added to the plugin configuration using the "SYSREL_PLUGINDESIGNCONFIG_METACLASS" relation in the Relation Editor.
+
Custom MetaClasses can be added to the plugin configuration using the "SYSREL_PLUGINDESIGNCONFIG_METACLASS" relation in the Relation Editor.
 +
 
 +
=== Adding other objects to the configuration ===
 +
In the initial version of this feature, we're assuming that your MetaClasses are the center of your customizing; everything else will be detected as a dependency of those. E.g., if you're using a MetaProperty in a MetaClass you related to the Plugin Design Configuration instance, it will also be contained in the generated C# solution. The same is true for all other (supported) kinds of objects. The Plugin Design feature is subject to active development.
  
 
=== Exporting a C# solution for the plugin ===
 
=== Exporting a C# solution for the plugin ===
Line 18: Line 46:
 
[[File:PluginResult.png|300px|thumb|Resulting C# solution in Visual Studio]]
 
[[File:PluginResult.png|300px|thumb|Resulting C# solution in Visual Studio]]
  
== Supported capabilities ==
+
=== Next steps ===
 +
The generated solution can be opened using Visual Studio.
 +
You can build the C# project contained in the solution and deploy the resulting plugin DLL to your target system's injection folders.
 +
However, you can also use the generated solution code as a basis for further development and push it into a Git repository, for example.
 +
Further, you could set up some DevOps infrastructure for automatic building, testing and deployment - it's up to you.
 +
 
 +
[[Category:Actions|UBIK Plugin Design]]
 +
[[Category:Coding|UBIK Plugin Design]]
 +
[[Category:How-To|UBIK Plugin Design]]
 +
[[Category:Module|UBIK Plugin Design]]
 +
[[Category:Plugin|UBIK Plugin Design]]
 +
[[Category:Studio tools|UBIK Plugin Design]]
 +
[[Category:Version 5.0|UBIK Plugin Design]]
 +
 
 +
== Supported capabilities and roadmap ==
  
 
{| class="wikitable" style="width:600px"
 
{| class="wikitable" style="width:600px"
 
! Feature
 
! Feature
 +
! Release State
 
! Version
 
! Version
 
|-
 
|-
 
| Generation of a basic Plugin project,<br/>including the Module and a SystemDefinitions stub
 
| Generation of a basic Plugin project,<br/>including the Module and a SystemDefinitions stub
 +
| {{Check_mark}}
 +
| 5.0 Initial Release
 +
|-
 +
| Incremental versioning of the generated Plugin to support upgrades in a target Environment
 +
| {{Check_mark}}
 
| 5.0 Initial Release
 
| 5.0 Initial Release
 
|-
 
|-
 
| MetaClasses
 
| MetaClasses
 +
| {{Check_mark}}
 
| 5.0 Initial Release
 
| 5.0 Initial Release
 
|-
 
|-
 
| MetaProperties
 
| MetaProperties
 +
| {{Check_mark}}
 
| 5.0 Initial Release
 
| 5.0 Initial Release
 
|-
 
|-
 
| Custom Class Code
 
| Custom Class Code
| 5.0 Service Pack
+
| {{Check_mark}}
 +
| 5.0 Initial Release
 
|-
 
|-
 
| Custom Code Library
 
| Custom Code Library
| 5.0 Service Pack
+
| {{Check_mark}}
 +
| 5.0 Initial Release
 
|-
 
|-
 
| Classifications
 
| Classifications
| 5.0 Service Pack
+
| {{Check_mark}}
 +
| 5.0 Initial Release
 
|-
 
|-
 
| Relations
 
| Relations
| 5.0 Service Pack
+
| {{Check_mark}}
 +
| 5.0 Initial Release
 +
|-
 +
| Selective Lists and Selective Items
 +
| {{Check_mark}}
 +
| 5.0 Initial Release
 
|-
 
|-
 
| References
 
| References
| 5.0 Service Pack
+
| {{Check_mark}}
 +
| 5.0 Initial Release
 +
|-
 +
| MetaProxies and MetaProxyProperties
 +
| {{Check_mark}}
 +
| 5.0 Initial Release
 
|-
 
|-
 
| Units and Unit Items
 
| Units and Unit Items
| 5.0 Service Pack
+
| {{Check_mark}}
 +
| 5.0 Initial Release
 
|-
 
|-
| Selective Lists and Selective Items
+
| MetaProperty assignment properties (RelationData)
| 5.0 Service Pack
+
| Imminent
 +
| 5.1 Initial Release
 +
|-
 +
| Multi-language translations for References, Relations, Units & UnitItems
 +
| Imminent
 +
| 5.1  Initial Release
 +
|-
 +
| [[LOCALIZATION]] instances for multi-language translation of MetaClasses, MetaProperties, SelectiveLists & SelectiveItems
 +
| WiP
 +
| 5.1 Service Pack
 +
|-
 +
| Queries
 +
| Requirement
 +
| Future version
 +
|-
 +
| ACM-related content
 +
| Requirement
 +
| Future version
 
|}
 
|}
 +
 +
[[Category:Actions|UBIK Plugin Design]]
 +
[[Category:Coding|UBIK Plugin Design]]
 +
[[Category:How-To|UBIK Plugin Design]]
 +
[[Category:Module|UBIK Plugin Design]]
 +
[[Category:Plugin|UBIK Plugin Design]]
 +
[[Category:Studio tools|UBIK Plugin Design]]
 +
[[Category:Version 5.0|UBIK Plugin Design]]
  
 
== See also ==
 
== See also ==
Line 61: Line 150:
 
*[[UBIK_Actions]]
 
*[[UBIK_Actions]]
 
*[[HowTo:Provide_system_definitions_with_a_custom_plugin]]
 
*[[HowTo:Provide_system_definitions_with_a_custom_plugin]]
 +
*[[Injection_Management|UBIK Plugin Injection]]
  
 
[[Category:Actions|UBIK Plugin Design]]
 
[[Category:Actions|UBIK Plugin Design]]

Latest revision as of 14:59, 11 March 2026

The UBIK® Plugin Design feature allows users to create a UBIK® Plugin C# solution, including system definitions purely from customizing in UBIK® Studio.

Overview

Relevant use-cases

Getting a customizing from one UBIK® database into another can be quite a challenge. There are several use-cases in which this is required though:

  • Staging: E.g., moving a feature from a test environment to the productive environment
  • Hotfixes: A bugfix should be done in multiple environments
  • Reusing features: A set of features should be reused in multiple projects
  • Standardization: An implementation should be positioned as a verifiable standard package

Benefit of UBIK® Plugins

Plugins are a good way to deal with this, because of the following benefits:

  • Plugins can be developed and maintained using industry-standard processes and tools (e.g., IDEs like Visual Studio and CVSs like Git).
  • Plugins can be transported and deployed rather easily.
  • Plugins can be strong-named (signed) and versioned.
  • Plugins can be compiled, tested and even deployed automatically using DevOps infrastructure.

Manual configuration, automatic generation

However, developing a UBIK® Plugin from scratch is an expert-level task. Optimally, one could configure a customizing in UBIK® Studio, as usual, and generate a Plugin out of this configuration. This can be achieved with the UBIK® Plugin Design feature.

Usage

Setup

The UBIK® Plugin Design feature-set is contained in a UBIK® Plugin itself. It's called "UBIK.Module.PluginDesign" and can be downloaded from the Release Portal.

To install it, copy & paste the UBIK.Module.PluginDesign.dll into the Injection folder of your UBIK® Studio. After this, when connecting to a UBIK® Environment (database), an upgrade dialog allowing the installation of the Plugin should appear.

Creation of a new Plugin Design Configuration

Creating a plugin design configuration instance

The feature is accessible through the "System.PluginDesign.PLUGIN_DESIGN_CONFIGURATION" MetaClass in UBIK Studio. A new Plugin Design Configuration instance can be created in the Bulk Editor to define a custom plugin context.

Adding MetaClasses to the configuration

Adding a MetaClass to the configuration

Custom MetaClasses can be added to the plugin configuration using the "SYSREL_PLUGINDESIGNCONFIG_METACLASS" relation in the Relation Editor.

Adding other objects to the configuration

In the initial version of this feature, we're assuming that your MetaClasses are the center of your customizing; everything else will be detected as a dependency of those. E.g., if you're using a MetaProperty in a MetaClass you related to the Plugin Design Configuration instance, it will also be contained in the generated C# solution. The same is true for all other (supported) kinds of objects. The Plugin Design feature is subject to active development.

Exporting a C# solution for the plugin

Trigger the C# solution generation

A C# solution can be generated for the plugin via context menu action in the Class Browser (content view style): Right-click the Plugin Configuration instance, 'Start Action → "" → Create a C# solution for a custom UBIK plugin'. This will increase the plugin version (revision), generate the C# solution and prompt the user with a save dialog for a respective .zip archive.

Resulting C# solution in Visual Studio

Next steps

The generated solution can be opened using Visual Studio. You can build the C# project contained in the solution and deploy the resulting plugin DLL to your target system's injection folders. However, you can also use the generated solution code as a basis for further development and push it into a Git repository, for example. Further, you could set up some DevOps infrastructure for automatic building, testing and deployment - it's up to you.

Supported capabilities and roadmap

Feature Release State Version
Generation of a basic Plugin project,
including the Module and a SystemDefinitions stub
IC Check Mark.png 5.0 Initial Release
Incremental versioning of the generated Plugin to support upgrades in a target Environment IC Check Mark.png 5.0 Initial Release
MetaClasses IC Check Mark.png 5.0 Initial Release
MetaProperties IC Check Mark.png 5.0 Initial Release
Custom Class Code IC Check Mark.png 5.0 Initial Release
Custom Code Library IC Check Mark.png 5.0 Initial Release
Classifications IC Check Mark.png 5.0 Initial Release
Relations IC Check Mark.png 5.0 Initial Release
Selective Lists and Selective Items IC Check Mark.png 5.0 Initial Release
References IC Check Mark.png 5.0 Initial Release
MetaProxies and MetaProxyProperties IC Check Mark.png 5.0 Initial Release
Units and Unit Items IC Check Mark.png 5.0 Initial Release
MetaProperty assignment properties (RelationData) Imminent 5.1 Initial Release
Multi-language translations for References, Relations, Units & UnitItems Imminent 5.1 Initial Release
LOCALIZATION instances for multi-language translation of MetaClasses, MetaProperties, SelectiveLists & SelectiveItems WiP 5.1 Service Pack
Queries Requirement Future version
ACM-related content Requirement Future version

See also