All,

I am new to the scripted record environment but have done Groovy scripts
with ExecuteScript and other customizations with the interface... So not a
power user but maybe mid-tier. 

I am trying to create a ScriptedRecordSetWriter that accesses a controller
service (map cache).  We need to do a lookup for each record and doing it in
broken out flow files won't scale.

I can do this in an ExecuteScript with something like this:

-----------------
import org.apache.nifi.distributed.cache.client.DistributedMapCacheClient
import org.apache.nifi.distributed.cache.client.Serializer
import org.apache.nifi.distributed.cache.client.Deserializer
import java.nio.charset.StandardCharsets

def ff = session.get()

if(!ff) return

def StringSerializer = {value, out ->
out.write(value.getBytes(StandardCharsets.UTF_8))} as Serializer<String>
def StringDeserializer = { bytes -> new String(bytes) } as
Deserializer<String>

def myDistClient =
AggMapClientService.*asControllerService*(DistributedMapCacheClient)
mn = ff.getAttribute('record.mn')
def result = myDistClient.get(mn, StringSerializer, StringDeserializer)

log.info("Result = $result")
session.transfer(ff, REL_SUCCESS)
------------------

But this only works because I am passing the UUID of the controller service
as a property.  This shows up in the script as a type PropertyValue and
"asControllerService" becomes possible.

What I can't find is any example of how to access properties in the
ScriptedRecordSetWriter.  And it may be that I can't access controller
services in the script for this service.

Any pointers/examples would be greatly appreciated.  If someone has tried to
access a controller service from a ScriptedRecordSetWriter and determined it
is not possible, I would appreciate that knowledge as well!

Thanks in advance

Dave





--
Sent from: http://apache-nifi-users-list.2361937.n4.nabble.com/

Reply via email to