Skip to content

Instantly share code, notes, and snippets.

@alopresto
Created August 1, 2018 18:44
Show Gist options
  • Save alopresto/5f557380e26e6114465958f915356281 to your computer and use it in GitHub Desktop.
Save alopresto/5f557380e26e6114465958f915356281 to your computer and use it in GitHub Desktop.
This template demonstrates an ExecuteScript processor containing a Groovy script to calculate the SHA-256 hash of various attributes and add that value as a new attribute on the flowfile. It also compares the ssdeep locality-sensitive hash (LSH) for reference. To deploy locally, replace the *Module Lib* property of *ExecuteScript* with the path …
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<template encoding-version="1.2">
<description>This template demonstrates an ExecuteScript processor containing a Groovy script to calculate the SHA-256 hash of various attributes and add that value as a new attribute on the flowfile. It also compares the ssdeep locality-sensitive hash (LSH) for reference. </description>
<groupId>f6aec6a2-0164-1000-e01d-dcaf5d2d2f5d</groupId>
<name>HashAttribute Template</name>
<snippet>
<connections>
<id>13e1392c-72b1-38ed-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>5c419611-6416-3347-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>7a1f0b9e-aeef-3138-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>18cd3b17-e168-3778-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>469e63f6-20fb-3689-0000-000000000000</id>
<type>FUNNEL</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>6c7daba3-101f-3048-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>33afed24-512a-3774-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>0f86e72c-fbea-3c58-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>cc5a75c9-16be-35e5-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>57e37654-787d-3602-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>469e63f6-20fb-3689-0000-000000000000</id>
<type>FUNNEL</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>dfea606a-1f6f-3c9c-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>7949ec6d-0eff-3b67-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>cc5a75c9-16be-35e5-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<source>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>469e63f6-20fb-3689-0000-000000000000</id>
<type>FUNNEL</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>79cf430e-36b6-3f47-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>469e63f6-20fb-3689-0000-000000000000</id>
<type>FUNNEL</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>d82575eb-dafc-3a11-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>a5d91155-095c-38e5-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>7a1f0b9e-aeef-3138-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<source>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>469e63f6-20fb-3689-0000-000000000000</id>
<type>FUNNEL</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>d39da69a-1af6-3805-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>5c419611-6416-3347-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>b01ab23b-41d5-389b-0000-000000000000</groupId>
<id>0f86e72c-fbea-3c58-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<funnels>
<id>469e63f6-20fb-3689-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<position>
<x>530.0</x>
<y>258.0</y>
</position>
</funnels>
<labels>
<id>39fb7243-14c7-3964-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<position>
<x>0.0</x>
<y>0.0</y>
</position>
<height>199.0</height>
<label>Comment generating processors</label>
<style>
<entry>
<key>font-size</key>
<value>16px</value>
</entry>
</style>
<width>1198.0</width>
</labels>
<labels>
<id>a828355a-b94b-356c-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<position>
<x>645.0</x>
<y>277.0</y>
</position>
<height>449.0</height>
<label>"Fuzzy" hash for comparison (similar input results in similar output)</label>
<style>
<entry>
<key>font-size</key>
<value>16px</value>
</entry>
</style>
<width>563.0</width>
</labels>
<labels>
<id>bb4b7b8e-4bc5-36be-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<position>
<x>53.0</x>
<y>279.0</y>
</position>
<height>226.0</height>
<label>Custom script to calculate SHA-256 over attributes</label>
<style>
<entry>
<key>font-size</key>
<value>16px</value>
</entry>
</style>
<width>526.0</width>
</labels>
<processors>
<id>0f86e72c-fbea-3c58-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<position>
<x>701.5</x>
<y>585.0</y>
</position>
<bundle>
<artifact>nifi-cybersecurity-nar</artifact>
<group>org.apache.nifi</group>
<version>1.8.0-SNAPSHOT</version>
</bundle>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>ATTRIBUTE_NAME</key>
<value>
<name>ATTRIBUTE_NAME</name>
</value>
</entry>
<entry>
<key>HASH_ALGORITHM</key>
<value>
<name>HASH_ALGORITHM</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>ATTRIBUTE_NAME</key>
<value>fuzzyhash.value</value>
</entry>
<entry>
<key>HASH_ALGORITHM</key>
<value>ssdeep</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<executionNodeRestricted>false</executionNodeRestricted>
<name>FuzzyHashContent</name>
<relationships>
<autoTerminate>true</autoTerminate>
<name>failure</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<name>success</name>
</relationships>
<state>STOPPED</state>
<style/>
<type>org.apache.nifi.processors.cybersecurity.FuzzyHashContent</type>
</processors>
<processors>
<id>5c419611-6416-3347-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<position>
<x>196.5</x>
<y>755.0</y>
</position>
<bundle>
<artifact>nifi-standard-nar</artifact>
<group>org.apache.nifi</group>
<version>1.8.0-SNAPSHOT</version>
</bundle>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Log Level</key>
<value>
<name>Log Level</name>
</value>
</entry>
<entry>
<key>Log Payload</key>
<value>
<name>Log Payload</name>
</value>
</entry>
<entry>
<key>Attributes to Log</key>
<value>
<name>Attributes to Log</name>
</value>
</entry>
<entry>
<key>attributes-to-log-regex</key>
<value>
<name>attributes-to-log-regex</name>
</value>
</entry>
<entry>
<key>Attributes to Ignore</key>
<value>
<name>Attributes to Ignore</name>
</value>
</entry>
<entry>
<key>attributes-to-ignore-regex</key>
<value>
<name>attributes-to-ignore-regex</name>
</value>
</entry>
<entry>
<key>Log prefix</key>
<value>
<name>Log prefix</name>
</value>
</entry>
<entry>
<key>character-set</key>
<value>
<name>character-set</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Log Level</key>
<value>info</value>
</entry>
<entry>
<key>Log Payload</key>
<value>true</value>
</entry>
<entry>
<key>Attributes to Log</key>
</entry>
<entry>
<key>attributes-to-log-regex</key>
<value>.*</value>
</entry>
<entry>
<key>Attributes to Ignore</key>
</entry>
<entry>
<key>attributes-to-ignore-regex</key>
</entry>
<entry>
<key>Log prefix</key>
</entry>
<entry>
<key>character-set</key>
<value>UTF-8</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<executionNodeRestricted>false</executionNodeRestricted>
<name>LogAttribute</name>
<relationships>
<autoTerminate>true</autoTerminate>
<name>success</name>
</relationships>
<state>STOPPED</state>
<style/>
<type>org.apache.nifi.processors.standard.LogAttribute</type>
</processors>
<processors>
<id>6c7daba3-101f-3048-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<position>
<x>35.0</x>
<y>35.5</y>
</position>
<bundle>
<artifact>nifi-standard-nar</artifact>
<group>org.apache.nifi</group>
<version>1.8.0-SNAPSHOT</version>
</bundle>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>File Size</key>
<value>
<name>File Size</name>
</value>
</entry>
<entry>
<key>Batch Size</key>
<value>
<name>Batch Size</name>
</value>
</entry>
<entry>
<key>Data Format</key>
<value>
<name>Data Format</name>
</value>
</entry>
<entry>
<key>Unique FlowFiles</key>
<value>
<name>Unique FlowFiles</name>
</value>
</entry>
<entry>
<key>generate-ff-custom-text</key>
<value>
<name>generate-ff-custom-text</name>
</value>
</entry>
<entry>
<key>character-set</key>
<value>
<name>character-set</name>
</value>
</entry>
<entry>
<key>commentContent</key>
<value>
<name>commentContent</name>
</value>
</entry>
<entry>
<key>commentID</key>
<value>
<name>commentID</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>File Size</key>
<value>0B</value>
</entry>
<entry>
<key>Batch Size</key>
<value>1</value>
</entry>
<entry>
<key>Data Format</key>
<value>Text</value>
</entry>
<entry>
<key>Unique FlowFiles</key>
<value>false</value>
</entry>
<entry>
<key>generate-ff-custom-text</key>
<value>This is a plaintext message. </value>
</entry>
<entry>
<key>character-set</key>
<value>UTF-8</value>
</entry>
<entry>
<key>commentContent</key>
<value>This is a long, rambling comment. This comment goes on and on for quite some time, never reaching the author's intended point. Sadly, we see many of these comments in today's society. </value>
</entry>
<entry>
<key>commentID</key>
<value>1</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>1 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<executionNodeRestricted>false</executionNodeRestricted>
<name>Comment 1</name>
<relationships>
<autoTerminate>false</autoTerminate>
<name>success</name>
</relationships>
<state>STOPPED</state>
<style/>
<type>org.apache.nifi.processors.standard.GenerateFlowFile</type>
</processors>
<processors>
<id>7a1f0b9e-aeef-3138-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<position>
<x>196.5</x>
<y>347.5</y>
</position>
<bundle>
<artifact>nifi-scripting-nar</artifact>
<group>org.apache.nifi</group>
<version>1.8.0-SNAPSHOT</version>
</bundle>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Script Engine</key>
<value>
<name>Script Engine</name>
</value>
</entry>
<entry>
<key>Script File</key>
<value>
<name>Script File</name>
</value>
</entry>
<entry>
<key>Script Body</key>
<value>
<name>Script Body</name>
</value>
</entry>
<entry>
<key>Module Directory</key>
<value>
<name>Module Directory</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Script Engine</key>
<value>Groovy</value>
</entry>
<entry>
<key>Script File</key>
</entry>
<entry>
<key>Script Body</key>
<value>import java.security.MessageDigest
import java.nio.charset.StandardCharsets
import org.apache.commons.codec.binary.Hex
def flowFile = session.get()
if (flowFile == null) {
return
}
// Retrieve each of the desired attributes (in order)
def attributesToHash = ["commentID", "commentContent"]
def attributeValues = []
attributesToHash.each { String attr -&gt;
attributeValues &lt;&lt; flowFile.getAttribute(attr)
}
def stringToHash = attributeValues.join(";")
// Calculate the hash of the provided string
MessageDigest digest = MessageDigest.getInstance("SHA-256")
byte[] hashBytes = digest.digest(stringToHash.getBytes(StandardCharsets.UTF_8))
String hashHex = Hex.encodeHexString(hashBytes)
log.info("Calculated SHA-256(${stringToHash}): ${hashHex}")
// Store the value in an attribute on the flowfile
flowFile = session.putAttribute(flowFile, "hashSha256", hashHex)
// Transfer the flowfile to success relationship
session.transfer(flowFile, ExecuteScript.REL_SUCCESS)</value>
</entry>
<entry>
<key>Module Directory</key>
<value>/Users/alopresto/Workspace/nifi/nifi-assembly/target/nifi-1.8.0-SNAPSHOT-bin/nifi-1.8.0-SNAPSHOT/lib/bootstrap/commons-codec-1.11.jar</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<executionNodeRestricted>false</executionNodeRestricted>
<name>ExecuteScript</name>
<relationships>
<autoTerminate>true</autoTerminate>
<name>failure</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<name>success</name>
</relationships>
<state>STOPPED</state>
<style/>
<type>org.apache.nifi.processors.script.ExecuteScript</type>
</processors>
<processors>
<id>cc5a75c9-16be-35e5-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<position>
<x>701.5</x>
<y>347.5</y>
</position>
<bundle>
<artifact>nifi-standard-nar</artifact>
<group>org.apache.nifi</group>
<version>1.8.0-SNAPSHOT</version>
</bundle>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Regular Expression</key>
<value>
<name>Regular Expression</name>
</value>
</entry>
<entry>
<key>Replacement Value</key>
<value>
<name>Replacement Value</name>
</value>
</entry>
<entry>
<key>Character Set</key>
<value>
<name>Character Set</name>
</value>
</entry>
<entry>
<key>Maximum Buffer Size</key>
<value>
<name>Maximum Buffer Size</name>
</value>
</entry>
<entry>
<key>Replacement Strategy</key>
<value>
<name>Replacement Strategy</name>
</value>
</entry>
<entry>
<key>Evaluation Mode</key>
<value>
<name>Evaluation Mode</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Regular Expression</key>
<value>(?s)(^.*$)</value>
</entry>
<entry>
<key>Replacement Value</key>
<value>${commentID};${commentContent}</value>
</entry>
<entry>
<key>Character Set</key>
<value>UTF-8</value>
</entry>
<entry>
<key>Maximum Buffer Size</key>
<value>1 MB</value>
</entry>
<entry>
<key>Replacement Strategy</key>
<value>Regex Replace</value>
</entry>
<entry>
<key>Evaluation Mode</key>
<value>Entire text</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<executionNodeRestricted>false</executionNodeRestricted>
<name>Populate FF Content with Attributes</name>
<relationships>
<autoTerminate>true</autoTerminate>
<name>failure</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<name>success</name>
</relationships>
<state>STOPPED</state>
<style/>
<type>org.apache.nifi.processors.standard.ReplaceText</type>
</processors>
<processors>
<id>d82575eb-dafc-3a11-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<position>
<x>799.0</x>
<y>35.5</y>
</position>
<bundle>
<artifact>nifi-standard-nar</artifact>
<group>org.apache.nifi</group>
<version>1.8.0-SNAPSHOT</version>
</bundle>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>File Size</key>
<value>
<name>File Size</name>
</value>
</entry>
<entry>
<key>Batch Size</key>
<value>
<name>Batch Size</name>
</value>
</entry>
<entry>
<key>Data Format</key>
<value>
<name>Data Format</name>
</value>
</entry>
<entry>
<key>Unique FlowFiles</key>
<value>
<name>Unique FlowFiles</name>
</value>
</entry>
<entry>
<key>generate-ff-custom-text</key>
<value>
<name>generate-ff-custom-text</name>
</value>
</entry>
<entry>
<key>character-set</key>
<value>
<name>character-set</name>
</value>
</entry>
<entry>
<key>commentContent</key>
<value>
<name>commentContent</name>
</value>
</entry>
<entry>
<key>commentID</key>
<value>
<name>commentID</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>File Size</key>
<value>0B</value>
</entry>
<entry>
<key>Batch Size</key>
<value>1</value>
</entry>
<entry>
<key>Data Format</key>
<value>Text</value>
</entry>
<entry>
<key>Unique FlowFiles</key>
<value>false</value>
</entry>
<entry>
<key>generate-ff-custom-text</key>
<value>This is a plaintext message. </value>
</entry>
<entry>
<key>character-set</key>
<value>UTF-8</value>
</entry>
<entry>
<key>commentContent</key>
<value>This is a concise comment. </value>
</entry>
<entry>
<key>commentID</key>
<value>3</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>1 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<executionNodeRestricted>false</executionNodeRestricted>
<name>Comment 3</name>
<relationships>
<autoTerminate>false</autoTerminate>
<name>success</name>
</relationships>
<state>STOPPED</state>
<style/>
<type>org.apache.nifi.processors.standard.GenerateFlowFile</type>
</processors>
<processors>
<id>dfea606a-1f6f-3c9c-0000-000000000000</id>
<parentGroupId>b01ab23b-41d5-389b-0000-000000000000</parentGroupId>
<position>
<x>412.0</x>
<y>35.5</y>
</position>
<bundle>
<artifact>nifi-standard-nar</artifact>
<group>org.apache.nifi</group>
<version>1.8.0-SNAPSHOT</version>
</bundle>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>File Size</key>
<value>
<name>File Size</name>
</value>
</entry>
<entry>
<key>Batch Size</key>
<value>
<name>Batch Size</name>
</value>
</entry>
<entry>
<key>Data Format</key>
<value>
<name>Data Format</name>
</value>
</entry>
<entry>
<key>Unique FlowFiles</key>
<value>
<name>Unique FlowFiles</name>
</value>
</entry>
<entry>
<key>generate-ff-custom-text</key>
<value>
<name>generate-ff-custom-text</name>
</value>
</entry>
<entry>
<key>character-set</key>
<value>
<name>character-set</name>
</value>
</entry>
<entry>
<key>commentContent</key>
<value>
<name>commentContent</name>
</value>
</entry>
<entry>
<key>commentID</key>
<value>
<name>commentID</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>File Size</key>
<value>0B</value>
</entry>
<entry>
<key>Batch Size</key>
<value>1</value>
</entry>
<entry>
<key>Data Format</key>
<value>Text</value>
</entry>
<entry>
<key>Unique FlowFiles</key>
<value>false</value>
</entry>
<entry>
<key>generate-ff-custom-text</key>
<value>This is a plaintext message. </value>
</entry>
<entry>
<key>character-set</key>
<value>UTF-8</value>
</entry>
<entry>
<key>commentContent</key>
<value>This is a long, rambling comment. This comment goes on and on for quite some time, never reaching the author's intended point. Sadly, we see many of these comments in today's society. </value>
</entry>
<entry>
<key>commentID</key>
<value>2</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>1 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<executionNodeRestricted>false</executionNodeRestricted>
<name>Comment 2 (Same as 1)</name>
<relationships>
<autoTerminate>false</autoTerminate>
<name>success</name>
</relationships>
<state>STOPPED</state>
<style/>
<type>org.apache.nifi.processors.standard.GenerateFlowFile</type>
</processors>
</snippet>
<timestamp>08/01/2018 11:42:59 PDT</timestamp>
</template>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment