Material Handling Device Integration

This chapter covers the following topics:

Overview

The Oracle Warehouse Management Material Handling Device Integration Kit enables you to integrate Oracle Warehouse Management with various types of material handling equipment. The integration kit includes several different integration modes, can be used with several different types of devices, and is designed to grow as Oracle Warehouse Management adds integration capabilities.

Definition of Terms

The following terms are used in this document.

Warehouse Control System

The Warehouse Control System provides a bridge between Oracle Warehouse Management and material handling devices. It provides a framework for managing complex systems such as:

Each device must have one of the following components to communicate with the Warehouse Control System:

To enable the Warehouse Control System for your organization, you must set the WCS Enabled parameter on the Inventory tab of the Organization Parameters window. For more information, seeWarehouse Organization Setup and Defining Default Inventory Parameters, Oracle Inventory User's Guide.

Functional Process Overview

Oracle Warehouse Management enables you to export data through several different methods of material handling equipment. For example, to integrate with a carousel, you can set up Oracle Warehouse Management to export task data to a carousel each time that you perform a pick using a mobile handheld device. As soon as the system displays the task to pick, the carousel rotates to the appropriate slot.

To use material handling devices, you must perform the following steps:

If you are using bidirectional functionality, the material handling device informs the system of any task completion. When you use material handling, you can sign on to a device prior to accepting tasks. This limits the tasks the system assigns to you to the subinventory associated with the current device. You can also sign on to multiple devices simultaneously in order to accept tasks from multiple devices.

Note: Only one user may sign on to a device at a time, and you can configure the device to require a user to sign on prior to task dispatch.

Defining Devices

When you define devices, you specify the device name and integration method that Oracle Warehouse Management uses. You set up devices in the Define Devices window. See Defining Devices, Oracle Warehouse Management User's Guide

the picture is described in the document text

When you define a device, you must associate it with a device type. Oracle Warehouse Management supports the following devices types: carousel, scale, conveyer, pick-to-light, pick-to-audio, ASRS, manufacturing equipment, and RFID. The device type manufacturing equipment is associated with the device type ASRS. You cannot dispatch a task to this device; however, you must sign on to this type of device before you sign on to an ASRS device to perform tasks. You may also assign a model to refer to the device model. This information is available during device integration. It enables the integration layer to correctly identify the device syntax to use for sending commands to the device.

You can optionally identify devices that require you to export lot and serial information. In general, material handling devices do not need information about specific lots or serials associated to a task, but if necessary you can include this information.

Note: Lot and serial export is fully supported when exporting task information. The exception, when exporting information directly from mobile pages (such as Misc Receipt), lot and serial export may not be supported.

You must associate a device to a particular organization, and optionally associate it with a subinventory. You can sign on to a device associated with a subinventory to limit the tasks that you receive to that subinventory.

You can use the Notify on Task Completion parameter to notify Oracle Warehouse Management when a task is created and completed. Oracle Warehouse Management sends a task completion notification directly to the device, and the material handling device sends a task confirmation back to Oracle Warehouse Management when it completes the task.

The Force Sign on check box controls how the system dispatches tasks to the device. If the check box is selected, the system dispatches tasks from this subinventory only to the user who is signed on to the device. If the check box is clear, any user who is eligible to receive a task from that subinventory may receive a task.

The Employee column shows the user currently signed on to the device. If a user forgets to sign off of a device, an administrator can use the Sign Off option from the Tools menu to sign an employee off of the device. This enables another user to sign on to the device.

Assigning Devices to Business Events

The Assign Devices to Business Events window enables you to create associations between material handling devices and business events. The tree structure lists all supported business events. You can use the fields in the window to make assignments for individual devices and business events on the tree.

the picture is described in the document text

You can make device assignments at the following levels:

The Auto-Invoked check box enables an automatically invoked device to communicate with Oracle Warehouse Management. For devices that are invoked automatically, the system sends the integration information when you open the mobile page for the task. The auto-invoked option works only for business events associated with a task you perform, such as put away drop, pick load, and pick drop. This parameter is also used if the device is invoked when you press a hot key. For devices that are invoked when you press a hot key, the system sends the integration information when you press the hot key assigned to invoke the device.

Related Topics

Material Handling Devices and Business Events, Oracle Warehouse Management User's Guide

Device Sign On

Oracle Warehouse Management enables you to sign on to a particular device in order to restrict the tasks that you receive. When you initially navigate to the Tasks page, you can sign on to a device. You can use the Choose Eqp/Sub window to change devices if necessary. You can sign on to only those devices that are associated with subinventories. When you sign on to a device, you receive only tasks from the subinventory associated with the device.

the picture is described in the document text

Multiple Device Sign-On and Carousel Pods

Oracle Warehouse Management enables you to sign on to more than one device at a time. When you sign on to multiple devices, you receive tasks only from the subinventories associated to those devices. You receive tasks from the devices in the order in which you signed on to the devices. In addition, Oracle Warehouse Management dispatches tasks directly into your queue. The system sends the device integration information at task dispatch.

For instance, suppose you sign on to devices Carousel1, Carousel2, and Carousel3, in that order. When you attempt to accept the next task, you receive one task from each carousel dispatched into your queue (assuming there are available tasks from each carousel). At that time, the integration information is sent so that all three carousels may begin rotating for the first series of picks. The mobile interface displays the task information for the task from Carousel1 and prompts you to confirm the pick. Once you complete that task, the system asks you to confirm the pick for the task from Carousel 2. At the same time, the system dispatches you another task for Carousel1 and integration information for that task is sent in order for Carousel1 to continue rotating while you confirm the tasks for Carousel2 and Carousel3.

Response Messages

You can use the Warehouse Control System to create response messages that different devices can send. You can define the response messages to include various pieces of information, as well as to determine the information sequence. You create message templates and add components to the templates to create the response messages. The information that you can include in a message is provided as a list of seeded components. You can create three types of message templates: XML, message with delimiter, and message without delimiter. A message with delimiter uses a character such as a comma or semi colon to separate the components of the message. In a message without delimiter, the component length separates each component in the message.

Related Topics

Defining Response Messages, Oracle Warehouse Management User's Guide

Carousel Bridge

The carousel bridge functions as a transport layer between the Warehouse Control System and material handling devices. A one-to-one mapping exists between each device that you define in Oracle Warehouse Management and an instance of the carousel bridge on the middle tier. The configuration file carbri.xml controls the behavior of the carousel bridge.

To set up the device bridge, you must perform the following steps:

Directory Structure

You must create a directory structure for the carousel bridge with a subdirectory for each instance of the carousel bridge. You must create the directory under $APPL_TOP/cabri. In each subdirectory, create the following three files:

Carbri.xml File

The carbri.xml file controls the behavior of the carousel bridge. The following is a sample carbri.xml file:

<?xml version='1.0' encoding='windows-1252'?>

<CarBriSetup>
<!-- Protocol 1 is for Serial Port and Protocol 2 is for Socket -->
        <Device>
                <ID>12</12>
                <Protocol>2</Protocol>
                <JDBCURL>jdbc:oracle:thin:@ap619sdb.us.oracle.com:3909:logx4dv1</JDBCURL>
                        <Simulate>No</Simulate>
        </Device>

        <SocketInfo>
                <socketHostName>152.69.201.82</socketHostName>
                <socketPortNumber>4444</socketPortNumber>
                        <!-- This is the Trusted Client Port Number-->
                        <socketLocalPort>5170</socketLocalPort>
        </SocketInfo>

        <SerialPortInfo>
                <portName>COM2</portName>
                <serialPortTimeOutMillis>5000</serialPortTimeOutMillis>
                <baudRate>9600</baudRate>>
                <dataBits>8</dataBits>
                <stopBits>1</stopBits>
                <parity>0</parity>
        </SerialPortInfo>

        <AppsInfo>
                <dbcfile>D:\work\R12\MHP\CarBri\CarBri\dbc\ap619sdb_logx4dv1.dbc</dbcfile>
                <appsuser>MFG</appsuser>
                <password>WELCOME</password>
                <applicationshortname>WMS</applicationshortname>
                <responsibilitykey>WMS_WCS_USER</responsibilitykey>WMS_WCS_USER>
        </AppsInfo>

</CarBriSetup>
                                

Device Simulator Startup file

The device simulator enables you to test the Warehouse Control System without using a real device. It simulates:

The following is a sample simulator startup file. It is configured to listen on port number 4444. The only that client it connects to is 140.87.204.121 on port 5170.

##############################Sample startDS.sh##############################
#Param 1: TCP Socket Port number on which the DS is listening 
#Param 2: Trusted Client IP Address 
#Param 3: Trusted Client IP Port Number 
#Param 4: ASCII value, which the DS interprets as end of message from carbri 
#Param 5: Message sent back by DS on receiving end of message identifier

 java oracle.apps.wms.wcs.device.server.DummyDeviceServer 4444 140.87.204.121 5170 3 DONE
 ##############################Sample startDS.sh#############################

Carousel Bridge Startup Script

The following is a sample startup script for the carousel bridge:

##############################Sample startCarBri.sh############################# 
#Enter the directory where the config file carbri.xml is stored 
#setenv WCS_TOP /home/simran/junk/logutr12_CarBri 
#In order to see the images correctly on the login screen 
#ensure that in the same directory as WCS_TOP, there is a sub-directory 
#called 'images' 
#with a soft link to the files mentioned below 
#You can create a soft link in $WCS_TOP/images by the following commands 
#ln -s $FND_TOP/media/appslogo.gif 
#ln -s $FND_TOP/media/logo.gif 

CLASSPATH=/tmp/patch/wmsspprj_CarBri:$CLASSPATH 
java oracle.apps.wms.wcs.carbri.client.CarBriUI 
##############################Sample startCarBri.sh#############################

PL/SQL API Specification

When the device output method is API, then Oracle Warehouse Management calls the following PL/SQL package procedure:

WMS_DEVICE_INTEGRATION_PUB.SYNC_DEVICE_REQUEST(
      p_request_id            IN  NUMBER,
      p_device_id             IN  NUMBER,
      p_resubmit_flag         IN  VARCHAR2,
      x_status_code          OUT  VARCHAR2,
      x_status_msg           OUT  VARCHAR2,
      x_device_status        OUT  VARCHAR2

Input Parameters

Output Parameters

The main source of input for this procedure is the Global temporary table WMS_DEVICE_REQUESTS. This API references a particular device. The system reads all records from the temporary table that reference the device. After the system calls the API, it deletes the records from the temporary table, and archives the records in the history table.

Table Structure

The WMS_DEVICE_REQUESTS global temporary table holds transaction records associated with a device request. The WMS_DEVICE_REQUESTS_HIST table contains transaction records associated with all device requests.

Name Datatype Length Optional Comment
REQUEST_ID NUMBER - NOT NULL Request identified
TASK_ID NUMBER - - Task associated with request
RELATION_ID NUMBER - - Group ID associated with request
SEQUENCE_ID NUMBER - - -
TASK_SUMMARY VARCHAR2 1 - If this is a summary or detail record
TASK_TYPE_ID NUMBER - -  
BUSINESS_EVENT_ID NUMBER - NOT NULL Business Event Identifier
ORGANIZATION_ID NUMBER - NOT NULL -
SUBINVENTORY_CODE VARCHAR2 30 - -
LOCATOR_ID NUMBER - - -
TRANSFER_ORG_ID NUMBER - - -
TRANSFER_SUB_CODE VARCHAR2 30 -- -
TRANSFER_LOC_ID NUMBER - - -
INVENTORY_ITEM_ID NUMBER - - -
REVISION VARCHAR2 10 - -
UOM VARCHAR2 3 - -
LOT_NUMBER VARCHAR2 30 - -
LOT_QTY NUMBER - - -
SERIAL_NUMBER VARCHAR2 30 - -
LPN_ID NUMBER - - -
TRANSACTION_QUANTITY NUMBER - - -
DEVICE-ID NUMBER - NOT NULL -
STATUS_CODE VARCHAR2 1 NOT NULL -
STATUS_MSG VARCHAR2 240 - -
OUTFILE_NAME VARCHAR2 255 - Output file name generated for the request
REQUEST_DATE DATE - NOT NULL -
RESUBMIT_DATE DATE - - -

Device Response API Support

The Device Response API supports notification of task completion for outbound sales order picking tasks. You must use the pick release business event with the device integration toolkit to export tasks that you complete with the Device Response API. SeeAssign Devices to Business Events for more information about business events. In addition, the following restrictions exist:

PL/SQL Specification

The system calls this API for device confirmation after it inserts records into wms_device_requests table with business_event_id = 54 (for Task Confirmation) and device_status = S (for success). This API takes all the records from the wms_device_requests (WDR) temporary table for device_confimation business_event_id = 54 and device_status = S, processes them, and then transfers them to the wms_device_requests_hist (WDRH) table. If any records fail, the failed records are transferred to WDRH with the STATUS_CODE = E and the appropriate error message.

Note: This API should be called for single delivery_lines in a batch. You should not process picking lines from multiple deliveries simultaneously.

You can change only the following fields in the WMS_DEVICE_REQUESTS table from the suggested value:

There are no input parameters for the API.

The following list contains the output parameters for the API:

The following program listing contains the API specifications:

wms_device_confirmation_pub.device_confirmation(
         x_return_status OUT NOCOPY VARCHAR2
         ,x_msg_count OUT NOCOPY NUMBER
         ,x_msg_data  OUT NOCOPY VARCHAR2
         ,p_request_id IN NUMBER DEFAULT NULL
         ,x_successful_row_cnt OUT nocopy number
         );

Process Flow for Calling the Device Response API

API Exceptions

You must populate The following fields in the WMS_DEVICE_REQUESTS temp table before you call the Device Response API:

Data Exceptions

For exceptions in this category, the records in the history table are populated with the Status = E and the appropriate message is populated in the Error field of the Device History window. Some common errors are Invalid LPN, Invalid Lot, and Missing Child Record.

Exception Processing

For all exceptions in this category, the records in the history table are populated with Status = E and the appropriate message is populated in the Error field of the Device History window.

Error Records Re-submission

You can resubmit error records from the View Device Requests window. Once you resubmit the concurrent request, you can use the request ID to view the record details. After the concurrent processing completes, the record appears with a success or error message.

Transaction Discrepancies

When you use the API to return information that differs from the original task, (picking short or dropping to a different locator), you must enter a reason code to indicate the reason for the discrepancy in the REASON_ID column of the WMS_DEVICE_REQUESTS table. You can manage reason types in Oracle Warehouse Management. Use the Picking reason_type when you define a value for the Reason Code field.

Related Topics

Defining Transaction Reasons, Oracle Inventory User's Guide

Using the Device History Window to Simulate API Responses

You can use the Device History window to submit test requests through the Device Response API for testing and simulation purposes. You can use the Device History window in normal and debug modes. You define a mode as a form function parameter in the Device History window. Normal mode is the default value, and debug mode is used mainly for testing. In Normal mode, you can query for all records in the WMS_DEVICE_REQUEST_HIST table, and change only restricted columns of a record for error correction. You can also resubmit the record for processing, as well as delete the complete record.

In debug mode, you can change all columns in the Device History window. You can also insert a new record and submit it. In addition you can delete a record.

Note: You can submit and delete only one record at a time.

The following procedure lists the steps necessary to complete task records exported through the device integration at pick release:

  1. Identify the record with a business event that you want to use the Device Response API to complete.

  2. Enter the following fields in the View Device Requests window.

    • Request ID = Request ID of original record

    • Business Event = Task Confirm

    • Device = Original Device

    • Organization = Original Organization

    • Quantity = Picked Quantity

    • Device Type = Original Device Type

    • Parent Request ID = Request ID of original record

    • Status = “E” to allow submission through form

    • Device Status = S

    • Transfer LPN = LPN to pick into

    • Task ID = Original Task ID being confirmed

  3. Click Resubmit.

    Note: The system submits a concurrent request with the transaction.

Debug Mode

The following table gives an example of an exported and completed task using the Device History window in Debug mode. The table shows the values that appear in the window for both the original task and the completed task:

Field Original From Value Original To Value Completion Value
Request ID 1 1 1
Business Event Pick Release Pick Release Task Confirm
Device PLT_ASRS PLT_ASRS PLT_ASRS
Task Type Pick Putaway -
Item PLT100 PLT100 -
Organization W1 W1 W1
Subinventory PLT_ASRS - -
Transfer Organization W1 W1 -
Transfer Subinventory - STA -
Transfer Locator - L.1.1 -
LPN - - -
Rev - - -
Quantity 5 5 5
UOM Ea Ea -
Device Type ASRS ASRS -
Parent Request ID - - 1
Status S S E
Request Date 16-JUN-2003 9:44 16-JUN-2003 9:44 17-JUN-2003
Resubmit Date - - -
Resubmit Request ID - - -
Device Status - - S
Transfer LPN - - LPN16A
Reason - - -
Task ID 5790889 5790889 5790889

If you entered the values properly, pressing Resubmit submits the record. If the information that you entered is correct, then you will receive the following message: Number of records resubmitted is 1.

Debugging Notes

This log file has information about each step of the device integration execution. From this information, you can find out whether each step ran successfully or if errors occurred. The following is a sample the log file created during device integration:

WMS_DEVICE_INTEGRATION_PVT: ******* Device Request 15-01-02:12.35.48 *********
WMS_DEVICE_INTEGRATION_PVT: busev=5,callctx=U,task=,org=1990,sub=BULK,loc=4001
WMS_DEVICE_INTEGRATION_PVT: Task ID is null, retrieve_Bus_Event_Details
WMS_DEVICE_INTEGRATION_PVT: Select device for each request
WMS_DEVICE_INTEGRATION_PVT: in select device, org, sub, user, autoenable, bus:
WMS_DEVICE_INTEGRATION_PVT: 1990,BULK,3330,N,5
WMS_DEVICE_INTEGRATION_PVT: SelectDev: UserLevel not found
WMS_DEVICE_INTEGRATION_PVT: SelectDev: LocatorLevel not found
WMS_DEVICE_INTEGRATION_PVT: SelectDev: Deviceid=61
WMS_DEVICE_INTEGRATION_PVT: ### Submit request per device group 
WMS_DEVICE_INTEGRATION_PVT: !----Device_ID: 61, got iotype 4
WMS_DEVICE_INTEGRATION_PVT: going to call generate_xml_csv
WMS_DEVICE_INTEGRATION_PVT: In generate xml/csv, device_id = 61
WMS_DEVICE_INTEGRATION_PVT: Getting output dir, file name, lot/serial enabled, device name
WMS_DEVICE_INTEGRATION_PVT: Device supports lot/serial ? N
WMS_DEVICE_INTEGRATION_PVT: After checking device and detail info, l_task_sum=Y
WMS_DEVICE_INTEGRATION_PVT: Result will be saved in /sqlcom/out/logx4dv1 CONV_2_5224_61.csv
WMS_DEVICE_INTEGRATION_PVT: Opening csv cursor with dev_id=61,task_sum=Y
WMS_DEVICE_INTEGRATION_PVT:  File created 
WMS_DEVICE_INTEGRATION_PVT: update outfile_name CONV_2_5224_61.csv61Y
WMS_DEVICE_INTEGRATION_PVT:  Done with generate xml , retval 0 status_code: S
WMS_DEVICE_INTEGRATION_PVT: get message stack, count=0
WMS_DEVICE_INTEGRATION_PVT: Populate Request History
WMS_DEVICE_INTEGRATION_PVT: outfile_name=CONV_2_5224_61.csv
WMS_DEVICE_INTEGRATION_PVT:  Delete request rows 

Frequently Asked Questions

  1. What is the average size of the XML file created by Oracle Warehouse Management?

    The XML files that Oracle XML generates range in size from 300 bytes to 1 Kbyte. The size depends on the number of tasks on a single request. For a single request that contains a single task, the file is approximately 600 bytes.

  2. What must I do to ensure that the third-party label printing software can read the XML files that Oracle Warehouse Management produces?

    • Specify the directory for the XML files in the device definition setup. The database must also have write capability to the directory. The directory must be on a file system that is accessible to the database, and the directory must be included in the v$parameter list for utl_file_dir on the database.

    • Set the permissions on the file directory so that the software has access to both read and delete the XML file after processing.