Geoweb Framework : Web Frontend - Riccardo Pucci - Direttore Tecnico Geoweb - Gruppo Filippetti
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
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 – 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)
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.
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
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
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
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