Friday, August 28, 2015

Enterprise Application Integration

Introduction

The increasing need for real-time and consolidated information has increasingly motivated companies to find a way to integrate their disparate existing systems. The process of this integration is referred to as Enterprise Application Integration (EAI).

What is EAI

EAI is the process of integrating multiple software applications that were independently developed, use incompatible technology, and remain independently managed.

Fundamentally, EAI is about sharing and exchanging data and business processes among the different applications and data sources in the enterprise.

Types of EAI

EAI can be done at different levels, depending on many factors including company size and industry, integration and/or project complexity, and budget.

There are four main integration levels:

  • Data Level
  • Application Interface Level
  • Method Level
  • User Interface Level

Data Level

Data Level EAI is a database-centric approach that consists of extracting data from one database and updating it in another. Sometimes the extracted data can be transformed before entering it into the target database, for example, to apply specific business rules.

Data-level integration is commonly done through ETL (Extract, Transform, Load) tools that can extract, transform, cleanse, and load data from various data sources to a common enterprise data repository (a data warehouse) or data repositories tuned to serve different business needs (data marts).

The main benefits of this approach are its low cost and low risk profile. Because we do not make any modification to the existing code of the applications, we do not need to incur the expenses related to developing, testing, and deploying new versions of the applications. The main drawbacks of this approach are the huge quantity of databases and tables that are generated, the need for the Database Designer to understand the data that is being moved, and the associated business rules.

Application Interface Level

This EAI level of integration consists of leveraging the interfaces provided by custom or packaged applications to access business processes and simple information. Usually, this kind of integration is done in a three-step process:

  1. Extract the information from one application through a provided application interface.
  2. Convert the data in a format understandable by the target application.
  3. Transmit the information to the target application.

The most commonly used approach to implement this kind of integration is called "message broker," an approach which standardizes and controls the flow of information through a bus or a hub framework.

But with the increasing popularity of web services, legacy and packaged applications are starting to use them to expose their business features. The availability of these business functions as reusable services causes the increased use of Service-Oriented Architectures (SOA) as an alternative to "message broker."

The main benefits of this approach are the fact that the interfacing between the different applications is relatively easy due to the fact that the application interfaces are provided by application. A negative aspect of this approach is the cost of the message broker technology. In the past, these interfaces were often application dependent, obliging the developers to learn the specific features and functions of each interface. But with the increasing popularity of XML and its adoption as a standard language for many application interfaces, this problem is disappearing.

Method Level

Method-level integration is similar to application interface level but at a lower level of granularity. The idea here is not to share business functions (as in application interface level), but to share directly the different methods used to compose a given business function. All other enterprise applications needing to implement the same methods can use them without having to rewrite it.

Even if this integration level can be done with a lot of technologies (Java RMI, Corba, DCOM, etc.), the emerging trend in implementing this approach is to use Web services as a way to share the methods.

The ability to share methods and to reuse business logic make this approach very suited for EAI. But the downside to this approach is that it is also the more invasive approach because it supposes the modification of existing applications to allow the sharing at such a low level.

User Interface Level

User interface-level EAI is also commonly called "Refacing" and consists of replacing existing text-based user interfaces of legacy systems and graphical interfaces of PCs by a standardized interface, typically browser-based.

Enterprise business portals are an emerging solution for this kind of integration and consist of federating the presentation of multiple applications into one customizable browser-based interface.

This kind of integration is less expensive than other approaches, as the code of the existing applications is not modified. However, this approach is also less flexible for the same reason.

EAI and Middleware

In EAI, middleware technology is just used as a mechanism to move information and share business processes from one application to another. The middleware hides the complexities of the communication mechanism between source and target systems. This allows the developers to concentrate on dealing with the APIs (Application Programming Interfaces) of each system, while the middleware handles the passing of the information between the two systems. The same middleware API can be used by different applications running on different platforms.

As an underlying technology of EAI, middleware can be used at any level of integration (even at user interface level because business portals can be considered as a kind of middleware). However, the most common use of middleware technology is with message broker at application interface level.

EAI and XML

The eXtensible Markup Language (XML) standard is a text-based markup language specification from the World Wide Web Consortium (W3C) whose objective is to define portable structured data. Because XML is simple and becoming a widely used interchange format, it is ideal as EAI message format and protocol.

XML can be used with every integration level (except perhaps at user interface level). It can be used at data level as common data exchange format, at application interface level as messaging format and/or protocol within a message broker, or in a Service-Oriented Architectures (SOA) as support for web services. Because Web services are built using XML, it also has a place at method-level integration.


Thursday, July 16, 2015

Oracle ADF Architecture Overview

Overview

In modern application development, the framework plays an important role--without the support of a mature framework, rapid application development is quite impossible. Oracle has developed an innovative, mature and stable Java EE development framework called Oracle Application Development Framework (ADF). The ADF framework is part of Oracle's award-winning JDeveloper 11g development environment. Oracle ADF provides infrastructure support as part of the framework, so that developers can concentrate on the actual application development. The integrated tool is very useful for rapid application development. Let's discuss the ADF framework and its architecture.

Introduction

In web application development, MVC (Model-view-controller) design pattern is very popular. Oracle ADF also implements the MVC design pattern. The ADF framework provides all the layers of this popular architecture (MVC) and provides solutions in the following areas:

  • Object-Relational Mapping (ORM)
  • Data persistence layer
  • Reusable controller layer
  • Rich user interface based on JSF technology
  • Data binding mechanism with the UI layer
  • Security features
As a result, the coverage of this tool is very useful in the creation of a composite and efficient web application that goes beyond normal MVC framework.

Why Oracle ADF?

As we know. J2EE is a set of specifications for building robust, scalable, secured multi tier applications. But J2EE does not provide any set of tools to make the application itself. So the biggest challenge for making J2EE applications is the selection of tools. There are many different J2EE compliant tools in the marketplace but the selection of the best tool is one of the major criteria behind successful J2EE application development.

So we need a framework that provides an abstract layer on top of the complex J2EE platform. This is the role of the Oracle Application Development (ADF) framework as it provides the infrastructure and design implementation support as part of the framework. Oracle ADF also provides a visual and declarative development approach to support rapid development.

Oracle ADF Key Features

The following are the key features provided by the ADF framework.

  • Integrated development environment: Oracle ADF comes bundled with JDeveloper. So JDeveloper works as a perfect tool for ADF application development using visual and declarative approach. It minimizes the development effort.
  • Vendor neutral: Oracle ADF is vendor neutral. The Oracle ADF runtime can be used with any J2EE compliant application server.
  • Technology support: Oracle ADF provides different layers for J2EE application development. The layers can be developed using different technologies. So the Oracle ADF is also technology neutral.
  • Composite end to end solution: Oracle ADF provides support for complete end to end development of J2EE application. So the developers can completely concentrate on the development work instead of the tool or technology selection.

Oracle ADF Architecture

We have already discussed that Oracle ADF follows the MVC design pattern. A typical MVC application contains the following three layers.

  • Model layer that holds the business logic.
  • View layer that handles the user interface.
  • Controller layer that manages the interaction between Model and View layers.
All the components of the application are loosely coupled. This helps with the maintenance of the application and increases the reusability. So the architecture can be defined as Service Oriented Architecture (SOA).

Oracle ADF has four layers in its MVC implementation. It has separate model layer and business service layer to implement service oriented architecture. So we can define the Oracle ADF architecture as MVC model with a business service layer. Here are the four layers of ADF architecture:

  • Business Service layer: This layer handles data from various sources and business logic.
  • Model layer: This layer does not handle business logic directly; rather it provides an abstract layer on top of the business service layer. This particular design pattern helps the view and controller to work with various business service implementations.
  • Controller layer: It controls the web application flow.
  • View layer: It provides the user interface.
The figure below represents the core architecture of the Oracle ADF framework. Different layers and their interaction are shown as an example. The components in different layers can be changed per the application requirement.

As we have seen in different layers, the choice of technology is very flexible. The view layer supports desktop, mobile and web interfaces. The controller and model layer comes under the ADF framework so there is not much change. The business service layer can be anything such as Java, EJB, Web, Portlet, etc. And the same flexibility is there for data layers. The application can interact with RDBMS, web service, legacy system, etc. The flexibility of Oracle ADF framework makes is very popular in the Java EE application development domain.

Now let us discuss a bit of the details about the different layers shown in the diagram.

Business Service Layer

The business service layer is the addition component in the Oracle ADF framework. ADF provides the flexibility to implement this layer using any technology, and some of those technologies are shown in the diagram. This layer manages the following tasks.

  • Interaction with data persistence layer
  • Object-relational mapping
  • Transaction management
  • Business logic execution

Model Layer

The model layer provides the single interface to connect to any business service. This model layer in the ADF architecture does not handle business logics itself, rather provides the abstraction on top of the business services. So the flexibility of implementing any business service is a great advantage of the ADF framework. The model layer in ADF is also called 'ADF binding'. It has following to components.

  • Data controls: It provides abstraction on top of business service layers
  • Data bindings: It exposes data control methods to the UI layer.

Controller Layer

The controller layer is responsible for handling application flow and user input. The navigation rules are defined on a diagram to manage application flow. Here are the two types of controllers used in web-based applications.

  • JSF controller
  • ADF controller
Note: ADF controller extends the functionality of JSF controllers.

View Layer

The view layer is the front end of any application. The front end layer can be a desktop application, mobile application or web-based application. The multichannel support of the Oracle ADF framework is very useful for developing any type of application. Oracle ADF provides more than 150 Ajax based, ready-made JSF components for creating dynamic web interfaces.

Benefits of the Oracle ADF Framework

The following are some of the benefits of Oracle ADF framework:

  • Support for visual and declarative view and controller development
  • Various options to construct business service layers
  • End to end solution for all the Java EE layers
  • Technology and platform independence
  • Meta data driven development
  • Support for reusability and flexibility

Conclusion

There are different vendors who provide development tools, frameworks based on Java EE specifications. So for developing any Java EE application, developers need to know these tools and their usage. But most of these tools do not support all the layers of Java EE application development. As a result, developers are sometimes a bit confused when choosing tools or frameworks. Oracle ADF provides a complete development environment, infrastructure code, design patterns and ease of development. So the combination of Oracle ADF framework and visual development environment is very popular in the Java EE development community.