code: private void buildSubJobBatchWorkUnits() {
  
          List<Flow> flows = this.split.getFlows();
  
          splitFlowWorkUnits = new ArrayList<BatchSplitFlowWorkUnit>();
  
          for (Flow flow : flows) {
              // 1. First, we build the subjob JSLJob model for flows in split
              JSLJob splitFlowJSLJob = ParallelStepBuilder.buildFlowInSplitSubJob(runtimeWorkUnitExecution.getTopLevelInstanceId(), runtimeWorkUnitExecution.getWorkUnitJobContext(),
                                                                                  this.split, flow);
              subJobs.add(splitFlowJSLJob);
  
              // 2. Next, we build a (persisted) execution and a work unit (thread) around it.
              SplitFlowConfig splitFlowConfig = new SplitFlowConfig(runtimeWorkUnitExecution.getTopLevelNameInstanceExecutionInfo(), split.getId(), flow.getId(), runtimeWorkUnitExecution.getCorrelationId());
              BatchSplitFlowWorkUnit workUnit = getBatchKernelService().createSplitFlowWorkUnit(splitFlowConfig, splitFlowJSLJob, completedWorkQueue);
              splitFlowWorkUnits.add(workUnit);
          }
      }
docs: about reobtaining.