The present invention relates to receipt of shipments. More particularly, the present invention relates to autonomous validation of received shipments.
Receiving operations for shipments are processed by receiving dock personnel in warehouses. Received items are often stored within a warehouse upon arrival by use of a forklift or other equipment operated by the receiving dock personnel to avoid excessive physical strain on the receiving dock personnel.
A method includes receiving, at an inventory controller device, advance shipment data associated with a shipment; verifying the advance shipment data; generating a data collection model based upon the advance shipment data; storing the generated data collection model within a memory; autonomously validating the shipment via the inventory controller device in response to receipt of the shipment using the generated data collection model; and generating an indication of a target storage location within a receiving facility for each container of the validated shipment using a defined location topology model of the receiving facility comprising available storage locations.
A system includes a memory; and a processor programmed to receive, at an inventory controller device, advance shipment data associated with a shipment; verify the advance shipment data; generate a data collection model based upon the advance shipment data; store the generated data collection model in the memory; autonomously validate the shipment in response to receipt of the shipment using the generated data collection model; and generate an indication of a target storage location within a receiving facility for each container of the validated shipment using a defined location topology model of the receiving facility comprising available storage locations.
A computer program product comprising a computer readable storage medium including computer readable program code, where the computer readable program code when executed on a computer causes the computer to receive advance shipment data associated with a shipment; verify the advance shipment data; generate a data collection model based upon the advance shipment data; store the generated data collection model within a memory; autonomously validate the shipment in response to receipt of the shipment using the generated data collection model; and generate an indication of a target storage location within a receiving facility for each container of the validated shipment using a defined location topology model of the receiving facility comprising available storage locations.
The examples set forth below represent the necessary information to enable those skilled in the art to practice the invention and illustrate the best mode of practicing the invention. Upon reading the following description in light of the accompanying drawing figures, those skilled in the art will understand the concepts of the invention and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims.
The subject matter described herein provides autonomous validation of received shipments. Orders are entered and shipments are prepared for arrival and autonomous receipt validation in response to advance shipment data from one or more suppliers. A package level data model is created and stored based upon shipment information within the advance shipment data. A package level data model may also be called a data collection model herein. An anticipated arrival date associated with the advance shipment data is scheduled. To reduce outstanding tracking load, the package level data model is retrieved proximate to the anticipated arrival date. When the shipment arrives, received containers of the shipment associated with the package level data model are processed via radio frequency identification (RFID) as the containers move through one or more portals in a receiving facility. For purposes of the present description, a “container” may include any portion of a shipment or an entire shipment (e.g., an item package, a case, a pallet, a shipping container, etc.) that includes at least one item and that is transported and validated per a given implementation as a unit through a receiving portal at a receiving facility, such as a warehouse, an airport, a train station, or a shipping dock. The terms “container” and “pallet” may be used interchangeably herein as appropriate for a given example. Multiple package level data models and shipments may be received and processed concurrently through the one or more portals in the receiving warehouse. Discrepancies between the shipment and the package level data model (and thereby the advance shipment data) are documented and reported for receipt credit(s) or re-ordering and items received are documented as being received.
Locations within the receiving facility where received containers of the shipment (e.g., shipping containers, pallets, packages, items, etc.) are to be stored are identified to provide storage of items as appropriate for a given implementation. These locations may be represented within a location topology model that is used for processing advance shipment information and received shipments. Received item processing may be configured such that items may be stored in a lowest available height location (e.g., a lowest location on a shelf) within a receiving facility. Alternatively, associated items may be stored in proximity to one another while unrelated items may be stored to other locations. Where multiple associated containers of a shipment arrive on multiple pallets or within multiple shipping containers, storage locations may be clustered for convenient retrieval or additional processing of received items. Storage instructions based upon received items, for example each container, may be autonomously created and provided to receiving facility personnel, such as forklift drivers or dock workers, as the container enters the receiving facility on the forklift or crane. As such, efficiency of storage location and personnel processing of received shipments may be improved.
The autonomous validation of received shipments described herein may be performed in real time to allow prompt processing of received shipments. For purposes of the present description, real time shall include any time frame of sufficiently short duration as to provide reasonable response time for information processing acceptable to a user of the subject matter described. Additionally, the term “real time” shall include what is commonly termed “near real time”—generally meaning any time frame of sufficiently short duration as to provide reasonable response time for on-demand information processing acceptable to a user of the subject matter described (e.g., within a portion of a second or within a few seconds). These terms, while difficult to precisely define are well understood by those skilled in the art.
As will be described in more detail below in association with
It should be noted that the inventory controller 102 may be a portable computing device, either by a user's ability to move the inventory controller 102 to different locations, or by the inventory controller 102's association with a portable platform, such as a forklift, warehouse personnel transportation vehicle (e.g., a golf cart), or other moving vehicle. It should also be noted that the inventory controller 102 may be any computing device capable of processing information as described above and in more detail below. For example, the inventory controller 102 may include devices such as a personal computer (e.g., desktop, laptop, etc.) or a handheld device (e.g., cellular telephone, personal digital assistant (PDA), etc.), or any other device capable of processing information as described in more detail below. The inventory controller 102 may also include an embedded device with circuitry designed specifically for inventory management and control as appropriate for a given implementation.
The network 106 may include any form of interconnection suitable for the intended purpose, including a private or public network such as an intranet or the Internet, respectively, direct inter-module interconnection, dial-up, wireless, or any other interconnection mechanism capable of interconnecting the respective devices.
The vendor server_1108 through the vendor server_N 110 may include any device capable of processing orders placed by the inventory controller 102 and may be capable of providing data for consumption by a device, such as the inventory controller 102, via a network, such as the network 106. As such, the vendor server_1108 through the vendor server_N 110 may each include a web server or other data server device as appropriate for a given implementation.
The inventory controller 102 communicates with one or more inventory receiving reader devices, depicted within the present example of
The reader_1112, reader_2114 through reader_M 116 are shown within the present example to be interconnected with the inventory controller 102 via an interconnection 118, an interconnection 120, and an interconnection 122, respectively. This representation of interconnection is for ease of illustration purposes. It is understood that the inventory controller 102 may interconnect and communicate with the reader_1112 through reader_M 116 via any suitable interconnection. For example, wireless communication, wired communication, networked communication, or other communication platform may be used as appropriate for a given implementation without departure from the scope of the present subject matter.
The display 202 may include any display device, such as a cathode ray tube (CRT), liquid crystal display (LCD), light emitting diode (LED), projection, touchscreen, or other display element or panel. The input device 204 may include a computer keyboard, a keypad, a mouse, a pen, a joystick, or any other type of input device by which the user may interact with and respond to information on the display 202.
It should be noted that the display 202 and the input device 204 may be optional components for the inventory controller 102 for certain implementations, such as an embedded implementation. For example, processing associated with making payments for received shipments, generating visual output or reports, and other functionality may be associated with the inventory controller 102, or the inventory controller 102 may be implemented as an embedded device that is ruggedized for a warehouse environment with such functionality partitioned into a different computing device (not shown) within an office portion of the warehouse 104, with the inventory controller 102 interconnected for inventory validation purposes. Accordingly, the inventory controller 102 may operate as a completely automated embedded device without user configurability or feedback. However, the inventory controller 102 may also provide user feedback and configurability via the display 202 and the input device 204, respectively, as appropriate for a given implementation.
A communication module 206 provides interconnection capabilities that allow the inventory controller 102 to communicate with other modules within the system 100, such as the vendor server_1108 through the vendor server_N 110 and the reader_1112 through the reader_M 116, to perform the autonomous validation of received shipments described herein. The communication module 206 may include any electrical, protocol, and protocol conversion capabilities useable to provide the interconnection capabilities. Though the communication module 206 is illustrated as a component-level module for ease of illustration and description purposes, it should be noted that the communication module 206 may include any hardware, programmed processor(s), and memory used to carry out the functions of the communication module 206 as described above and in more detail below. For example, the communication module 206 may include additional controller circuitry in the form of application specific integrated circuits (ASICs), processors, antennas, and/or discrete integrated circuits and components for performing communication and electrical control activities associated with the communication module 206. Additionally, the communication module 206 may include interrupt-level, stack-level, and application-level modules as appropriate. Furthermore, the communication module 206 may include any memory components used for storage, execution, and data processing for performing processing activities associated with the communication module 206. The communication module 206 may also form a portion of other circuitry described without departure from the scope of the present subject matter.
A memory 208 includes several storage areas for order and inventory tracking and processing. Within the present example, an order information storage area 210 stores information associated with outstanding orders that have been placed, such as via the vendor server_1108 through the vendor server_N 110. An advance shipment information storage area 212 stores advance shipment data for anticipated shipments, scheduling information for anticipated arrival of shipments, data collection templates, and package level data models for outstanding orders. A location information storage area 214 stores warehouse location information, including available locations for storage of received items (including row, rack, shelf and other information), locations of items that have been received, information associated with preferred areas for storage of items of certain types or descriptions, and other location information as appropriate for a given implementation. An inventory receipt tracking information storage area 216 stores information associated with processing of one or more shipments while receipt is in process, such as comparison information for items processed during receipt of a shipment compared to the associated outstanding order. Other storage areas may be implemented or information for other uses may be stored in the example storage areas as appropriate for a given implementation.
It is understood that the memory 208 may include any combination of volatile and non-volatile memory suitable for the intended purpose, distributed or localized as appropriate, and may include other memory segments not illustrated within the present example for ease of illustration purposes. For example, the memory 208 may include a code storage area, an operating system storage area, a code execution area, and a data area or other areas without departure from the scope of the present subject matter.
An inventory processing module 218 is also illustrated. The inventory processing module 218 provides order processing, package level data model generation, inventory management, item receipt tracking, and other processing for the inventory controller 102, as described above and in more detail below. The inventory processing module 218 implements the autonomous validation of received shipments of the inventory controller 102.
A system for autonomous validation of received shipments, as described in more detail below, may include sensors, such as motion detectors and infrared beams, for automated control of devices. Additionally, actuators, such as light stacks and alarms, for visual or audio display of validation results, may be included. Further, devices, such as RFID readers, for capturing and transmitting RFID data from sources such as RFID tags, may be included. Processing capabilities capable of controlling these devices, sensors, and actuators, and processing RFID data may also be implemented. As such, though specific elements of the example inventory processing module 218 are described below, it is understood that other modules and different partitioning between the respective modules may be implemented as appropriate for a given implementation. Additionally, the inventory controller 102 and/or the inventory processing module 218 may be referenced herein generally to indicate reference to one or more of the respective components/elements/modules of the inventory controller 102 and/or inventory processing module 218 for ease of description purposes.
Several example modules are shown associated with the inventory processing module 218. A location topology manager module 220, an advance shipment data parser module 222, a scheduler module 224, a data collection template generator module 226, a data collector module 228, and a validator module 230, are shown within the present example.
The location topology manager module 220 provides management of location information, such as the information stored within the location information storage area 214 for processing of shipments upon receipt, or post-receipt processing of items of received shipments. The location topology manager module 220 maintains a logical location hierarchy that maps relevant physical areas of a receiving site, such as the warehouse 104, to physical locations and RFID interrogators to form device associations within such a facility. For purposes of the present description, a location may be considered relevant if it can serve as a logical source of RFID data or for storage of one or more received items. Each location may be associated with zero or more RFID interrogator devices that represent the physical data sources. The location topology is transmitted to the data collector module 228 as a logical reader hierarchy so that any relevant location may be referenced within a data collection template as an RFID data source or a candidate storage location. The data collector module 228 may then make tag data from any device associated with a location within the hierarchy available for potential inclusion within a report. For purposes of illustration,
The advance shipment data parser module 222 processes advance shipment information, such as that stored in the advance shipment information storage area 212, to provide data source parsing technique mappings. The advance shipment data parser 222 is responsible for translating received advance shipment data for each order into a package level data model, persisting the package level structure to storage, such as within the advance shipment storage location 212, and then either immediately passing the information along to the data collection template generator module 226 or creating a task with the scheduler module 224 that will trigger an event to invoke action by the data collection template generator module 226 to generate a data collection template at a later time. Because advance shipment data may potentially arrive in many different formats, the advance shipment data parser 222 provides mapping between messages, message sources, and other translation capabilities for processing advance shipment data into a format for further processing.
The scheduler module 224 provides scheduling management, such as initial scheduling for receipt of shipments based upon advance shipment data, retrieval of package level data models for anticipated shipments, and other scheduling functions. The scheduler module 224 accepts tasks for generating data collection templates and transmitting them to the data collector module 228 at an appropriate time. The scheduler module 224 may implement data padding rules that provide flexibility for expected arrival dates for shipments. Because shipment arrival dates are estimates, it may be desirable to have the ability to configure a value by which the arrival date will be padded. This padding may ameliorate the possibility of a shipment arriving either prior to or after the anticipated arrival data. The padding value may be based on, for example, the particular supplier or type of shipment and may be further based upon known historical deviations (e.g., this supplier is always early or late by a statistical deviation from scheduled arrival dates, etc.).
The data collection template generator module 226 generates templates specifying how data is to be collected, processed, and reported based upon a package level data model or structure and a configured template generation strategy. The data collection template generator module 226 transmits these templates to the data collector module 228. The data collection template generator module 226 may be configured with a strategy dictating how (and how many) templates are to be generated for a particular shipment based upon one or more configured receiving processes. The selected strategy may affect processing aspects, such as a number of templates generated and/or used for processing an order, a number of logical readers associated with a receiving facility, how varying levels of the package structure may be represented, and other processing aspects as appropriate for a given implementation. The example scenario used herein describes complete validation (i.e. pallet, case, and item tags) as containers are being offloaded and moved through each dock door portal of a receiving facility. This form of processing may be implemented, for example, using a single template per shipment (in such an implementation, the data collector module 228 may be configured to support multiple report types per template) and using nodes of a receiving facility model (See elements of
The data collector module 228 accumulates, filters, groups, counts, and reports data according to one or more data collection templates which may be based upon a logical RFID reader topology (again, see elements of
The validator module 230 receives reports from the data collector module 228 and validates data within the reports against the original shipment information (obtained as advance shipment data) using a package level structure (see
These outputs may be generated and output via the communication module 206 to other control modules via one or more network interconnections or may be generated as a direct output control via a control output(s) module 232. The control output(s) module 232 may provide control signaling to one or more lights (e.g., green or red lights), an audible or visible alarm, a conveyor programmable logic controller (PLC) device or embedded control device or any other control function appropriate for a given implementation.
A timer/clock module 234 is illustrated and used to determine timing and date information, such as inter-arrival times of packages or pallets of items through a receiving facility dock door (e.g., an RFID portal), as described in more detail below. As such, the inventory processing module 218 may utilize information derived from the timer/clock module 234 for information processing activities, such as the autonomous validation of received shipments.
Configuration of the templates and data models described above may be set prior to system operation and may be considered to be predominately static (or dynamic as appropriate for a given implementation). When a change occurs to the physical site layout or operational procedures, modifications may be made to templates or generated data models to incorporate these changes. The respective modules may be configured to periodically evaluate RFID readers and other processing inputs to determine whether changes have occurred. Configuration inputs may be provided to the inventory controller 102 to allow autonomous recognition of changes. Many other possibilities exist for processing facility or operational procedures and all are considered within the scope of the present subject matter.
Though the inventory processing module 218 is illustrated as a component-level module for ease of illustration and description purposes, it should be noted that the inventory processing module 218 may include any hardware, programmed processor(s), and memory used to carry out the functions of this module as described above and in more detail below. For example, the inventory processing module 218 may include additional controller circuitry in the form of application specific integrated circuits (ASICs), processors, and/or discrete integrated circuits and components for performing communication and electrical control activities associated with the respective devices. Additionally, the inventory processing module 218 may include interrupt-level, stack-level, and application-level modules as appropriate. Furthermore, the inventory processing module 218 may include any memory components used for storage, execution, and data processing for performing processing activities associated with the module.
It should also be noted that the inventory processing module 218 may form a portion of other circuitry described without departure from the scope of the present subject matter. Further, the inventory processing module 218 may alternatively be implemented as an application stored within the memory 208. In such an implementation, the inventory processing module 218 may include instructions executed by the CPU 200 for performing the functionality described herein. The CPU 200 may execute these instructions to provide the processing capabilities described above and in more detail below for the inventory controller 102. The inventory processing module 218 may form a portion of an interrupt service routine (ISR), a portion of an operating system, a portion of a browser application, or a portion of a separate application without departure from the scope of the present subject matter.
The CPU 200, the display 202, the input device 204, the communication module 206, the memory 208, the inventory processing module 218, and the control output(s) module 232, and the timer/clock module 234 are interconnected via an interconnection 236. The interconnection 236 may include a system bus, a network, or any other interconnection capable of providing the respective components with suitable interconnection for the respective purpose.
While the inventory controller 102 is illustrated with and has certain components described, other modules and components may be associated with the inventory controller 102 without departure from the scope of the present subject matter. Additionally, it should be noted that, while the inventory controller 102 is described as a single device for ease of illustration purposes, the components within the inventory controller 102 may be co-located or distributed and interconnected via a network without departure from the scope of the present subject matter. For a distributed arrangement, the display 202 and the input device 204 may be located at a point of sale device, kiosk, or other location, while the CPU 200 and memory 208 may be located at a local or remote server. Many other possible arrangements for components of the inventory controller 102 are possible and all are considered within the scope of the present subject matter. Accordingly, the inventory controller 102 may take many forms and may be associated with many platforms.
An area_1306 through an area_N 308 each encapsulate reader information for one or more doors (e.g., warehouse portals) through which received pallets, cases, or items may flow upon arrival. Within the present example, the area_1306 through the area_N 308 each include two doors, dock door_1310 and dock door_2312, and dock door_M-1314 and dock door_M 316, respectively. It is understood that one or more readers may be associated with each dock door through which received items are to be autonomously processed. Within the present example, the dock door_1310 includes an RFID reader_1318 through an RFID reader_P 320. Similarly each other of the dock door_2312 through the dock door_M 316 has one or more RFID readers associated with it (not all shown to avoid crowding of elements within
At block 402, the process 400 defines a location topology model, such as a model of the receiving facility model 300 of
At block 404, the process 400 receives advance shipment data. Receiving advance shipment data may include translating the advance shipment data into a generic package level structure/model that is stored, such as in the advance shipment information storage area 212 of the memory 208. The generic package level structure/model may be used for defining data collection templates indicating how the RFID data should be processed, and for validating the received RFID data against the original shipment information.
At block 406, the process 400 generates and submits data collection templates. Generating and submitting data collection templates may be performed upon arrival of the advance shipment data so the inventory controller 102 is ready to receive the shipment at any time. Generating and submitting data collection templates further promotes autonomy of the inventory controller 102.
It should be noted that generation of the data collection templates may be performed in consideration of factors that may improve efficiency of autonomous processing and warehouse personnel. For example, a lowest possible height location within the receiving facility topology (e.g., a lowest location on a shelf) that includes all relevant sources of RFID data may be used. Additionally, the data collection process may begin immediately, with report delivery delayed until the shipment arrives to distribute processing over time and bandwidth. The reporting structure may be configured to align with how packages will move through portals and what information is to be validated. RFID tags that are not of interest may be filtered out as early as possible in the processing. Reporting load may further be reduced by reporting only the count for items received. This may enhance efficiency by reducing network bandwidth and increasing the speed of the validation processing. Ensuring the reliability of the count may be performed, for example, using an inclusion filter with only tags that are contained within the package as well as information that may be used to access a particular node within a particular package level structure. Rejected packages may be inventoried as many times as desired without requiring a system reset. Packages can be inventoried and validated in any order. Multiple pallets, cases, packages, and items may be inventoried and validated simultaneously (e.g., concurrently) at the same portal or across multiple portals where business processes and the physical portal(s) are configured for multiple package processing. Further, multiple received shipments may be processed simultaneously (e.g., concurrently) across a single portal or multiple portals within a receiving facility, as appropriate for a given implementation. Further, the centralization provided by the inventory controller 102 may further improve efficiency for receiving and validating reports.
At block 408, the process 400 schedules submittal of the generated data collection template for processing an order for autonomous receipt based upon an anticipated (or actual) shipping date or an expected arrival date. The anticipated shipping data or the expected arrival data may form a portion of the advance shipment data. For implementations where the advance shipment data does not include anticipated shipping data or expected arrival data, this processing may be considered optional. For implementations where actual shipping information is provided by a vendor, this information may be utilized upon arrival of this information to schedule submittal of the template for processing the order for autonomous receipt. Scheduling the submittal of the template for processing the order for autonomous receipt may further increase efficiency while preserving autonomy of the inventory controller 102. The system may be considered configured to receive and validate the shipment upon arrival.
In response to determining that advance shipment data has been received, the process 500 parses the advance shipment data and inspects the message to ensure that all data for configuring receipt of a shipment is present at block 504. For example, the advance shipment data may be routed to a parser capable of understanding the message format, such as the advance shipment data parser 222. At decision point 506, the process 500 makes a determination as to whether all data for configuring receipt of a shipment is present. Data for configuring receipt of a shipment may be different for any given implementation. However, examples of data for configuring receipt of a shipment include a hierarchical structure of the shipment (e.g., certain items are in a particular case that is on an identified pallet which is part of this order, an RFID tag ID is present for each element within the hierarchy that is to be autonomously inventoried and validated). Additional unique identifier information/data, such as a derivable identifier for the shipment that is universally unique, a derivable identifier for each package level other than the root that is unique within the shipment, a target shipping date or estimated date of arrival, etc., may also be included in the advance shipment data.
In response to determining that all data for configuring receipt of a shipment is not present at decision point 506, the process 500 rejects the advance shipment data at block 508 and returns to decision point 502 to await new advance shipment data. The process 500 may also generate a notification that information is missing from the advance shipment data.
In response to determining that all data for configuring receipt of a shipment is present at decision point 506, the process 500 inspects the data to determine whether the data contains any unique RFID information/data at decision point 510. In response to determining that the data does not include any unique RFID information/data at decision point 510, the process 500 generates unique identifiers for each package level at block 512.
For purposes of example, the following pseudo listing represents an example of advance shipment data using the Healthcare Distribution Management Association (HDMA) industry guidelines for ANSI ASC X12 ASN format to help illustrate how the data may be extracted. Primary data is highlighted with a double carat (i.e., >>) after the optional information. Available optional data is highlighted as bolded data.
With regard to the primary data, the hierarchical structure of the shipment is described by the “HL” segments, which include the Hierarchical ID Number (HL01), the Hierarchical Parent ID Number (HL02), and the Hierarchical Level Code (HL03, S=Shipment, O=Order, T=Tare/Pallet, P=Pack/Case, I=Item) data elements. For example, HL*4*3*P*1 indicates a case (or pack) contained within the pallet (or tare) indicated by HL*3*2*T*1. Overall, the ASN describes a hierarchy of two pallets each containing two cases which each contain five items. For pallets and cases, the RFID tag IDs may be obtained from the “MAN” segments using the marks and numbers (e.g., MAN02) data element value. For items, the tag IDs come from the “SLN” segments using the product/service ID (e.g., SLN10) data element value. In terms of optional data, the ASN provides a universally unique identifier for the shipment level derived from a combination of the interchange sender ID (e.g., ISA06) and shipment identification (e.g., BSN02) data element values within the ISA and BSN segments. The identifier for the order level may be extracted from the purchase order number (e.g., PRF01) data element value within the PRF segment. For pallets, cases, and items, the identifiers may be derived from the relevant “HL” segments using the “HL01” and “HL02” data element values all the way up the hierarchy. For example, the item level indicated by HL*7*6*I would have an identifier of “7-6-3-2-1”. The ASN also provides an expected arrival date of “20090719” within the “DTM” segment identified by code “017.”
Returning to the description of decision point 510, in response to determining that the message includes unique RFID information/data, the process 500 converts the advance shipment data into a generic package level data model at block 514.
Once the package level data model/structure shown and described in association with
At decision point 518, the process 500 makes a determination as to whether the advance shipment data includes any optional ship or arrival date information. In response to determining that the advance shipment data does not include the optional ship or arrival date information, the process 500 generates a data collection template from the advance shipment data at block 520. The data collection template is transmitted to the data collector immediately at block 522 given the uncertainty of arrival date.
Alternatively, in response to determining that the advance shipment data includes the optional ship or arrival date information at decision point 518, the process 500 configures a scheduler, such as the scheduler module 224, to schedule a receiving task at block 524. The receiving task may be scheduled, for example, using IBM® WebSphere® Application Server Scheduler. Not submitting the data collection template until the day of arrival of a shipment may increase system efficiency because it minimizes the time when there is one more active application receiving tags that may not possibly be included (because the shipment hasn't arrived yet). For purposes of example, an implementation of the EPCGlobal® Application Level Events (ALE) specification as the data collector may be used to implement the data collector module 228. However, other types of data collectors may be used. Any mechanism capable of providing the following functionality would suffice: (1) generally, accumulate, filter, group, and report RFID tag data; (2) generally, submit data collection templates describing how data should be accumulated, processed, and reported; (3) associate a name with the template that will be returned as part of the report; (4) specify a single logical location name that is mapped to many physical devices capable of reading RFID tag data; (5) specify a time interval as part of the template indicating how long after which no new tags are seen the report should be delivered; (6) specify a name for the report within the template that will be returned as part of the report; (7) suppress empty reports if multiple report definitions can be included within the same template; (8) include all tags of interest seen since the last report was issued in the next report; (9) specify a list of tags of interest to be included within the report (to the exclusion of all others); (10) report only the count of tags; and (11) specify a URI to which reports will be delivered. This listing is but one possible set of functionality. Other functionality may be provided without departure from the scope of the present subject matter. Note that any ALE implementation would implicitly satisfy general functionality (1) and (2). The following represents an ALE 1.1.1 specification ECSpec wrapped within the simple object access protocol/extensible markup language/hypertext transfer protocol (SOAP/XML/HTTP) binding for a “Define” request to help illustrate how the package level data may be used within a data collection template and then transmitted to the data collector module 228, which again may include ALE. It is noted that ALE supports the ability to specify more than one report request within the same template. This is not listed as a primary feature, however, because in the alternative, separate templates may be submitted for each report.
Data originally extracted from the ASN is highlighted as bolded. Other data significant to the required functionality of the data collector is highlighted in bold.
The <specName> element includes the shipment identifier as derived from the ASN. The identifier is unique to avoid conflicts with other data collection templates within the collector. ALE may include the specification name as part of the report. This information may be used by the inventory controller 102 to locate the original shipment information within the data store. This satisfies functionality (3) described above.
The <logicalReader> element includes the name of the location serving as the source of RFID data within the topology as described above in association with configuration of the inventory controller 102. This instructs the ALE to forward all tags originating from any logical reader underneath “Receiving” (e.g., receiving element 304 within
The <stableSetInterval> element includes the time interval after which a report should be generated if no new tags are identified. A timer, such as the timer/clock module 234, may be started when the first tag that passes the filter arrives. The timer may end after a configured time (e.g., three seconds) has expired with no new tags identified via the filter. Then a report may be generated, which satisfies functionality (5) described above.
The reportName attribute within the <reportSpec> element represents the unique identifier assigned to the pallet within the package level structure (See
The value of the reportIfEmpty attribute within the <reportSpec> element tells ALE to suppress empty reports. This is useful when the ECSpec includes multiple report specifications (e.g., one per pallet) so that pallets other than the one currently moving through the portal are not improperly rejected. This satisfies functionality (7) described above.
The value of the set attribute within the <reportSet> element instructs ALE to report all tags that passed the filter between delivery of the last report and when the stable set interval timer ends. Reporting this set of tags, as opposed to additions or deletions, enhances system autonomy with regard to re-interrogating rejected packages. This satisfies functionality (8) described above.
The value of the <includeExclude> element tells ALE that, for filtering, it may include any tag that matches any of the patterns defined as part of the <pat> elements. This may enhance system efficiency because tags that are not of interest may be discarded as early as possible in the process. This satisfies functionality (9) described above.
The value of the includeCount attribute within the <output> element instructs ALE to only report the tag count. This may also enhance system efficiency with regard to network bandwidth and validation speed. Validating against only the count is possible because the filter provides that only the relevant tags are counted. This satisfies functionality (10) described above.
After the ECSpec has been defined with the data collector module 228 (e.g., ALE), the data collection template generator module 226 may then subscribe to the template to satisfy functionality (11) described above. This may be performed by sending a “Subscribe” request including the ECSpec name and a notification uniform resource identifier (URI) using the SOAP/XML/HTTP binding, as the following pseudo syntax illustrates.
Returning to the description of
The package level data model/structure 600 is a hierarchical arrangement of nodes. A root package entity 602 represents a higher-level root node that is a top level of the hierarchical arrangement of nodes. A package level is a set of nodes all sharing the same parent. As such, a package level 604 includes the root package entity 602. Similarly, a package level 606, a package level 608, a package level 610, and a package level 612 define additional hierarchical levels within the package level data model/structure 600.
Within each package level 606 through 610, package nodes represent a discrete entity within the respective level. A package entity_1614 node, a package entity_2616 node, through a package entity_N 618 node make up the package level 606. Similarly, a package entity_1620 node, a package entity_2622 node, through a package entity_M 624 node make up the package level 608 within the present example. Likewise, a leaf package entity_1626 node, a leaf package entity_2628 node, through a leaf package entity_P 630 node make up the package level 610 and a leaf package entity_1632 makes up the package level 612 within the present example. Leaf package entities may be considered an end node within a package level data model/structure. While the present example shows general organization for the example package level data model/structure 600, it is understood that each advance shipment notification (ASN) may be used to create and store a package level data model/structure within a memory.
Package entity nodes within the same level may be heterogenous and represent disparate entity types. Information within a node may include hierarchical data (e.g., its place within the overall structure), entity type, an identifier unique within the structure (except for the root node which may have an identifier unique among all structures), and zero or more RFID tag IDs. A package entity represents some type of real world packaging structure and may be either abstract or concrete. Examples of abstract entities may include a shipment and an order. Examples of concrete entities may include pallets, cases, and items. Concrete entities represent one or more items to be validated upon arrival of a shipment.
An entity may also be either unary or composite, the latter indicating that a single entity may homogeneously represent many items/pallets/packages, etc. Abstract entities may be considered to include zero RFID tag IDs. Unary concrete entities may include one RFID tag ID. Composite concrete entities may include many RFID tag IDs.
A shipment node 702 represents a root node within the package level data model/structure 700 at a level 704. An order node 706 is shown within a level 708. A pallet (tare)_1 node 710 and a pallet (tare)_2 node 712 are shown within a level 714. A case (pack)_1 node 716 and a case (pack)_2 node 718 are shown within a level 720. A case (pack)_1 node 722 and a case (pack)_2 node 724 are shown within a level 726. An items_1 node 728 and an items_2 node 730 are shown within a level 732. Similarly, an items_1 node 734 and an items_2 node 736 are shown within a level 738. The shipment node 702 and order node 706 are considered abstract entities. The pallet (tare)_1 node 710, the pallet (tare)_2 node 712, the case (pack)_1 node 716, the case (pack)_2 node 718, the case (pack)_1 node 722, and the case (pack)_2 node 724, and the items_1 node 728, the items_2 node 730, the items_1 node 734, and the items_2 node 736 are considered concrete entities. The items_1 node 728, the items_2 node 730, the items_1 node 734, and the items_2 node 736 are also considered composite entities. All others are unary. The following diagram again depicts the general package level data model/structure 700 derived from the ASN but also adds the extracted data that has been mapped into the package level data model/structure 700.
The package level data model/structure 700 will be used below, beginning with
At decision point 1002, the process 1000 makes a determination as to whether a shipment has arrived. Containers (pallets within the present example) may be unloaded, either in an automated manner via a conveyor or manually via a fork lift or conveyor, from the trailer or truck and moved through a dock door (e.g., an RFID portal), each with an attached RFID interrogator (e.g., the RFID reader_1318 through the RFID reader_T 324).
At block 1004, the process 1000 detects one or more pallets moving via the RFID interrogator. At block 1006, the process 1000 reads pallet, case, and item level tags from the detected one or more pallets. Data from reading RFID tags may be propagated through the receiving facility to the inventory controller 102 and the data collector module 228. Upon detection of the first expected pallet, case, or item RFID tag, the stable set interval timer, such as the timer/clock module 234, may be started. An example timer duration of, for example three (3) seconds, may be measured and when the duration has passed without detecting any new tags, a report may be generated and sent to the validator module 230. The immediate delivery of reports once all RFID tags within the inclusion filter specified by the package level data model have been read may increase the validation response time (e.g., eliminates unnecessary wait time for other conditions to occur). One or more validation strategies may be invoked upon the generation of any report, and these validation strategies may be established in association with a package level data model. Implementations of validation strategies may be registered with the inventory controller 102 either statically at the time of initialization or dynamically from remote clients via one or more network protocols.
The following is a sample report format with certain information bolded to highlight the portion of the shipment associated with this example report, as described in more detail below.
At block 1008, the validator module 230 receives the report(s) from the data collector module 228. At block 1010, the process 1000 uses the data collection template name identified within the report(s) to identify a package level data model, such as the package level data model/structure 700 stored within the advance shipment information storage area 212 of the memory 208. As such, the validator module 230 retrieves the package level structure from the memory 208 that maps to the value of the specName attribute of the <ECReports> element within the report(s).
At block 1012, the package level node that maps to the value of the reportName attribute of the <report> element is then identified. At block 1014, the process 1000 compares the report count and the node count. For example, based on the validation depth, the validator module 230 may calculate an expected count and compare it to the value of the <count> element, taking the validation threshold into consideration. The process 1000 may further determine in association with the comparison whether the RFID identifier associated with each item of the shipment passing through the one of the plurality of portals of the receiving facility matches an RFID identifier associated with the advance shipment data within the data collection model.
At decision point 1016, the process 1000 makes a determination as to whether the report count equals the node count. In response to determining that the report count equals the node count from the package level data model, the process 1000 accepts the pallet at block 1018. In response to determining that the report count does not equal the node count from the package level data model, the process 1000 rejects the pallet at block 1020. An accept or reject message may be delivered that may result in a visual or audio display at the portal, queuing either a forklift operator to continue to store the pallet within the receiving facility or to rescan the pallet (e.g., drive back through the portal), or to cause an automated conveyor to reverse and send the pallet back through the portal, respectively.
In response to accepting the pallet at block 1018 or rejecting the pallet at block 1020, the process 1000 makes a determination as to whether all reports have been processed at decision point 1022. In response to determining that all reports have not been processed, the process 1000 selects the next report at block 1024 and returns to block 1012 and iterates as described above. In response to determining that all reports have been processed, the process 1000 makes a determination at decision point 1026 as to whether all pallets have passed autonomous validation. In response to determining that at least one pallet has not passed autonomous validation, the process 1000 returns to block 1004, as described above, to process any pallet that has to be rescanned through the portal.
In response to determining that all pallets have passed autonomous validation, the process 1000 makes a determination at decision point 1028 as to whether the accepted total item count equals the expected total item count from the package level data model, such as the package level data model/structure 700, stored within the advance shipment information storage area 212 of the memory 208. In response to determining that the accepted total item count equals the expected total item count, the process 1000 accepts the shipment at block 1030. In response to determining that the accepted total item count does not equal the expected total item count, the process 1000 rejects the shipment at block 1032. It should be understood that total counts may be based upon total pallet counts or other granularity as appropriate for a given implementation. In response to either accepting or rejecting the shipment, the process 1000 returns to decision point 1002 to await another shipment.
Note that the process 1000 allows for the possibility of multiple shipments to be received and autonomously processed, and for multiple reports to be issued concurrently. For example, if the vendor's receiving process allows for more than one pallet at a time to move through the portal, both scanning and reports may be received and processed concurrently within the example scenario, and the validator module 230 may iteratively process the reports to allow receipt of more than one concurrent order, each received through multiple portals. Further, each shipment may be received through one or more portals in addition to the concurrent processing of multiple orders and reports. The following shows what an example report may look like in this case, again with certain information bolded for correlation with the ASN and pallet report described above.
As described above in association with
Those skilled in the art will recognize, upon consideration of the above teachings, that certain of the above examples are based upon use of a programmed processor, such as the CPU 200. However, the invention is not limited to such example embodiments, since other embodiments could be implemented using hardware component equivalents such as special purpose hardware and/or dedicated processors. Similarly, general purpose computers, microprocessor based computers, micro-controllers, optical computers, analog computers, dedicated processors, application specific circuits and/or dedicated hard wired logic may be used to construct alternative equivalent embodiments.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention have been described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable storage medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable storage medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers.
Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modems and Ethernet cards are just a few of the currently available types of network adapters.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.