Background
AspenTech’s MIMI (Manager for Interactive Modeling Interfaces) was the foundation of its early Supply Chain Management (SCM) solutions. Developed in the 1980s and 1990s, MIMI powered production scheduling tools for large industrial clients, using a custom language and runtime engine encapsulated in monolithic .CAS files.
Despite its long life and powerful modeling capabilities, MIMI lacked basic development tooling: there was no version control, no syntax validation, and no modern interface for editing or managing code. In 2007, AspenTech partnered with Manas to design and implement a full-featured IDE to support its global user base while preserving the legacy system underneath.
What We Did
Platform selection: Eclipse
We chose the Eclipse Platform as the foundation for the IDE. It provided a mature and extensible environment for building development tools, including:
- Built-in support for project and resource management
- Integrated file editing and window layout
- A standard framework for interfacing with version control systems (VCS)
Eclipse also allowed us to define custom wizards and templates to guide users in creating new MIMI projects, and it offered strong plugin support for expanding capabilities over time. The core IDE was implemented in Java, with C/C++ modules used for native integration via JNI.
Deep Integration with MIMI
To interact with MIMI itself, we developed a MIMI Connector: a JNI bridge between the Java IDE and MIMI’s native C API. This allowed the IDE to:
Extract data from an existing MIMI instance: When creating a new project, the IDE retrieves all relevant objects from a MIMI .CAS file—rules, macros, tables, forms—and represents them as individual editable text files.
Deploy objects back to MIMI: Developers can push changes back to the MIMI engine either automatically on save, or manually when working in “disconnected mode.” The connector writes modified items back into the .CAS structure using MIMI’s own API.
This integration allowed developers to work seamlessly with MIMI as if it were a modern file-based project system—without modifying the MIMI engine itself.
Version Control Integration
Using Eclipse’s version control framework, we implemented full support for managing MIMI projects through systems like CVS (with the potential for SVN or SourceSafe connectors). Key features included:
- File-level tracking and change detection
- Checkouts, commits, and updates
- Branching and merging workflows
- Locking and unlocking of project files
- Diffing between MIMI and VCS versions
- Change logs embedded as MIMI tables
This brought collaborative development practices to MIMI for the first time, allowing teams to track history, resolve conflicts, and roll back changes safely.
Code Editor Features
We built a custom MIMI-aware editor within Eclipse, with the following features:
- Syntax highlighting for MIMI keywords
- Auto-indentation for readable, uniform code
- Real-time syntax warnings for common errors
- Search and replace, undo/redo, and clipboard tools
- Intellisense: Auto-complete and argument hints, sourced from real MIMI rules
- Automatic documentation extraction from structured comments to HTML or embedded help
The editor dramatically improved both the usability and maintainability of MIMI projects.
Visual Form Designer
MIMI supported form-based UI components within its models. We added a form designer that allowed developers to build and edit forms visually, rather than writing code by hand. Key features included:
- Drag-and-drop layout tools with sizing and alignment guides
- A property grid for editing control attributes
- Linking of events to rule functions
- Support for controls like buttons, labels, text fields, lists, tabs, grids, and more
- Full integration with version control and the code editor
This reduced the learning curve for building MIMI-based interfaces and helped teams debug and evolve complex models more easily.
Outcome
The MIMI IDE delivered by Manas gave AspenTech users the best of both worlds: a modern development experience built on top of a legacy modeling system. We preserved compatibility with MIMI’s C-based engine while dramatically improving productivity, maintainability, and collaboration.
By choosing Eclipse and designing a clean bridge to MIMI’s API, we enabled extensibility for future tools and support for additional version control systems. The IDE is still remembered as a pivotal step in extending the life of a critical industrial platform.