Home - RHEAGROUP/Kalliope GitHub Wiki

Kalliope

Kalliope is a set of C# libraries used to read and write ORM2 files. Kalliope is used in RHEA products and projects to perform code generation. The Kalliope libraries are distributed with the Apache License 2.0.

Object-Role Modeling

Object-Role Modeling (ORM) is a fact-oriented approach for modeling, transforming, and querying business domain information in terms of the underlying facts of interest, where all facts and rules may be verbalized in language readily understandable by non-technical users of those business domains. Fact-oriented modeling is attribute-free, treating all elementary facts as relationships. For information modeling, fact-oriented graphical notations are typically far more expressive than other notations. Avoiding attributes in the base model enhances semantic stability and populatability, and facilitates natural verbalization.

How to use Kalliope

  • Install the Kalliope.OO nuget in your solution
  • Use the OrmModelLoader to load an ORM model which returns the OrmRoot
  • Use the ClassGenerator to convert the ORM model into an Object Oriented model that can be used to generate OO class libraries, SQL schema, HTML docs, etc.

NOTE: Kalliope is a work in progress. Due to the fact that the xml schema that is used by the NORMA tool is not 100% in the public domain, the XML reader is not complete and will throw (on purpose) an exception when it encounters an XML Element it does not yet know about. In case this happens, please raise a ticket and provide a sample ORM file so that the issue can reproduced and corrected in a new release.

Solution Structure

The Kalliope solution contains the following projects:

  • Kalliope: Provides the POCO classes that have been reverse-engineered from the ORM2 and associated meta-models.
  • Kalliope.Common: Provides common C# attributes and enumeration data-types that are used throughout the solution.
  • Kalliope.DTO: Provides code-generated DTO representions of the POCO classes. Instances of DTO classes are read from a data-source such as an XML file or a REST API.
  • Kalliope.Dal: Provides code-generated factory classess and business logic that convert DTO's into a dereferenced POCO based object-graph.
  • Kalliope.Xml: Provides XML Readers that deserialize the contents of an ORM2 (XML) file.
  • Kalliope.Xml.Tests: Suite of tests to verify that the Kalliope.Xml works properly.
  • Kalliope.OO: Converts an ORM model into an object oriented model using C# classes, interfaces and properties.
  • Kalliope.OO.Tests: Suite of tests to verify that the Kalliope.OO works properly.
  • Kalliope.Generator: Provides convention-based dotliquid code generators that use the Kalliope library for code-generation of Kalliope code.
  • Kalliope.Generator.Tests: Suite of tests to verify the code-generators and to perform code-generation

For a detailed run down of the structure of each project, please read Solution Structure

License

The Kalliope libraries are provided to the community under the Apache License 2.0. The solution contains files that contain information about the ORM2 metamodel which are distributed with the Common Public License 1.0 or the zlib/libpng License. The beforementioned files can be found in the resources folder of the Kalliope project.

Contributions

Contributions to the code-base are welcome. However, before we can accept your contributions we ask any contributor to sign the Contributor License Agreement (CLA) and send this digitaly signed to [email protected]. You can find the CLA's in the CLA folder.