public JobDag(@NonNull final ISource<K, R> source,
@NonNull final JobSubDag sinkDag,
@NonNull final IMetadataManager<V> metadataManager,
@NonNull final IWorkUnitCalculator<T, R, K, V> workUnitCalculator,
@NotEmpty final String jobName,
@NotEmpty final String dataFeedName,
@NonNull final JobMetrics jobMetrics,
@NonNull final Reporters reporters) {
this.source = source;
this.sinkDag = sinkDag;
this.metadataManager = metadataManager;
this.workUnitCalculator = workUnitCalculator;
this.jobName = jobName;
this.dataFeedName = dataFeedName;
this.reporters = reporters;
this.postJobDagActions = new JobDagActions(this.reporters, dataFeedName);
this.jobMetrics = jobMetrics;
this.dataFeedMetrics = new DataFeedMetrics(this.jobName,
Collections.singletonMap(DataFeedMetrics.DATA_FEED_NAME, this.dataFeedName));
}