A Collaborative, Meta-Model-Driven, Web-Based and Graphical Modeling Environment
Pyro is a CINCO Meta Plugin to realize an alternative generation target. Instead of a local Eclipse based IDE, Pyro generates a full featured web application for a platform independent multi-user modeling experience.
Simultaneously Shared Modeling Experience
Generation Concept & Technologies
CINCO provides multiple languages to define the meta model of your graphical DSL:
- Meta Graph Language The MGL model defines which modeling components will be available and how they can be used in relation to each other.
- Meta Style Language The MSL describes the Shapes and Appearances which can be assigned by the nodes, edges and containes of the MGL.
- CINCO Product Definition The CPD combines multilple MGLs to a CINCO product to be used together.
Pyro utilizes the CINCO Meta Plugin extension point to generate an alternative modeling environment, based on a CINCO Product Definition and the referenced MGLs and MSLs. Pyro is based on leading technologies to provide the same user experience as a local application:
- JointJS Visualizes and interacts with diagrams and graphs based on SVGs. Developed by Client.IO (JointJS).
- Dart A client-optimized language developed by Google (Dart Lang).
- Angular A single page web application framework by Google (Angular).
“AngularDart is a web app framework that focuses on productivity, performance, and stability. Hundreds of Google engineers use AngularDart to build the sophisticated, mission-critical apps that bring in much of Google’s revenue.” (AngularDart)
- DyWA The dynamic web application framework provides rapid prototyping and dynamic and loosely coupled management of types and objects in the context of OOP.
“Despite other approaches you start with a running but empty prototype. The prototype may be enhanced step-by-step until the application is feature complete and beyond as new feature requests arise. This approach is tailored to accompany the whole life-cycle of an application where the requirements are not fully known at the beginning and change during operation due to (new) needs of its user community.”
Pyro uses a command-based communication pattern to realize simultanious editing of multiple users on the same model instance. The commands are equivalent to possible atomic actions affecting a model, like:
- Create Nodes, Edges and Containers
- Move Nodes, Containers
- Remove Nodes, Edges, Containers
- Resize Nodes, Edges, Containers
- Reconnect Edges
- Bend Edges
Since Pyro provides the same Custom Actions and Hooks as CINCO, the actions done on the API level are propagated as well. The commands are stored in Queues to realize possibilities for Undo and Redo actions for the users.
All actions are immediately distributed to every user currently working on the dependent model instance, to show the changes and avoid additional versioning.