code: @Override
    public List<WorkUnit> getWorkunits(SourceState state) {
      List<WorkUnit> workUnits = Lists.newArrayList();
      Config config = ConfigUtils.propertiesToConfig(state.getProperties());
      Config sourceConfig = ConfigUtils.getConfigOrEmpty(config, DATASET_CLEANER_SOURCE_PREFIX);
      List<String> configurationNames = ConfigUtils.getStringList(config, DATASET_CLEANER_CONFIGURATIONS);
  
      // use a dummy configuration name if none set
      if (configurationNames.isEmpty()) {
        configurationNames = ImmutableList.of("DummyConfig");
      }
  
      for (String configurationName: configurationNames) {
        WorkUnit workUnit = WorkUnit.createEmpty();
  
        // specific configuration prefixed by the configuration name has precedence over the source specific configuration
        // and the source specific configuration has precedence over the general configuration
        Config wuConfig = ConfigUtils.getConfigOrEmpty(sourceConfig, configurationName).withFallback(sourceConfig)
            .withFallback(config);
  
        workUnit.setProps(ConfigUtils.configToProperties(wuConfig), new Properties());
        TaskUtils.setTaskFactoryClass(workUnit, DatasetCleanerTaskFactory.class);
        workUnits.add(workUnit);
      }
  
      return workUnits;
    }
docs: Create a work unit for each configuration defined or a single work unit if no configurations are defined
  @param state see {@link org.apache.gobblin.configuration.SourceState}
  @return list of workunits