Francesco Mangiacrapa a97ac2fc92 | ||
---|---|---|
D4S_Export_PDF | ||
D4S_UCDs | ||
catalogue-binding-plugin | ||
ckan-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 | ||
CHANGELOG.md | ||
FUNDING.md | ||
LICENSE.md | ||
README.md | ||
pom.xml |
README.md
gCube CMS Suite
gCube CMS Suite is a distributed full stack application for publication management in a gCube Hybrid e-infrastructure. Check wiki here
Rationale :
Publication involves lots of common features as well as custom behaviour and formats. The service implements the basic common logic, delegating to installed plugin both custom and configurable functions ranging from validation, data manifestation, indexing and lifecycle management. Lifecycle management is itself an extension allowing for both common and complex ad-hoc workflows. High modularity of plugins allows for the composition of ad hoc use cases with maximized re-usability.
The suite comes with a set of pre-built plugins and GUIs that communities can easily extend and / or reuse.
Built with
- gCube SmartGears - The gCube SmartGears framework
- OpenJDK - The JDK used
- JAX-RS - Java™ API for RESTful Web Services
- Jersey - JAX-RS runtime
- Maven - Dependency Management
- Enunciate - API Documentation
General Architecture
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 Case
The D4GNA
"Dataset per il Geoportale Nazionale per l'Archeologia"
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
- Dedicated Wiki - powered by Sphynx
- Service Interactive API - powered by Enunciate
- Gcube System Wiki.
- Guide Notebooks - powered by Jupyter
Change log
See CHANGELOG.md.
Authors
-
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
License
This project is licensed under the EUPL V.1.1 License - see the LICENSE.md file for details.
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 including:
- the Sixth Framework Programme for Research and Technological Development
- DILIGENT (grant no. 004260).
- the Seventh Framework Programme for research, technological development and demonstration
- D4Science (grant no. 212488);
- D4Science-II (grant no.239019);
- ENVRI (grant no. 283465);
- iMarine(grant no. 283644);
- EUBrazilOpenBio (grant no. 288754).
- the H2020 research and innovation programme
- SoBigData (grant no. 654024);
- PARTHENOS (grant no. 654119);
- EGIEngage (grant no. 654142);
- ENVRIplus (grant no. 654182);
- BlueBRIDGE (grant no. 675680);
- PerformFish (grant no. 727610);
- AGINFRAplus (grant no. 731001);
- DESIRA (grant no. 818194);
- ARIADNEplus (grant no. 823914);
- RISIS2 (grant no. 824091);