How josehokec/acer4cer works
This repository implements ACER, an indexed complex-event-recognition engine, with baseline query methods and separate Flink CEP examples. The main documented workflow defines an event schema and index, stores events, parses a query pattern and constraints, filters candidates through ACER, reads matching events, and evaluates matches with the NFA engine. The README establishes the workflow; the excerpts show query parsing, ACER filtering, NFA components, and Flink examples, but do not expose every call site, so uncertain internal wiring is omitted.
Main entry points: ACER.java ACER index · StatementParser.java Statement parser · NFA.java NFA matcher · QueryPattern.java Query patterns
Components 21
Query Definition
- Statement parser
src/main/java/common/StatementParser.java - Query patterns
src/main/java/pattern/QueryPattern.java - Predicate constraints
src/main/java/condition/Constraint.java - Event schema
src/main/java/common/EventSchema.java
ACER Engine
- ACER index
src/main/java/acer/ACER.java - Synopsis filtering
src/main/java/acer/SynopsisTable.java - Index block layout
src/main/java/acer/IdxBlkMetaInfo.java - Index buffers
src/main/java/acer/BufferPool.java - B+ tree indexes
src/main/java/btree/BPlusTreeInterface.java - Index compression
src/main/java/compressor/CompressorAlgorithm.java
Event and Index Storage
- Event store
src/main/java/store/EventStore.java - Record identifiers
src/main/java/store/RID.java
Match Evaluation
- NFA matcher
src/main/java/automaton/NFA.java - Automaton states
src/main/java/automaton/State.java - Partial matches
src/main/java/automaton/PartialMatch.java
Alternatives and Flink
- Baseline indexes
src/main/java/baselines/Index.java - Flink CEP queries
src/main/java/systems/StockPatternQuery.java - Flink CEP engine
Other components
- Query user
- Event data
- Match results
Connections 23
- Query user → Statement parser: submits statement
- Event data → ACER index: indexes events
- Statement parser → Event schema: defines schema
- Statement parser → ACER index: creates index
- Statement parser → Query patterns: parses pattern
- Statement parser → Predicate constraints: parses predicates
- Query patterns → ACER index: query parameters
- Predicate constraints → ACER index: filter predicates
- ACER index → Synopsis filtering: checks summaries
- ACER index → Index block layout: locates blocks
- ACER index → Index buffers: uses buffers
- ACER index → B+ tree indexes: queries index
- ACER index → Index compression: compresses blocks
- ACER index → Event store: reads events
- ACER index → Record identifiers: returns event references
- ACER index → NFA matcher: evaluates candidates
- NFA matcher → Automaton states: traverses states
- NFA matcher → Partial matches: tracks matches
- NFA matcher → Match results: produces matches
- Statement parser → Baseline indexes: selects alternative
- Event data → Flink CEP queries: provides events
- Flink CEP queries → Flink CEP engine: submits CEP pattern
- Flink CEP engine → Match results: emits matches