Version 7.10.0 =============== **BPMN 2.0 support**. Adds a full BPMN metamodel, a vendor-neutral BPMN 2.0 XML generator, and a matching BPMN diagram type in the web modeling editor — process modeling, alongside class/object/state-machine/ agent modeling, is now a first-class BESSER diagram type. Also adds OCL constraint validation to the Django generator and fixes a Web App generator bug affecting locally-built agent containers. BPMN metamodel --------------- * New :doc:`../../buml_language/model_types/bpmn` (``besser.BUML.metamodel.bpmn``): ``BPMNModel``, ``Process``, flow nodes (``Task`` with ``TaskType`` — user, service, script, manual, business rule, send, receive —, ``StartEvent``, ``EndEvent``, intermediate catch/throw events with typed event definitions, gateways — exclusive, parallel, inclusive, event-based —, ``SubProcess``, ``CallActivity``), ``SequenceFlow``, pools/lanes via ``LaneSet``/``Lane``, ``DataObject``/``DataStore`` references, and text ``Annotation``. BPMN generator -------------- * New :doc:`../../generators/bpmn` (``BPMNGenerator``) emits plain BPMN 2.0 XML from a ``BPMNModel`` — openable in any BPMN-aware tool (Camunda 7/8, Flowable, bpmn-js, …). No engine-specific execution semantics are emitted, only the process structure (flow nodes, sequence flows, gateways, events, pools/lanes, data objects/stores, sub-processes), and the output round-trips through any conformant modeller. * New ``besser.utilities.buml_code_builder.bpmn_model_builder.bpmn_model_to_code`` emits a ``BPMNModel`` back to executable B-UML Python code. Web Modeling Editor -------------------- * New **BPMN diagram type** in the editor: the full BPMN element palette (events, tasks, gateways, sequence flows, pools/lanes, data objects/stores, annotations, call activities), property popups, and a default-layout saga that auto-arranges newly dropped BPMN flow nodes. * Backend wiring end-to-end: ``process_bpmn_diagram`` / ``bpmn_buml_to_json`` converters, a ``BPMNGenerator`` registration (category ``business_process``) in the generator registry so ``/generate-output`` produces ``.bpmn`` files, BPMN support in the ``/export-buml`` and B-UML-file-import (``/get-json-model``) auto-detection paths, and BPMN participation in project-level cross-diagram validation. Django Generator ----------------- * **OCL constraint validation**: the :doc:`Django generator <../../generators/django/django_admin_panel>` now reuses the same OCL parser as the :doc:`Pydantic generator <../../generators/pydantic>` and emits a ``clean()`` method on each constrained class, so OCL invariants defined on the domain model are enforced when creating or editing entities through Django's admin panel or a ``ModelForm``. Unlike Pydantic's per-field validators (which run at construction time), Django's ``clean()`` runs via ``full_clean()`` — automatic through the admin panel/``ModelForm``, but not on a bare ``.save()`` unless the caller calls ``full_clean()`` first. Modeling Agent --------------- * **BPMN support** (`BESSER-PEARL/modeling-agent#7 `_): the AI modeling assistant gains BPMN diagram support — creating, editing, and removing BPMN elements through the same conversational actions already available for other diagram types, with guardrails against LLM hallucination (e.g. refusing to delete elements that don't exist). This lives in the separate ``modeling-agent`` repository, which is not part of BESSER's release/versioning; merge and deploy it alongside this release (``./scripts/deploy.sh agent``) to get AI-assisted BPMN editing in the web editor. Fixes ----- * **Agent container crash on classical intent recognition (local Docker builds)**: ``WebAppGenerator``'s per-agent ``agents//Dockerfile`` never installed PyTorch, so any agent configured with ``intentRecognitionTechnology: classical`` crashed on startup (``NameError: name 'nn' is not defined`` from ``besser-agentic-framework``'s NLP engine) when run via ``docker compose up``. The Render/GitHub deploy pipeline already handled this correctly by installing ``torch==2.6.0+cpu``/``scikit-learn==1.6.1`` for classical agents, but that logic never reached the local Docker Compose/ZIP output. ``WebAppGenerator`` now resolves each agent's configured intent-recognition technology and conditionally installs the same pinned PyTorch/scikit-learn versions in ``agent.Dockerfile.j2`` when needed, matching the Render pipeline. Internal updates ----------------- * Sandboxed ``exec()`` hardening, Python-keyword name warnings, and ``isinstance``-based (rather than class-name-string) event-definition legality checks were applied across the new BPMN converters during review.