UBIK Plugin Design
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
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
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 of active development, so most likely there will be more detailed control about the things contained in the designated Plugin in the next versions.
Exporting a C# solution for the plugin
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.
Supported capabilities
| Feature | Version |
|---|---|
| Generation of a basic Plugin project, including the Module and a SystemDefinitions stub |
5.0 Initial Release |
| Incremental versioning of the generated Plugin to support upgrades in a target Environment | 5.0 Initial Release |
| MetaClasses | 5.0 Initial Release |
| MetaProperties | 5.0 Initial Release |
| Custom Class Code | 5.0 Initial Release |
| Custom Code Library | 5.0 Initial Release |
| Classifications | 5.0 Initial Release |
| Relations | 5.0 Initial Release |
| Selective Lists and Selective Items | 5.0 Initial Release |
| References | 5.0 Initial Release |
| MetaProxies and MetaProxyProperties | 5.0 Initial Release |
| Units and Unit Items | 5.0 Initial Release |
| MetaProperty assignment properties (RelationData) | 5.1 Initial Release |
| LOCALIZATION instances for multi-language translation of MetaClasses, MetaProperties, SelectiveLists & SelectiveItems | 5.1 Service Pack |
| Multi-language translations for References, Relations, Units & UnitItems | 5.1 Service Pack |
