Workflow (template) and Pipeline (execution instance) mirrors DDD’s distinction between domain logic and runtime state.ExecutableStep tagged services) and middleware support (pipeline/step-level) allow for pluggable, reusable ETL logic without modifying core bundle code. This is ideal for teams needing custom extract/transform/load steps.PipelineHistory, StepHistory) and state management (Symfony Workflow) provide audit trails and debugging capabilities, critical for production ETL pipelines.Context DTO or middleware patterns).flow-php/etl (~0.25), which may introduce additional dependencies or version constraints. This could complicate dependency management in large projects.Workflow, Step, Pipeline, StepHistory, PipelineHistory) from scratch, adding initial setup time. While templated, this is non-trivial for teams without DDD experience.StepResolver) and middleware chain add runtime complexity. Misconfigurations (e.g., incorrect step codes or middleware priorities) could lead to subtle bugs.Assessment Phase:
ExecutableStep interface (e.g., a CsvExtractor becomes a class tagged with #[AsExecutableStep(code: 'csv_extract')]).Incremental Adoption:
Workflow, Step, Pipeline, StepHistory, PipelineHistory).ExecutableStep (e.g., convert a Python script to a PHP ApiExtractorStep).Dependency Management:
replace or platform constraints to manage the flow-php/etl dependency if version conflicts arise.pipeline_lifecycle if additional states (e.g., paused) are needed.ExecutableStep classes using Symfony’s Process component for interop.ExtractorStep/LoaderStep implementations.composer require boutdecode/etl-core-bundle.config/bundles.php and import the config.ExecutableStep classes for each ETL stage (extract/transform/load).How can I help you explore Laravel packages today?