Entitet abstraktionsmönster

Entitetsabstraktion är ett designmönster , applicerat inom det serviceorienterade designparadigmet som ger riktlinjer för att designa återanvändbara tjänster vars funktionella sammanhang är baserade på affärsenheter.

Logisk grund


Automatiseringen av en affärsprocess involverar analys av affärsdomänen och sedan design av lösningslogik som representerar de olika stegen i affärsprocessen. Vissa av dessa steg relaterar bara till den specifika affärsprocessen medan andra kan vara användbara för andra affärsprocesser också. En del av denna återanvändbara logik hänför sig till affärsenheterna som vanligtvis förblir desamma jämfört med reglerna och bearbetningsstegen som kan ändras i framtiden. Om tjänster designas som innehåller både processspecifik logik och enhetsspecifik logik, blir chanserna att återanvända samma enhetsspecifika logik, från en annan affärsprocess, något försumbara. Å andra sidan, om denna typ av logik delas upp i en separat behållare, dvs en tjänst, kan alla nya affärsprocesser som använder samma affärsenhet återanvända denna logik. Bortsett från återanvändningsproblemet, för att hantera förändringen i en affärsenhets beteende, kräver uppdatering av den förankrade enhetsrelaterade logiken över flera affärsprocesser extra ansträngningar och gör underhållet av sådana tjänster till en komplex uppgift. Som svar på de ovannämnda frågorna förespråkar Entity Abstraction-mönstret att logik som relaterar till bearbetning av affärsenheter separeras från den processspecifika logiken för ett enda ändamål och utformas som oberoende logik som inte har någon kunskap om den övergripande affärsprocessen i vilken sådan logik används.

Användande

ERD

ERD En ERD som visar relationerna mellan olika affärsenheter och deras attribut.
Entity Services

Entitetstjänster Enhetsspecifik logik identifieras från ovanstående ERD och abstraheras bort i relevanta funktionella sammanhang som utgör entitetstjänsterna.


Separationen av återanvändbar enhetsspecifik logik kräver identifiering av sådan logik innan de faktiska tjänsterna utformas. Detta kräver en top-down serviceorienterad analys och designprocess för leverans av tjänster. Under analysfasen identifieras olika typer av handlingar som utförs på och av affärsenheter och placeras i ett relevant processneutralt funktionellt sammanhang som ligger till grund för entitetstjänster. Dessa entitetstjänster innehåller specifikt funktionalitet, inklusive CRUD- funktioner, som endast är relevant för de fysiska eller logiska affärsenheterna, representerade av deras motsvarande funktionella kontext. Förutom identifieringen av olika åtgärder är det också viktigt att upptäcka eventuella relationer mellan affärsenheterna, oavsett om de ingår i den aktuella affärsprocessen eller inte. Genom att se över olika affärsprocesser kan enhetstjänsten packas med extra funktionalitet som kan krävas av andra affärsprocesser. En viktig informationskälla för att identifiera sådana relationer är ERD:erna eftersom de fysiskt visar relationerna mellan olika affärsenheter och även identifierar de olika attributen hos enheter som utgör grunden för relationerna mellan enheterna. Den resulterande uppsättningen tjänster representerar entitetslagret, som är ett av lagren som förespråkas av Service Layers designmönster . Tillämpningen av entitetsabstraktionsdesignmönstret kan ses som en specialiserad implementering av det agnostiska kontextdesignmönstret eftersom det agnostiska kontextmönstret förespråkar att separera processneutral logik från den processspecifika logiken, men i fallet med Entity Abstraction-mönstret är det entitetsspecifik processneutral logik som håller på att separeras. Processen att identifiera enhetstjänster från affärsenheter kanske inte alltid resulterar i en en-till-en-mappning eftersom det vid vissa tillfällen kan vara logiskt att kombinera två enheter till en eftersom de i sig inte representerar en betydande del av den funktionalitet som utförs på enheterna.

Överväganden

Tillämpningen av detta designmönster kräver att man använder top-down serviceorienterad analys och designtjänstleveransprocess som kanske inte är lämplig för organisationer som har begränsade resurser, både när det gäller tid och arbetskraft. En annan viktig aspekt är att när den entitetsspecifika logiken väl har abstraherats bort i entitetstjänster, ökar beroendet av sådana entitetstjänster eftersom de blir den enda kontaktpunkten för utnyttjande av funktionalitet som är av intresse för flera affärsprocesser. Följaktligen är det fortfarande mycket viktigt att ha strikta styrmekanismer på plats så att en förändring i funktionaliteten hos en enhetstjänst inte leder till beteende som inte förväntas av tjänstekonsumenterna som redan har gjort beroende av sådana enhetstjänster.

externa länkar