This is a flow that we're starting to use with some of our scripts:

https://mikethomsen.github.io/posts/2020/11/08/testing-executescript-modules-with-the-nifi-test-framework

It's pretty easy to just fire up IntelliJ (community or premium) and
test scripts out that way. It's not necessary for trivial ones, but if
you find yourself writing a lot of business logic, you can get a lot
of coverage this way and add regression testing that doesn't require
you to manually test things by hand from the browser.

On Fri, Nov 20, 2020 at 4:57 AM Piper, Nick <[email protected]> wrote:
>
> Thank you Mike for the thought on it, we'll consider that approach - in 
> particular, it does look useful that the (compiled) code is reloaded without 
> having to restart NiFi.
>
> For many of our uses of scripted code, a theoretical advantage is avoiding 
> having to install binaries or add things to the filesystem. It's unfortunate 
> that any significant script will almost certainly need some extra library, 
> such as those which make up NiFi itself, but the script cannot use that. I 
> wonder how 'stateless' NiFi will be coping with this, as the target runtime 
> operating system filesystems will need to have the script dependencies 
> available.
>
> Regards,
>
>  Nick
>
> -----Original Message-----
> From: Mike Thomsen <[email protected]>
> Sent: 17 November 2020 1:31 PM
> To: [email protected]
> Subject: Re: ScriptedReader - how to reuse Java libraries from 
> nifi-standard-nar?
>
> I would recommend creating a fat jar that has precisely what you need and 
> referencing that. That's a pattern my team's been using for a while to get 
> near custom NAR functionality through ExecuteScript.
> Here's an overview of what it looks like:
>
> https://mikethomsen.github.io/posts/2020/11/06/taking-executescript-to-the-next-level-with-fat-jars/
>
> You should be able to copy and paste the Maven pom.xml and update it to match 
> your needs pretty easily. Make sure to configure any NiFi api jars as 
> "provided" scope.
>
> On Tue, Nov 17, 2020 at 7:23 AM Piper, Nick <[email protected]> wrote:
> >
> > I've implemented a groovy ScriptedReader , and wish to reuse jar libraries 
> > which are already part of NiFi from my script.
> >
> > https://urldefense.proofpoint.com/v2/url?u=https-3A__nifi.apache.org_d
> > ocs_nifi-2Ddocs_components_org.apache.nifi_nifi-2Dscripting-2Dnar_1.5.
> > 0_org.apache.nifi.record.script.ScriptedReader_index.html&d=DwIFaQ&c=H
> > 50I6Bh8SW87d_bXfZP_8g&r=qtiHf3oxfzao0QlKv0Pa4nnORYuepkcxMMbn7wBUyq0&m=
> > 2bdrSUoix61CO2woFcsKtrz6Ajj4aH6ZlQqnZjJC2Io&s=X5wC0G47W5cF1RevN2DF9MkU
> > AKmIuSa4r-5SOnqZno4&e=
> >
> > The script can be seen at
> > https://urldefense.proofpoint.com/v2/url?u=https-3A__gist.github.com_p
> > ipern_2d67fbc0a4225cf1b42d1fff832c2c54&d=DwIFaQ&c=H50I6Bh8SW87d_bXfZP_
> > 8g&r=qtiHf3oxfzao0QlKv0Pa4nnORYuepkcxMMbn7wBUyq0&m=2bdrSUoix61CO2woFcs
> > Ktrz6Ajj4aH6ZlQqnZjJC2Io&s=2KmU08qgvlzGeJbOFbGpHWXfrxcZTfyG8I6UdAxp9cs
> > &e=
> >
> > My script needs some of the 'jar files' which are present in 
> > nifi-standard-nar. Is there a way I can reuse those already inside that nar 
> > file? Otherwise I'll have to unpack the nar, place the jar files in some 
> > other folder, and refer to that folder in 'Module Directory' - on every 
> > machine in the NiFi cluster. I'm looking for maybe some way to have my 
> > goovy script use a different classloader (?) or somehow reuse the existing 
> > jar files inside that nar file. Maybe it would be reliable to predict the 
> > 'work' folder and look for unpacked nar files in there...
> >
> > Many thanks,
> >
> >  Nick

Reply via email to