Go to primary content
Oracle® Retail Store Inventory Management Operations Guide
Release 15.0
E65670-03
  Go To Table Of Contents
Contents

Previous
Previous
 
Next
Next
 

2 Technical Architecture

This chapter describes the overall software architecture for SIM, offering a high-level discussion of the general structure of the system.

SIM Technology Stack

SIM has an n-tier architecture consisting of a client tier, a server tier, and a data tier. The client tier contains a PC client (a Java desktop application) and handheld devices. The server tier contains the SIM server (deployed as a J2EE application inside the Weblogic Application Server) and the Wavelink server (a standalone server for the handheld devices). The data tier consists of an Oracle 12.1 database and an LDAP directory.

Advantages of the Architecture

SIM's robust distributed computing platform enables enhanced performance and allows for scalability.

The n-tier architecture of SIM allows for the encapsulation of business logic, shielding the client from the complexity of the backend system. Any given tier need not be concerned with the internal functional tasks of any other tier.

The following list is a summary of the advantages that accompany SIM's use of an n-tier architectural design:

  • Scalability: Hardware and software can be added to meet retailer requirements for each of the tiers.

  • Maintainability: The separation of presentation, business logic, and data makes the software cleaner, more maintainable, and easier to modify.

  • Ease of integration: The reuse of business objects and function allows for faster integration to enterprise subsystems. N-tier architecture has become an industry standard.

  • High availability: Middleware is designed to run in a clustered environment or on a low-cost blade server.

  • Flexibility: The system allocates resources dynamically based on the workload.

SIM Technical Architecture Diagrams and Description

This section provides a high-level overview of SIM's technical architecture. Figure 2-1 illustrates the major pieces of the typical three-tiered SIM implementation. Descriptions follow the diagram.

Figure 2-1 Three-Tiered SIM Implementation


Client Tier

SIM can be deployed on a wide variety of clients, including a desktop computer, a hand-held wireless device, and a tablet from 15.0. The GUI is responsible for presenting data to the user and for receiving data directly from the user through the front end. The presentation tier only interacts with the middle tier (as opposed to the database tier). To optimize performance, the SIM PC front end facilitates robust client-side processing.

  • The PC side of SIM is built upon a fat client architecture, which was developed using Swing, a toolkit for creating rich Graphical User Interfaces (GUIs) in Java applications.

  • The handheld communication infrastructure piece, known as the Oracle Retail Wireless Foundation Server, enables the handheld devices to communicate with the SIM server. The handheld devices talk to the Oracle Retail Wireless Foundation Server, which in turn makes calls as a client to the SIM server.

  • Some SIM functionality is exposed as SOAP web service APIs. Make sure that these web services are headless. that is, no UI.

  • SIM has a tablet-UI for certain workflows.

Middle (Server) Tier

By providing the link between the SIM client and the database, the middle tier handles virtually all of the business logic processing that occurs within SIM's multi-tiered architecture. The middle tier is comprised of services, most of which are related to business functionality. For example, an item service gets items, and so on.Although all the clients use the middle tier's functionality differently, the middle tier is the same for all clients. For example, the handheld device, used on the fly, performs frequent commits to the database, while the PC performs more infrequent commits. The application is flexible in that it accommodates the different styles of client-driven processing.

The middle tier is designed to operate in a stateless manner, meaning it receives whatever instruction it needs to access the database from the client and does not retain any information between client calls. Further, SIM has failover abilities; if a specific middle tier server fails, processing can roll over to another SIM server for continued processing.

If the workload warrants, SIM can be vertically scaled by adding additional application servers. Because SIM servers are running on multiple application servers in a stateless system, work can be seamlessly distributed among the servers. The result of this feature is that SIM clients do not need to know that additional application servers have been added to help with the workload. SIM application servers can contain multiple containers, each of which is related to a unique Java Virtual Machine (JVM). Each container corresponds to a specific SIM instance. Introducing multiple instances of a container allows SIM retailers to more effectively distribute the processing among several containers and thereby horizontally scale the platform. As the request load for a service increases, additional instances of the service are automatically created to handle the increased workload.

The middle tier consists of the following core components, which allow it to make efficient and reliable calls to the SIM database:

  • Server services contain the pertinent business logic.

  • DAO classes handle database interaction.

  • Databeans contain the SQL necessary to retrieve data from and save data to the database.


    Note:

    There is at least one databean for every table and view in the database, but there may be more, used for different specific purposes.

Data Access Objects (DAO)

DAOs are classes that contain the logic necessary to find and maintain data persistence. They are used by services when database interaction is required.

Java Database Connectivity (JDBC)

DAOs communicate with the database through the industry standard JDBC protocol. In order for the SIM client to retrieve the desired data from the database, a JDBC connection must exist between the middle tier and the database. JDBC facilitates the communication between a Java application and a relational database. In essence, JDBC is a set of Application Programming Interfaces (APIs) that offer a database-independent means of extracting and/or inserting data to or from a database. To perform those insertions and extractions, SQL code also resides in this tier facilitating create, read, update, and delete actions.

Database Tier

The database tier is the application's storage platform, containing the physical data used throughout the application. The database houses data in tables and views; the data is used by the SIM server and then passed to the client. The database also houses stored procedures to do data manipulation in the database itself.

Distributed Topology

One of SIM's most significant advantages is its flexible distributed topology. SIM offers complete location transparency because the location of data and/or services is based upon the retailer's business requirements, not upon technical limitations. SIM's client server communication is an EJB call (which uses RMI). Because the server does not have to be in the same store as the in-store clients, the clients log onto the server over the wire.

SIM's client code makes use of helper and framework classes that contain the logic to look up remote references to EJBs on the server and make calls to them. These helper and framework contain no business logic but contain only enough code to communicate with the server.

For example, if a helper class is called by the client to perform the method update shipment, the helper class appears to have that capability, though in reality it only behaves as a passage to the EJB remote reference, which is looked up from the server. The EJB remote reference communicates across the network with the server to complete the business-logic driven processing. The server performs the actual update shipment business logic and returns any return values or errors to the client.

Connectivity between the SIM client and the middle tier is achieved through the Java Naming and Directory Interface (JNDI), which the SIM client accesses with the necessary IP address and port. JNDI contains the means for the client to look up services available on the application server.

Figure 2-2 SIM Deployments