Skip to content

GPAIS External Portal -- Projekto analize

Technologija: Liferay Portal 7.0 CE + Spring Boot 2.0 (VVS mikroservisas) Kalba: Java 8, JSP, FreeMarker, SCSS Build: Gradle 4.2.1 (Liferay Workspace Plugin 1.2.0) DB: PostgreSQL (su PostGIS), Elasticsearch (prod/uat) Paketas: com.dts_solutions.gpais


Architektūros schema


Modulių sąrašas

Verslo logikos moduliai (API / Service / Web trijulė)

ModulisPaskirtisEsybėsRyšiai su kitais
gpais-atvrAtliekų tvarkymo registras -- tvarkytojų, darytojų, tvarkymo vietų, lydraščių, deklaracijų valdymasAtliekuTvarkytojasEntity, AtliekuTvarkymoVietaEntity, AtliekuDarytojasEntity, LydrastisEntity, TpDeklaracijaEntity, IrodantysEntity, MbaEntity + ~10 kt.→ utils-entity, utils-exchange, messages
gpais-apskaitaApskaitos ir metinių ataskaitų modulis -- žurnalai, pakuotės, gaminiai, kompensacijos, ATO fondasMetineAtaskaitaEntity, ZurnaloIrasasEntity, ApskaitosPakuoteEntity, ApskaitosGaminysEntity, AtoAtliekuTvarkytojasEntity + ~20 kt.→ atvr, gii, giiorg, utils-entity, messages
gpais-giiGaminių informacinė sistema -- produktų srautų registracija ir nutraukimasGiiRegistracijaEntity, GaminiuSrautoRegistracijaEntity, GiiRegistracijosNutraukimoPrasymasEntity→ utils-entity, utils-exchange
gpais-giiorgOrganizacijų registracija GII sistemoje, VUP (vienkartinių užstatinių pakuočių) valdymasOrganizacijos registracijos esybės, VupEntity→ gii, atvr, rtk, utils-entity, messages
gpais-apklausaApklausų/anketų sistema -- klausimynų kūrimas ir platinimas organizacijomsApklausaEntity, KlausimasEntity, AtsakymoVariantasEntity, SubjektoApklausaEntity, AtsakymasEntity→ utils-entity, messages
gpais-teikimasDokumentų teikimo darbo eiga -- įkėlimas, validacija, statusų sekimasTeikiamasDokumentasEntity, TeikiamoDokumentoFailasEntity, TeikiamoDokumentoBusenaEntity→ utils-entity
gpais-messagesVidinių pranešimų sistema (svarbūs, informaciniai, sisteminiai)ZinuteEntity, ZinuteTemplateEntity→ utils-entity
gpais-rtkRAAD tikrinimai -- inspekcijų registrasRaadTikrinimasEntity→ utils-entity
gpais-audit-eventAudito žurnalas -- fiksuoja visus esybių pakeitimus per ModelListenerAuditEventKlauso: atvr, gii, apskaita, giiorg, messages, rtk

Infrastruktūros / pagalbiniai moduliai

ModulisPaskirtis
gpais-utils-commonBazinės utility klasės, Liferay service wrapperiai, MVC command bazės
gpais-utils-entityBendros esybės: RysioDuomenysEntity (kontaktai), DokumentasEntity, DokumentoBusenaEntity, FileEntity, klasifikatoriai (50+ tipų CL101-CL172)
gpais-utils-exchange40+ integracijos adapterių su išorinėmis sistemomis (SubjektasExchange, LicencijaExchange, DokumentasExchange, GiiRegistracijaExchange...)
gpais-utils-osgiOSGi specifinės utility
gpais-utils-upgradeDB migracijos infrastruktūra
gpais-libBazinė biblioteka (GpaisReader)
gpais-taglibCustom JSP tag'ai: select2Field, datePickerSupport, jsGridExtendedFields, dokumentoKlaidos, nav-tabs ir kt. (15+ tag'ų)
gpais-reportlibAtaskaitų generavimas (XDocReport -- PDF/DOCX iš šablonų)
gpais-organizationOrganizacijų valdymas
gpais-userVartotojų valdymas
gpais-web-accessPrieigos kontrolė
gpais-prototypePrototipai / testavimas

Autentifikacija

ModulisPaskirtis
gpais-auth-form-registrationRegistracija per formą (API + Service + Web)
gpais-auth-viispVIISP (Lietuvos eID) integracija

VVS posistemė (atskiras Spring Boot mikroservisas)

ModulisPaskirtis
gpais-vvs-cacheSpring Boot 2.0 aplikacija (port 8100), atskira PostgreSQL DB (gpais_cache). REST API produktų/žurnalų importui, XSD validacijai, asinchroniniam batch apdorojimui
gpais-vvs-cache-apiCache API apibrėžimai
gpais-vvs-portletLiferay portletas (UI sluoksnis virš VVS cache) -- api/srv/web
gpais-vvs-servicesJAX-RS REST servisai: vvs-log-srv, vvs-prd-srv, vvs-tvarkzurn-srv, vvs-zrn-srv, vvs-reg-srv, auth-rsa
gpais-vvs-public-utilsVVS bendros utility

Portal extension moduliai (~20 vnt.)

Liferay portalo UI/Admin pritaikymai -- vertimai į lietuvių kalbą, layout'ų, navigacijos, rolių, vartotojų administravimo, monitoringo, prisijungimo formų kustomizacijos:

gpais-ext-configuration-admin, gpais-ext-layout (4), gpais-ext-login-web-fragment, gpais-ext-monitoring (3), gpais-ext-password-policies-admin (2), gpais-ext-portal-impl (4), gpais-ext-portal-instances, gpais-ext-portal-security, gpais-ext-portal-settings, gpais-ext-product-navigation (3), gpais-ext-roles (5), gpais-ext-server (3), gpais-ext-site (3), gpais-ext-users-admin, gpais-ext-user-groups-admin, gpais-ext-marketplace, gpais-ext-plugins-admin

Temos (WAR)

TemaPaskirtis
gpais-themePagrindinė portalo tema (FreeMarker šablonai, SCSS, AM logotipai, slider)
custom-admin-themeAdministravimo tema

Modulių priklausomybių grafas

APSKAITA yra centrinis hub -- naudoja duomenis iš ATVR, GII, GIIORG modulių ataskaitoms generuoti.


Duomenų modelis (pagrindinės esybės)

Bendros (utils-entity)

ATVR (atliekų tvarkymas)

APSKAITA (apskaita/ataskaitos)

GII (gaminių registracija)

Kiti moduliai


Integracijos taškai

Vidinė komunikacija

  • LocalServiceUtil -- statinis factory Liferay servisams kviesti tarp modulių
  • @Reference (OSGi) -- dependency injection per anotacijas
  • ModelListener -- event-driven auditas, automatiniai veiksmai esybių pakeitimuose

Išorinės integracijos (gpais-utils-exchange, 40+ adapterių)

  • SubjektasExchange, AtvrExchange, ApskaitaService
  • GiiRegistracijaExchange, LicencijaExchange
  • DokumentasExchange, GarantinisDokExchange
  • RtkExchange, UakExchange, JarService, GrService, EgaExchange
  • InternalPortalClient (HTTP + JAXB)

VVS REST API (Spring Boot, port 8100)

Autentifikacija


Frontend struktūra

Portletai (vartotojo sąsaja)

PortletasVaizdai (JSP)Aprašymas
GpaisApklausaPortlet5 JSPApklausų sąrašas, detalės, būsenų istorija
GpaisGiiAccountingPortlet60+ JSPAtaskaitos, gaminiai, pakuotės, žurnalai, ATO fondas, dokumentai (didžiausias modulis)
GpaisAtvrPortlet + 4 sub-portletai72 JSPAtliekų apskaita, tvarkymo vietos, sutartys, lydraščiai, deklaracijos
GiiOrganizacijaPortlet + 2 sub~15 JSPOrganizacijos duomenys, VUP, viešinimas
GpaisTeikimasPortlet~10 JSPDokumentų teikimas (EGA, KATR, KATS, PCB ir kt.)
GpaisMessagesPortlet~5 JSPPranešimų sąrašas ir peržiūra

JS bibliotekos

  • Select2 -- dropdown komponentai (su 40+ kalbų i18n)
  • JSGrid -- duomenų lentelės (su 13 kalbų i18n)
  • FlexboxTabs -- tab navigacija

Custom tag'ai (gpais-taglib, 15+ tag'ų)

<dts:select2Field>, <dts:datePickerSupport>, <dts:jsGridSelect2Field>, <dts:dokumentoKlaidos>, <dts:localizedEdit>, <dts:nav-tabs-top> ir kt.

Temos

  • gpais-theme: FreeMarker (portal_normal.ftl, navigation.ftl, intro sliders), AM logotipai, SCSS
  • custom-admin-theme: Admin panel FreeMarker šablonai, SCSS komponentai

Lokalizacija

  • Pirminė: Lietuvių (Language.properties) + Anglų (Language_en.properties)
  • 50+ vertimo failų portalinių komponentų lietuvintams

Aplinkos ir deploy

AplinkaKonfigūracijaElasticsearch
localconfigs/local/portal-ext.propertiesNe
devconfigs/dev/portal-ext.propertiesNe
uatconfigs/uat/portal-ext.propertiesTaip
prodconfigs/prod/portal-ext.propertiesTaip
commonconfigs/common/portal-ext.properties--

Deploy: Liferay bundle + OSGi moduliai (ne Docker). VVS Cache -- atskiras Spring Boot jar.


Statistika

MetrikaKiekis
Java failai~9 400
Moduliai (top-level)37
Sub-moduliai90+
Entity klasės~383
LocalService interfeisai~294
Persistence interfeisai~403
MVC Action/Render komandos~100+
Portletai~20
JSP vaizdai~150+
Exchange adapteriai40+
REST kontroleriai5 (VVS)
Custom JSP tag'ai15+
i18n failai50+