# Tutorial: Designing a Purchase Order Processing System by Using AquaLogic Integrator

# AquaLogic Integrator: Introduction

This chapter provides an introduction to AquaLogic Integrator (ALINT). It also describes how to develop a Purchase Order Processing System by using the tutorial sample application.

This section discusses the following topics:

- Overview of AquaLogic Integrator
- Creating an ALINT Domain
- How to Use This Tutorial...

## Overview of AquaLogic Integrator

AquaLogic Integrator (ALINT) is a software bundle comprising WebLogic Integration (WLI) and AquaLogic Service Bus (ALSB).

ALINT offers the following capabilities of WLI and ALSB to manage reusable services in a dynamically changing environment:

- Complex transactional process integration
- Mediation, connectivity, and embedded management

In addition, ALINT offers developer productivity enhancements in an integrated environment. It ensures a consistent and scalable approach to SOA Integration through its integration with WorkSpace Studio, which is the unified assembly platform of BEA.

Some of the key features of ALINT are:

- ServiceBus (SB) Transport : For more information, see SB Transport User Guide.
- JPD Transport : For more information, see JPD Transport User Guide.
- AquaLogic Service Bus (ALSB) Control: For more information, see
  Using Integration Controls.
- Integrated Development Environment (IDE) for both WLI and ALSB

This tutorial sample application, and its workflow involved is described in Architecture of the Sample Application.

## Architecture of the Sample Application

Figure 1-1 illustrates the architecture of the Purchase Order Processing System.

Figure 1-1 Architecture

### Workflow of the Sample Application

`PurchaseOrderProcessingService` is an ALSB proxy service that receives a purchase order from an external client with information, such as purchase orderID, customer name, order line item, credit card, and shipping address. The purchase order must be processed, and a confirmation has to be sent to the client.

`PurchaseOrderFulfillmentJPD` and `PurchaseOrderAggregatorJPD` business process JPDs are used for state management and process orchestration.

External Systems such as credit card system, inventory system and shipping provider systems in this tutorial sample application are modeled as JPDs, and JWS, respectively.

The workflow is described as follows:

1. `PurchaseOrderProcessingService` is implemented as a WSDL-based ALSB proxy service, which is an entry point to the application. This PurchaseOrderProcessingService receives PurchaseOrderDocument (typed XML) over HTTPS. This ALSB proxy service implements the split-route pattern and routes each of the split documents as follows:

1. One part consisting of the order line item and credit card details, which is passed to the `PurchaseOrderFulfillmentJPD`. The `PurchaseOrderFulfillmentJPD` is a JPD that fulfills the purchase order.
2. One part containing the Purchase Order ID, Callback location and the shipping information is published to the `PurchaseOrderAggregatorJPD` (SOAP over JMS), which aggregates the results of the `PurchaseOrderFulfillmentJPD`.

2. `PurchaseOrderFulfillmentJPD` is a WLI JPD that invokes the inventory system and the credit card system in the context of a transaction and publishes the results of the inventory and credit card systems to the corresponding message broker channels. In case of any failure, a worklist task is created with the cause of the failure, to enable actionable exception management.
3. `PurchaseOrderAggregatorJPD` that is already subscribed to these message broker channels, aggregates the results and invokes the shipping system and sends a confirmation back to the client as a callback.

## Purpose of the Tutorial

The purpose of the tutorial is to demonstrate the new features like AquaLogic Service Bus (ALSB) Control, JPD transport, and Integrated IDE, using the sample application. This tutorial helps you in rebuilding the ALSB Control and ALSB Business Service End Points using JPD transport.

This tutorial focuses on demonstrating transaction context propagation, and security context propagation.

## Creating an ALINT Domain

For information about creating an ALINT domain, see Installing and Using AquaLogic Integrator.

Ensure that the Administration server is running on port 7001. SSL is enabled, and the SSL port is 7002. SSL is required because the ALSB proxy service - PurchaseOrderProcessingService is HTTPS enabled for secure data transmission.

## How to Use This Tutorial...

You can use this tutorial in the following ways:

Table 1-1 Using the Tutorial
Part | Description
Using the Out of the Box Sample Application | Describes how you can use the tutorial sample application, without having to make any changes.
Accessing ALSB Proxy Service and Exposing a JPD | Describes how you can rebuild two key features of ALINT namely ALSB Control and JPD Business Service.
Developing the PO Application System | Describes how to design the Purchase Order (PO) Processing System by creating all artifacts from scratch.