code: protected String uploadToExternalPayloadStorage(ExternalPayloadStorage.PayloadType payloadType, byte[] payloadBytes, long payloadSize) {
          Preconditions.checkArgument(payloadType.equals(ExternalPayloadStorage.PayloadType.WORKFLOW_INPUT) || payloadType.equals(ExternalPayloadStorage.PayloadType.TASK_OUTPUT),
                  "Payload type must be workflow input or task output");
          ExternalStorageLocation externalStorageLocation = payloadStorage.getLocation(ExternalPayloadStorage.Operation.WRITE, payloadType, "");
          payloadStorage.upload(externalStorageLocation.getUri(), new ByteArrayInputStream(payloadBytes), payloadSize);
          return externalStorageLocation.getPath();
      }
docs: Uses the {@link PayloadStorage} for storing large payloads.
  Gets the uri for storing the payload from the server and then uploads to this location.
  
  @param payloadType  the {@link com.netflix.conductor.common.utils.ExternalPayloadStorage.PayloadType} to be uploaded
  @param payloadBytes the byte array containing the payload
  @param payloadSize  the size of the payload
  @return the path where the payload is stored in external storage