Geoweb Framework : Web Frontend - Riccardo Pucci - Direttore Tecnico Geoweb - Gruppo Filippetti

Pagina creata da Pietro Fiori
 
CONTINUA A LEGGERE
Geoweb Framework : Web Frontend - Riccardo Pucci - Direttore Tecnico Geoweb - Gruppo Filippetti
Geoweb Framework : Web Frontend
Riccardo Pucci – Direttore Tecnico Geoweb
Geoweb Framework : Web Frontend - Riccardo Pucci - Direttore Tecnico Geoweb - Gruppo Filippetti
Geoweb Framework – Web Frontend

Geoweb è un framework per lo sviluppo di Web Application la cui peculiarità è quella di
semplificare la realizzazione di applicazioni fanno uso di informazioni di natura grafico/tecnica
come:

   • Dati di natura geografica (GIS)
   • Disegni CAD (Planimetrie, P&I, ecc..)
   • Modelli 3D (BIM, Nuvole di punti, ecc..)
Geoweb Framework : Web Frontend - Riccardo Pucci - Direttore Tecnico Geoweb - Gruppo Filippetti
Geoweb Framework – Features

Geoweb non è un semplice visualizzatore ma è una Piattaforma progettata per la realizzazione
di applicazioni che supportino i Processi di Business con cui le organizzazioni gestiscono le
«cose» (Edifici, Infrastrutture, Apparati, Asset di varia natura).
Il framework è dotato di funzionalità avanzate come:

 •   Generazione dinamica delle Form (Form Builder)
 •   Classificazione degli oggetti lato utente (realizzazione CMDB)
 •   Workflow Engine, per sviluppare processi.
 •   Integrazione con i documentali via CMIS (Alfresco, Sharepoint, ecc)
 •   App mobile per (check list, documenti, ordini di lavoro)
Geoweb Framework : Web Frontend - Riccardo Pucci - Direttore Tecnico Geoweb - Gruppo Filippetti
Background
Geoweb Framework : Web Frontend - Riccardo Pucci - Direttore Tecnico Geoweb - Gruppo Filippetti
Why a Framework?

Come nasce l’idea del framework                 Come nasce l’idea del framework

 • Realizzare applicazioni che permettono di    • Realizzare applicazioni che permettono di
   effettuare operazioni CRUD su tabelle di        effettuare operazioni CRUD su tabelle di
   RDBMS                                          RDBMS
 • Definire uno standard funzionale per tali    • Definire uno standard funzionale per tali
   operazioni.                                    operazioni.
 • Creare una libreria di componenti software   • Creare una libreria di componenti software
   pronti e testate per realizzare web            pronti e testate per realizzare web
   application codeless.                          application codeless.
Geoweb Framework : Web Frontend - Riccardo Pucci - Direttore Tecnico Geoweb - Gruppo Filippetti
History in brief

                   Mantenendo costante la filosofia di base negli
                   anni Geoweb è stato sviluppato e rinnovato per
                   aggiungere funzionalità e adottare gli standard e
                   le innovazioni che l’evoluzione delle tecnologia ha
                   reso disponibili.

                   Attualmente Geoweb è al quarto refactoring, una
                   riscrittura completa che ha permesso di
                   consolidare le esperienze delle edizioni
                   precedenti e introdurre numerose nuove features
Geoweb Framework : Web Frontend - Riccardo Pucci - Direttore Tecnico Geoweb - Gruppo Filippetti
Architecture
Geoweb Framework : Web Frontend - Riccardo Pucci - Direttore Tecnico Geoweb - Gruppo Filippetti
Concepts
                                                                       Pozze%o___
Metadata                                                               Larghezza
                                                                       Altezza
Costituiscono le informazioni di configurazione che permettono al      Profondità
framework di erogare l’applicazione all’utente finale.                 Materiale

Se ad esempio dobbiamo gestire le entità Pozzeto e Conduttura
occorre “informare” il framework circa:

                                                                           Condu%ura_
• La tabella fisica su cui salvare li dati
                                                                           Lunghezza
• L’elenco dei campi                                                       Tipo
• Per ciascun campo:                                                       Materiale
       • Il tipo (Stringa, Intero, Reale, Geometria, ecc..)                Nodo Iniziale
       • Il widget da utilizzare nelle form (EditBox, ComboBox, ecc)       Nodi Finale
• I campi su cui effettuare le ricerche
Geoweb Framework : Web Frontend - Riccardo Pucci - Direttore Tecnico Geoweb - Gruppo Filippetti
Architecture Summary

                       Geoweb è sviluppato in J2E.
                       Gira su qualsiasi Servlet container che
                       supporti le specifiche Servlet 3.0. E’ testato
                       su Tomcat e WebLogic

                       Sono supportati come RDBMS PostgreSQL,
                       MSSQL e Oracle. Opzionalmente Geoweb
                       può utilizzare un DMS per memorizzare i
                       documenti via CMIS (testati Alfresco e
                       SharePoint), e MongoDB (per i dati non
                       strutturati dei modelli BIM).

                       Per la renderizzazione delle mappe e delle
                       planimetrie CAD, viene utilizzato il motore
                       cartografico MapGuide Open Source
Geoweb Framework : Web Frontend - Riccardo Pucci - Direttore Tecnico Geoweb - Gruppo Filippetti
Architecture Detail

M                          Persistence (MyBatis)
                                                                                                  Nel dettaglio Geoweb viene
                                                                                                  assemblato in un singolo WAR.
                                                                                                  Internamente L’implementazione
                                                                                                  segue il classico pattern MVC con
                                                                                                  layer di persistenza basato su

                                              (OpenCMIS)
                                               Documents

                                                                                     Spring IoC
      Metadata

                                                           Plugin ..n

                                                                        Plugin ..n
                             Workflow
                             (Activity)
                 Service
                                                                                                  MyBatis, layer di presentazione
       Service

                  Data                                                                            basato su JSP, il tutto tenuto insieme
C                                                                                                 da Spring.

                                                                                                  L’applicazione è securizzata da
                                                                                                  Spring Security che prermette a
                                                                                                  Geoweb di utilizzare I più svariati
                 WebClient                                 RestAPI                                sistemi di autenticazione

V                                         Sping Security
                                                                                                  Lato browser la User Interface utilizza
                                                                                                  il framework Dojo.
Open Source Tecnologies
Geoweb integra le decine di librerie open source, rendendo disponibile allo sviluppatore le funzionalità evolute
che implementano.
•   spring Java framework for enterprise applications                  •   activity workflow engine
•   myBatis Java persistence framework                                 •   super-csv fast read/write csv
•   ehcache: caching database                                          •   axis Web Services / SOAP / WSDL engine
•   mongo library for MongoDB                                          •   jsoup java html parser
•   jongo Mongo query language in Java                                 •   cron scheduler (human readable cron parser)
•   mapguide web-based platform for web mapping applications and       •   open-cmis for ECM (Enterprise Content Management)
    geospatial web services                                                integration
•   jts object model for Euclidean planar linear geometry (geometric   •   Jackson standard JSON library for Java
    functions)                                                         •   gson GeoJSON support
•   gt tools for geospatial data (GeoTools)                            •   xStream serialize objects to XML
•   jasperreport reporting engine                                      •   mpxj manipulate project information (GANTT)
•   poi manipulating MS Excel file                                     •   OpenLayers Javascript mapping library
•   barbecue, zxing read/write barcodes/ QR Code
•   groovy integrates Groovy (dynamic language for the JVM)
                                                                       • Dojo Toolkit UI Javascript Framework
Developing
Levels
Lo sviluppo su Geoweb può essere affrontato a vari livelli secondo la complessità dell’applicazione che si
intende realizzare. Sono individuati 3 livelli di profondità che chiameromo Basic, Advanced e Developer.

                                Livello                                 Learn                Master

 Basic: Applicazioni CRUD anche su base grafica (GIS, Planimetrie)
                                                                     1 - 2 Settimane         1 - 2 Mesi
 e relativa reportistica JasperReports

 Advanced: Applicazioni Gestionali Complesse, scripting in
 javascript (clientside), groovy (serverside) e realizzazione di       1 - 2 Mesi            4 - 6 Mesi
 workflow Activiti

 Developer: Qualsiasi Applicazione. Sviluppo di Plugin in java.        3 - 6 Mesi            1 - 2 Anni
Levels
Lo sviluppo su Geoweb può essere affrontato a vari livelli secondo la complessità dell’applicazione che si
intende realizzare. Sono individuati 3 livelli di profondità che chiameromo Basic, Advanced e Developer.

                             Livello                                       Learn                 Master

Basic: Applicazioni CRUD anche su base grafica (GIS,
Planimetrie) e relativa reportistica JasperReports                     1-2 Settimane            1-2 Mesi

Advanced: Applicazioni Gestionali Complesse, scripting in
javascript (clientside), groovy (serverside) e realizzazione di           1-2 Mesi              4-6 Mesi
workflow Activiti

Developer: Qualsiasi Applicazione. Sviluppo di Plugin in java.            3-6 Mesi              1-2 Anni
Basic - Skills

             Skills d’ingresso

• SQL (Creare Tabelle, Viste, effettuare query)
• XML (modiicae un document xml)

              Skills di lavoro

• Geoweb Admin
• Mapguide Maestro
• iReport (Jasperstudio)
Basic – GeoWeb Admin
il tool Geoweb Admin è il punto di partenze per per creare nuove applicazioni in geoweb.
Le funzionalità messe a disposizione sono organizzate all’interno di menù omogenei di I° livello:

• Gestione Progetti Ogni progetto rappresenta un’applicazione
    all’interno di geoweb destinata ad un gruppo di utenti
•   Gestione Temi e Classi Ogni Classe in Geoweb rappresenta una
    tabella nel DB. Più classi che costituiscono un dataset omogeneo
    vengono raggruppate in un tema
•   Gestione Ambiti Gli ambiti definiscono parzializzazioni orizzontali
    dei dati di una classe
•   Gestione Mappe Vengono definite l’organizzazione delle mappe e
    delle scene 3D
•   Gestione Gruppi e Utenti Permette di definire i gruppi e gestisce il
    repositori interno degli utenti
•   Importa ed Esporta
Basic – GeoWeb Admin

             Demo
Basic – Widget
ACTIVE GROUP                                                                                                POINT
WIDGET             popola nel dettaglio il gruppo utente
                                                                                                            POLYGON
ACTIVE USER WIDGET popola nel dettaglio l’id utente
ATTACHMENTS                                                                                                 POLYLINE
CHECKBOX                                                                                                    POSITION_WIDGET
CHILDLIST                                                                                                   POSITION2_WIDGET
CLASSIFICATION                                                                                              RELATION_WIDGET             Popola il valore d'ambito
CMIS DOCUMENT                                                                                               SCOPE VALUE WIDGET
WIDGET
                                                                                                            TEXTAREA                    Gestisce valori di tipo stringa con tutti i supporti all'immissione guidata (regex, etc..)
COLORPICKER
                                                                                                            TEXBOX                      Permette di inserire un orario (salvandole su un campo di tipo data sul db)
COMBOBOX
DATE                                                                                                        TIME
DBCOMBOBOX                                                                                                  VARIABLEATTRIBUTES
DBIMAGECOMBOBOX                                                                                                                         Permette di vedere una lista di oggetti, non omogenei per classe, collegati all'evento. Al click
DBSUGGESTBOX                                                                                                                            viene aperto il dettaglio dell'oggetto
DBWINDOWLIST                                                                                                EVENT_OBJECT_LIST           Rendicontazione delle attività e degli oggetti per ordini di lavoro
DOCUMENT           Simile alla dbComboBox, ma semplificato
DOMAIN                                                                                                      FINAL_BALANCE_JOBS_WIDGET   Mostra un lista di coppie campo-valore destruttura (a partire da una stringa xml nel DB)
                   Simile alla DbWindowList, ma basta specificare solo la classe da usare. Se la
                   classe esterna è di tipo geometrico è possibile selezionare il record anche in mappa                                 Permette di creare un xml. Contiene una lista di oggetti scelti da un'iterfaccia dedicata per le
                   clickando sulla geometria                                                                LABEL_VALUES_XML_WIDGET     tipologie conosciute: site, building
EXTERNALLINK
EXTERNALTABLE                                                                                                                           Permette di creare un xml. Contiene una lista di oggetti scelti da un'iterfaccia dedicata per le
                   Permette di gestire una galleria di immagini (recuperandole da filesystem o cmis),       SELECTION_LIST_WIDGET       tipologie conosciute: site, building
                   usando path dinamiche legate al valore di altri campi, regex sul nome, ne permette       SELECTION_LIST2_WIDGET
                   il download singolo/multiplo (zip), upload, cancellazione. Funzione animazione play/
IMAGE              stop
                                                                                                            threeDZoomWidget                                                   zoom in modello bim
IMAGE PATH GALLERY come ACTIVE USER WIDGET, ma popola solo l'utente in inserimento
INSERT USER WIDGET
LABEL
LINKLIST                                                                                                    ACTION_WORKFLOW_WIDGET
LINKLISTNAM        Widget generico base di tutti i widget
                   Gestisce valori di tipo numerico con tutti i supporti all'immissione guidata (pattern,
NORMAL             regex, etc..)                                                                            REAL_TIME_SENSOR_WIDGET                                            Sensore Tempo reale
NUMBERBOX
                                                                                                            TIME_SERIES_SENSOR_WIDGET                                          Sensore Serie Storica
Basic – Menu
SECONDO LIVELLO
            Identificativo (Codice)                                                                      Alias
integrationMenu                       menu gerarchico per temi e classi
layoutSwitchMenu                      menu gerarchico per modello dati site-building-plan (con scenari e layout su ogni livelli)
leafItemContainer                     contenitore di elementi menu di terzo livello leafItem
leafItemGHFMCMenu
TERZO LIVELLO
         Identificativo (Codice)                                                                         Alias

leafItemClassificationMenu            Permette di visualizzare un menu gerarchico che parzializza i record di una classe geoweb secondo criteri di filtro impostabili.
                                      Unione funzionalità Menu AEC-Explorer e Menu GeoManager. Navigazione planimetrie secondo nuovo modello dati (piu mappe per
leafItemHieralchicalFilterMenu        planimetria). Navigazione HasBuilt.
leafItemLayoutChange                  Lista parzializzata di una classe, dove sull'elemento viene aperta la lista di record prefiltrata
leafItemListFilter                    apre scheda gwRelationSetting
leafItemRelationSettingMenu           apre scheda lista
LeafItem: gwClassList                 apre scheda report
LeafItem: gwReportsSheet              apre scheda report html
LeafItem: gwHtmlReport                apre scheda lista prefiltrata
LeafItem: gwPrefilteredList
LeafItem: gwMap                       apre scheda mappa/planimetria
LeafItem: gwClassDetail               apre scheda dettaglio ( e non come 'floatingPane', dialog non modale)
LeafItem: gwIndicatorsSheet           apre scheda con cruscotto chart
LeafItem: gwAction                    lancia azione
LeafItem: gwCalendar                  apre scheda calendario
LeafItem: gwGantt                     apre scheda gantt per il supporto alla gestione dei progetti
LeafItem: gwTimeLine                  apre scheda timeline, per la programmazione delle attività e l'assegnazione alle risorse disponibili
LeafItem: gwPhoto360                  apre scheda photo 360
LeafItem: gwClassProcesses            apre scheda monitoraggio processo
LeafItem: gwRunningProcess            apre scheda lista Processi in corso
LeafItem: gwArchivedProcess           apre scheda lista Processi terminati
LeafItem: gwSuspendedProcess          apre scheda lista Processi sospesi
LeafItem: gwTaskList                  apre scheda lista Task utente
LeafItem: gwTaskDetail                apre dettaglio Task
Basic – Tabs
                     Scheda contente la lista di tutti i record di una data classe, con possibilità di filtrare e poter, a patto di avere i permessi, aggiungere,
gwClassList          modificare e cancellare.
gwPrefilteredList    Scheda contente la lista dei record filtrati di una data classe
gwReportsSheet       Scheda per la gestione e visualizzazione delle report.
gwHtmlReport         Scheda contente una report html
gwMap                Scheda contenete una mappa o planimetria
gwClassDetail        Form di dettaglio di un singolo record di una classe
gwIndicatorsSheet    Scheda con cruscotto grafici configurabili
gwRelationSetting    Interfaccia di utente configuratore per le relazioni del classificatore
                     Scheda che permettere di visualizzare su un apposito componente calendar un insieme di eventi, tematizzati per tipologia di
                     calendario. All interno è anche disponibile una visualizzazione a lista di eventi. Al click su un singolo evento viene aperta la scheda di
gwCalendar           dettaglio dell'evento
gwGantt              Scheda gantt: strumento di supporto alla gestione dei progetti
gwTimeLine           Scheda che permettere di gestire la programmazione delle attività e l'assegnazione alle risorse disponibili
gwPhoto360
Modello IFC
Scheda DWG
gwPointCloud
                     Scheda per il monitoraggio di un singolo processo. Sono visualizzabili e gestibili i task dell utente corrente e di tutti, cosi come tutti i
gwClassProcesses     processi in corso e quelli terminati
gwRunningProcess
gwArchivedProcess
gwSuspendedProcess
gwTaskList
gwTaskDetail
Advanced - Skills

           Skills d’ingresso

• Skill Base
• Javascript (livello base)
• Groovy o Java (conoscenza di base)

            Skills di lavoro

• Strumenti Base
• Eclipse Activiti plugin
Advanced – Extention Point

Al livello Advanced è possibile effettuare interventi per customizzare il comportamento dell’applicazione
utilizzando lo scripting e i workflow.

 Extension Points:

 • Trigger Analogamente ai Database Trigger, vengono eseguiti script in fase di salvataggio dei dai, in corrispondenza degli eventi beforeInsert,
   afterInsert, beforeUpdate, afterUpdate, beforeDelete, afterDelete. Allo script vengono passati i dati relativi al record oggetto della
   transazione.
 • Action Sono associate alla classe ed eseguite volontariamente dall’utente, dalla maschera di dettaglio o dalla lista. L’implementazione è in
   javascript, normalmente vengono recuperati dati relativi al record corrente o ai record selezionati e quindi viene effettuata una chiamata ajax
   che esegue un dato script groovy lato server
 • Workflow Associando una o più process definition ad una classe, l’interazione di tipo CRUD tra utente e applicazione per i dati di una
   determinata classe, (mediato dal sistema di permission di Geoweb), viene sostituita da un’interazione mediata dal motore di workflow.
   L’utente utilizza le form della classe per completare gli user task che vengono gli vengono assegnati, mentre i service task vengono
   completati con l’esecuzione di script groovy
Advanced – Groovy

Al livello Advanced è possibile effettuare interventi per customizzare il comportamento dell’applicazione
utilizzando lo scripting e i workflow.

 Extension Points:

 • Trigger Analogamente ai Database Trigger, vengono eseguiti script in fase di salvataggio dei dai, in corrispondenza degli eventi beforeInsert,
   afterInsert, beforeUpdate, afterUpdate, beforeDelete, afterDelete. Allo script vengono passati i dati relativi al record oggetto della
   transazione.
 • Action Sono associate alla classe ed eseguite volontariamente dall’utente, dalla maschera di dettaglio o dalla lista. L’implementazione è in
   javascript, normalmente vengono recuperati dati relativi al record corrente o ai record selezionati e quindi viene effettuata una chiamata ajax
   che esegue un dato script groovy lato server
 • Workflow Associando una o più process definition ad una classe, l’interazione di tipo CRUD tra utente e applicazione per i dati di una
   determinata classe, (mediato dal sistema di permission di Geoweb), viene sostituita da un’interazione mediata dal motore di workflow.
   L’utente utilizza le form della classe per completare gli user task che vengono gli vengono assegnati, mentre i service task vengono
   completati con l’esecuzione di script groovy
Plugin

           Skills d’ingresso

•   Java
•   Html/Javascript
•   Spring
•   Dojo toolkit

            Skills di lavoro

• Eclipse IDE
Plugin – Extention Point

Al livello Advanced è possibile effettuare interventi per customizzare il comportamento dell’applicazione
utilizzando lo scripting e i workflow.

 Extension Points:

 • Trigger Analogamente ai Database Trigger, vengono eseguiti script in fase di salvataggio dei dai, in corrispondenza degli eventi beforeInsert,
   afterInsert, beforeUpdate, afterUpdate, beforeDelete, afterDelete. Allo script vengono passati i dati relativi al record oggetto della
   transazione.
 • Action Sono associate alla classe ed eseguite volontariamente dall’utente, dalla maschera di dettaglio o dalla lista. L’implementazione è in
   javascript, normalmente vengono recuperati dati relativi al record corrente o ai record selezionati e quindi viene effettuata una chiamata ajax
   che esegue un dato script groovy lato server
 • Workflow Associando una o più process definition ad una classe, l’interazione di tipo CRUD tra utente e applicazione per i dati di una
   determinata classe, (mediato dal sistema di permission di Geoweb), viene sostituita da un’interazione mediata dal motore di workflow.
   L’utente utilizza le form della classe per completare gli user task che vengono gli vengono assegnati, mentre i service task vengono
   completati con l’esecuzione di script groovy
Roadmap
Puoi anche leggere