

Nello sviluppo dei template è importante conoscere la struttura del framework:

- Il framework è diviso in plugin che si occupano di fornire specifiche funzionalità

- Un subset di questi plugin è rappresentato dai cosiddetti cartridge (cartucciera). Ogni cartridge contiene i template specifici per l'ambito di generazione o la tecnologia. 
  Nel momento in cui sto scrivendo questo README ci sono 3 cartridge:
  
  - <span style="color:blue">Spring-Jpa</span> (Contenente i templates specifici per la realizzazione di un Micro-Servizio con tecnologie **Springboot** + **Hibernate JPA2**)
  -  <span style="color:blue">Spring-Mongo</span> (Contenente i templates specifici per la realizzazione di un Micro-Servizio con tecnologie **Springboot** + **MongoDB**)
  - <span style="color:blue">Library</span> (Contenente templates comuni e condivisi)
  - <span style="color:blue">Angular</span> (Contenente i templates specifici per la realizzazione di una SPA con tecnologia Angular)  **<span style="color:orange">WORK IN PROGRESS </span>**
  
- Un subset di questi plugin è rappresentato dalle solution. Ogni solution rappresenta una tipologia di progetti generabile dal Wizard. Al momento sono presenti 2 solution:

  - Microservice: Per la generazione di un'applicazione a micro-servizi con la predisposizione di un component diagram e dei file necessari allo startup del progetto. 
  - EP-Mobile-Enterprise: Deprecato. Inizialmente utilizzato per le applicazioni Monolitiche ma ormai in disuso. Sarà rimosso nelle future release.

  

Risulta inoltre necessario rispettare le seguenti direttive per favorire la cooperazione e la trasferibilità, la manutenibilità ed il riuso di quanto si produce:

- Tutte le funzioni (Acceleo query / metodi Java) <u>devono</u> essere documentate come specificato di seguito:

  	/**
  	 * Controlla se esiste almeno un microservizio noSQL nel modello in input
  	 * 
  	 * @author NOME COGNOME <EMAIL>
  	 *
  	 * @param aModel Modello sul quale eseguire il controllo
  	 * @return true se esiste almeno un microservizio noSQL
  	 */

  Ogni ulteriore commento che incrementi la leggibilità è ovviamente ben accetto

- Per i template statici non è necessario inserire la documentazione mentre è importante utilizzare lo stesso **nome** del file generato per nominare il template così da renderli facilmente ricercabili: Per il template relativo alla classe Obiettivo.java mi aspetto che il template si chiami entity o entityJava. Mentre per il template relativo a ObiettivoController mi aspetto che il template sia controller o entityController o entityControllerJava. Non è necessario essere troppo verbosi se non c'è rischio di omonimia.

-  



