Archives of Support Questions (Read Only)

This is an archived board for historical reference. Information and links may no longer be available or relevant
Announcements
This board is archived and read-only for historical reference. To ask a new question, please post a new topic on the appropriate active board.

NIFI:Using RouteOnContent for filtering responses?

avatar

I want to use routeonContent and put my response in deifferenct directories based on the method names they consist i have attribute '$message.body' and use expression( in routeonContent) ${message.body:contains('<person>')} . But it doesn't work for me do you have any better idea how can i do this?

I need to check if it conatains tag with name person and if it does o will route it to certian direction.

I have replaced ${message.body:contains('<person>')} with this ${message.body:contains("<[^>][+ person+^>]*>")} but it still doesn't works.

1 ACCEPTED SOLUTION

avatar
Master Guru

@sally sally

Route on content is to match the contents of ff we cannot compare attribute inside this processor.

But we can acheive by using

RouteOnAttribute Processor:-

as we are having ${message.body} as attribute then add a property

${message.body:contains('<person>')}

it will look for message.body attribute contains <person> or not.

40530-routeonattribute-person.png

if yes then it routes to person relation and

if ff not having <person> it will routes to unmatched relation.

RouteOnContent Processor:-

As you are having $message.body as attribute we are not able to use RouteOnContent processor, because it will look the content of ff to find match.

E.g:-How RouteOnContent works?
Input:-

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <person>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

If we are having the above input as the ff content then in Route on content processor we need to give property as

40531-routecontent.png

It will look for is the content of ff having <person> or not

In our case it is yes then it will route to person relation.

View solution in original post

2 REPLIES 2

avatar
Not applicable

avatar
Master Guru

@sally sally

Route on content is to match the contents of ff we cannot compare attribute inside this processor.

But we can acheive by using

RouteOnAttribute Processor:-

as we are having ${message.body} as attribute then add a property

${message.body:contains('<person>')}

it will look for message.body attribute contains <person> or not.

40530-routeonattribute-person.png

if yes then it routes to person relation and

if ff not having <person> it will routes to unmatched relation.

RouteOnContent Processor:-

As you are having $message.body as attribute we are not able to use RouteOnContent processor, because it will look the content of ff to find match.

E.g:-How RouteOnContent works?
Input:-

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <person>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

If we are having the above input as the ff content then in Route on content processor we need to give property as

40531-routecontent.png

It will look for is the content of ff having <person> or not

In our case it is yes then it will route to person relation.