# US 2008/0189352 A1 · Complex event processing system having multiple redundant event processing engines

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

- Number: US 2008/0189352 A1
- Document ID: US20080189352A1
- Status: Published application
- Kind: A1
- Application number: 12/026,254
- Filed: 2008-02-05
- Published: 2008-08-07
- Earliest claimed: 2007-02-06
- Assignees: Software AG
- Inventors: Robert Scott Mitchell; Mark K. Horsburgh; Richard M. Bentley
- Web page: https://patentgrep.com/patent/US20080189352A1

## CPC

- H04L 1/1809: Selective-repeat protocols
- G06F 9/542: {Event management; Broadcasting; Multicasting; Notifications}
- H04L 1/22: using redundant apparatus to increase reliability
- G06F 2209/544: Remote
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system and method for replicating a distributed computer system state among a plurality of deterministic event processing engines are disclosed. A sender module receives a plurality of input events or input event streams and generates a serialized message sequence describing an order in which input events are processed. The serialized message sequence is then transmitted to a plurality of deterministic event processing engines for processing. As the event processing engines are deterministic, each event processing engine produces the same ordered sequence responsive to the received serialized message sequence. The ordered sequences from each deterministic event processing engine are transmitted to a merger module which generates an output from the plurality of ordered sequences. The merger module removes one or more redundant ordered sequences and associates the resulting output with a client device.

## Claims

### Claim 1

A system for complex event processing comprising:
a sender module for receiving an input event and for generating a serialized message sequence from the input event;
a plurality of deterministic event processing engines for processing the serialized message sequence and generating a plurality of redundant ordered sequences; and
a merger module for receiving the plurality of redundant ordered sequences and for generating an output result for transmission.

### Claim 2 (depends on 1)

The system of claim 1, wherein the sender module stores a copy of the input event and an ordering of the input event.

### Claim 3 (depends on 1)

The system of claim 1, wherein the merger module stores a copy of one of the plurality of redundant ordered sequences and a current position in the one of the plurality of redundant ordered sequences.

### Claim 4 (depends on 3)

The system of claim 3, wherein the merger module deletes the copy of the one of the plurality of redundant ordered sequences responsive to receiving an acknowledgement.

### Claim 5 (depends on 2)

The system of claim 2, wherein the sender module deletes the copy of the input event responsive to receiving an acknowledgement from one of the plurality of deterministic event processing engines.

### Claim 6 (depends on 2)

The system of claim 2, wherein the sender module deletes the copy of the input event responsive to receiving an acknowledgement from all of the plurality of deterministic event processing engines.

### Claim 7

A method for complex event processing comprising:
receiving an input event;
generating a serialized message sequence including the received input event;
processing the serialized message sequence using a plurality of event processing engines to generate a plurality of redundant ordered sequences; and
generating an output result from one of the plurality of redundant ordered sequences.

### Claim 8 (depends on 7)

The method of claim 7, wherein generating the serialized message sequence comprises:
associating a first sequence number with the input event; and
associating a second sequence number with a second input event.

### Claim 9 (depends on 9)

The method of claim 9, wherein the second sequence number is greater than the first sequence number.

### Claim 10 (depends on 8)

The method of claim 8 comprising:
storing a copy of the input event in a persistent storage; and
storing the first sequence number associated with the input event in the persistent storage.

### Claim 11 (depends on 10)

The method of claim 10 comprising deleting the stored copy of the input event from the persistent storage and deleting the first sequence number associated with the input event from persistent storage.

### Claim 12 (depends on 7)

The method of claim 7, wherein generating the output result comprises removing one or more redundant ordered sequences from the plurality of redundant ordered sequences.

### Claim 13 (depends on 7)

The method of claim 7, wherein generating the output result comprises associating the output result with an output client device.

### Claim 14 (depends on 12)

The method of claim 12, wherein removing the one or more redundant ordered sequences comprises:
identifying a sequence number; and
discarding all but one ordered sequence from the plurality of redundant ordered sequences associated with the identified sequence number.

### Claim 15 (depends on 7)

The method of claim 7 comprising:
storing a copy of the output result; and
storing a sequence number associated with the output result.

### Claim 16 (depends on 15)

The method of claim 15 comprising deleting the stored copy of the output result and deleting the sequence number associated with the output result.

### Claim 17 (depends on 7)

The method of claim 7 comprising:
retrieving a state of one of the plurality of event processing engines; and
starting a new event processing engine with the received state.

### Claim 18 (depends on 17)

The method of claim 17 comprising:
determining a point in processing of the serialized message sequence to which event processing has progressed; and
sending input events after the point in the serialized message sequence to the new event processing engine.

### Claim 19

A computer program product for complex event processing, the computer program product comprising a computer-readable medium containing computer program code for performing the method comprising:
receiving an input event;
generating a serialized message sequence including the received input event;
processing the serialized message sequence using a plurality of event processing engines to generate a plurality of redundant ordered sequences; and
generating an output result from one of the plurality of redundant ordered sequences.

### Claim 20 (depends on 19)

The computer program product of claim 19, wherein generating the serialized message sequence comprises:
associating a first sequence number with the input event; and
associating a second sequence number with a second input event.

### Claim 21 (depends on 20)

The computer program product of claim 20, wherein the second sequence number is greater than the first sequence number.

### Claim 22 (depends on 19)

The computer program product of claim 19, wherein generating the output result comprises removing one or more redundant ordered sequences from the plurality of redundant ordered sequences.

### Claim 23 (depends on 19)

The computer program product of claim 19, wherein generating the output result comprises associating the output result with an output client device.

### Claim 24 (depends on 22)

The computer program product of claim 22, wherein removing the one or more redundant ordered sequences comprises:
identifying a sequence number; and
discarding all but one ordered sequence from the plurality of redundant ordered sequences associated with the identified sequence number.

### Claim 25 (depends on 19)

The computer program product of claim 19 comprising:
retrieving a state of one of the plurality of event processing engines; and
starting a new event processing engine with the received state.

### Claim 26 (depends on 25)

The computer program product of claim 25 comprising:
determining a point in processing of the serialized message sequence to which event processing has progressed; and
sending input events after the point in the serialized message sequence to the new event processing engine.
