|
|
||
|---|---|---|
| .settings | ||
| D4S_Export_PDF | ||
| D4S_UCDs | ||
| catalogue-binding-plugin | ||
| cms-plugin-framework | ||
| cms-test-commons | ||
| concessioni-lifecycle | ||
| concessioni-model | ||
| dataminer-plugins | ||
| default-lc-managers | ||
| geoportal-client | ||
| geoportal-common | ||
| geoportal-service | ||
| images-plugin | ||
| notifications-plugins | ||
| sdi-plugins | ||
| test-data | ||
| use-cases | ||
| .gitignore | ||
| .project | ||
| ARCHITECTURE.md | ||
| CHANGELOG.md | ||
| CITATION.cff | ||
| FUNDING.md | ||
| LICENSE.md | ||
| README.md | ||
| TECH_SPECIFICATIONS.md | ||
| pom.xml | ||
README.md
gCube CMS Suite - The Geoportal Technology
gCube CMS Suite is a distributed full-stack application for publication management within gCube Hybrid e-infrastructures. It provides comprehensive document lifecycle management with built-in accessibility features, ensuring published documents are discoverable and accessible through multiple channels including REST APIs, web interfaces, and integrated search capabilities.
Overview
The gCube CMS Suite provides a comprehensive content management solution designed for research communities and data infrastructures. It combines powerful document lifecycle management with spatial data capabilities (geportal technology), offering a flexible plugin architecture that enables customization for diverse use cases.
Rationale
Publication workflows involve numerous common features alongside custom behaviors and formats. The service implements core shared logic while delegating specialized functions to installed plugins. This includes validation, data manifestation, indexing, and lifecycle management.
Lifecycle management operates as an extensible framework supporting both standard and complex ad-hoc workflows. High plugin modularity enables the composition of tailored use cases while maximizing component reusability.
The suite comes with a set of pre-built plugins and GUIs that communities can easily extend and / or reuse.
General Architecture
Components Architecture
Built with
- gCube SmartGears - The gCube SmartGears framework
- OpenJDK - The JDK used
- JAX-RS - Java™ API for RESTful Web Services
- Jersey - JAX-RS runtime
- MongoDB - Document database for JSON storage and querying
- GeoServer - Open source server for spatial data
- Maven - Dependency Management
- Enunciate - API Documentation
Key Features and Functionalities
The gCube CMS Suite offers a rich set of features and functionalities designed to support complex publication workflows and geospatial data management:
| Feature/Area | Description |
|---|---|
| 📋 Project Management (CRUD Operations) | - Create: Create new georeferenced research projects with custom metadata schemas - Read: Query and retrieve projects with advanced filtering, pagination, and projection capabilities - Update: Modify project documents with version control and lifecycle state management - Delete: Remove projects with configurable force options and relationship cleanup |
| 🔄 Publication Lifecycle Management | - Multi-phase Workflows: Support for 2-phase (Draft → Published) and 3-phase (Draft → Pending Approval → Published) lifecycles - Step-based Operations: Configurable lifecycle steps (publish, unpublish, submit-for-review, approve, reject) - Role-based Access Control: Fine-grained permissions based on user roles and project states - Automated State Transitions: Event-driven state changes with validation and notification support |
| 📂 FileSet Management | - Multi-format Support: Handle various file types (images, documents, GIS data, etc.) - Storage Integration: Seamless integration with gCube StorageHub for file archiving - Clash Resolution: Configurable options for handling file conflicts (REPLACE_EXISTING, MERGE_EXISTING, APPEND) - Access Policy Control: Granular access control for individual filesets |
| 🗄️ Use Case Descriptor (UCD) Framework | - Schema Definition: Define custom metadata schemas for different project types - Validation Rules: Automated validation based on UCD specifications - Plugin Configuration: Declarative configuration of handlers and lifecycle managers - GUI Integration: Custom user interface configurations per use case |
| 🔍 Advanced Querying & Search | - MongoDB-powered Queries: Leverage MongoDB's powerful querying capabilities - Spatial Queries: GIS-based spatial filtering and aggregation - Text Search: Full-text indexing and search capabilities - Dynamic Aggregation: Zoom-level based aggregation for map visualizations |
| 🗺️ Geospatial Features | - GIS Indexing: Automatic creation of spatial indexes (centroids) - Map Integration: Integration with GeoServer for WMS/WFS services - Spatial Relationships: Create and manage spatial relationships between projects |
| 🔌 Plugin Architecture | - Extensible Handlers: Custom handlers for validation, indexing, materialization - Event System: Comprehensive event handling (ON_CREATE, ON_UPDATE, ON_DELETE, etc.) - Notification System: Configurable notifications for lifecycle events - SDI Integration: Built-in Spatial Data Infrastructure plugins |
| 🔐 Security & Access Control | - Authentication: gCube token-based authentication - Authorization: Role-based access control with policy enforcement |
| 🌐 REST API & Integration | - RESTful Interface: Comprehensive REST API for all operations - Client Libraries: Java client libraries for easy integration - API Documentation: Interactive API documentation via Swagger/Enunciate |
| 💾 Data Management | - MongoDB Storage: Document-oriented storage for flexible schema evolution - Relationship Management: Create and manage relationships between projects - Data Export: Multiple export formats and integration options |
| 🖥️ Web Applications | - Data Entry App: Rich web interface for project creation and editing - Data Viewer App: Map-based visualization and exploration interface |
Each feature is complemented by robust functionalities, ensuring flexibility, extensibility, and ease of integration for diverse research and data management scenarios.
Lifecycle Managements
Document Lifecycle Managements in action:
Single Step (no moderation)
flowchart LR
New[New Project] -..-> DRAFT(DRAFT)
Update[Update Project] -..-> DRAFT(DRAFT)
DRAFT ==>|publish| Published(Published)
Published ==>|unpublish| DRAFT
classDef noteClass fill:#ffe4b5,stroke:none,font-style:italic,font-size:14px;
classDef box-b fill:#3D6BA6,stroke:#12407B,stroke-width:1px,color:#fff,font-size:16px;
classDef box-g fill:#3BBF9E,stroke:#03926E,stroke-width:1px,color:#fff,font-size:16px;
class New,Update noteClass
class DRAFT box-b
class Published box-g
3 Phases (content moderation)
flowchart LR
New[New Project] -..-> DRAFT(DRAFT)
Update[Update Project] -..-> DRAFT(DRAFT)
DRAFT ==>|submit-for-review| PendingApproval(Pending<br>Approval)
PendingApproval ==> |approve-submitted| Published(Published)
PendingApproval ==>|reject-draft| DRAFT
Published ==>|unpublish| DRAFT
classDef noteClass fill:#ffe4b5,stroke:none,font-style:italic,font-size:14px;
classDef box-b fill:#3D6BA6,stroke:#12407B,stroke-width:1px,color:#fff,font-size:16px;
classDef box-g fill:#3BBF9E,stroke:#03926E,stroke-width:1px,color:#fff,font-size:16px;
classDef box-o fill:#FF904E,stroke:#E15604,stroke-width:1px,color:#fff,font-size:16px;
class New,Update noteClass
class DRAFT box-b
class PendingApproval box-o
class Published box-g
Plugins
Plugins in action:
Use Cases and Applications
🏛️ Cultural Heritage - D4GNA Project
"Dataset per il Geoportale Nazionale per l'Archeologia" - D4GNA Portal
A comprehensive archaeological data management system featuring:
- Archaeological Site Management: Georeferenced archaeological projects with rich metadata
- Multimedia Integration: Support for images and documents
- Expert Review Workflows: Multi-phase approval process for archaeological data
- Public Access: Controlled access for researchers and public users
- GIS Integration: Advanced spatial analysis and visualization capabilities
D4GNA Component diagram
graph TB
subgraph Geoportal [D4GNA Components]
geoportalservice[<img src='https://gcube.wiki.gcube-system.org/images_gcube/6/63/Geoportal_logo.png'> Geoportal Service]
mongo[<img src='https://webimages.mongodb.com/_com_assets/cms/kuyjf3vea2hg34taa-horizontal_default_slate_blue.svg?auto=format%252Ccompress'> Mongo DB]
postgis[<img src='https://www.osgeo.org/wp-content/uploads/postgis-logo-1.png'> PostGIS DB]
geoserver[<img src='https://geoserver.org/img/geoserver-logo.png'> Geoserver]
note-gs-to-mongo[Geoportal Service:<br>creates/reads Profiled Documents and UCDs<br>creates/reads Plugins configured<br>on Mongo DB]
note-gs-to-geoserver[Geoportal Service:<br>creates/reads Workspaces,Stores,Layers,Styles<br>on Geoserver]
note-gs-to-geoserver2[Geoportal Service:<br>READS via GS Rest Interface<br>e.g. the GeoServerRESTReader.class reads from REST path <br>geoserver_endpoint/rest/layers/profiledconcessioni_gna:profiledconcessioni_gna_centroids.xml<br>WRITES via FeatureTypes<br>e.g. the SDIManagerWrapper.class creates the index layer via FTE]
note-gs-to-postgis[Geoportal Service:<br>creates/reads Index Layers <br>as Tables on PostGIS for Profile Document ID.<br>Add the Index Layers Store/Workspace to Geoserver]
note-to-featuretypes[A feature type is a vector based spatial resource<br> or data set that originates from a data store.<br> In some cases, such as with a shapefile,<br> a feature type has a one-to-one relationship<br> with its data store.<br> In other cases, such as PostGIS,<br> the relationship of feature type<br> to data store is many-to-one,<br> feature types corresponding to a table in the database,<br>see https://docs.geoserver.org/main/en/user/rest/api/featuretypes.html]
end
subgraph Storage [Cloud Storage]
shub[SHUB]
disk1[Storage]
end
geoportalservice -->|uses| geoserver
geoportalservice -->|stores docs| mongo
geoportalservice -->|sends data| shub
geoportalservice -->|uses| postgis
geoserver -->|uses| postgis
shub -->|stores data| disk1
note-gs-to-mongo -.-> mongo
note-gs-to-geoserver -.-> geoserver
note-gs-to-geoserver2 -.-> geoserver
note-gs-to-postgis -.-> postgis
classDef noteClass fill:#ffe4b5,stroke:#000,stroke-dasharray: 1 5,font-style:italic,font-size:12px;
classDef note2Class fill:#aaccdd,stroke:#000,stroke-dasharray: 1 5,font-style:italic,font-size:12px;
class note-gs-to-mongo,note-gs-to-geoserver,note-gs-to-geoserver2,note-gs-to-postgis noteClass
class note-to-featuretypes note2Class
D4GNA Architecture
Documentation and Resources
📚 Comprehensive Documentation
- Dedicated Wiki - Complete technical documentation powered by Sphinx
- Service Interactive API - Live API documentation powered by Enunciate
- gCube System Wiki - Integration and system-level documentation
🚀 Getting Started
- Installation: Deploy the service in a gCube infrastructure
- Configuration: Set up UCDs for your specific use case
- Integration: Use the Java client or REST API for system integration
- Web Interface: Access the web applications for user interaction
🔗 Related Projects
- gCube Framework - The underlying infrastructure platform
- StorageHub - File storage and management service
- SmartGears - Application container framework
Technical Specifications
Change log
See CHANGELOG.md.
Authors
-
(since December 2022) Fabio Sinibaldi as "Architect", "Developer" (ORCID) Computer Scientist at ISTI-CNR
-
Francesco Mangiacrapa as "Architect", "Developer" and "Maintainer" (ORCID) Computer Scientist at ISTI-CNR Infrascience Group
How to Cite this Software
Tell people how to cite this software.
- Cite an associated paper?
- Use a specific BibTeX entry for the software?
@Manual{,
title = {gCube CMS Suite - The Geoportal Technology},
author = {Francesco Mangiacrapa and Fabio Sinibaldi at ISTI-CNR Infrascience Group},
organization = {ISTI - CNR},
address = {Pisa, Italy},
year = 2025,
note = {The gCube CMS Suite is a distributed full-stack application for publication management within gCube Hybrid e-infrastructures. It provides comprehensive document lifecycle management with built-in accessibility features, ensuring published documents are discoverable and accessible through multiple channels including REST APIs, web interfaces, and integrated search capabilities.},
url = {https://code-repo.d4science.org/gCubeSystem/gcube-cms-suite}
}
- More information in CITATION.cff
License
This project is licensed under the terms specified in the LICENSE.md file
About the gCube Framework
This software is part of the gCubeFramework: an open-source software toolkit used for building and operating Hybrid Data Infrastructures enabling the dynamic deployment of Virtual Research Environments by favouring the realisation of reuse oriented policies.
The projects leading to this software have received funding from a series of European Union programmes see FUNDING.md
