
Contents
Primary Presentation
Element Catalog
For a description of elements not listed below, see OPC Module Uses View - Element Catalog.
PoEndPointBean
This class is a stateless session bean. It provides the implementation for the OpcPurchaseOrderService web service. When it receives a purchase order, it checks that all arguments are valid and if ok dispatches the order to the workflowmanager sending a message to a JMS queue.
WorkFlowManagerBean
This class is a message-driven bean. It is activated when there is a message in the queue. It processes two kinds of messages:
- purchase order message: in this case it calls the PoHandler class. The sequence diagram down below shows the interactions involved in processing a purchase order.
- invoice message: this is a message that came from one of the external suppliers in response for a booking order. WorkFlowManagerBean calls the InvoiceHandler class to take care of this messages.
WorkFlowManagerBean also sets a timer with the EJB container so that it is activated periodically to check the status of all pending orders.
PoHandler
The PoHandler class is not visible outside the workflowmanager package. It acts as a delegate of the WorkFlowManagerBean class to handle any purchase order request. When processing a request, it first uses POReceiver and processmanager to insert the order in the database in the Pending state. Then it calls CreditCardVerifier synchronously to charge the customer's credit card. If the credit card is OK, it sends a message to a JMS queue to be processed by OrderFillerBean. Finally, it sends another JMS message to CrmBean, which will create and send an email to the customer informing about the status of his order.
InvoiceHandler
The InvoiceHandler is not visible outside the workflowmanager package. It acts as a delegate of the WorkflowManagerBean class to handle any invoice it receives from any of the suppliers. When an invoice is received, InvoiceHandler basically uses processmanager to update the status of the corresponding order.
A given adventure package order may consist of:
- zero or one hotel booking
- zero, one or two airline flights (departing and returning flight)
- zero or more activity items
When InvoiceHandler receives the last invoice confirming completion of the reservation, it sends a JMS message to CrmBean to notify the customer via email.
CrmBean
This class is a message-driven bean. It is responsible for handling the communication with customers via email.
CreditCardVerifier
This class is used to verify the credit information for a user. It contacts an external web service to get the banking related information for the credit card number specified.
OrderFillerBean
This class is a message-driven bean. It is responsible for sending out all the booking requests to the airline, lodging and activity suppliers involved in a given purchase order.
POReceiver
The purchase order receiver's responsibility is to create a purchase order entity bean and persist it in a relational database. The POReceiver is implemented as a Java class and it creates a PurchaseOrder entity bean.
Invoice
This "value object" class holds the data for an invoice that arrives from any of the external suppliers. It has a method to provide an XML representation of the invoice.
Sequence diagram - purchase order within workflowmanager
Sequence diagram - order filling
Context Diagram
N/A
Variability Guide
SMTP host, message body contents, subject, sender address and reply-to address for all email messages sent by CrmBean are configurable via text files that can be changed at run time, but require reinitialization of the application to take effect. These files are implemented using standard Java i18n support.
Rationale
N/A
Related Views
Parent view: OPC Module Uses View