Ich möchte Sitzung entfernen für den Fall, dass ich bestimmte Daten aus der Datei habe ich Code wie folgt, aber ich habe Fehler "Flowfile hat bereits für die Entfernung markiert", was sollte ich ändern, um zusätzliche Fehler loszuwerden?Nifi: wie Sitzung auf Attributwert in Nifi zu entfernen
Bei Session Rollback wird Flowfile auch in Warteschlangen verschwinden?
2. sollte ich rollback anstelle von remove() verwenden?
NodeList childNodes = nodeGettingChanged.getChildNodes(); for (int i = 0; i != childNodes.getLength(); ++i) { Node child = childNodes.item(i); if (!(child instanceof Element)) continue; if (child.getNodeName().equals("runAs")) { if(child.getFirstChild().getTextContent()=="false"){ session.remove(flowFile1); File deleteExtraFile =new File("C://Users//s.tkhilaishvili//Desktop//try2//nifi-1.3.0//1//conf.xml"); boolean delete=deleteExtraFile.delete(); } else { child.getFirstChild().setNodeValue("false"); } } }
Dokument finalXmlDocument = xmlDocument; session.write (flowFile1, neue StreamCallback() {
public void process(InputStream inputStream, OutputStream outputStream) throws IOException { TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = null; try { transformer = transformerFactory.newTransformer(); } catch (TransformerConfigurationException e) { e.printStackTrace(); } DOMSource source = new DOMSource(finalXmlDocument); ffStream.close(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); StreamResult result = new StreamResult(bos); try { transformer.transform(source, result); } catch (TransformerException e) { e.printStackTrace(); } byte[] array = bos.toByteArray(); outputStream.write(array); } }); session.remove(flowFile); session.transfer(flowFile1, REL_SUCCESS); }
im Falle von session.remove() es wird immer noch im übergeordneten Ordner directroy? ich meine Datei würde nicht gelöscht werden von hier –