U.S. patent application number 12/859022 was filed with the patent office on 2012-01-19 for content extractor.
This patent application is currently assigned to GOOGLE INC. Invention is credited to Kawaljit Gandhi, Paul Lee.
Application Number | 20120016856 12/859022 |
Document ID | / |
Family ID | 45467682 |
Filed Date | 2012-01-19 |
United States Patent
Application |
20120016856 |
Kind Code |
A1 |
Gandhi; Kawaljit ; et
al. |
January 19, 2012 |
CONTENT EXTRACTOR
Abstract
Systems and methods for extracting data related to product sales
and businesses that sell products are disclosed. The method may
include obtaining a database connection parameter and a remote
system connection parameter. The method also may include
establishing a connection with a database using the database
connection parameter, where the database has a table with a table
attribute. Additionally, the method may include obtaining a mapping
of one of the table attributes to a predefined attribute so that
data may be extracted from the database using the mapping. The
method may further include establishing a connection with a remote
system using the remote system connection parameter and
transmitting the extracted data to the remote system.
Inventors: |
Gandhi; Kawaljit; (San
Francisco, CA) ; Lee; Paul; (Sunnyvale, CA) |
Assignee: |
GOOGLE INC
Mountain View
CA
|
Family ID: |
45467682 |
Appl. No.: |
12/859022 |
Filed: |
August 18, 2010 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
61364780 |
Jul 15, 2010 |
|
|
|
Current U.S.
Class: |
707/705 ;
707/E17.044; 709/217 |
Current CPC
Class: |
G06Q 20/204 20130101;
G06Q 20/208 20130101; G06Q 20/202 20130101; G06Q 30/06 20130101;
G06Q 20/20 20130101 |
Class at
Publication: |
707/705 ;
709/217; 707/E17.044 |
International
Class: |
G06F 17/30 20060101
G06F017/30; G06F 15/16 20060101 G06F015/16 |
Claims
1. A computer-implemented method for extracting data, comprising:
receiving a database connection parameter and a remote system
connection parameter; establishing a connection with a database
using the database connection parameter, the database comprising at
least one table having at least one table attribute; receiving a
mapping of one of the at least one table attributes to at least one
predefined attribute; extracting data from the database based on
the mapping; establishing a connection with a remote system using
the remote system connection parameter; and transmitting the
extracted data to the remote system, wherein the method is
implemented by a software module in at least one computer system
that comprises instructions stored in a machine-readable medium and
a processor that executes the instructions.
2. The method of claim 1, wherein the extracted data comprises at
least one of product sales data and commercial retailer data.
3. The method of claim 1, wherein the extracted data comprises
product inventory data.
4. The method of claim 1, wherein the remote system comprises a
remote storage system and a remote computer.
5. The method of claim 1, wherein the steps of extracting data from
the database and transmitting the extracted data to the remote
system occur in response to a predetermined event.
6. The method of claim 5, wherein the predetermined event is a time
of day.
7. The method of claim 5, wherein the predetermined event is an
updating of the at least one table.
8. The method of claim 5, wherein the predetermined event is
external to the database.
9. The method of claim 5, wherein the extracted data comprises at
least one of product sales data and commercial retailer data.
10. The method of claim 1, wherein the database is a remote
database.
11. The method of claim 1, wherein the database comprises multiple
databases.
12. The method of claim 1, further comprising means for processing
the extracted data.
13. The method of claim 1, further comprising: auto-generating,
based on the extracted data, data corresponding to at least one
predefined attribute for which a mapping has not been obtained; and
transmitting the auto-generated data to the remote system along
with the extracted data.
14. A data extraction system, comprising: a storage resource; a
network module; a database comprising a table having one or more
table attributes; a processor communicatively coupled to the
storage resource and the network module, wherein the processor
executes application code instructions that are stored in the
storage resource and that cause the data extraction system to:
receive a database connection parameter, a remote system connection
parameter, and a mapping of at least one table attribute to a
predefined attribute; establish a connection with the database
using the database connection parameter; extract data from the
database based on the mapping; process the extracted data;
establish, via the network module, a connection with a remote
system using the remote system connection parameter; and transmit,
via the network module, the processed data to the remote
system.
15. The data extraction system of claim 14, wherein the application
code instructions further cause the data extraction system to:
receive a schedule for extracting data from the database; and
extract, process, and transmit data from the database to the remote
system according to the received schedule.
16. The data extraction system of claim 15, wherein the schedule is
one of a predetermined time of day, a predetermined day, instantly
in response to a database update event, and in response to an event
that is external to the database.
17. A data extraction system, comprising: a storage resource; a
network module; a display; a database comprising a table having one
or more table attributes; a processor communicatively coupled to
the storage resource and the network module, wherein the processor
executes application code instructions that are stored in the
storage resource and that cause the data extraction system to:
provide, on the display, at least one graphical user interface
comprising inputs for receiving a database connection parameter, a
remote system connection parameter, a one-to-one mapping of at
least one table attribute to a predefined attribute, and a schedule
for extracting data from the database; receive the database
connection parameter, the remote system connection parameter, the
mapping, and the schedule; establish, in accordance with the
schedule, a connection with the database using the database
connection parameter; extract, in accordance with the schedule,
data from the database using the mapping; process, in accordance
with the schedule, the extracted data; establish, in accordance
with the schedule and via the network module, a connection with a
remote system using the remote system connection parameter; and
transmit, in accordance with the schedule and via the network
module, the processed data to the remote system.
18. A data extraction system, comprising: one or more processors
for executing programs; a network interface for receiving and
transmitting data; a storage resource containing one or more data
objects, each data object having one or more attributes; and a data
extraction engine executable by the one or more processors, the
engine comprising: instructions for obtaining a mapping of the one
or more attributes to one or more predefined attributes;
instructions for extracting data from the storage resource based on
the mapping; and instructions for transmitting the data to a remote
system via the network interface.
19. A computer program product for use in conjunction with a
computer system and a database comprising a table having one or
more table attributes, the computer program product comprising a
computer readable storage medium and a computer program mechanism
embedded therein, the computer program mechanism comprising:
instructions for receiving a database connection parameter, a
remote system connection parameter, and a mapping of at least one
table attribute to a predefined attribute; instructions for
establishing a connection with the database using the database
connection parameter; instructions for extracting data from the
database based on the mapping; instructions for establishing a
connection with a remote system using the remote system connection
parameter; and instructions for transmitting the processed data to
the remote system.
20. A computer program product for use in conjunction with a
computer system and a database comprising data objects having one
or more attributes, the computer program product comprising a
computer readable storage medium and a computer program mechanism
embedded therein, the computer program mechanism comprising:
instructions for receiving a mapping of at least one data object
attribute to a predefined attribute; instructions for extracting
data from the database based on the mapping; and instructions for
transmitting the extracted data to a remote system.
21. A data extraction system, comprising: a storage resource; a
network module; a database comprising a table having one or more
table attributes; a processor communicatively coupled to the
storage resource and the network module, wherein the processor
executes application code instructions that are stored in the
storage resource; and a means for extracting data from the
database.
Description
CROSS REFERENCE TO RELATED APPLICATION
[0001] This patent application claims priority under 35 U.S.C.
.sctn.119 to U.S. Patent Application No. 61/364,780, entitled,
"Point of Sale Data Collection," filed Jul. 15, 2010, the complete
disclosure of which is hereby fully incorporated herein by
reference.
TECHNICAL FIELD
[0002] The present disclosure relates generally to collecting data
related to product sales and businesses that sell products.
According to exemplary embodiments, point of sale (POS) data is
intercepted as it is sent from a POS scanner to a POS application
running on a POS terminal. In the same or additional embodiments,
software interfaces with, and extracts data from (e.g., POS data,
inventory data, store data, etc.), an existing database containing
information related to product sales and businesses that sell
products. This data may be located on a datastore located in-store,
in a corporate back office, or any other location.
BACKGROUND
[0003] Computer networks, such as the internet, enable transmission
and reception of a vast array of information. In recent years, for
example, some commercial retail stores have attempted to make
product inventory information and other data related to product
sales available to customers over the internet. However, most of
this information is stored in legacy systems, from which it is time
consuming and expensive to obtain. As a result, much of the online
information provided by individual retailers is inaccurate.
Similarly, a number of third party businesses have attempted to
organize local product information (e.g., by scraping websites or
other systems that expose product information, etc.) across
multiple retailers and to provide the information over the
internet. These attempts have also not been successful, likely due
to difficulties accessing reliable data with high coverage of
products, retailers, and locations.
[0004] Thus, a need exists in the art for a system that provides
customers with accurate local product information covering multiple
products, retailers, and locations.
SUMMARY
[0005] In accordance with one aspect of the invention, a method for
extracting data related to product sales and businesses that sell
products is disclosed. The method may include receiving a database
connection parameter and a remote system connection parameter. The
method also may include establishing a connection with a database
using the database connection parameter, where the database has a
table with a table attribute. Additionally, the method may include
receiving a mapping of one of the table attributes to a predefined
attribute, and extracting data from the database based the mapping.
The method may further include establishing a connection with a
remote system using the remote system connection parameter and
transmitting the extracted data to the remote system.
[0006] In accordance with another aspect of the invention, a data
extraction system is disclosed. The system may include a storage
resource, a network module, a database including a table with one
or more table attributes, and a processor communicatively coupled
to the storage resource and the network module. The processor may
execute application code instruction that may be stored in the
storage resource. The instructions may cause the data extraction
system to receive a database connection parameter, a remote system
connection parameter, and a mapping of at least one table attribute
to a predefined attribute. In addition, the instructions may cause
the data extraction system to establish a connection with the
database using the database connection parameter. Further, the
instructions may further cause the data extraction system to
extract data from the database based on the mapping, to process the
extracted data, and to establish (via the network module) a
connection with a remote system using the remote connection
parameter. Finally, the instructions may cause the data extraction
system to transmit (via the network module) the processed data to
the remote system.
[0007] According to another aspect of the invention, a data
extraction system is disclosed. The system may include one or more
processors for executing programs, a network interface for
receiving and transmitting data, a storage resource containing one
or more data objects, and a data extraction engine that is
executable by the one or more processors. Each data object may have
one or more attributes. In addition, the data extraction engine may
include instructions for obtaining a mapping of the one or more
attributes to one or more predefined attributes, instructions for
extracting data from the storage resource based on the mapping, and
instructions for transmitting the data to a remote system via the
network interface.
[0008] According to a further aspect of the invention, a computer
program product is disclosed. The computer program product may be
for use in conjunction with a computer system and a database
including a table having one or more table attributes. The computer
program product may include a computer readable storage medium and
a computer program mechanism embedded therein. Additionally, the
computer program mechanism may include instructions for receiving a
database connection parameter, a remote system connection
parameter, and a mapping of at least one table attribute to a
predefined attribute. The computer program mechanism may further
include instructions for establishing a connection with the
database using the database connection parameter, instructions for
extracting data from the database based on the mapping, and
instructions for establishing a connection with a remote system
using the remote system connection parameter. Finally, the computer
program mechanism may include instructions for transmitting the
processed data to the remote system.
[0009] According to still another aspect of the invention, a
computer program product is disclosed. The computer program product
may be for use in conjunction with a computer system and a database
including data objects having one or more attributes. The computer
program product may include a computer readable storage medium and
a computer program mechanism embedded therein. Additionally, the
computer program mechanism may include instructions for receiving a
mapping of at least one data object attribute to a predefined
attribute, instructions for extracting data from the database based
on the mapping, and instructions for transmitting the extracted
data to a remote system.
BRIEF DESCRIPTION OF THE DRAWINGS
[0010] FIG. 1 depicts a system for collecting POS data, in
accordance with certain exemplary embodiments.
[0011] FIG. 2 depicts a system for collecting POS data, in
accordance with certain exemplary embodiments.
[0012] FIG. 3 depicts a block diagram of POS data collector, in
accordance with certain exemplary embodiments.
[0013] FIG. 4 is a block flow diagram depicting a method for
collecting POS data, in accordance with certain exemplary
embodiments.
[0014] FIG. 5 depicts a system for extracting data, in accordance
with certain exemplary embodiments.
[0015] FIG. 6 depicts a system for extracting data, in accordance
with certain exemplary embodiments.
[0016] FIG. 7 depicts a system for extracting data, in accordance
with certain exemplary embodiments.
[0017] FIG. 8 is a block flow diagram depicting a method for
extracting data, in accordance with certain exemplary
embodiments.
DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS
[0018] The methods and systems described herein enable collection
of the world's local point of sale (POS) data and other information
related to product sales and businesses that sell products.
[0019] According to certain exemplary embodiments, a POS data
collection system can include a POS data collector that is
implemented as a hardware device and/or in software. The adapter
may be installed at the point of sale in retail stores, for
example, between a barcode scanner and the POS application running
on a POS terminal (e.g., the cash register). When a product is
scanned at the point of sale, the adapter may intercept the barcode
as it is transmitted from the barcode scanner to the POS
application. After intercepting the barcode, the adapter may
transmit the barcode to the POS application without noticeable
delay, so that the adapter does not interrupt standard business
processes. In addition, the adapter may send the barcode to a
remote server via a network connection. In this manner, the remote
server may collect POS data that covers a significant number of
products, retailers, and locations.
[0020] In the same or additional embodiments, a data collection
system can include a content extractor that is implemented in
software. The content extractor may be installed on a commercial
retailer's local computer system, and may be used to extract
information related to product sales and/or the commercial retailer
itself. For example, many commercial retailers have local computer
systems that store product inventory information, point of sale
data, store listings (e.g., businesses with more than one
location), product listings (e.g., all products for sale),
price-quantity data (e.g., per store, per product pricing), store
maps, circulars, coupons, etc. This and other data related to
product sales and the business that sells products may be stored in
a commercial retailer's local computer system.
[0021] This data may be stored in a commercially available database
format (e.g., MySQL, Oracle, MS SQL Server, etc.) or according to
other known methods (e.g., product inventory/sales software, flat
file, spreadsheet, etc.). According to certain exemplary
embodiments, the content extractor may be used to easily and
intuitively interface to the information stored in such a database
(or other known format) so that the data may be extracted and sent
to a remote computer via a network connection. For example, the
content extractor may provide a user interface to easily and
intuitively map existing database attributes to those expected by
the remote computer, and to easily and intuitively schedule a
one-time, periodic, and/or real-time transmission of the extracted
data to the remote computer. In this manner, the remote computer
may collect information that covers a significant number of
products, retailers, and locations.
[0022] One or more aspects of the invention may comprise a computer
program that embodies the functions described and illustrated
herein. However, it should be apparent that there could be many
different ways of implementing the invention in computer
programming, and the invention should not be construed as limited
to any one set of computer program instructions. Further, a skilled
programmer would be able to write such a computer program to
implement an embodiment of the disclosed invention based on the
appended flow charts and associated description in the application
text. Therefore, disclosure of a particular set of program code
instructions is not considered necessary for an adequate
understanding of how to make and use the invention. The inventive
functionality of the invention will be explained in more detail in
the following description, read in conjunction with the figures
illustrating the program flow.
[0023] Turning now to the drawings, in which like numerals indicate
like elements throughout the figures, exemplary embodiments of the
invention are described in detail.
[0024] FIG. 1 depicts a system 100 for collecting POS data, in
accordance with certain exemplary embodiments. As depicted in FIG.
1, system 100 may comprise POS data collector 105, POS scanner 110,
POS terminal 115, and remote system 150. POS data collector 105 may
be connected to POS scanner 110 via connection 120, and to POS
terminal 115 via connection 125. POS data collector 105 may
communicate with POS scanner 110 and POS terminal 115 using any
standard or proprietary storage and/or communication protocol,
including without limitation, universal serial bus (USB), RS-232,
and/or any combination thereof. And while the embodiment in FIG. 1
depicts wired connections 120 and 125, either or both of these
connections may be replaced with a wireless communication link
(e.g., Wi-Fi, MiFi, Bluetooth, etc.) in accordance with certain
other exemplary embodiments. Additionally, while POS data collector
105 is depicted as a standalone hardware device in FIGS. 1 and 2,
one or more components of POS data collector 105 may be integrated
into one or both of POS scanner 110 and POS terminal 115, in
accordance with alternative exemplary embodiments.
[0025] As depicted in FIG. 1, the POS scanner 110 may be a
traditional wired, generally stationary barcode scanner, in
accordance with certain exemplary embodiments. FIG. 2 depicts
system 200 according to an alternative embodiment wherein POS
scanner includes POS wireless barcode scanner 212 and POS wireless
base station 210. In this alternative embodiment, POS data
collector 105 may communicate with POS wireless base station 210 in
the same way the POS data collector 105 communicates with POS
scanner 110 of FIG. 1. While FIGS. 1 and 2 illustrate different
exemplary embodiments, it should be appreciated that the POS data
collector 105 may be used similarly in POS systems with hardware
that varies from that depicted in FIGS. 1 and 2.
[0026] According to an exemplary embodiment, POS scanner 110 may be
a barcode scanner and may be configured to read any number of
barcode formats, including without limitation UPC, EAN, JAN, etc.
According to other exemplary embodiments, POS scanner 110 may be an
RFID reader or any other device that is capable of reading product
identifier information in a POS system.
[0027] As further depicted in FIG. 1, POS data collector 105 may be
communicatively coupled to remote system 150 via network 140.
Network 140 may be implemented as, or may be a part of, a storage
area network (SAN), personal area network (PAN), local area network
(LAN), a metropolitan area network (MAN), a wide area network
(WAN), a wireless local area network (WLAN), a virtual private
network (VPN), an intranet, the Internet or any other appropriate
architecture or system that facilitates the communication of
signals, data and/or messages (generally referred to as data). POS
data collector 105 may connect to network 140 via connection 135.
According to an exemplary embodiment, connection 135 may be a
dedicated cellular modem connection. In an alternative embodiment,
connection 135 may be a wired Ethernet connection, a Wi-Fi or
Bluetooth connection to a hotspot that has a wired/wireless
internet connection (e.g., MiFi), or any other wired or wireless
connection suitable for communicating signals with network 140.
[0028] FIG. 3 depicts a block diagram of POS data collector 105, in
accordance with certain exemplary embodiments. Components of POS
data collector 105 may include, but are not limited to, processor
360, storage resource 362, network module 364, input/output (I/O)
module 366, clock module 368, GPS module 370, and error indicator
130 (error indicator 130 is also depicted in FIGS. 1 and 2). As
depicted processor 360 may be communicatively coupled to each of
the other components of POS data collector 105.
[0029] Processor 360 may comprise any system, device, or apparatus
operable to interpret and/or execute program instructions and/or
process data associated with software module 380, and may include,
without limitation a microprocessor, microcontroller, digital
signal processor (DSP), application specific integrated circuit
(ASIC), or any other digital or analog circuitry configured to
interpret and/or execute program instructions and/or process data.
In some embodiments, processor 360 may interpret and/or execute
program instructions and/or process data stored locally (e.g., in
storage resource 362). In the same or alternative embodiments,
processor 360 may interpret and/or execute program instructions
and/or process data stored remotely (e.g., in a network storage
resource (not depicted) of network 140 of FIGS. 1 and 2).
[0030] Local storage resource 362 may comprise computer-readable
media (e.g., hard disk drive, floppy disk drive, CD-ROM, and/or
other type of rotating storage media, flash memory, EEPROM, and/or
other type of solid state storage media) and may be generally
operable to store data.
[0031] Network module 364 may be any suitable system, apparatus, or
device operable to serve as an interface between information POS
data collector 105 and network 140 (FIGS. 1 and 2). Network module
364 may enable information POS data collector 105 to communicate
over network 140 using any suitable transmission protocol and/or
standard, including without limitation all transmission protocols
and/or standards enumerated above with respect to the discussion of
network 140 and connection 135.
[0032] I/O module 366 may be any system, device, or apparatus
generally operable to receive and/or transmit data to/from/within
information POS data collector 105. I/O module 366 may comprise,
for example, any number of communication interfaces, including
without limitation a USB interface and/or an RS-232 interface.
[0033] Clock module 368 may be any system, device, or apparatus
generally operable to maintain an internal clock. According to
certain exemplary embodiments, clock module 368 may synchronize
with the UTC (coordinated universal time). Additionally, clock
module 368 may be configured to maintain an accurate internal clock
when power to POS data collector 105 is removed (e.g., via an
independent battery power source).
[0034] GPS module 370 may be any system, device, or apparatus
generally operable to determine and provide the location of POS
data collector 105 based on global positioning satellite signals or
other similar methods (e.g., via location information received by
network module 364).
[0035] Error indicator 130 may be any system, device, or apparatus
generally operable to provide an indication that may be detected
visually or audibly by a person near POS data collector 105. For
example, error indicator 130 may be a visible LED light, in
accordance with certain exemplary embodiments. In the same or
alternative embodiments, error indicator may be an audible speaker
capable of producing an audible noise.
[0036] FIG. 4 is a block flow diagram depicting a method 400 for
collecting POS data, in accordance with certain exemplary
embodiments. The method 400 is described with reference to
components illustrated in FIGS. 1-3.
[0037] In block 405, a software module 380 of a POS data collector
105 may wait to obtain a product identifier associated with a
product that is being purchased. For example, POS scanner 110 is
used to scan the barcode of a product that is being purchased.
After scanning, the POS scanner 110 transmits the product
identifier for processing by a POS application running on POS
terminal 115. Because the POS data collector 105 is communicatively
coupled between POS scanner 110 and POS terminal 115, POS data
collector 105 may obtain the product identifier associated with the
purchased product as the identifier is transmitted to the POS
terminal 115.
[0038] In block 410, software module 380 may transmit an unmodified
version of the product identifier to POS terminal 115. In
accordance with certain exemplary embodiments, this transmission
may be performed without noticeable delay so that the addition of
POS data collector 105 to POS system 100 does not interfere with
the normal business flow. In other words, the POS application
running on POS terminal 115 will be able to proceed with the
purchase transaction, and will not be noticeably delayed by the
addition of the POS data collector 105 to POS system 100.
[0039] In block 415, the software module 380 may establish a
connection with remote system 150 via network module 364 and
network 140. According to an exemplary embodiment, software module
380 may establish this connection by resolving the host name and/or
address via DNS or other protocols, and subsequently communicating
with remote system 150 to establish the connection. If a connection
is successfully established (block 420), software module 380 may
proceed to block 425 and may transmit the product identifier to
remote host 150. According to certain exemplary embodiments, this
transmission may be via the HTTPS protocol, or any other protocol
suitable for communicating data over network 140 to remote system
150. According to exemplary embodiments that utilize the HTTPS
protocol, software module 380 may verify the validity of the SSL
certificate, and may not transmit data if validity is not
established.
[0040] According to an exemplary embodiment, the data transmission
in block 425 may include only the product identifier. In other
embodiments, software module 380 may transmit additional data to
remote server 150. In both cases, and according to the HTTPS
protocol used in an exemplary embodiment, the transmitted data may
be sent as a body of a POST request over HTTPS. Thus, when only the
product identifier is transmitted, the body of the POST request may
contain the following fields:
[0041] scan:<product_identifier>
[0042] In an alternative embodiment, software module 380 may
provide additional data including, but not limited to, one or more
of the following: a merchant identifier, a store identifier (e.g.,
for merchants with more than one store), a scanned product count, a
current time stamp, a device identifier (e.g., a
manufacturer-issued serial number), a security key (e.g., for
secure communication), a software version number, price, and a
device GPS coordinate. In accordance with this alternative
embodiment, the body of the POST request may contain one or more of
the following fields:
TABLE-US-00001 serial:<device_identifier> key:<security
key> version:<software version>
currenttime:<current_time>
sequence:<scanned_product_count>
store:<store_identifier> gps:<gps_coordinates>
scan:<product_identifier>
[0043] In yet another exemplary embodiment, software module 380 may
provide a time stamp indicating when the product identifier was
scanned by the POS scanner. According to this embodiment, the body
of the POST requests depicted above may be modified as follows:
[0044] scan:<product_identifier>:<timestamp>
[0045] In block 445, software module 380 may determine if the
transmission was successful. For example, according to a
transmission via HTTPS, software module 380 may receive a HTTP
200/OK response with an empty body when the transmission is
successful. Alternatively, software module 380 may receive either a
4xx or 5xx HTTP error if the transmission is unsuccessful.
[0046] If the data transmission is not successful (block 445),
software module 380 may proceed to block 450, where it may
determine if a predetermined retry count has been exceeded. If the
retry count has not been exceeded, software module 380 may
increment the retry count and proceed back to block 425 where it
may again attempt to transmit the product identifier (and any other
data, as described above) to remote system 150. According to an
exemplary embodiment, software module 380 may proceed to block 425
immediately. In other embodiments, software module 380 may wait for
a predetermined amount of time (e.g., 1, 5, 10, etc. minutes)
before retrying the transmission. In yet another exemplary
embodiment, software module 380 may wait for 1 minute before
retrying (the "timeout interval"), and if the next attempted
transmission is unsuccessful, double the timeout interval. In this
embodiment, software module 380 may continue to double the timeout
interval for each consecutive failed transmission attempt until the
timeout interval is 32 minutes, at which point software module 380
may keep trying to transmit the data every 32 minutes.
[0047] In the event the number of transmission attempts exceeds the
predetermined retry count in block 450, software module may proceed
to block 440, and may activate error indicator 130. In this manner,
an employee of the retail store may be notified that the POS data
collector has encountered an error.
[0048] Similarly, if a connection is not successfully established
(block 420), software module 380 may proceed to block 435, where it
may determine if a predetermined retry count has been exceeded. If
the retry count has not been exceeded, software module 380 may
increment the retry count and proceed back to block 415 where it
may again attempt to establish a connection with remote system 150.
Here, a timeout interval algorithm similar to that described above
may be used. In the event the number of connection attempts exceeds
the predetermined retry count in block 435, software module may
proceed to block 440, and may activate error indicator 130. In this
manner, an employee of the retail store may be notified that the
POS data collector has encountered an error.
[0049] In the event the error indicator is activated, software
module 380 may proceed back to block 405, where it may wait to
obtain the next product identifier associated with an additional
product that is being purchased. Thus, software module 380 may
continue to operate despite the error condition. In this manner,
the POS data collector 105 may at least continue to transmit
scanned product identifiers to the POS terminal (block 410) so that
the error condition does not interfere with business operations.
According to an exemplary embodiment (not depicted), software
module 380 may, in such a case, deactivate the error indicator if a
subsequent attempt to establish a connection with remote system 150
or to transmit data to remote system 150 is successful.
[0050] Thus, according to the exemplary embodiment of FIG. 4, POS
data collector 105 may transmit each product identifier essentially
in real time as each product is scanned and without significant
delay (i.e., no more delay than is necessary for the method steps
of FIG. 4 to be performed).
[0051] According to an exemplary embodiment and as an alternative
to transmitting POS data in real time, POS data collector 105 may
accumulate POS data and transmit the accumulated data to remote
system 150 periodically. For example, software module 380 may store
accumulated product identifiers in storage resource 362 until such
time as they are transmitted to remote system 150. In one
embodiment, for example, software module 380 may accumulate product
identifiers for a predetermined amount of time (e.g., 5, 15, 30,
etc. minutes) before transmitting the data to remote server 150. In
yet another embodiment, software module 380 may accumulate product
identifiers and may transmit the data to remote server 150 after a
predetermined number of identifiers (e.g., 5, 100, 1000, etc.) have
been accumulated.
[0052] In still a further embodiment, software module 380 may
accumulate POS data and use both a time period and a predetermined
product identifier count to determine when to transmit the data to
remote system 150. According to this exemplary embodiment, software
module 380 may buffer product identifiers for a predetermined
amount of time or until a predetermined number of product
identifiers are accumulated--whichever comes first. In still
another embodiment, software module 380 may accumulate POS data
until a predetermined amount of data is accumulated (e.g., 1 kB, 1
MB, etc.). Accordingly, the data transmission may be optimized to
minimize traffic while still sending updates with reasonable
frequency.
[0053] Thus, software module 380 may transmit only the accumulated
product identifiers, in accordance with an exemplary embodiment. In
such a case, the body of an HTTPS request may be formatted as
follows:
TABLE-US-00002 scan:<product_identifier>:<timestamp>
scan:<product_identifier>:<timestamp> . . .
[0054] In embodiments where the software module 380 provides data
in addition to the product identifiers, the body of the POST
request may contain one or more of the following fields:
TABLE-US-00003 serial:<device_identifier> key:<security
key> version:<software version>
currenttime:<current_time>
sequence:<scanned_product_count>
store:<store_identifier> gps:<gps_coordinates>
scan:<product_identifier>:<timestamp>
scan:<product_identifier>:<timestamp> . . .
[0055] In the exemplary embodiments described above, the connection
to remote system 150 via network module 364 and network 140 may be
kept open or may be closed between transmissions.
[0056] POS data collector 105 may transmit an alive indicator to
remote system 150, in accordance with an exemplary embodiment. For
example, regardless of whether any products are scanned, software
module 380 may send an alive indicator to remote system 150 on a
periodic basis (e.g., every 4, 6, 8, etc. hours). Software module
380 may transmit an alive indicator using steps similar to those
described in FIG. 4. For example, software module 380 may perform
the same retry/error algorithm when attempting to establish a
connection with remote system 150 and to transmit the alive
indicator.
[0057] According to exemplary embodiments that utilize the HTTPS
protocol for transmission, the HTTPS transmission for an alive
indicator may be directed to a URL that is different from the URL
used for transmitting product identifier(s). In addition, the body
of an alive indicator POST request may contain one or more of the
following fields:
TABLE-US-00004 serial:<device_identifier> key:<security
key> version:<software version>
currenttime:<current_time>
sequence:<scanned_product_count>
[0058] Accordingly, remote system 150 may use the alive indicator
transmission to monitor POS data collector 105 for errors. In other
words, remote system 150 may determine that POS data collector 105
is not operating if it does not receive an alive indicator
according to the predetermined periodic schedule. Thus, a POS data
collection system provider can arrange to troubleshoot POS data
collector 105 in the event it stops operating correctly.
[0059] FIG. 5 depicts a system 500 for extracting data, in
accordance with certain exemplary embodiments. As depicted in FIG.
5, system 500 may comprise local computer 502, remote storage
resource 508, remote computer 510, and remote databases 516. Local
computer 502 may be a commercial retailer's central server located
at the retailer's headquarters, or it may be a regional server, or
a store-specific server. Database 504 may reside on local computer
502 or may reside on a remote database server (not pictured), and
may contain data related to retail products and/or the business
that sells products. For example, local computer 502 may be owned
by a commercial retailer and database 504 may contain data related
to the retailer's product inventory, the retailer's stores (e.g.,
businesses with more than one location), point of sale
transactions, product listings, price-quantity data (e.g., per
store, per product pricing), circulars, coupons, etc. According to
exemplary embodiments, database 504 may be a commercially available
database program (e.g., MySQL, Oracle, MS SQL Server, etc.). In
alternative embodiments, database 504 may be part of commercially
available product inventory/sales software, a flat data file, a
spreadsheet, etc. Similarly, remote databases 516 may be of any
type, but may be located remote to local computer 502.
[0060] According to exemplary embodiments, content extractor 506
may reside on local computer 512. Content extractor may be software
that is generally operable to extract data from database 504, to
process the extracted data, and to transmit data to remote storage
508 and/or remote computer 510. As illustrated, content extractor
506 may include a configuration file 514. Configuration file 514
may be any format, including binary, clear text, database, etc.
Configuration file 514 may contain connection and mapping settings
related to database 504, remote storage 508 and/or remote computer
510. Content extractor 506 and configuration file 514 are explained
in detail with reference to FIGS. 6-8, below.
[0061] Remote storage 508 may be any storage facility accessible to
both local computer 502 and remote computer 510. According to
exemplary embodiments, remote storage 508 may include disk-based
storage resources, such as magnetic storage, opto-magnetic storage,
or any other type of disk-based storage. As depicted in FIG. 5,
remote storage may be separate from local computer 502 and remote
computer 510, e.g., as a stand-alone network attached storage
solution, as a cloud storage solution, etc. Alternatively, remote
storage 508 may form an integral part of remote computer 510, e.g.,
as a storage resource (or array of storage resources) residing on
remote computer 510.
[0062] Remote computer 510 may be any instrumentality or aggregate
of instrumentalities operable to compute, classify, process,
transmit, receive, retrieve, originate, switch, store, display,
manifest, detect, record, reproduce, handle, or utilize any form of
information, intelligence, or data for business, scientific,
control, entertainment, or other purposes. For example, an
information handling system may be a mainframe computer, a network
server, a personal computer, a PDA, a consumer electronic device, a
network storage device, or any other suitable device and may vary
in size, shape, performance, functionality, and price. Remote
computer 510 may include memory, one or more processing resources
such as a central processing unit (CPU) or hardware or software
control logic. Additional components or the remote computer 510 may
include one or more storage devices, one or more communications
ports for communicating with external devices as well as various
input and output (I/O) devices, such as a keyboard, a mouse, and a
video display. The remote computer 510 may also include one or more
buses operable to transmit communication between the various
hardware components.
[0063] As further depicted in FIG. 5, local computer 502 may be
communicatively coupled to remote storage 508 (if provided) and
remote computer 510 via network 512. Network 512 may be implemented
as, or may be a part of, a storage area network (SAN), personal
area network (PAN), local area network (LAN), a metropolitan area
network (MAN), a wide area network (WAN), a wireless local area
network (WLAN), a virtual private network (VPN), an intranet, the
internet or any other appropriate architecture or system that
facilitates the communication of signals, data and/or messages
(generally referred to as data). According to an exemplary
embodiment, local computer 502 may connect to network 512 via a
dedicated cellular modem connection. In an alternative embodiment,
local computer 502 may connect to network 512 via a wired Ethernet
connection, a Wi-Fi or Bluetooth connection to a hotspot that has a
wired/wireless internet connection (e.g., MiFi), or any other wired
or wireless connection suitable for communicating signals over
network 512.
[0064] FIG. 6 depicts a system 600 for extracting data, in
accordance with certain exemplary embodiments. As depicted in FIG.
6, system 600 may include configuration dialogue 601. Configuration
dialogue 601 may be presented by content extractor 506 to a user of
local computer 502, and may be generally operable to accept input
from the user. For example, configuration dialogue 601 may include
a Database Type menu 602. According to certain exemplary
embodiments, Database Type menu 602 may be a drop-down menu with a
preconfigured selection of database types that are compatible with
content extractor 506. For example, the Database Type menu 602 may
contain entries for commercially available database programs (e.g.,
MySQL, Oracle, MS SQL Server, etc.), commercially available product
inventory/sales software (e.g., POSlog, etc.), flat data files,
spreadsheets, etc. Accordingly, a user of local computer 502 may
select the appropriate entry in Database Type menu 602 that
corresponds to database 504.
[0065] According to certain exemplary embodiments, configuration
dialogue 601 may also include Database Host input 604 (with
optional port number), Database Name input 606, DB Username input
608, and DB Password input 610. Accordingly, a user of local
computer 502 may specify the connection parameters specific to
database 504 so that content extractor 506 may obtain access to the
data contained therein. While inputs 602-610 are explicitly
depicted in FIG. 6, configuration dialogue 601 should not be
limited to this specific embodiment. For example, additional inputs
may be provided related to accessing database 504. Alternatively,
some of the depicted inputs may not be necessary to access database
504 depending on the specific configuration of local computer 502
and database 504.
[0066] In addition to the database configuration parameters just
described, configuration dialogue 601 may accept remote computer
and/or remote storage configuration parameters. For example, in
some embodiments, configuration dialogue 601 may include Remote
Username input 612, Remote Password input 614, Schedule Frequency
menu 616, Schedule Time input 618, and Schedule Day menu 619.
According to certain exemplary embodiments, Schedule Frequency menu
616 may be a drop-down menu with a preconfigured selection of
frequency types that are compatible with content extractor 506.
[0067] According to the depicted embodiment, Schedule Frequency
menu 616 includes the "weekly" frequency type, indicating that
content extractor 506 should extract data from database 504 and
transmit the data to remote storage 508 and/or remote computer 510
on a weekly basis, for example, at 7:00 PM every Saturday (as
specified by Schedule Time input 618 and Schedule Day menu 619). In
other exemplary embodiments, Schedule Frequency menu 616 may
contain entries for other periodic extraction frequencies, such as
"monthly," "daily," "hourly," etc.
[0068] In still another embodiment, Schedule Frequency menu 616 may
contain an entry for "instant" or "manual" extraction. According to
these embodiments, content extractor 506 may extract data from
database 504 and transmit the data to remote storage 508 and/or
remote computer 510 as soon as the user clicks Save button 622.
[0069] According to yet another exemplary embodiment, Schedule
Frequency menu 616 may contain an entry for "real time" extraction.
According to this embodiment, content extractor 506 may extract
data from database 504 and transmit the data to remote storage 508
and/or remote computer 510 in real time. For example, real time
extraction may occur in response to the updating of a database
table in database 504. This may be useful, for example, to reflect
a change of product pricing, a store closing, a promotion, a
regional event, product sales (e.g., line item data reflecting
recent sale information), or other change related to product sales
and/or the business or store that sells the products. In other
exemplary embodiments, real time extraction may occur in response
to other predetermined events that are external to database 504
(e.g., local computer establishing connection with remote storage
508 and/or remote computer 510, content extractor establishing
connection to database 504, etc.). These and other events that
trigger real time extraction may be provided for in configuration
file 514.
[0070] Thus, by providing parameters 612-619, a user of local
computer 502 may specify the connection parameters specific to
remote storage 508 and/or remote computer 510 so that content
extractor 506 may connect and transmit data thereto. While inputs
612-619 are explicitly depicted in FIG. 6, configuration dialogue
601 should not be limited to this specific embodiment. For example,
additional inputs may be provided related to accessing remote
storage 508 and/or remote computer 510. Alternatively, some of the
depicted inputs may not be necessary to access remote storage 508
and/or remote computer 510 depending on the specific configuration
of local computer 502, remote storage 508, and remote computer
510.
[0071] According to exemplary embodiments, configuration dialogue
601 may include Test Connections button 620, Save button 622, and
Clear button 624, which may provide the function indicated by each
respective label. For example, Test Connections button 620 may use
the user-supplied input parameters to test for a valid connection
to the database 504, remote storage 508, and/or remote computer
510. Save button 622 may save the user-supplied input parameters to
configuration file 514. Clear button 624 may clear all
user-supplied input so that the input fields are blank and/or
non-selected.
[0072] FIG. 7 depicts a system 700 for extracting data, in
accordance with certain exemplary embodiments. As depicted in FIG.
7, system 700 may include table mapping dialogue 702. Table mapping
dialogue 702 may be presented by content extractor 506 to a user of
local computer 502, and may be generally operable to accept input
from the user, where the input aids in mapping table attributes
(e.g., table fields) in database 504 to predefined attributes in
content extractor 506. In certain exemplary embodiments, table
mapping dialogue 702 may be specific to a certain type of
information, or table. For example FIG. 7 depicts a table mapping
dialogue 702 that is specific to store information. According to
this embodiment, the user may provide a mapping of table attributes
related to store information (e.g., for a retailer with one or
multiple stores). In other exemplary embodiments, table mapping
dialogue 702 may be specific to product information (e.g., data
related to all products that a specific retailer sells). In still
other exemplary embodiments, table mapping dialogue 702 may be
specific to price-quantity information (e.g., per store, per
product inventory and pricing information). Still other embodiments
of table mapping dialogue 702 may be provided, such that other data
related to product sales and businesses that sell products may be
collected.
[0073] According to certain exemplary embodiments, table mapping
dialogue 702 may contain Table menu 704 of a drop-down menu type.
The entries available on Table menu 704 may be provided based on
the tables available in database 504 using connection parameters
stored in configuration file 514. When the user selects a table
using Table menu 704, the attributes of the selected table may
appear in Table Attributes field 706. In the depicted example,
selected table "stores" has three attributes: name, address, and
id. Table mapping dialogue 702 may also contain Store Attributes
field 708. Store Attributes field 708 may contain predefined
attributes of content extractor 506. In this depicted embodiment,
this field is labeled "Store Attributes" because, as discussed
above, the table mapping dialogue 702 is specific to Store
Information. In other embodiments, this field of table mapping
dialogue 702 may have a different label (e.g., "Product
Attributes," "Price-Quantity Attributes," etc.).
[0074] Accordingly, a user of local computer 502 may provide a
mapping between the table attributes (shown in Table Attributes
field 706) and the predefined attributes of content extractor 506
(shown, e.g., in Store Attributes field 708). For example, a user
may select "name" from Table Attributes field 706 and "Name" from
Store Attributes field 708 and press Save Map button 712. In the
same manner, a user may map "address" to "Address Line 1," and "id"
to "Store Code." The result of this example mapping is depicted in
table mapping dialogue 720 of FIG. 7. Specifically, the mapping may
be presented to the user in the manner depicted in Mapped Values
field 726. According to exemplary embodiments and as depicted in
mapping dialogue 720, once a table attribute is mapped, it may be
removed from Table Attributes field 706. Likewise, once a store
attribute is mapped, it may be removed from Store Attributes field
706.
[0075] According to exemplary embodiments, table mapping dialogue
702 may include Generate button 714, Save button 716, and Clear
button 718, which may provide the function indicated by each
respective label. For example, Generate button 714 may use the
user-supplied input parameters to generate a file representing the
data that content extractor 506 would transmit to remote storage
508 and/or remote computer 510. This may be useful, for example, to
ensure that the user-supplied mapping is accurate. Save button 716
may save the user-supplied input parameters to configuration file
514 or a separate mapping file (not depicted). Clear button 624 may
clear all user-supplied input so that the input fields are blank
and/or revert to their initial state.
[0076] According to the features of the exemplary embodiments
described above, a user of local computer 502 may easily provide a
mapping of table attributes in existing, legacy database systems to
the predefined attributes desired by content extractor 506.
[0077] FIG. 8 is a block flow diagram depicting a method 800 for
extracting data, in accordance with certain exemplary embodiments.
The method 800 is described with reference to components
illustrated in FIGS. 5-7. FIG. 8 also illustrates a means for
extracting data according to certain exemplary embodiments.
[0078] In block 802, a content extractor 506 may wait for a trigger
condition. For example, such a trigger condition may be provided in
accordance with the user-supplied parameters 616-619 of
configuration dialogue 601. As described above, a trigger condition
may be based on a periodic setting, an instant setting, or a real
time setting. Once the configured trigger event occurs, content
extractor 506 may proceed to block 804.
[0079] In block 804, content extractor 506 may read configuration
file 514 to obtain database connection parameters in accordance
with the user-supplied parameters 602-610 of configuration dialogue
601. Content extractor 506 may also obtain table mapping parameters
in accordance with the user-supplied mapping provided in table
mapping dialogue 702. In block 806, content extractor 506 may
attempt to connect to database 504 using the obtained database
connection parameters. If the connection attempt is successful,
content extractor 506 may proceed to block 808.
[0080] In block 808, content extractor 506 may extract data from
one or more database tables residing in database 504. For example,
content extractor 506 may use the attribute mappings obtained in
block 804 to extract data from the specified table fields.
Additionally, content extractor 506 may extract data from one or
more database tables residing in remote databases 516. In this
manner, content extractor 506 can receive data from multiple
databases located in the same or different locations. For example,
a retailer may operate multiple stores that each store sales data.
The content extractor 506 may receive the data from each database
504, 516 to provide a data source for all (or any given portion) of
the retailer's distributed sales data.
[0081] In block 810, content extractor 506 may process the
extracted data. For example, content extractor 506 may verify that
the format of the extracted data matches an expected format (e.g.,
uniformity of address data, syntax, etc.). In certain embodiments,
content extractor 506 may reformat extracted data if it does not
match an expected format and not reformat the extracted data if it
does match an expected format.
[0082] In the same or additional embodiments, in block 810 content
extractor may auto-generate data based on the extracted data. For
example, in some embodiments, content extractor 506 may desire the
latitude and longitude information for a given store location. This
information may not be available in database 504. Thus, content
extractor 506 may be configured to generate latitude and longitude
information based on an address of a store location where the
address information is both available in database 504 and has been
properly mapped using mapping dialogue 702. As just described,
block 810 may illustrate a means for processing extracted data
according to exemplary embodiments.
[0083] In block 812, content extractor 506 may attempt to connect
to remote storage 508 and/or remote computer 510 using the remote
storage and/or remote computer connection parameters obtained, for
example, in block 804. If a the connection attempt is successful,
content extractor 506 may proceed to block 814, where content
extractor 506 may transmit the data (i.e., extracted data with
additions/modifications as performed in block 810) to remote
storage 508 and/or remote computer 510. After the data is
transmitted, content extractor 506 may return to block 802, where
it waits for the next trigger condition.
[0084] The exemplary methods and systems described in the
embodiments presented previously are illustrative, and, in
alternative embodiments, certain components/steps can be performed
in a different order, in parallel with one another, omitted
entirely, and/or combined between different exemplary methods,
and/or certain additional components/steps can be performed,
without departing from the scope and spirit of the invention.
Accordingly, such alternative embodiments are included in the
invention described herein.
[0085] The invention can be used with computer hardware and
software that performs the methods and processing functions
described above. As will be appreciated by those skilled in the
art, the systems, methods, and procedures described herein can be
embodied in a programmable computer, computer executable software,
or digital circuitry. The software can be stored on computer
readable media. For example, computer readable media can include a
floppy disk, RAM, ROM, hard disk, removable media, flash memory,
memory stick, optical media, magneto-optical media, CD-ROM, etc.
Digital circuitry can include integrated circuits, gate arrays,
building block logic, field programmable gate arrays (FPGA), etc.
The systems and methods described herein can be implemented by one
or more software modules operating in at least one computer system
that comprises instructions stored in a machine-readable medium and
a processor that executes the instructions.
[0086] Although specific embodiments of the invention have been
described above in detail, the description is merely for purposes
of illustration. Various modifications of, and equivalent blocks
corresponding to, the disclosed aspects of the exemplary
embodiments, in addition to those described above, can be made by
those skilled in the art without departing from the spirit and
scope of the invention defined in the following claims, the scope
of which is to be accorded the broadest interpretation so as to
encompass such modifications and equivalent structures.
* * * * *