intent: optional uses: - a module dependency whose relations, checks and reports degrade when the owner model is absent from the application
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- java
- Área
- backend, build-system
Línea de trabajo
Start with the engine-intent uses: and cross-model section in intent-dsl-features.md, then trace how base-expenses resolves projects in expenses/expenses.intent. Map the generated relations, checks, reports and dependency packaging that the issue names. Done when the acceptance cases pass with and without projects, and the optional owner is absent from the using jar's hard dependencies.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
A uses: entry is all-or-nothing. When a model declares uses: - { model: projects }, the relation becomes a cross-model projection resolved against the owner's .model, and the AOT module jar depends on the owner's jar. So every application that ships the using module must also ship the owner module and the owner's whole transitive closure, even when the application never needs the feature the relation exists for.
There is no way to say "use this model if it is in the application, and degrade cleanly when it is not". The current engine-intent docs (master 1692135a, the uses: / cross-model section of intent-dsl-features.md) describe none.
Concrete case (BusinessIntents)
base-expenses(expenses/expenses.intent) declaresuses: - { model: projects }for one feature: billable expense lines. It uses that dependency in three places:ExpenseClaimItem.Project(cross-model manyToOne)requiredWhen Project when "billable == true"- the
ExpensesByProjectreport (dimensions[Project, billable])
- The HR application (
solution-hr: employees, vacations, payroll, expenses) does not use projects at all. Because of this one relation, it must still shipprojects, which in turn usessales-invoices,customers,customer-payments,productsanduoms. - The module closure goes from 10 modules to 16. The image's module-assembly guard enforces the full closure: the application build failed until the six jars were added (
hr 22/16).
Ask
An optional uses: entry, e.g. uses: - { model: projects, optional: true }, with defined behaviour when the owner model is absent from the application.
When the owner model is present, it behaves exactly like today.
When the owner model is absent:
- Generation and AOT packaging of the using module do not require the owner's
.modelor jar. The owner is a provided, optional dependency, not a compile/runtime one, so the application assembly guard does not demand it. - Relations to the optional model are not emitted, or are emitted inert:
- no projection entity;
- no picker;
- the FK column may still exist, so data survives moving between applications.
- Constructs that name such a relation are dropped, not failed: checks/
requiredWhenon it, report dimensions/columns, roll-ups andgeneratesfrom or to it. The generator reports them as warnings. - Generated UI hides the fields and reports that depend on the absent model.
The parser must refuse an optional uses: whose relations are required: true, or that are part of the entity's identity (unique keys, numbering per:). Such a relation cannot be absent.
Acceptance
The same base-expenses intent is used in two applications:
- in an application without
projects, it generates, packages and boots, the expense-claim flow works, and there is no Project field and no ExpensesByProject report; - in an application with
projects, it behaves as today.
The using module's jar no longer lists the optional owner as a hard dependency.
- Lenguaje dominante
- Java
- Estrellas
- 278
- Forks
- 97
- Merge medio
- 19 h 30 min
- PR fusionados (30 d)
- 242
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de eclipse-dirigible/dirigible
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
eclipse-dirigible/dirigible#7958 ·
Los mantenedores suelen responder en 1 día
-
intent: a create-from without fromStatus answers 200 on a missing or unknown source id (no 400/404)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
eclipse-dirigible/dirigible#7945 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
eclipse-dirigible/dirigible#7891 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
eclipse-dirigible/dirigible#6538 ·
Los mantenedores suelen responder en 1 día
-
Create shortcut for Camel filesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
eclipse-dirigible/dirigible#4812 ·
Los mantenedores suelen responder en 1 día
Todos los issues de eclipse-dirigible/dirigible
Issues similares
-
ChaosEngine: backup-remote doctor row passes while consumer mode hides bot memory from gitPosiblemente ocupada @MohabMohie la tomó hoy. Abiertoagentic
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
ShaftHQ/SHAFT_ENGINE#7263 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
bug/错误
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
FCL-Team/FoldCraftLauncher#1951 ·
Los mantenedores suelen responder en 4 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
quarkusio/quarkus-agent-mcp#296 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
commons-app/apps-android-commons#7072 ·
Los mantenedores suelen responder en 1 día