publishChange(ptask);
  protected void killWorkflow(Workflow wf) {    if (logger.isInfoEnabled()) {      printInfo("  kill workflow: "+wf);    }        // Only need to kill subtasks if wf was set to not propagate    if (!wf.isPropagatingToSubtasks()) {      Enumeration subtasksE = wf.getTasks();      while (subtasksE.hasMoreElements()) {        Task subt = (Task)subtasksE.nextElement();        if (logger.isInfoEnabled()) {          printInfo("    remove task: "+subt);        }        publishRemove(subt);      }    }    // okay to get parent    Task ptask = wf.getParentTask();    if (ptask != null) {      PlanElement ppe = ptask.getPlanElement();      if (ppe != null) {        if (logger.isInfoEnabled()) {          printInfo("  remove planElement: "+ppe);          printInfo("  publish change the parent task: "+ptask.getUID());        }        publishRemove(ppe);	publishChange(ptask);      } else {        if (logger.isInfoEnabled()) {          printInfo("   no wf parent planElement");        }      }    } else {      if (logger.isInfoEnabled()) {        printInfo("   no wf parent");      }    }  }