Я хочу удалить сеанс в случае, если я получу определенные данные из файла. У меня есть такой код, но у меня возникли ошибки: «Flowfile уже отмечен для удаления». Что мне следует изменить, чтобы избавиться от лишних ошибок?
В случае отката сеанса flowfile также исчезнет в очередях?
2. следует ли использовать откат вместо remove ()?
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"); } } }
Документ finalXmlDocument = xmlDocument; session.write (flowFile1, new 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); }