A new MMEL model is created within a repository. The model is identified by a namespace that serves as a unique identifier across the system.
Navigate to the repository and create a new model. Assign a namespace that acts as the model's unique identifier.
The namespace should follow a convention that reflects the source document. For example, for a model of BS 6004, use:
namespace BS6004
Enter the model metadata fields to properly identify and describe the model.
The following metadata fields are available:
| Field | Description |
|---|---|
| Title | The human-readable title of the model |
| Schema | The MMEL schema version used |
| Edition | The edition number of the model |
| Author | The person or organization responsible for the model |
| Shortname | A short identifier for the model |
| Namespace | The unique identifier for the model (e.g.,
BS6004
) |
Example metadata:
model BS6004 <1.0.0> {
title "Electric cables — Thermoplastic insulated and sheathed cables
for voltages up to and including 300/500 V"
shortname "BS 6004"
author "BSI"
namespace BS6004
}
After setting up the metadata, add the various model components that make up the model. These include:
Each component type is described in detail in #model-components .
MMEL supports importing content from existing standards documents to accelerate the modeling process.
Use the Document Import feature to load the text of the source standard. The import process parses the document structure and makes its content available for conversion into model components.
Once loaded, open the reference document within the editor. The document content is displayed alongside the model editor, allowing side-by-side comparison and selection of text to convert.
Select portions of the loaded text and convert them into model components. The editor supports conversion into:
When importing provisions, the system automatically detects the RFC 2119 modality keyword (SHALL, SHOULD, MAY, CAN, MUST) used in the original text. The modality is assigned to the provision accordingly.
Additionally, the system auto-creates references from detected clause numbers in the source text, linking each provision back to its origin in the standard.
provision P_9_2_1_a {
text "The organization SHALL conduct internal audits at planned intervals"
modality SHALL
reference BS202000_9_2_1
}
The Model Editor is the primary interface for viewing and editing MMEL models. It provides a visual diagram canvas along with controls for navigation, display, and model management.
The Model Editor interface consists of the following areas:
| Area | Description |
|---|---|
| UI display panel | The main canvas for viewing and editing diagrams. Displays the current diagram with all its flow components and connections. |
| Path display | Shows the path of the current diagram within the model hierarchy, indicating which process or subprocess is being viewed. |
| Menu toolbar | Provides access to model-level operations such as saving, importing, and model settings. |
The editor provides the following display controls:
| Control | Description |
|---|---|
| Zoom in | Increases the magnification of the diagram |
| Zoom out | Decreases the magnification of the diagram |
| Fit diagram | Automatically scales the diagram to fit the viewport |
| Lock diagram | Locks the diagram to prevent accidental edits |
The editor offers toggle options for controlling the visibility of diagram elements:
| Option | Description |
|---|---|
| Show/Hide data components | Toggle the display of data-related elements (registries, classes) on the diagram |
| Show/Hide remove edge button | Toggle the display of edge deletion controls on connection lines |
| Show/Hide element IDs | Toggle the display of internal element identifiers on diagram nodes |
The Model Editor provides multiple levels of saving:
Saves the current edits to the model in memory. The changes are preserved within the current editing session but are not yet committed to the repository.
Commits the model (including all in-memory changes) to the repository for persistent storage. This makes the model available to other users and sessions.
Undo and redo functionality is planned for a future release. Once implemented, it will allow reverting and reapplying changes within an editing session.
This section describes each type of component that can be defined in an MMEL model.
Model metadata is configured through the Model Editor under Model Settings > Metadata .
The metadata fields identify and describe the model:
| Field | Description |
|---|---|
| Title | Full title of the model |
| Schema | MMEL schema version |
| Edition | Model edition number |
| Author | Person or organization responsible |
| Shortname | Abbreviated identifier |
| Namespace | Unique identifier for the model |
Sections represent structural parts of the source document used for document generation. Each section has:
Sections correspond to clauses, subclauses, and annexes in the source standard.
section S_1 {
id "1"
title "Scope"
text "This document specifies requirements for..."
}
Terms and definitions capture the terminology used in the source document.
Each term entry includes:
| Field | Description |
|---|---|
| ID | Unique identifier for the term |
| Term | The preferred term |
| Admitted terms | Alternative accepted terms |
| Definition | The definition text |
| Notes | Explanatory notes accompanying the definition |
term T_cable {
term "cable"
admitted "cable assembly"
definition "length of insulated conductor(s)..."
note "Cables may include one or more conductors."
}
Roles represent the actors and approvers involved in the modeled processes. Each role has:
Roles are referenced by processes (as actors) and by approvals (as approvers).
role Organization {
display_name "The organization"
}
role TopManagement {
display_name "Top management"
}
A process references a role via the
actor
keyword:
process ConductAudit {
actor Organization
}
An approval references both an actor and an approver:
approval ApproveAuditResults {
actor Organization
approver TopManagement
}
References link model elements to specific clauses in external standards or documents. Each reference specifies:
| Field | Description |
|---|---|
| Document | The source document identifier |
| Clause | The clause number within the document |
| Title | A description of the referenced content |
Batch insertion is supported, allowing multiple references to be created at once from a list of clause numbers.
reference BS202000_9_2_1 {
document "BS 202000"
clause "9.2.1"
title "Internal audit"
}
A data registry is a data store identified by an ID and display name. It is backed by a data class that defines its structure.
Each attribute in the registry has:
data_registry RiskPlan {
display_name "Risk Plan"
data_class RiskPlan#data
}
The following attribute types are available:
| Type | Description |
|---|---|
| String | Free-form text value |
| Boolean | True/false value |
| Datetime | Date and/or time value |
| Role | A value selected from the defined roles in the model |
Data classes define custom data structures. They differ from data registries in a key way:
class RiskPlan#data {
attribute name : String [1..1]
attribute description : String [0..1]
attribute approved : Boolean [1..1]
}
Enumerations define a drop-down list of possible values. They are used to constrain attribute values to a predefined set.
enum CableType {
value "Single-core"
value "Multi-core"
value "Flexible"
}
Measurements define quantitative variables that can be used in process tests and gateway conditions.
For detailed instructions on creating and using measurements, refer to the MMEL Modeling Methodology Guide .
Tables serve dual purposes in MMEL:
Tables can be viewed in two ways:
Tables support CSV export and import for data exchange with external tools.
MMEL supports the following multimedia types:
| Type | Description |
|---|---|
| Figure | Static images embedded in the model |
| Video | Video content referenced or embedded |
| 3D model | Three-dimensional model content |
MMEL diagrams are composed of flow components connected by edges. This section describes the available flow components and how to work with them.
There are 7 flow components available for building diagrams:
| Component | Description |
|---|---|
| Process | An activity or task performed by an actor |
| Approval | A decision point requiring approval from a designated approver |
| Start event | Marks the beginning of a flow (one per diagram) |
| End event | Marks the end of a flow |
| Timer event | Represents a time-based trigger (wait or repeat) |
| Signal event | Captures an external signal to trigger a process |
| Gateway | Provides conditional branching in the flow |
A Process is the primary component for representing activities in a flow.
Processes support inline quick editing for rapid content entry. Click on a process node to edit its label and basic properties directly on the diagram.
A process can contain a subprocess diagram. This allows hierarchical decomposition where a high-level process is expanded into a detailed sub-flow.
Processes can reference data registries as input and output:
process ConductAudit {
actor Organization
input_registry AuditRecords
output_registry AuditReport
}
Processes can carry provisions (compliance requirements) and notes:
process ConductAudit {
actor Organization
validate_provision P_9_2_1_a
note "Internal audits must be conducted at planned intervals."
}
Processes can include measurement tests that evaluate quantitative conditions:
process TestCable {
measurement_test "[tm] <= 0.9 * [tn] - 0.1"
}
Processes can contain links to external resources. Two types of links are supported:
| Link type | Description |
|---|---|
| URL | A link to an external web page |
| Repo | A link to another MMEL model identified by its namespace |
process ReviewResults {
link URL "https://example.com/audit-guidance"
link Repo "BS202000"
}
An Approval component represents a decision point where an actor seeks approval from an approver.
approval ApproveAudit {
actor Organization
approver TopManagement
modality SHALL
}
The approval creates an approval record that documents the decision.
The Start event marks the beginning of a flow. Each diagram has exactly one Start event.
The End event marks the termination of a flow. It is placed at the end of each path through the diagram.
A Timer event represents a time-based trigger. Two modes are supported:
| Mode | Description |
|---|---|
| WAIT | The process waits for a specified time period before proceeding |
| REPEAT | The process repeats at a specified frequency |
timer_event PlannedIntervals {
mode REPEAT
value "12 months"
}
A Signal event captures an external signal that triggers a process. Signals are used to model event-driven behavior where a process waits for a specific external condition.
Gateways provide conditional branching in the flow. They control which path(s) are taken based on conditions.
Edges connected to a gateway can have descriptions that label the path:
edge Gateway1_to_ProcessA {
description "Conforms to requirements"
}
Gateway edges can use measurement variables as conditions:
edge Gateway1_to_ProcessA {
condition "[sterile] = 'true'"
}
Edges connect to gateway nodes with the following convention:
Processes can be reused across diagrams using the following mechanism:
When a marked process is brought into another diagram, it is referenced (not copied). Any update to the original process is reflected in all diagrams that reference it.
Edges can be deleted by selecting the edge and using the remove edge control (visible when the "Show remove edge button" option is enabled).
A single process component can appear in multiple diagrams. This is achieved through referencing -- all instances of the process share the same definition.
Document Import is the process of loading content from an existing standard document into the MMEL model editor. This section describes the workflow and best practices.
The document import workflow follows these steps:
To begin, load the text of the reference document (the standard being modeled) into the Document Import interface. The editor parses the document structure, identifying:
The parsed content is presented for selection and conversion.
Select portions of the loaded text and choose the target component type. The supported conversions include:
| Source content | Target component |
|---|---|
| Clause text | Section |
| Terminology entries | Terms and definitions |
| Requirement text | Provision |
| Clause references | Reference |
| Tabulated data | Table |
When text is imported, any clause numbers detected in the content are automatically converted into references. For example, text containing "as specified in clause 9.2.1" will create a reference to clause 9.2.1 of the source document.
Provisions are imported with their RFC 2119 modality keyword automatically detected from the source text:
| Keyword | Modality |
|---|---|
| SHALL | Mandatory requirement |
| SHOULD | Recommendation |
| MAY | Permission |
| CAN | Capability |
| MUST | Absolute requirement |
The detected modality is assigned to the provision, and the provision is linked to the corresponding reference in the source document.
The following practices help ensure accurate and efficient document import: