# US 12,182,626 B2 · Rule-based assignment of event-driven application

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,182,626 B2
- Document ID: US12182626B2
- Status: Granted
- Kind: B2
- Application number: 17/297,963
- Filed: 2019-11-12
- Published: 2022-03-24
- Granted: 2024-12-31
- Earliest claimed: 2018-11-29
- Assignees: Vantiq, Inc.
- Applicants: Vantiq, Inc.
- Inventors: Paul Butterworth; Evan Zhang; Steve Langley
- Web page: https://patentgrep.com/patent/US12182626B2

## CPC

- G06F 9/5066: {Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs (mappping at compile time, see G06F8/451)}
- G06F 8/10: Requirements analysis; Specification techniques
- G06F 8/433: {Dependency analysis; Data or control flow analysis}
- G06F 8/60: Software deployment
- G06F 8/75: Structural analysis for program understanding
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method to deploy a plurality of event-driven application components of an event-driven application in a distributed computing environment is described. The method includes automatically analyzing application source code of the event-driven application, using one or more processors, to identify relationships between the plurality of event-driven application components. Thereafter, a set of rules are applied to, based on the automatic analysis, generate assignment data recording assignments of event-driven application components to a plurality of computational nodes in the distributed computing environment. The set of rules is also applied to determine component requirements for each of the plurality of event-driven application components required to support execution at an assigned computational node in the distributed computing environment.

## Claims

### Claim 1

A method to deploy a plurality of event-driven application components of an event-driven application in a distributed Internet of Things (IoT) computing environment, the event-driven application configured to receive event data from a plurality of sensors within the distributed Internet of Things (IoT) computing environment, the method comprising:
automatically analyzing application source code of the event-driven application, using one or more processors, the automatic analyzing comprising:
identifying relationships between a plurality of event-driven application components,
determining component requirements of the plurality of event-driven application components to be supported at an assigned computational node,
identifying an abstract node set of a plurality of node sets for assignment to the plurality of event-driven application components, the identifying of the abstract node set comprising identifying a notational declaration of a remote reference by each event-driven application component in a subset of the plurality of event-driven application components, and
assigning the plurality of event-driven application components to the abstract node set based on the component requirements of the plurality of event-driven application components, on the identified relationships between the plurality of event-driven application components, and on assignment rules comprising general rules and rules specific to component types of the event-driven application components, the component types comprising one of at least an event component type, a rule component type, or a type component type;
assigning an actual node set of the distributed Internet of Things (IoT) computing environment to the abstract node set;
using one or more processors, automatically deploying the plurality of event-driven application components to the actual node set of the distributed Internet of Things (IoT) computing environment, the actual node set having been assigned to the abstract node set; and
causing execution of at least one of the deployed plurality of event-driven application components.

### Claim 2 (depends on 1)

The method of claim 1, wherein each remote reference represents an abstract set of computing resources that satisfy a logical computing resource constraint, and wherein the notational declaration of the remote reference comprises a declaration of a logical computing resource constraint of the remote reference.

### Claim 3 (depends on 1)

The method of claim 1, wherein:
the identifying of relationships between the plurality of event-driven application components comprises identifying a reference by a first event-driven application component to a second event-driven application component;
the identifying of component requirements for the plurality of event-driven application components comprises identifying the component requirements for the first event-driven application component; and
the identifying of the abstract node set comprises the identifying of a notational declaration of a first remote reference by the first event-driven application component.

### Claim 4 (depends on 3)

The method of claim 3, wherein:
the assigning of the plurality of event-driven application components to the abstract node set comprises:
assigning the first event-driven application component to the abstract node set based on the first event-driven application component requirements; and
assigning the second event-driven application component to the abstract node set based on a general assignment rule and on the reference by the first event-driven application component.

### Claim 5 (depends on 3)

The method of claim 3, wherein the second event-driven application component is a procedure component or a type component.

### Claim 6 (depends on 1)

The method of claim 1, wherein:
the identifying of relationships between the plurality of event-driven application components comprises identifying a production of an event component by a third event-driven application component; and
the assigning of the plurality of event-driven application components to the abstract node set comprises:
assigning the event component to the abstract node set; and
assigning the third event-driven application component to the abstract node set based on an assignment rule specific to the event component type and on the identified production by the third event-driven application component.

### Claim 7 (depends on 1)

The method of claim 1, wherein the assigning of the plurality of event-driven application components to the abstract node set further comprises assigning a common set of event-application components to each node of a respective abstract node set of the plurality of node sets.

### Claim 8 (depends on 1)

The method of claim 1, wherein the abstract node set to which a respective event-driven application component is assigned is identified based on a determination of minimal code that may be assigned to the respective event-driven application component.

### Claim 9 (depends on 1)

The method of claim 1, wherein the analyzing of the application source code includes determining a resource that operationally triggers execution of a specific event-driven application component.

### Claim 10 (depends on 1)

The method of claim 1, wherein the analyzing of the application source code includes determining a resource referenced by a specific event-driven application component.

### Claim 11 (depends on 1)

The method of claim 1, wherein the analyzing of the application source code includes identifying a dependency of an identified code segment of a specific event-driven application component.

### Claim 12

A computing apparatus, the computing apparatus comprising:
at least one processor; and
a memory storing instructions that, when executed by the at least one processor, configure the apparatus to:
automatically analyze application source code of an event-driven application in a distributed Internet of Things (IoT) computing environment, the event-driven application configured to receive event data from a plurality of sensors within the distributed Internet of Things (IoT) computing environment, the automatic analyzing comprising:
identifying relationships between a plurality of event-driven application components of the event-driven application, determining component requirements of the plurality of event-driven application components to be supported at an assigned computational node, identifying an abstract node set of a plurality of node sets for assignment to the plurality of event-driven application components, the identifying of the abstract node set comprising identifying a notational declaration of a remote reference by each event-driven application component in a subset of the plurality of event-driven application components, and
assigning the plurality of event-driven application components to the abstract node set based on the component requirements of the plurality of event-driven application components, on the identified relationships between the plurality of event-driven application components, and on assignment rules comprising general rules and rules specific to component types of the event-driven application components, the component types comprising one of at least an event component type, a rule component type, or a type component type;
assigning an actual node set of the distributed Internet of Things (IoT) computing environment to the abstract node set;
using one or more processors, automatically deploying the plurality of event-driven application components to the actual node set of the distributed Internet of Things (IoT) computing environment, the actual node set having been assigned to the abstract node set; and
causing execution of at least one of the deployed plurality of event-driven application components.

### Claim 13 (depends on 12)

The computing apparatus of claim 12, wherein each remote reference represents an abstract set of computing resources that satisfy a logical computing resource constraint, and wherein the notational declaration of the remote reference comprises a declaration of a logical computing resource constraint of the remote reference.

### Claim 14 (depends on 13)

The computing apparatus of claim 13, wherein:
the identifying of relationships between the plurality of event-driven application components comprises identifying a reference by a first event-driven application component to a second event-driven application component; and
the identifying of component requirements for the plurality of event-driven application components comprises identifying the component requirements for the first event-driven application component.

### Claim 15 (depends on 14)

The computing apparatus of claim 14, wherein:
the assigning of the plurality of event-driven application components to the abstract node set comprises:
assigning the first event-driven application component to the abstract node set based on the first event-driven application component requirements; and
assigning the second event-driven application component to the abstract node set based on a general assignment rule and on the reference by the first event-driven application component.

### Claim 16

A non-transitory computer storage medium, the computer storage medium including instructions that when executed by at least one computer, cause the at least one computer to perform operations comprising:
automatically analyzing application source code of an event-driven application in a distributed Internet of Things (IoT) computing environment, the event-driven application configured to receive event data from a plurality of sensors within the distributed Internet of Things (IoT) computing environment, the automatic analyzing comprising:
identifying relationships between a plurality of event-driven application components of the event-driven application,
determining component requirements of the plurality of event-driven application components to be supported at an assigned computational node,
identifying an abstract node set of a plurality of node sets for assignment to the plurality of event-driven application components, the identifying of the abstract node set comprising identifying a notational declaration of a remote reference by each event-driven application component in a subset of the plurality of event-driven application components, and
assigning the plurality of event-driven application components to the abstract node set based on the component requirements of the plurality of event-driven application components, on the identified relationships between the plurality of event-driven application components, and on assignment rules comprising general rules and rules specific to component types of the event-driven application components, the component types comprising one of at least an event component type, a rule component type, or a type component type;
assigning an actual node set of the distributed Internet of Things (IoT) computing environment to the abstract node set;
using one or more processors, automatically deploying the plurality of event-driven application components to the actual node set of the distributed Internet of Things (IoT) computing environment, the actual node set having been assigned to the abstract node set; and
causing execution of at least one of the deployed plurality of event-driven application components.

### Claim 17 (depends on 1)

The method of claim 1, wherein the plurality of node sets comprises a default node set, and each event-driven application component is assigned to the default node set prior to the automatic analyzing.

### Claim 18 (depends on 12)

The computing apparatus of claim 12, wherein the plurality of node sets comprises a default node set, and each event-driven application component is assigned to the default node set prior to the automatic analyzing.
