Apps#
Note
This feature is only available in a containerized installation of Critical Manufacturing MES.
Apps are packaged customization units that can be included on top of the Critical Manufacturing Framework/MES system.
Apps also define the customization to be installed which is available for all layers (data model, business logic, UI or analytics).
- Apps can define their own data model by including Entity Types, Relations and Tables. The Data model for existing system entities can be extended by adding Attributes.
- Apps can define their own APIs by including custom services.
- Apps can extend the logic of existing services by including DEE Actions.
- Apps can include their own UIs through completely custom pages/components or using UI Pages as a low-code UI framework.
- Apps can include their own master data - typically this would include static configuration data, such as configuration tables, lookup values or other settings.
Extensibility artifacts can be packaged and distributed in Deployment Framework packages. Deployment Framework packages are versioned and can include dependencies between them to enable reusability and composition. For more information please refer to the Deployment Overview section.
The system then deploys these packages on top of a Critical Manufacturing MES instance, without requiring recompilation or repackaging of the application.
Apps package format#
Apps packages, similarly to Deployment Framework Packages, are compressed packages that include a mandatory Manifest (called manifest.xml) file, and may include other resource files, such as icons and license files.
App Manifest#
The App package manifest declares the App mandatory metadata, such as Id and Version, as well as other optional fields, such as Image and UI EntryPoint.
Sample manifest.xml file:
<?xml version="1.0" encoding="utf-8"?>
<App id="Cmf.Example.EquipmentSupport"
version="0.0.1"
author="CMF"
name="Equipment Support"
description="Detailed information on equipment status"
xmlns:metadata="urn:cmf:dp:xml:ns:app-metadata-v1">
<metadata:Framework version="^8.3.0"/>
<metadata:Domain name="MES"/>
<metadata:License file="license.txt"/>
<metadata:Image file="icon.png"/>
<metadata:EntryPoint name="EqpSupportUIPage"/>
<metadata:Package id="Cmf.Example.EquipmentSupport.Package" version="1.0.0"/>
</App>
Fields description:
| Field | Mandatory | Description |
|---|---|---|
id | ☑ | Unique app identifier |
version | ☑ | App version |
author | ☑ | App author |
name | ☐ | App friendly name, used by the UI to show a more user-friendly name; if not defined, id will be shown |
description | ☐ | Description of the App, shown by the UI |
Framework version | ☑ | Version or version range that must be satisfied by the Critical Manufacturing Framework version (either already installed, or to be installed during the installation process) |
Domain name | ☑ | App business domain: MES, DataPlatform, or IoT |
License file | ☐ | Path to a text file inside the App package that includes the App license |
Image file | ☐ | Path to an image file inside the App package that will be used as an App icon in the UI |
EntryPoint name | ☐ | UI Page name that will be used as the App EntryPoint in the Apps UI; if not defined, the App will not be shown in the Apps page |
Package id, Package version | ☑ | The Deployment Package id and version that will be installed, containing any customization needed to use the App (including the UI Page referenced by the EntryPoint name, for instance) |
Apps installation#
Apps are installed by the system during an environment installation or upgrade.
Similarly to the Deployment Packages, the Apps packages must be placed in one of the package sources.
To specify the Apps to be installed, a file that defines a list of the Apps to install must be created. This file must be placed in one of the package sources. The system will search during the installation, inside all the locations of the package sources, for files named <SystemName>.apps.json (<SystemName> has the value of the System Name variable) and install the Apps and the Deployment Package accordingly.
The installation file must follow a format similar to the following example:
{
"install": [
{
"name": "Cmf.Example.App",
"version": "1.0.0"
},
{
"name": "Cmf.Another.App",
"version": "2.0.0"
},
{
"name": "Cmf.Example.EquipmentSupport",
"version": "0.0.1"
}
]
}
The package source folder, that contains the App, the Deployment Package and the file that defines the Apps to install must have a similar structure as shown below.
The App package (app.zip in the previous example) must have a similar structure as shown below.
Note
There may be several of these files in each package source and they will all be processed.
App packages search location#
The system will search for the Apps packages, as well as <SystemName>.apps.json files, in the same locations as the custom Deployment Packages, which are specified by the --packageSource and --packageSources execution arguments.
Apps execution#
After installed, the Apps that declare an EntryPoint will be listed and may be launched using the Apps page.
Apps administration#
The Apps administration, such as listing all the installed Apps (including older versions) and accessing Apps details, may be performed via Apps Administration.

