package at.procon.eventhub.processing.eventprocessing.module;

import at.procon.eventhub.processing.eventprocessing.plan.RuntimeProcessingModuleDescriptorDto;

/**
 * Source-neutral runtime processing module.
 *
 * <p>Modules are the executable building blocks used by processing plans. A module can be
 * implemented in EPL, Java, or a combination of both. The first predefined driver-working-time
 * plan still uses an adapter over the existing processing services, but its descriptor now
 * exposes the logical module sequence so the plan can be split into concrete modules incrementally.</p>
 */
public interface RuntimeProcessingModule {

    String moduleKey();

    RuntimeProcessingModuleDescriptorDto descriptor();

    RuntimeProcessingModuleResult execute(RuntimeProcessingModuleContext context);
}
