Skip navigation.
Downloads | Product Documentation | Support

WebLogic Platform Tour Guide

# Ordering Office Equipment

In this part of the Tour, you play the roles of two Avitek employees in order to test-drive different functions of the company's Office Equipment Order Management system:

1. As the new employee, John Smith, you order a laptop for yourself, using Avitek's online Office Equipment Order Management system.
2. Then you assume the identity of John's manager, Rachel Burns, and approve John's laptop order.
3. Finally, as John Smith, you can check the status of the laptop order.

As shown by these steps, this section describes the Office Equipment Order Management process, demonstrating the integration of an application built using features of WebLogic Integration. Along the way you will learn how the business process management feature is used to integrate diverse applications and human participants, and to coordinate the exchange of information among application resources.

Note: Business process management is a feature of WebLogic Integration which is delivered as part of the WebLogic Workshop Platform Edition.

Follow the steps described in Step Through the Tour and review the concepts described in this section to learn about:

- Designing Business Processes Using WebLogic Integration
- Reviewing the Office Equipment Order Management System

# Step Through the Tour

When you log in to the Avitek corporate intranet using your employee ID, you can access the Office Equipment Order Management system and submit an order for office equipment from the Order portlet.

The Office Equipment Order Management system enables employees to order office equipment, and then monitors the progress of the order through each phase in the ordering process: order submittal, manager approval, inventory check, shipping, and billing.

Step through this part of the WebLogic Platform Tour to familiarize yourself with the order management process being demonstrated. Specific steps include:

- Step 1: Place a New Order
- Step 2: Approve an Order
- Step 3: Check the Status of an Order

## Step 1: Place a New Order

As new employee John Smith, you order a new laptop.

Note: In Logging In to the Avitek Corporate Intranet, you logged in to the Avitek corporate intranet as John Smith, the new employee. Currently, you are viewing the Employee portal.

To submit your order, perform the following steps:

1. Click Place a New Order in the Order portlet.

The Item ID form is displayed.

2. Enter notebook_kit1 (the item ID for the desired laptop) in the Item ID field to request a new laptop.

Note: You can also enter desktop_kit1 as a valid option.

3. Click Place a New Order to place the order.

The Order form is submitted and a notification is sent to Rachel Burns, John Smith's manager. The Order portlet is updated to indicate that the order was successfully placed.

4. View the status of the order by clicking Check Order Status.

The Order portlet is updated with the current status of the order.

5. Click Log Out in the Log Out portlet to log out of the corporate intranet.
6. Return to the Avitek Log In window by clicking Log In Again in the Log Out portlet.

## Step 2: Approve an Order

As John's manager, Rachel Burns, you approve John's order:

1. Log in to the Avitek corporate intranet as Rachel Burns, using the following user name and password:

User Name: `rachel
`Password: `emanager`

The manager's view of the Avitek intranet portal is displayed giving you access to the Worklist user interface. The Worklist user interface displays all pending order for Rachel's direct employees.

Note: You can also view a list of direct reports in the Direct Reports portlet.

2. Select the pending equipment approval for John Smith's laptop.
3. Select Respond to the Task to approve the order for the new laptop.

The Task Response text box is displayed.

4. Type Approved in the text box.
5. Click OK.

Notice that the order has been removed from the list of pending tasks.

6. Click Log Out in the Log Out portlet to log out of the corporate intranet.
7. Return to the Avitek Log In screen by clicking Log In Again in the Log Out portlet.

## Step 3: Check the Status of an Order

You can check the status of an order to track its progress, as it passes to the Check Inventory, Shipping, and Billing business processes.

1. Log in to the Avitek corporate intranet as John Smith, using the following user name and password:

User Name: `john
`Password: `employee`

2. In the Order portlet, click Check Order Status.

The Order portlet is updated with the current status of all pending orders.

# Designing Business Processes Using WebLogic Integration

WebLogic Integration simplifies the development, management, and delivery of business processes. A business process orchestrates the execution of business logic and the exchange of business documents among applications, users, enterprise networks, and trading partners in a loosely coupled fashion.

WebLogic Workshop makes it easy to create a business process: click the target folder and choose File—>New—> Process File. The Process Designer opens and displays a new process file that contains a Start and Finish node.

The Process Designer is a graphical tool that enables you to design business processes and establish interactions with clients and resources, such as databases, JMS queues, file systems, and so on.

Figure 4-1 Process Designer

The following table summarizes the business process design tools shown in the previous figure.

Table 4-1 Tools for Designing Business Processes

Callout # | Use this tool... | For this task...
--- | --- | ---
1 | Application Window | Create, view, and edit business process files in your application project. This window also provides shortcuts for performing specific operations on application files. For example, you can generate a Task control by right-clicking the business process (.`jpd`) file and selecting Generate Task Control File from the drop-down menu.
2 | Design and Source Views | Design your business process in this area. Switch between the Design and Source Views, as required. Changes made in one view are automatically reflected in the other.
3 | Palette Window | Graph a set of nodes that depict your business process by dragging components from the Palette window and dropping them onto the Design View canvas. Node types include: Client Request—Invoke a business process from a client so you can perform one or more operations using the methods exposed by the business process. Client Response—Send a message back to the calling client. Control Send—Interact asynchronously with an enterprise resource via a control. Control Send with Return—Interact synchronously with an enterprise resource via a control. Control Receive—Create a handler for a callback from a control. Perform—Execute your custom Java code. Decision—Select a path of execution based on the evaluation of one or more conditions. Switch—Select a path of execution based on the evaluation of an expression specified on a condition node. While Do—Evaluate a condition before the activities in a loop are performed. Do While—Perform the activities in a loop before evaluating a condition. For Each—Execute one or more activities that you specify in one or more nodes in the loop. Parallel—Execute multiple activities simultaneously. Event Choice—Wait to receive multiple events before proceeding. Finish—End execution.
4 | Data Palette Window | Define instances of variables and Java controls to be used in the business process.
5 | Node Builder | Design the functionality of the business process node. To invoke the node builder, double-click the node. A node builder is a task-driven interface that enables you to define the logic for the nodes in the business process. Examples of this logic includes: Methods that are invoked by clients to start your business process or by which the business process responds to clients. Controls that your business process node uses to interact with resources and the data exchanged in the interaction. Data transformations to map heterogeneous data as it is exchanged between your business process and resources.
6 | Property Editor Window | Set properties for the nodes in your business process.

The WebLogic Integration Administration Console, shown in the following figure, allows administrators to manage and monitor the resources required for your WebLogic Integration applications, such as business processes.

Figure 4-2 WebLogic Integration Administration Console

The following lists the specific resources that can be managed by the WebLogic Integration Administration Console:

- Process Instance Monitoring—Monitor instances of business processes.
- Process Configuration—Configure business processes.
- Message Broker—Monitor Message Broker message-based communication.
- Event Generators—Create, view, and edit event generators.
- Worklist Administration—Administer and monitor worklist task instances.
- Application Integration—Monitor enterprise adapters.
- Trading Partner Management—Configure and manage trading partners.
- System Configuration—Configure system and security information.
- User Management—Configure users and roles that access integration system resources.
- Business Calendar Configuration—Create and edit the business calendars that determine user availability or timing of system events.

To learn more about designing and managing business processes in WebLogic Workshop:

- View a demo, Designing a Business Process, that shows how to design a business process using the business process design tools.
- See Guide to Building Business Processes in the WebLogic Workshop Help.
- See Process Configuration, in Managing WebLogic Integration Solutions, available on e-docs.

# Reviewing the Office Equipment Order Management System

The `e2eWorkflow` application defines the Office Equipment Order Management system, a WebLogic Integration business process management application that directs the lifecycle of an order for office equipment.

To view the WebLogic Integration business process management application in WebLogic Workshop:

1. Open the `e2eWorkflow` application, as follows:

1. Choose File—>Open—>Application.
2. Navigate to the `samples\platform\end2end\e2eWorkflow` folder of the WebLogic Platform installation.
3. Select e2eWorkflow.work.

The names of application files end in `.work`.

4. Click Open to open the application.

2. If the application files are not currently displayed in WebLogic Workshop, choose View —> Application.

The `e2eWorkflow` application contents are displayed, as follows.

The following table describes each of the `e2eWorkflow` application folders.

Table 4-2 e2eWorkflow Application Folders

Folder | Contents
--- | ---
`e2eWorkflowProject` | Directories and files for WebLogic Integration business process management application, including: `WEB-INF`—Standard Web application folder containing deployment descriptors and validation files. `workflow`—Folder containing WebLogic Integration business process management application files. The contents of this folder are described in detail in the sections that follow. Note that a sample test file, `input.xml`, is provided that enables you to invoke the Order Management business process outside of the portal, directly from a web service. Use of this file is not demonstrated in the WebLogic Platform Tour. If you wish to call this file to invoke the business process from a web service, you must edit the file to specify a unique order ID and valid item ID for the `<orderId>` and `<itemId>` fields, repsectively.
`Schemas` | XML and WebLogic Integration Application Integration (WLAI) schema definitions, and application view information used by the Application View control.
`Modules` | Application View and Order Tracking EJB JAR files. This folder is standard in all application projects. You can modify the contents based on your application requirements.
`Libraries` | Run-time related library files. This folder is standard in all application projects. You can modify the default contents based on your application requirements.
`Security Roles` | Security role information. This folder is standard in all application projects. You can modify the default contents based on your application requirements. For the `e2eWorkflow` application, this folder is empty.

## Overview of the Office Equipment Order Management Business Processes

The `e2eWorkflow` application business process consists of several nested business processes, as defined in the following table.

Table 4-3 Business Processes for Office Equipment Order Management System

This business process... | Defines how...
--- | ---
Order Requisition | The entire ordering process works, specifically: how an order for office equipment is submitted and approved by a manager; how the inventory is checked; and how the factory is notified if the ordered item is out of stock.
Order New | A new item is ordered from the factory.
Billing | The seller bills the buyer for payment.
Shipping | The ordered item is scheduled for delivery.

The business processes interact with required resources using built-in Java controls. The following table defines the types of controls used by the Office Equipment Order Management business processes, and the Java control extension (JCX) files defined for the sample application.

Note: As noted previously, for some built-in controls, when you add the control to your application you must create or reference a JCX file in your application project to define the functionality of the control. To learn more about creating a JCX file for a built-in control, see Using a Built-In Control.

Table 4-4 Built-In Controls Used in the Office Equipment Order Management Business Processes

This Control... | Simplifies... | For example...
--- | --- | ---
Application View | Access to an enterprise application using an Application View. An Application View must be created using the Application View Console before it can be referenced using an Application View control. The procedure for building an Application View is outside the scope of the WebLogic Platform Tour. To learn more, see Overview: Application Integration in the WebLogic Workshop Help. | `Appview1.jcx` is an application view control that communicates with the company and factory inventory databases through an the Application Integration (AI) Application View called `e2eWorkflow_AppView1_ApplicationView-ejb.jar`. This Application View is imported into the `Modules` project folder. Use of this control is illustrated in the Order Requisition and Order New business processes.
EJB | Access to an EJB deployed from your application. The procedure for building an EJB is outside the scope of the WebLogic Platform Tour. To learn more, see Developing Enterprise Java Beans in the WebLogic Workshop Help. | `e2eOrderTrackingEJB.jcx` is an EJB control that tracks the status of the order throughout the process by interfacing with the Order Tracking EJB called `E2EOrderTrackingEJB.jar`. This EJB is imported into the `Modules` project folder. Use of this control is illustrated in all business processes.
Message Broker | Use of publish-and-subscribe functionality that is available with Message Broker, a message-based communication protocol that includes a powerful message filtering capability. | `Publish.jcx` is a Message Broker control that communicates with the Billing and Shipping business processes. Use of this control is illustrated in the Order New business process.
Process | Access to a business process in your project. | `OrderRequisitionControl.jcx` is a process control that starts the Order Requisition business process through the `OrderRequisitionControlWS.jws` file. Use of this control is illustrated in the Order Requisition business process.
`OrderNewControl.jcx` is a process control that starts the Order New business process. Use of this control is illustrated in the Order New business process.
Task | Access to a Worklist user interface, allowing your business process to manage work items and handle callbacks via the WebLogic Integration Worklist user interface. | `ManagerTask.jcx` is a task control that sends an asynchronous message to Rachel Burns, John Smith's manager, for approval of an office equipment order. Use of this control is illustrated in the Order Requisition business process.
Transformation | Mapping and conversion of data from one format to another. In this way, transformation logic is encapsulated within the transformation control and modifications to that logic do not impact the process definition. | `Transforms.dtf` is a transformation control that enables communication with the company and factory inventory databases when the inventory is checked. Use of this control is illustrated in the Order Requisition business process.
`TransformsInputMessage.dtf` is a transformation control that enables communication between business processes for an incoming order. Use of this control is illustrated in all business processes.
`TransformsNetworkMessage.dtf` is a`` transformation control that enables communication between the Message Broker and the Billing and Shipping business processes. The Message Broker uses an intermediary format to deliver a loosely-coupled system. Use of this control is illustrated in the Order New, Billing, and Shipping business processes.
Web Service | Access to any web service that publishes a WSDL (Web Service Definition Language) file. A WSDL file describes the methods and callbacks that a web service implements, including method names, parameters, and return types. The procedure for building a web service is outside the scope of the WebLogic Platform Tour. For more information, see Building Web Services in the WebLogic Workshop Help. | `NotifyManufacturingControl.jcx` is a web service control that communicates orders to the Manufacturing department through the `NotifyManufacturing.jws` web service. Use of this control is illustrated in the Order New business process.
`GenerateBillControl.jcx` is a web service control that generates a bill for the ordered item through the `GenerateBill.jws` web service. Use of this control is illustrated in the Billing business process.

The following sections step through each business process in detail by following the path of the nodes:

- Order Requisition Business Process
- Order New Business Process
- Billing Business Process
- Shipping Business Process

## Order Requisition Business Process

The Order Requisition business process defines the overall sequence of events that occur when someone at Avitek orders office equipment. The business process is started when an employee submits an order for office equipment. It proceeds as follows:

1. Employee submits the order for manager approval.

If the order is approved by the manager, the business process proceeds to the next step. If the order is rejected by the manager, the business process ends the ordering process.

2. The process checks the current inventory for the ordered item.

If the ordered item is available in the current inventory, the business process ends the ordering process. If the ordered item is not available in the current inventory, the business process invokes the New Order business process.

To view the Order Requisition business process in WebLogic Workshop, double-click the workflow/OrderRequisition.jpd file in the Application window.

As you step through each node description, perform the following steps:

1. Double-click the node in the business process to invoke the node builder and display details about the node.
2. Select View Code in the node builder (or by right-clicking the node), when applicable, to display the related code in the Source View window.

The following table describes each node in the Order Requisition business process.

Table 4-5 Stepping Through the Order Requisition Business Process

Business Process Node | Description
--- | ---
| Defines the event that starts the business process: an employee submits an order for office equipment. When you specify that the business process is Invoked via a Client Request with Return option, your Start node is displayed in expanded format. You can collapse the node view by clicking on the minus sign in the upper left-hand corner. To receive the order, the Client Request node calls the `clientRequest()` method that is exposed by the `OrderRequisitionControlWS.jws` web service. The web service uses the `OrderRequisitionControl` process control to invoke the business process. The order is passed as an `XMLObject` argument and the data is transformed to a `ClientRequestDocument` type using the data mapping tool. The Client Response node calls the `clientReturn()` method to return the results to the calling process. Note: For the WebLogic Platform Tour, the `OrderRequisitionControlWS.jws` web service was generated separately from the business process in order to decouple to business process and portal client applications. In addition, WebLogic Workshop enables you to generate a web service from a business process: right-click the business process and choose Generate WSDL File. Then, right-click the WSDL file and choose Generate Web Service.
| Transforms the message to the appropriate format. The Control Send with Return node uses `m_Ixform`, an instance of the `TransformsInputMessage.dtf` data transformation control, to call the `getWebserviceMessage()` method to transform the message received from the `ClientRequestDocument` type to the `InputDocument` type.
| Transforms the message to the appropriate format. The Control Send with Return node uses `m_Ixform`, an instance of the `TransformsInputMessage.dtf` data transformation control, to call the `getInput()` method to transform the message received from the `InputDocument` type to the `Input` type.
| Defines the method used to return the results to the calling process. The Client Response node calls the `clientReturn()` method to return the results to the calling process as a `String` argument.
| Defines the exception handler for the Client Request node. The Perform node calls the `invalidMessageHandler()` method to catch and handle an exception using your custom business logic. It is recommended that you add proper exception handlers, as required by your application. In particular, they should be added to the Start nodes in your business processes.
| Updates the status of the order. The Control Send with Return node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `create()` method to create a new order tracking ID and update its status to indicate that the order has been received.
| Sends an asynchronous message to Rachel Burns, requesting approval of the order for a new laptop. The Control Send node uses `m_Task`, an instance of the `ManagerTask.jcx` task control, to call the `createTaskByName()` method to create the new task.
| Sends an asynchronous message to Rachel Burns, requesting approval of the order for a new laptop. The Control Send node uses `m_Task`, an instance of the `ManagerTask.jcx` task control, to call the `assignTaskToUser()` method to assign the task to Rachel Burns.
| Updates the status of the order. The Control Send node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `setDescRemote()` method to indicate that the task has been assigned to the manager.
| Receives the approval response from Rachel Burns. The Control Receive node uses `m_Task`, an instance of the `ManagerTask.jcx` task control, to call the `onTaskCompleted()` method to return the response from Rachel Burns.
| Updates the status of the order. The Control Send node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `setDescRemote()` method to indicate that the task has been approved by the manager.
| Branches the business process flow, based on whether or not the order is approved by the manager. If the order is approved, then the business process proceeds to the Check Inventory node. If the order is rejected, then the order process ends. The Decision node calls the `isApproved()` Java method to branch the business process flow accordingly.
| Checks the company inventory for the ordered item. The Control Send node uses `m_AppView`, an instance of the `Appview1.jcx` Application View control, to call the `CheckInventoryAsset()` method to interface with the Application View to check the company inventory. The node also uses `m_Xform`, an instance of the `Transforms.dtf` data transformation control, to call the following methods: `createAssetRequest()` to transform the request received into the appropriate format. `isAvailable()` to determine if the item is available in the company inventory.
| Branches the business process flow, based on whether or not the ordered item is available in the company inventory. If the item is available, then the business process proceeds to the `UpdateAppStatusAvailability` node. If the item is not available, then the business process proceeds to the Not Available node. The Decision node calls the `isAvailable()` Java method to branch the business process flow accordingly.
| Updates the status of the order. The Control Send node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `setDescRemote()` method to indicate that the order is available in the local inventory.
| Branches the business process flow, based on whether the reason the ordered item is unavailable is lack of inventory or another condition. If the item is unavailable due to lack of inventory, then the business process proceeds to the `UpdateAppStatusNonAvailability` node. If the item is unavailable due to another reason, then the order process ends. The Decision node calls the `isNotAvailable()` method to branch the business process flow accordingly.
| Updates the status of the order. The Control Send node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `setDescRemote()` method to indicate that the order is not available in the local inventory.
| Starts the New Order business process to request the item that is out of stock. The Control Send node uses `m_OrderNew`, an instance of the `OrderNewItemControl.jcx` process control, to call the `receiveNewOrderRequest()` method to start the New Order business process.
| Updates the status of the order. The Control Send node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `setDescRemote()` method to indicate that the Order New business process has been invoked.

## Order New Business Process

The Order New business process defines the process for requesting a new item from the factory inventory, if the ordered item is not available in the company inventory.

The business process is started by the Order Requisition business process if the item is not available in the company inventory. The business process checks the factory inventory for the item. If the item is available in the factory inventory, the business process ends the ordering process. If the item is not available in the factory inventory, the business process notifies the Manufacturing department to produce a new item and initiates the Billing and Shipping business processes.

To view the Order New business process in WebLogic Workshop, double-click the workflow/OrderNew.jpd file in the Application window.

As you step through each node description:

1. Double-click the node in the business process to invoke the node builder and display details about the node.
2. Select View Code in the node builder (or by right-clicking the node), when applicable, to display the related code in the Source View window.

The following table describes each node in the Order New business process.

Table 4-6 Stepping Through the Order New Business Process

Business Process Node | Description
--- | ---
| Defines the asynchronous event that starts the business process: a call from the Order Requisition business process indicating that the ordered item is out of stock. The Client Request node receives the order as an `InputDocument` argument.
| Transforms the message to the appropriate format. The Control Send with Return node uses `m_Ixform`, an instance of the `TransformsInputMessage.dtf` data transformation control, to call the `getInput()` method to transform the message received from the `InputDocument` type to the `Input` type.
| Checks the factory inventory for the ordered item. The Control Send node uses `m_AppView`, an instance of the `Appview1.jcx` Application View control, to call the `CheckInventory()` method to interface with the Application View to check the factory inventory. The node also uses `m_xform`, an instance of the `Transforms.dtf` data transformation control, to call the following methods: `createFactoryRequest()` to transform the request received into the appropriate format. `isFactoryAvailable()` to determine if the item is available in the factory inventory.
| Retrieves the order tracking ID for the current order. The Control Send with Return node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `findByPrimaryKey()` method to locate the order tracking ID for the current order.
| Branches the business process flow, based on whether or not the ordered item is available in the factory inventory. If the item is available, the business process proceeds to the UpdateAppStatusAvailability node;. If the item is not available, then the business process proceeds to the Not Available node. The Decision node calls the `isAvailable()` Java method to branch the business process flow accordingly.
| Updates the status of the order. The Control Send node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `setDescRemote()` method to indicate that the order is available in the local inventory.
| Branches the business process flow, based on whether the reason the ordered item is unavailable is lack of inventory or another condition. If the item is unavailable due to lack of inventory, then the business process proceeds to the `UpdateAppStatusNonAvailability` node. If the item is unavailable due to another reason, the order process ends. The Decision node calls the `isNotAvailable()` method to branch the business process flow accordingly.
| Updates the status of the order. The Control Send node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `setDescRemote()` method to indicate that the order is not available in the local inventory.
| Notifies the Manufacturing department that a new item needs to be produced. The Control Send node uses `notifyManufacturingControl`, an instance of the `NotifyManufacturingControl.jcx` web service control, to call the `notifyMethod()` method to notify the Manufacturing department.
| Requests the Billing and Shipping departments to generate a bill for the new item (just produced by the Manufacturing department) and to ship it to the recipient. The Control Send node uses `mPublish`, an instance of the `Publish.jcx` Message Broker control, to call the `notifyMethod()` method to send requests to the Billing and Shipping departments. Before sending the requests, the node uses `m_NetTransform`, an instance of the `TransformsNetworkMessage.dtf` data transformation control, to call the `transformToBasicTypedNet()` method to transform the requests to an intermediary format, `NetMessageDocument`, in preparation for delivery to the Message Broker.

## Billing Business Process

The Billing business process defines the sequence of tasks required to bill for the ordered item.

The business process is started by the Order New business process if the item needs to be produced by the Manufacturing department. The business process checks the origin of the order. If the order was generated inside the company, the business process charges the appropriate department. If the order was generated outside of the company, the business process generates a bill and sends it to the recipient.

To view the business process in WebLogic Workshop, double-click the workflow/WorkflowBilling.jpd file in the Application window.

As you step through each node description:

1. Double-click the node in the business process to invoke the node builder and display details about the node.
2. Select View Code in the node builder (or by right-clicking the node), when applicable, to display the related code in the Source View window.

The following table describes each node in the Billing business process.

Table 4-7 Stepping Through the Billing Business Process

Business Process Node | Description
--- | ---
| Defines the asynchronous event that starts the business process: a billing-related message is received. The Client Request node uses `mPublish`, an instance of the `Publish.jcx` Message Broker control, to call the `subscription()` method to subscribe to the Message Broker, specifying `end2end/billingshipping` as the Channel name. The node uses a filter, comparing the `destination1` field in the `NetMessageDocument` argument received to the filter value, `billing`.
| Transforms the message from the Message Broker intermediary format, `NetMessageDocument`. The Control Send with Return node uses `m_netTransforms`, an instance of the `TransformsNetworkMessage.dtf` data transformation control, to call the `transformFromBasicNet()` method to transform the message received from the `NetMessageDocument` type, used by the Message Broker, to the `InputDocument` type.
| Transforms the message to the appropriate format. The Control Send with Return node uses `m_transformsInput`, an instance of the `TransformsInputMessage.dtf` data transformation control, to call the `getInput()` method to transform the message received from the `InputDocument` type to the `Input` type.
| Retrieves the order tracking ID for the current order. The Control Send with Return node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `findByPrimaryKey()` method to locate the order tracking ID for the current order.
| Updates the status of the order. The Control Send node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `setDescRemote()` method to indicate that the order has been received by the Billing department.
| Branches the business process flow, based on whether or not the order was generated inside the company. If the order is internal, the business process proceeds to the Charge Dept node. If the order is external to the company, then the business process proceeds to the Not Intra Company node. The Decision node calls the `isIntra()` method to branch the business process flow accordingly.
| Charges the appropriate department to process an order that is internal to the company. The Perform node calls the `chargeDept()` Java method to charge the appropriate department.
| Updates the status of the order. The Control Send node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `setDescRemote()` method to indicate that the department has been charged.
| Branches the business process flow, based on whether or not the order was generated external to the company. If the order is external, the business process proceeds to the GenerateBill node. If some other condition is raised, the order process ends. The Decision node calls the `isNotIntra()` method to branch the business process flow accordingly.
| Generates a bill for the order. The Control Send node uses `billCtrl`, an instance of the `GenerateBillControl.jcx` web service control, to call the `generateBill()` method to generate a bill for the order.
| Updates the status of the order. The Control Send node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `setDescRemote()` method to indicate that the bill has been generated.

## Shipping Business Process

The Shipping business process defines the sequence of actions required to deliver an ordered item.

The business process is started by the Order New business process if the ordered item needs to be produced by the Manufacturing department. The business process schedules the order for delivery and generates a shipping notification.

To view the business process in WebLogic Workshop, double-click the workflow/WorkflowShipping.jpd file in the Application window.

As you step through each node description:

1. Double-click the node in the business process to invoke the node builder and display details about the node.
2. Select View Code in the node builder (or by right-clicking on the node), when applicable, to display the related code in the Source View window.

The following table describes each node in the Shipping business process.

Table 4-8 Stepping Through the Shipping Business Process

Business Process Node | Description
--- | ---
| Defines the asynchronous event that starts the business process: a shipping-related message is received. The Client Request node uses `mPublish`, an instance of the `Publish.jcx` Message Broker control, to call the `subscription()` method to subscribe to the Message Broker, specifying `end2end/billingshipping` as the Channel name. The node uses a filter, comparing the `destination2` field in the `NetMessageDocument` argument received to the filter value, `shipping`.
| Transforms the message from the Message Broker intermediary format, `NetMessageDocument`. The Control Send with Return node uses `m_netTransforms`, an instance of the `TransformsNetworkMessage.dtf` data transformation control, to call the `transformFromBasicNet()` method to transform the message received from the `NetMessageDocument` type, used by the Message Broker, to the `InputDocument` type.
| Transforms the message to the appropriate format. The Control Send with Return node uses `m_transformsInput`, an instance of the `TransformsInputMessage.dtf` data transformation control, to call the `getInput()` method to transform the message received from the `InputDocument` type to the `Input` type.
| Retrieves the order tracking ID for the current order. The Control Send with Return node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `findByPrimaryKey()` method to locate the order tracking ID for the current order.
| Updates the status of the order. The Control Send node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `setDescRemote()` method to indicate that the order has been received by the Shipping department.
| Schedules the delivery of the ordered item. The Perform node calls the `schedule()` Java method to schedule the delivery.
| Updates the status of the order. The Control Send node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `setDescRemote()` method to indicate that the order has been scheduled for shipping.
| Generates a shipping notice for the ordered item. The Perform node calls the `shippingNotification()` Java method to generate the shipping notice.
| Updates the status of the order. The Control Send node uses `m_OrderTrack`, an instance of the `e2eOrderTrackingEJB.jcx` EJB control, to call the `setDescRemote()` method to indicate that a shipping report has been generated.