# US 12,117,982 B1 · Computing apparatuses, methods, software and data structures for storing, indexing and retrieving data subject to the continuous temporal evolution of heterogeneous business processes

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

- Number: US 12,117,982 B1
- Document ID: US12117982B1
- Status: Granted
- Kind: B1
- Application number: 18/412,663
- Filed: 2024-01-15
- Granted: 2024-10-15
- Earliest claimed: 2023-05-11
- Assignees: Intelligent Lagoon Research Ltd
- Applicants: Intelligent Lagoon Research Ltd
- Inventors: James Ballin; Ian Hunt
- Web page: https://patentgrep.com/patent/US12117982B1

## CPC

- G06F 16/219: {Managing data history or versioning (querying versioned data G06F16/2474; querying temporal data G06F16/2477)}
- G06Q 10/00: Administration; Management
- G06F 16/1805: {Append-only file systems, e.g. using logs or journals to store data}
- G06F 16/21: Design, administration or maintenance of databases
- G06F 16/2365: {Ensuring data consistency and integrity}
- G06F 16/2477: {Temporal data queries}
- G06Q 10/0833: Tracking
- H04L 9/3297: {involving time stamps, e.g. generation of time stamps}
- H04L 9/50: {using hash chains, e.g. blockchains or hash trees}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Computing apparatus, computer implemented methods and computer readable media comprising instructions for: monitoring and storing data pertaining to a plurality of business processes; indexing for retrieval immutable, denormalised blocks storing data pertaining to the plurality of business processes; for managing process objects instantiated by a processor to monitor progress of the plurality of business processes; and for interrogating immutable, denormalised blocks storing data pertaining to a plurality of business processes.

## Claims

### Claim 1

Computing apparatus for monitoring and storing data pertaining to business processes, comprising:
one or more processors; and
memory storing:
a plurality of stencils, each stencil being for one of a plurality of business processes ρ=(ρ1, ρ2, . . . ), each stencil being a homogeneously structured program-code template by which a processor may instantiate a process object to monitor progress of a process ρ, the process object to operate as a finite state machine able to advance through a sequence of a predefined number of at least two discretized states S=(S1, S2, . . . , Sn), the states universal to each stencil for all modelled processes, the stencil defining:
one or more attributes for the modelled process ρi, each attribute having a specified data type, to be instantiated as key-value pairs; and
for the sequence of states S=(S1, S2, . . . , Sn), a mapping specifying, for each of the states in the sequence, at least:
a signal event taken to cause a transition to that state, the signal events including information updating knowledge concerning the process ρi defined by that stencil; and
an instruction for determining an expected timing for the transition to that state;
wherein the states S=(S1, S2, . . . , Sn) in sequence represent indicators of increasing certainty about the progress of the processes and their attribute values from initialisation to completion;
the memory further storing instructions which when executed cause one or more of the processors to implement a process object manager to:
monitor events received as messages in a stream or queue, wherein at least some of the events include or infer information updating knowledge concerning one or more business processes ρ=(ρ1, ρ2, . . . ); and
in response to receipt of any event matching a signal event in a mapping of a stencil for a given business process ρi for transitioning to a state Sj of that process, instruct a process object instantiated for process ρi based on the stencil for that process to transition to the state Sj, thereby causing the process object to generate and store in an immutable, denormalised block a complete view of the state of the process at the time of state transition, the generated block including:
a timestamp representing the information time for the transition to state Sj;
the current attribute values for the process based on information contained in the event and/or the stencil;
if a block has previously been generated corresponding to a transition to an earlier effective state Se=(S1, . . . , Sj−1) of the process ρi, a reference to the most recently generated and stored block;
for any and all previous effect states Se=(S1, . . . , Sj−1) of the process ρi:
a timestamp of the time the process transitioned to the previous effect state; and
attribute values for the process as stored in the block for that previous effect state;
and, for any and all subsequent effective states Se=(Sj+1, . . . , Sn) of the process ρi:
a timestamp of the expected time for the transition to that state; and
the expected attribute values for the process based on the current attribute values;
the receipt of event signals for the process ρi thereby generating an append-only contiguous chain of immutable blocks each providing a complete bitemporal view of the process ρi in its evolution over information time through the sequence of states S=(S1, S2, . . . , Sn), each block showing, at that information time, the realized times at which transitions of the process to earlier states occurred, the values of the attributes at those times, the time the current state took effect and the current values of the attributes, and the expected times at which transitions of the process to later states are expected take effect.

### Claim 2 (depends on 1)

The computing apparatus of claim 1, wherein one or more of the attributes defined in the stencils indicate an intended effect the process represented by the stencil has on a resource at completion of the process.

### Claim 3 (depends on 2)

The computing apparatus of claim 2, wherein the intended effect the process has on a resource indicated by the attributes comprises one or more of:
an availability of a resource;
a physical location of a resource;
a virtual location of a resource;
a count of a resource;
a status of a resource;
a condition of a resource.

### Claim 4 (depends on 1)

The computing apparatus of claim 1, wherein one or more of the attributes defined in the stencils takes a value from or based on a value contained in an event received on the event stream or queue.

### Claim 5 (depends on 1)

The computing apparatus of claim 1, wherein to monitor events received as messages in an event stream, the process object manager is configured to monitor a stream of events on an event channel in an event driven architecture.

### Claim 6 (depends on 1)

The computing apparatus of claim 1, wherein the number of states S=(S1, S2, . . . , Sn) in the sequence is at least three, and optionally five states.

### Claim 7 (depends on 1)

The computing apparatus of claim 1, wherein when an event is received matching a signal in a mapping of a stencil for a given business process ρi for transitioning to a state Sj of that process, where the transition to one or more previous states in the sequence has not previously occurred, the instructions further to instruct the finite state machine instantiated for process ρi to transition to the state Sj and to generate and store in the block record for the state transition to Sj, for any skipped previous effect states of the process ρi:
a timestamp of the time of the current state transition to the state Sj at the time the process transitioned to the skipped effect state; and
attribute values for the process as stored in the block for the transition to the effect state Sj.

### Claim 8 (depends on 1)

The computing apparatus of claim 1, the process object manager further being to instantiate a process object ρi based on the stencil for that process in response to receipt of the first signal event for causing a state transition to any state for the process.

### Claim 9 (depends on 1)

The computing apparatus of claim 1, the process object manager further being to:
in response to receipt of any event for the business process ρi not corresponding to a state transition in the stencil for that process, instruct the process object ρi to refine the stored information about the process in the current state Sj or a prior state, causing the generation and storage in an immutable, denormalised block record a refined complete view of the state of the process at the time of receipt of the event, the generated block including:
a timestamp of the time at which the block was created representing the information time for the refinement;
updated current attribute values for the process based on the received event;
a reference to the most recently generated and stored block;
for any and all previous effect states Se=(S1, . . . , Sj−1) of the process ρi:
a timestamp of the time the process transitioned to the previous effect state; and
attribute values for the process as stored in the block for that previous effect state;
and, for any and all subsequent effective states Se=(Sj+1, . . . , Sn) of the process ρi:
a timestamp of the expected time for the transition to that state; and
the expected attribute values for the process based on the updated current attribute values.

### Claim 10 (depends on 1)

The computing apparatus of claim 1, the process object manager being further to: when the current information time passes beyond the expected time stored in the current block process ρi for the transition to a subsequent effective state Sj+1 for the process ρi, either:
cause the process object ρi instantiated for the process ρi to automatically transition to the subsequent effective state Sj+1 for the process and to generate and store in a new block a complete view of the state of the process at the time of the deemed transition to state Sj+1, the block being optionally marked as compromised until a further event is received confirming or refining the deemed state transition; or
cause the process object ρi instantiated for the process ρi to generate and store in a new block a complete view of the state of the process at the time of the expected deemed transition to state Sj+1, where the timestamps of the expected times for the transition to the subsequent effective states Se=(Sj+1, . . . , Sn) are updated to reflect the absence of the expected signal event to causing transition to the next state Sj+1, and the block being optionally marked as compromised until a further signal event is received corresponding to the transition to a subsequent effective state Se=(Sj+1, . . . , Sn).

### Claim 11 (depends on 1)

The computing apparatus of claim 1, wherein the generated block further includes one or more of:
a unique identifier for the process ρi;
an index value for the block that is incremented for each block in the chain;
wherein the reference to the most recently generated and stored block is the index value of the previous block in the chain.

### Claim 12 (depends on 1)

The computing apparatus of claim 1, the memory further storing, in relation to the stencil for each process, tags for one or more hyperindices instantiated by a hyperindex manager to be notified by the process object on the generation and storage of a new block for the process, the process object manager being further to cause the process objects, on the generation and storage of a new block, to send a hyperindex notification to the hyperindices tagged in the stencil for the process ρi, the hyperindex notification including: a timestamp of the block creation in information time, an identifier of the process ρi and a reference to the generated and stored block, the hyperindices thereby selectively indexing the relevant subset of all blocks and/or processes current for that hyperindex at all information times, the hyperindex notification optionally further including an indication of the current information state for the process.

### Claim 13 (depends on 12)

The computing apparatus of claim 12, the process object manager being further to:
when an instruction to close a process object is received, optionally from a rollup manager instantiated to manage and close processes, in response to the rollup manager determining that the process monitored by process object has transitioned to and settled in the final state Sn of that process:
cause to send to the hyperindices instantiated by a hyperindex manager tagged in the stencil for the process ρi, the hyperindices storing the reference to the final block for the process, an instruction to remove the closed process, the hyperindices thereafter removing the reference to the blocks for the closed process ρi and/or the reference to the closed process ρi from the hyperindex for the notified information time onwards; and
close the process object.

### Claim 14 (depends on 1)

The computing apparatus of claim 1, the process object manager further being configured to store in the blocks additional information relating to the process as a payload data.

### Claim 15 (depends on 1)

The computing apparatus of claim 1, the process object manager further being configured to store in each block as the reference to the previous block a cryptographic hash of the previous block, the blocks thereby forming an immutable blockchain for each process.

### Claim 16 (depends on 15)

The computing apparatus of claim 15, the process object manager causing created blocks to be transmitted to a network of peer computing apparatus each to validate and store copies of the created blocks, the network of peer nodes immutably storing the blockchain in a distributed ledger.

### Claim 17

A computer implemented method for monitoring and storing data pertaining to business processes, the computer having access to a plurality of stencils, each stencil being for one of a plurality of business processes ρ=(ρ1, ρ2, . . . ), each stencil being a homogeneously structured program-code template by which a processor may instantiate a process object to monitor progress of a process ρ, the process object to operate as a finite state machine able to advance through a sequence of a predefined number of at least two discretized states S=(S1, S2, . . . , Sn), the states universal to each stencil for all modelled processes, the stencil defining:
one or more attributes for the modelled process ρi, each attribute having a specified data type, to be instantiated as key-value pairs; and
for the sequence of states S=(S1, S2, . . . , Sn), a mapping specifying, for each of the states in the sequence, at least:
a signal event taken to cause a transition to that state, the signal events including information updating knowledge concerning the process ρi defined by that stencil; and
an instruction for determining an expected timing for the transition to that state;
wherein the states S=(S1, S2, . . . , Sn) in sequence represent indicators of increasing certainty about the progress of the processes and their attribute values from initialisation to completion;
the method comprising:
monitoring events received as messages in a stream or queue, wherein at least some of the events include or infer information updating knowledge concerning one or more business processes ρ=(ρ1, ρ2, . . . ); and
in response to receipt of any event matching a signal event in a mapping of a stencil for a given business process ρi for transitioning to a state Sj of that process, instructing a process object instantiated for process ρi based on the stencil for that process to transition to the state Sj, thereby causing the process object to generate and store in an immutable, denormalised block a complete view of the state of the process at the time of state transition, the generated block including:
a timestamp representing the information time for the transition to state Sj;
the current attribute values for the process based on information contained in the event and/or the stencil;
if a block has previously been generated corresponding to a transition to an earlier effective state Se=(S1, . . . , Sj−1) of the process ρi, a reference to the most recently generated and stored block;
for any and all previous effect states Se=(S1, . . . , Sj−1) of the process ρi:
a timestamp of the time the process transitioned to the previous effect state; and
attribute values for the process as stored in the block for that previous effect state;
and, for any and all subsequent effective states Se=(Sj+1, . . . , Sn) of the process ρi:
a timestamp of the expected time for the transition to that state; and
the expected attribute values for the process based on the current attribute values;
the receipt of event signals for the process ρi thereby generating an append-only contiguous chain of immutable blocks each providing a complete bitemporal view of the process ρi in its evolution over information time through the sequence of states S=(S1, S2, . . . , Sn), each block showing, at that information time, the realized times at which transitions of the process to earlier states occurred, the values of the attributes at those times, the time the current state took effect and the current values of the attributes, and the expected times at which transitions of the process to later states are expected take effect.

### Claim 18 (depends on 17)

Computer readable medium comprising instructions which when executed cause computing apparatus to carry out the method as claimed in claim 17.

### Claim 19

A computer readable medium storing an append-only contiguous chain of immutable blocks, generated by a computer implemented method for monitoring and storing data pertaining to business processes, the computer having access to a plurality of stencils, each stencil being for one of a plurality of business processes ρ=(ρ1, ρ2, . . . ), each stencil being a homogeneously structured program-code template by which a processor may instantiate a process object to monitor progress of a process ρ, the process object to operate as a finite state machine able to advance through a sequence of a predefined number of at least two discretized states S=(S1, S2, . . . , Sn), the states universal to each stencil for all modelled processes, the stencil defining:
one or more attributes for the modelled process ρi, each attribute having a specified data type, to be instantiated as key-value pairs; and
for the sequence of states S=(S1, S2, . . . , Sn), a mapping specifying, for each of the states in the sequence, at least:
a signal event taken to cause a transition to that state, the signal events including information updating knowledge concerning the process ρi defined by that stencil; and
an instruction for determining an expected timing for the transition to that state;
wherein the states S=(S1, S2, . . . , Sn) in sequence represent indicators of increasing certainty about the progress of the processes and their attribute values from initialisation to completion;
the method comprising:
monitoring events received as messages in a stream or queue, wherein at least some of the events include or infer information updating knowledge concerning one or more business processes ρ=(ρ1, ρ2, . . . ); and
in response to receipt of any event matching a signal event in a mapping of a stencil for a given business process ρi for transitioning to a state Sj of that process, instructing a process object instantiated for process ρi based on the stencil for that process to transition to the state Sj, thereby causing the process object to generate and store in an immutable, denormalised block a complete view of the state of the process at the time of state transition, the generated block including:
a timestamp representing the information time for the transition to state Sj;
the current attribute values for the process based on information contained in the event and/or the stencil;
if a block has previously been generated corresponding to a transition to an earlier effective state Se=(S1, . . . , Sj−1) of the process ρi, a reference to the most recently generated and stored block;
for any and all previous effect states Se=(S1, . . . , Sj−1) of the process ρi:
a timestamp of the time the process transitioned to the previous effect state; and
attribute values for the process as stored in the block for that previous effect state;
and, for any and all subsequent effective states Se=(Sj+1, . . . , Sn) of the process ρi:
a timestamp of the expected time for the transition to that state; and
the expected attribute values for the process based on the current attribute values;
the receipt of event signals for the process ρi thereby generating an append-only contiguous chain of immutable blocks each providing a complete bitemporal view of the process ρi in its evolution over information time through the sequence of states S=(S1, S2, . . . , Sn), each block showing, at that information time, the realized times at which transitions of the process to earlier states occurred, the values of the attributes at those times, the time the current state took effect and the current values of the attributes, and the expected times at which transitions of the process to later states are expected take effect.

### Claim 20 (depends on 19)

Computer readable medium storing a plurality of append-only contiguous chains of immutable blocks as claimed in claim 19, the chains of immutable blocks each representing the evolution of one of a plurality of different business processes ρ=(ρ1, ρ2, . . . ) over information time through a sequence of states S=(S1, S2, . . . , Sn) universal to each of the different processes.
