Here is the DatenMeister. The new, best and improved version of datahandling according MOF, XMI and UML specifications.
This document gives you an overview how to use DatenMeister, how it is implemented and how you can extend it.
How to develop for DatenMeister
Get the GitHub Repository:
Get the GitHub-Repositories including submodules. Open the .sln with Microsoft Visual Studio or Jet Brains Rider. Let it go, let it snow.
Assemblies and Packages
This assembly contains all platform-independent functions for the DatenMeister. If an additional function needs to be included, it will be most likely be present in the DatenMeister.dll.
Implements and defines the EMOF specification upon the Provider as being given in the Provider Package.
Contains the implementation of the EMOF specification. It relies upon the ProviderObjects. Additionally, some .Net-Helper for Type conversion and Type Lookup within extents are included here.
Defines the interfaces as specified in the UML specification.
Within this package simple helpers are implemented regarding simplification of the .Net Framework. No EMOF specific implementation can be found in this package.
Allows the creation of a complete DatenMeister Scope and integrates all the different plugins of DatenMeister for easy handling. Especially, the ‘GiveMe’-class offers a 1-Call instantiation of the complete DatenMeister scope.
The models contain the .Net Types which are converted to UML classes at start-up of DatenMeister. Instead of defining the UML class in Xmi, the DotNetConverter is used to create the corresponding Uml classes.
All other models from the different modules are also hosted within subpackages of the models. This shortens the length of the model definition.
The models of the various Modules and Plugins are also integrated into this module. This shortens the length of the package name, so the models are within the "DatenMeister::Models::Plugin" namespace and not within "DatenMeister::Modules::Plugin::Model".
This namespace includes additional function and plugins which could be hosted in a separated assembly. Each of them extend the function of DatenMeister in a certain area.
The “Modules.DefaultTypes” namespace contains several methods and function which are used in context of Uml and other MetaObjects. The namespace is used for example to add an element to a child while the model helper tries to figure out to which property the child shall be added.
The “Provider” namespace include several provider which can be consumed by the Core namespace. They define the IProvider and IProviderObject interfaces which are converted to a Mof-Element.
The “Runtime” namespace include the necessary methods to bring DatenMeister into a useable product. It combines the namespace “Core” and “Provider” and offers the loader for extents, copying methods and base functions to work upon the extents, reflective sequences and objects.
The “SourcecodeGenerator” is able to convert MOF instanciations of UML classes and MOF properties into source code that can be embedded into .Net assemblies.
The “Uml” namespace include the methods to work upon Uml objects. They contain the helper methods for each class but also the plugin which defines the views for Uml objects
This namespace just contains the Xmi-Files which are embedded into DatenMeister. For example the MOF, UML and PrimitiveType files but also additional ones which are used by the plugins.
How to use DatenMeister
Execute DatenMeister.exe… It will load.
The tree view gives a hierarchical overview of the elements within an extent.
When the user clicks on the root node, the children of the extent themselves will be shown.
When the user clicks on an element, the children of the elements are shown in the extent view. When the user doubleclicks an element, the details of the clicked element are opened.
The list view shows all direct child items of the selected extent or a selected container within the tree view.
The user can create a new element out of the list view. The element is added into the selected extent, if the root element in tree view is selected. Otherwise the element will be added to the selected package.
If the user has selected an element within the tree view, the user is requested to define the property to which the new element will be added.
When the user clicks upon an object to show its information, the detail view is generated.
For each element, a detail view is automatically generated. This generator of the detail view performs the following actions:
Check, whether the element to be shown is a typed element, containing property definitions.
If there are no property definitions, the properties of the elements are enumerated
The content of the property definition defines the type of each row item:
Booleans will be shown as checkmarks
Integer are shown as small textboxes
Other types are shown as large textboxes
Change Form Definition
Opens the location dialog and let you choose a new form for the shown element.
Reset Form Definition
Set as default for Metaclass
Clear default Association
Form Manager Detail Window
Add Property to Form…
You open a form to which new fields shall be added in the detail window
By clicking upon Create Field by Property…, an option which is only provided, when a form is open,
when the form is a detail form, the elements will be directly added to the detail form.
when the form is a list form, the elements will be directly added to the list form.
when the form is an extent form,
if the property corresponds to a collection, a list form will be added for this
if the property does not correspond to a collection, the included detail form will be enriched by the field matching to the property. If the detail form does not exist, then a new detail form will be created.
you can select which class, property or enumeration is used as a base to automatically create a field within the opened field.
if the selected item is a property, the field is directly added into the form. Independent whether a field named like the selected property is already existing
if the selected item is a class, all properties of the given item are added to the form. Independent whether a matching field is already existing
if the selected item is an enumeration, a field is created with the lowercase name of the enumeration.
This chapter contain several concept documents being used to extent the capability of DatenMeister.
A report is an automatically created document which is based upon a report definition and the stored data within the DatenMeister.
A report definition is independent of the used data queries.
Report: The created document based upon a report definition and the actual data
Report Definition: A definition describing the style, content and chapters of the report. The report definition is used by the report generator to create the report by querying the data.
Report Instance: A set of the Report Definition and the used queries for the creation of the report. The Report Instance is a different object compared to the Report Definition to allow multiple uses of the same Report Definition for different aspects of data.
The report definition can be defined at any location within the DatenMeister.
The definition is of type DatenMeister.Reports.ReportDefinition.
The report definition contains the following fields:
Name of the report
Title of the report
The different elements which are combined to create the complete report
A report definition contains of several elements which are appended upon each other in the final report.
The following elements are supported and the corresponding types are residing within “DatenMeister.Reports.ReportDefinition”.
Headline of the report
A paragraph being included as text