Skip to content

PHOENIXCONTACT/MORYX-AbstractionLayer

Repository files navigation

MORYX Logo

CI Coverage License Gitter

MORYX AbstractionLayer

The MORYX AbstractionLayer is the environment for the digital twins of resources and products. It defines the domain independent meta model and enables applications to model their physical system and product portfolio as typed objects. It thereby makes other modules hardware independent by encapsulating details of the underlying structure and devices. Like the platform version 5.0 of the AbstractionLayer is focused on the open source community and we are still applying the final touches, while the in-house stable version powers a range of different applications.

Links

Getting Started

If you want to start developing with or for MORYX, the easiest way is our template repository. It comes with two empty solutions, the necessary package feeds and preinstalled empty MORYX runtime. Add projects and packages to backend and frontend solutions depending on your specific requirements. Install stable releases via Nuget; development releases are available via MyGet.

Package Name Release (NuGet) CI (MyGet) Future (MyGet)
Moryx.AbstractionLayer NuGet MyGet MyGet
Moryx.AbstractionLayer.TestTools NuGet MyGet MyGet
Moryx.AbstractionLayer.Products.Endpoints NuGet MyGet MyGet
Moryx.AbstractionLayer.Resources.Endpoints NuGet MyGet MyGet
Moryx.Notifications NuGet MyGet MyGet
Moryx.Products.Management NuGet MyGet MyGet
Moryx.Products.Model NuGet MyGet MyGet
Moryx.Resources.Interaction NuGet MyGet
Moryx.Resources.Management NuGet MyGet MyGet
Moryx.AbstractionLayer.UI NuGet MyGet
Moryx.Products.UI NuGet MyGet
Moryx.Products.UI.Interaction NuGet MyGet
Moryx.Resources.UI NuGet MyGet
Moryx.Resources.UI.Interaction NuGet MyGet

Whether you want to debug and experiment with this repository or build an application based on the Abstraction Layers packages you need to follow a few simple steps to setup each of the modules. For both modules this requires the package Moryx.Runtime.Maintenance.Web and its database configuration.

Product Management:

  1. Create or configure the database for Moryx.Products.Model using the Maintenance
  2. Configure the storage mapping for your domain objects. This is necessary to store, load and use the objects within MORYX.

Resource Management:

  1. Create or configure the database for Moryx.Resources.Model
  2. Execute the ResourceInteractionInitializer from ResourceManager console to provide the endpoint for the resource configuration UI.

Domain Meta Model

The Abstraction Layer defines the domain independent model of assets, products, processes and many more. It is the foundation for compatible models of systems and hardware independence of other modules.

Resource Management

The Resource Management holds the object graph representing the physical system. It maintains the database entities for the object graph in the background and reconstructs the object graph upon boot. It also provides the API for other modules to interact with resources based on their implemented interfaces and supports resource look-up by various conditions or capabilities.

Product Management

The Product Management holds all product variants, created instances of those variants and recipes how to create an instance. It provides an API giving access to product types, instances, recipes and workplans.

Tutorials

To start using the AbstractionLayer for your own projects you can jump into these tutorials: