question: private void createDataLinks ( CWLWorkflow workflow ) throws CWLException { for ( CWLOutputPort port : workflow . getOutputs ( ) ) { port . setId ( Draft2ToCWLConverter . convertPortID ( port . getId ( ) ) ) ; List < String > sources = transformSource ( port . getSource ( ) ) ; for ( int position = 0 ; position < sources . size ( ) ; position ++ ) { String destination = port . getId ( ) ; LinkMerge linkMerge = port . getLinkMerge ( ) != null ? LinkMerge . valueOf ( port . getLinkMerge ( ) ) : LinkMerge . merge_nested ; String source = sources . get ( position ) ; source = Draft2ToCWLConverter . convertSource ( source ) ; source = CWLSchemaHelper . normalizeId ( source ) ; CWLDataLink dataLink = new CWLDataLink ( source , destination , linkMerge , position + 1 ) ; workflow . addDataLink ( dataLink ) ; } } for ( CWLStep step : workflow . getSteps ( ) ) { step . setId ( Draft2ToCWLConverter . convertStepID ( step . getId ( ) ) ) ; List < CWLDataLink > dataLinks = new ArrayList < > ( ) ; for ( Map < String , Object > input : step . getInputs ( ) ) { List < String > sources = transformSource ( CWLBindingHelper . getSource ( input ) ) ; for ( int position = 0 ; position < sources . size ( ) ; position ++ ) { String destination = CWLBindingHelper . getId ( input ) ; destination = Draft2ToCWLConverter . convertDestinationId ( destination ) ; destination = step . getId ( ) + SLASH_SEPARATOR + destination ; LinkMerge linkMerge = CWLBindingHelper . getLinkMerge ( input ) != null ? LinkMerge . valueOf ( CWLBindingHelper . getLinkMerge ( input ) ) : LinkMerge . merge_nested ; String source = sources . get ( position ) ; source = Draft2ToCWLConverter . convertSource ( source ) ; source = CWLSchemaHelper . normalizeId ( source ) ; CWLDataLink dataLink = new CWLDataLink ( source , destination , linkMerge , position + 1 ) ; dataLinks . add ( dataLink ) ; } } workflow . addDataLinks ( dataLinks ) ; } }
target:  Created data links from source properties