Skip to content

Release 2.0.0

Choose a tag to compare

@sergiorbk sergiorbk released this 18 Apr 15:56
· 100 commits to master since this release
0aedbd0

Release v2.0.0: The Modular Evolution

by @StetsenkoInna, @sergiorbk

This milestone marks a major architectural shift from a monolithic structure to a high-performance, modular system. By decoupling the core mathematical engine from the graphical interface and introducing a dedicated simulation server, the project is now ready for distributed scaling and cross-platform integration.

Architectural Overhaul: Monolith Decomposition

The project has been refactored into 5 specialized Maven modules to ensure high cohesion and low coupling:

  • petri-math: The standalone core engine containing simulation algorithms and mathematical logic.
  • petri-model: Dedicated layer for graph structures and robust PNML parsing.
  • petri-api: Shared interfaces, constants, and DTOs for seamless inter-module communication.
  • petri-swing-ui: The legacy desktop client, now fully isolated as a pluggable UI module.
  • petri-server: A brand-new Spring Boot-based microservice.

Petri-Server (Simulation as a Service)

You can now run simulations in the cloud or on a remote server. The new petri-server provides:

  • REST API (v1): Secure endpoints for network uploads and simulation lifecycle management.
  • Real-time Streaming: Integrated Server-Sent Events (SSE) to push simulation steps to clients instantly.
  • Interactive Control: WebSocket (STOMP) support for low-latency session management (Pause/Resume/Stop).
  • Live Documentation: Interactive API exploration via Swagger UI (available at /docs).

Technical Improvements & Optimization

  • Modern Stack: Upgraded to Java 23 and established a robust Maven Multi-Module build lifecycle.
  • Optimized Parsing: Replaced legacy Regex-based parsing in NetLibrary with a faster, Reflection-based approach.
  • Stability: Resolved a critical Race Condition in HeadlessSimulationRunner for reliable CLI-based executions.
  • Asset Management: Configured Git LFS to properly handle large .pnml files and binary assets.