blackboard.closeTransaction(false);
blackboard.closeTransactionDontReset();
  protected void sendTasks (JLabel label, String xmlTaskFile) {    Collection tasks = null;    tasksSent.clear();    if (!subordinatesHaveReported ()) {      label.setText("No subordinates to task yet.  Wait until they report.");    }     else {      try {	// Have to do this all within transaction boundary	    	// For some reason, every setXXX (e.g. setVerb) on a NewTask	// fires off a changeReport, and these must be inside of a transaction,	// apparently.  There is no way currently to temporarily turn off this feature.	// GWFV 10/11/2000	blackboard.openTransaction();	// Get the tasks out of the XML file	tasks = readXmlTasks(xmlTaskFile);	// First find the organizations that we will allocate to.	Collection supportedOrgs = getSupportedOrgs ();	if(supportedOrgs.isEmpty ()){	  label.setText("No task sent, since no subordinates have reported (yet).");	} else {	  allocateTasks (tasks, supportedOrgs);	  label.setText("Sent task(s) to " + 			((Organization) supportedOrgs.iterator ().next()).getItemIdentificationPG().getItemIdentification() + 			((supportedOrgs.size () > 1) ? ", etc. clusters" : " cluster"));	}      } catch (Exception exc) {	System.err.println("Could not send tasks.");	System.err.println(exc.getMessage());	exc.printStackTrace();      }      finally{	blackboard.closeTransaction(false);      }    }   }