Definito il nostro modello User, vogliamo creare alcuni servizi su di esso. In particolare vogliamo dare la possibilità al sistema di creare nuovi utenti, eliminarli, aggiornarli e prelevarli tutti in una lista.
Per fare questo creeremo un’interfaccia UserService.java.
[codebox 1]
L’interfaccia sarà poi implementata dalla classe UserServiceImpl.java
[codebox 2]
Adesso creiamo una classe SampleAction richiamata da struts in modo da scrivere un minimo di logica di business.
Ora possiamo iniziare a costruire la nostra applicazione.
Per prima cosa implementiamo il modello. Il nostro dominio in questo caso è l’utente e sarà rappresentato dalla classe User.java. Questa classe rappresenterà il nostro utente nel sistema. Verranno quindi implementati i metodi setter/getter che modificheranno le proprietà id, username, password
User.java
[codebox 1]
A questo punto possiamo implementare gli oggetti DAO per l’accesso al DB.
Per fare questo implementiamo prima un’interfaccia generica che espone i metodi principali di accesso al DB (delete, getAll, getById,save) e poi una classe astratta che esegue un’implementazione di default della classe GenericDao. Ci preoccuperemo di implementare l’interfaccia in un secondo momento.
una volta configurato correttamente il file POM.xml possiamo iniziare la configurazione di tutti gli altri file necessari per il buon funzionamento della nostra applicazione web
Configurazione web.xml
sotto la cartella WEB-INF inserire il seguente file web.xml
Adempiere mette a disposizione degli sviluppatori alcuni tool che semplificano il processo di implementazione.
Se si vuole sviluppare una nuova feature la prima cosa da fare è modellizzare il database e creare lo strato di persistenza model all’interno del codice sorgente.
Come possiamo vedere dall’implementazione del configuratore di processo sono state create le classi model con i metodi modifiers getter e setter per la gestione dei dati. Queste classi rispecchiano il modello dati esistente sul database.
Ad esempio CP_ConfProc.java corrisponde alla tabella cp_confproc sul database, CP_ProcessFlow.java corrisponde alla tabella CP_ProcessFlow e così via.
Adempiere mette a disposizione degli sviluppatori alcuni strumenti che rendono più semplice e controllato lo sviluppo della parte model dell’applicazione. Basta quindi “costruire” il database della customizzazione (ricordarsi lo standard di implementazione delle tabelle: inserire il prefisso che ricoda il tipo di customizzazione e le colonne che devono essere obbligatoriamente presenti in ogni tabella).
Dal database è possibile “costruire” il “modello” dell’applicazione grazie ad una classe utility:/src/org/adempoiere/util/GenerateModel.java
Questa funzione permette la costruzione di tutte le classi che hanno come prefisso X_ e le interfaccie con prefisso I_ con i relativi getter e setter associati rispettivamente alla tabellaed alle colonne della customizzazione.
Le classi X_CP_ConfProc.java e I_CP_ConfProc.java sono autogenerate dal GenerateModel.
Da oggi il codice sorgente del configuratore di processo aziendale di Adempiere è disponibile nella repository ufficiale di Adempiere Business Suite sotto il branch:
L’intenzione è di condividere l’esperienza di sviluppo, di test e di usabilità della funzionalità con tutta la community di Adempiere.
Il codice sorgente del configuratore di processo è stato inserito nell’ultima versione del trunk di Adempiere secondo lo schema seguente.
struttura package configuratore di processo
Gestisci Consenso
Per fornire le migliori esperienze, utilizziamo tecnologie come i cookie per memorizzare e/o accedere alle informazioni del dispositivo. Il consenso a queste tecnologie ci permetterà di elaborare dati come il comportamento di navigazione o ID unici su questo sito. Non acconsentire o ritirare il consenso può influire negativamente su alcune caratteristiche e funzioni.
Funzionale
Sempre attivo
L'archiviazione tecnica o l'accesso sono strettamente necessari al fine legittimo di consentire l'uso di un servizio specifico esplicitamente richiesto dall'abbonato o dall'utente, o al solo scopo di effettuare la trasmissione di una comunicazione su una rete di comunicazione elettronica.
Preferenze
L'archiviazione tecnica o l'accesso sono necessari per lo scopo legittimo di memorizzare le preferenze che non sono richieste dall'abbonato o dall'utente.
Statistiche
L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici.L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici anonimi. Senza un mandato di comparizione, una conformità volontaria da parte del vostro Fornitore di Servizi Internet, o ulteriori registrazioni da parte di terzi, le informazioni memorizzate o recuperate per questo scopo da sole non possono di solito essere utilizzate per l'identificazione.
Marketing
L'archiviazione tecnica o l'accesso sono necessari per creare profili di utenti per inviare pubblicità, o per tracciare l'utente su un sito web o su diversi siti web per scopi di marketing simili.