DETAILED ACTION
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 .
Priority
Receipt is acknowledged of certified copies of papers required by 37 CFR 1.55.
This application claims the priority benefit to Chinese Patent Application No. 202310890194.6, filed 07/19/2023. The priority date is acknowledged by the Examiner.
Examiner’s Note
The Examiner cites particular columns, paragraphs, figures, and line numbers in the references as applied to the claims below for the convenience of the applicant. Although the specified citations are representative of the teachings in the art and are applied to the specific limitations within the individual claim, other passages and figures may also apply. It is respectfully requested that, in preparing responses, the Applicant fully consider the references in its entirety as potentially teaching all or part of the claimed invention, as well as the context of the passage as taught by the prior art or disclosed by the Examiner.
Claim Rejections - 35 USC § 103
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, 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-2, 11-12 are rejected under 35 U.S.C. 103 as being unpatentable over Armbrust et al. (US 20220309104 A1) hereafter Armbrust in view of Miyata et al. (US 5323387 A) hereafter Miyata.
Regarding claim 1, Armbrust teaches:
a memory; and a processor, electrically connected to the memory (Paragraph 15; “such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor”) and configured to execute a data flow (Paragraph 17; “A system for dataflow graph processing is disclosed. The system comprises a communication interface and a processor.”),
wherein the processor executes task nodes in the data flow and generates output data (Paragraphs 31 and 37; “The dataflow graph deployer is configured to connect the dataflow graph to one or more external sources indicated by one or more source nodes included in the dataflow graph. Subsequently, the dataflow graph deployer is configured to execute the dataflow graph”, where the nodes in the dataflow graph correspond to the applicant’s task nodes. Further, “The dataflow graph is comprised of a plurality of flows that read data from one or more inputs, transform the data using relational or functional operations, and write the results to destination. Inputs to a flow can either be a source or a table”);
wherein the processor determines whether a data state of the output data reaches a target data state (Paragraph 108; “the expectation node checks a condition on input data… [and] drops an input data in response to the input data not meeting a condition (e.g., shunt process to a fork node that directs processing to a next input data)”, where the expectation node, implemented by the processor, evaluates output data against a defined expectation, corresponding to determining whether output data has reached a target data state), so as to decide whether to acquire a next task node of the task nodes in the data flow (Paragraphs 107-108; “finds an ordering of the nodes… [and] reflects the data dependencies”, and “shunt process to a fork node that directs processing to a next input data”, where the DAG defines task nodes and execution order. The condition-based behavior of the expectation node determines whether processing proceeds to a subsequent node in the data flow or is stopped/redirected, corresponding to a decision as to whether to acquire the next task node);
wherein when the processor determines that the data state of the output data does not reach the target data state (Paragraph 108; “checks a condition on input data… [and] in response to an input data not meeting a condition…”, where the expectation node evaluates data against an expected condition and explicitly detects when the data fails to meet the target state), the processor acquires the next task node (Paragraphs 107-108; “ordering of the nodes” and “node subsequent to the insertion”, where the DAG defines a sequence of task nodes, and upon completion one such node, processing advances to a subsequent node), and the processor decides whether to execute the next task node in a data branching mode or in a data shunting mode (Paragraph 108; “forking on a condition”, “branches processing”, “stops processing”, shows that the expectation node conditionally routes execution either by branching to another node or by stopping/shunting processing);
wherein when the processor determines that the data state of the output data reaches the target data state (Paragraph 140; “it is determined whether an expectation is met”, where meeting the expectation corresponds to the output data reaching a target data state), the processor ends the data flow (Paragraphs 140 and 145; “in the event there are no more nodes to traverse, process 700 proceeds to step 716” where “the test is ended”, in which reaching a state where no further nodes are able to be traversed represents termination of the data flow).
Armbrust does not teach that it is performed according to a data feature set and a branch identifier.
However, Miyata teaches:
according to a data feature set and a branch identifier (Col. 14, lines 41-44; “packet data is branched or shunted, based on the result of comparison between the identifier included in the packet data and the predetermined branch destination”, where the identifier included in the data corresponds to the data feature set, the predetermined branch destination corresponds to a branch identifier, and their comparison determines whether branching or shunting is performed).
Armbrust and Miyata are considered to be analogous to the claimed invention because they are in the same field of task management. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Armbrust to incorporate the teachings of Miyata and decide whether to execute the next task node in a particular mode according to a data feature set of branch identifier. A person of ordinary skill in the art would have recognized the utilization of feature-based conditions and branch identifiers as a known control technique for directing execution paths in data flow systems, and the implementation of such would have yielded the predictable result of deterministic task selection based on data characteristics and the identified branch.
Claim 11 recites similar limitations as those of claim 1. Claim 11 is rejected for similar reasons as those of claim 1.
Regarding claim 2, Armbrust in view of Miyata teach the system of claim 1. Armbrust teaches:
wherein the processor uses the output data as input data for the next task node (Paragraphs 67-68; “writes the results to dataset 222” [and] “Flow 216 transforms data associated with dataset 222”, where the results written by an earlier flow constitute output data which is consumed as input data by a dependent subsequent node in the data flow graph, corresponding to the next task node using the prior output as its input).
Claim 12 recites similar limitations as those of claim 2. Claim 12 is rejected for similar reasons as those of claim 2.
Claims 3-4 and 13-14 are rejected under 35 U.S.C. 103 as unpatentable over Armbrust in view of Miyata, further in view of Mericas et al. (US 6694427 B1) hereafter Mericas.
Regarding claim 3, Armbrust in view of Miyata teach the system of claim 1. Armbrust teaches:
wherein the processor acquires the data state of the output data (Paragraph 108; “the expectation node checks a condition on input data”, where checking the condition requires evaluating the state of the data produced by a prior node, corresponding to obtaining the data state of the output data) and matches the data state with the data flow (Paragraphs 107-108; “an ordering of the nodes... that reflects the data dependencies” and “connect input of expectation node to output of node prior to insertion”, where the data flow graph defines how data moves between nodes and the expectation node evaluates the data state in the context of its position within the DAG, thereby matching the evaluated data state to the corresponding location in the data flow);
wherein the processor queries the next task node in the data flow (Paragraphs 107-108; “finds an ordering of the nodes... that reflect the data dependencies” and “node subsequent to the insertion”, where the processor identifies the next node to process in the data flow graph, corresponding to querying the next task node in the execution order) according to the data state (Paragraph 108; “the expectation node checks a condition on the input data”, where the processor evaluates the state of output data from the prior node to determine the next action, corresponding to using the data state to query the next node).
Armbrust in view of Miyata does not teach the data feature set, and the branch identifier.
However, Mericas teaches:
the data feature set (Col. 7, line 66 – Col. 8, line 13; “information... such as the address or unique identifier of the branch instruction”, where attributes of the data are used by the processor to determine control flow, corresponding to the data feature set), and the branch identifier (Col. 7, line 66 – Col. 8, line 13; “address of the instruction to which the program is redirected and the number of instructions executed since the last redirect”, where the processor uses branch-related information stored in traces to determine which path or node to execute next, corresponding to the claimed branch identifier).
Armbrust, Miyata, and Mericas are considered to be analogous to the claimed invention because they are in the same field of task management. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Armbrust in view of Miyata to incorporate the teachings of Mericas and have queried the next task node according to the data state, the data feature set, and the branch identifier. A person of ordinary skill in the art would have recognized that state information, feature-based conditions, and identifiers are known techniques for labeling graphs, workflow engines, and for use in conditional execution systems, the implementation of such yielding the predictable result of selecting the appropriate next task based on current data condition and identified execution paths.
Claim 13 recites similar limitations as those of claim 3. Claim 13 is rejected for similar reasons as those of claim 3.
Regarding claim 4, Armbrust in view of Miyata, further in view of Mericas teaches the system of claim 3. Armbrust teaches:
wherein when the processor determines the number of the next task node is plural (Paragraph 107-108; “finds an ordering of the nodes... reflects the data dependencies” and “the expectation node inserts... forking on a condition”, where the processor identifies multiple subsequent nodes in the DAG when a conditional fork occurs, corresponding to determining that the number of next task nodes is plural), the processor decides whether to execute the next task nodes in the data branching mode or in the data shunting mode (Paragraph 108; “branches processing to output count... shunt process to a fork node”, where the expectation node conditionally routes processing either to multiple nodes via branching, or stops/shunts processing, corresponding to deciding whether to execute the next nodes in either data branching or data shunting mode).
Miyata teaches:
according to the branch identifier (Col. 14, lines 41-48; “packet data is branched or shunted, based on the result of comparison between the identifier included in the packet data and the predetermined branch destination”, where the branch identifier determines which path the processor takes among multiple possible nodes, implementing conditional branching or shunting).
Claim 14 recites similar limitations as those of claim 4. Claim 14 is rejected for similar reasons as those of claim 4.
Claims 5-6 and 15-16 are rejected under 35 U.S.C. 103 as being unpatentable over Armbrust in view of Miyata, further in view of Mericas, further in view of Grube et al. (US 20120054581 A1) hereafter Grube.
Regarding claim 5, Armbrust in view of Miyata, further in view of Mericas teaches the system of claim 4. Armbrust teaches:
wherein when the processor decides to execute the next task nodes in the data shunting mode (Paragraph 108; “shunt process to a fork node... in response to not meeting a condition”).
Miyata teaches:
according to the branch identifier (Col. 14, lines 41-48; “packet data is branched or shunted, based on the result of comparison between the identifier included in the packet data and the predetermined branch destination”, where the branch identifier determines which path the processor takes among multiple possible nodes, implementing conditional branching or shunting).
Armbrust in view of Miyata, further in view of Mericas does not teach the processor decides to execute one of the next task nodes according to a plurality of weight values corresponding to the next task nodes.
However, Grube teaches:
the processor decides to execute one of the next task nodes according to a plurality of weight values corresponding to the next task nodes (Paragraphs 142-143; “determines a weighted current memory status for the pluralities... [and] branches to step 242 when the weighted current memory status does not compare favorably” where the processor computes weight values for multiple candidates and selects a path or node based on the weighted evaluation, corresponding to executing one of the next task nodes based on the plurality of weight values).
Armbrust, Miyata, Mericas, and Grube are considered to be analogous to the claimed invention because they are in the same field of task management. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Armbrust in view of Miyata, further in view of Mericas to incorporate the teachings of Grube and execute one of the next task nodes according to a plurality of weight values. A person of ordinary skill in the art would have recognized the use of weight values for optimal task selection to be a known method in the art in which the implementation would yield the predictable outcome of optimal task processing based on weights.
Claim 16 recites similar limitations as those of claim 6. Claim 16 is rejected for similar reasons as those of claim 6.
Claims 7-8 and 17-18 are rejected under 35 U.S.C. 103 as being unpatentable over Armbrust in view of Miyata, further in view of Wei et al. (US 20100318343 A1) hereafter Wei.
Regarding claim 7, Armbrust in view of Miyata teach the system of claim 1. Armbrust in view of Miyata does not teach wherein the data state of the output data comprises a data state code, a data state name, and a data feature.
However, Wei teaches:
wherein the data state of the output data comprises a data state code (Paragraph 23; data access layer... informs [the] applications about data validation status through a state code”), a data state name (Paragraph 23; “it is compulsory for a supervisory information system application to afford its application name or identification”, where the data access layer associates the returned state code with an identified state such that the state is identifiable by a name or identifier understood by the application), and a data feature (Paragraph 23; “a table indicating which feature can be read and/or written by which applications”, where the data access layer tracks features associated with the data and uses those features when validating access).
Armbrust, Miyata, and Wei are considered to be analogous to the claimed invention because they are in the same field of task management. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Armbrust in view of Miyata to incorporate the teachings of Wei and have the data state of the output data comprise a data state code, data state name, and a data feature. A person of ordinary skill in the art would have been motivated to represent the data state of output data using a code, name, and feature, because returning a coded state value with an interpretable identifier is a known technique in data access interfaces for communicating status and conditions. Applying this known method would have yielded the predictable outcome of enabling consistent interpretation of data status and feature availability.
Claim 17 recites similar limitations as those of claim 7. Claim 17 is rejected for similar reasons as those of claim 7.
Regarding claim 8, Armbrust in view of Miyata teach the system of claim 1. Armbrust in view of Miyata does not teach wherein each of data features in the data feature set comprises a data feature code, feature name information, feature matching mode information, and feature matching rule information.
However, Wei teaches:
wherein each of data features in the data feature set comprises a data feature code (Paragraph 23; “state code returned by the data access interface”), feature name information (Paragraph 23; “it is compulsory for a supervisory information system application to afford its application name or identification”, where the data access layer uses named entities in its feature table), feature matching mode information (Paragraph 23; “checked according to some rules set by the user” and “check whether the data request is authorized”, where user-defined rules specify how a feature is evaluated or matched, corresponding to a feature matching mode), and feature matching rule information (Paragraph 23; “a table indicating which feature can be read and/or written by which applications”, where the table defines explicit rules governing how features are matched against requesting applications).
Armbrust, Miyata, and Wei are considered to be analogous to the claimed invention because they are in the same field of task management. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Armbrust in view of Miyata to incorporate the teachings of Wei and have the data features in the data feature set comprise a data feature code, feature name information, feature matching mode information, and feature matching rule information. A person of ordinary skill in the art would have recognized the representation of each feature with a code, descriptive name, and rules/modes for matching against input requests to be a known method in the art, and application of this method would have yielded the predictable result of enabling consistent deterministic evaluation of each feature during data flow processing to ensure downstream tasks may reliably interpret and act upon the feature set.
Claim 18 recites similar limitations as those of claim 8. Claim 18 is rejected for similar reasons as those of claim 8.
Claims 9-10 and 19-20 are rejected under 35 U.S.C. 103 as being unpatentable over Armbrust in view of Miyata, further in view of Wei, further in view of Shen et al. (US 20220038368 A1) hereafter Shen.
Regarding claim 9, Armbrust in view of Miyata, further in view of Wei teaches the system of claim 8. Armbrust teaches:
the processor executes the next task node in the data branching mode (Paragraphs 107-108; “forking on a condition [and] branches processing”, where the processor conditionally routes execution resulting in branching to a subsequent node in the data flow, corresponding to executing the next task node in a data branching mode).
Armbrust in view of Miyata, further in view of Wei does not teach the feature matching rule information is configured to get a value from a flow variable.
However, Shen teaches:
the feature matching rule information is configured to get a value from a flow variable (Paragraph 111; “the flow tracing request specifies parameters for the flow tracing operation... users can define the tracing requests using high-level expressions... translated into network addresses and other data”, where the matching rule is defined to retrieve values from flow-related variables supplied as parameters or expressions of the flow, corresponding to configuring the feature matching rule to get a value from a flow variable).
Armbrust, Miyata, Wei, and Shen are considered to be analogous to the claimed invention because they are in the same field of task management. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Armbrust in view of Miyata, further in view of Wei to incorporate the teachings of Shen and have the feature matching rule information configured to get a value from a flow variable. A person of ordinary skill in the art would have recognized the use of a flow variable to be a known method in workflow, dataflow, and network tracing systems, and the utilization of such would have yielded the predictable result of allowing the next task node to be dynamically determined based on the current state or attributes of the flow to ensure consistent behavior.
Claim 19 recites similar limitations as those of claim 9. Claim 19 is rejected for similar reasons as those of claim 9.
Regarding claim 10, Armbrust in view of Miyata, further in view of Wei teaches the system of claim 8. Armbrust in view of Miyata, further in view of Wei does not teach wherein the feature matching rule information is an expression or a request address of an application programming interface.
However, Shen teaches:
wherein the feature matching rule information is an expression or a request address of an application programming interface (Paragraph 111; “users can define the tracing requests using high-level expressions and Kubernetes concepts, which are translated into network addresses and other data required for the flow tracing operation”, which may be “the Kubernetes API”. The tracing rule is explicitly defined as a high-level expression or as translated network/request address information used by an interface such as the Kubernetes API, corresponding to feature matching rule information being based on an expression or an API request address).
Armbrust, Miyata, Wei, and Shen are considered to be analogous to the claimed invention because they are in the same field of task management. Therefore, it would have been obvious to someone of ordinary skill in the art before the effective filing date of the claimed invention to have modified Armbrust in view of Miyata, further in view of Wei to incorporate the teachings of Shen and implement the feature matching rule information as an expression or a request address of an API. A person of ordinary skill in the art would have recognized that defining rules as expressions or references to external interface addresses for retrieving runtime values is known in the art, and the application of this method would yield the predictable outcome of enabling dynamic, determinable evaluation of features, ensuring that subsequent task nodes are executed correctly based on the evaluated rule.
Claim 20 recites similar limitations as those of claim 10. Claim 20 is rejected for similar reasons as those of claim 10.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure. Raghavan et al. (US 20230198907 A1) discusses APIs including an update function (update (flow, val)), where the flow variable corresponds to a Berkely Packet Filter (BPF) matching rule.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to KENNETH P TRAN whose telephone number is (571)272-6926. The examiner can normally be reached M-TH 5:30 a.m. - 2 p.m. PT, F 5:30 a.m. - 9:30 a.m. PT, or at Kenneth.Tran@uspto.gov.
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 Blair can be reached at (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.
/KENNETH P TRAN/Examiner, Art Unit 2196
/APRIL Y BLAIR/Supervisory Patent Examiner, Art Unit 2196