// Creates QueueSpecification
Table<Node, String, Set<QueueSpecification>> queueSpecs =
new SimpleQueueSpecificationGenerator(Id.Application.from(program.getAccountId(), program.getApplicationId()))
.create(flowSpec);
Flowlet flowlet = new InstantiatorFactory(false).get(TypeToken.of(flowletClass)).create();
TypeToken<? extends Flowlet> flowletType = TypeToken.of(flowletClass);
// Set the context classloader to the cdap classloader. It is needed for the DatumWriterFactory be able
// to load cdap classes
Thread.currentThread().setContextClassLoader(FlowletProgramRunner.class.getClassLoader());
// Inject DataSet, OutputEmitter, Metric fields
Reflections.visit(flowlet, TypeToken.of(flowlet.getClass()),
new PropertyFieldSetter(flowletDef.getFlowletSpec().getProperties()),
new DataSetFieldSetter(flowletContext),
new MetricsFieldSetter(flowletContext.getMetrics()),
new OutputEmitterFieldSetter(outputEmitterFactory(flowletContext, flowletName,
dataFabricFacade, queueSpecs)));