• IT
betterdocs-cat-icon 1-svg

Qualcosa è andato storto?

Condividi con noi la tua opinione per migliorare la nostra documentazione.

    Getting Started

    • Introduzione Instant Developer Cloud
    • Composizione della piattaforma
    • Struttura dei progetti
    • La programmazione relazionale
    • Apprendere l’uso di Instant Developer Cloud

    Struttura di un'applicazione

    • Introduzione (applicazione e sessione)
    • Le videate
    • Classi e librerie
    • Risorse e CSS
    • I pacchetti
    • Programmazione asincrona

    Struttura del database

    • Introduzione (struttura del database)
    • Definizione degli schemi relazionali
    • Scrittura di query ed esecuzione di comandi
    • Gestione dei database nel cloud
    • Il Cloud Connector

    Document Orientation

    • Introduzione Document Orientation
    • Definire Documenti e Collection
    • Utilizzo dei documenti
    • Estensione dei documenti

    Datamap

    • Introduzione Datamap
    • Creazione di liste di documenti
    • Modifica dei documenti con videate di dettaglio
    • Datamap innestate e ricorsive

    IonicUI

    • Introduzione IonicUi
    • Le pagine IonicUI
    • Definire il contenuto delle pagine
    • Il page controller
    • Il metodo app.popup
    • Videate come elementi visuali
    • Personalizzazione di IonicUI
    • Configurazione dei ruoli e degli accessi

    Pannelli e Griglie

    • Introduzione (Pannelli e Griglie)
    • Anatomia di un pannello
    • I pannelli a runtime

    Web API e file system

    • Introduzione Web API
    • Il file system
    • Consumare Web API
    • Esporre Web API
    • Web API in formato OData
    • Utilizzare Web API Instant Developer Foundation
    • Web API in formato OpenAPI

    Sincronizzazione

    • Introduzione sistema di sincronizzazione
    • Scambio di messaggi in tempo reale
    • Document Orientation Remota
    • Sincronizzazione del database offline

    Debugging e Test

    • Introduzione Debugging e Test
    • Strumenti e tecniche di debug
    • Test automatico delle applicazioni

    Traduzioni

    • Introduzione (traduzioni)
    • Processo di traduzione
    • Funzionamento del framework di localizzazione
    • Localizzazione di numeri e date

    Integrazioni di componenti esterni

    • Introduzione (integrazioni di componenti esterni)
    • Integrazione di componenti JavaScript
    • Integrazione di librerie di back-end
    • Integrazione di un plugin Cordova

    Launcher e Pubblicazione

    • Introduzione Launcher
    • I plugin nativi
    • Test delle applicazioni nei launcher
    • Pubblicazione sugli store
    • Configurazioni per gli store
    • Fase di build e di invio
    • Gestione dell’applicazione

    Analitiche e Feedback

    • Introduzione Analytics e Feedback
    • Installazione ed uso di Analytics
    • Raccolta dei feedback degli utenti

    Server di Produzione

    • Introduzione server di produzione
    • I server di Instant Developer Cloud
    • I server My Cloud
    • I server Self Managed
    • Tabella comparativa

    Cloud Connector

    • Cos’è il Cloud Connector
    • Installazione Cloud Connector
    • Configurazione
    • Installazione come servizio
    • Esempio di utilizzo
    • Controllo remoto
    • Note

    Team Works

    • Perché non basta GitHub?
    • Team Works: concetti base
    • Organizzazione del lavoro consigliata
    • Risoluzione dei problemi relativi a Team Works
    • Domande sull’utilizzo di Team Works

    Manuale PWA

    • Cos’è una PWA?
    • Creazione di una PWA su Instant Developer Cloud
    • Life Cycle
    • Installazione PWA
    • Funzionalità
    • Plugin
    View Categories

    Introduzione Document Orientation

    Nei capitoli precedenti abbiamo visto che l’accesso ai dati del database avviene tramite query SQL che restituiscono recordset, mentre la modifica degli stessi avviene tramite l’esecuzione di comandi SQL. 

    Questa modalità è efficace soprattutto quando si devono estrarre dal database situazioni riassuntive, che richiedono la costruzione di query complesse con molti join tra tabelle. In molti altri casi, invece, l’uso di SQL e recordset porta ad una minore efficienza del ciclo di sviluppo perché non permette di operare sui dati in modalità Object Oriented. Per ovviare a questo problema si utilizza la tecnica Object Relational Mapping.

    La difficoltà accennata prima viene accentuata quando i dati su cui operare sono complessi, cioè derivano dalla composizione di dati semplici. Ad esempio, nella seguente struttura dati possiamo evidenziare tre tabelle:

    1. Orders: contiene i dati di testata degli ordini di acquisto.
    2. Order Details: contiene i dati degli articoli venduti in ogni ordine.
    3. Products: contiene l’elenco dei prodotti che è possibile vendere.
    3jqju3dXOjBX6G7o7vA5fp9oiYG8NkbcwMLdp7dJKG53XTmDASH5o70gDAtnNHJZKodL7kntkr8FEdK4Cpz88Sj RE8y16HNVMd8h1xXmLgS7dMh bsWogDRPpCVsEP Instant Developer

    Fra queste tabelle esistono anche delle relazioni. In particolare fra Orders e OrderDetails esiste una relazione che collega ogni riga di un ordine alla sua testata; essa esprime un concetto di possesso: ogni testata ordine possiede le sue righe; se una testata venisse eliminata, anche le relative righe dovrebbero subire la medesima sorte.

    Anche fra Products e OrderDetails esiste una relazione, che esprime un concetto diverso: ogni riga ha bisogno di identificare il prodotto venduto, quindi la relazione non è possessiva, ma identificativa. Se infatti una riga d’ordine venisse eliminata, il prodotto relativo rimarrebbe intatto. Se invece si volesse eliminare dal database un prodotto che è stato venduto, tale operazione dovrebbe essere impedita per preservare il legame con le righe degli ordini in cui esso è stato venduto.

    Qual è il modo più immediato per lavorare su strutture dati di questo genere? Mappare tali strutture su una gerarchia di classi con cui lavorare in modalità object oriented. Nell’esempio precedente potremmo avere tre classi:

    image4 1 Instant Developer
    1. La classe Order che gestisce un intero ordine (testata e righe).
    2. La classe Order Detail che gestisce una riga di un ordine.
    3. La classe Product che gestisce un prodotto.

    Potremmo gestire anche le relative relazioni: un’istanza di Order deve poter gestire anche le proprie righe, quindi la classe Order avrà una proprietà di tipo Collection per contenerle. Una istanza di Order Detail avrà bisogno di accedere ai dati del prodotto a cui essa si riferisce; in questo caso dovrà avere un metodo da richiamare per ottenerlo. Schematicamente potremmo avere la seguente gerarchia di classi:

    Il framework Document Orientation (DO) di Instant Developer Cloud nasce proprio per rendere possibile lavorare sui dati presenti nel database relazionale in modalità object oriented.

    Ma perché Document Orientation? Il nome deriva da un’accezione del termine documento che è propria di questo framework. La definizione del termine documento nell’ambito del framework DO è pertanto di fondamentale importanza per la comprensione del suo funzionamento.

    I documenti sono classi JavaScript in cui vengono mappate le tabelle di un database e che ne gestiscono i record. Un’istanza di queste classi è chiamata documento. I documenti possono mappare le relazioni possessive tra le tabelle del database tramite collection, e possono quindi gestire strutture multilivello. Tramite i documenti è quindi possibile rappresentare qualunque documento gestionale delle proprie applicazioni.

    Il framework DO prende in carico la gestione del caricamento e salvataggio dei dati nel database non record per record, ma dell’intera struttura multilivello. Gestisce inoltre il ciclo di vita dei documenti, facilita il collegamento con il front-end e consente la sincronizzazione dati tra dispositivi e backend cloud.

    Per queste ragioni, i documenti sono un componente fondamentale di ogni progetto Instant Developer Cloud.

    Ti è stato utile?
    Aggiornato il 15 Aprile 2024
    Definire Documenti e Collection

    Caratteristiche

    • Perché Instant Developer
    • IDE e Ambiente di Sviluppo
    • Pubblicazione Web & Mobile
    • Software Life Cycle & DevOps
    • Database, Integrazione, Sync
    • Collaboration & Workflow

    Soluzioni

    • Freelance
    • Software House
    • Company IT
    • Casi di successo
    • Applicazioni Sviluppate

    Azienda

    • Chi Siamo
    • Contatti
    • Lavora con noi

    Risorse

    • Documentazione
    • Risorse e Tutorial
    • Blog
    • Starter Kit
    • Pricing
    • Inizia Ora
    Crea un account e Inizia Gratis
    • Seguici su Twitter
    • Seguici su Facebook
    • Seguici su LinkedIn
    • Seguici su YoutTubeSeguici su YouTube
    Questo sito è protetto dalla tecnologia reCAPTCHA Enterprise e si applicano l'Informativa sulla privacy e i Termini di servizio di Google.
    Google Policy | Termini
    © Pro Gamma - p.iva, c.f. e iscr. Camera di Commercio Bologna 01985091204 - Sede legale Via D'Azeglio, 51 40123 Bologna - Italia Pro Gamma Instant Developer® è un marchio registrato.
    Privacy Policy | Cookie Policy
    • IT