<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>question Re: JavaScript in ExecuteScript in Nifi in Archives of Support Questions (Read Only)</title>
    <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JavaScript-in-ExecuteScript-in-Nifi/m-p/205795#M76601</link>
    <description>&lt;P&gt;I am able to resolve this. &lt;BR /&gt;&lt;BR /&gt;var flowFile = session.get();
if (flowFile != null) {
var StreamCallback =  Java.type("org.apache.nifi.processor.io.StreamCallback")
var IOUtils = Java.type("org.apache.commons.io.IOUtils")
var StandardCharsets = Java.type("java.nio.charset.StandardCharsets")
var JString = Java.type("java.lang.String")
var TokenAttr = flowFile.getAttribute('token_value')  
var JsonTokenAttr = JSON.parse(TokenAttr) ; flowFile = session.write(flowFile,
        new StreamCallback(function(inputStream, outputStream) {
            var text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
    var obj = JSON.parse(text)
  var accounts = obj['customer-accounts'];
  var convertedAccounts = accounts.map(function(account, index) {
    account['account_number'] = JsonTokenAttr.Tokens[index];return account;
  });
  var newObj = {'customer-accounts' : convertedAccounts }
    var builder = new JString()
           outputStream.write(JSON.stringify(newObj, null, '\t').getBytes(StandardCharsets.UTF_8)) 
        })) session.transfer(flowFile, REL_SUCCESS)
}&lt;/P&gt;</description>
    <pubDate>Sun, 01 Apr 2018 00:26:55 GMT</pubDate>
    <dc:creator>karteek_chunchu</dc:creator>
    <dc:date>2018-04-01T00:26:55Z</dc:date>
    <item>
      <title>JavaScript in ExecuteScript in Nifi</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JavaScript-in-ExecuteScript-in-Nifi/m-p/205794#M76600</link>
      <description>&lt;P&gt;I am trying to write and execute a Java script in Nifi. Below is all I have defined in the body of Execute script processor.  token_value is an attribute and the value for it is -   {
    "Tokens": [
        "12345acdb4567",
        "98765acdb1111"
    ]
}&lt;/P&gt;&lt;P&gt;Flow File Content is -  { "customer-accounts": [ { "company_identifier": "074", "product_code": "CCD", "account_number": "222222222222", "relationship_code": "JOF", "primary_ownership_indicator": "Y" }, { "company_identifier": "674", "product_code": "CCD", "account_number": "111111111111", "relationship_code": "EOD", "primary_ownership_indicator": "N" } ] }&lt;/P&gt;&lt;P&gt;Script I am using is as below. I am not familiar with JavaScript. Trying to get this to work.   &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ScriptBody : &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;var flowFile = session.get() ; &lt;/P&gt;&lt;P&gt;if (flowFile != null) {
    var TokenAttr = flowFile.getAttribute('token_value') ;
} &lt;/P&gt;&lt;P&gt;function convert(flowFile, TokenAttr)&lt;/P&gt;&lt;P&gt;{
  let accounts = flowFile['customer-accounts'];
  let convertedAccounts = accounts.map((account, index) =&amp;gt; {
    account['account_number'] = TokenAttr.Tokens[index];
    return account;
  });
  return {
    'customer-accounts' : convertedAccounts
  }
} &lt;/P&gt;&lt;P&gt;flowFile =  session.write(flowFile,console.log(JSON.stringify(convert(flowFile,TokenAttr)))) &lt;/P&gt;&lt;P&gt;session.transfer(flowFile, REL_SUCCESS)&lt;/P&gt;&lt;P&gt;your help will be appreciated. Thanks in advance. &lt;/P&gt;</description>
      <pubDate>Thu, 29 Mar 2018 10:34:03 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JavaScript-in-ExecuteScript-in-Nifi/m-p/205794#M76600</guid>
      <dc:creator>karteek_chunchu</dc:creator>
      <dc:date>2018-03-29T10:34:03Z</dc:date>
    </item>
    <item>
      <title>Re: JavaScript in ExecuteScript in Nifi</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JavaScript-in-ExecuteScript-in-Nifi/m-p/205795#M76601</link>
      <description>&lt;P&gt;I am able to resolve this. &lt;BR /&gt;&lt;BR /&gt;var flowFile = session.get();
if (flowFile != null) {
var StreamCallback =  Java.type("org.apache.nifi.processor.io.StreamCallback")
var IOUtils = Java.type("org.apache.commons.io.IOUtils")
var StandardCharsets = Java.type("java.nio.charset.StandardCharsets")
var JString = Java.type("java.lang.String")
var TokenAttr = flowFile.getAttribute('token_value')  
var JsonTokenAttr = JSON.parse(TokenAttr) ; flowFile = session.write(flowFile,
        new StreamCallback(function(inputStream, outputStream) {
            var text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
    var obj = JSON.parse(text)
  var accounts = obj['customer-accounts'];
  var convertedAccounts = accounts.map(function(account, index) {
    account['account_number'] = JsonTokenAttr.Tokens[index];return account;
  });
  var newObj = {'customer-accounts' : convertedAccounts }
    var builder = new JString()
           outputStream.write(JSON.stringify(newObj, null, '\t').getBytes(StandardCharsets.UTF_8)) 
        })) session.transfer(flowFile, REL_SUCCESS)
}&lt;/P&gt;</description>
      <pubDate>Sun, 01 Apr 2018 00:26:55 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JavaScript-in-ExecuteScript-in-Nifi/m-p/205795#M76601</guid>
      <dc:creator>karteek_chunchu</dc:creator>
      <dc:date>2018-04-01T00:26:55Z</dc:date>
    </item>
  </channel>
</rss>

