Canigó (ramverk)
Canigó är namnet som valts för Java EE- ramverket i Generalitat de Catalunya .
Syfte och arkitektur
Canigó definieras som ett "gemensamt tekniskt ramverk för utveckling och exekvering av webbapplikationer för företagssystem och avdelningar i Generalitat de Catalunya".
Den täcker olika funktioner:
- En gemensam arkitektur för Java EE-applikationsbyggnad.
- Tillhandahåller en arbetsyta, dokumentation, support och underhåll av dess komponenter.
- Förenklar komplexiteten som är inneboende i Java EE och erbjuder ett referensramverk.
- Erbjuder en lösning i linje med de facto-standarderna över hela open source-gemenskapen.
- Erbjuder en öppen lösning som möjliggör möjligheten att lägga till och byta ut vilken mjukvara som helst med reducerade kostnader.
- Erbjuder en sammankopplingslösning med de företagstjänster som tillhör Generalitat de Catalunya.
Canigós arkitektur är baserad på Model–View–Controller . Det finns en abstraktionsprocess som tillåter uppdelningen av applikationslogikerna i tre huvudkomponenter som kan utvecklas av olika roller i ett team.
Faktiskt är Canigós arkitektur, som ett MVC-strukturerat ramverk, uppdelad i 3 lager och 4 tvärgående moduler:
- Skikten
- Presentationslager
- Affärslogiklager
- Data Persistens/Integrationslager
- Moduler
- Framework Core
- Säkerhetsmoduler
- Supportmodul
- Driftsmodul
Canigós modulära struktur ger utvecklare möjligheten att endast använda de nödvändiga modulerna för att täcka projektkraven. Dessa moduler definieras genom gränssnitt, vilket isolerar dem från utvalda implementeringar.
Canigó är baserad på en serie resurser, API :s integration som JPA och paket med öppen källkod ( Spring , Swagger , ...). Den erbjuder också tillägg för dessa paket, och lägger till en bred katalog av återanvändbara komponenter.
En av de viktigaste arkitektoniska grunderna är att frikoppla frontend och backend med hjälp av REST API:er. Denna arkitektur tillåter oberoende utvecklingsteam att arbeta på frontend och backend.
Ramverket består av de block som anges nedan:
Baskomponenter för ramarkitektur
Spring är ett ramverk med öppen källkod skrivet för Java-plattformen. Den första versionen skapades av Rod Johnson i oktober 2002 och den senaste versionen är 5.0.9, publicerad den första veckan i september 2018. Canigó är designad för att hjälpa till med konfigurationen av webbapplikationer, och även för att förenkla systemkonstruktion i olika delar (lätt utbytbara och synliga mellan dem), tjänsteintegrering, säkerhetstjänster, databasanslutning, transaktionsförmåga, etc... Spring tillhandahåller ett komplett testsystem, det är möjligt att utveckla enhetliga tester som kopplar bort objekt från dess kontext vilket gör det enklare att utföra testet fall. Den externa dataåtkomsten, genom Spring, är en enkel uppgift eftersom detta ramverk hanterar resurserna själv. Den har också stöd för API:er och den kan bära den stora majoriteten av Java-industrins dataåtkomstteknologier som: JDBC, Hibernate , JPA, JDO eller iBatis .
Den huvudsakliga grunden för Canigós arkitektur är en helt integrerad grupp, även moduluppbyggd, av bästa praxis inom Java-webapplikationer som utvecklar teknologier. Dessa är de faktiska komponenterna som utgör systemet:
- Swagger är ett ramverk för öppen källkod som backas upp av ett stort ekosystem av verktyg som hjälper utvecklare att designa, bygga, dokumentera och konsumera RESTful webbtjänster . Medan de flesta användare identifierar Swagger med Swagger UI-verktyget, inkluderar Swagger-verktygsuppsättningen stöd för automatiserad dokumentation, kodgenerering och testfallsgenerering.
- Spring4 Framework som en centraliserad behållare för objekt och tjänster, helt konfigurerbar genom XML-filer eller Java-anteckningar. Beroendeinjektion tillåter konfiguration av objekt utanför applikationens kod med ett icke-påträngande tillvägagångssätt. Det minskar programmets kod dedikerad till konfigurationer och lokalisering av resurser. Det underlättar också bästa praxis som att programmera mot gränssnitt istället för klasser, vilket gör det möjligt att koppla bort tjänster och snabbt ändra en given implementering mot en annan. Det tillåter också att hantera transaktioner utan att använda specifika API:er genom att använda aspektorienterad programmering.
- JPA tillhandahåller en beständighetsmodell baserad på POJO:er för att kartlägga de relationella Java-databaserna. Även MongoDB, den mest populära icke-relationella databasen, stöds.
- AOP ( Aspect Oriented Programming ) för programmets händelseavlyssning utan att ändra källkoden.
Ramkärna
Den här modulen är kärnan i ramverket, här är huvudfunktionerna:
- Multi-Environment Configuration: Baserat på PropertyPlaceHolder från Spring3. Med skillnaden att det tillåter existensen av miljöberoende egenskaper utan några extra bönor eller egenskapskonfigurationer.
- Multi-Language (i18n): Dess mål är att hjälpa till i applikationsutvecklingsfasen genom att underlätta stödet för flera språk.
- Spårningstjänst: Baserat på Log4j . Det tillåter definition av spårningsnivån, utgångar, lägsta spårningsnivå, utdataformat, kontextinformation.
- Undantagstjänst: Genererar information om eventuella fel som uppstår under utförandet av en begäran. Canigó erbjuder en serie undantag som standard (BaseException, CoreException, ...). Den har också en undantagsavlyssningsmekanism för att undvika överdriven användning av "try-catch".
Säkerhetsmodul
Det är användarens behörighets- och autentiseringsprogram för åtkomsthanteringssystem.
- Säkerhetsmodul: Baserad på Spring Security 4.x. Det kan hantera auktorisering och autentisering av applikationsanvändare.
- Säkerhetsbackends: Säkerhetstjänsten är integrerad med GICAR, SACE, LDAP, Databaser och Inmemory.
Presentationsmodul (UI).
Sedan Canigo 3.2.0 har JSF fasats ut som en presentationslagerteknik. Ansvaret för presentationslager har delegerats utanför ramverket till ett annat team som är specialiserade på front-end-teknologier som Angular eller React .
Integrationsmodul
Dess mål är att ge enkel tillgång till de olika tjänsterna som erbjuds av Generalitat de Catalunya.
- PICA: Tillhandahåller ett Java-integreringsgränssnitt för åtkomst till 'Plataforma d'Integració i Coll·laboració Administrativa' (PICA). Denna modul kan exekvera synkrona och asynkrona förfrågningar.
- GECAT: Denna modul har en uppsättning funktioner för fakturahantering som erbjuds av SAP-tjänsten för Gecat.
- PSIS: Det är en tjänst för digitala signaturer och digitala certifikat som erbjuds av Catcert.
- SARCAT: Är en serie metoder för att utföra de tjänster som erbjuds av S@rcat, genom WebServices, FTP / SFTP för planerade förfrågningar.
- Documentum: Möjliggör konsumtionen av Documentum -funktioner som dokumentarkivering och hämtning, den kan också hantera mappar och metadata.
- NT: Är en funktionell anslutning för PICA som förenklar användningen av telematiska [ kontrollera stavning ] meddelanden från Generalitat de Catalunya.
- Antivirus: Är en integration av CTTI (Information Technologies and Telecommunications Centre) filskanningssystem i Generalitat de Catalunya.
- SAP: Det är ett förenklat gränssnitt för att komma åt SAP- backend av Generalitat de Catalunya.
- Webbtjänster: Canigó 3 har ingen inbyggd webbtjänstmodul. Det finns en komplett dokumenterad guide om hur man exporterar, publicerar och konsumerar webbtjänster med Java. Canigó 3 uppmuntrar användningen av Spring WS, Jaxb och OXM.
- Köer: Canigó 3 har ingen köhanteringsmodul. Det finns en guide om hur man genererar och konsumerar meddelanden från en kö. Användning av Spring JMS rekommenderas.
Uthållighetsmodul
Denna modul möjliggör för applikationen databeständighet och hämtning mellan applikations- och databashanteringssystem.
- JPA: Java Persistence API Förenar verktygen för ORM (Object-Relational Mapping). Standardimplementeringen av JPA i Canigó 3 är Hibernate . Spring Data JPA gör det enkelt att enkelt implementera JPA-baserade arkiv. Det gör det enklare att bygga Spring-drivna applikationer som använder dataåtkomstteknik.
- MongoDB: enkel integration med MongoDB dokumentdatabas tack vare Spring Data MongoDB.
Supportmodul
Den här modulen ger några ytterligare funktioner till ramverket.
- Filöverföringar: Gör det möjligt för servern att ta emot bifogade filer i en HTML-form.
- E-postmeddelande: Gör det möjligt för servern att skicka e-postmeddelanden till flera adresser. Den hanterar vanlig text och html-meddelandeinnehållsformat. Det kan också bifoga flera filer.
- Uppgiftsplanerare: Baserat på vår och kvarts . Aktivera alternativet att utföra uppskjutna uppgifter baserat på fördefinierade tidsplansregler.
- OLE: Det kan manipulera MS Excel och Word OLE-dokumentformat. Det gör det möjligt att skapa, läsa och ändra dokument. Den är baserad på POI-biblioteket.
- Sammanfogning: Dokumentfusion i WordML-format. Med utgångspunkt från ett taggat dokument utbyts dessa variabler med en grupp värden som definieras i en ordbok.
- SFTP: Aktiverar filöverföring mellan servern där applikationen distribueras och andra servrar genom ett säkert protokoll. Den är baserad på JSCH- och Commons-VFS-bibliotek.
Driftsmodul
Denna modul lägger till en funktion till applikationer för att generera exekverings- och instrumenteringsdata. Denna data är redo att brytas och bearbetas av övervakningsverktyg.
- Instrumentation: Möjliggör applikationen med förmågan att generera instrumenteringsdata (Frågningar, antal fel, ...), dessa data kommer från exekveringen av applikationen.
- Övervakning: Gör det möjligt för applikationen att visa en skärm för att få tillgång till instrumenteringsmodulens genererade data.
- Loggning: Gör det möjligt för applikationen att administrera loggtillägg (aktivera, avaktivera, ändra loggnivå) och visa loggar i realtid med WebSockets.