Hi everyone, let me introduce myself again. I'm Daniel Campos (Dandrvms or dacmz), from the CEOS Automatización team, working alongside Luis Rodríguez and César García. As I mentioned before, I'm working on Malbec, an IDE for industrial configuration built on top of the NetBeans RCP.
Today I just made my first PR for this project in the feature/app branch at plc4x-extras, marking my very first contribution to the foundation. Here is a breakdown of the project structure: - /api : Domain model and ports. S88Element is the minimal model unit: an S88 entity that can hold children and structured property bags. S88PlantModel is the orchestrator: the in-memory root of the element tree, the registry of classes/enumerations, and the event bus. Supporting classes provide S88ElementClass (reusable property templates), S88Enumeration, S88Level, DataType/EngineeringUnits/Magnitude, the S88ChangeEvent/S88ChangeListener observer contract, and the persistence contracts S88Repository, S88Storage and S88RepositoryProvider. - /data : Serialization adapters implementing the contracts above. B2MMLRepositoryImpl parses/writes the main model using B2MML, the MESA International schemas compiled with XMLBeans. AXMLRepositoryImpl imports/exports the Rockwell FactoryTalk Batch .axml format. Formats are pluggable: a new format is a new S88RepositoryProvider discovered through NetBeans Lookup. - /core : Application layer. A set of use cases (create, update, delete, rename elements; manage class templates and struct entries) are the only way to mutate the model. Every mutation fires an S88ChangeEvent, so the UI stays in sync. - /plant : The NetBeans sub-project in charge of the plant model's lifecycle: project providers and factories, the hierarchy tree nodes (one per S88 level), project actions (import/export, templates, enumerations, delete), and the shared panel/dialog builders reused across the different S88 levels. Loading and saving delegates to data repositories; UI refresh is event-driven, not manual. - /project : The NetBeans project type (wizard, factory, folder installer, logical view) that hosts the plant sub-project. - /batch : Placeholder module reserved for future recipe management and supervision. The Process Cell config editor is intentionally empty; the properties dialog exposes only the General tab (name, level, class, display creation), while content tabs (Attribute Tags, Parameters/Reports, Arbitration, etc.) are placeholders. These are the targets of upcoming updates. Recipes/batch supervision and generic ISA-88 runtime support are outside the scope of this PR (batch is a placeholder). Best regards, Daniel.
