2021-09-20 16:47:35 +02:00
gCube CMS Suite
--------------------------------------------------
2022-07-05 18:16:17 +02:00
gCube CMS Suite is a distributed full stack application for publication management in a gCube Hybrid e-infrastructure. Check wiki [here ](https://sublime-and-sphinx-guide.readthedocs.io )
2022-07-05 17:22:22 +02:00
2024-02-28 16:15:38 +01:00
[<img src="https://gcube.wiki.gcube-system.org/images_gcube/e/e4/Geo_Portale%281%29.png"> ](https://geoportal.cloud.d4science.org/geoportal-service/docs/index.html )
2022-07-05 17:22:22 +02:00
Rationale :
2024-06-28 16:54:36 +02:00
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.
2022-07-05 17:22:22 +02:00
2022-07-06 11:14:10 +02:00
The suite comes with a set of pre-built plugins and GUIs that communities can easily extend and / or reuse.
2022-07-05 17:22:22 +02:00
2024-06-28 16:54:36 +02:00
## Built with
* [gCube SmartGears ](https://gcube.wiki.gcube-system.org/gcube/SmartGears ) - The gCube SmartGears framework
* [OpenJDK ](https://openjdk.java.net/ ) - The JDK used
* [JAX-RS ](https://github.com/eclipse-ee4j/jaxrs-api ) - Java™ API for RESTful Web Services
* [Jersey ](https://jersey.github.io/ ) - JAX-RS runtime
* [Maven ](https://maven.apache.org/ ) - Dependency Management
* [Enunciate ](http://enunciate.webcohesion.com/ ) - API Documentation
2024-02-28 16:15:38 +01:00
## General Architecture
[<img src="https://gcube.wiki.gcube-system.org/images_gcube/c/ce/Geoportal_General_Architecture.jpg"> ](https://geoportal.cloud.d4science.org/geoportal-service/docs/architecture.html )
2024-06-28 16:54:36 +02:00
## Lifecycle Managements
Document Lifecycle Managements in action:
##### Single Step (no moderation)
2025-01-09 11:41:20 +01:00
```mermaid
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
```
2024-06-28 16:54:36 +02:00
##### 3 Phases (content moderation)
2025-01-09 11:41:20 +01:00
```mermaid
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
```
2024-06-28 16:54:36 +02:00
## Plugins
Plugins in action:
* [Lifecycle Manager ](/gCubeSystem/gcube-cms-suite/src/branch/master/default-lc-managers )
* [Spatial Data Infrastructure "SDI" ](/gCubeSystem/gcube-cms-suite/src/branch/master/sdi-plugins )
* [Notifications ](/gCubeSystem/gcube-cms-suite/src/branch/master/notifications-plugins )
* [Catalogue Binding ](/gCubeSystem/gcube-cms-suite/src/branch/event_manager/catalogue-binding-plugin )
2023-11-10 10:03:54 +01:00
## Use Case
2024-06-28 16:54:36 +02:00
##### The D4GNA
2023-11-10 10:03:54 +01:00
2024-07-08 12:05:30 +02:00
["Dataset per il Geoportale Nazionale per l'Archeologia" ](https://gna.d4science.org )
2024-06-28 16:54:36 +02:00
2025-01-09 11:41:20 +01:00
###### D4GNA Component diagram
```mermaid
graph TB
subgraph Geoportal [D4GNA Components]
2025-01-09 16:06:33 +01:00
geoportalservice[< img src = 'https://cdn3.iconfinder.com/data/icons/faticons/32/globe-01-48.png' style = "max-width:48px" > Geoportal Service]
2025-01-09 15:59:58 +01:00
mongo[< img src = 'https://webimages.mongodb.com/_com_assets/cms/kuyjf3vea2hg34taa-horizontal_default_slate_blue.svg?auto=format%252Ccompress' > Mongo DB]
2025-01-09 15:38:44 +01:00
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]
2025-01-09 11:41:20 +01:00
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
[![ ](https://mermaid.ink/img/pako:eNqFk1FPgzAQx79Kc08sYQtsQ7QPJs4l00SNkfni2EMHJ2scLSnFqMu-uwUqm0umPNBy9_tf_z3aLSQyRaDAVLLmGhNdKeyvULNYEPNkSlYFyVAWUmm2cbjQqATq3mI6nj1ckWuZF1Kg0OXyUFBqqViGTrKRVdpbXNcDidqgAVu0RPXOE9xXtwGnHlH1FrOfBInazJJwsceP6-RSZNJJmWYrVmJvcV9_k-nkWHWoKWSpM14eqB5NZHYb_aMz4dblodl2-rfJcl2tOk1089yuYvv1G015-eY79duQtne_YNvxo_bRJ9LvX5I72nk8wd013BNt-naCmdtate0TyMQitpUd1a5t0_N92m7SFOycNjutM-BCjipnPDVHcluTMeg15hgDNdMUX1m10THEYmdQVmkZfYoEqFYVumCOXrYG-lp7c6EqzE_FKWeZYnkXLZh4kTL_kWDKTTfv2zvQXIUGAbqFD6CBdzYYexdD3xt6gRee-y58Ah2d-YPhcBSEfhiGo_EoDHYufDVFvUGw-wYEyyGG?type=png )](https://mermaid.live/edit#pako:eNqFk1FPgzAQx79Kc08sYQtsQ7QPJs4l00SNkfni2EMHJ2scLSnFqMu-uwUqm0umPNBy9_tf_z3aLSQyRaDAVLLmGhNdKeyvULNYEPNkSlYFyVAWUmm2cbjQqATq3mI6nj1ckWuZF1Kg0OXyUFBqqViGTrKRVdpbXNcDidqgAVu0RPXOE9xXtwGnHlH1FrOfBInazJJwsceP6-RSZNJJmWYrVmJvcV9_k-nkWHWoKWSpM14eqB5NZHYb_aMz4dblodl2-rfJcl2tOk1089yuYvv1G015-eY79duQtne_YNvxo_bRJ9LvX5I72nk8wd013BNt-naCmdtate0TyMQitpUd1a5t0_N92m7SFOycNjutM-BCjipnPDVHcluTMeg15hgDNdMUX1m10THEYmdQVmkZfYoEqFYVumCOXrYG-lp7c6EqzE_FKWeZYnkXLZh4kTL_kWDKTTfv2zvQXIUGAbqFD6CBdzYYexdD3xt6gRee-y58Ah2d-YPhcBSEfhiGo_EoDHYufDVFvUGw-wYEyyGG)
2022-07-05 17:22:22 +02:00
2024-06-28 16:54:36 +02:00
2022-07-05 17:22:22 +02:00
## Documentation
2023-07-08 18:47:33 +02:00
* [Dedicated Wiki ](https://geoportal.d4science.org/geoportal-service/docs/index.html# ) - powered by [Sphynx ](https://www.sphinx-doc.org/en/master/ )
* [Service Interactive API ](https://geoportal.d4science.org/geoportal-service/api-docs/index.html ) - powered by [Enunciate ](http://enunciate.webcohesion.com/ )
2022-07-05 17:24:52 +02:00
* [Gcube System Wiki ](https://gcube.wiki.gcube-system.org/gcube/GeoPortal ).
2023-07-10 10:41:43 +02:00
* [Guide Notebooks ](use-cases ) - powered by [Jupyter ](https://jupyter.org/ )
2022-07-05 17:22:22 +02:00
2025-01-09 11:41:20 +01:00
2021-09-20 16:47:35 +02:00
## Change log
See [CHANGELOG.md ](CHANGELOG.md ).
2023-07-08 18:47:33 +02:00
## Authors
2024-06-28 16:54:36 +02:00
* **Fabio Sinibaldi** as "Architect", "Developer" ([ORCID](https://orcid.org/0000-0003-1013-6203)) Computer Scientist at ISTI-CNR
2023-07-08 18:47:33 +02:00
2024-06-28 16:54:36 +02:00
* **Francesco Mangiacrapa** as "Architect", "Developer" and "Maintainer" ([ORCID](https://orcid.org/0000-0002-6528-664X)) Computer Scientist at [ISTI-CNR Infrascience Group ](http://nemis.isti.cnr.it/groups/infrascience )
2023-07-08 18:47:33 +02:00
2021-09-20 16:47:35 +02:00
## License
This project is licensed under the EUPL V.1.1 License - see the [LICENSE.md ](LICENSE.md ) file for details.
## About the gCube Framework
This software is part of the [gCubeFramework ](https://www.gcube-system.org/ "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);
2021-09-20 16:04:40 +02:00