CMP: Interfacce e componenti
copia linkDescrizione del difetto
Se si utilizzavano interfacce nei componenti si ottenevano errori di compilazione.
Il malfunzionamento era dovuto al fatto che Instant Developer definiva le interfacce ovunque fossero state utilizzate per l'implementazione e non venivano definite se venivano utilizzate come tipo di dato (es: variabili o parametri). Questo causava due problemi:
Effetti del malfunzionamento
- Se in un componente o applicazione web l'interfaccia era stata utilizzata solo come tipo di dato (e non per da una classe che la implementava) l'interfaccia non era definita.
- Se l'interfaccia era stata utilizzata per l'implementazione in più componenti veniva definita più volte causando ambiguità a run-time.
Soluzioni
Non sono disponibili workaround per le versioni precedenti.
Funzionalità interessate
L'utilizzo delle interfacce nei componenti.
Note
- Malfunzionamento relativo alle richieste di assistenza 001828-2018 e 000508-2020.
- Poiché le interfacce devono essere definite una sola volta il sistema cerca di capire dove definirle. Una volta trovato il componente (o applicazione nel caso nessun componente le utilizzi) viene definita solo lì e utilizzata come riferimento ovunque necessario. Per esempio se una applicazione APP utilizza il componente COMP1 ed entrambi (app e componente) utilizzano l'interfaccia (per implementazione e/o come tipo di dato) il sistema la definirà solo nel componente e la utilizzerà sia nel componente che nell'applicazione. In altre parole Instant Developer cerca di definire l'interfaccia "più in alto nella gerarchia possibile" (tra gli oggetti, componenti e/o applicazione, che ne hanno necessità).
- Se l'algoritmo descritto sopra non riesce a fare in modo che l'interfaccia venga definita solo una volta viene generato il messaggio di errore 2303 - L'interfaccia [NOME] deve essere definita solo una volta ma è stata utilizzata in troppi componenti. Tale messaggio avviene, per esempio, in questo caso: applicazione APP che usa due componenti COMP1 e COMP2 e tutti utilizzano l'interfaccia. Dato che COMP1 e COMP2 sono allo stesso livello il sistema non è in grado di decidere se definirla in COMP1 e usarla da APP e COMP2 o definirla in COMP2 e usarla da APP e COMP1. In quel caso occorre ristrutturare la gerarchia dei componenti e capire meglio dove "radunare" gli oggetti che necessitano dell'interfaccia, come sarebbe necessario fare utilizzando ambienti di sviluppo tradizionali. Per sapere dove è stata utilizzata un'interfaccia è possibile utilizzare il comando "Trova dove usata".
- In applicazioni offline le interfacce non sono supportate pertanto Instant Developer non definisce mai le interfacce.
Ultima modifica: 23/03/2021 / Validità: da 20.0.7800