(→Exporting a C# solution for the plugin) |
(→Supported capabilities and roadmap) |
||
| (33 intermediate revisions by 3 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. | ||
| − | {| class="wikitable" | + | === 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 == | ||
| + | === 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 === | ||
| + | [[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. | ||
| + | A new Plugin Design Configuration instance can be created in the Bulk Editor to define a custom plugin context. | ||
| + | |||
| + | === Adding MetaClasses 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. | ||
| + | |||
| + | === 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 === | ||
| + | [[File:Plugin_Generation_Trigger.png|220px|thumb|right|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. | ||
| + | [[File:PluginResult.png|300px|thumb|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. | ||
| + | |||
| + | [[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" | ||
! Feature | ! Feature | ||
| + | ! Release State | ||
! Version | ! Version | ||
|- | |- | ||
| − | | Generation of a basic Plugin project 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 | + | | {{Check_mark}} |
| + | | 5.0 Initial Release | ||
|- | |- | ||
| Custom Code Library | | Custom Code Library | ||
| − | | 5.0 | + | | {{Check_mark}} |
| + | | 5.0 Initial Release | ||
|- | |- | ||
| Classifications | | Classifications | ||
| − | | 5.0 | + | | {{Check_mark}} |
| + | | 5.0 Initial Release | ||
|- | |- | ||
| Relations | | Relations | ||
| − | | 5.0 | + | | {{Check_mark}} |
| + | | 5.0 Initial Release | ||
| + | |- | ||
| + | | Selective Lists and Selective Items | ||
| + | | {{Check_mark}} | ||
| + | | 5.0 Initial Release | ||
|- | |- | ||
| References | | References | ||
| − | | 5.0 | + | | {{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 | + | | {{Check_mark}} |
| + | | 5.0 Initial Release | ||
|- | |- | ||
| − | | | + | | MetaProperty assignment properties (RelationData) |
| − | | 5. | + | | 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]] | |
| − | + | ||
| − | + | ||
| − | [[ | + | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | [[ | + | |
| − | + | ||
| − | + | ||
| − | [[ | + | |
| − | + | ||
| − | [[Category: | + | |
== See also == | == See also == | ||
| Line 66: | 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: | + | [[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]] | ||
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
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 to active development.
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.
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 |
|
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) | 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 |