Created on 12-06-2021 02:01 AM - edited 12-06-2021 02:02 AM
Hi all, I am passing a FlowFile with several custom attributes to my ExecuteScript processor (running python). I want the ExecuteScript to create two new FlowFiles, each having their own set of attributes (the values are to be retrieved from the input FlowFile). Problem is, I am unable to add any attributes to the two new flowfiles and it throws the error "org.apache.nifi.controller.repository.StandardFlow" object has no attribute "putAttribute".
flowFile = session.get()
if flowFile != None:
...
destFlowFile = session.create(flowFile)
# doesn't work
destFlowFile.putAttribute(destFlowFile, "logMsg", "Testing Msg")
destFlowFile.putAllAttributes(destFlowFile, backupAttributes)
I've followed the examples listed in this guide https://community.cloudera.com/t5/Community-Articles/ExecuteScript-Cookbook-part-1/ta-p/248922, hence I wasn't expecting this to not work. Is it just not possible to add attributes to created FlowFiles and if so, are there any alternative methods? Thank you!
Created 12-07-2021 09:19 AM
The operation to add an attribute to a FlowFile is on the ProcessSession object not the FlowFile itself (so the session can keep track of changes). Try the following instead:
session.putAttribute(destFlowFile, , "logMsg", "Testing Msg")
session.putAllAttributes(destFlowFile, backupAttributes)
Created 12-07-2021 09:19 AM
The operation to add an attribute to a FlowFile is on the ProcessSession object not the FlowFile itself (so the session can keep track of changes). Try the following instead:
session.putAttribute(destFlowFile, , "logMsg", "Testing Msg")
session.putAllAttributes(destFlowFile, backupAttributes)
Created 12-07-2021 09:34 AM
Ah I'm so careless, thanks for pointing that out!