Current Status of OpenMBEE Projects
MMS is a version control system for structured data. It exposes model information through RESTful web services that can be used for CRUD operations, branching, and tagging of the model repository.
Â
Overall Objectives for the MMS
Provide an easy to integrate version control system for model data
Access control to model data
Multi-tenant collaboration
Facilitate intercommunication between model applications
Â
Past versions of the MMS
MMS2 (Crushinator) and MMS3 (DonBot) were developed as Alfresco Module Packages for Alfresco 4 and Alfresco 5, respectively. Below is a list of technologies that were leveraged in those applications.
PostgreSQL, MySQL (MMS2 - 3)
ElasticSearch (MMS3)
ActiveMQ (MMS2 - 3)
OpenAPI 1.0 (Swagger / SwaggerUI) (MMS3)
Â
Current version of MMS
MMS4 (Execubots) is developed as a collection of Spring Framework based modules. This effectively means that organizations can pick and choose any modules that they would like in order to customize their deployment. Also, all implemented modules also have abstract interfaces which can be used to extend default functionality, or overwrite it altogether. See Authentication, LDAP, and TWC modules for an example of this implementation/override.
Supports Any Relational Database (JDBC API)
Supports Spring Boot
Supports any S3 compliant storage (AWS, MinIO, etc.)
OpenAPI 3.0 (Swagger / Swagger UI)
Read the Docs Integration
Horizontal scalability (for RO model access)
Point in time reference for models
Facilitates model dependency (mounts)
Artifact version control
Jupyter Notebook support
Â
MMS4 Modules, Interfaces and Default Implementations
At the heart of MMS is the Core module, which provides default interfaces and objects. Here is a list of the main modules of MMS4:
Core (core configurations, constants, interfaces, and object classes)
JSON (classes that provides convenience getter/setters for properties for each type of object)
Data (provides data objects for core)
Artifacts (allows binary objects to be attached to elements)
Storage (implements artifacts using S3 compliant storage)
Elastic (implements JSON as well as provides default implementations from core interfaces)
RDB (implements metadata storage and permissions*)
Authenticator (adds default authentication functionality)
Permissions (implements permissions provided in core)
Webhooks (provides webhook functionality)
Other notable modules:
TWC (provides TeamWork Cloud integration)
Cameo (adds behavior for Cameo project types)
Jupyter (adds behavior for Jupyter project types)
Â
MMS4 and MMSRI
As mentioned above, MMS4 is a collection of Spring modules. In order to stand up a server comparable to MMS3, further development is required. However, since the majority of users will only need a ReST API similar to that of MMS3, the MMS Reference Implementation (MMSRI) can be utilized. The MMSRI includes all the default implementations of the MMS4 modules in a Spring Boot application for easier deployment. MMSRI follows the same release cycle as MMS4, and also includes a supported Docker image as well as Read the Docs documentation.
Â
API Differences between MMS3 and MMS4
Below is a list of outstanding differences between MMS3 and MMS4 APIs. For more information, check the CHANGELOG.rst in MMSRI Repository
Authentication / Authorization
No more alf_ticket in URL
Uses standard bearer token in authorization header
Project Creation
No need for Organization identifier
Get project by organization
OrgID is sent as url parameter instead of part of path
Artifacts
Now treated as an attachment to an element instead of it’s own element
Search API
No longer accepts arbitrary elasticsearch query
Depth and recurse options are now supported in the search API instead of URL parameters
Â
MMS3 to MMS4 Comparison
 | MMS3 | MMS4 |
Alfresco | 5.2 | N/A |
Max Model Size | ~ 2 Million elements | N/A |
Max Payload | ~ 2GB | N/A |
Streaming Output | N/A | Yes |
Streaming Input | N/A | Yes |
Docker Image | Yes | Yes |
Configurable Storage | No | Yes |
Post Performance of 2 Million Elements | ~ 24 minutes | ~ 14 Minutes |
Get at commit Performance of 2 Million Elements* | Â + 1 Hours | ~ 38 Minutes* |
Â
MMS Clients
View Editor (MMS4 compatible branch)
Cameo Model Development Kit (MMS4 compatible branch)
Python MDK (MMS4 OpenAPI generated)
Â
See Also
OpenMBEE Overview Presentation Slide 20 - 23