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

 

See Also