Se avete già esperienza di programmazione classica o di altre piattaforme no-code/low-code, molti concetti vi saranno familiari.
A differenza di altre soluzioni no-code e low-code, AppMaster è costruito con un approccio classico alla costruzione di applicazioni. L'elemento di base di AppMaster è un progetto, non un'applicazione come in altre piattaforme. I progetti possono essere composti da più applicazioni backend, web e mobili. L'architettura della soluzione è client-server (non un monolite come in Bubble o piattaforme simili).
Quando si passa da altre piattaforme no-code, bisogna tenere presente che in AppMaster si creano backend, web e mobile separatamente con strumenti diversi della piattaforma. Uno dei momenti più frustranti per questi utenti è ricordare che è necessario creare applicazioni separate e costruire la logica in tali applicazioni.
Come iniziare?
Per la maggior parte dei progetti, è necessario creare applicazioni backend e web, oppure backend e mobile o addirittura tutti i tipi di applicazioni.
IMPORTANTE. Assicuratevi di implementare la maggior parte della logica nell'applicazione di backend. Non collocate mai la logica importante nelle applicazioni web o mobili, dove non avete alcun controllo. Il frontend serve solo per la visualizzazione dei dati e la raccolta di informazioni dall'input dell'utente.
Il modo più semplice è iniziare creando un'applicazione backend.
APPLICAZIONI BACKEND
Backend Passo 1. Definire i modelli di dati in Backend Data Models Designer. Ogni modello può essere considerato come una tabella del database SQL (con relazioni). In AppMaster i modelli di dati non sono utilizzati solo per definire le tabelle primarie del database, ma anche come dichiarazione della struttura in tutto il progetto. Ad esempio, se la vostra logica utilizza il modello di dati "Utente", potete essere certi che qualsiasi struttura di quel tipo avrà lo stesso insieme di campi.
Fare clic con il pulsante destro del mouse sull'area di disegno di Data Models Designer per creare un nuovo modello e trascinare da un bordo del modello a un altro bordo del modello per creare una relazione. Fare clic sulla relazione o sul campo del modello per modificarlo.
Fare attenzione alle proprietà dei campi come Unique, Not NULL o Index: se si applicano i criteri NOT NULL o Unique al database esistente con valori vuoti o duplicati, la migrazione dello schema del DB finirà per fallire.
Backend Passo 2. Creare i processi aziendali per l'applicazione. Processo aziendale (BP) in termini di AppMaster Platform è solo un termine unico per una funzione nella programmazione classica.
Ogni BP del backend ha 2 blocchi obbligatori: Inizio e Fine. Se si desidera trasmettere dati al BP, è necessario definire le variabili nel blocco Start (funzionano come gli argomenti delle funzioni della programmazione classica) e collegarle ai blocchi all'interno del BP.
Per restituire dati dal BP, si possono aggiungere variabili al blocco End (come il return nelle funzioni della programmazione classica).
Esistono due tipi di connessioni tra i blocchi del BP:
- linee solide a freccia blu, chiamate Connessioni di flusso, che definiscono l'ordine di esecuzione dei blocchi (quale blocco deve essere eseguito successivamente)
- linee sottili di più colori, chiamate Connessioni di variabili, che definiscono i binding dei dati (da dove prendere i dati - connessione dati tra i blocchi BP). Ogni colore corrisponde a un diverso tipo di dati
Di solito, i posti nei blocchi BP per le connessioni di flusso o variabili sono chiamati connettori. Tutti i connettori sul lato sinistro del blocco sono connettori di entrata (ricevono il flusso o i dati) e sul lato destro sono connettori di uscita (passano il flusso o i dati in avanti).
Per creare una connessione, è necessario trascinare da un connettore all'altro (trascinare tra i blocchi da collegare).
Indipendentemente dal lato da cui si inizia a trascinare, si formerà una connessione.
L'editor BP controlla automaticamente i tipi di dati per le connessioni variabili e non permette di connettersi se i tipi di dati non sono identici; inoltre, impedisce eventuali loop o connessioni errate.
È possibile richiamare un BP da un altro: basta trascinare il blocco appropriato dal pannello di sinistra. Utilizziamo spesso questo approccio per ridurre al minimo la complessità della logica e riutilizzare la stessa logica più volte nel progetto.
Nelle applicazioni di backend esistono due tipi di variabili che si possono inserire nel BP per memorizzare temporaneamente i dati:
- Variabili locali - per memorizzare i dati durante il ciclo di vita del BP corrente (più efficienti, solo in memoria).
- Variabili globali - per memorizzare i dati durante il ciclo di vita dell'applicazione backend (anch'esse solo in memoria, saranno ripristinate al riavvio dell'applicazione).
Prima di poter utilizzare una variabile globale trascinandola dal pannello sinistro dell'editor BP, è necessario crearne una utilizzando una sezione della logica del backend.
Se il BP deve essere richiamato da una fonte esterna tramite API (dal web, dal cellulare, da postman/curl, da un sistema esterno), è necessario collegare il BP all'endpoint.
Backend Passo 3. Creare gli endpoint. In AppMaster utilizziamo lo stesso approccio classico delle API REST per gli endpoint. Sebbene AppMaster supporti non solo endpoint API REST, ma anche endpoint WebHooks e WSS, ci concentreremo sul primo tipo.
Quando si creano gli endpoint, bisogna attenersi allo standard REST API in termini di metodi (GET, POST, PUT, PATCH, DELETE), payload (usare JSON) e URL (niente caratteri non ASCII, niente spazi, inizio e fine con una barra).
Il processo di creazione degli endpoint è molto semplice e diretto: si seleziona il BP, si definiscono l'URL e il metodo REST e, se è necessaria l'autorizzazione per quell'endpoint, si controllano le impostazioni del middleware.
Una volta che i modelli di dati, i processi aziendali e gli endpoint sono pronti, è il momento di pubblicare: premete il pulsante Pubblica! Di solito, in meno di 30 secondi AppMaster Platform prenderà tutti i vostri blueprint (sì, in realtà, tutto ciò che avete fatto è creare blueprint per il futuro software), genererà il codice sorgente, compilerà, impacchetterà l'immagine docker e la distribuirà sul cloud di AppMaster. Una volta terminato il processo di pubblicazione, è possibile aprire la documentazione dell'API REST (OpenAPI/Swagger) e testare gli endpoint con le richieste integrate in Swagger o utilizzando strumenti di terze parti come Postman o Insomnia.
IMPORTANTE. Se si utilizza l'abbonamento Learn & Explore, il nostro demone di risparmio delle risorse arresterà il contenitore dell'applicazione dopo 30 minuti di inattività in Studio. Per eseguire di nuovo l'applicazione, fare clic sulla levetta Deploy Plan o pubblicare di nuovo.
APPLICAZIONI WEB
Quando il backend è stato pianificato e creato correttamente, è il momento di passare al frontend. Inizieremo con l'applicazione web.
WebApp Passo 1. Creare un'applicazione web se non ne esiste una nel progetto. Al momento abbiamo due tipi di progettisti di applicazioni web: quelli attuali e quelli nuovi (in beta). La differenza principale è la quantità di personalizzazione. L'attuale generazione di WebApp Designer ha capacità di personalizzazione dell'interfaccia utente molto limitate, ma è semplice e facile costruire interfacce utente standard di pannelli di amministrazione e portali per i clienti. Il nuovo (attualmente in beta) ha una personalizzazione completa dell'aspetto e del riempimento dell'interfaccia utente - un approccio flexbox con layout da SPA (Vue, React way). Entrambi i designer sono dotati di processi di business integrati, compresi i trigger e una serie di blocchi utili.
WebApp Passo 2. Iniziate a progettare l'interfaccia utente della vostra applicazione web trascinando e rilasciando gli elementi dell'interfaccia dal pannello superiore (designer attuale) o dal pannello sinistro (nuovo designer). Per alcuni elementi che hanno un'enumerazione all'interno (come tabelle ed elenchi), è necessario selezionare il modello di dati durante la fase iniziale di rilascio per adattare automaticamente l'elemento.
Nelle applicazioni Web esistono due tipi di processi aziendali: Trigger e Standard. I trigger sono disponibili per ogni elemento dell'interfaccia utente e per l'intero ambito dell'applicazione (trigger dell'app). Per accedere al trigger dell'elemento UI, selezionare l'elemento e, nella scheda BP, crearne uno. A differenza dei BP standard, i trigger hanno più blocchi di inizio: un blocco per ogni evento e nessun blocco di fine. Poiché i trigger non restituiscono mai alcun valore, non sono necessari blocchi di fine. È ancora possibile creare processi aziendali standard nelle applicazioni web, ma l'unico modo per eseguirli è richiamarli dai trigger. Questo è un buon approccio per spostare la logica usata di frequente nelle BP web standard e richiamarla solo dai trigger.
IMPORTANTE. Ricordare che le BP del backend verranno eseguite all'interno delle applicazioni del backend, mentre le BP delle applicazioni web verranno eseguite nei browser degli utenti e la riduzione al minimo del carico di lavoro del web sarà vantaggiosa per l'esperienza dell'utente.
Ci sono un paio di trigger molto importanti a livello di applicazione. Ad esempio, App onLaunch si attiva quando viene avviata un'applicazione nel browser. È il posto migliore per verificare se l'utente è autenticato e, in caso contrario, reindirizzare alla pagina giusta (se è necessaria l'autenticazione).
Non dimenticate di salvare lo schema dell'applicazione web e di pubblicare il progetto per vedere le modifiche.
APPLICAZIONI MOBILI
Quando si deve creare un'applicazione mobile, il processo è lo stesso di un'applicazione web: si creano schermate, si posizionano elementi dell'interfaccia utente, si creano trigger di elementi dell'interfaccia utente, si regola il trigger App onLaunch e si è pronti a partire. Non esiste un'anteprima web per le applicazioni mobili di AppMaster, ma è possibile installare l'applicazione mobile AppMaster Developer per Android e IOS per visualizzare l'anteprima live delle applicazioni con tutte le funzionalità legate all'hardware, come BLE, NFC e così via.
Quando avete finito di sviluppare la vostra applicazione mobile ed è pronta per essere pubblicata, AppMaster ha una speciale procedura guidata di pubblicazione disponibile dal menu contestuale nell'elenco di tutte le applicazioni mobili del progetto. Per Android, AppMaster genera i file APK e AAB che possono essere pubblicati.
SINTESI
AppMaster è un grande IDE in cui è possibile progettare le applicazioni con blueprint avanzati in Data Models Designer, Business Process Editor, Web e Mobile Designer.
DOMANDE FREQUENTI
Perché abbiamo bisogno di progetti con più applicazioni per progetto?
AppMaster utilizza un'architettura client-server e non un monolite. Ci sono molti casi in cui si possono desiderare più app per progetto, quando è necessario separare le funzionalità:
- Progetti complessi: come i taxi, dove un'applicazione per i passeggeri e una per gli autisti lavorano con lo stesso backend.
- Creare più applicazioni di backend per bilanciare il carico di lavoro e rendere le modifiche facili e meno rischiose.
Mentre è già possibile creare più applicazioni web e mobili per progetto, stiamo ancora lavorando per introdurre più applicazioni di backend per progetto.
Quali sono i vantaggi e gli svantaggi delle applicazioni generate?
I vantaggi più ovvi e evidenti sono le prestazioni nettamente superiori, la scalabilità, la possibilità di ottenere file binari da eseguire in sede e il codice sorgente per superare certificazioni e audit. Utilizziamo l'ultima versione del linguaggio di programmazione Go per generare le applicazioni di backend. Go offre molte prestazioni alle applicazioni compilate, la compilazione incrociata per diversi sistemi operativi e architetture di CPU e una semplicità generale grazie alla sua flessibilità.
Gli svantaggi più comuni sono la necessità di rigenerare e costruire nuovamente l'applicazione ogni volta che si introducono modifiche ai progetti e di solito ci vogliono circa 35-45 secondi in media per progetti di medie dimensioni. Inoltre, ci sono alcune complessità e costi aggiuntivi dal momento che dobbiamo eseguire le app nel nostro cloud: ogni app eseguita nel container docker consuma CPU e RAM (anche se inattiva) e richiede la migrazione dello schema del DB (noi la facciamo automaticamente).
Ma in generale, le applicazioni generate da codice funzionano bene come quelle create con la programmazione classica.
Quale tecnologia viene utilizzata nelle applicazioni web?
Generiamo applicazioni web utilizzando il framework Vue3 con TypeScript (TS). Le applicazioni web funzionano in una combinazione di modalità SPA e SSG. Il rendering lato server (SSR) sarà aggiunto in seguito e solo per i nuovi designer di applicazioni web.
Quale tecnologia viene utilizzata nelle applicazioni mobili?
Le nostre applicazioni mobili sono realizzate con un approccio dichiarativo backend-driven: utilizziamo una base di codice completamente nativa (la più nativa) di Swift e SwiftUI per IOS, Kotlin e Jetpack Compose per Android. Tecnicamente le applicazioni mobili caricano la configurazione e le schermate via rete su richiesta, utilizzando JSON e Protobuf per ottenere le massime prestazioni. I vantaggi di questo approccio sono molteplici: è possibile modificare le applicazioni in tempo reale senza la necessità di pubblicare versioni aggiornate su AppStore o Play Market, si può lavorare completamente offline e si ha accesso a tutte le funzionalità hardware. Nelle nostre applicazioni mobili non utilizziamo la tecnologia HTML/JS/ReactNative o PWA. Le applicazioni mobili create in AppMaster devono essere distribuite tramite AppStore, Play Market o qualsiasi altra piattaforma di distribuzione (tecnicamente, è possibile condividere file apk/aab per Android, ma questo richiede molto impegno).
Dove vengono ospitate le applicazioni per impostazione predefinita?
Abbiamo costruito AppMaster Cloud su un'infrastruttura AWS per offrire ai nostri clienti il servizio più affidabile e scalabile. Per impostazione predefinita, i clienti con qualsiasi abbonamento possono utilizzare una delle 3 regioni principali: Nord America (USA), Europa (Germania), Asia. Per i piani di hosting dedicati abbiamo a disposizione la maggior parte delle regioni AWS (oltre alle regioni principali). Se avete bisogno di un Paese specifico per ospitare la vostra applicazione, fatecelo sapere.
Come posso ottenere il bundle, il binario o il codice sorgente delle mie applicazioni?
Per ottenere i file binari o i bundle, è necessario avere almeno un abbonamento Business. Le applicazioni backend possono essere scaricate dal negozio di artefatti come file binari o estratte tramite docker pull dal nostro registro (come Docker Hub). Anche i bundle Mobile e Web possono essere scaricati dall'artifact store. È possibile scaricare i bundle delle applicazioni mobili con qualsiasi abbonamento, tranne Learn & Explore. Per ottenere il codice sorgente dell'applicazione, è necessario avere un abbonamento enterprise. Con un abbonamento enterprise, si otterrà il codice sorgente completo delle applicazioni web e di backend, ma una base di codice limitata per le applicazioni mobili, poiché utilizziamo un approccio guidato dal backend.
Qual è la differenza tra un Modello e un Modello virtuale?
Usiamo il termine Modello per indicare la struttura per la quale creeremo le tabelle in un database e precreeremo automaticamente i blocchi DB per effettuare le operazioni di base su quella tabella del database, come la ricerca, la creazione di record e così via. I modelli virtuali sono la stessa cosa, solo che non creeremo tabelle e non ci saranno blocchi DB. I modelli virtuali sono una delle caratteristiche più richieste dalla maggior parte degli sviluppatori. Il caso d'uso più frequente per i modelli virtuali è quando è necessario creare una struttura (come gli oggetti in JS o JSON) e utilizzarla per richieste esterne, elementi dell'interfaccia utente o endpoint. È curioso che i modelli definiti nelle applicazioni di backend appaiano automaticamente nelle applicazioni web e mobili come virtuali: nelle applicazioni web e mobili è necessario conoscere qualsiasi struttura di dati per potervi lavorare.
Come posso lavorare con i modelli nei processi aziendali? Come estrarre i campi, ecc.
Per ogni modello, vengono pre-generati i blocchi Make ed Expand. Make aggiungerà i campi al record del modello, Expand li estrarrà dal record del modello. Si noti che questi blocchi non modificano i dati iniziali che vengono passati all'ingresso dei blocchi.
Come posso impostare il valore delle variabili locali o globali?
Tutti i blocchi utilizzati non mutano i dati iniziali quando vengono passati all'input. L'unico blocco che muta i dati è Set Variable: collega variabile e valore e, dopo l'esecuzione del blocco, si otterrà il valore all'interno della variabile. Le variabili globali nelle applicazioni mobili e web possono essere persistenti e sopravvivono al riavvio dell'applicazione, se viene impostato il flag appropriato.
Come posso effettuare una chiamata API a un sistema esterno?
Il modo migliore per effettuare richieste a sistemi esterni è dall'applicazione di backend. In questo modo, si ottiene un maggiore controllo sui dati e sulla sicurezza. Ci sono due modi per farlo:
- L'uso del blocco HTTP Request è il modo più semplice per farlo, e si può usare in qualsiasi backend BP.
- Utilizzando External API Designer per creare prima una richiesta e poi utilizzare i blocchi creati all'interno delle BP.
Sebbene sia possibile utilizzare il blocco HTTP Request per chiamare sistemi esterni non solo nelle applicazioni backend, ma anche nel web e nei dispositivi mobili, è necessario avere un motivo per farlo: quando l'applicazione frontend vuole effettuare una chiamata al dispositivo nella rete locale o se questo è stato progettato per il sistema di terze parti.
Quali tipi di richieste e protocolli sono supportati quando si chiamano sistemi esterni?
Al momento, supportiamo le richieste API REST con payload JSON o XML, testo semplice o binario. gRPC non è ancora supportato, ma stiamo lavorando attivamente per introdurlo nei prossimi mesi con il nostro nuovissimo External API Designer.
Le applicazioni create da AppMaster supportano i WebSocket?
Sì, è possibile creare endpoint WSS nell'applicazione backend e utilizzarli per comunicare all'interno di applicazioni web o mobili. Inoltre, è possibile definire le proprie strutture di payload utilizzando i modelli durante la creazione dell'endpoint WSS. La comunicazione con sistemi esterni tramite WebSockets non è implementata.
Come posso chiamare l'endpoint di backend da un'applicazione Web o mobile?
Per ogni endpoint creato nell'applicazione di backend, la piattaforma crea un blocco di richiesta di serverper le applicazioni web e mobili. È sufficiente inserire tale blocco in un qualsiasi trigger e chiamarlo. È possibile monitorare l'esecuzione dei blocchi Server Request nella console di sviluppo del browser, scheda Richieste di rete. Nelle applicazioni mobili, è possibile utilizzare i log (da abilitare prima nelle impostazioni dell'AppMaster Developer App).
Posso creare autenticazioni e iscrizioni personalizzate?
Certo, è possibile disabilitare completamente il modulo auth integrato e creare una soluzione completamente personalizzata. Sarà necessario creare un BP separato nell'applicazione di backend che gestirà l'estrazione del token di autenticazione (di solito dall'intestazione della richiesta) e la verifica secondo le proprie regole. È possibile ottenere le intestazioni delle richieste utilizzando il blocco BP Get Request Headers. Si noti che una volta disabilitata l'autenticazione integrata, non sarà possibile utilizzare il blocco Get Current User. Inoltre, è possibile utilizzare qualsiasi ID, numero di telefono o altro identificatore al posto dell'e-mail con il modulo Auth standard.
C'è un modo per creare operazioni thread-safe per contatori affidabili e altri casi di esecuzione ordinata?
AppMaster supporta una modalità a thread singolo per l'esecuzione dei processi aziendali, quando tutte le chiamate del processo aziendale vengono eseguite in un ordine rigoroso, una alla volta. Questa modalità può comportare una penalizzazione delle prestazioni in situazioni di carico di lavoro elevato, ma nella maggior parte dei casi non provoca un degrado significativo delle prestazioni. Si noti che lo stack di chiamate (coda) di questa modalità è limitato.
2FA con SMS, e-mail o OTP?
Sì, è possibile adattare la logica di autenticazione per includere i metodi 2FA. Per utilizzare SMS o e-mail, è necessario collegare un provider esterno come Twilio. Il modo più semplice è estendere le sessioni e includere campi aggiuntivi per controllare il 2FA nella sessione. Nel terzo trimestre del 2023, introdurremo un modulo OTP basato sul tempo che funzionerà con Google e Microsoft Authenticator.
Posso utilizzare il backend generato da AppMaster con altre applicazioni web o mobili?
Sì, le applicazioni backend generate da AppMaster hanno endpoint API REST standard. Per ogni applicazione, la documentazione API REST (OpenAPI/Swagger) viene generata automaticamente e servita su un endpoint separato.
Posso usare i modelli per creare progetti o applicazioni?
Non disponiamo ancora di modelli, ma è un'opzione che rilasceremo nel prossimo futuro. I progetti AppMaster sono più complessi di WebFlow o Bubble e abbiamo bisogno di più tempo per implementarli.
Che tipo di database supporta AppMaster?
Le applicazioni backend generate da AppMaster funzionano con qualsiasi database compatibile con PostgreSQL a partire da PG12, ma consigliamo di utilizzare l'ultima versione disponibile di PostgreSQL DB (15.3 al momento di questo documento). Il supporto per MSSQL, MariaDB, MySQL e SQLite è previsto e sarà aggiunto alla fine del 2023/inizio 2024.
Come posso accedere direttamente al database per modificare i record?
AppMaster non supporta l'accesso diretto al database per le applicazioni ospitate su AppMaster Cloud. Se si utilizza un hosting on-premise, è possibile accedere al database utilizzando qualsiasi strumento visuale come PGAdmin o utilizzando lo strumento a riga di comando pgsql. In futuro, aggiungeremo una funzione per consentire ai clienti di modificare direttamente il DB.
Esiste una collaborazione in tempo reale? Possiamo lavorare in gruppo sullo stesso progetto?
Abbiamo una collaborazione in tempo reale solo nel nuovo web designer. Il nuovo web designer (beta) utilizza bozze di rete con Conflict-free Replicated Data Type Protocol (CRDT) per coprire tutti i casi d'uso e fornire la gestione dello stato (Ctrl+Z, rollback delle operazioni). In futuro introdurremo gradualmente il CRDT nell'editor BP e nel Data Models Designer. Se dovete lavorare in team, non modificate lo schema del modello di dati, lo stesso BP o la stessa applicazione Web/Mobile, poiché ciò può comportare la perdita di dati.
Quali sono le caratteristiche importanti che mancano ad AppMaster?
- Visual SQL Designer. Sono supportate la maggior parte delle operazioni di base, come la ricerca con filtri e join, l'ottenimento di un record per id, l'aggiornamento, la modifica, la cancellazione e la cancellazione morbida, ma per migliorare la flessibilità e le prestazioni stiamo lavorando a Visual SQL Designer, che sarà rilasciato nell'ottobre 2023.
- Microservizi di backend. Stiamo lavorando attivamente all'implementazione di più applicazioni di backend per progetto. Al momento, è possibile creare solo un'applicazione di backend per progetto.
- Non esiste ancora un SSR per le applicazioni web. Per le applicazioni web e i siti web più ottimizzati, l'SSR aggiunge ulteriori vantaggi per la SEO. ETA Nov-2023.
- Supporto gRPC per le richieste API esterne. Abbiamo in programma di aggiungere gRPC con payload protobuf e opzioni di compressione per ampliare le possibilità di interconnessione tra sistemi.
- Modelli di progetti, applicazioni web e mobili. Stiamo lavorando all'introduzione di modelli. Come primo passo aggiungeremo i modelli di applicazioni web nel settembre 2023. I modelli di progetti completi non hanno ancora una data di arrivo.