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ė)
| Modulis | Paskirtis | Esybės | Ryšiai su kitais |
|---|---|---|---|
| gpais-atvr | Atliekų tvarkymo registras -- tvarkytojų, darytojų, tvarkymo vietų, lydraščių, deklaracijų valdymas | AtliekuTvarkytojasEntity, AtliekuTvarkymoVietaEntity, AtliekuDarytojasEntity, LydrastisEntity, TpDeklaracijaEntity, IrodantysEntity, MbaEntity + ~10 kt. | → utils-entity, utils-exchange, messages |
| gpais-apskaita | Apskaitos ir metinių ataskaitų modulis -- žurnalai, pakuotės, gaminiai, kompensacijos, ATO fondas | MetineAtaskaitaEntity, ZurnaloIrasasEntity, ApskaitosPakuoteEntity, ApskaitosGaminysEntity, AtoAtliekuTvarkytojasEntity + ~20 kt. | → atvr, gii, giiorg, utils-entity, messages |
| gpais-gii | Gaminių informacinė sistema -- produktų srautų registracija ir nutraukimas | GiiRegistracijaEntity, GaminiuSrautoRegistracijaEntity, GiiRegistracijosNutraukimoPrasymasEntity | → utils-entity, utils-exchange |
| gpais-giiorg | Organizacijų registracija GII sistemoje, VUP (vienkartinių užstatinių pakuočių) valdymas | Organizacijos registracijos esybės, VupEntity | → gii, atvr, rtk, utils-entity, messages |
| gpais-apklausa | Apklausų/anketų sistema -- klausimynų kūrimas ir platinimas organizacijoms | ApklausaEntity, KlausimasEntity, AtsakymoVariantasEntity, SubjektoApklausaEntity, AtsakymasEntity | → utils-entity, messages |
| gpais-teikimas | Dokumentų teikimo darbo eiga -- įkėlimas, validacija, statusų sekimas | TeikiamasDokumentasEntity, TeikiamoDokumentoFailasEntity, TeikiamoDokumentoBusenaEntity | → utils-entity |
| gpais-messages | Vidinių pranešimų sistema (svarbūs, informaciniai, sisteminiai) | ZinuteEntity, ZinuteTemplateEntity | → utils-entity |
| gpais-rtk | RAAD tikrinimai -- inspekcijų registras | RaadTikrinimasEntity | → utils-entity |
| gpais-audit-event | Audito žurnalas -- fiksuoja visus esybių pakeitimus per ModelListener | AuditEvent | Klauso: atvr, gii, apskaita, giiorg, messages, rtk |
Infrastruktūros / pagalbiniai moduliai
| Modulis | Paskirtis |
|---|---|
| gpais-utils-common | Bazinės utility klasės, Liferay service wrapperiai, MVC command bazės |
| gpais-utils-entity | Bendros esybės: RysioDuomenysEntity (kontaktai), DokumentasEntity, DokumentoBusenaEntity, FileEntity, klasifikatoriai (50+ tipų CL101-CL172) |
| gpais-utils-exchange | 40+ integracijos adapterių su išorinėmis sistemomis (SubjektasExchange, LicencijaExchange, DokumentasExchange, GiiRegistracijaExchange...) |
| gpais-utils-osgi | OSGi specifinės utility |
| gpais-utils-upgrade | DB migracijos infrastruktūra |
| gpais-lib | Bazinė biblioteka (GpaisReader) |
| gpais-taglib | Custom JSP tag'ai: select2Field, datePickerSupport, jsGridExtendedFields, dokumentoKlaidos, nav-tabs ir kt. (15+ tag'ų) |
| gpais-reportlib | Ataskaitų generavimas (XDocReport -- PDF/DOCX iš šablonų) |
| gpais-organization | Organizacijų valdymas |
| gpais-user | Vartotojų valdymas |
| gpais-web-access | Prieigos kontrolė |
| gpais-prototype | Prototipai / testavimas |
Autentifikacija
| Modulis | Paskirtis |
|---|---|
| gpais-auth-form-registration | Registracija per formą (API + Service + Web) |
| gpais-auth-viisp | VIISP (Lietuvos eID) integracija |
VVS posistemė (atskiras Spring Boot mikroservisas)
| Modulis | Paskirtis |
|---|---|
| gpais-vvs-cache | Spring Boot 2.0 aplikacija (port 8100), atskira PostgreSQL DB (gpais_cache). REST API produktų/žurnalų importui, XSD validacijai, asinchroniniam batch apdorojimui |
| gpais-vvs-cache-api | Cache API apibrėžimai |
| gpais-vvs-portlet | Liferay portletas (UI sluoksnis virš VVS cache) -- api/srv/web |
| gpais-vvs-services | JAX-RS REST servisai: vvs-log-srv, vvs-prd-srv, vvs-tvarkzurn-srv, vvs-zrn-srv, vvs-reg-srv, auth-rsa |
| gpais-vvs-public-utils | VVS 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)
| Tema | Paskirtis |
|---|---|
| gpais-theme | Pagrindinė portalo tema (FreeMarker šablonai, SCSS, AM logotipai, slider) |
| custom-admin-theme | Administravimo 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)
| Portletas | Vaizdai (JSP) | Aprašymas |
|---|---|---|
| GpaisApklausaPortlet | 5 JSP | Apklausų sąrašas, detalės, būsenų istorija |
| GpaisGiiAccountingPortlet | 60+ JSP | Ataskaitos, gaminiai, pakuotės, žurnalai, ATO fondas, dokumentai (didžiausias modulis) |
| GpaisAtvrPortlet + 4 sub-portletai | 72 JSP | Atliekų apskaita, tvarkymo vietos, sutartys, lydraščiai, deklaracijos |
| GiiOrganizacijaPortlet + 2 sub | ~15 JSP | Organizacijos duomenys, VUP, viešinimas |
| GpaisTeikimasPortlet | ~10 JSP | Dokumentų teikimas (EGA, KATR, KATS, PCB ir kt.) |
| GpaisMessagesPortlet | ~5 JSP | Praneš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
| Aplinka | Konfigūracija | Elasticsearch |
|---|---|---|
| local | configs/local/portal-ext.properties | Ne |
| dev | configs/dev/portal-ext.properties | Ne |
| uat | configs/uat/portal-ext.properties | Taip |
| prod | configs/prod/portal-ext.properties | Taip |
| common | configs/common/portal-ext.properties | -- |
Deploy: Liferay bundle + OSGi moduliai (ne Docker). VVS Cache -- atskiras Spring Boot jar.
Statistika
| Metrika | Kiekis |
|---|---|
| Java failai | ~9 400 |
| Moduliai (top-level) | 37 |
| Sub-moduliai | 90+ |
| Entity klasės | ~383 |
| LocalService interfeisai | ~294 |
| Persistence interfeisai | ~403 |
| MVC Action/Render komandos | ~100+ |
| Portletai | ~20 |
| JSP vaizdai | ~150+ |
| Exchange adapteriai | 40+ |
| REST kontroleriai | 5 (VVS) |
| Custom JSP tag'ai | 15+ |
| i18n failai | 50+ |