@Override
  public boolean procesarExtractedInfo(ExtractedInfo extrInfo) {
    // verificamos la cardinalidad del contenido de la informacion extraida. Si es mayor que uno se
    // trata de una
    // colección de elementos que seran enviados al motor
    // Metemos en el motor el contenido de extrInfo
    if (extrInfo == null) return false;

    if (!(extrInfo.isContentACollection())) {
      Object msgContent = extrInfo.getContenido();
      ruleEngine.assertFact(msgContent);
      //                        ruleEngine.assertFact(extrInfo);
      //			return true;
    } else {
      ArrayList aux = (ArrayList) extrInfo.getContenido();
      ExtractedInfo extrInfoEnArray;
      Iterator it = aux.iterator();
      while (it.hasNext()) {
        extrInfoEnArray = (ExtractedInfo) it.next();
        if (extrInfoEnArray != null) {
          ruleEngine.assertFact(extrInfoEnArray);
          ruleEngine.assertFact(extrInfoEnArray.getContenido());
        }
      }
    }
    // Opcional se puede anadir al motor el InfoExtracted o solo su contenido. Esto se podria
    // configurar
    //       ruleEngine.assertFact(extrInfo);
    return true;
  }
 @Override
 public boolean cambiarComportamiento(String identFicheroReglasComportamiento) {
   InputStream reglas = this.getClass().getResourceAsStream(identFicheroReglasComportamiento);
   if (ruleEngine.crearKbSesionConNuevasReglas(reglas, identFicheroReglasComportamiento)) {
     // inicializamos la Memoria de trabajo con variables globales
     inicializaVariablesGlobales();
     return true;
   } else return false;
 }
 @Override
 public void arranca() {
   ruleEngine.fireRules();
 }
 public void inicializaVariablesGlobales() {
   ruleEngine.addGlobalVariable(NombresPredefinidos.TASK_MANAGER_GLOBAL, taskManager);
   ruleEngine.addGlobalVariable(
       NombresPredefinidos.ITFUSO_RECURSOTRAZAS_GLOBAL, NombresPredefinidos.RECURSO_TRAZAS_OBJ);
   ruleEngine.addGlobalVariable(NombresPredefinidos.AGENT_ID_GLOBAL, idAgente);
 }
 @Override
 public Collection<Object> copiarObjetosDeMiMemoria() {
   return ruleEngine.getStatefulKnowledgeSession().getObjects();
 }
 @Override
 public ItfMotorDeReglas getItfMotorDeReglas() {
   return ruleEngine.getItfMotorDeReglas();
 }
 @Override
 public void actualizarHechoWithoutFireRules(Object fact) {
   ruleEngine.updateFactWithoutFireRules(fact);
 }
 public StatefulKnowledgeSession getStatefulKnowledgeSession() {
   return ruleEngine.getStatefulKnowledgeSession();
 }
 @Override
 public void eliminarHechoWithoutFireRules(Object fact) {
   ruleEngine.retractFactWithoutFireRules(fact);
 }
 // The three next methods do not call to fireAllRules inside its code.
 @Override
 public synchronized void insertarHechoWithoutFireRules(Object fact) {
   ruleEngine.assertFactWithoutFireRules(fact);
 }
 @Override
 public synchronized void actualizarHecho(Object fact) {
   ruleEngine.updateFact(fact);
 }
 @Override
 public void eliminarHecho(Object fact) {
   ruleEngine.retracttFact(fact);
 }
 // The three next methods call to fireAllRules inside its code.
 @Override
 public void insertarHecho(Object fact) {
   ruleEngine.assertFact(fact);
 }