Source
for example 'Drupal 6 nodes in a SQL database'. Or 'products in a CSV file'. Implementation: a plugin in Plugin/migrate/source. Will have a base class and a SQL base class. Core likely will only have SQL-derived plugins.
Process
For example 'rename language to langcode' or 'rename field_alt_text to field_image:alt_text' which puts the alt text into the alt text subfield of image. This is a process plugin; by default we likely ship only the 'column map' plugin (default) and perhaps a 'skip' plugin so that we can indicate that certain columns are deliberately skipped.
Destination
For example, 'A Drupal 8 node as stored by entity API'.
Migration
This is a configuration entity containing the configuration for all of the above.For eg
source:
  id: drupal6_node
process:
  - 
    source: language
    destination: langcode
  - 
    source: field_alt_text
    destination: image:alt_text
  - 
    id: skip
    source: field_foobar
  -
    source: image
    file_plugin: fid
destination:
  id: drupal8_node

As you can see, every process item might contain arbitrary configuration data which will be passed to the destination plugin.

MigrateExecuteable
This actually runs the migration: reads a row from source, runs the process plugins on it then hands over to destination.

Note: more to come! This doesn't yet contain id mapping.

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

chx’s picture

Issue summary: View changes

Updated issue summary.

eliza411’s picture

Here's how I visualized the process based on our discussions at PNWDS:

Diagram

Did I understand correctly and does this revised glossary mean it would be labeled more like this? If so, I'd mostly want to know what we call the source and destination:

Diagram with new labels

eliza411’s picture

My refined understanding, based on clarification from chx in irc:

MigrateExecutable uses the Source, Destination, and Process defined in Migration.
MigrateExecutable reads a row at a time from Source, then passes it back and forth to Process plugins
Process ultimately returns the processed row to MigrationExecutable, which in turns writes it to the Destination.

I'm not sure the diagram is helpful, but it's closer to the process, hopefully:

Diagram

chx’s picture

Issue summary: View changes

Updated issue summary.

mikeryan’s picture