Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claim Rejections - 35 USC § 112
The following is a quotation of 35 U.S.C. 112(b):
(B) CONCLUSION.—The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the inventor or a joint inventor regards as the invention.
The following is a quotation of pre-AIA 35 U.S.C. 112, second paragraph::
The specification shall conclude with one or more claims particularly pointing out and distinctly claiming the subject matter which the applicant regards as his invention.
Claims 1-20 are rejected under 35 U.S.C. 112(b) or pre-AIA 35 U.S.C. 112, second paragraph, as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor, or for pre-AIA the applicant regards as the invention.
Claims 1, 9, 10, 16 discloses “may be.” The word “may,” which is permissive and ambiguous. As a result, the scope of the limitation cannot be determined with reasonable certainty because it is unclear whether the claim requires: (i) performance of the recited action; (ii) merely the capability to perform the action (e.g., configured to perform the action); or (iii) an optional outcome applicable only in some embodiments.
Claims 2-8, 11-15, and 17-20 are also rejected based on their dependency from the foregoing indefinite claims.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102 of this title, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made
Claims 1-3, 5, 7, 10-14, and 16-20 are rejected under 35 U.S.C. 103 as being unpatentable over Balasubramanian et al. (US 2019/0342178, hereinafter Balasubramanian) in view of Ranganathan et al. (US 2014/0081896, hereinafter Ranganathan).
Regarding claim 1, Balasubramanian discloses
A method, comprising (fig. 1-4):
accessing, by a rules engine executing on a computing system comprising a computing device, a rules-based application that identifies a plurality of rules, each of the rules identifying a condition (paragraph [0022]: A rule specifies a condition associated with one or more of a population of devices that can provide data inputs to a rules engine) and an action that may be taken based on an evaluation of the condition (paragraph [0023]: An action specifies an action that can be taken in response to the condition or conditions specified by the rule being met … As another example, the action can include initiating a process or routing by another device that takes an action in response to the condition);
generating, by the rules engine from the rules-based application, a plurality of processing nodes (paragraph [0035]: The various nodes of a Rete graph created by the rule compiler 121 can be separated into nodes that can be addressable using a network address), some of the processing nodes corresponding to conditions identified in a rule (paragraph [0040]: the root node 202 can determine whether a type of the event data corresponds to a condition specified by nodes 204, 206, and 208) and others of the processing nodes corresponding to actions to be taken (paragraph [0042]: Node 220 represents a terminal node that triggers an action defined by the rule definition);
receiving, from the constraint solver, a solution that identifies a first set of processing nodes of the plurality of processing nodes to be implemented on a first computing device, and a second set of processing nodes of the plurality of processing nodes to be implemented on a second computing device (paragraph [0040]: In the depicted network topology 128, the root node can separate events obtained from the event queue 125 into various “type” nodes that are dependent upon a field within the event data; paragraph [0041]: The next level of nodes 210, 212, and 214 are “select” nodes because they reflect conditions that act on a single type of data; paragraph [0042]: Nodes 216 and 218 represent “join” nodes, which are join expressions on one or more data types … Node 220 represents a terminal node that triggers an action defined by the rule definition; paragraph [0043]: the nodes of the network topology 128 can communicate by passing events to each other. The nodes do not have to be in the same process or even the computing instance 151. This property results in the ability for the nodes to be distributed across a cluster of machines, virtual or physical, within the computing environment cluster 103; paragraph [0050]: The rule compiler 121 can create a new network topology 128 from an updated or changed rule definition provided by a user. The rule compiler 121 can merge any new or updated nodes with the network topology 128; Note: Cited paragraphs describe a network topology comprising various nodes (type, select, join, terminal/action nodes) that can be distributed across multiple computing instances).
Balasubramanian does not disclose inputting, into a constraint solver, processing node information that identifies the processing nodes and interrelationships between the processing nodes and a cost function that identifies a processing preference.
Ranganathan discloses inputting, into a constraint solver, processing node information that identifies the processing nodes and interrelationships between the processing nodes and a cost function that identifies a processing preference (Fig. 1-12, paragraph [0026]: The optimization process is performed by partitioning the operator graph into sub-graphs and choosing the partitioning that is cost-optimal from the point of view of the previously stated criteria; paragraph [0028]: optimally partitioning a dependency and control-flow graph derived from a set of rules into a distributed set of operators based on a cost function).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify Balasubramanian’s system by incorporating Ranganathan’s optimization process for partitioning an operator graph into sub-graphs. In particular, Ranganathan teaches partitioning a dependency and control-flow graph derived from a set of rules into a distributed set of operators based on a cost function. The motivation would have been to determine an optimal set of one or more cuts through the resulting graph such that a cost function is minimized (Ranganathan paragraph [0005]).
Regarding 10 referring to claim 1, Balasubramanian discloses A computing system comprising: one or more computing devices to: … (paragraph [0059]: a processor can represent multiple processors and/or multiple processor cores, and the one or more memory devices can represent multiple memories that operate in parallel processing circuits, respectively).
Regarding 16 referring to claim 1, Balasubramanian discloses A non-transitory computer-readable storage medium that includes executable instructions to cause a processor device to: … (paragraph [0064]: any logic or application described herein that includes software or code can be embodied in any non-transitory computer-readable medium for use by or in connection with an instruction execution system such as a processor in a computer system or other system).
Regarding claims 2, 11, and 17, Balasubramanian discloses
where receiving, from the constraint solver, the solution that identifies the first set of processing nodes of the plurality of processing nodes to be implemented on the first computing device, and the second set of processing nodes of the plurality of processing nodes to be implemented on the second computing device further comprises: … (paragraph [0040]: In the depicted network topology 128, the root node can separate events obtained from the event queue 125 into various “type” nodes that are dependent upon a field within the event data; paragraph [0041]: The next level of nodes 210, 212, and 214 are “select” nodes because they reflect conditions that act on a single type of data; paragraph [0042]: Nodes 216 and 218 represent “join” nodes, which are join expressions on one or more data types … Node 220 represents a terminal node that triggers an action defined by the rule definition; paragraph [0043]: the nodes of the network topology 128 can communicate by passing events to each other. The nodes do not have to be in the same process or even the computing instance 151. This property results in the ability for the nodes to be distributed across a cluster of machines, virtual or physical, within the computing environment cluster 103; paragraph [0050]: The rule compiler 121 can create a new network topology 128 from an updated or changed rule definition provided by a user. The rule compiler 121 can merge any new or updated nodes with the network topology 128; Note: Cited paragraphs describe a network topology comprising various nodes (type, select, join, terminal/action nodes) that can be distributed across multiple computing instances) (paragraph [0028]: The operating system and some applications 145 can access network content served up by the management system 106, or other servers, thereby rendering a user interface on a display; paragraphs [0040]-[0043] and [0050] describe a network topology comprising various nodes (type, select, join, terminal/action nodes) that can be distributed across multiple computing instances).
Balasubramanian does not disclose receiving, from the constraint solver, a plurality of solutions, each solution identifying a corresponding first set of processing nodes of the plurality of processing nodes to be implemented on the first computing device, and a corresponding second set of processing nodes of the plurality of processing nodes to be implemented on the second compute computing device, each solution being different. Ranganathan discloses receiving, from the constraint solver, a plurality of solutions, each solution identifying a corresponding first set of processing nodes of the plurality of processing nodes to be implemented on the first computing device, and a corresponding second set of processing nodes of the plurality of processing nodes to be implemented on the second compute computing device, each solution being different (paragraph [0074]-[0077]: The second method of solving the partitioning problem includes performing an exhaustive search for the space of all possible partitions. The algorithm is as follows: A) Compute the set of all possible cuts through the ruleset graph (in this method, cycles have not been removed yet). The number of cuts is generally in the order of
2
N
. B) Each graph cut divides the graph into two partitions. Two graph cuts are said to overlap if one cut creates a partition that intersects both partitions created by the second cut. For every set of cuts that do not overlap, one or more embodiments of the invention can include computing the total cost of the partitioning created by that set of cuts the using the cost function F as described above. C) Choose the set of cuts that produces the minimum cost partitioning).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify Balasubramanian’s system by incorporating Ranganathan’s generating and evaluating multiple candidate partitions, each identifying different assignments of node. The motivation would have been to determine an optimal set of one or more cuts through the resulting graph such that a cost function is minimized (Ranganathan paragraph [0005]).
Regarding claims 3, 12, and 18, Balasubramanian discloses
further comprising: presenting, by the computing system on a display device, user interface imagery that identifies the plurality of solutions (paragraph [0028]: The operating system and some applications 145 can access network content served up by the management system 106, or other servers, thereby rendering a user interface on a display; paragraphs [0040]-[0043] and [0050] describe a network topology comprising various nodes (type, select, join, terminal/action nodes) that can be distributed across multiple computing instances).
Balasubramanian does not disclose receiving, by the computing system, a selection of a first solution of the plurality of solutions; and causing the corresponding first set of processing nodes to be implemented on the first computing device and the second set of process nodes to be implemented on the second computing device. Ranganathan discloses receiving, by the computing system, a selection of a first solution of the plurality of solutions; and causing the corresponding first set of processing nodes to be implemented on the first computing device and the second set of process nodes to be implemented on the second computing device (paragraph [0074]-[0077]: The second method of solving the partitioning problem includes performing an exhaustive search for the space of all possible partitions. The algorithm is as follows: A) Compute the set of all possible cuts through the ruleset graph (in this method, cycles have not been removed yet). The number of cuts is generally in the order of
2
N
. B) Each graph cut divides the graph into two partitions. Two graph cuts are said to overlap if one cut creates a partition that intersects both partitions created by the second cut. For every set of cuts that do not overlap, one or more embodiments of the invention can include computing the total cost of the partitioning created by that set of cuts the using the cost function F as described above. C) Choose the set of cuts that produces the minimum cost partitioning).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify Balasubramanian’s system by incorporating Ranganathan’s generating and evaluating multiple candidate partitions, each identifying different assignments of node. The motivation would have been to determine an optimal set of one or more cuts through the resulting graph such that a cost function is minimized (Ranganathan paragraph [0005]).
Regarding claims 5, 13, and 19, Balasubramanian discloses
wherein the processing node information identifies paths of execution through the plurality of processing nodes for a plurality of previous transactions, and … (paragraph [0043]: as long as each node processes its upstream messages sequentially, all nodes can work in parallel on a stream of event data obtained from the event queue 125. Because every node can maintain a cache of successful matches to event data provided by its parent node or by the event queue 125, and the nodes can also store, in node working memory 171 multiple versions of successful matches allowing for time series queries, such as the last N reported values that match the conditions of the node).
Balasubramanian does not disclose wherein the processing node information identifies paths of execution through the plurality of processing nodes for a plurality of previous transactions and the cost function indicates a preference to maintain processing nodes that are visited in sequence on a same computing device. Ranganathan discloses wherein the processing node information identifies paths of execution through the plurality of processing nodes for a plurality of previous transactions and the cost function indicates a preference to maintain processing nodes that are visited in sequence on a same computing device (paragraph [0070]: It can also be assumed that the user specifies a function with three variables that can be used to compute the cost of a sub-graph (or partition) of a function of its computation, memory and communication costs: C=F(Ccomp, Cmem, Ccomm). For instance, if high throughput is desired, the user can assign a high component of the cost to computation and memory costs (thus maintaining each partition/operator small); paragraph [0071]: This set of equations indicate that, if a statement S is in partition j and a successor statement Q is also in partition j, then all statements on the path between S and Q are also in partition j; paragraph [0091]: removing unnecessary dependency links and/or merging identical statements that are not connected by a path in the grap; Note: The cost function C = F(Ccomp, Cmem, Ccomm) and partitioning methods that favor co-location of successor statements/operators to minimize communication cost).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify Balasubramanian’s distributed node deployment by incorporating Ranganathan’s cost-based partitioning techniques that utilize graph successor/path relationships and communication cost to decide placement. The motivation would have been to determine an optimal set of one or more cuts through the resulting graph such that a cost function is minimized (Ranganathan paragraph [0005]).
Regarding claims 6, 14, and 20, Balasubramanian discloses
wherein the processing node information identifies, for each of the processing nodes, a source of information for each of the processing nodes, and … (paragraph [0016]: Device data 125 can include data associated with a configuration of a client device 109 and/or IoT device 113. Device data 124 can include an identifier of the client device 109 or IoT device 113; paragraph [0024]: the network topology 128 corresponding to a particular rule definition can be represented by a directed acyclic graph or other data structure that can be generated by the rule compiler 121 and used to process events that occur within a population of devices that provide inputs to a root node of the network topology 128; paragraph [0036]: A rules engine that processes various rule definitions and events that flow from a population of devices can be implemented within the computing environment cluster 103; Note: These passages teach that nodes (and their inputs) have identifiable external information sources (e.g., particular IoT devices, gateways, or client devices) and that the node topology and runtime include the metadata needed to associate a node with an external data source).
Balasubramanian does not disclose the cost function indicates a preference to maintain processing nodes that have a same source of external information on a same computing device. Ranganathan discloses the cost function indicates a preference to maintain processing nodes that have a same source of external information on a same computing device (paragraph [0070]: It can also be assumed that the user specifies a function with three variables that can be used to compute the cost of a sub-graph (or partition) of a function of its computation, memory and communication costs: C=F(Ccomp, Cmem, Ccomm). For instance, if high throughput is desired, the user can assign a high component of the cost to computation and memory costs (thus maintaining each partition/operator small); paragraph [0071]: This set of equations indicate that, if a statement S is in partition j and a successor statement Q is also in partition j, then all statements on the path between S and Q are also in partition j; paragraph [0109]: The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider)).
In particular, Ranganathan explicitly permits code to be executed locally or remotely, or split across machines (paragraph [0109]), thereby providing the deployment flexibility necessary to make co-location decisions. A routine and predictable way to reduce communication and external I/O cost is to co-locate operators that share the same external data source on the same computing device to avoid redundant external fetches and cross-device traffic to configure the cost function to prefer such co-location
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify Balasubramanian’s distributed rules-engine deployment by applying Ranganathan’s cost-based partitioning and execution-placement flexibility to prefer co-locating nodes that share the same external data source. The motivation would have been to determine an optimal set of one or more cuts through the resulting graph such that a cost function is minimized (Ranganathan paragraph [0005]).
Regarding claim 7, Balasubramanian discloses
wherein the rules engine is Rete-based (paragraph [0025]: As events arrive from a population of devices, the events can be placed onto an event queue 125 established for a particular rules engine. The event data can be fed to a root node of the network topology 128 and processed according to a Rete algorithm, in one scenario).
Claims 8 and 15 are rejected under 35 U.S.C. 103 as being unpatentable over Balasubramanian et al. (US 2019/0342178, hereinafter Balasubramanian) in view of Ranganathan et al. (US 2014/0081896, hereinafter Ranganathan) as applied to claims 1 and 10, and further in view of Proctor et al. (US 2017/0200083, hereinafter Proctor).
Regarding claims 8 and 15, Balasubramanian in view of Ranganatha does not disclose wherein the plurality of processing nodes includes a first subset of alpha processing nodes and a second subset of beta processing nodes, each alpha processing node comprising a processing node that matches attributes of an inserted fact object against constant values, or matches attributes of the inserted fact object against other attributes of the inserted fact object, each beta processing node comprising a processing node that matches attributes of the inserted fact object against other previously inserted fact objects. Proctor discloses wherein the plurality of processing nodes includes a first subset of alpha processing nodes and a second subset of beta processing nodes (Fig. 2, paragraph [0052]: From an object type node (OTN_A 210 or OTN_B 212), a data object may be propagated to an alpha node (if there is a literal constraint) 215, or a from node 250 or beta node 230 if the object is of the proper object type), each alpha processing node comprising a processing node that matches attributes of an inserted fact object against constant values, or matches attributes of the inserted fact object against other attributes of the inserted fact object (paragraph [0027]: Data objects that are received by the rule engine 115 may be added to the working memory 110; paragraph [0030]: An alpha network is a left side of the network. Nodes in the alpha network may perform comparisons between objects to find matches. If an object is successfully matched against the conditions represented by one node in the alpha network, it is passed to a next node), each beta processing node comprising a processing node that matches attributes of the inserted fact object against other previously inserted fact objects (paragraph [0055]: The beta node 230 may then make join attempts between the objects in the right input memory and the tuples in the left input memory. If a join attempt is successful, the object is added to the tuple and then propagated to the left input of the next node until the tuple reaches a rule terminal node (RTN) 245. The tuples stored in the left input memories are partially matched). In particular, These disclosures correspond directly to the claimed alpha node (attribute/constant matching) and beta node (matching against previously inserted facts) functionality.
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify Balasubramanian in view of Ranganathan system by incorporating Proctor’s explicit alpha/beta node classification and matching functions into the operator graph. Incorporating Proctor’s explicit alpha/beta node definitions into Balasubramanian’s topology would have been a straightforward substitution of known equivalents, providing clear node type semantics that can be leveraged in Ranganathan’s cost-based partitioning to improve performance. The motivation would have been to provides a marked improvement in performance, and may reduce an amount of time to process an object and an amount of computing resources used in processing the object (Proctor paragraph [0070]).
Claim 4 is rejected under 35 U.S.C. 103 as being unpatentable over Balasubramanian et al. (US 2019/0342178, hereinafter Balasubramanian) in view of Ranganathan et al. (US 2014/0081896, hereinafter Ranganathan) as applied to claim 1, and further in view of Ghlala et al. “sing MCDM and FaaS in Automating the Eligibility of Business Rules in the Decision-Making Process,” March 2023, The International Arab Journal of Information Technology, Vol. 20, No. 2.
Regarding claim 4, Balasubramanian in view of Ranganatha does not disclose wherein the processing nodes are implemented as serverless functions.
Ghlala discloses wherein the processing nodes are implemented as serverless functions (page 226 left column: First, several works are interested in the fundamentals of serverless computing. Indeed, they focus on the presentation of the different solutions proposed by the principal providers like Amazon Lambda, International Business Machines (IBM) Cloud Functions, Microsoft Azure Functions, and Google Cloud Functions. This track proposes comparative studies between these solutions [9] and the presentation of competing open-source solutions [14]; page 232 left column: A track promoting this eventual functionality is the RETE algorithm that can be integrated into the decision-making task in order to ensure, following an inference, the required consistency of the adopted business rule).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify Balasubramanian’s system by incorporating Ghlala’s different serverless solutions proposed by Amazon Lambda, IBM Could Function, MS Azure Function, and Google Cloud Functions to perform decision-making task integrated with RETE algorithm. The motivation would have been to better manage their IT solutions to develop and deploy in the cloud (Ghlala page 224 right column).
Allowable Subject Matter
Claim 9 is objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant’s disclosure.
Molteni et al. (US 2023/0308351) discloses “RETE network consist of two parts an alpha network and a beta network. Alpha network consists of nodes known as alpha nodes. Each alpha node has one input that defines intra-elements. Beta network consists of beta nodes where each node takes two inputs to define inter-element conditions. In some instances, the alpha network may be optimized using hashing, alpha node sharing, indexing etc.” (paragraph [0012]).
Molteni et al. (US 2022/0156616) discloses “the rete rule engine 104 includes a pattern matcher 112 and an agenda 114. The pattern matcher 112 generates rete network 103 to evaluate the rules from the rule repository 108 against the data objects 110. Alpha node 102 can evaluate self-contained constraints. Facts propagating through the rete network 103 can be evaluated against the rules and constraints derived from the rules” (paragraph [0016]).
Any inquiry concerning this communication or earlier communications from the examiner should be directed to SISLEY N. KIM whose telephone number is (571)270-7832. The examiner can normally be reached M-F 11:30AM -7:30PM.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, April Y. Blair can be reached on (571)270-1014. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/SISLEY N KIM/Primary Examiner, Art Unit 2196 02/04/2026