There are two basic processing blocks in the engine: capture/route and analysis. Each is implemented within its own thread. The capture/route processing block reads a message off the queue, then transforms it into an event; whereas, the analysis processing block examines events based on the instructions in the process.