public void storeWorkflowData(String stepId,String key,Object data){
  String workflowUri=getMainWorkflowUri(stepId);
  try {
    if (workflowUri == null) {
      return;
    }
    String dataPath=String.format(_zkStepDataPath,workflowUri) + String.format(_zkWorkflowData,key);
    _dataManager.putData(dataPath,data);
  }
 catch (  Exception ex) {
    String exMsg="Exception adding global data to workflow from stepId: " + stepId + ": "+ ex.getMessage();
    _log.error(exMsg);
  }
}

public void storeWorkflowData ( String stepId , String key , Object data ) { String workflowUri = getMainWorkflowUri ( stepId ) ; try { if ( workflowUri == null ) { return ; } String dataPath = String . format ( _zkStepDataPath , workflowUri ) + String . format ( _zkWorkflowData , key ) ; _dataManager . putData ( dataPath , data ) ; } catch ( Exception ex ) { String exMsg = "Exception adding global data to workflow from stepId: " + stepId + ": " + ex . getMessage ( ) ; _log . error ( exMsg ) ; } }
saves data in the workflow to be used by other steps . this allows steps to store data for use by other steps . the data is stored under / workflow / stepdata / { workflowuri } / data / { key } where workflowuri is the uri of the main workflow regardless of whether the step belongs in the main workflow or one of its nested workflows . < p > additional enhancements of this function are to allow the caller to specify what to do if data already exists ( override or fail ) or if an exception should be ignored or propagated .
