blueprint - an enterprise architecture outcome

 

There are many outcomes to enterprise architecture work, but one of the important and most communicative one is a blueprint of your enterprise to-be architecture. People like to use city planning as an allegory to enterprise architecture. And similar to the role of city blueprints, which serves as a reference to building architects and designers, enterprise architecture blueprints are crucial for the success of enterprise architecture initiative.

 

In this post I would like to share with you a real-life example  of enterprise architecture blueprint  developed for one of my customers using system architect as a tool. The following blue print shows all the building blocks components (Information, Business, Applications and technology) and the relations between them as well as the defined interfaces between the building blocks and the interfaces qualities.   We are using this blueprint for two main purposes:

  1. It serves as a reference to application architects and designers to understand what they need to follow and what are their boundaries  (we’re also using principles for this purpose, but I'll address them in dedicate post).
  2. As part of the governance process we are using the blueprint in design review of applications to validate that they are compliance with the blueprint.

 

The blueprint is build from visual representation of all the building blocks and the relations between them. Following by textual explanation of all the building blocks, relations and interfaces that depicted visually.

 

The following blue print shows how internal applications need to be developed in order to support enterprise mash-up of different information types both for internal and external customers. It contain the main building block that each application expected to build and the allowed relationships between those building blocks. For example note that each application should separate it business rules, business tasks and business events and business conditions (to better support business agility). The application information is separated from actual data as business objects that are defined by the business and serve as the only data types that can flow between applications.  The common layer is a set of common infrastructures that can be used by any application.

 

 

Following the visual representation of the blue print we provide a details explanation of all of the building blocks an the relations between them. It usually looks like that:

 


 

Blueprint description


 

Portal:

·         Enable to show and work with portlets that represent different data on the same page.

·         The portlet enable those potrlet to communicate one with each other in order to change display in one portlet as a result of data changes in other portlet.

·         The portal also enabled the user to choose which portlets are going to be displayed and in which order.

 

 

 

ESB :

·         Enterprise Service Bus responsible for providing and consuming loosely couples web services.

·         The ESB should receive calls for services and to rout the request to the right physical address where the request service can be executed.

 

 

 

Common Layer:

·         This layer contained all services that are common for all application.

·         Components in this layer should be write in a way that they will support each and every application (no custom code)

·         Components in this layer should be load into the memory space of each and every application and access directly by the loaded application components.

 

 

 

Identity Management

·         Single point that handle user access to systems.

·         No identity management code should be exist inside application implementation code.

 

 

 

Logger

·         Single point in systems that handle all types of logging

·         No logging management code should be exist inside application implementation code.

·         Selected tool for this building block is Log4j.

 

 

 

ORM

·         Single point in systems that handle all access to DB.

·         ORM should provide mapping between relational DB and OO Entities, including the needed code to perform CRUD actions against entities.

·         ORM should provide access to data in-memory as first choice

·         No direct access to DB should be exist inside application implementation code.

·         Selected tool for this building block is Hibernet   .

 

 

 

Communication Manager

·         Single point in systems that handle all access to Access FTP, Queue, Files, Email.

·         Communication Manager will provide single point to getting or sending any type of the FTP, Queue, Files, Email.

·         Communication Manager will implement all handlers and listeners that exist today in single point.

·         No direct access to FTP, Queue, Files, Email should be exist inside application implementation code.

 

 

 

Application (Solution) :

·         Application represents set of components that run in the same memory space, have the same version and maintain by one group.

·         Accessing component inside application is doing using services but not web services.

·         Accessing components services from outside of the application is done using web services.

·         Each component has one or more interfaces that must be exposed but not implemented.

·         Just needed functions in an interface will be implemented.

 

 

 

Presentation layer:

·         Presentation layer responsible for formatting data into user display forms and portlets as well as manage forms flow, where it applicable.

·         This layer is build from portlets, which are used to display application data on a portlet. JSP pages, which support the user to go through several forms to perform his work. Needed interfaces for each architecture building block

 

 

 

Portlet:

·         Responsible to show application data on a portal.

 

 

 

JSP:

·         Responsible to provide user interface as well as user interface flow for a worker.

 

 

 

Report Manager

·         Responsible for retrieve and format data from other DWS or operational database.

·         Should be the only responsible for formatting data for reporting.

·         Could access data access manager or directly DB for getting data

 

 

 

Business Rules Management

·         Responsible to perform formulas calculations.

·         This component is responsible to encapsulate calculations of business rules.

·         The only place where business rules calculations will take place is just in this component.

·         Business Rule Management should access Data Access Manager layer in order to pull there data it need to perform it work.

 

 

 

Business Process Management

·         This component responsible for running business processes. BPM is composed from Tasks, events and conditions which form the business process.

·         Business process might call a business process rule, Information workflow, ReportManager or In/Out bound interfaces to perform it duties.
Business process is just responsible for running a process. business

·         Rules calculation, data access and validation, accessing external services or generation/requesting reports must not be part of the business process code.

 

 

 

Task

·         Task is responsible to perform certain task in a business process.

·         One of the most important duties of a task is to compute and store the time that it takes hi to perform his work.

 

 

 

Event

·         Responsible to handle business process event

 

 

 

Condition

·         Responsible to perform a business process condition.

 

 

 

Data Access Manager

·         This layer responsible for accessing and validating data.

·         Data Access Manager provide intermediate layer between OO work and relational database as well as a layer that minimize DB access (by providing in-memory storage)

 

 

 

Information Workflow

·         Information Workflow responsible to perform cross business objects call to collect data or to perform any task.

·         Calls from other application objects are reaching always information process object that responsible to perform calls to one or more business objects.

·         No direct calls will be made from other components than information workflow to business objects.

 

 

 

Business object

·         Business objects are dedicating entities that combine data from the ORM together with the relevant business logic (mainly validations) that can be done in the entity level.

·         BO are being called by information flows and using ORM entities to get the data.

 

 

 

ORM (Entities):

·         ORM - is the layer that responsible for translating relational databases into OO structure.

·         Each entity that takes part in application should be representing in the ORM level.

·         Each Entity should be encapsulated with CRUD function by the ORM.

 

 

 

Web Services

·         Web Services is a layer that responsible to separate code that is needed to provide internal service as a web service or to consume external service.

·         Web Service layer is build from inbound and outbound elements.
Inbound is responsible for wrapping internal service as standard web service as well is to impose restrictions for web service usage (such as limitation of concurrent calls)

·         Outbound is responsible to wrap calls to external web services.
web service layer responsible to decoupling of web service calls from internal implementation of any of the application internal elements.

 

 

 

Inbound

·         responsible to encapsulate internal services as web services and to receive incoming calls for web services

 


 

Outbound

·         Responsible to encapsulate calls to external web services.

 

Last but not least is the services that we expect to be implemented by building blocks and interfaces implementers. Those services could be looked like the following example:

 

 

Following by textual descroption:

 

 

 

Building blocks interfaces

 

 

Portlet

 

 

IPortletComm:

·         Show(Entity) - get data and display it called by portal to initiate portlet on the first time

·         Refresh(Entity[]) - Refresh data on screen by other portlets / portal

·         GetAvailableEntities(Entity[]) - what are the entities that i can support as para,eters for call my refresh function.

 

 

 

IPortletBehavior

·         Minimize

·         Maximize

·         Move

·         Hide

·         Close

 


 

Outbound

 

 

IOutBoundPA

                                ExecuteExtService(NameOfService, Params) Results

 

 

Task

 

 

IBusinessTask

·         GetTaskStartTime

·         GetTaskEndTime

 

 

 

Business Rules Management

 

 

IBusinessRule

·         ExecuteRule(Name, Params) Results

 

 

 

Report Manager

 

 

IReport

·         convertFormat(Full_filename, DestFormat) - convert the report data into requested format (Excel, CSV, XML, Entity) and store in file specified by filename

·         generateReport(ReportName) - generate pre-defined report based on reportName, return status and store internally as a DOM object

·         GetReportList(GroupParam) - Return reports list

·         ScheduleReport (TimeParam, ReportName) - schedule the report by given params

·         GetSavedReport (ReportName, Date) - as part of producing reports each and every report should be saved to CSV and signed PDF. this service should return those two files by report name and dates.

 

 

 

Information Workflow

IInformationProcessor

·         ExecuteAction(ActionName, Params) - execute one of the information workflow that ewsponsible for

·         calling several (or one ) business objects in order to do some action or return data back to the calling processStep or Rule engine.

 

 

 

Business object

 

 

IBusinessObj

·         Query(Entity, criteria ) - to return the list of ID based on the criteria

·         Retrieve(Entity_ID) - to return entity based on the ID

·         RetrieveByParam(Entity_ID, AttList) - Return list of attributes of given entity by AttList

·         Create(Values[]) - Forward to ORM

·         Create(Name)  - Forward to ORM

·         Update(AttList, Values[])  - Forward to ORM

·         Delete () - Forward to ORM

 

 

 

Identity Management

 

 

IIdentifyMgr

·         requireSecondLevel(Process_ID) - check if the process requires 2 factor authenication

·         isAuthenticatedFirstLevel (UserCredential ) - if the user pass level one security

·         isAuthenicatedSecondLevel(UserCredential) - if the user pass level second security (RSA, certificate etc)

·         isPermissible(Process_ID, UserCredential) - check if user has right role to execute the process

·         getRoles(UserCredential) - get the list of permissible roles user has

·         getUserCredential(User_ID) - get the User Credential entity based on user id

 

 

 

Communication Manager

 

 

ICommunicator

·         performFTP(Filepathsource, filepathdestination, filename)

·         performSecureFTP(Filepathsource, filepathdestination, filename) - perform secure FTP to transport a file from source to destination

·         performSMS(Phone_number, text) - SMS text to the phone number

·         performEmail(email_address[] , template_id, file[]) - email out to all addresses with the template and attachment file

·         perofrmSecureEmail(email_address[] , template_id, file[]) - same as above except secureEmail

·         ListentoFile(filename, filepath) - listen for the incoming of file at the path and creates an event

·         ListentoSMS(phone_number[], text) - wait for a sms from the phone_number list) and creates an event

·         ListentoEmail(email_addressp[) - wait for emails from the list email address and creates an event

 

This blue print, as I already mentioned above, is also served as a guideline for applications architects and designers and as a tool in our enterprise architecture governance process. We accept application architects to connect each building block in their solution to one of the building blocks in the blueprint as well as doing the same for architecture principles. This enable us to find quickly who much the proposed solution is compliance with our architecture.

22 Comments

Comments have been disabled for this content.