Skip to main content
Daruul
Silver ⭐️
December 6, 2021
Solved

NiFi ExecuteScript - Able to add attributes to created FlowFiles?

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!

mburgess
mburgessAnswer
Gold ⭐️⭐️⭐️
December 7, 2021

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)

2 replies

mburgess
Gold ⭐️⭐️⭐️
mburgessAnswer
Gold ⭐️⭐️⭐️
December 7, 2021

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)

Translate
Daruul
DaruulAuthor
Silver ⭐️
December 7, 2021

Ah I'm so careless, thanks for pointing that out!

Translate