Enterprises can use third-party systems to maintain data, and analyze data. In some examples, data maintenance, and data analysis are performed in different data centers. For example, an enterprise can maintain its production data in a first data center, and can perform analytics on its production data in a second data center. In analyzing the data, technological inefficiencies can occur. For example, transmitting data from the first data center to the second data center can require a significant amount of technical resources (e.g., processors, memory, bandwidth). Further, storing redundant data in multiple data centers (e.g., production data in the first data center, and a copy of the production data in the second data center for analysis) burdens technical resources (e.g., memory).
Implementations of the present disclosure include computer-implemented methods for data analytics across multiple data centers. More particularly, implementations of the present disclosure are directed to computer-implemented methods for analytical application integration based on a remote services plug-in. In some implementations, actions include receiving, by a query manager service (QMS) executed within a first data center, a query definition provided from a browser of an analytics platform executed within the second data center, the query definition being stored in a query repository of the second data center, the query definition being validated by the QMS based on analytical metadata, and being stored in a mirror query repository of the first data center, providing, after validation of the query definition by the QMS, a calculation scenario as an object model based on the query definition, executing, by a calculation engine within the first data center, the calculation scenario to provide an analytical artifact including a query-level calculation view on transactional data stored in the first data center, and transmitting, by the first data center, the analytical artifact to the second data center to perform analytics on at least a portion of the transactional data stored in the first data center. Other implementations of this aspect include corresponding systems, apparatus, and computer programs, configured to perform the actions of the methods, encoded on computer storage devices.
These and other implementations can each optionally include one or more of the following features: the analytical metadata is provided from an application server of the first data center, and is used by the QMS to validate the query definition; a plurality of query definitions stored in the query repository of the second data center are displayed in the browser, and the query definition is selected from the plurality of query definitions for sending to the QMS of the first data center; actions further include enhancing the calculation scenario based on analytical metadata; a query of the transactional data is executed based on the analytical artifact; at least a portion of the transactional data is provided from execution of an application within the first data center; and the query definition is provided to the QMS through one or more application programming interfaces (APIs).
The present disclosure also provides a computer-readable storage medium coupled to one or more processors and having instructions stored thereon which, when executed by the one or more processors, cause the one or more processors to perform operations in accordance with implementations of the methods provided herein.
The present disclosure further provides a system for implementing the methods provided herein. The system includes one or more processors, and a computer-readable storage medium coupled to the one or more processors having instructions stored thereon which, when executed by the one or more processors, cause the one or more processors to perform operations in accordance with implementations of the methods provided herein.
It is appreciated that methods in accordance with the present disclosure can include any combination of the aspects and features described herein. That is, methods in accordance with the present disclosure are not limited to the combinations of aspects and features specifically described herein, but also include any combination of the aspects and features provided.
The details of one or more implementations of the present disclosure are set forth in the accompanying drawings and the description below. Other features and advantages of the present disclosure will be apparent from the description and drawings, and from the claims.
Like reference symbols in the various drawings indicate like elements.
Implementations of the present disclosure include computer-implemented methods for data analytics across multiple data centers. More particularly, implementations of the present disclosure are directed to computer-implemented methods for analytical application integration based on a remote services plug-in. Implementations can include actions of receiving, by a query manager service (QMS) executed within a first data center, a query definition provided from a browser of an analytics platform executed within the second data center, the query definition being stored in a query repository of the second data center, the query definition being validated by the QMS based on analytical metadata, and being stored in a mirror query repository of the first data center, providing, after validation of the query definition by the QMS, a calculation scenario as an object model based on the query definition, executing, by a calculation engine within the first data center, the calculation scenario to provide an analytical artifact including a query-level calculation view on transactional data stored in the first data center, and transmitting, by the first data center, the analytical artifact to the second data center to perform analytics on at least a portion of the transactional data stored in the first data center.
In some examples, the client device 102 can communicate with one or more of the data centers 104, 106 over the network 108. In some examples, the client device 102 can include any appropriate type of computing device such as a desktop computer, a laptop computer, a handheld computer, a tablet computer, a personal digital assistant (PDA), a cellular telephone, a network appliance, a camera, a smart phone, an enhanced general packet radio service (EGPRS) mobile phone, a media player, a navigation device, an email device, a game console, or an appropriate combination of any two or more of these devices or other data processing devices.
In some implementations, the network 108 can include a large computer network, such as a local area network (LAN), a wide area network (WAN), the Internet, a cellular network, a telephone network (e.g., PSTN) or an appropriate combination thereof connecting any number of communication devices, mobile computing devices, fixed computing devices and server systems.
In some implementations, each server device 110 includes at least one server and at least one data store. In the example of
To provide context for implementations of the present disclosure, enterprises can use third-party systems to maintain data, and analyze data. In some examples, data maintenance, and data analysis are performed in different data centers. For example, and with reference to
In view of this, and as described in further detail herein, implementations of the present disclosure enable provision of analytical artifacts within a first data center for data analytics in a second data center. More particularly, implementations of the present disclosure provide analytical application integration based on a remote services plug-in.
Implementations of the present disclosure are described in further detail with reference to example platforms. It is contemplated, however, that implementations of the present disclosure can be realized with any appropriate platform. A first example platform includes the SAP Analytics Cloud (SAC) provided by SAP SE of Walldorf, Germany. In some examples, SAC is provided as a third-party service that an enterprise can access to perform analytics on its data (e.g., production data used in operations of the enterprise). A second example platform includes SAP SuccessFactors provided by SAP SE of Walldorf, Germany, and can be described as a cloud-based human capital management (HCM) platform. In some examples, the enterprise can use SuccessFactors to perform human resource operations (e.g., payroll, employee engagement, reviews).
In some implementations, the data center 202 hosts an analytics platform. In the example context introduced above, the data center 202 hosts the SAC platform. In some implementations, the data center 204 hosts one or more applications used for enterprise operations, and stores enterprise data (transactional data) 205 that can be processed by the analytics platform, as described herein. In the example context introduced above, SuccessFactors is an example application that can be hosted on the data center 204, and data stored in the data center 204 can include employee data (e.g., name, address, hire date, role, permissions, compensation information, review information). As depicted in
In some implementations, a user 212 can interface with the SAC platform using the browser 206. In some examples, the user 212 interfaces with the SAC platform to access analytical reports, retrieve data, run data aggregations, manipulate views on data (e.g., filter, slice), and the like. For example, the browser 206 can display one or more user interfaces (UIs) that enable the user 212 to input data to, and receive data from the SAC platform. In some examples, the device that the browser 206 executes on is in communication with the data center 202 over a network (e.g., the network 108 of
In accordance with implementations of the present disclosure, and referring again to
In some implementations, the QMS 218 includes a calculation scenario 220. A calculation scenario is an object model that can be used to generate representations of analytical artifacts (e.g., calculation views, SQL views). In some examples, each calculation scenario can be used, in hand with a calculation engine 222, to generate a corresponding analytical artifact 224 in the database server 210. These analytical artifacts 224 are streamlined for usage in the analytics platform (e.g., SAP SAC) of the data center 202.
In some examples, the calculation scenario is defined by the user 212 using the browser 206. In some examples, the calculation scenario is represented as a graph, in which base calculation views on the data in the data center 204 are connected using join relationships. In some examples, the user 212 can compose a set of columns out of the base calculation views, which are tailored to the specific need. The calculation scenario 220 can be enhanced in the browser 206 by further specific analytical metadata (e.g., different types of filters, data wrangling of different columns). In some implementations, the QMS provides an analytical artifact based on the user query. An example analytical artifact can include a query-level calculation view in the database server 210. Accordingly, the query execution at runtime is based on the analytical artifact. In this manner, an abundant set of analytical requirements can be directly consumed on top of the transactional database tables of the data center 204 using the calculation engine 222.
In further detail, the data center 204 provides analytical metadata in a predefined format. In some examples, the predefined format includes a structured list of base artifacts (e.g., base calculation views, table functions, SQL views, database tables) that are listed in a metadata interface. In addition, columns for each data source, and join information between the different base data sources are provided.
An example calculation scenario format is provided as:
In some examples, a query name (queryName) defines an identifier of the calculation view. For example:
In some examples, data sources (dataSources) represent the smallest granularity in the query builder. Example data sources can include, without limitation, calculation views, SQL views, and tables. Example pseudo-code includes:
In some examples, a definition for a data source can be provided as:
In some examples, a metadata link can be provided as:
In some examples, each data source contains a set of fields. Example fields can include, without limitation, attributes, and measures. For example:
In some examples, the description of the field can be provided in multiple languages. For example, field labels can be displayed in the logon language of the use. For example:
In some implementations, the query model can be provided as:
In some implementations, output fields (outputFields) can be provided as:
In some implementations, joins can be provided as:
In some examples, mappings can be provided as:
In some examples, scope filters (scopeFilters) can be used, and can be provided as:
In some examples, join fields (joinFields) can be provided as:
In some examples, input parameter references (inputParameterReferences) can be provided as:
In some examples, one or more filters can be applied, and provided as:
In some examples, filter operators (filterOperators) can be provided as:
In some implementations, one or more logical condition nodes (logicalConditionNodes) can be provided, and are relevant if a value type (logicalConditionNodes.valueType) is equal to FUNCTION. It contains an object of type line of a function. The parameter will be ignored for all other value types. In some examples, logicalConditionNodes.targetField and logicalConditionNodes.targetDataSourceId are only relevant if the value type is equal to COLUMN. The parameters will be ignored for all other value types. In some examples, logicalConditionNodes.values is only relevant if the value type is VALUE_LIST, or PATTERN. The parameter will be ignored for all other value types. For example:
In some examples, input parameters (InputParameters) can be provided as:
In accordance with implementations of the present disclosure, the connection of the generated query level analytical artifact, and the associated query in the analytical platform are stored as query administration data (e.g., query administration data 226 of
Accordingly, implementations of the present disclosure provide live data connectivity of the analytical platform into remote transactional applications (e.g., SAP SuccessFactors, Ariba, Fieldglass). Implementations of the present disclosure provide a mechanism to create analytical artifacts in a generic way in the remote database system of the transactional applications, and a structured definition of analytical metadata is the basis for the creation of these tailored query scenarios. Appropriate analytical artifacts are generated out of this so that the end user analytical queries can run directly run on the remote transaction system without the need of data replication.
Implementations of the present disclosure further provide access control to data that is to be processed in the analytical platform. More particularly, one of the challenges of the remote integration approach described herein is to apply fine granular, user-specific access control for the analytical evaluations. Further, the access control should cover the full range of security as required by the underlying transactional system (e.g., the data center 204 of
In further detail, a raw calculation scenario is defined by the user in the browser application of the analytics platform (e.g., the browser 206 of
In some implementations, the enriched query calculation scenario is transferred into a database, analytical representation by the QMS. This can be, for example, a calculation view, or a SQL view. The analytical representation is passed to the calculation engine to retrieve the aggregated analytical data requested by the user. Through this approach of the present disclosure, is approach the runtime query execution is based on the enriched calculation scenario. In this manner, the full fine granular bandwidth of cell, row and field based permissions of the transactional data center is applied in the user-specific analytical request.
In further detail, the transactional data center provides a set of base calculation data sources (e.g., base calculation views). Each data source is associated with a set of columns for which data is to be fetched at runtime. Data source and set of columns along with the user executing the query provides a context to fetch the relevant permission metadata from the application server. One or more database table functions parametrized for the user are returned, and include the information on row and cell permissions. These table functions are used to construct the fine granular permissions by substituting each lowest level data source of the raw calculation scenario by a corresponding data source-specific permission calculation scenario graph.
In accordance with implementations of the present disclosure, fine granular permissions are applied by substituting each lowest level data source of the raw calculation scenario by a corresponding data source specific permission calculation scenario graph (e.g., the topmost projection in
In some examples, in a row permission base join, the base transactional data source is inner-joined with the row permission table function. The overall set of records can be reduced to a relatively large extent by this first row permission join. Accordingly, the row permission base join replaces the base transactional data source in the later cell permission groups, which optimizes the performance of the processing (see arrow from row permission base join to cell permission projection in
In some implementations, a cell permission base join is provided using a projection on the row permission base join for the set of columns. This forms one cell group representing the left join source (left, as viewed in
With regard to a permission compound join, the first compound join is formed as left-outer join between the row permission base join, and the first cell permission base join. In the example of
In some implementations, the last permission compound join can be linked to the root compound projection. In some examples, the root compound projection is used as a platform to apply the field permissions by means of an initialized calculated attribute for non-permissioned fields. The permission root projection can substitute for the transactional data source in the raw calculation scenario.
Accordingly, implementations of the present disclosure provide a mechanism to apply fine granular, user-specific access control requested by the underlying transactional system (e.g., the data center 204 of
Another challenge of integrating transactional application systems with analytics platforms is to apply complex application logic for user-specific filtering in an encapsulated way. A set of complex and specific filter methods reflecting the full application needs is provided by the transactional system. In accordance with implementations of the present disclosure, parametrization and application of the filter methods is done by the QMS (e.g., the QMS 218 of
To provide further context, scope filters are used to support users in the definition of complex (dynamic) filters that cannot be expressed with simple filter conditions. For example, if a user wants to see data for all employees in his team, how the selection of “all employees in the team of a user” can be performed needs to be defined. It may be possible for a user to specify a constant selection with the set of employees at the point in time the report is executed. However, in this example, the members of a team may change at any point in time, and it can require significant effort to maintain filters. In addition, it may not be possible for the common reporting user to define a set of joins and selections that are necessary to dynamically derive the list of user IDs for the selection of employees in his team.
In view of this, implementations of the present disclosure provide a convenient selection method that enables users to define complex selection with a parameterization of the selection execution behavior. In some implementations, scope filters include an application of scope filter, and a parameterization of scope filter. In some examples, application of a scope filter includes a strategy that is used to execute the selection. In some examples, parametrization of a scope filter includes a set of selection criteria options that are shown on a UI to a user. The selection criteria options are used to parameterize the execution behavior. In some examples, interface elements for selection can range from simple check boxes up to drop down boxes/value help dialogs that are used to select specific values. The user selection is used to set the input parameters of the function/artifact that is used to execute the selection of values.
Scope filter data sources can be parametrized in multiple ways. Scope filters can already be parametrized by the transactional system. This can be done on the basis of defined metadata structure (e.g., provided in the application server 208 of
Accordingly, implementations of the present disclosure provide a mechanism to apply application-specific filters as part of the live data connectivity between an analytics platform, and a transactional system. Scope filters are a major building block for real application scenarios, because they support complex, user-based and parametrized filters with an easy structured application of base filter methods.
Another challenge of integrating transactional application systems with analytics platforms is to provide scenario-specific filters, and data wrangling functions that are pre-configured for user-based parameters, and that can be further adopted by the end user. In accordance with implementations of the present disclosure, a raw calculation scenario is defined by the user in the browser application (e.g., the browser 206 of
In further detail, the QMS (e.g., the QMS 218 of
In some implementations, filters are defined based on a recursion algorithm. In some examples, the logical condition nodes, example pseudo-code detailed above, define basic filters at the data source level. It is possible to apply specific filters based on value comparison, column comparison, and user functions (e.g., comparing a date with the current date). In some implementations, a Boolean result of the logical condition nodes can be nested into a filter operator, example pseudo-code detailed above, which itself includes a combination of filter operators, and logical condition nodes. Accordingly, the overall filter, example pseudo-code detailed above, includes a combination of logical condition nodes, and filter operators. By this recursive approach, it is possible to cover a relatively wider range of static filter functions.
In some examples, analytical reports can require the definition of virtual fields including a combination of physical data source fields, functions, and the like. By way of non-limiting example, the data columns first name and last name of an employee are to be displayed as a concatenated column of both strings. For this example, the data structure below provides a generic formulation of such data wrangling algorithms:
In some examples, function can be provided as:
In some examples, constant can be provided as:
In some examples, column can be provided as:
Accordingly, implementations of the present disclosure enable column-specific filters, and data wrangling in the transactional system (e.g., the data center 204 of
Another challenge of integrating transactional application systems with analytics platforms is query definition content management across the involved distributed systems (e.g., the analytics platform, the transaction system). In view of this, implementations of the present disclosure provide a query repository in the analytics platform (e.g., the data center 202 of
In some implementations, the query repository 804 provides an inventory of all query-level calculation scenarios in the database system 210. In some examples, the query repository 804 provides a set of queries that are available to display to the user. In some examples, the query repository 804 stores information that can be used to successfully re-create the query builder UI of a query. In some examples, the query repository 804 is used to distribute query content in a complex system landscape. In some implementations, the metadata repository 805 persists the analytical metadata that is used as an input for the setup of the query scenarios.
In some implementations, the underlying analytical model of the transactional system (e.g., the data center 204), and its corresponding metadata undergo changes during production use, because data model changes are common. In addition, even in production systems underlying changes of the analytical models are common (e.g. yearly performance management cycle). Administrative tools are provided to manage lifecycle events in a robust and reliable way. In some examples, the query repository is the basis for the administrative tools.
In some implementations, queries can be validated against the metadata representations of the underlying analytical model provided by the respective transactional application (e.g., executed on the application server 208). The query validation can be performed by comparing metadata of the current query with metadata stored in the metadata repository. In some examples, the query-level calculation view is adapted in view of changes to the underlying analytical model of the transactional application. Depending on the severity, these changes can either be done automatically, or the query will be labelled as invalid, so that an administrator can fix any issues manually.
In some instances, implementation projects in the transactional system require content transport management. This can include, for example, the transportation of queries from a test system to a production system. Implementations of the present disclosure provide administration services to achieve this. As a basis for these administration services, implementations of the present disclosure enable loading of queries to the query repository. The query repository is used to manage the content lifecycle. In some examples, default queries can be provided (e.g., by the third-party provider of the analytical platform), and are imported into the query repository of the transactional system. In some examples, the default queries can be used as a template to tailor a query.
A query definition is received (902). For example, the QMS 218 executed within the data center 204 receives a query definition provided from the browser 206 of an analytics platform executed within the data center 202. A calculation scenario is provided (904). For example, the QMS 218 provides a calculation scenario based on the query definition. In some examples, the calculation scenario is provided as an object model. In some examples, the object model is a graph that includes a plurality of base calculation views that are connected by at least one join relationship.
The calculation scenario is executed to provide an analytical artifact (906). For example, the calculation engine 222 within the data center 204 executes the calculation scenario to provide the analytical artifact 224. In some examples, the analytical artifact includes a query-level calculation view on transactional data (e.g., at least a portion of the transactional data 205) stored in the data center 204. The analytical artifact is transmitted (908). For example, the data center 204 transmits the analytical artifact for use by the data center 202.
A query is executed based on the analytical artifact (910). For example, an analytics platform executed on the data center 202 executes a query corresponding to the query definition based on the analytical artifact. A query result is provided as output (912). For example, the data center 202 provides output of query execution to the browser 206 for display to the user 212.
Referring now to
The memory 1020 stores information within the system 1000. In one implementation, the memory 1020 is a computer-readable medium. In one implementation, the memory 1020 is a volatile memory unit. In another implementation, the memory 1020 is a non-volatile memory unit. The storage device 1030 is capable of providing mass storage for the system 1000. In one implementation, the storage device 1030 is a computer-readable medium. In various different implementations, the storage device 1030 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device. The input/output device 1040 provides input/output operations for the system 1000. In one implementation, the input/output device 1040 includes a keyboard and/or pointing device. In another implementation, the input/output device 1040 includes a display unit for displaying graphical user interfaces.
The features described can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The apparatus can be implemented in a computer program product tangibly embodied in an information carrier (e.g., in a machine-readable storage device, for execution by a programmable processor), and method steps can be performed by a programmable processor executing a program of instructions to perform functions of the described implementations by operating on input data and generating output. The described features can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. A computer program is a set of instructions that can be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
Suitable processors for the execution of a program of instructions include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors of any kind of computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. Elements of a computer can include a processor for executing instructions and one or more memories for storing instructions and data. Generally, a computer can also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
To provide for interaction with a user, the features can be implemented on a computer having a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.
The features can be implemented in a computer system that includes a back-end component, such as a data server, or that includes a middleware component, such as an application server or an Internet server, or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination of them. The components of the system can be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, for example, a LAN, a WAN, and the computers and networks forming the Internet.
The computer system can include clients and servers. A client and server are generally remote from each other and typically interact through a network, such as the described one. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
In addition, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. In addition, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other implementations are within the scope of the following claims.
A number of implementations of the present disclosure have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the present disclosure. Accordingly, other implementations are within the scope of the following claims,
This application claims the benefit of, and priority to U.S. Prov. App. No. 62/666,232, filed on May 3, 2018, the disclosure of which is expressly incorporated herein by reference in the entirety.
Number | Name | Date | Kind |
---|---|---|---|
5899986 | Ziauddin | May 1999 | A |
6513154 | Porterfield | Jan 2003 | B1 |
6604110 | Savage | Aug 2003 | B1 |
7225432 | Jentsch et al. | May 2007 | B2 |
7225433 | Jentsch et al. | May 2007 | B2 |
7315853 | Brunswig et al. | Jan 2008 | B2 |
7454660 | Kolb et al. | Nov 2008 | B1 |
7480920 | Brendle et al. | Jan 2009 | B2 |
7487512 | Brunswig et al. | Feb 2009 | B2 |
7533103 | Brendle et al. | May 2009 | B2 |
7536673 | Brendle et al. | May 2009 | B2 |
7673245 | Weddeling et al. | Mar 2010 | B2 |
7676816 | Brunswig et al. | Mar 2010 | B2 |
7685114 | Brunswig et al. | Mar 2010 | B2 |
7685268 | Brunswig et al. | Mar 2010 | B2 |
7685568 | Brendle et al. | Mar 2010 | B2 |
7698174 | Brunswig et al. | Apr 2010 | B2 |
7702650 | Brunswig et al. | Apr 2010 | B2 |
7725907 | Bloching et al. | May 2010 | B2 |
7730412 | Said et al. | Jun 2010 | B2 |
7765494 | Brunswig et al. | Jul 2010 | B2 |
7769821 | Brunswig et al. | Aug 2010 | B2 |
7770146 | Brunswig et al. | Aug 2010 | B2 |
7774463 | Bloching et al. | Aug 2010 | B2 |
7778965 | Bindewaid et al. | Aug 2010 | B2 |
7797370 | Brunswig et al. | Sep 2010 | B2 |
7801996 | Brunswig et al. | Sep 2010 | B2 |
7810102 | Brendle et al. | Oct 2010 | B2 |
7823120 | Kazakov et al. | Oct 2010 | B2 |
7996814 | Qureshi et al. | Aug 2011 | B1 |
8510712 | Killmar, III | Aug 2013 | B1 |
8719770 | Balani | May 2014 | B2 |
9037609 | Tibbitts | May 2015 | B1 |
9256762 | Roth | Feb 2016 | B1 |
9436721 | Dillenberger | Sep 2016 | B2 |
9489423 | Muthiah et al. | Nov 2016 | B1 |
9760601 | Burke | Sep 2017 | B2 |
10182073 | Redlich | Oct 2019 | B2 |
10606825 | Sosonkin | Mar 2020 | B1 |
10901994 | Said et al. | Jan 2021 | B2 |
11074277 | Gerhardt | Jul 2021 | B1 |
11222036 | Crosbie | Jan 2022 | B1 |
20040199818 | Boilen et al. | Oct 2004 | A1 |
20040225865 | Cox | Nov 2004 | A1 |
20050021557 | Brendle et al. | Jan 2005 | A1 |
20050022157 | Brendle et al. | Jan 2005 | A1 |
20050138113 | Brunswig et al. | Jun 2005 | A1 |
20060004699 | Lehikoinen et al. | Jan 2006 | A1 |
20060080426 | Brunswig et al. | Apr 2006 | A1 |
20060101403 | Sharma et al. | May 2006 | A1 |
20060242207 | Tsyganskiy et al. | Oct 2006 | A1 |
20070006041 | Brunswig et al. | Jan 2007 | A1 |
20070061431 | Brunswig et al. | Mar 2007 | A1 |
20070073702 | Brunswig et al. | Mar 2007 | A1 |
20070100943 | Brunswig et al. | May 2007 | A1 |
20070124740 | Brunswig et al. | May 2007 | A1 |
20070150449 | Suganuma | Jun 2007 | A1 |
20070157167 | Brendle et al. | Jul 2007 | A1 |
20070226751 | Brendle et al. | Sep 2007 | A1 |
20070233728 | Puteick et al. | Oct 2007 | A1 |
20070271107 | Fiedler et al. | Nov 2007 | A1 |
20070288885 | Brunel et al. | Dec 2007 | A1 |
20080005623 | Said et al. | Jan 2008 | A1 |
20080010074 | Brunswig et al. | Jan 2008 | A1 |
20080120129 | Seubert et al. | May 2008 | A1 |
20080120597 | Brunswig et al. | May 2008 | A1 |
20080120602 | Comstock et al. | May 2008 | A1 |
20080147455 | Brunswig et al. | Jun 2008 | A1 |
20080148166 | Brunswig et al. | Jun 2008 | A1 |
20080168135 | Redlich | Jul 2008 | A1 |
20080173702 | Meister | Jul 2008 | A1 |
20080244616 | Brunswig et al. | Oct 2008 | A1 |
20080276225 | Saterdag et al. | Nov 2008 | A1 |
20080301628 | Lochmann | Dec 2008 | A1 |
20090019103 | Tommaney | Jan 2009 | A1 |
20090019424 | Klein et al. | Jan 2009 | A1 |
20090144721 | Wagner et al. | Jun 2009 | A1 |
20090150473 | Brunswig et al. | Jun 2009 | A1 |
20090210445 | Draese | Aug 2009 | A1 |
20090313606 | Geppert et al. | Dec 2009 | A1 |
20100095276 | Ottavi et al. | Apr 2010 | A1 |
20100281017 | Hu | Nov 2010 | A1 |
20110066606 | Fox | Mar 2011 | A1 |
20120072884 | Balko et al. | Mar 2012 | A1 |
20120198369 | Sorin | Aug 2012 | A1 |
20130018890 | Rajan | Jan 2013 | A1 |
20130042219 | Said et al. | Feb 2013 | A1 |
20130166534 | Yoon | Jun 2013 | A1 |
20130339379 | Ferrari | Dec 2013 | A1 |
20130346380 | Dong | Dec 2013 | A1 |
20140172827 | Nos | Jun 2014 | A1 |
20140229464 | Milenova | Aug 2014 | A1 |
20140279839 | Balzar | Sep 2014 | A1 |
20150074037 | Sarferaz | Mar 2015 | A1 |
20150347542 | Sullivan | Dec 2015 | A1 |
20160055222 | Sarferaz | Feb 2016 | A1 |
20160337366 | Wright | Nov 2016 | A1 |
20160350375 | Das | Dec 2016 | A1 |
20170124152 | Nerurkar | May 2017 | A1 |
20170185655 | Jahankhani et al. | Jun 2017 | A1 |
20180218041 | Arthanarisamy | Aug 2018 | A1 |
20180246948 | Florendo | Aug 2018 | A1 |
20190340286 | Said et al. | Nov 2019 | A1 |
20190340289 | Said et al. | Nov 2019 | A1 |
20200034480 | Kazmaier | Jan 2020 | A1 |
20210357437 | Gerhardt | Nov 2021 | A1 |
Entry |
---|
Non-Final Office Action issued in U.S. Appl. No. 15/999,512 dated Apr. 17, 2020, 18 pages. |
U.S. Appl. No. 16/048,863, Kazmaier et al., filed Jul. 30, 2018. |
Non-Final Office Action issued in U.S. Appl. No. 15/999,389 dated Jun. 9, 2020, 19 pages. |
Final Office Action issued in U.S. Appl. No. 15/999,389 dated Dec. 4, 2020, 15 pages. |
Number | Date | Country | |
---|---|---|---|
20190340285 A1 | Nov 2019 | US |
Number | Date | Country | |
---|---|---|---|
62666232 | May 2018 | US |