Embodiments of the present disclosure relate generally to the field of supply chain management.
Supply chain management involves the monitoring and control of the flow of goods and services. In complex retail environments, supply chain management can involve communication with suppliers, shipping companies, warehouses, retail stores, and other entities to coordinate receiving and dispatch of goods. Logistics managers therefore often need to monitor multiple aspects of a supply chain at once.
Data and computer control are important aspects of modern supply chain management. Various components of supply chain systems often include an interface to view data, or perform actions such as updating data or sending messages and requests. The disparate systems needed to perform these tasks are often provided by a number of different vendors or are developed in-house on an as needed basis.
As a result, logistics managers often need to have multiple screens, applications, and/or queries within applications open at the same time in order to monitor the various aspects that are of interest at any given time. This can require dozens of windows for effective management. In addition, some applications require logistics managers to repeatedly query (or “refresh”) information from multiple sources due to the lack of live or automatically queried data. This requires managers to not only need to know where but when and what to query to find action items. The lack of integration can also create data processing inefficiencies if multiple users are querying for the same (or similar) information.
A need exists therefore for systems and methods to provide users with integrated views and access to a variety of supply chain system components.
Embodiments of the present disclosure provide users with integrated views and access to a variety of supply chain system components. Embodiments provide a system for automatic population of user interface elements on one or more client interfaces, based on a configuration specific to an identified user of each of the one or more client interfaces. The system can comprise a user history server, one or more facility configuration servers, a data aggregator, and a display generator.
The user history server can comprise a data store that includes a previous facility attribute for each one of a plurality of users. Each of the facility configuration servers can comprise a configuration data store including a plurality of configuration definitions. Configuration definitions can be associated with one or more of the plurality of users and can include one or more user interface elements that have one or more requirements for data. The facility configuration servers can also include a configuration request interface that is configured to provide a selected configuration definition for an identified user.
In embodiments, the selected configuration definition can be provided by selecting a configuration definition from the configuration data store of the facility configuration server that is associated with the identified user if the configuration data store includes at least one configuration definition associated with the identified user. If no configuration definition is associated with the identified user in the configuration data store, the previous facility attribute for the identified user from the user history server can be requested, and a selected configuration definition for the identified user can be selected from the facility configuration server associated with the previous facility attribute for the identified user. A data aggregator can be configured to retrieve the data required by each of the one or more user interface elements of the selected configuration definition from one or more databases.
The retrieved data can be displayed on each of the one or more client interfaces. In embodiments, a display generator can be configured to store a plurality of renderable structures defining a display, incorporating the received data of the one or more user interface elements of the selected configuration definition of the client interface. In embodiments, each of the one or more client interfaces can be further configured to receive data inputs from the identified user of the client interface.
In embodiments, each of the one or more the client interfaces can be configured to provide a user location to the facility configuration server. The user location can be determined by a global positioning system receiver, or by one or more beacons. Each beacon can be arranged at a known location and configured to detect a presence of one of the one or more client interfaces within a range of the beacon.
In embodiments, each of the one or more user interface elements can comprise an element template that defines one or more element parameters. The user interface elements can also include an element instance. The element instance can include a display format, an update frequency, and one or more instance parameter values, each instance parameter value having a corresponding element parameter. In embodiments, the data aggregator is configured to retrieve the data required for each element instance of the selected configuration definition at an interval based on the update frequency of the element instance.
In embodiments, a configuration definition can be selected for a used based on the identity of the user, the role of the user, and/or the location of the user. In embodiments, a configuration definition for the identified user can be selected by performing one of: selecting the configuration definition associated the user location of the identified user, if one exists; selecting the configuration definition associated with the user identity of the identified user, if one exists; selecting the configuration definition associated with the combination of the user role and the user location of the identified user, if one exists; selecting the configuration definition associated with the user role of the identified user, if one exists; or selecting a default configuration definition.
The above summary is not intended to describe each illustrated embodiment or every implementation of the subject matter hereof. The figures and the detailed description that follow more particularly exemplify various embodiments.
Subject matter hereof may be more completely understood in consideration of the following detailed description of various embodiments in connection with the accompanying figures.
While various embodiments are amenable to various modifications and alternative forms, specifics thereof have been shown by way of example in the drawings and will be described in detail. It should be understood, however, that the intention is not to limit the claimed inventions to the particular embodiments described. On the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the subject matter as defined by the claims.
Embodiments relate to a supply chain management system that can provide dynamically populated user interface elements to one or more client interfaces 200.
Client interface 200 can comprise user interface 102 enabling a user to interact with various user interface elements based on a predetermined configuration. User interface 102 can comprise a display generator. The display generator can reside directly on a mobile or other remote client device, or the display generator can reside on application server 300.
Each client interface 200 can further comprise one or more data communication interfaces 104 enabling client interface 200 to communicate with application server 300 or other components of system 100 as required. Data communication interfaces 104 can include wired connections such as Ethernet connections, Universal Serial Bus (USB), and the like; wireless connections such as WiFi, Bluetooth, Zwave, ZigBee, I2C, and the like; and/or other communication interfaces or protocols enabling data communication between client interface 200 and other components of system 100.
In embodiments, each client interface 200 can comprise one or more sensors 106 enabling the client interface 200 to actively or passively detect data regarding the surrounding environment. Data can be requested from the sensors 106 on a regular or random basis regardless of the task being performed. Sensors 106 can comprise optical sensors (such as cameras), temperature sensors, pressure sensors, position sensors, infrared sensors, microphones, moisture sensors, and/or some other sensor capable of sensing and returning data to client interface 200.
In embodiments, sensors 106 can comprise components for reading and/or decoding tag information on physical assets. Such components can include barcode scanners, cameras, radio frequency identification (RFID) transponders, and the like. This can improve efficiency and accuracy as the user does not have to manually enter an asset identifier.
In embodiments, sensors 106 can comprise a location monitor to track the location of the client interface 200. This monitoring can assist in determining the user's location in order to present relevant location specific user interface elements. The location can be determined in real time (or near-real time) by locating the user, or the client interface 200 associated with the user. Location sensors can comprise global positioning system (GPS) receivers. Location sensors can operate via geolocation, Wi-Fi or other wireless triangulation, dead reckoning, or other locating techniques that are known in the art.
Each client interface 200 can be independent of other client interfaces 200, such that multiple users can separately access and interact with system 100. Each client interface 200 can comprise one or more output interfaces (such as a screen, audio output, or haptic output), and one or more input interfaces (such as a touch screen, keyboard, mouse, or microphone).
Turning now to
As depicted in
Dashboard screens 108 can comprise graphical user interface (GUI) screens within personal computer (PC) or mobile apps, web pages for access via web browsers, or other screen display techniques known in the art.
User manager 408 can comprise a data store including one or more user records 410. User record 410 can include user information including user identification and authentication information (such as user names, passwords and/or password hashes), and user tracking data, such an indication of whether a user is currently logged in, which device they are using, and a current location of the user. In embodiments, user manager 408 can store user records 410 locally. In alternative embodiments, all or portions of user records 410 can be retrieved and/or verified by one or more central data providers 800. User records 410 can comprise more, fewer, or alternate data elements in embodiments. User records 410 and configuration data store 402 can enable configuration management engine 400 to provide an active configuration set 412 including data elements linking to or including the configuration definition 404 for each logged in user.
In embodiments, prompts 520 can present multiple options to the user (for example, the
“Yes,” “No,” and “Snooze” buttons depicted in
Instructions 522 can comprise scripts or other sets of commands or instructions that are executable by application server 300, local data providers 302, central data providers 800, or other external components or systems. Instructions 522 can comprise code, such as computer programming code in Java, C, Ruby, Python, or any other programming language. Instructions 522 can comprise sets of statements in database manipulation and/or control languages such as Structured Query Language (SQL), Hive Query Language, and the like. Instructions 522 can further comprise combinations of any of the above.
Examples of actions that can be initiated in embodiments include: generating maintenance requests, reassigning staff or other resources, sending messages, and/or updating shipment, task, or job statuses, though other actions also can be performed.
In embodiments, user interface elements 500 can optionally include can include, or provide information linking to, an element template 514. Element templates 514 can provide instructions enabling the rendering of specific types of units 110. For example, a pie chart element template can comprise logic, code, or other information defining the display of a pie chart, and receive parameters defining the data elements to be used to render the chart, as depicted in
In embodiments, user interface elements 500 and/or configuration definitions 404 can comprise one or more data files in a markup language such as Hyper Text Markup Language (HTML), or eXensible Market Language (XML). In embodiments, an XML-based user interface markup language such as User Interface Description Language (UIDL), XML User Interface Language (XUL), or eXtensible Application Markup Language XAML can be used.
Query generation engine 602 can be in data communication with configuration management engine 400 to receive active configurations 412. Query generation engine 602 can process active configurations 412 to determine a set of data requirements 506 currently required for each configuration definition in the active configurations set 412. Query generation engine 602 can generate one or more queries 606. Each query 606 can be assigned an execution interval according to the frequencies of each user interface element 500 and/or be allocated to a queue based on relative priorities assigned to each query.
Query execution engine 604 can be in data communication with local data providers 302 and central data providers 800 to send query requests 608, which can comprise queries 606 and/or requests for indexes to optimize data retrieval time for the current queries. Query execution engine 604 can receive query results 610, including data items requested by client interfaces 200. In embodiments, all or portions of query results 610 can be stored in cache 612 for faster retrieval.
Returning now to
Central data providers 800 can comprise a central data store 802. Central data store 802 can comprise one or more computing systems configured to provide data storage, backup, archival, and/or retrieval services. Central data providers 800 can be located at a single location, or have a distributed architecture. Central data providers 800 can comprise database systems, or other services that can be programmatically accessed via one or more API (application programming interfaces) or other communication methods. Data provider interfaces 706 can enable communication with each of a heterogeneous mix of central data providers 800.
User tracking data store 804 can be a user activity tracker, and comprise a human resources database or system, or any other service or system capable of storing and providing data regarding the last known or expected location or site of one or more users. In embodiments, user tracking data store 804 can store GPS or other geolocated coordinates provided by client interface 200. In embodiments, one or more beacons (not shown) can provide the identity of client interfaces 200 that are detected within the range of the beacon. The location of the user can therefore be inferred to be close to the known location of the beacon.
In embodiments, task management data store 806 can be provided. Task management data store can comprise a database or system configured to monitor task assignment and performance. For example, task management data store 806 can receive data indicating that a particular user has completed a task at a known location, for example unloading a pallet of goods. Task management data store 806 can therefore provide data enabling user tracking data store 804, or application servers 300 to infer the location of the user.
In embodiments, a central application server 808 can be provided. Central application server 808 can comprise the same or similar components as application servers 300, however central application server 808 can receive data directly from central data store 802, or other central data providers 800. Users at retail sites, or other locations remote from distribution centers, can use client interfaces 200 to interface with central application server 808.
In operation, client interface 200 can present dashboard 108 based on a configuration definition 404 selected for a user's identity, role, and/or location.
Users of system 100 create one or more custom configuration definitions 404.
If, at 9112, no configuration is received from a previous facility, the user's role can be requested at 9114. The user's role can be known to application server 300, or provided by central data store 802 or user tracking data store 804. At 9116, if a default configuration for the role exists, it can be returned at 9106. If no configuration for the role exists, at 9118, the default configuration for the application server 300 can be returned.
Method 9100 enables application server 300 to attempt to find a user-specific configuration, and if unsuccessful, a role and/or location-specific configuration definition 404 for return to client interface 200. Other configuration selection methods can be used, however. For example, each application server 300 can return a single facility-specific configuration in embodiments. In other embodiments, role or user specific configurations can be stored exclusively by one of central data providers 800.
Multiple methods can be used to allocate display regions by embodiments. For example, each display unit 110 can comprise a tile with a standard size, as depicted in
Returning now to
Query results 610 can be returned in multiple formats such as JavaScript Object Notation (JSON), or other data interchange formats. In embodiments, the data received by client interface 200 can be an HTML or other markup language file fully describing the rendered display. In other embodiments, the data received by client interface 200 can comprise key-value pairs including only the requested data items, to be rendered by client interface 200.
At 9304, the data requirements 506 for each user interface element 500 of each configuration definition 404 associated with an active configuration 412 can be determined, and an error can be returned to the appropriate client device at 9306 if the user does not have the necessary access privileges to view the data. If no permissions errors arise, a query 606 can be generated 9308 to retrieve the data requirements 506 from the appropriate data sources. At 9310, each query can be executed at the appropriate intervals. Queries 606 can be executed against one or more local data providers 302, or central data providers 800 as appropriate. Query results 610 can be returned to the client interfaces 200 at 9312.
In embodiments, query management engine can additional store some or all of query results 610 in cache 612. If multiple configuration definitions 404 require the same data element at different intervals, the results of one query can be cached for response to a later query. Caching can be based on one or more data staleness and/or freshness parameters associated with each data request, enabling query execution engine 604 to determine whether the cached data needs to be updated before being returned.
Control can return to 9310 to execute each query 606 as needed. Method 9300 can run continuously, with the set of active configurations 412 updated at particular intervals. The set of active configurations 412 can also be updated intermittently as client interfaces 200 communicate that a user has logged on or logged off. Because queries are only executed based on the set of active configuration 412, only those queries that are necessary to provide information to active users are run, which can save bandwidth and processing resources. In addition, caching of data can further reduce unnecessary data requests.
Client interface 200 can enable the user to initiate actions. Actions can be initiated by user input on a display unit 110. As depicted in
It should be understood that the individual steps used in the methods of the present teachings may be performed in any order and/or simultaneously, as long as the teaching remains operable. Furthermore, it should be understood that the apparatus and methods of the present teachings can include any number, or all, of the described embodiments, as long as the teaching remains operable.
In one embodiment, the system 100 and/or its components or subsystems can include computing devices, microprocessors, modules and other computer or computing devices, which can be any programmable device that accepts digital data as input, is configured to process the input according to instructions or algorithms, and provides results as outputs. In one embodiment, computing and other such devices discussed herein can be, comprise, contain or be coupled to a central processing unit (CPU) configured to carry out the instructions of a computer program. Computing and other such devices discussed herein are therefore configured to perform basic arithmetical, logical, and input/output operations.
Computing and other devices discussed herein can include memory. Memory can comprise volatile or non-volatile memory as required by the coupled computing device or processor to not only provide space to execute the instructions or algorithms, but to provide the space to store the instructions themselves. In one embodiment, volatile memory can include random access memory (RAM), dynamic random access memory (DRAM), or static random access memory (SRAM), for example. In one embodiment, non-volatile memory can include read-only memory, flash memory, ferroelectric RAM, hard disk, floppy disk, magnetic tape, or optical disc storage, for example. The foregoing lists in no way limit the type of memory that can be used, as these embodiments are given only by way of example and are not intended to limit the scope of the disclosure.
In one embodiment, the system or components thereof can comprise or include various modules or engines, each of which is constructed, programmed, configured, or otherwise adapted to autonomously carry out a function or set of functions. The term “engine” as used herein is defined as a real-world device, component, or arrangement of components implemented using hardware, such as by an application specific integrated circuit (ASIC) or field-10 programmable gate array (FPGA), for example, or as a combination of hardware and software, such as by a microprocessor system and a set of program instructions that adapt the engine to implement the particular functionality, which (while being executed) transform the microprocessor system into a special-purpose device. An engine can also be implemented as a combination of the two, with certain functions facilitated by hardware alone, and other functions facilitated by a combination of hardware and software. In certain implementations, at least a portion, and in some cases, all, of an engine can be executed on the processor(s) of one or more computing platforms that are made up of hardware (e.g., one or more processors, data storage devices such as memory or drive storage, input/output facilities such as network interface devices, video devices, keyboard, mouse or touchscreen devices, etc.) that execute an operating system, system programs, and application programs, while also implementing the engine using multitasking, multithreading, distributed (e.g., cluster, peer-peer, cloud, etc.) processing where appropriate, or other such techniques. Accordingly, each engine can be realized in a variety of physically realizable configurations, and should generally not be limited to any particular implementation exemplified herein, unless such limitations are expressly called out. In addition, an engine can itself be composed of more than one sub-engines, each of which can be regarded as an engine in its own right. Moreover, in the embodiments described herein, each of the various engines corresponds to a defined autonomous functionality; however, it should be understood that in other contemplated embodiments, each functionality can be distributed to more than one engine. Likewise, in other contemplated embodiments, multiple defined functionalities may be implemented by a single engine that performs those multiple functions, possibly alongside other functions, or distributed differently among a set of engines than specifically illustrated in the examples herein.
Various embodiments of systems, devices, and methods have been described herein. These embodiments are given only by way of example and are not intended to limit the scope of the claimed inventions. It should be appreciated, moreover, that the various features of the embodiments that have been described may be combined in various ways to produce numerous additional embodiments. Moreover, while various materials, dimensions, shapes, configurations and locations, etc. have been described for use with disclosed embodiments, others besides those disclosed may be utilized without exceeding the scope of the claimed inventions.
Persons of ordinary skill in the relevant arts will recognize that embodiments may comprise fewer features than illustrated in any individual embodiment described above. The embodiments described herein are not meant to be an exhaustive presentation of the ways in which the various features may be combined. Accordingly, the embodiments are not mutually exclusive combinations of features; rather, embodiments can comprise a combination of different individual features selected from different individual embodiments, as understood by persons of ordinary skill in the art. Moreover, elements described with respect to one embodiment can be implemented in other embodiments even when not described in such embodiments unless otherwise noted. Although a dependent claim may refer in the claims to a specific combination with one or more other claims, other embodiments can also include a combination of the dependent claim with the subject matter of each other dependent claim or a combination of one or more features with other dependent or independent claims. Such combinations are proposed herein unless it is stated that a specific combination is not intended. Furthermore, it is intended also to include features of a claim in any other independent claim even if this claim is not directly made dependent to the independent claim.
Moreover, reference in the specification to “one embodiment,” “an embodiment,” or “some embodiments” means that a particular feature, structure, or characteristic, described in connection with the embodiment, is included in at least one embodiment of the teaching. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
Any incorporation by reference of documents above is limited such that no subject matter is incorporated that is contrary to the explicit disclosure herein. Any incorporation by reference of documents above is further limited such that no claims included in the documents are incorporated by reference herein. Any incorporation by reference of documents above is yet further limited such that any definitions provided in the documents are not incorporated by reference herein unless expressly included herein.
For purposes of interpreting the claims, it is expressly intended that the provisions of Section 112, sixth paragraph of 35 U.S.C. are not to be invoked unless the specific terms “means for” or “step for” are recited in a claim.
The present application claims the benefit of U.S. Provisional Application No. 62/543,232 filed Aug. 9, 2017, which is hereby incorporated herein in its entirety by reference.
Number | Date | Country | |
---|---|---|---|
62543232 | Aug 2017 | US |