mxrb 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.de-DE.md +108 -0
- data/README.md +172 -0
- data/README.pt-BR.md +109 -0
- data/bin/mxrb +1613 -0
- data/docs/README.md +10 -0
- data/docs/de-DE/README.md +24 -0
- data/docs/de-DE/architectural-patterns.md +26 -0
- data/docs/de-DE/architectural-standard.md +48 -0
- data/docs/de-DE/architecture.md +76 -0
- data/docs/de-DE/compiler.md +162 -0
- data/docs/de-DE/conventions.md +19 -0
- data/docs/de-DE/design-system.md +52 -0
- data/docs/de-DE/entity-dsl.md +53 -0
- data/docs/de-DE/native-runtime-quality-report.md +74 -0
- data/docs/de-DE/oql-sql.md +211 -0
- data/docs/de-DE/platform-api-integration.md +36 -0
- data/docs/de-DE/platform-operations.md +243 -0
- data/docs/de-DE/project-structure.md +32 -0
- data/docs/de-DE/ruby-first-roadmap.md +116 -0
- data/docs/de-DE/scaffolds.md +59 -0
- data/docs/de-DE/semantic-refactoring.md +56 -0
- data/docs/de-DE/team-server.md +33 -0
- data/docs/de-DE/validation-matrix.md +64 -0
- data/docs/de-DE/vetclinic-acceptance.md +24 -0
- data/docs/de-DE/writing.md +138 -0
- data/docs/en-US/README.md +24 -0
- data/docs/en-US/architectural-patterns.md +151 -0
- data/docs/en-US/architectural-standard.md +89 -0
- data/docs/en-US/architecture.md +170 -0
- data/docs/en-US/compiler.md +157 -0
- data/docs/en-US/conventions.md +82 -0
- data/docs/en-US/design-system.md +163 -0
- data/docs/en-US/entity-dsl.md +53 -0
- data/docs/en-US/native-runtime-quality-report.md +73 -0
- data/docs/en-US/oql-sql.md +201 -0
- data/docs/en-US/platform-api-integration.md +36 -0
- data/docs/en-US/platform-operations.md +244 -0
- data/docs/en-US/project-structure.md +49 -0
- data/docs/en-US/ruby-first-roadmap.md +186 -0
- data/docs/en-US/scaffolds.md +57 -0
- data/docs/en-US/semantic-refactoring.md +198 -0
- data/docs/en-US/team-server.md +32 -0
- data/docs/en-US/validation-matrix.md +257 -0
- data/docs/en-US/vetclinic-acceptance.md +23 -0
- data/docs/en-US/writing.md +655 -0
- data/docs/pt-BR/README.md +24 -0
- data/docs/pt-BR/architectural-patterns.md +25 -0
- data/docs/pt-BR/architectural-standard.md +533 -0
- data/docs/pt-BR/architecture.md +300 -0
- data/docs/pt-BR/compiler.md +162 -0
- data/docs/pt-BR/conventions.md +19 -0
- data/docs/pt-BR/design-system.md +65 -0
- data/docs/pt-BR/entity-dsl.md +116 -0
- data/docs/pt-BR/native-runtime-quality-report.md +73 -0
- data/docs/pt-BR/oql-sql.md +208 -0
- data/docs/pt-BR/platform-api-integration.md +36 -0
- data/docs/pt-BR/platform-operations.md +260 -0
- data/docs/pt-BR/project-structure.md +32 -0
- data/docs/pt-BR/ruby-first-roadmap.md +239 -0
- data/docs/pt-BR/scaffolds.md +104 -0
- data/docs/pt-BR/semantic-refactoring.md +55 -0
- data/docs/pt-BR/team-server.md +59 -0
- data/docs/pt-BR/validation-matrix.md +86 -0
- data/docs/pt-BR/vetclinic-acceptance.md +50 -0
- data/docs/pt-BR/writing.md +177 -0
- data/examples/sudoku_evaluation.rb +14 -0
- data/examples/sudoku_functional_test.rb +28 -0
- data/lib/mxrb/architecture/graph.rb +124 -0
- data/lib/mxrb/architecture/validator.rb +98 -0
- data/lib/mxrb/benchmark.rb +33 -0
- data/lib/mxrb/compare.rb +390 -0
- data/lib/mxrb/compiler/adapter.rb +96 -0
- data/lib/mxrb/compiler/artifact_document_compiler.rb +102 -0
- data/lib/mxrb/compiler/artifact_materializer.rb +53 -0
- data/lib/mxrb/compiler/client_model_materializer.rb +42 -0
- data/lib/mxrb/compiler/code_action_document_compiler.rb +64 -0
- data/lib/mxrb/compiler/code_action_materializer.rb +35 -0
- data/lib/mxrb/compiler/code_action_type_compiler.rb +32 -0
- data/lib/mxrb/compiler/combo_box_bundle_compiler.rb +314 -0
- data/lib/mxrb/compiler/compatibility_analyzer.rb +169 -0
- data/lib/mxrb/compiler/constants_materializer.rb +111 -0
- data/lib/mxrb/compiler/data_grid_bundle_compiler.rb +290 -0
- data/lib/mxrb/compiler/database_connector_action_compiler.rb +280 -0
- data/lib/mxrb/compiler/deployment_asset_copier.rb +60 -0
- data/lib/mxrb/compiler/deployment_bootstrapper.rb +208 -0
- data/lib/mxrb/compiler/deployment_materializer.rb +43 -0
- data/lib/mxrb/compiler/deployment_metadata.rb +64 -0
- data/lib/mxrb/compiler/domain_document_compiler.rb +153 -0
- data/lib/mxrb/compiler/domain_model_materializer.rb +35 -0
- data/lib/mxrb/compiler/domain_security_compiler.rb +82 -0
- data/lib/mxrb/compiler/gallery_bundle_compiler.rb +190 -0
- data/lib/mxrb/compiler/generic_widget_bundle_compiler.rb +281 -0
- data/lib/mxrb/compiler/image_bundle_compiler.rb +216 -0
- data/lib/mxrb/compiler/java_proxy_generator.rb +509 -0
- data/lib/mxrb/compiler/legacy_data_grid_compiler.rb +267 -0
- data/lib/mxrb/compiler/legacy_page_builder.rb +287 -0
- data/lib/mxrb/compiler/mda.rb +99 -0
- data/lib/mxrb/compiler/microflow_document_compiler.rb +85 -0
- data/lib/mxrb/compiler/microflow_materializer.rb +48 -0
- data/lib/mxrb/compiler/microflow_node_compiler.rb +250 -0
- data/lib/mxrb/compiler/model_package.rb +116 -0
- data/lib/mxrb/compiler/model_values.rb +67 -0
- data/lib/mxrb/compiler/nanoflow_program_compiler.rb +483 -0
- data/lib/mxrb/compiler/navigation_document_compiler.rb +93 -0
- data/lib/mxrb/compiler/packager.rb +100 -0
- data/lib/mxrb/compiler/page_bundle_builder.rb +56 -0
- data/lib/mxrb/compiler/page_bundle_compiler.rb +2004 -0
- data/lib/mxrb/compiler/page_document_compiler.rb +77 -0
- data/lib/mxrb/compiler/portable_packager.rb +356 -0
- data/lib/mxrb/compiler/project_jar_archive.rb +84 -0
- data/lib/mxrb/compiler/project_jar_builder.rb +121 -0
- data/lib/mxrb/compiler/project_materializer.rb +139 -0
- data/lib/mxrb/compiler/project_model_orderer.rb +52 -0
- data/lib/mxrb/compiler/runtime_data_types.rb +31 -0
- data/lib/mxrb/compiler/runtime_model_schema.rb +90 -0
- data/lib/mxrb/compiler/schemas/runtime-10.24.0.73019.json +1052 -0
- data/lib/mxrb/compiler/schemas/runtime-11.json +1215 -0
- data/lib/mxrb/compiler/schemas/runtime-6.10.8.json +1148 -0
- data/lib/mxrb/compiler/schemas/runtime-7.17.0.json +1144 -0
- data/lib/mxrb/compiler/schemas/runtime-7.5.0.json +1215 -0
- data/lib/mxrb/compiler/schemas/runtime-9.6.1.29396.json +868 -0
- data/lib/mxrb/compiler/schemas/system-model-10.24.0.73019.b64 +1135 -0
- data/lib/mxrb/compiler/schemas/system-model-11.12.1.b64 +815 -0
- data/lib/mxrb/compiler/schemas/system-model-6.10.8.b64 +497 -0
- data/lib/mxrb/compiler/schemas/system-model-7.17.0.b64 +519 -0
- data/lib/mxrb/compiler/schemas/system-model-7.5.0.b64 +504 -0
- data/lib/mxrb/compiler/schemas/system-model-9.6.1.29396.b64 +816 -0
- data/lib/mxrb/compiler/security_materializer.rb +104 -0
- data/lib/mxrb/compiler/settings_document_compiler.rb +45 -0
- data/lib/mxrb/compiler/settings_materializer.rb +25 -0
- data/lib/mxrb/compiler/source_model.rb +128 -0
- data/lib/mxrb/compiler/system_model_seed.rb +88 -0
- data/lib/mxrb/compiler/system_queue_materializer.rb +54 -0
- data/lib/mxrb/compiler/system_text_materializer.rb +49 -0
- data/lib/mxrb/compiler/translation_materializer.rb +95 -0
- data/lib/mxrb/compiler/web_bundle_builder.rb +155 -0
- data/lib/mxrb/compiler/web_list_data_source.rb +139 -0
- data/lib/mxrb/compiler/web_operation_compiler.rb +614 -0
- data/lib/mxrb/compiler/web_shell_materializer.rb +194 -0
- data/lib/mxrb/compiler/widget_package_extractor.rb +63 -0
- data/lib/mxrb/doctor.rb +116 -0
- data/lib/mxrb/dsl/builder.rb +1636 -0
- data/lib/mxrb/errors.rb +18 -0
- data/lib/mxrb/evaluation.rb +131 -0
- data/lib/mxrb/exporter.rb +1716 -0
- data/lib/mxrb/frontend/migrator.rb +775 -0
- data/lib/mxrb/functional.rb +307 -0
- data/lib/mxrb/github/annotator.rb +161 -0
- data/lib/mxrb/initializer.rb +257 -0
- data/lib/mxrb/integrity/validator.rb +136 -0
- data/lib/mxrb/io/bson_codec.rb +145 -0
- data/lib/mxrb/io/mpr_file.rb +558 -0
- data/lib/mxrb/io/mxunit_codec.rb +42 -0
- data/lib/mxrb/marketplace.rb +380 -0
- data/lib/mxrb/model/association.rb +98 -0
- data/lib/mxrb/model/attribute.rb +100 -0
- data/lib/mxrb/model/connector.rb +17 -0
- data/lib/mxrb/model/design_materializer.rb +133 -0
- data/lib/mxrb/model/design_migration.rb +126 -0
- data/lib/mxrb/model/design_system.rb +111 -0
- data/lib/mxrb/model/domain_model.rb +51 -0
- data/lib/mxrb/model/entity.rb +180 -0
- data/lib/mxrb/model/menu.rb +38 -0
- data/lib/mxrb/model/microflow.rb +100 -0
- data/lib/mxrb/model/module.rb +142 -0
- data/lib/mxrb/model/navigation.rb +127 -0
- data/lib/mxrb/model/page.rb +410 -0
- data/lib/mxrb/model/project.rb +187 -0
- data/lib/mxrb/model/unit.rb +48 -0
- data/lib/mxrb/module_initializer.rb +75 -0
- data/lib/mxrb/official_marketplace/content_api.rb +292 -0
- data/lib/mxrb/official_marketplace/dependency_resolver.rb +329 -0
- data/lib/mxrb/official_marketplace/lifecycle.rb +367 -0
- data/lib/mxrb/official_marketplace/module_package_importer.rb +318 -0
- data/lib/mxrb/official_marketplace/widget_package_installer.rb +414 -0
- data/lib/mxrb/official_marketplace.rb +720 -0
- data/lib/mxrb/oql/analyzer.rb +155 -0
- data/lib/mxrb/oql/index_advisor.rb +85 -0
- data/lib/mxrb/oql/plan_analyzer.rb +185 -0
- data/lib/mxrb/oql/server.rb +132 -0
- data/lib/mxrb/oql/sql_server_plan_analyzer.rb +190 -0
- data/lib/mxrb/oql/sql_server_workload_analyzer.rb +80 -0
- data/lib/mxrb/oql/workload_analyzer.rb +175 -0
- data/lib/mxrb/oql/workload_baseline.rb +60 -0
- data/lib/mxrb/oql.rb +424 -0
- data/lib/mxrb/project_lifecycle.rb +76 -0
- data/lib/mxrb/protocols/plan.rb +86 -0
- data/lib/mxrb/protocols.rb +123 -0
- data/lib/mxrb/runtime/database_workspace.rb +677 -0
- data/lib/mxrb/runtime/docker_executor.rb +41 -0
- data/lib/mxrb/runtime/docker_workspace.rb +29 -0
- data/lib/mxrb/runtime/executor.rb +169 -0
- data/lib/mxrb/runtime/java_locator.rb +26 -0
- data/lib/mxrb/runtime/native.rb +474 -0
- data/lib/mxrb/runtime/sql_server_database.rb +146 -0
- data/lib/mxrb/runtime/toolchain.rb +82 -0
- data/lib/mxrb/scaffold/cli.rb +113 -0
- data/lib/mxrb/scaffold/generator.rb +246 -0
- data/lib/mxrb/scaffold/help.rb +80 -0
- data/lib/mxrb/scaffold/page_templates.rb +54 -0
- data/lib/mxrb/scaffold/recipes.rb +198 -0
- data/lib/mxrb/scaffold/registry.rb +82 -0
- data/lib/mxrb/scaffold/templates.rb +723 -0
- data/lib/mxrb/scaffold/transaction.rb +84 -0
- data/lib/mxrb/schema/tables.rb +55 -0
- data/lib/mxrb/semantic/analyzer.rb +473 -0
- data/lib/mxrb/semantic/batch_plan.rb +68 -0
- data/lib/mxrb/semantic/domain_mutator.rb +419 -0
- data/lib/mxrb/semantic/embedder.rb +51 -0
- data/lib/mxrb/semantic/extractor.rb +290 -0
- data/lib/mxrb/semantic/index.rb +623 -0
- data/lib/mxrb/semantic/inliner.rb +216 -0
- data/lib/mxrb/semantic/mover.rb +153 -0
- data/lib/mxrb/semantic/onnx_embedder.rb +34 -0
- data/lib/mxrb/semantic/remover.rb +70 -0
- data/lib/mxrb/semantic/renamer.rb +211 -0
- data/lib/mxrb/semantic/tfidf_embedder.rb +46 -0
- data/lib/mxrb/semantic/vec_store.rb +75 -0
- data/lib/mxrb/team_server.rb +390 -0
- data/lib/mxrb/templates/project/10.24.0.73019.json +32 -0
- data/lib/mxrb/templates/project/11.12.1.json +32 -0
- data/lib/mxrb/templates/project/6.10.8.json +50 -0
- data/lib/mxrb/templates/project/7.17.0.json +50 -0
- data/lib/mxrb/templates/project/7.5.0.json +50 -0
- data/lib/mxrb/templates/project/9.6.1.29396.json +50 -0
- data/lib/mxrb/version.rb +5 -0
- data/lib/mxrb/widget_package.rb +338 -0
- data/lib/mxrb/widget_synchronizer.rb +31 -0
- data/lib/mxrb/writer.rb +3775 -0
- data/lib/mxrb.rb +188 -0
- data/marketplace/catalog.json +10 -0
- data/marketplace/modules/shared-kernel/domain/README.md +4 -0
- data/marketplace/modules/shared-kernel/module.rb +5 -0
- data/marketplace/modules/shared-kernel/mxrb-module.json +9 -0
- metadata +447 -0
data/docs/README.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# MXRB documentation
|
|
2
|
+
|
|
3
|
+
Choose a language:
|
|
4
|
+
|
|
5
|
+
- [Português (Brasil)](pt-BR/README.md)
|
|
6
|
+
- [English (United States)](en-US/README.md)
|
|
7
|
+
- [Deutsch (Deutschland)](de-DE/README.md)
|
|
8
|
+
|
|
9
|
+
All language trees contain the same document set. Ruby APIs, CLI commands,
|
|
10
|
+
Mendix identifiers and validation numbers are kept unchanged.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# MXRB-Dokumentation
|
|
2
|
+
|
|
3
|
+
[Português](../pt-BR/README.md) · [English](../en-US/README.md) · **Deutsch**
|
|
4
|
+
|
|
5
|
+
- [Projektarchitektur](architecture.md)
|
|
6
|
+
- [Architekturstandard](architectural-standard.md)
|
|
7
|
+
- [Struktur des exportierten Projekts](project-structure.md)
|
|
8
|
+
- [Architekturmuster](architectural-patterns.md)
|
|
9
|
+
- [Semantisches Refactoring](semantic-refactoring.md)
|
|
10
|
+
- [Navigation und Design System](design-system.md)
|
|
11
|
+
- [OQL, SQL-Ansicht und lokale Datenbank](oql-sql.md)
|
|
12
|
+
- [Konventionen](conventions.md)
|
|
13
|
+
- [Ruby-First-Roadmap](ruby-first-roadmap.md)
|
|
14
|
+
- [Validierungsmatrix](validation-matrix.md)
|
|
15
|
+
- [Nativer Compiler und Runtime](compiler.md)
|
|
16
|
+
- [Qualitätsbericht für Build und Runtime](native-runtime-quality-report.md)
|
|
17
|
+
- [Projekte erstellen und bearbeiten](writing.md)
|
|
18
|
+
- [Projekt-Scaffolds](scaffolds.md)
|
|
19
|
+
- [Entitäten-DSL](entity-dsl.md)
|
|
20
|
+
- [Betrieb, Lifecycle und Marketplace](platform-operations.md)
|
|
21
|
+
- [Bewertung der Mendix-API-Integration](platform-api-integration.md)
|
|
22
|
+
- [VetClinic-End-to-End-Abnahme](vetclinic-acceptance.md)
|
|
23
|
+
|
|
24
|
+
[Zurück zur Projekt-README](../../README.de-DE.md)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Architekturmuster
|
|
2
|
+
|
|
3
|
+
[Português](../pt-BR/architectural-patterns.md) · [English](../en-US/architectural-patterns.md) · **Deutsch**
|
|
4
|
+
|
|
5
|
+
MXRB verwendet Ruby als einzige öffentliche Modellschnittstelle und ordnet
|
|
6
|
+
Verantwortungen Domäne, Anwendung, Präsentation und Infrastruktur zu.
|
|
7
|
+
|
|
8
|
+
```text
|
|
9
|
+
Präsentation ─┐
|
|
10
|
+
├─> Anwendung ─> Domäne
|
|
11
|
+
Infrastruktur ┘
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Entitäten und Regeln halten Geschäftszustand. Microflows sind Anwendungsfälle,
|
|
15
|
+
wenn sie diesen Zustand koordinieren. Seiten, Navigation und Nanoflows gehören
|
|
16
|
+
zur Präsentation; HTTP, externe Datenbanken, Java und Integrationen zur
|
|
17
|
+
Infrastruktur.
|
|
18
|
+
|
|
19
|
+
Repositories sind an echten externen Grenzen sinnvoll, nicht als Zeremonie um
|
|
20
|
+
gewöhnliches Mendix-CRUD. Aufrufe und Abhängigkeiten bleiben im semantischen
|
|
21
|
+
Graph sichtbar und können am tatsächlichen Modell geprüft werden.
|
|
22
|
+
|
|
23
|
+
Security, Navigation und Design System sind Querschnittsrichtlinien unter
|
|
24
|
+
`app/`. Deklarierte Navigation wird zusätzlich nativ in Mendix geschrieben.
|
|
25
|
+
|
|
26
|
+
[Zurück zum Index](README.md)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# MXRB-Architekturstandard
|
|
2
|
+
|
|
3
|
+
[Português](../pt-BR/architectural-standard.md) · [English](../en-US/architectural-standard.md) · **Deutsch**
|
|
4
|
+
|
|
5
|
+
## Zentrales Prinzip
|
|
6
|
+
|
|
7
|
+
Ruby ist die kanonische Architekturdarstellung. Mendix bleibt Laufzeit und
|
|
8
|
+
natives Modell. Ein Microflow wird nach seiner Verantwortung klassifiziert,
|
|
9
|
+
nicht allein danach, dass er ein Microflow ist.
|
|
10
|
+
|
|
11
|
+
## Schichten
|
|
12
|
+
|
|
13
|
+
- `domain`: Entitäten, Beziehungen, Invarianten und Domain Events.
|
|
14
|
+
- `application`: Use Cases, Abfragen, Validierungen und Jobs.
|
|
15
|
+
- `presentation`: Seiten, UI-Einstiegspunkte und Nanoflows.
|
|
16
|
+
- `infrastructure`: Integrationen, Services und technische Adapter.
|
|
17
|
+
|
|
18
|
+
Abhängigkeiten zeigen nach innen. Modulübergreifender Zugriff erfolgt über
|
|
19
|
+
bewusst veröffentlichte APIs.
|
|
20
|
+
|
|
21
|
+
## Persistenz und Repositories
|
|
22
|
+
|
|
23
|
+
Direkter Mendix-Retrieve ist für normales CRUD korrekt. Ein Repository ist nur
|
|
24
|
+
für eine echte Grenze sinnvoll, etwa externen Speicher, komplexe
|
|
25
|
+
Abfrageverträge oder Testisolation.
|
|
26
|
+
|
|
27
|
+
## Security, Navigation und Designsystem
|
|
28
|
+
|
|
29
|
+
App Security besitzt User Roles und globale Regeln; Module Security besitzt
|
|
30
|
+
Module Roles. Seiten und Flows deklarieren `allowed_roles`. Navigation ist
|
|
31
|
+
appweit. Semantische Ruby-Tokens beschreiben Designabsichten, während native
|
|
32
|
+
Mendix-Ressourcen erhalten bleiben.
|
|
33
|
+
|
|
34
|
+
## Qualitätsregeln
|
|
35
|
+
|
|
36
|
+
MXRB prüft fehlende Referenzen, Zyklen, verbotene Abhängigkeiten,
|
|
37
|
+
Zugriffsgrenzen, Benennung und projektspezifische Ruby-Regeln. `mx check` und
|
|
38
|
+
MxBuild bleiben die offiziellen Plattform-Gates.
|
|
39
|
+
|
|
40
|
+
## Supportgrenze
|
|
41
|
+
|
|
42
|
+
Domain-, Microflow-, Nanoflow-, Seiten-, Menü-, Security- und native
|
|
43
|
+
Navigationsflächen sind typisiert bearbeitbar. Theme- und Code-Assets
|
|
44
|
+
verwenden ein Manifest mit Prüfsummen; Designsystem-Tokens und -Richtlinien
|
|
45
|
+
besitzen einen typisierten Ruby-Vertrag. Workflows, Integrationen,
|
|
46
|
+
veröffentlichte APIs und Widgets ohne kompakte API bleiben über tiefes Ruby
|
|
47
|
+
und das native Baseline bearbeitbar, benötigen aber noch spezifische
|
|
48
|
+
typisierte DSLs.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Mendix-Projektarchitektur in MXRB
|
|
2
|
+
|
|
3
|
+
[Português](../pt-BR/architecture.md) · [English](../en-US/architecture.md) · **Deutsch**
|
|
4
|
+
|
|
5
|
+
MXRB bildet Mendix-Projekte als bearbeitbares Ruby ab und bewahrt gleichzeitig
|
|
6
|
+
das native Modell für sichere Roundtrips. Ruby ist die einzige öffentliche
|
|
7
|
+
Sprache; es gibt keine parallele MDL-ähnliche Syntax.
|
|
8
|
+
|
|
9
|
+
## Kompatibilitätsprinzipien
|
|
10
|
+
|
|
11
|
+
- Qualifizierte Mendix-Namen bleiben kanonisch.
|
|
12
|
+
- Native Units ohne typisierte Ruby-Abstraktion bleiben verlustfrei erhalten.
|
|
13
|
+
- Typisierte Änderungen ersetzen nur ausdrücklich deklarierte Strukturen.
|
|
14
|
+
- MPR v1 bleibt in SQLite, MPR v2 in `mprcontents/`.
|
|
15
|
+
- `mx`, MxBuild und Runtime sind externe Gates, keine Kern-APIs.
|
|
16
|
+
|
|
17
|
+
## Kanonische Struktur
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
project.rb
|
|
21
|
+
app/{security,navigation}
|
|
22
|
+
modules/Sales/
|
|
23
|
+
domain/
|
|
24
|
+
application/
|
|
25
|
+
presentation/
|
|
26
|
+
infrastructure/
|
|
27
|
+
security/
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`domain` enthält Entitäten und Regeln. `application` enthält Use Cases,
|
|
31
|
+
Abfragen und Jobs. `presentation` enthält Seiten und clientseitige Nanoflows.
|
|
32
|
+
`infrastructure` enthält Integrationen, Dienste und Adapter.
|
|
33
|
+
|
|
34
|
+
Die Kardinalität folgt dem Mendix-Modell aus Typ und Eigentümer:
|
|
35
|
+
|
|
36
|
+
```ruby
|
|
37
|
+
# 1:N (Standard): Reference + Default
|
|
38
|
+
association "Sales.Customer", name: "Order_Customer"
|
|
39
|
+
|
|
40
|
+
# 1:1: Reference + Both
|
|
41
|
+
association "Sales.Profile", name: "Customer_Profile", owner: :Both
|
|
42
|
+
|
|
43
|
+
# N:N: ReferenceSet + Default
|
|
44
|
+
association "Sales.Tag", name: "Order_Tags", type: :ReferenceSet
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Abhängigkeitsregel
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
presentation ─┐
|
|
51
|
+
├─> application ─> domain
|
|
52
|
+
infrastructure┘
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Der semantische Graph prüft fehlende Ziele, Zyklen, Modulgrenzen und verbotene
|
|
56
|
+
Abhängigkeiten.
|
|
57
|
+
|
|
58
|
+
## Ruby → Mendix
|
|
59
|
+
|
|
60
|
+
Definitionen werden ausgewertet, native Units zuerst wiederhergestellt und
|
|
61
|
+
typisierte Overlays über stabile Namen zusammengeführt. Danach aktualisiert
|
|
62
|
+
MXRB Hashes und v1/v2-Speicher. `mxrb validate`, `mx check` und MxBuild bilden
|
|
63
|
+
aufeinanderfolgende Gates.
|
|
64
|
+
|
|
65
|
+
## Mendix → Ruby
|
|
66
|
+
|
|
67
|
+
MXRB indexiert alle Units, exportiert typisierte Artefakte und schreibt nicht
|
|
68
|
+
typisierte Units nach `.mxrb/native_units.json`. Fingerprints erlauben die
|
|
69
|
+
exakte Wiederverwendung unveränderter Flow- und Seitenstrukturen.
|
|
70
|
+
|
|
71
|
+
## Namenskonventionen und Wahrheit
|
|
72
|
+
|
|
73
|
+
Mendix-Namen bleiben exakt; Ruby-Dateien verwenden `snake_case`. Ruby ist für
|
|
74
|
+
deklarierte typisierte Strukturen maßgeblich, das native Manifest für den
|
|
75
|
+
bewahrten Rest. Eine tiefe Ruby-Änderung invalidiert den Fingerprint und wird
|
|
76
|
+
neu generiert.
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Nativer Compiler, Runtime und MDA-Format
|
|
2
|
+
|
|
3
|
+
Die funktionale MXRB-Pipeline führt weder `mx`, `mxbuild`, `mxcli`, Studio Pro
|
|
4
|
+
noch das Model SDK aus. Diese Werkzeuge können externe Kompatibilitätsprüfungen
|
|
5
|
+
bleiben, sind aber keine Build-, Datenbank- oder Funktionstest-Abhängigkeiten.
|
|
6
|
+
|
|
7
|
+
## Build von null
|
|
8
|
+
|
|
9
|
+
`DeploymentMaterializer` erzeugt ein fehlendes `deployment/` aus den Templates
|
|
10
|
+
der installierten Version und durchläuft 12 Stufen: Sicherheit, Konstanten,
|
|
11
|
+
Domänenmodell, Artefakte, Übersetzungen, Systemtexte, Systemwarteschlangen,
|
|
12
|
+
Clientmodell, Actions, Settings, Microflows und Projekt-/Modulindex. Metadaten,
|
|
13
|
+
Abhängigkeiten und ein Runtime-kompatibel geordnetes BSON-`model.mdp` werden
|
|
14
|
+
ebenfalls erzeugt.
|
|
15
|
+
|
|
16
|
+
Der Bootstrap besitzt auditierte Seeds und Kataloge für 6.10.8, 7.5.0,
|
|
17
|
+
7.17.0, 9.6.1.29396, 10.24.0.73019 und 11.12.1. Die Familien 6.x, 7.x, 9.x, 10.x und 11.x wählen
|
|
18
|
+
einen kompatiblen Compiler-Seed; 5.x und 8.x schlagen ohne auditierten
|
|
19
|
+
Seed geschlossen fehl. Die Familie gilt nur für das Compiler-Schema. Die
|
|
20
|
+
Runtime muss exakt zum Patch des MPR passen.
|
|
21
|
+
|
|
22
|
+
`ProjectJarBuilder` findet das JDK über `MXRB_JAVA_HOME`, `JAVA_HOME`, asdf oder
|
|
23
|
+
mise, kompiliert `javasource/**/*.java` gegen Runtime- und Projektbibliotheken
|
|
24
|
+
und schreibt ein deterministisches OSGi-`project.jar`. Für VetClinic wurden 183
|
|
25
|
+
Quelldateien zu 249 Klassen kompiliert.
|
|
26
|
+
|
|
27
|
+
`WebBundleBuilder` wählt Dojo für 6/7, Dojo mit React-Wrapper für 9, den im
|
|
28
|
+
Projekt gewählten klassischen oder optimierten Client für 10 und React für 11.
|
|
29
|
+
Der React-Pfad erzeugt Entry-/Seitenmodule, entpackt `.mpk` und ruft direkt
|
|
30
|
+
Node/Rollup für 10 oder Node/Rspack für 11 auf. Data Grid 2 wird für den Teilumfang aus XPath-Datenquelle
|
|
31
|
+
und Attributspalten kompiliert, einschließlich `operations.json`, Datenquelle
|
|
32
|
+
und Attributtypen. Noch nicht übersetzte Typen oder Eigenschaftskombinationen
|
|
33
|
+
erhalten einen DOM-Fallback in `web/mxrb-pages.json`; das VetClinic-Manifest ist
|
|
34
|
+
leer.
|
|
35
|
+
|
|
36
|
+
Der React-Compiler materialisiert außerdem Container, Texte und Überschriften,
|
|
37
|
+
responsive Grids/Spalten sowie Buttons zum Öffnen und Erzeugen. Der Bootstrap
|
|
38
|
+
bindet `theme.compiled.css`, das Manifest und Assets aus
|
|
39
|
+
`themesource/*/public` ein; eine Homepage mit `LayoutGrid` bleibt nicht leer.
|
|
40
|
+
Ruby-Inhalte lassen sich so ergänzen:
|
|
41
|
+
|
|
42
|
+
Parametergestützte `DataView`-Formulare rendern nun editierbare `TextBox`-Felder
|
|
43
|
+
sowie Save/Cancel-Aktionen. Create übergibt die GUID des neuen Objekts über
|
|
44
|
+
`openForm2`; Commit-/Rollback-Operationen werden mit den Projektbenutzerrollen
|
|
45
|
+
registriert, die aus den erlaubten Modulrollen der Seite abgeleitet werden.
|
|
46
|
+
Damit bleibt die Runtime-Autorisierung erhalten und wird nicht umgangen.
|
|
47
|
+
|
|
48
|
+
Layouts, Platzhalter, Scrollbereiche, Sidebars, Header, Navigationsmenüs,
|
|
49
|
+
Snippets, DataViews, ListViews, Formularelemente, Bilder, Combo Boxes, Gallery,
|
|
50
|
+
Data Grid 2 und schemagestützte Pluggable Widgets werden über die nativen
|
|
51
|
+
React-Client-Verträge kompiliert. Seiten-, Menü- und Widget-Aktionen decken
|
|
52
|
+
Navigation, Microflows, Nanoflows, Objektlebenszyklus, Links und Sign-out ab.
|
|
53
|
+
Nanoflow-Programme unterstützen außerdem Entscheidungen, Fehlerbehandlung,
|
|
54
|
+
JavaScript-Aktionen und serverseitige Microflow-/Commit-
|
|
55
|
+
Operationen, sofern der Modellvertrag sicher abgebildet werden kann.
|
|
56
|
+
|
|
57
|
+
Der React-Pfad kompiliert außerdem die offizielle Gallery mit XPath- und
|
|
58
|
+
Microflow-Listenquellen, Template-Inhalten, Auswahl und formatierten dynamischen
|
|
59
|
+
Attributen. Nanoflow-Quellen und -Aktionen verwenden die Mendix-Verträge
|
|
60
|
+
`NanoflowObjectListProperty`, `NanoflowObjectProperty` und `ActionProperty`.
|
|
61
|
+
MXRB erzeugt echte Clientprogramme `{ name, instructions }` für auditierten
|
|
62
|
+
Graph-Kontrollfluss, Returns, Variablen, Objekte, Nanoflow-/Microflow-Aufrufe,
|
|
63
|
+
JavaScript-, Seiten-, Nachrichten-, Validierungs- und Commit-Aktionen. Fehlende
|
|
64
|
+
Flows, unsichere Parameterabbildungen und nicht übersetzte Clientinstruktionen
|
|
65
|
+
schlagen geschlossen fehl und bleiben Befunde im Support-Manifest.
|
|
66
|
+
|
|
67
|
+
In lokalen Runtime-Sitzungen im Developer-Modus versioniert mxrb außerdem
|
|
68
|
+
dynamische Seitenimporte, versieht den korrigierten React-Client-Chunk mit
|
|
69
|
+
einem Inhalts-Hash und gibt dem Rspack-Selbstimport dasselbe Cache-Token wie
|
|
70
|
+
dem Entry-Point. Dadurch können langlebige statische Mendix-Antworten nach
|
|
71
|
+
einem nativen Rebuild keine veraltete leere Seite wiederherstellen. Die erzeugte
|
|
72
|
+
Shell stellt außerdem einen begrenzten `openForm`-Adapter über `openForm2`
|
|
73
|
+
bereit; alte Handler im Cache navigieren damit, statt still ohne Request zu enden.
|
|
74
|
+
|
|
75
|
+
```ruby
|
|
76
|
+
Mxrb.define("App.mpr") do
|
|
77
|
+
mendix_version "11.12.1"
|
|
78
|
+
self.module(:App) do
|
|
79
|
+
layout :Shell
|
|
80
|
+
page(:Home) do
|
|
81
|
+
layout "App.Shell"
|
|
82
|
+
title "Meine Anwendung"
|
|
83
|
+
container(:main, class_name: "container") do
|
|
84
|
+
text :welcome, caption: "Mit mxrb erzeugter Inhalt"
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Bestehende Projekte können exportiert, in der DSL geändert und neu erzeugt
|
|
92
|
+
werden. Nicht unterstützte Widgets bleiben im Support-Manifest sichtbar.
|
|
93
|
+
|
|
94
|
+
Vor einem nativen Build kann das gesamte MPR mit dem für seine Mendix-Version
|
|
95
|
+
gewählten Renderer geprüft werden:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
mxrb preflight App.mpr
|
|
99
|
+
mxrb preflight App.mpr --json
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Der Nur-Lese-Befehl liefert bei nicht unterstützten Versionen oder
|
|
103
|
+
Client-Features einen Fehlerstatus. Mendix 11 wird über den React-Compiler
|
|
104
|
+
geprüft; 6/7/9 verwenden dieselbe Legacy-Dojo-Prüfung wie `WebBundleBuilder`.
|
|
105
|
+
|
|
106
|
+
Der Dojo-Pfad kompiliert Data Grid 1 mit Datenbank-, XPath- und
|
|
107
|
+
Microflow-Quellen sowie auditierten Such-, Sortier-, Paging-, Auswahl- und
|
|
108
|
+
Button-Verträgen. Alle anderen sichtbaren Widgets werden pro Seite in
|
|
109
|
+
`web/mxrb-legacy-pages.json` erfasst und nicht als gerendert ausgewiesen.
|
|
110
|
+
|
|
111
|
+
## MDA und portables Paket
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
mxrb pack App.mpr --output build/App.mda
|
|
115
|
+
mxrb mda inspect build/App.mda
|
|
116
|
+
mxrb portable App.mpr --output build/runtime.zip
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
MDA und portables ZIP sind deterministisch. Das portable Paket kombiniert das
|
|
120
|
+
native Deployment mit der passenden installierten Runtime, Konfiguration,
|
|
121
|
+
Konstanten und Skripten. Arbeitsverzeichnisse wie `data`, `log`, `run`, `build`
|
|
122
|
+
und `.gradle` werden nicht in das MDA aufgenommen.
|
|
123
|
+
|
|
124
|
+
## Regressionsnachweis
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
script/runtime_boot_regression App.mpr /fehlendes/deployment \
|
|
128
|
+
~/.local/share/mendix/11.12.1
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Der Test erzeugt ein temporäres Deployment, kompiliert Java und Web, paketiert,
|
|
132
|
+
startet die Runtime und verlangt HTTP 200 für `/`, `dist/index.js` und jedes
|
|
133
|
+
Seitenbundle. Ein sauberes Herunterfahren ist ebenfalls erforderlich. Protokoll
|
|
134
|
+
und SHA-256 stehen in `tmp/runtime-boot-evidence.log`. Wenn Chromium installiert
|
|
135
|
+
ist, importiert der Test alle Module und instanziiert Factorys ohne
|
|
136
|
+
Sitzungsbedarf. Das Data-Grid-Bundle wird importiert und ausgewertet; seine
|
|
137
|
+
Factory liest die Clientsitzung und benötigt daher einen authentifizierten Test.
|
|
138
|
+
|
|
139
|
+
Am 1. August 2026 startete VetClinic 11.12.1 ohne vorhandenes Deployment,
|
|
140
|
+
führte 675 Datenbanksynchronisierungen aus, initialisierte die
|
|
141
|
+
`System`-Warteschlangen, plante `VetClinic.Cleanup`, lieferte 200 für alle vier
|
|
142
|
+
Seitenbundles und fuhr sauber herunter. Danach bestand der Funktionstest
|
|
143
|
+
`ACT Create Animal`.
|
|
144
|
+
|
|
145
|
+
## Explizite Grenzen
|
|
146
|
+
|
|
147
|
+
- alle 12 Stufen und saubere Web-Generierung sind für 6.10.8, 7.5.0, 7.17.0,
|
|
148
|
+
9.6.1.29396, 10.24.0.73019 und 11.12.1 validiert;
|
|
149
|
+
- ein exakter nativer Boot ist für 10.24.0.73019 und 11.12.1 belegt. Die installierten
|
|
150
|
+
6/7/9-Distributionen enthalten exakte Runtime-Bundles, aber keinen
|
|
151
|
+
kompatiblen Launcher; `db up` schlägt geschlossen fehl, statt den Java-21-Launcher
|
|
152
|
+
aus Version 11 einzusetzen;
|
|
153
|
+
- Data Grid 1 ist abgedeckt, andere Dojo-Widgets bleiben explizite
|
|
154
|
+
Manifestbefunde;
|
|
155
|
+
- der optimierte Mendix-10-React/Rollup-Pfad ist durch eine neu erstellte
|
|
156
|
+
Anwendung belegt; der Mendix-11-React-Pfad besitzt saubere Preflights und vollständige
|
|
157
|
+
Rspack-Builds für LearnNow, MyFirstModule, SLATaskApp, Sudoku und VetClinic.
|
|
158
|
+
Diese Fixture-Matrix belegt auditierte Verträge, keine universelle Kompatibilität;
|
|
159
|
+
- native Web-Bundles werden erzeugt; React Native verwendet weiterhin
|
|
160
|
+
bestehende Versions-Template- und Projektassets;
|
|
161
|
+
- `mx` und `mxbuild` sind niemals Fallbacks. Nicht unterstützte Eingaben führen
|
|
162
|
+
zu einem klaren Compilerfehler oder einem Eintrag im Support-Manifest.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Konventionen
|
|
2
|
+
|
|
3
|
+
[Português](../pt-BR/conventions.md) · [English](../en-US/conventions.md) · **Deutsch**
|
|
4
|
+
|
|
5
|
+
- Mendix-qualifizierte Namen bleiben in Referenzen kanonisch.
|
|
6
|
+
- Ruby-Dateien verwenden `snake_case`, ohne Artefaktidentitäten zu ändern.
|
|
7
|
+
- Rename, Move, Remove und Migration werden vor Apply als Vorschau geprüft.
|
|
8
|
+
- Seiten- und Flow-Rollen werden in geschützten Projekten deklariert.
|
|
9
|
+
- Jedes Navigationsprofil besitzt ein Standardziel.
|
|
10
|
+
- Rollenspezifische Ziele verweisen auf Benutzerrollen mit Zugriff.
|
|
11
|
+
- Design-Tokens werden lokalen literalen Styles vorgezogen.
|
|
12
|
+
- Typisierte Writer ändern nur ausdrücklich deklarierte Felder.
|
|
13
|
+
- Themes, Widgets, Ressourcen und Java-Quellen sind Teil des Round-trips.
|
|
14
|
+
- Vor Änderungen laufen RSpec, Branch-Report und RuboCop.
|
|
15
|
+
|
|
16
|
+
Die exakte Mendix-5-Validierung unter Windows bleibt als Legacy-Einschränkung
|
|
17
|
+
dokumentiert, ist aber kein aktuelles Auslieferungs-Gate.
|
|
18
|
+
|
|
19
|
+
[Zurück zum Index](README.md)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Navigation und Design System
|
|
2
|
+
|
|
3
|
+
[Português](../pt-BR/design-system.md) · [English](../en-US/design-system.md) · **Deutsch**
|
|
4
|
+
|
|
5
|
+
Navigationsprofile sind native Mendix-Daten. MXRB liest und schreibt
|
|
6
|
+
Standardseiten oder -Microflows, Login-Seiten, übersetzte Titel, Symbole,
|
|
7
|
+
rollenspezifische Ziele und rekursive Menüs.
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
navigation do
|
|
11
|
+
profile :Responsive, home_page: "Sales.Home", app_title: "Shop" do
|
|
12
|
+
title :de_DE, "Geschäft"
|
|
13
|
+
home_for :Administrator, microflow: "Sales.OpenDashboard"
|
|
14
|
+
item "Bestellungen", page: "Sales.Order_Overview", icon: "shopping_cart"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
`project.design_system` inventarisiert CSS-Eigenschaften, Sass-Variablen,
|
|
20
|
+
Themes und `design-properties.json`-Kataloge. Lint findet fehlende Tokens,
|
|
21
|
+
literale Farben und Kontrastverträge unterhalb des deklarierten WCAG-Niveaus.
|
|
22
|
+
|
|
23
|
+
In der Ruby-DSL deklarierte Tokens werden in
|
|
24
|
+
`theme/web/_mxrb-design-system.scss` materialisiert und genau einmal aus
|
|
25
|
+
`theme/web/main.scss` importiert. Farb-Tokens erscheinen zusätzlich als
|
|
26
|
+
Studio-`ColorPicker`-Eigenschaften in
|
|
27
|
+
`themesource/mxrb/web/design-properties.json`. Theme-Vererbung und Overrides
|
|
28
|
+
werden vor dem Schreiben aufgelöst; bestehender `main.scss`-Inhalt bleibt
|
|
29
|
+
erhalten. Zyklen, ungültige Namen und strukturell unsichere CSS-Werte werden
|
|
30
|
+
abgelehnt.
|
|
31
|
+
|
|
32
|
+
Themes, Widgets, Ressourcen und Java-Quellen durchlaufen den Round-trip über
|
|
33
|
+
`.mxrb/assets.json` mit SHA-256 und Traversal-Schutz.
|
|
34
|
+
|
|
35
|
+
Literale Migrationen beginnen mit einer Vorschau. Apply lehnt Dateien ab, die
|
|
36
|
+
sich seit der Vorschau geändert haben, und ersetzt jede Datei atomar.
|
|
37
|
+
|
|
38
|
+
Dieselben Abläufe stehen über die CLI zur Verfügung:
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
bundle exec mxrb design scan App.mpr
|
|
42
|
+
bundle exec mxrb design scan App.mpr --json
|
|
43
|
+
bundle exec mxrb design migrate App.mpr '#3366ff' 'var(--brand-primary)'
|
|
44
|
+
bundle exec mxrb design migrate App.mpr '#3366ff' 'var(--brand-primary)' --apply
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`scan` zeigt Name, Wert, Typ, Theme und Quellposition jedes Tokens sowie die
|
|
48
|
+
Anzahl literaler Farben und nicht aufgelöster Referenzen. `migrate` bleibt bis
|
|
49
|
+
zur Angabe von `--apply` eine Vorschau. Im Ruby-Vertrag deklarierte
|
|
50
|
+
Kontrastpaare prüft `mxrb lint` gegen die konfigurierte WCAG-Stufe.
|
|
51
|
+
|
|
52
|
+
[Zurück zum Index](README.md)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Entitäten-DSL
|
|
2
|
+
|
|
3
|
+
[Português](../pt-BR/entity-dsl.md) · [English](../en-US/entity-dsl.md) · **Deutsch**
|
|
4
|
+
|
|
5
|
+
Mit `mxrb entity new Modul.Entitaet` erzeugte Dateien werden im Modulblock
|
|
6
|
+
ausgewertet. Deshalb wird nur der lokale Name deklariert:
|
|
7
|
+
|
|
8
|
+
```ruby
|
|
9
|
+
entity :Animal do
|
|
10
|
+
documentation "Tier in der Klinik"
|
|
11
|
+
string :Name, default: "", documentation: "Anzeigename"
|
|
12
|
+
integer :Age, default: 0
|
|
13
|
+
long :ExternalId
|
|
14
|
+
float :Weight
|
|
15
|
+
decimal :Balance
|
|
16
|
+
boolean :Active, default: true
|
|
17
|
+
datetime :BirthDate
|
|
18
|
+
autonumber :Sequence
|
|
19
|
+
hashstring :PasswordHash
|
|
20
|
+
binary :Document
|
|
21
|
+
enum :Species, enumeration: "VetClinic.AnimalSpecies"
|
|
22
|
+
end
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Verfügbare Typen sind `string`, `integer`, `long`, `float`, `decimal`,
|
|
26
|
+
`boolean`, `datetime`, `autonumber`, `hashstring`, `binary` und `enum`. Derzeit
|
|
27
|
+
werden `default:`, `documentation:` und bei Enum-Attributen `enumeration:` in
|
|
28
|
+
das MPR geschrieben. Die Enumeration selbst wird mit `enumeration` deklariert,
|
|
29
|
+
das Attribut mit `enum`.
|
|
30
|
+
|
|
31
|
+
## Assoziationen
|
|
32
|
+
|
|
33
|
+
```ruby
|
|
34
|
+
association "VetClinic.Owner", name: "Animal_Owner" # N:1 Reference
|
|
35
|
+
association "VetClinic.Passport", name: "Animal_Passport", owner: :Both # 1:1
|
|
36
|
+
association "VetClinic.Tag", name: "Animal_Tags", type: :ReferenceSet # N:N
|
|
37
|
+
association "VetClinic.Group", name: "Animal_Groups",
|
|
38
|
+
type: :ReferenceSet, owner: :Both
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Das erste Argument ist das qualifizierte Ziel. `type:` akzeptiert `:Reference`
|
|
42
|
+
(Standard) oder `:ReferenceSet`; `owner:` akzeptiert `:Default` oder `:Both`.
|
|
43
|
+
|
|
44
|
+
## Persistenz, Ereignisse und Zugriff
|
|
45
|
+
|
|
46
|
+
`non_persistent!` erzeugt eine nicht persistente Entität. Verfügbare Hooks sind
|
|
47
|
+
`before_commit`, `after_commit`, `before_delete` und `after_delete`, jeweils mit
|
|
48
|
+
`microflow:`. `access_rule` akzeptiert qualifizierte Rollen sowie `create:`,
|
|
49
|
+
`delete:`, `read:`, `write:` und `xpath:`. Lesen und Schreiben verwenden
|
|
50
|
+
`:all`, `:none` oder eine Attributliste.
|
|
51
|
+
|
|
52
|
+
Weitere CLI-Hilfe liefert `mxrb entity --help`; das Ergebnis wird mit
|
|
53
|
+
`mxrb generate project.rb` und `mxrb validate App.mpr` geprüft.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Qualitätsbericht für nativen Build und Runtime
|
|
2
|
+
|
|
3
|
+
Datum: 5. August 2026.
|
|
4
|
+
|
|
5
|
+
## Bestätigtes Ergebnis
|
|
6
|
+
|
|
7
|
+
- keine funktionale Stufe ruft `mx`, `mxbuild`, `mxcli`, Studio Pro oder Model SDK auf;
|
|
8
|
+
- sauberer 12-Stufen-Build und Web-Generierung bestanden mit 6.10.8 (39 Seiten), 7.5.0 (45), 7.17.0 (66), 9.6.1.29396 (90), 10.24.0.73019 (optimierter Client) und 11.12.1;
|
|
9
|
+
- die Round-trip-Matrix bestand mit sechs echten Fixtures von 5.21.4 bis 11.12.1: 1.506 Units, 1.734 Artefakte und 3.388 Referenzen;
|
|
10
|
+
- auditierte Compiler-Schemas/Seeds decken 6.x, 7.x, 9.x, 10.x und 11.x ab. 5.x und 8.x schlagen bei nativer Kompilierung geschlossen fehl; Runtime benötigt den exakten Patch;
|
|
11
|
+
- Data Grid 1 deckt Datenbank/XPath/Microflow, Suche, Sortierung, Paging, Auswahl und auditierte Buttons ab. Data Grid 2 deckt XPath, Attributspalten und Create ab;
|
|
12
|
+
- Webprofile: Dojo in 6/7, Dojo/React-Hybrid in 9, projektabhängig klassisch/optimiert in 10 und React in 11;
|
|
13
|
+
- Projects API inventarisierte 130 Apps. Drei echte Git-Projekte (`MyFirstModule`, `LearnNow Trainning Management`, `SLATaskApp`) bestanden validate → export → generate → validate → compare;
|
|
14
|
+
- `MyFirstModule` wurde ohne proprietäre Builder als exaktes 11.12.1 erzeugt. Runtime synchronisierte 655 Operationen, erstellte den aktiven Admin `mx`, lieferte React-Shell und gestaltetes Login auf `127.0.0.1:18080` und zeigte die erwarteten Tabellen;
|
|
15
|
+
- eine neu erstellte 10.24.0.73019-Anwendung mit optimiertem Client bestand offizielles `mx check` und `mxbuild`, natives Modell/Java/Rollup/Portable-Paket, 460 Datenbanksynchronisierungen, Readiness-Probe und HTTP 200;
|
|
16
|
+
- authentifizierte Chromium-QA bestand wiederholt für Home und Orders mit
|
|
17
|
+
deterministischen DOM/Layout/Style/ARIA-Snapshots und Screenshots, null
|
|
18
|
+
Konsolenfehlern und einer expliziten SHA-256-Baseline;
|
|
19
|
+
- `mxrb page new|generate|g Modul.Seite --chain ...` materialisiert gültige
|
|
20
|
+
MPRs für `page:microflow`, `page:nanoflow` und
|
|
21
|
+
`page:nanoflow:microflow`; ohne Option bleibt das minimale Seiten-Scaffold
|
|
22
|
+
unverändert;
|
|
23
|
+
- `mxrb page templates` zeigt den Baum starter/blank/dashboard/form-vertical;
|
|
24
|
+
`--template` kombiniert Vorlagen mit Chains, und dashboard/form-vertical
|
|
25
|
+
bestanden in einer echten Runtime mit kompiliertem Theme und null Konsolenfehlern;
|
|
26
|
+
- finale QA: 1.039 Beispiele, null Fehler, 100,00% Zeilen (17.224/17.224), 100,00% Branches (6.811/6.811) und RuboCop ohne Verstöße in 244 Dateien.
|
|
27
|
+
|
|
28
|
+
## Korrekturen aus dem Verbesserungsbericht
|
|
29
|
+
|
|
30
|
+
- selektive Java-Proxy-Erzeugung für verwendete Entitäten, Vererbung, Enums und Konstanten;
|
|
31
|
+
- Absenkung der offiziellen Database-Connector-Build-Erweiterung auf External-Database-Connector-Java-Actions, einschließlich sicherem Query-Builder-`SELECT`;
|
|
32
|
+
- OQL-Quellen, geerbte Persistenzflags, Demo-User-Rollen, Systemtexte und exakte Association-Storage/Access-Rechte;
|
|
33
|
+
- stabile PostgreSQL-Bereitschaft, öffentliche Loopback-Portoption (`--runtime-port`), Admin-Passwort aus Umgebung und Admin-Erstellung;
|
|
34
|
+
- eigenständige Login-Ressourcen, gerenderte Platzhalter, Cache-Busting, Stil und i18n;
|
|
35
|
+
- Einbindung von Atlas-CSS, Manifest und öffentlichen Assets; die echte
|
|
36
|
+
Team-Server-Homepage rendert nun bedienbare React-Grids, Überschriften und Buttons;
|
|
37
|
+
- Seitenimporte im Developer-Modus tragen das Sitzungs-Cache-Token; der
|
|
38
|
+
korrigierte Client-Chunk erhält einen Inhalts-Hash und der Rspack-Selbstimport
|
|
39
|
+
teilt das Entry-Point-Token, sodass keine veraltete leere Homepage geladen wird;
|
|
40
|
+
- die erzeugte Shell stellt einen begrenzten `openForm`-Kompatibilitätsadapter
|
|
41
|
+
über `openForm2` bereit, damit zwischengespeicherte alte Click-Handler
|
|
42
|
+
navigieren, statt ohne Runtime-Request still fehlzuschlagen;
|
|
43
|
+
- die offizielle React Gallery rendert nun XPath- und Microflow-Daten,
|
|
44
|
+
Item-Templates, Auswahl sowie formatierte String-/Zahlenwerte. Authentifizierte
|
|
45
|
+
Browser-QA zeigte Titel, Beschreibung, `90 day(s)` und `49.95`; eine leere
|
|
46
|
+
Teacher-Gallery blieb strukturell vorhanden;
|
|
47
|
+
- Nanoflow-Listen-/Objektquellen und Button-Aktionen werden in die echten
|
|
48
|
+
Mendix-Clientverträge und funktionsreferenzierte Instruktionsprogramme
|
|
49
|
+
kompiliert. Der auditierte Graph-Teilumfang umfasst Entscheidungen,
|
|
50
|
+
Fehlerpfade, verschachtelte Nanoflows, JavaScript-Aktionen und serverseitige
|
|
51
|
+
Microflow-Aufrufe; nicht unterstützte Clientknoten schlagen geschlossen fehl;
|
|
52
|
+
- der PostgreSQL-Workspace injiziert eine konsistente JDBC-URL und die Runtime-
|
|
53
|
+
SSL-Option; Navigationsrollen bei `CheckNothing`, Scroll-Modi, SidebarToggle
|
|
54
|
+
und Rückgabekonstanten von Microflow-Data-Sources folgen den im
|
|
55
|
+
authentifizierten 11.12.1-Client beobachteten Verträgen;
|
|
56
|
+
- echte Browserklicks bestätigten Home → Courses → Add → Save. Parametergestützte
|
|
57
|
+
DataView/TextBox-Formulare rendern und speichern Werte; Create übergibt die GUID
|
|
58
|
+
über `openForm2`, während die Commit-/Rollback-Autorisierung aus den Modulrollen
|
|
59
|
+
der Seite abgeleitet wird. PostgreSQL bestätigte die vier gespeicherten QA-Werte;
|
|
60
|
+
- Schutz vor Traversal, unsicheren Bezeichnern und Symlinks in nativen Eingaben;
|
|
61
|
+
- Vergleich normalisiert fehlende boolesche Runtime-Defaults und erhält exakte Legacy-Round-trips.
|
|
62
|
+
|
|
63
|
+
## Explizite Grenzen
|
|
64
|
+
|
|
65
|
+
1. Andere Dojo-Widgets als Data Grid 1 bleiben in `web/mxrb-legacy-pages.json`; sie werden nicht als gerendert gemeldet.
|
|
66
|
+
2. Data Grid 2 deckt den auditierten XPath/Attribut/Create-Teil ab. Gallery deckt
|
|
67
|
+
XPath/Microflow und den auditierten Nanoflow-Graph-Teil ab. Nicht unterstützte
|
|
68
|
+
Graphformen, fehlende Referenzen, unsichere Parameterabbildungen und nicht
|
|
69
|
+
übersetzte Client-Instruktionen schlagen weiterhin geschlossen fehl.
|
|
70
|
+
3. Installierte 6/7/9-Distributionen enthalten exakte Bundles, aber keinen kompatiblen Launcher. Der 11-Launcher benötigt Java 21 und kann 9 unter Java 11 nicht sicher starten. Legacy-`db up` schlägt geschlossen fehl; exakter Boot wird nur für 10.24.0.73019 und 11.12.1 behauptet.
|
|
71
|
+
4. Runtime verwendet eine lokale Trial-/Developer-Lizenz mit erwarteter Zeitlimit-Warnung.
|
|
72
|
+
5. Cloud Build/Deploy/Pipelines/Backups sind optionale externe Prüfungen, nie Abhängigkeiten des nativen Kerns.
|
|
73
|
+
|
|
74
|
+
Es gibt keinen versteckten `mx`/`mxbuild`-Fallback.
|