private String buildLifecycleXml(List<Process> procs, String druid) {
   StringBuilder xml = new StringBuilder("<lifecycle objectId=\"" + druid + "\">\n");
   for (Process p : procs) {
     xml.append("  <milestone date=\"")
         .append(DateAdapter.STANDARD_DATE_FORMAT.format(p.getDatetime()))
         .append("\">")
         .append(p.getLifecycle())
         .append("</milestone>\n");
   }
   xml.append("</lifecycle>\n");
   return xml.toString();
 }
 @PUT
 @Path("{repo}/objects/{druid}/workflows/{workflow}/{procName}")
 @Consumes("application/xml")
 public Response addUpdateProcessStep(
     @PathParam("repo") String repo,
     @PathParam("druid") String druid,
     @PathParam("workflow") String workflow,
     @PathParam("procName") String procName,
     Process p) {
   if (!p.getName().equals(procName)) {
     return Response.status(400).entity("Process name does not match URI").build();
   }
   try {
     p.setDruid(druid);
     p.setDatastream(workflow);
     p.setRepository(repo);
     wfService.persist(p, repo);
   } catch (Exception e) {
     return ResourceUtilities.createErrorResponse(e, logger);
   }
   return Response.noContent().build();
 }