We need the ability to filter incoming data in extractors.
- "Static" filtering to produce the canonical source data set - think of an XML feed containing multiple content types, only one of which the current task is interested in.
- "Dynamic" or "runtime" filtering applied only on a particular migration execution - think setting a limit of 10 items on a particular run, executing migration for specific source IDs, omitting already-migrated items, etc.
These should have the same signatures - the static filtering would be applied on every invocation of the Extractor, while dynamic/runtime filtering would be applied after the static filtering on a specific invocation of the Extractor.
Per architecture#15, let's look at PortPHP's Filters to see if they fit into Soong's architecture. Also, look at using events (architecture#8).