Contents
1.
2.
Introduction............................................................................................................1 1.1
Overview................................................................................................................................. 1
1.2
Advantages.............................................................................................................................. 1
1.3
Software Updates .................................................................................................................... 2
Glossary ..................................................................................................................3 2.1
Device ..................................................................................................................................... 3
2.2
AS/RS ..................................................................................................................................... 3
2.3
Business Event ........................................................................................................................ 3
2.4
Device Directive ..................................................................................................................... 3
2.5
PLC ......................................................................................................................................... 3
2.6
DS ........................................................................................................................................... 3
2.7
Device Request Message ........................................................................................................ 3
2.8
Device Response Message ...................................................................................................... 4
2.9
Device Response Time............................................................................................................ 4
2.10 CarBri / Carousel Bridge........................................................................................................ 4
3.
4.
Schematic Details ...................................................................................................5 3.1
Schematic Diagrams ............................................................................................................... 5
3.2
Brief Description..................................................................................................................... 7
3.3
Recommended Implementation Strategy ................................................................................ 8
Setup........................................................................................................................9 4.1
Defining a Device in Oracle WMS ......................................................................................... 9
4.2
Assigning the Device to a WMS Business Event.................................................................. 10
4.3
Details from Device Vendor ................................................................................................. 10
4.4
Setting up the WCS Layer: ................................................................................................... 11 4.4.1 4.4.2 4.4.3
4.5
Setting up the Middle Tier .................................................................................................... 13 4.5.1 4.5.2 4.5.3 4.5.4
5.
WCS Enable the Organization .................................................................................... 11 Update the Organization Access Form ....................................................................... 11 Setup with Warehouse Control System Responsibility............................................... 12
Directory Structure to be created on the Middle Tier ................................................. 13 Create carbri.xml - configuration file for Carousel Bridge ......................................... 14 Create startup script for the Device Simulator – startDS.sh........................................ 16 Create startup script for the CarBri – startCarBri.sh ................................................... 16
Runtime.................................................................................................................17 5.1
Starting the listener jobs on the WCS layer .......................................................................... 17
5.2
Starting the real PLC/DS....................................................................................................... 17
Page ii of 76
5.3
Starting the CarBri ................................................................................................................ 18
5.4 Initiating a request from the Mobile UI – Example with Miscellaneous Receipt Business Event 20
6.
7.
8.
5.5
Simulating a Device Request from CarBri to PLC/DS ......................................................... 22
5.6
Simulating a Device Response from CarBri to Oracle WMS ............................................... 23
5.7
Simulating a Device Response from DS to Oracle WMS via CarBri ................................... 24
Application Monitoring .......................................................................................26 6.1
WCS Administrator Home.................................................................................................... 26
6.2
WCS Directive Queue........................................................................................................... 26
6.3
WCS Log .............................................................................................................................. 27
Trouble Shooting..................................................................................................29 7.1
I get an exception when I try to run startCarBri.sh ............................................................... 29
7.2
I hit a Control-P from the telnet UI but I do not see a device request on the CarBri ............ 29
7.3
The Carousel Log does not get written ................................................................................. 29
7.4
Get the message NULL Query and hence doing nothing...................................................... 30
7.5
Unable to start more than 2 WCS device listeners................................................................ 30
Document Reference............................................................................................35 8.1
Current Document References .............................................................................................. 35 8.1.1
Historical Document References ................................................................................ 35
9.
Appendix 1 – List of WMS Business Events......................................................36
10.
Appendix 2 – WCS Configuration settings – explained ...................................37
11.
Appendix 3 – Sample carbri.xml ........................................................................41
12.
Appendix 4 – Case Study.....................................................................................42 12.1 Schematic Process Flow configured for Pick Load Business Event .................................... 42 12.1.1 Identify the WMS Business events ........................................................................... 42 12.1.2 Setup Devices in Oracle WMS and assign them to appropriate Business Event/s.... 43 12.1.3 Procure information Device Request/Response message structure........................... 44 12.1.4 Map the WMS business event with the Device Request Message............................ 44 12.1.5 Use the WCS Administrator responsibility to detail the request structure for each device-level directive............................................................................................................... 56 12.1.6 Test between DB tier and the CarBri ........................................................................ 13 12.1.7 Test between DB tier, CarBri and the Device Simulator .......................................... 13 12.1.8 Test between DB tier, CarBri and the actual device ................................................. 13
13.
Appendix 5 – WMS_DEVICE_REQUESTS_WCSV View details ...................1
Page iii of 76
Table of Figures Figure 1 - Typical Schematic Diagram............................................................................................. 5 Figure 2 - WCS running with Device Simulator - Without PLC Tier .............................................. 6 Figure 3 - PLC running with Actual Device - With PLC Tier.......................................................... 7 Figure 4 - Define Device Form – New Device Type ‘Work Station’ ............................................... 9 Figure 5 - Output Type - API............................................................................................................ 9 Figure 6 - Multi Sign On Flag ........................................................................................................ 10 Figure 7 - Assign Device to Business Event................................................................................... 10 Figure 8 - Organization Access form.............................................................................................. 12 Figure 9 - WCS Configuration Settings.......................................................................................... 12 Figure 10 - Directory Structure to be created for CarBri on the Middle Tier ................................. 14 Figure 11 - Directory Structure for CarBri on the Middle Tier - View 2........................................ 14 Figure 12 - WCS Administrator Home ........................................................................................... 17 Figure 13 - Response Listener status .............................................................................................. 17 Figure 14 - Start Device Simulator ................................................................................................. 18 Figure 15 - Start CarBri .................................................................................................................. 18 Figure 16 - CarBri Login Screen .................................................................................................... 19 Figure 17 - Carousel Bridge Initialized .......................................................................................... 19 Figure 18 – Sign on to a Work Station before logging on to an ASRS .......................................... 20 Figure 19 - Sign on to ASRS .......................................................................................................... 20 Figure 20 - Initiate Device Request from Miscellaneous Receipt mobile UI ................................. 21 Figure 21 - The device request string sent to the DS via the CarBri............................................... 21 Figure 22 - DONE message in Carousel Log ................................................................................. 22 Figure 23 - Simulate from CarBri................................................................................................... 22 Figure 24 - Simulate Device Request from CarBri......................................................................... 23 Figure 25 - Simulate Device Response from CarBri ...................................................................... 23 Figure 26 - Simulated Device response on the WCS Log............................................................... 24 Figure 27 - Simulated Response from DS to CarBri....................................................................... 25 Figure 28 - Simulated Device Response from DS to WCS Log ..................................................... 25 Figure 29 - WCS Administrator Home ........................................................................................... 26 Figure 30 - WCS Directive Queue.................................................................................................. 27 Figure 31 - WCS Log ..................................................................................................................... 28 Figure 32 - NULL Query Issue on the Carousel Log...................................................................... 30 Figure 33 - Real life MHE Integration Scenario............................................................................. 42 Figure 34 - Subinventory setup....................................................................................................... 43 Figure 35 - Use Case 1 - Define Devices........................................................................................ 43 Figure 36 - Assign Device 'ASRS Crane 1' to Pick Load Business Event...................................... 43 Figure 37 - Sample directive settings based on tech specs for an ASRS and Sortation Conveyor . 44 Figure 38 - Note that there are 2 CarBri directories (1 for ASRS and 1 for Sortation Conveyor).. 10 Figure 39 - CarBri Settings for ASRS_C1...................................................................................... 11 Figure 40 - CarBri Settings for Sortation Conveyor SORT_1 ........................................................ 12
Introduction
Page iv of 76
1. Introduction
1.1 Overview Integration of WMS host systems with material handling equipment and automation systems can create challenges for logistics. Prior to this release, these integration challenges were addressed through a combination of Open API’s in Oracle WMS and a joint development with Oracle Consulting of a warehouse control system layer (WCS), that was external to the Oracle WMS product. With this release, the existing Open API integration capability is expanded and a new execution framework (WCS) has been incorporated into the Oracle WMS product. Together, these provide a more flexible definition and execution framework for managing existing and more complex integration requirements such as Pick to Light, A-frame, Conveyors and ASRS systems. During device setup, business events may be mapped to either the improved execution framework or to the Open API for the device integration. Through this flexible support, the management of a large variety of material handling equipment and automation systems can be managed directly from the host application environment without the need for an external WCS component.
1.2 Advantages After 11.5.10 CUI, an Oracle Customer can make use of a Warehouse Control System built into the E Business Suite, instead of relying on a third party system to communicate to devices such as •
Carousels (Horizontal and Vertical)
•
Scales
•
Conveyers
•
Pick to Light Systems
•
Pick to Audio (Pick to Voice)
•
Automated Storage and Retrieval Systems (ASRS)
To provide this communication to the devices requires a TCP/IP socket connect at the device level interface such as one of the following: •
A PLC configured with a NIC card.
•
A PC controller with a NIC card for socket communication, which brokers serial, connects to the device or PLC.
•
A Hardware Bridge controller with a NIC card for socket communication, which brokers serial, connects to the device or PLC.
Till 11.5.10 Oracle WMS provided a stub API. This was to be implemented by the Customer according to his needs. From 11.5.10.1CU, Oracle WMS provides an implementation of this stub API along with a framework for defining device request message structure, according to the device type being used.
Introduction
Page 1 of 76
1.3 Software Updates WCS Carousel Bridge Patch 4580210 - WMS Warehouse Control System Carousel Bridge Patch - with FND Images Prerequisite WCS Desktop Patches 4042499 - Supply Chain Management Family Pack J Rollup Patch 1 4522497 - Material Handling Integration Improvements - Post 11.5.10+ 4574068 - Material Handling Integration Improvements - Post 11.5.10+ 5200583 - WMS_CAROUSEL_INTEGRATION_PVT.RECEIVE_PIPE_LISTENER Response length too short
Introduction
Page 2 of 76
2. Glossary 2.1 Device This is equipment, typically used for material handling of large volumes in a warehouse. The devices currently supported are Carousels (Horizontal and Vertical), Scales, Conveyers, Pick to Light Systems, Pick to Audio (Pick to Voice) Automated Storage and Retrieval Systems (ASRS).
2.2 AS/RS Automatic Storage and Retrieval System. Automated, robotic system for storing and retrieving items in a warehouse.
2.3 Business Event It is a Functional event, which acts as a trigger for initiating a device request. Pick Load is an example of a business Event. Refer Appendix 1 for the list of WMS Business Events.
2.4 Device Directive It is a command string that needs to be sent from the ERP system (or any other system) to make a device perform a specific task. There are, almost always, multiple tasks (with a corresponding command string) that a device can perform. Each of these command stings is called a device directive. E.g., A light stack can turn on a Green light (task). An example of a command string it expects is BULK,B1.1.1,GREEN,ON. This message is very device and vendor specific and comprises a device directive specific to this light stack to turn on the Green Light on it.
2.5 PLC This stands for a Programmable Logic Controller. The device vendor along with all the supporting network hardware for his specific device typically provides this. The vendor will also publish the alphabet of the device i.e., the set of all directives that are understood by the device.
2.6 DS This stands for a Device Simulator. This is a software component to test the Warehouse Control System in the absence of a real device. The Device Simulator is capable of •
Running as a TCP/IP server
•
Listening on a specified port number
•
Allowing a trusted client IP address to connect from a trusted client port number
•
Being configured with an ASCII character to denote end of Request Message
•
Sending a configured response when the end of request message is reached
In summary, the DS replicates a PLC, when there is no PLC to test the WCS.
2.7 Device Request Message A command string (directive), triggered by a business event and sent from the (E Business Suite) EBS to the device controller to make the device perform a specific device task.
Glossary
Page 3 of 76
2.8 Device Response Message A character string returned by the device controller to the EBS as a response to a Device request that was sent earlier. The device could respond with a success or failure (with appropriate error message) or may not respond at all (So the requesting system will always need to assume that the device directive succeeded). The response characteristics are to be provided by the device vendor.
2.9 Device Response Time The processors on the PLCs are usually slower compared to the processors that run the ERP servers. Typically, the PLCs have a response time of 50 to 70 milliseconds. The device vendor for better integration with the Warehouse Control System of WMS should provide this detail.
2.10 CarBri / Carousel Bridge This is a middleware solution, introduced in 11.5.10CU1, which acts as the transport layer for Device Request Messages and Device Response Messages between the Database Tier of the E Business Suite and the PLC.
Glossary
Page 4 of 76
3. Schematic Details
3.1 Schematic Diagrams
Figure 1 - Typical Schematic Diagram
Schematic Details
Page 5 of 76
Figure 2 - WCS running with Device Simulator - Without PLC Tier
Schematic Details
Page 6 of 76
Figure 3 - PLC running with Actual Device - With PLC Tier
3.2 Brief Description There are 3 layers in the system. They are the database tier, the middle tier (which might be different from the DB tier where the Carousel Bridge Middleware will run) and the Program Logic Controller (PLC) layer. Once the initial setup has been done in EBS (see the section Document Reference), at runtime, device requests will originate from the Oracle ERP system. The Carousel Bridge middleware will function as a transport layer – talking to the DB on one end and to the device on the other end (or an emulator called the DS – Device Simulator) There will be a one-one mapping between a device defined in the Oracle WMS system and an instance of the Carousel Bridge on the middle tier. The behavior of the Carousel Bridge (CarBri) will be controlled be means of a configuration file carbri.xml, which is documented in a later section.
Schematic Details
Page 7 of 76
3.3 Recommended Implementation Strategy 1. 2.
3.
4. 5. 6. 7.
8.
Schematic Details
Identify the WMS Business events in the Business process where a device will be invoked. (Refer Appendix 1 for list of WMS Business events) Refer Oracle Warehouse Management System Material Handling Device Integration Kit for the standard Device setup (Creating Devices in Oracle WMS and assigning them to the appropriate business event). Procure information from the device Vendor about the Device Request message structure that the device understands. (E.g., a lightstack can understand 2 request directives – Turn on Green Light or Turn on Red Light. That is all the alphabet understood by the device) Map the WMS business event with the Device Request Message. (One WMS Business event may map to more than one Device-level directive) Use the new WCS Admin responsibility to detail the request structure for each devicelevel directive. Test between DB tier and the CarBri (set Simulate to Yes in carbri.xml (There is no need to plug in the Device to test at this point) Test between DB tier, CarBri and the Device Simulator (Set Simulate to No) and socketHostName to point to the IP address of the DS. Once this testing is satisfactory, the system is ready to be promoted to UAT. This step can be used to validate the device directives that are provided by the Device Vendor by testing message sending between the Device Simulator and the PLC and tweaking the WCS Directive settings if needed. Test between DB tier, CarBri and the actual device. The system will be fully functional at this point.
Page 8 of 76
4. Setup The objective of the setup illustrated in the following sections would be to perform ‘Miscellaneous Receipt’ using a device ‘ASRS_C1’ which has been setup for a Subinventory ‘ASRSC1’ in a WMS-enabled Organization ‘W1’ Setup checklist: •
Defining a Device in Oracle WMS
•
Assigning the Device to a WMS Business Event
•
Setting up the WCS Layer
4.1 Defining a Device in Oracle WMS Defining a device in Oracle WMS is documented in Oracle Warehouse Management System Material Handling Device Integration Kit. The setup for CU1 functionality is documented below. From CU1 there will be a new device type supported called ‘Work Station’ which works in tandem with devices of type ASRS. No WMS task can be dispatched to this type of device. But a user will need to sign on to a ‘Work Station’ before signing on to a device of Type ASRS to perform a task. Refer Appendix 4 to know more about usage of a device type Workstation.
Figure 4 - Define Device Form – New Device Type ‘Work Station’ Output Type is typically set to API to make use of the WCS request-processing framework.
Figure 5 - Output Type - API To accommodate the requirement where more than one user may need to sign-on to a single ASRS, there is a new check box called ‘Multi Sign On’ provided in CU1. For all device types other than ASRS, this should be unchecked.
Setup
Page 9 of 76
Figure 6 - Multi Sign On Flag
4.2 Assigning the Device to a WMS Business Event Assigning a device to a Business in Oracle WMS is documented in Oracle Warehouse Management System Material Handling Device Integration Kit. Please refer the same.
Figure 7 - Assign Device to Business Event
4.3 Details from Device Vendor Typically the following details must be procured from the device vendor before proceeding. •
Confirm from the device vendor that the device controller is capable of communicating using TCP/IP protocol and can function as a TCP/IP server socket.
•
The device vendor must publish the list of all directives supported by his device and the corresponding message structure for it.
•
For every request message to the device, the vendor must publish if there will be a response that the device is going to send back to the EBS. If yes, then the message structure for each of the response messages must be published.
•
Any other runtime characteristics of the device - like the device response time. (This detail can be used to set DIRECTIVE PAUSE DELAY described in Appendix 2)
For our test ASRS crane we assume that a device vendor ‘X’ has provided the following details. •
Directive Name is ‘MISC_RCPT’
•
Request Message structure to be sent to the device is ‘ .misc_rcpt.C.0.0.0.0.0000.ACTION..(AS1.1.1)..4.11826.AS1.1.1. ’ (This starts with ASCII 2 and ends with ASCII 3 and contains the transaction details in the request message)
•
Response Message from the device is a constant ‘DONE’
You will be making use of these details when setting up WCS. See the section titled WCS Configuration Settings
Setup
Page 10 of 76
4.4 Setting up the WCS Layer: Checklist for WCS Setup: •
WCS Enable the Organization
•
Update the Organization Access Form
•
Setup with Warehouse Control System Responsibility
4.4.1 WCS Enable the Organization Log in to Oracle Applications EBS with responsibility ‘Warehouse Manager’. On the ‘Organization Parameters’ form check the flag ‘WCS Enabled’ Note: Once this flag is enabled, any custom logic that a Customer had implemented by making use of the WMS Stub API (See Oracle Warehouse Management System Material Handling Device Integration Kit in the Document reference section) would not be called anymore. Instead the WMS-implementation of the stub API would be used to process device requests.
4.4.2 Update the Organization Access Form Insert 2 records in this form for the chosen Org, Application – ‘Warehouse Management’ and Name ‘Warehouse Control System User’ and ‘Warehouse Control System Administrator’
Setup
Page 11 of 76
Figure 8 - Organization Access form
4.4.3 Setup with Warehouse Control System Responsibility Log in to Oracle EBS with responsibility ‘Warehouse Control System Administrator’. Click ‘Setup’ Enter the Organization Code when prompted and click on ‘Choose’. (This step will fail even if one of the first 2 setup steps have not been done correctly) 4.4.3.1 Directive setup steps This step will be performed from the ‘Configuration’ page Directive Name, Directive Request Query and Directive Response Query are mandatory for a WMS Business Event. Directive Name will be mapped to a directive supported by the device type as provided by the vendor. Directive Request Query can be either a constant string (rarely the case) or a query on any table/view accessible to user APPS, using which, a request can be sent from the Oracle System to the device at runtime. Executing this query at runtime using bind variables p_request_id and p_task_id will populate the contents of the request string. Directive Response Query is also a query on any table/view accessible to user APPS. When WMS gets a response string from the device, it will compare the incoming string with the expected response. If they match then that directive will be marked as a ‘Success’. Note that some devices do not send a response back (this would be in the device specs provided by the vendor). In such a case the Directive Response Query need not be setup in the Configuration table and any request sent to the device will immediately be marked as a ‘Success’
Figure 9 - WCS Configuration Settings Note the following things in the sample config settings for one directive of our test ASRS crane. (Correlate these with the details provided in the section Details from Device Vendor)
Setup
Page 12 of 76
•
‘MISC_RCPT’ is the device directive that we are setting up here.
•
Directive Request Query is created based on the directive structure published by the device vendor. Here the request query is based on the view WMS_DEVICE_REQUESTS_WCSV (See Appendix 5 for column details of this view). For a Customer, the source of data for the request message could be any other table/tables.
•
Directive Response Query has been set to a constant ‘DONE’ (as published by the device vendor). Had it not been a constant string that the device sends as a response message, then the Directive Response Query would also have been a SQL Query to construct the message dynamically at runtime based on what the device is expected to send back as response. (When the expected device response matches the runtime device response then that directive is marked as a ‘Success’)
•
Sequence ID column matches all the 3 configuration records for the same device type and Business Event. What this means, is that ‘MISC_RCPT’ is a directive published by the device vendor and the request message that it expects is defined by the Directive Request Query and the expected response for that directive is defined by a Directive Response Query. The common thread to list them all is the sequence id.
The above setup process would be repeated for each device directive that we intend to make use of. 4.4.3.2 Optional setup steps Refer Appendix 2 for detailed explanation of the WCS Configuration settings.
4.5 Setting up the Middle Tier Checklist for setting up the Middle Tier •
Create Directory Structure
•
Create carbri.xml
•
Create startup script for Device Simulator
•
Create startup script for Carousel Bridge
4.5.1 Directory Structure to be created on the Middle Tier The recommended installation location for the CarBri middleware is on the middle tier under $APPL_TOP/carbri. Create a subdirectory under this for each instance of the CarBri. (Note that there is a one to one mapping between each device defined in WMS and a CarBri installation on the middle tier)
Setup
Page 13 of 76
Figure 10 - Directory Structure to be created for CarBri on the Middle Tier
Figure 11 - Directory Structure for CarBri on the Middle Tier - View 2
4.5.2 Create carbri.xml - configuration file for Carousel Bridge Refer Appendix 3 for a sample carbri.xml file. Each element in the configuration file is explained in the table below
Setup
Page 14 of 76
Number
Element
Sample Value
How to get the value
Device 1.
ID
Device ID defined in Oracle WMS
Y
2.
Protocol
2
3.
JDBCURL
jdbc:oracle:thin:@ap6171rt.us. oracle.com:1521:wmsdv11i
4.
Simulate
No
Responsibility: Warehouse Manager Form: Define Devices Query the device that you are currently setting up. Click on Help > Diagnostics > Examine. Enter the apps password if prompted. Block: DEVICES Field: DEVICE_ID Note the value. This will be the value to be entered in carbri.xml 2 denotes TCP/IP – which is currently supported by CarBri This is the JDBC Url where you need to specify the Database hostname, TNS Listener port and Database SID. If this element is set to Yes then there is no need to plug in the DS or the PLC to test the Device Integration Framework. If this element is set to No then either the DS or the PLC must be started up and made available on the LAN before starting the CarBri This will be the IP address of the host where the DS is running or the IP address of the PLC on the network. This setting will take effect only if Simulate is set to No. This will be the TCP/IP server listener port. If using the DS then this can be specified as a runtime parameter. If using the PLC then this can be setup-using software usually provided by the PLC vendor. This is the only trusted client port from where the TCP/IP server will accept connections. If using the DS then this can be specified as a runtime parameter. If using the PLC then this can be setup-using software usually provided by the PLC vendor.
Y
SocketInfo socketHostName 5.
140.87.204.121
6.
socketPortNumber
4444
7.
socketLocalPort
5170
SerialPortInfo portName 9. serialPortTimeOutMillis 10. baudRate 11. dataBits 12. stopBits 13. parity 14. AppsInfo dbcfile 15.
Setup
COM2 5000 9600 8 1 0 /appmgr/wmsspprjappl/fnd/11. 5.0/secure/ap6171rt_wmsspprj. dbc
Typically Modified?
N Y
Y
Y
Y
N N N N N N On the middle tier look for the DBC file under $FND_TOP/secure. Specify the full path in this element
Y
Page 15 of 76
Number
Element
Sample Value
How to get the value
16.
appsuser
MFG
17.
password applicationshortname
WELCOME WMS
Oracle Applications username (With WCS User Responsibility) Oracle Applications password
responsibilitykey
WMS_WCS_USER
18. 19.
Typically Modified?
Y Y N N
4.5.3 Create startup script for the Device Simulator – startDS.sh This sample DS is configured to listen on port number 4444. The only client that it will allow itself to be connected to is 140.87.204.121 from port number 5170 on the client. On getting ASCII 3 (which identifies end of device request) the DS will respond with a ‘DONE’ ##############################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#############################
4.5.4 Create startup script for the CarBri – startCarBri.sh ##############################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#############################
Setup
Page 16 of 76
5. Runtime 5.1 Starting the listener jobs on the WCS layer Log in to EBS with responsibility ‘Warehouse Control System Administrator’. Click on ‘Home’. Enter Org Code when prompted and click on ‘Choose’. You will be taken to the WCS Administrator Home. Locate your device and ensure that •
‘Listener Status’ shows a Green arrow (if it is red, click on it to make it green)
•
Click on ‘Job Status’ once to start the listener job.
Figure 12 - WCS Administrator Home To ensure that the listener job is running ok, navigate to Setup tab > Log
Figure 13 - Response Listener status Note the last updated column. It will give an indication that the job is running on the DB tier and listening for incoming requests.
5.2 Starting the real PLC/DS On the Middle Tier start the DS as shown below. (There will be no output shown on the terminal, but the DS is listening to incoming requests)
Runtime
Page 17 of 76
Figure 14 - Start Device Simulator For starting the PLS TCP/IP listener, please refer the device vendor documentation.
5.3 Starting the CarBri On the Middle Tier, in a different terminal window, start the CarBri as shown below.
Figure 15 - Start CarBri Click Connect on the CarBri Login Screen.
Runtime
Page 18 of 76
Figure 16 - CarBri Login Screen When the Carousel Bridge has initialized successfully, it should appear as shown below.
Figure 17 - Carousel Bridge Initialized
Runtime
Page 19 of 76
5.4 Initiating a request from the Mobile UI – Example with Miscellaneous Receipt Business Event Connect via a telnet client to the MWA server (get the hostname and port number details from your System Administrator). Login with EBS username/password and responsibility as ‘Whse Mgmt’ Navigate to ‘Tasks > Change Sign-ons’ Enter ‘Organization Code’ when prompted. Enter ‘Device’ If the device type being used is ASRS, logon to a ‘Work Station’ before logging on to the ASRS Device. For all other Device Types, directly log on to the Device.
Figure 18 – Sign on to a Work Station before logging on to an ASRS
Figure 19 - Sign on to ASRS From the Main Mobile Menu, navigate to Warehousing > Inventory > Receipts > Misc Receipt Enter the transaction details and hit Ctrl+P Note: This Miscellaneous Receipt is an example of a ‘User-Initiated’ device request. All the transaction details need to be entered by the user and only then can the request be sent to the device based on the Ctrl+P hotkey. There could also be an ‘Auto-invoked’ device request. For e.g. for Business
Runtime
Page 20 of 76
event ‘Pick Load’ if the device is set to auto-invoke true in the ‘Assign Device to Business Events’ form then as soon as the user navigates to the Pick Load page, then the suggested Subinventory/locator, item, qty etc are used to fire a request to the device automatically (no hotkey needed).
Figure 20 - Initiate Device Request from Miscellaneous Receipt mobile UI
Figure 21 - The device request string sent to the DS via the CarBri
Note that in the above figure, the DS responded with a ‘DONE’ (as it was configured to) and the same appears in the WCS Log page shown below.
Runtime
Page 21 of 76
Figure 22 - DONE message in Carousel Log
5.5 Simulating a Device Request from CarBri to PLC/DS It is possible to simulate Device Request (from CarBri to DS/PLC) or Device Response (from CarBri to WMS). This step can be used to validate the device directives that are provided by the Device Vendor by testing message sending between the Device Simulator and the PLC and tweaking the WCS Directive settings if needed.
Figure 23 - Simulate from CarBri Click on Simulate > Device Request and type a message that you wish to send to the DS/PLC. Click ‘Send’
Runtime
Page 22 of 76
Figure 24 - Simulate Device Request from CarBri In the above figure, note that the message is appended with ‘$3$’. This will send and ASCII 3 to the DS/PLC. The DS is configure to respond with a ‘DONE’ on getting an ASCII 3 (which happens as expected)
5.6 Simulating a Device Response from CarBri to Oracle WMS Click on Simulate > Device Response and type a message that you wish to send to WMS. Click ‘Send’
Figure 25 - Simulate Device Response from CarBri Note that $2$ from the CarBri has been sent to the Database as a CHR(2) – which is the ASCII value of 2. The simulated response can be viewed in the WCS Log shown below.
Runtime
Page 23 of 76
If we set Simulate to Yes in carbri.xml then the CarBri will not send any auto-reply. The user will need to go to menu item 'Simulate' > 'Response' and type the response and hit the 'Send' button so that the message gets sent to the DB. Note that if you want to have an ASCII character (like an ASCII 2) in the response then you should type $2$ followed by a space (if it is in the beginning of a message) or a $2$ with a space before (if the ASCII character is at the end of a message) e.g. Message typed in CarBri Simulate > Response dialog window: $2$ PLT100 PABULK PB1.1.1 500 LOT003 LPN0158 SUCCESS $2$ Here the response message is PLT100 PABULK PB1.1.1 500 LOT003 LPN0158 SUCCESS When the user hits the send button then an ASCII 2 will get attached to the front of the message and an ASCII 3 will get attached to the end of the message. In the Carousel Log it will turn up as CHR(2) PLT100 PABULK PB1.1.1 500 LOT003 LPN0158 SUCCESS CHR(2) in a form understandable to the DB Note 1: ASCII 2 is a non-printable character and will show up as
on the CarBri
Note 2: ASCII 2 or 3 or any other character is vendor dependent. It has to be specified in the tech specs by them. The implementer will need to setup the directive_response_query in the WCS layer accordingly. In effect we can support any vendor message structure.
Figure 26 - Simulated Device response on the WCS Log
5.7 Simulating a Device Response from DS to Oracle WMS via CarBri Type a response message on the DS terminal window and hit ‘Enter’. You will see the same message on the CarBri as shown below.
Runtime
Page 24 of 76
Figure 27 - Simulated Response from DS to CarBri The same will be reflected on the WCS Log as shown below.
Figure 28 - Simulated Device Response from DS to WCS Log After this step, the DS can be replaced seamlessly by the real PLC (by changing the socketHostName in carbri.xml - to point to the IP address of the PLC instead of the DS) The system will be fully functional when all the directives supported by the Device are setup correctly in the steps described above.
Runtime
Page 25 of 76
6. Application Monitoring 6.1 WCS Administrator Home The WCS Administrator from the Home Page can monitor the Application. The Administrator can •
Monitor the directives for each individual device
•
Get a graphical representation of the same
•
Monitor the Employees and the Devices they are currently signed on to
•
Sign off users from any device if needed
•
Check standard Workflow Notifications
Figure 29 - WCS Administrator Home
6.2 WCS Directive Queue The Administrator can navigate to this screen by clicking an item in the Message Status Table for a particular device on the WCS Home Page or navigate via Setup > Directive Queue
Application Monitoring
Page 26 of 76
Figure 30 - WCS Directive Queue Note that a WCS directive record can have one of 5 statuses – Pending, Current, Success, Failure or Cancelled. Each of these statuses for a record in the Directive Queue table is explained briefly below: •
Pending: This is the initial status of a record in the Directive Queue table
•
Current: This is the status of the record when the request has been sent to the Device and WCS is waiting for a response
•
Success: This is the status of the record when the device has sent a response message, which exactly matches the expected response configured in WCS. If the device is not expected to send a response back to WCS, then the record is directly marked as ‘Success’ after sending the request message to the device.
•
Failure: This is the status of the record when one of the following occurs – a response message is received by the WCS from the device which does not match the expected response or the maximum request attempts (configurable in WCS as DIRECTIVE MAX ATTEMPTS) are reached or there is no response from the device for a time period more than the timeout (Configurable in WCS as DIRECTIVE RESPONSE TIMEOUT)
•
Cancelled: The WCS Administrator can choose to cancel any directive at any point. Such records are updated in the queue table with a status of ‘Cancelled’. They will not be processed when sending messages to the device.
6.3 WCS Log Whether or not the WCS Log will get written will be governed by the standard INV Debug profile.
Application Monitoring
Page 27 of 76
Figure 31 - WCS Log
Application Monitoring
Page 28 of 76
7. Trouble Shooting 7.1 I get an exception when I try to run startCarBri.sh Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using 'localhost.0' as the value of the DISPLAY variable. at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) at sun.awt.X11GraphicsEnvironment.access$000(X11GraphicsEnvironment.java:53) at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:142) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.X11GraphicsEnvironment.
(X11GraphicsEnvironment.java:131) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68) at java.awt.Window.init(Window.java:270) at java.awt.Window.(Window.java:318) at java.awt.Frame.(Frame.java:419) at oracle.apps.wms.wcs.carbri.client.CarBriUI.(CarBriUI.java:39)
at oracle.apps.wms.wcs.carbri.client.CarBriUI.main(CarBriUI.java:415)
Solution: Set the value of the Environment Variable DISPLAY correctly e.g., setenv DISPLAY 144.25.77.219:240.0 startCarBri.sh
7.2 I hit a Control-P from the telnet UI but I do not see a device request on the CarBri Solution: Check the Directive Request Query for syntactic correctness Check that the device ID in carbri.xml matches the Device, which is initiating the request.
7.3 The Carousel Log does not get written Solution: Enable the INV Debug profile before using WCS.
Trouble Shooting
Page 29 of 76
7.4 Get the message NULL Query and hence doing nothing
Figure 32 - NULL Query Issue on the Carousel Log Solution: Ensure that the Directive Name is not too long (it has a limit of 16 characters). e.g. Directive name setup as SEND_DELETE_WAVE_014 will result in an error shown above. Directive name setup as PAN_014 will work fine.
7.5 Unable to start more than 2 WCS device listeners Run the following query. Notice that the default value for parameter job_queue_processes is 2.
Trouble Shooting
Page 30 of 76
At the SQL* Prompt SET JOB_QUEUE_PROCESSES to at least the number of devices (Check with the DBA on the number of processes permitted for the current user)
On the WCS Admin Home Page, click on Stop all Jobs
Trouble Shooting
Page 31 of 76
Click on Recreate All Jobs
Click on Start All Jobs
Trouble Shooting
Page 32 of 76
Query the Carousel Log on the Setup tab without any query criteria
Trouble Shooting
Page 33 of 76
Here you would be able to see all the listeners (corresponding to each device) up and running.
Trouble Shooting
Page 34 of 76
8. Document Reference 8.1 Current Document References
Document Name
Comments
Release 11i10 Consolidated Update 1 (CU1) Oracle Supply Chain Management
Version: 1.0 Section 3.2.2.4 Built-in Material Handling Control System (WCS) Explaining Material Handling Devices Pages 6-26 to 6-41
Oracle® Warehouse Management User’s Guide Release 11i
8.1.1 Historical Document References
Author
Document Name
URL
Paul Taylor
Oracle Warehouse Management System Material Handling Device Integration Kit
https://metalink.oracle.com/cgibin/cr/getfile.cgi?p_attid=151811.1:283345
Document Reference
Page 35 of 76
9. Appendix 1 – List of WMS Business Events •
Cycle Count
•
Direct Receipt
•
Inspection
•
Misc/Acct Receipt
•
Misc/Acct Issue
•
Move Order Task Allocation
•
Organization Transfer
•
Pick Load
•
Pick Drop
•
Pick Release
•
Putaway Drop
•
Ship Confirm
•
Standard/Inspection Receipt
•
Subinventory Transfer
•
Task Cancel
•
Task Complete
•
Task Confirm
•
Task Skip
•
Truck Load
•
Truck Load and Ship
•
WIP Pick Release
Note 1: Till 11.5.10CU1 there is no capability for WCS to provide a response to complete the functional WMS transaction. We do have the task confirmation API but is it limited in the business events that it can be used to confirm. For the workaround refer Appendix 2 under Configuration Parameter DIRECTIVE EXECUTE ACTION. That is an example of how to complete a WMS functional flow (Org transfer in this case) at the end of processing a set of device directives for moving the material. Note 2: There are a number of autonomous systems provided by various device vendors which function as Autonomous Cycle Counting systems (No request needs to be sent from the ERP system before the MHE comes back with the results of the Cycle Count). Such systems can be supported once there is an open API provided by Oracle WMS for Cycle Counting. This is not currently supported and is planned for a future release.
Appendix 1 – List of WMS Business Events
Page 36 of 76
10. Appendix 2 – WCS Configuration settings – explained These are the details of the settings that the WCS Administrator needs to perform before using WCS functionality of Oracle WMS. The mandatory setups have been marked with a ‘Y’
Configuration Parameter
Functional Description
Mandatory
Default Value
DEVICE ACCESS TIMEOUT
N Placeholder for future enhancement
DEVICE ACCESS TYPE
Placeholder for future enhancement
DIRECTIVE NAME
There should be at least one Directive defined for a device type, business event, and sequence combination. This Directive will have a corresponding Request/Response query.
Y
DIRECTIVE CASCADE FAILURE
If set to 'Y' and if the current directive fails due to max attempts reached, then the rest of the directives in sequence too get marked as failed.
N
N
--
DIRECTIVE DEPENDENCY SEG ID
This config parameter is to configure a certain block of directives fire only when an earlier block of directives has completed. This config parameter is used to define the segment locator to start the comparison in determining the sequence id dependency. This is not used unless the DIRECTIVE DEPENDENCY SEQ ID is set and active.
DIRECTIVE DEPENDENCY SEQ ID
This config parameter is to setup a list of dependent directives to execute in a particular order.
N
--
N
DIRECTIVE DEVICE ID
If the value of this parameter is set then the device id stamped in the directive queue record will be sourced from this configuration setting for the business event, sequence, and device type combination. If this value is NULL then the value of the task device id will be utilized.
N
DIRECTIVE ERROR 1
A device directive will succeed in 1 way; but may fail in many different ways. This is a configuration setting, which will allow the user to configure the directive error message that can be coming back from the device. Note: Directive Error Name is configurable, but the action that is supposed to happen when the directive errors is not configurable. This could be reserved for later with the Edge Server and BRM (Business Rules Manager) coming into the picture.
DIRECTIVE ERROR 2
-Do-
DIRECTIVE ERROR 3
-Do-
DIRECTIVE
-Do-
Appendix 2 – WCS Configuration settings – explained
N --
N N N
Page 37 of 76
ERROR 4 DIRECTIVE ERROR 5
-DoIf a particular directive has this configuration value set to 'Y', when we fire the device request, then instead of sending a directive to the DBMS PIPE, we will do an execute immediate for that directive.
DIRECTIVE EXECUTE ACTION
N N
N
A good example for this is when the user wishes to perform an Organization transfer as the last step in a sequence of 5 device directives. He can set up the last directive with the Directive Execute Action set to 'Y' and for that Directive Request Query, he will make an API call for the Organization Transfer. With this approach, we do not need any code changes to support different APIs that may need to get called at the directive level for each different Customer-Device Vendor configurations (the directives are Device Vendor dependent)
DIRECTIVE MAX ATTEMPTS
This configuration is to set the maximum number of times that WMS will try to send a directive to the device (without getting a response) before marking the directive as a Failure in the queue table. By default, we will try to send the directive 3 times.
N
3
N
0
DIRECTIVE PAUSE DELAY
Configurable parameter to slow down the application at directive request level if the hardware is unable to keep pace. The delay specified for this configuration value will be in seconds. There are some devices, which have a response times varying between 50 milliseconds and a few seconds. By making this a configurable parameter, WMS can support very fast and relatively slow devices. By default, the value for this configuration is set to 0.
If the value of this parameter is set then the pipe name stamped in the directive queue record will be sourced from this configuration DIRECTIVE PIPE setting for the business event, sequence, device type combination. NAME If this value is NULL then the value of the pipe name will be taken from the PIPE_NAME configuration value.
N
A good example is the locator full scenario, where we are using the ASRS to Putaway material to a locator, which is Full. The device returns an error condition and we want an alternate directive to fire. These are called fallback directives. These are set to be initially in Cancelled state ('X') and will become Current DIRECTIVE ('C') only when the previous directive has failed with a 'FULL' QUEUE STATUS condition. This fallback directive will fire and route the material from the ASRS to an Exceptions station where the Supervisor can take corrective action.
N
P
If this is not set, then the default will be 'P' Pending. For fallback directives, this should be set to 'X' Cancelled. DIRECTIVE When we try to update the directive queue table to any status QUEUE UPDATE (Current/Failure/Pending/Success/Cancelled), we will take the Appendix 2 – WCS Configuration settings – explained
N
Page 38 of 76
device type, business event, sequence combination and query this configuration setting. This will yield the Directive that we are trying to narrow down and update in the queue table. (The 3rd directive should not be marked as a Success when we get a response for the 1st directive) This is applicable only when we need to make use of dependent directives. This can be a query or an API call (provided Directive Execute Action is set to 'Y'). At runtime, WMS will perform an execute immediate on this configuration value, populate the directive queue table and fire the request to the DBMS PIPE on which the Carousel Bridge is listening.
Y
DIRECTIVE REQUEST QUERY DIRECTIVE RESPONSE QUERY
This will be the response that we are expecting back from the device. If the actual response matches the one that we are expecting then the directive queue record will be marked as a success.
Y
DIRECTIVE RESPONSE TIMEOUT
This configuration setting is to control the number of seconds that the 'Current' directives in the queue table should remain in that state before timing out. By default, the timeout delay is 20 seconds.
N
20
N
ON
N
Device Id
Inside the listener process, when we call the DBMS PIPE.receive_message API then we need to specify a pipe PIPE TIME OUT timeout period. If there is no record in the config table then the default value is taken as 5 seconds.
N
5
QUEUE PURGE
N
3600
This configuration serves as the 'ON/OFF' switch for the DBMS job which is listening to the responses coming back from the device (there will be one job per device). At runtime, when the WCS Administrator tries to create a new job from the OAF Home then this configuration setting will be created in the configuration PIPE LISTENER table and the value is defaulted to 'ON'. SWITCH
--
From the UI, if the Administrator wishes to suspend the job then, he can click a UI control, which set this configuration to 'OFF'. The UI control serves as a toggle and can be used to turn the listener ON or OFF any number of times. There will be 2 pipes associated with each device. They will be OUT_ and IN_ See Section 6.3 schematic diagram. The value for this configuration parameter should be set to the Device Id (in the Define Devices form) and the sequence should also be set to the device id. PIPE NAME If this configuration does not exist when the WCS Administrator tries to start a listener job on the DB then there will be a PIPE_NAME configuration created in the config table with the default value as the device id for which he is trying to start the DBMS JOB.
The directive queue table can grow very quickly. Every time we
Appendix 2 – WCS Configuration settings – explained
Page 39 of 76
INTERVAL
process the directive queue, we also purge the queue. All records with status Success, Failure, Pending are candidates for purging. How often we need to purge can be configured using this parameter. By default, we will purge the records once every hour. Note: If there are dependent directives and at least one of them is a fallback directive then the queue_purge_interval should be set to a high value. Otherwise, the fallback directives, which have the status ‘Cancelled’ to start with will get purged before the earlier directive, can fail.
TASK ADDR
This configuration parameter is set at device type and business event level. This will be utilized be the Carousel Bridge component when it writes to the IN Pipe. It will write to things to the pipe, the TASK_ADDR and the actual response string.
N
--
This is for backward compatibility, where some devices need to identify the hardware needs to identify itself to WMS as the source of the response. TASK ALTERNATIVE SEGMENT
N Unused N
F
TASK GROUP
This parameter is used to control task grouping at the time of processing the request. If this parameter is set to 'T' then skip the whole group of tasks. This ensures that it is an all or nothing condition. Using this parameter it is possible to control the load on a device (requests / hour)
N
--
TASK ZONE
For a device type and business event, this can be configured. This will get stamped on the Directive queue record. But later in the code it is unused.
Appendix 2 – WCS Configuration settings – explained
Page 40 of 76
11. Appendix 3 – Sample carbri.xml Given below is a sample carbri.xml file. This controls the runtime behavior of the CarBri Middleware. Typically modified element values are highlighted in bold red.
12 2 <JDBCURL>jdbc:oracle:thin:@ap6171rt.us.oracle.com:1521:wmsdv11i <Simulate>No <SocketInfo> <socketHostName>140.87.204.121 <socketPortNumber>4444 <socketLocalPort>5170 <SerialPortInfo> <portName>COM2 <serialPortTimeOutMillis>5000 9600 8 <stopBits>1 <parity>0 <AppsInfo> /appmgr/wmsspprjappl/fnd/11.5.0/secure/ap6171rt_wmsspprj.dbc MFG <password>WELCOME WMS WMS_WCS_USER
Appendix 3 – Sample carbri.xml
Page 41 of 76
12. Appendix 4 – Case Study 12.1 Schematic Process Flow configured for Pick Load Business Event Here is a scenario, which is more complex and is closer to what you would typically expect at a Customer site.
Figure 33 - Real life MHE Integration Scenario In the scenario illustrated above, a user signs-on to a workstation (there are typically 3-4 workstations) and an ASRS Crane. The user initiates a device request to perform a ‘Pick Load’ Business event. This sets off a chain of directives to be sent to two devices (ASRS Crane and Sortation Conveyor), in a controlled fashion so that they work in tandem to complete the ‘Pick Load’ operation without the user having to move from his workstation. In this Business use case we will make use of the Recommended Implementation Strategy elucidated in Section 3.3
12.1.1 Identify the WMS Business events Identify the WMS Business events in the Business process where a device will be invoked. (Refer Appendix 1 for list of WMS Business events). In the present use case the WMS Business event being implemented is ‘Pick Load’
Appendix 4 – Case Study
Page 42 of 76
12.1.2 Setup Devices in Oracle WMS and assign them to appropriate Business Event/s Refer Oracle Warehouse Management System Material Handling Device Integration Kit for the standard Device setup (Creating Devices in Oracle WMS and assigning them to the appropriate business event). In the present use case,
Figure 34 - Subinventory setup
Figure 35 - Use Case 1 - Define Devices
Figure 36 - Assign Device 'ASRS Crane 1' to Pick Load Business Event
Appendix 4 – Case Study
Page 43 of 76
12.1.3 Procure information Device Request/Response message structure Procure information from the device Vendor about the Device Request message structure that the device understands. After perusing the technical specifications supplied by the device vendor, we are in a position to fill the following table. This would be helpful in creating the WCS Configuration settings.
12.1.4 Map the WMS business event with the Device Request Message Map the WMS business event with the Device Request Message. (One WMS Business event may map to more than one Device-level directive) Note: For a device type-business event-sequence id combination, if DIRECTIVE_EXECUTE_ACTION is set to ‘Y’ then the contents of ‘DIRECTIVE_REQUEST_QUERY’ will be executed at the time of firing a request. This feature can be made use of to call a PL/SQL API or execute an anonymous PL/SQL block. Else if DIRECTIVE_EXECUTE_ACTION is not set or set to ‘N’ then there is no API call made. Instead the Request Message is sent to the Device via the CarBri. This is detailed in Column 3 of the table below. Also note that the directives in red italics are initially set to ‘Cancelled’ using the directive queue status. They are activated at runtime if some directive upstream fails (and that upstream directive has Directive Cascade failure set to ‘N’) Figure 37 - Sample directive settings based on tech specs for an ASRS and Sortation Conveyor Seq. No.
1
Directive
For request: Send Message or Execute code
RESET_ATTEMP TS
Execute Code
What does it do and why?
What: Resets attempts and last update on the Directive queue table for 3 business events. Also inserts a record in the Carousel Log table Why: For a trial run during testing, the PLC needs to be reset so that the consultant can create a fresh environment for the PLC to function. This optional directive
Appendix 4 – Case Study
Sample Request Message
Sample Response Message
Comments on WCS settings
DIRECTIVE_QUEUE_STATUS is X (cancelled) to start with. This can be reset to P (pending) and then when the Device request is fired, this directive will take effect and update the queue table and insert into the log table. If DIRECTIVE_QUEUE_STATUS is not set then the default value is taken as P
If Directive RESET_ATTEMPTS fails then the rest of the directives must not fail. So DIRECTIVE_CASCADE_FAILURE must be set to N
At runtime no messages are to be sent. Rather an anonymous PL/SQL program unit is to be called. DIRECTIVE_EXECUTE_ACTION is set to Y
This directive is to be attempted only once. If it fails after the first attempt it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 1.
Page 44 of 76
Seq. No.
Directive
For request: Send Message or Execute code
What does it do and why?
Sample Request Message
Sample Response Message
invokes any PL/SQL code that may need to be invoked at the time of initialization. 2
RESET_ROUTE
Execute Code
Comments on WCS settings
We are to wait for 1 second for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 1.
What: Calls an API
If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y
reset_directive _execution Why: When there is an alternative route needed by a tote due to an unexpected full slot, there can be an API setup with this directive to suggest an alternative destination for the tote (usually the Exceptions Station)
Since this is a call to an API set DIRECTIVE_EXECUTE_ACTION to Y
This directive is to be attempted only once. If it fails after the first attempt it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 1.
This directive is always supposed to fire. It should not be in cancelled state to start with. Set DIRECTIVE_QUEUE_STATUS to P
We are to wait for 1 second for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 1.
10
PickASRS_61_71
Send Message
What: Fires the request message to the ASRS_C1 to PICK from Rack and Load shuttle Why: This is a step in the series of messages to be sent to the device for making the various parts of the device to perform in tandem. This will be in
Appendix 4 – Case Study
_61,1,__,00 00,DONE00 ,,AS1.1.1._
If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y
This directive is to be tied to the next 2 directives. This will comprise a set of dependent directives. i.e., The request for the second directive should fire only when the first directive is marked as a success. Since there are 3 directives in the dependent set the DIRECTIVE_DEPENDENCY_SEG_I D to 1,2,3 This directive is the first in the set of 3 dependent directives. Set the DIRECTIVE_DEPENDENCY_SEQ_I D to 10
Page 45 of 76
Seq. No.
Directive
For request: Send Message or Execute code
What does it do and why?
Sample Request Message
Sample Response Message
accordance with the message structure published by the device vendor.
Comments on WCS settings
This directive is to be attempted 20 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 20.
This directive is always supposed to fire. It should not be in cancelled state to start with. Set DIRECTIVE_QUEUE_STATUS to P
We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.
20
Divert4SHT_63_7 2
Send Message
What: Fires a request to DIVERT to Exit the Crane / Unload the Shuttle
63,1,13,0000, DIVERT,,AS1. 1.1.
_63,1,__,00 00,DONE00 ,,AS1.1.1._
This directive is to be attempted 20 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 20.
Why: This is a step in the series of messages to be sent to the device for making the various parts of the device to perform in tandem. This will be in accordance with the message structure published by the device vendor. 30
RESETSCAN_00_ 75
Send Message
What: This is the reset scan for the tote. Why: This is a reset
Appendix 4 – Case Study
If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y
This directive is always supposed to fire. It should not be in cancelled state to start with. Set DIRECTIVE_QUEUE_STATUS to P
We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.
_75,6,16,00 00,DONE00 ,,0000.00.0. 0000_
If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y
Page 46 of 76
Seq. No.
Directive
For request: Send Message or Execute code
What does it do and why?
Sample Request Message
Sample Response Message
message specific to a scanner (as specified by the vendor)
Comments on WCS settings
The request message should be routed to the CarBri corresponding the CarBri for the Conveyor. (There is one CarBri for every device defined in WMS) Set the DIRECTIVE_DEVICE_ID to 41 This is the Device ID from the Define Devices form for the Sortation conveyor SORT_1. (If DIRECTIVE_DEVICE_ID is not set then the request will be sent by default to the ASRS_C1 device.)
This directive is to be attempted 240 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 240.
DIRECTIVE_PIPE_NAME must be set to the same value as DIRECTIVE_DEVICE_ID – 41 in this case.
DIRECTIVE_QUEUE_STATUS is X (cancelled) to start with. This can be reset to P (pending) at runtime and then when the Device request is fired, this directive will take effect. If DIRECTIVE_QUEUE_STATUS is not set then the default value is taken as P
We are to wait for 30 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 30.
40
Divert2WS_63_6 4
Send Message
What: Fires a request to DIVERT to Sortation conveyor Why: This is one of the messages that needs to be sent in the message sequence to route the tote from the
Appendix 4 – Case Study
63,6,06,0000, DIVERT,,AS1. 1.1.
_63,6,__,00 00,DONE00 ,,AS1.1.1._
When a ‘Cancel Task’ is performed, there should be a way to isolate all the records, which are candidates to be marked with X (Cancelled). The way to accomplish this is to set the DIRECTIVE_CANCEL_TASK to Divert2WS_63_64 (same as the Directive).
If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y
Page 47 of 76
Seq. No.
Directive
For request: Send Message or Execute code
What does it do and why?
ASRS to the Pick Station.
Sample Request Message
Sample Response Message
Comments on WCS settings
When a ‘Complete Task’ is performed, there should be a way to isolate all the records, which are candidates to be marked with S (Success). The way to accomplish this is to set the DIRECTIVE_COMPLETE_TASK to Divert2WS_63_64 (same as the Directive).
The request message should be routed to the CarBri corresponding the CarBri for the Conveyor. (There is one CarBri for every device defined in WMS) Set the DIRECTIVE_DEVICE_ID to 41 This is the Device ID from the Define Devices form for the Sortation conveyor SORT_1. (If DIRECTIVE_DEVICE_ID is not set then the request will be sent by default to the ASRS_C1 device.)
This directive is to be attempted 15 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 15.
DIRECTIVE_PIPE_NAME must be set to the same value as DIRECTIVE_DEVICE_ID – 41 in this case.
This directive is always supposed to fire. It should not be in cancelled state to start with. Set DIRECTIVE_QUEUE_STATUS to P
We are to wait for 120 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 120.
When a ‘Skip Task’ is performed, there should be a way to isolate all the records, which are candidates to be marked with X (Cancelled). The way to accomplish this is to set the DIRECTIVE_SKIP_TASK to Divert2WS_63_64 (same as the Directive).
Appendix 4 – Case Study
Page 48 of 76
Seq. No.
44
Directive
For request: Send Message or Execute code
TaskComplete44
Send Message
What does it do and why?
What: This fires the last directive to get the LPN to the Workstation where the operator is stationed Why: To indicate the the ERP system that the task is done.
Sample Request Message
Sample Response Message _99,6,16,00 00,TC0000, LPN26A,00 00.00.0.000 0_
Comments on WCS settings
When a ‘Cancel Task’ is performed, there should be a way to isolate all the records, which are candidates to be marked with X (Cancelled). The way to accomplish this is to set the DIRECTIVE_CANCEL_TASK to TaskComplete44 (same as the Directive).
If Directive TaskComplete44 fails then the rest of the directives must not fail. So DIRECTIVE_CASCADE_FAILURE must be set to N
When a ‘Complete Task’ is performed, there should be a way to isolate all the records, which are candidates to be marked with S (Success). The way to accomplish this is to set the DIRECTIVE_COMPLETE_TASK to TaskComplete44 (same as the Directive).
The request message should be routed to the CarBri corresponding the CarBri for the Conveyor. (There is one CarBri for every device defined in WMS) Set the DIRECTIVE_DEVICE_ID to 41 This is the Device ID from the Define Devices form for the Sortation conveyor SORT_1. (If DIRECTIVE_DEVICE_ID is not set then the request will be sent by default to the ASRS_C1 device.)
This directive is to be attempted 9 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 9.
DIRECTIVE_PIPE_NAME must be set to the same value as DIRECTIVE_DEVICE_ID – 41 in this case.
Appendix 4 – Case Study
Page 49 of 76
Seq. No.
Directive
For request: Send Message or Execute code
What does it do and why?
Sample Request Message
Sample Response Message
Comments on WCS settings
This directive is always supposed to fire. It should not be in cancelled state to start with. Set DIRECTIVE_QUEUE_STATUS to P
We are to wait for 400 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 400.
When a ‘Skip Task’ is performed, there should be a way to isolate all the records, which are candidates to be marked with S (Success). The way to accomplish this is to set the DIRECTIVE_SKIP_TASK to TaskComplete44 (same as the Directive).
50
NULL4SCAN_00 _75
Send Message
What: Fires a null request and expects a response containing the LPN information to come back from the device for the LPN scan event from the Sortation Conveyor Why: This message is needed to initiate a scan event from the sortation conveyor.
_75,6,16,00 00,DONE00 ,LPN30B,00 00.00.0.000 0_
If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y
The request message should be routed to the CarBri corresponding the CarBri for the Conveyor. (There is one CarBri for every device defined in WMS) Set the DIRECTIVE_DEVICE_ID to 41 This is the Device ID from the Define Devices form for the Sortation conveyor SORT_1. (If DIRECTIVE_DEVICE_ID is not set then the request will be sent by default to the ASRS_C1 device.)
DIRECTIVE_PIPE_NAME must be set to the same value as DIRECTIVE_DEVICE_ID – 41 in this case.
This directive is always supposed to fire. It should not be in cancelled state to start with. Set DIRECTIVE_QUEUE_STATUS to P
Appendix 4 – Case Study
Page 50 of 76
Seq. No.
Directive
For request: Send Message or Execute code
What does it do and why?
Sample Request Message
Sample Response Message
Comments on WCS settings
We are to wait for 30 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 30.
60
Divert2ASRS63_ 64
Send Message
What: Sends the directive to DIVERT the LPN to the ASRS
63,6,05,0000, DIVERT,,AS1. 1.1.
_63,6,05,00 00,DONE00 ,,AS1.1.1._
Why: This is one of the steps in the series of operations to be performed in the entire ASRS pick cycle. This is in accordance with the message structure specified by the Device Vendor.
If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y
The request message should be routed to the CarBri corresponding the CarBri for the Conveyor. (There is one CarBri for every device defined in WMS) Set the DIRECTIVE_DEVICE_ID to 41 This is the Device ID from the Define Devices form for the Sortation conveyor SORT_1. (If DIRECTIVE_DEVICE_ID is not set then the request will be sent by default to the ASRS_C1 device.)
This directive is to be attempted 15 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 15.
DIRECTIVE_PIPE_NAME must be set to the same value as DIRECTIVE_DEVICE_ID – 41 in this case.
We are to wait for 120 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 120.
70
PICK2CS_61_71
Send Message
What: Sends the second part of the directive to route the LPN to the Crane Why: This is one of the steps in the series of operations to
Appendix 4 – Case Study
_61,1,__,00 00,DONE00 ,,AS1.1.1._
If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y
This directive is to be attempted 20 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 20.
Page 51 of 76
Seq. No.
80
90
Directive
PUT4SHT_62_72
TOTE4SHT_63_7 2
Appendix 4 – Case Study
For request: Send Message or Execute code
Send Message
Send Message
What does it do and why?
be performed in the entire ASRS pick cycle. This is in accordance with the message structure specified by the Device Vendor. What: Sends the directive to PUTAWAY the LPN to the Load Shuttle Why: This is one of the steps in the series of operations to be performed in the entire ASRS pick cycle. This is in accordance with the message structure specified by the Device Vendor. What: If the directives that are ahead in the queue fail and they are set to Directive Cascade Failure N then these directives can be fired.
Sample Request Message
Sample Response Message
Comments on WCS settings
We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.
62,1,09,0000, PUTAWY,,AS 1.1.1.
_62,1,__,00 00,DONE00 ,,AS1.1.1._
If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y
This directive is to be attempted 20 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 20.
We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.
63,1,1,13,,D IVERT,LPN1 03A,AS1.1.1.
_63,1,__,0 000,DONE 00,LPN34 A,AS1.1.1. _
If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y
This directive is to be attempted 20 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 20.
Page 52 of 76
Seq. No.
Directive
For request: Send Message or Execute code
What does it do and why?
Sample Request Message
Sample Response Message
These are termed as the fallback directives or Plan B directives.
DIRECTIVE_QUEUE_STATUS is X (cancelled) to start with. This can be reset to P (pending) at runtime and then when the Device request is fired, this directive will take effect. If DIRECTIVE_QUEUE_STATUS is not set then the default value is taken as P
Why: This is a provision for a fallback plan.
100
Send Message
What: Sends the second part of the directive to the Sortation Conveyor for step 2 of Plan B Why: This is part of the fallback plan.
Comments on WCS settings
We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.
63,6,06,000 1,DIVERT,LP N34A,AS1.10 23.21.
_63,6,__,0 000,DONE 00,LPN34 A,AS1.21.3 45._
If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y
The request message should be routed to the CarBri corresponding the CarBri for the Conveyor. (There is one CarBri for every device defined in WMS) Set the DIRECTIVE_DEVICE_ID to 41 This is the Device ID from the Define Devices form for the Sortation conveyor SORT_1. (If DIRECTIVE_DEVICE_ID is not set then the request will be sent by default to the ASRS_C1 device.)
This directive is to be attempted 20 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 20.
We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.
DIRECTIVE_QUEUE_STATUS is X (cancelled) to start with. This can be reset to P (pending) at runtime and then when the Device request is fired, this directive will take effect. If DIRECTIVE_QUEUE_STATUS is not set then the default value is taken as P
Appendix 4 – Case Study
Page 53 of 76
Seq. No.
Directive
For request: Send Message or Execute code
What does it do and why?
Sample Request Message
Sample Response Message
Comments on WCS settings
DIRECTIVE_PIPE_NAME must be set to the same value as DIRECTIVE_DEVICE_ID – 41 in this case.
110
FullASRS_61_71
Send Message
_61,0,__,0 000,DONE 00,0F0000 ,AS1.1090. 21._
What: This kicks off the chain of events when the ASRS is FULL Why: If the storage location is full then the system must be setup to handle such an eventuality. This is the means of achieving it.
If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y
This directive is to be attempted 20 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 20.
DIRECTIVE_QUEUE_STATUS is X (cancelled) to start with. This can be reset to P (pending) at runtime and then when the Device request is fired, this directive will take effect. If DIRECTIVE_QUEUE_STATUS is not set then the default value is taken as P
We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.
120
Full4SHT_63_72
Send Message
What: This directive will be fired when the shuttle is full and the remaining directives need to wait for sometime so that they can make use of the shuttle Why: This is to handle the queue when many totes are vying to be put onto the shuttle
Appendix 4 – Case Study
63,8,13,000 0,DIVERT,8F 0000,AS1.109 8.23.
_63,4,__,0 000,DONE 00,4F0000 ,AS1.1034. 23._
If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y
This directive is to be attempted 15 times. If it fails after that it is to be marked as a failure. So set DIRECTIVE_MAX_ATTEMPTS to 15.
DIRECTIVE_QUEUE_STATUS is X (cancelled) to start with. This can be reset to P (pending) at runtime and then when the Device request is fired, this directive will take effect. If DIRECTIVE_QUEUE_STATUS is not set then the default value is taken as P
Page 54 of 76
Seq. No.
Directive
For request: Send Message or Execute code
What does it do and why?
Sample Request Message
Sample Response Message
before moving on to the ASRS locator. 130
Send Message
What: This will send the second part of the directive to the device for the Shuttle Full message Why: This is needed to indicate to any incoming requests for occupation of the shuttle by totes [via scans]. This will indicate to the totes whether they can occupy the shuttle or not.
Comments on WCS settings
We are to wait for 60 seconds for a response. Set DIRECTIVE_RESPONSE_TIMEOUT to 60.
63,6,06,000 0,DIVERT,5F 0000,AS1.102 5.25.
_63,6,__,0 000,DONE 00,4F0000 ,AS1.1304. 20._
If this directive fails then the rest of the directives in queue should also fail. For this feature, set DIRECTIVE_CASCADE_FAILURE to Y
The request message should be routed to the CarBri corresponding the CarBri for the Conveyor. (There is one CarBri for every device defined in WMS) Set the DIRECTIVE_DEVICE_ID to 41 This is the Device ID from the Define Devices form for the Sortation conveyor SORT_1. (If DIRECTIVE_DEVICE_ID is not set then the request will be sent by default to the ASRS_C1 device.)
DIRECTIVE_PIPE_NAME must be set to the same value as DIRECTIVE_DEVICE_ID – 41 in this case. DIRECTIVE_QUEUE_STATUS is X (cancelled) to start with. This can be reset to P (pending) at runtime and then when the Device request is fired, this directive will take effect. If DIRECTIVE_QUEUE_STATUS is not set then the default value is taken as P
Appendix 4 – Case Study
Page 55 of 76
12.1.5 Use the WCS Administrator responsibility to detail the request structure for each device-level directive These changes are to be done on the screen shown in “Figure 9 - WCS Configuration Settings”. The values that are to be filled up in this configuration table will be as discussed in the previous section (based on the technical specifications of the device messages provided by the device vendor and after mapping the appropriate directives to the WMS Business Events)
Appendix 4 – Case Study
Page 56 of 76
Device Seq Biz Type Id Event Pick ASRS 1 Load Pick ASRS 1 Load Pick ASRS 1 Load Pick ASRS 1 Load Pick ASRS 1 Load
Name
Value
DIRECTIVE
RESET_ATTEMPTS
DIRECTIVE_CASCADE_FAILURE
N
DIRECTIVE_EXECUTE_ACTION
Y
DIRECTIVE_MAX_ATTEMPTS
1
DIRECTIVE_QUEUE_STATUS
X
DIRECTIVE_REQUEST_QUERY
select 'declare ' ||chr(10)||'l_dummy number;' ||chr(10)||'pragma autonomous_transaction; ' ||chr(10)||'begin ' ||chr(10)||'UPDATE WMS_CAROUSEL_DIRECTIVE_QUEUE SET ATTEMPTS = 0, LAST_UPDATE_DATE = SYSDATE, LAST_ATTEMPT = SYSDATE WHERE BUSINESS_EVENT_ID IN (3,5,10) AND SEQUENCE_ID > 1 AND REQUEST_ID = '|| request_id||' AND -99 != :P_REQUEST_ID AND -99 != :P_TASK_ID; ' ||chr(10)||'insert into wms_carousel_log (carousel_log_id,text,device_id,last_update_date,last_updated_by, creation_date,created_by,last_update_login) values (wms_carousel_log_s.nextval,'||'''RESET ATTEMPTS at request: '|| request_id||''''||',12,sysdate,-1,sysdate,-1,-1); ' ||chr(10)||'COMMIT; ' ||chr(10)||'end; ' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id
ASRS
1
DIRECTIVE_RESPONSE_TIMEOUT 1
ASRS
1
DIRECTIVE
RESET_ROUTE
ASRS
2
DIRECTIVE_CASCADE_FAILURE
Y
ASRS
2
DIRECTIVE_EXECUTE_ACTION
Y
ASRS
2
DIRECTIVE_MAX_ATTEMPTS
1
ASRS
2
DIRECTIVE_QUEUE_STATUS
P
ASRS
2
DIRECTIVE_REQUEST_QUERY
select 'declare ' ||chr(10)||'l_dummy varchar2(32);' ||chr(10)||'begin '
ASRS
2
Appendix 4 – Case Study
Page 1 of 76
Pick Load
Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load
Active Ind Y Y Y Y Y
Y
Y Y Y Y Y Y Y
||chr(10)||'select * INTO l_dummy from dual where -99 != :p_request_id and -99 != :p_task_id; ' ||chr(10)||'reset_directive_execution('||request_id||','||''''||lpn||''''||'); ' ||chr(10)||'end; ' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id DIRECTIVE_RESPONSE_TIMEOUT 1
ASRS
2
DIRECTIVE
PickASRS_61_71
ASRS
10
DIRECTIVE_CASCADE_FAILURE
Y
ASRS
10
DIRECTIVE_DEPENDENCY_SEG_ID 1,2,3
ASRS
10
DIRECTIVE_DEPENDENCY_SEQ_ID 10
ASRS
10
DIRECTIVE_MAX_ATTEMPTS
20
ASRS
10
DIRECTIVE_QUEUE_STATUS
P
ASRS
10
DIRECTIVE_RESPONSE_QUERY
select '_61,' || substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) ||',__,'|| lpad(nvl(SEGMENT4,'0'),4,'0') || ',DONE00,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'|| SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id
ASRS
10
DIRECTIVE_RESPONSE_TIMEOUT 60
ASRS
10
DIRECTIVE
Divert4SHT_63_72
ASRS
20
DIRECTIVE_CASCADE_FAILURE
Y
ASRS
20
DIRECTIVE_MAX_ATTEMPTS
20
ASRS
20
DIRECTIVE_QUEUE_STATUS
P
ASRS
20
DIRECTIVE_REQUEST_QUERY
select chr(2)||'63,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) ||','|| lpad(decode(substr(nvl(SEGMENT1,'0Q'),2,1),'Q', decode(nvl(SEGMENT3,'0'),1,14,2,15,0),13),2,'0') ||','|| lpad(nvl(SEGMENT4,'0'),4,'0') || ',DIVERT,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'|| SEGMENT3||'.'||SEGMENT4||chr(3) from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id
ASRS
20
Appendix 4 – Case Study
Page 2 of 76
Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load
Pick Load
Pick Load Pick Load Pick Load Pick Load Pick Load
Pick Load
Y Y Y Y Y Y Y
Y
Y Y Y Y Y
Y
DIRECTIVE_RESPONSE_QUERY
select '_63,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) || ',__,'|| lpad(nvl(SEGMENT4,'0'),4,'0') || ',DONE00,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'|| SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id
ASRS
20
DIRECTIVE_RESPONSE_TIMEOUT 60
ASRS
20
DIRECTIVE
RESETSCAN_00_75
ASRS
30
DIRECTIVE_CASCADE_FAILURE
Y
ASRS
30
DIRECTIVE_DEVICE_ID
41
ASRS
30
DIRECTIVE_MAX_ATTEMPTS
240
ASRS
30
DIRECTIVE_PIPE_NAME
41
ASRS
30
DIRECTIVE_QUEUE_STATUS
X
ASRS
30
ASRS
30
ASRS
30
DIRECTIVE_RESPONSE_TIMEOUT 30
ASRS
30
DIRECTIVE
Divert2WS_63_64
ASRS
40
DIRECTIVE_CANCEL_TASK
Divert2WS_63_64
ASRS
40
DIRECTIVE_CASCADE_FAILURE
Y
ASRS
40
DIRECTIVE_COMPLETE_TASK
Divert2WS_63_64
ASRS
40
DIRECTIVE_DEVICE_ID
41
ASRS
40
DIRECTIVE_MAX_ATTEMPTS
15
ASRS
40
DIRECTIVE_PIPE_NAME
41
ASRS
40
DIRECTIVE_QUEUE_STATUS
P
ASRS
40
DIRECTIVE_REQUEST_QUERY
select chr(2)||'63,6,'||
ASRS
40
DIRECTIVE_REQUEST_QUERY DIRECTIVE_RESPONSE_QUERY
Appendix 4 – Case Study
select '' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_75,6,16,0000,DONE00,'||LPN||',0000.00.0.0000_' from wms_device_requests_wcsv where request_id = :p_request_id and task_id = :p_task_id
Page 3 of 76
Pick Load
Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick
Y
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
DIRECTIVE_RESPONSE_QUERY
lpad(decode(nvl(wdat.DEVICE_ID,'19'),0,0,19,6,7),2,'0') ||','|| lpad(nvl(wdrw.SEGMENT4,'0'),4,'0') ||',DIVERT,'|| wdrw.LPN||','||wdrw.SEGMENT1||'.'||wdrw.SEGMENT2||'.'|| wdrw.SEGMENT3||'.'|| wdrw.SEGMENT4||chr(3) from wms_device_requests_wcsv WDRW, wms_device_assignment_temp wdat where wdat.device_id IN (19,20) and wdat.LAST_UPDATED_BY = fnd_global.user_id and wdrw.request_id = :p_request_id and wdrw.task_id = :p_task_id select '_63,6,__,' || lpad(nvl(SEGMENT4,'0'),4,'0')||',DONE00,'|| LPN||','||SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'|| SEGMENT4||'_' from wms_device_requests_wcsv where request_id = :p_request_id and task_id = :p_task_id
Load
ASRS
40
DIRECTIVE_RESPONSE_TIMEOUT 120
ASRS
40
DIRECTIVE_SKIP_TASK
Divert2WS_63_64
ASRS
40
DIRECTIVE
TaskComplete44
ASRS
44
DIRECTIVE_CANCEL_TASK
TaskComplete44
ASRS
44
DIRECTIVE_CASCADE_FAILURE
N
ASRS
44
DIRECTIVE_COMPLETE_TASK
TaskComplete44
ASRS
44
DIRECTIVE_DEVICE_ID
41
ASRS
44
DIRECTIVE_MAX_ATTEMPTS
9
ASRS
44
DIRECTIVE_PIPE_NAME
41
ASRS
44
DIRECTIVE_QUEUE_STATUS
P
ASRS
44
ASRS
44
ASRS
44
DIRECTIVE_RESPONSE_TIMEOUT 400
ASRS
44
DIRECTIVE_SKIP_TASK
ASRS
44
DIRECTIVE_REQUEST_QUERY DIRECTIVE_RESPONSE_QUERY
Appendix 4 – Case Study
select '' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_99,6,16,0000,TC0000,'||LPN||',0000.00.0.0000_' from wms_device_requests_wcsv where request_id = :p_request_id and task_id = :p_task_id
TaskComplete44 Page 4 of 76
Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load
Y
Y Y Y
Y Y Y Y Y Y Y Y Y Y Y
Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load
DIRECTIVE
NULL4SCAN_00_75
ASRS
50
DIRECTIVE_CASCADE_FAILURE
Y
ASRS
50
DIRECTIVE_DEVICE_ID
41
ASRS
50
DIRECTIVE_MAX_ATTEMPTS
240
ASRS
50
DIRECTIVE_PIPE_NAME
41
ASRS
50
DIRECTIVE_QUEUE_STATUS
P
ASRS
50
ASRS
50
ASRS
50
DIRECTIVE_RESPONSE_TIMEOUT 30
ASRS
50
DIRECTIVE
Divert2ASRS63_64
ASRS
60
DIRECTIVE_CASCADE_FAILURE
Y
ASRS
60
DIRECTIVE_DEVICE_ID
41
ASRS
60
DIRECTIVE_MAX_ATTEMPTS
15
ASRS
60
DIRECTIVE_PIPE_NAME
41
ASRS
60
DIRECTIVE_QUEUE_STATUS
P
ASRS
60
ASRS
60
Pick Load
Y
ASRS
60
Pick Load
Y
DIRECTIVE_REQUEST_QUERY DIRECTIVE_RESPONSE_QUERY
DIRECTIVE_REQUEST_QUERY
DIRECTIVE_RESPONSE_QUERY
Appendix 4 – Case Study
select '' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_75,6,16,0000,DONE00,'||LPN||',0000.00.0.0000_' from wms_device_requests_wcsv where request_id = :p_request_id and task_id = :p_task_id
select chr(2)||'63,6,'|| lpad(decode(substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1),1,5,2,4,3,3,4,2,5,1,0),2,'0') ||','|| lpad(nvl(SEGMENT4,'0'),4,'0') ||','|| 'DIVERT,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'|| SEGMENT3||'.'||SEGMENT4||chr(3) from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select chr(2)||'63,6,'|| lpad(decode(substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1),1,5,2,4,3,3,4,2,5,1,0),2,'0') ||','|| lpad(nvl(SEGMENT4,'0'),4,'0') ||','|| 'DIVERT,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'|| SEGMENT3||'.'||SEGMENT4||chr(3) from wms_device_requests_wcsv Page 5 of 76
Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
where request_id=:p_request_id and task_id=:p_task_id Pick Load Pick Load Pick Load Pick Load
Y
DIRECTIVE_RESPONSE_TIMEOUT 120
ASRS
60
DIRECTIVE
PICK2CS_61_71
ASRS
70
DIRECTIVE_CASCADE_FAILURE
Y
ASRS
70
DIRECTIVE_MAX_ATTEMPTS
20
ASRS
70
DIRECTIVE_RESPONSE_QUERY
select '_61,' || substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1) ||',__,0000' || ',DONE00,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'|| SEGMENT3||'.'||SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id
ASRS
70
DIRECTIVE_RESPONSE_TIMEOUT 60
ASRS
70
DIRECTIVE
PUT4SHT_62_72
ASRS
80
DIRECTIVE_CASCADE_FAILURE
Y
ASRS
80
DIRECTIVE_MAX_ATTEMPTS
20
ASRS
80
ASRS
80
Pick Load
Y
ASRS
80
Pick Load
Y
DIRECTIVE_RESPONSE_TIMEOUT 60
ASRS
80
DIRECTIVE
TOTE4SHT_63_72
ASRS
90
DIRECTIVE_CASCADE_FAILURE
Y
ASRS
90
DIRECTIVE_MAX_ATTEMPTS
20
ASRS
90
DIRECTIVE_QUEUE_STATUS
X
ASRS
90
DIRECTIVE_REQUEST_QUERY
DIRECTIVE_RESPONSE_QUERY
Appendix 4 – Case Study
select chr(2)||'62,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) ||','|| lpad(decode(nvl(SEGMENT3,'0'),1,9,2,10,0),2,'0') ||','|| lpad(nvl(SEGMENT4,'0'),4,'0') ||',PUTAWY,'|| LPN||','||SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||chr(3) from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_62,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) ||',__,'|| lpad(nvl(SEGMENT4,'0'),4,'0') ||',DONE00,'|| LPN||','||SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id
Page 6 of 76
Pick Load
Pick Load Pick Load Pick Load Pick Load
Pick Load Pick Load Pick Load Pick Load Pick
Y Y Y
Y
Y Y Y Y
Y Y Y Y Y
Load select chr(2)||'63,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) ||','|| lpad(decode(substr(nvl(SEGMENT1,'0Q'),2,1),'Q', decode(nvl(SEGMENT3,'0'),1,13,2,13,0),13),2,'0') ||','|| lpad(nvl(SEGMENT4,'0'),4,'0') || ',DIVERT,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'|| SEGMENT3||'.'||SEGMENT4||chr(3) from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_63,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) || ',__,'|| lpad(nvl(SEGMENT4,'0'),4,'0') || ',DONE00,'||LPN||','||SEGMENT1||'.'||SEGMENT2||'.'|| SEGMENT3||'.'||SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id
ASRS
90
Pick Load
Y
ASRS
90
Pick Load
Y
DIRECTIVE_RESPONSE_TIMEOUT 60
ASRS
90
DIRECTIVE_CASCADE_FAILURE
Y
ASRS
100
DIRECTIVE_DEVICE_ID
41
ASRS
100
DIRECTIVE_MAX_ATTEMPTS
20
ASRS
100
DIRECTIVE_PIPE_NAME
41
ASRS
100
DIRECTIVE_QUEUE_STATUS
X
ASRS
100
ASRS
100
Pick Load
Y
ASRS
100
Pick Load
Y
DIRECTIVE_RESPONSE_TIMEOUT 60
ASRS
100
DIRECTIVE
FullASRS_61_71
ASRS
DIRECTIVE_CASCADE_FAILURE
Y
ASRS
DIRECTIVE_MAX_ATTEMPTS
20
ASRS
DIRECTIVE_REQUEST_QUERY
DIRECTIVE_RESPONSE_QUERY
DIRECTIVE_REQUEST_QUERY
DIRECTIVE_RESPONSE_QUERY
Appendix 4 – Case Study
select chr(2)||'63,6,06,'||lpad(nvl(SEGMENT4,'0'),4,'0') ||',DIVERT,'|| LPN||','||SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4|| chr(3) from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_63,6,__,'||lpad(nvl(SEGMENT4,'0'),4,'0') ||',DONE00,'|| LPN||','||SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id
Page 7 of 76
Pick Load Pick Load Pick Load Pick Load Pick Load Pick Load
Pick Load Pick 110 Load Pick 110 Load Pick 110 Load
Y Y Y Y Y Y
Y Y Y Y
DIRECTIVE_QUEUE_STATUS
X
ASRS
110
Pick Load
Y
DIRECTIVE_RESPONSE_QUERY
select '_61,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) ||',__,'|| lpad(nvl(SEGMENT4,'0'),4,'0') ||',DONE00,'||substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1)||'F'||lpad(nvl(SEGMENT4,'0'),4,'0')||','|| SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id
ASRS
110
Pick Load
Y
DIRECTIVE_RESPONSE_TIMEOUT 60
ASRS
110
DIRECTIVE
Full4SHT_63_72
ASRS
120
DIRECTIVE_CASCADE_FAILURE
Y
ASRS
120
DIRECTIVE_MAX_ATTEMPTS
15
ASRS
120
DIRECTIVE_QUEUE_STATUS
X
ASRS
120
ASRS
120
Pick Load
Y
ASRS
120
Pick Load
Y
DIRECTIVE_RESPONSE_TIMEOUT 120
ASRS
120
DIRECTIVE_CASCADE_FAILURE
Y
ASRS
130
DIRECTIVE_DEVICE_ID
41
ASRS
130
DIRECTIVE_MAX_ATTEMPTS
15
ASRS
130
DIRECTIVE_PIPE_NAME
41
ASRS
130
DIRECTIVE_REQUEST_QUERY
DIRECTIVE_RESPONSE_QUERY
Appendix 4 – Case Study
select chr(2)||'63,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) ||','|| lpad(decode(substr(nvl(SEGMENT1,'0Q'),2,1),'Q', decode(nvl(SEGMENT3,'0'),1,13,2,13,0),13),2,'0') ||','|| lpad(nvl(SEGMENT4,'0'),4,'0') || ',DIVERT,'||substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1)||'F'||lpad(nvl(SEGMENT4,'0'),4,'0')||','|| SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||chr(3) from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_63,'|| substr(nvl(SEGMENT2,'C0'),length(nvl(SEGMENT2,'C0')),1) || ',__,'|| lpad(nvl(SEGMENT4,'0'),4,'0') || ',DONE00,'||substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1)||'F'||lpad(nvl(SEGMENT4,'0'),4,'0')||','|| SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id
Page 8 of 76
Pick Load Pick Load Pick Load Pick Load Pick Load
Pick Load Pick Load Pick Load Pick Load Pick
Y Y Y Y Y
Y Y Y Y Y
DIRECTIVE_QUEUE_STATUS
DIRECTIVE_REQUEST_QUERY
DIRECTIVE_RESPONSE_QUERY
X
ASRS
select chr(2)||'63,6,06,'|| lpad(nvl(SEGMENT4,'0'),4,'0') ||','|| 'DIVERT,'|| substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1)||'F'||lpad(nvl(SEGMENT4,'0'),4,'0')||','|| SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||chr(3) from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id select '_63,6,__,'|| lpad(nvl(SEGMENT4,'0'),4,'0') ||',DONE00,'|| substr(nvl(SEGMENT2,'C0'), length(nvl(SEGMENT2,'C0')),1)||'F'||lpad(nvl(SEGMENT4,'0'),4,'0')||','|| SEGMENT1||'.'||SEGMENT2||'.'||SEGMENT3||'.'||SEGMENT4||'_' from wms_device_requests_wcsv where request_id=:p_request_id and task_id=:p_task_id
DIRECTIVE_RESPONSE_TIMEOUT 120
Appendix 4 – Case Study
Page 9 of 76
Load Pick 130 Load
Y
ASRS
130
Pick Load
Y
ASRS
130
Pick Load
Y
ASRS
130
Pick Load
Y
Figure 38 - Note that there are 2 CarBri directories (1 for ASRS and 1 for Sortation Conveyor)
Appendix 4 – Case Study
Page 10 of 76
Figure 39 - CarBri Settings for ASRS_C1 Appendix 4 – Case Study
Page 11 of 76
Figure 40 - CarBri Settings for Sortation Conveyor SORT_1 Appendix 4 – Case Study
Page 12 of 76
12.1.6 Test between DB tier and the CarBri
Test between DB tier and the CarBri (set Simulate to Yes in carbri.xml (There is no need to plug in the Device to test at this point)
12.1.7 Test between DB tier, CarBri and the Device Simulator Test between DB tier, CarBri and the Device Simulator (Set Simulate to No) and socketHostName to point to the IP address of the DS. Once this testing is satisfactory, the system is ready to be promoted to UAT. This step can be used to validate the device directives that are provided by the Device Vendor by testing message sending between the Device Simulator and the PLC and tweaking the WCS Directive settings if needed.
12.1.8 Test between DB tier, CarBri and the actual device Test between DB tier, CarBri and the actual device. The system will be fully functional at this point.
Appendix 4 – Case Study
Page 13 of 76
13. Appendix 5 – WMS_DEVICE_REQUESTS_WCSV View details This is a view introduced in 11.5.10.1CU. One of the Database Entities that this view is based on is WMS_DEVICE_REQUESTS WDR. Usually most of the Directive Request Queries can be based on this view. There could a Customer requirement where #
Column Name
Data Type
== ==================== =============== 1
REQUEST_ID
NUMBER
2
TASK_ID
NUMBER
3
SEQUENCE_ID
NUMBER
4
TASK_TYPE_ID
NUMBER
5
QUANTITY
NUMBER
6
SUBINVENTORY_CODE
VARCHAR2 (30)
7
LOCATOR
VARCHAR2 (4000)
8
DEVICE_NAME
VARCHAR2 (30)
9
DEVICE_ID
NUMBER
10 DEVICE_TYPE_ID
NUMBER
11 BUSINESS_EVENT
VARCHAR2 (80)
12 BUSINESS_EVENT_ID
NUMBER
13 RELATION_ID
NUMBER
14 LPN
VARCHAR2 (30)
15 ITEM
VARCHAR2 (40)
16 SEGMENT1
VARCHAR2 (40)
17 SEGMENT2
VARCHAR2 (40)
18 SEGMENT3
VARCHAR2 (40)
19 SEGMENT4
VARCHAR2 (40)
20 SEGMENT5
VARCHAR2 (40)
21 SEGMENT6
VARCHAR2 (40)
22 SEGMENT7
VARCHAR2 (40)
23 SEGMENT8
VARCHAR2 (40)
Appendix 5 – WMS_DEVICE_REQUESTS_WCSV View details
Page 1 of 76
24 SEGMENT9
VARCHAR2 (40)
25 SEGMENT10
VARCHAR2 (40)
26 SEGMENT11
VARCHAR2 (40)
27 SEGMENT12
VARCHAR2 (40)
28 SEGMENT13
VARCHAR2 (40)
29 SEGMENT14
VARCHAR2 (40)
30 SEGMENT15
VARCHAR2 (40)
31 SEGMENT16
VARCHAR2 (40)
32 SEGMENT17
VARCHAR2 (40)
33 SEGMENT18
VARCHAR2 (40)
34 SEGMENT19
VARCHAR2 (40)
35 SEGMENT20
VARCHAR2 (40)
36 TASK_SUMMARY
VARCHAR2 (1)
37 LOCATOR_ID
NUMBER
38 TRANSFER_ORG_ID
NUMBER
39 TRANSFER_SUB_CODE
VARCHAR2 (30)
40 TRANSFER_LOC_ID
NUMBER
41 INVENTORY_ITEM_ID
NUMBER
42 REVISION
VARCHAR2 (10)
43 UOM
VARCHAR2 (3)
44 LOT_NUMBER
VARCHAR2 (30)
45 LOT_QTY
NUMBER
46 SERIAL_NUMBER
VARCHAR2 (30)
47 TRANSACTION_QUANTITY NUMBER 48 STATUS_CODE
VARCHAR2 (1)
49 STATUS_MSG
VARCHAR2 (240)
50 OUTFILE_NAME
VARCHAR2 (255)
Appendix 5 – WMS_DEVICE_REQUESTS_WCSV View details
Page 2 of 76
White Paper Title Oracle Warehouse Management System: Release 11.5.10.CU1 Warehouse Control System (WCS) / Material Handling Equipment (MHE) Implementation Guide March 2006 Author: Syed Mudassir Imran Reviewers: Karun Jain, Aditya Agarkar Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. Worldwide Inquiries: Phone: +1.650.506.7000125 Fax: +1.650.506.7200 www.oracle.com Oracle Corporation provides the software that powers the internet. Oracle is a registered trademark of Oracle Corporation. Various product and service names referenced herein may be trademarks of Oracle Corporation. All other product and service names mentioned may be trademarks of their respective owners. Copyright © 2000 Oracle Corporation All rights reserved.
Appendix 5 – WMS_DEVICE_REQUESTS_WCSV View details
Page 3 of 76