Hello Charlie,

I was looking back through and saw this wasn't totally resolved yet. 


Couple questions. First, what system are you using? There are a couple of 
options for the stream command depending on what you're using. Also are you 
able to get new commands (using yum or brew)?

The key thing I want to solve is to find the encoding of a file just based on 
it contents and not relying on having access to the original file. 
ExecuteStreamCommand should enable this. This is because you can just pass any 
FlowFile into ExecuteStreamCommand then it can route the FlowFile contents to 
STDIN for the command to execute on.

Mac's (what I am using) default command for finding file encodings is "file -bi 
filename.txt" but it doesn't allow you to pass in a file via STDIN. I found a 
command called "uchardet"[1] which finds file encodings and allows you to pass 
the file in via STDIN. 

I attached a template that takes in a file using GetFile (deletes the original) 
and routes that FlowFile to ExecuteStreamCommand. ExecuteStreamCommand then 
runs "uchardet" on the contents of the FlowFile and outputs the encoding to the 
"encoding" attribute of the original FlowFile.
 
[1] https://github.com/BYVoid/uchardet

If this doesn't satisfy your needs just let me know!
Joe

- - - - - - 
Joseph Percivall
linkedin.com/in/Percivall
e: joeperciv...@yahoo.com




On Friday, November 20, 2015 9:53 AM, Charlie Frasure 
<charliefras...@gmail.com> wrote:



I'm definitely game for that.  Let me know what I can do to help.



On Fri, Nov 20, 2015 at 9:35 AM, Joe Witt <joe.w...@gmail.com> wrote:

Charlie
>
>Got ya.  I missed the 'encoding vs content type' thing.  I agree let's
>find a way to avoid the extra copy.  We dont expose the storage
>location of the underlying bytes.  So on the ListFile thing.  What I
>was thinking was this (and honestly I've not tested this so maybe i'm
>skipping something important)
>
>ListFile to get a listing of names/etc.. of interest
>
>Execute the 'file --mime-encoding ${filename}' to get more attributes
>available to work with
>
>RouteOnAttribute to decide what to do with the file next.  You can
>Fetch/delete what you don't want you can Fetch/pass on what you do
>
>I was looking for a way to check the mime-encoding while passing the
>data to detect into an input stream.  because that is actually how
>execute stream command wants to work.
>
>This is a use case that should be pretty easy so if you're willing to
>chat through it with us we'll figure out a path to make it work well.
>
>Thanks
>Joe
>
>On Fri, Nov 20, 2015 at 9:17 AM, Charlie Frasure
>
><charliefras...@gmail.com> wrote:
>> Thanks Joe,
>>
>> The use case is that I'm receiving data without knowing what character set
>> it is coming in.  --mime-encoding is giving it's best guess on character set
>> rather than the content type.
>>
>> The ListFile sounds interesting, but I wonder if I really even need that.  I
>> don't want to leave the files in place, I just want to run an external
>> command on them as part of the data flow.  Is there a way I can run an
>> external command against the physical file such as
>> /opt/nifi/somedir/12345.uuid?  Would that info be in an attribute somewhere?
>> It just seems wasteful to make an extra copy of the file, in order to run a
>> read-only command on it, then delete it.  If ListFiles is still the right
>> way to go, please let me know.
>>
>>
>> On Fri, Nov 20, 2015 at 6:45 AM, Joe Witt <joe.w...@gmail.com> wrote:
>>>
>>> For identifying the mime type you may have sufficient results with the
>>> existing processor 'IdentifyMimeType' which you can put into the flow.
>>>
>>> For better logic around identifying files to pull but first calling an
>>> external command to learn more about them the upcoming
>>> ListFile/FetchFile combo that comes from this JIRA [1] might give you
>>> better flexibility.
>>>
>>> [1] https://issues.apache.org/jira/browse/NIFI-631
>>>
>>> Thanks
>>> Joe
>>>
>>> On Fri, Nov 20, 2015 at 12:08 AM, Charlie Frasure
>>> <charliefras...@gmail.com> wrote:
>>> > Thanks everyone for the help.  The trouble started a few processors
>>> > earlier
>>> > in an ExecuteStreamCommand on ${filename} with the result of "file not
>>> > found".  I had originally set my GetFile processor to not remove files,
>>> > but
>>> > recently changed that.  Now it seems that my ExecuteStreamCommand may
>>> > not be
>>> > the best way to accomplish this.
>>> >
>>> > The command that gets executed is: file -b --mime-encoding ${filename}
>>> > in the working directory: ${absolute.path}
>>> >
>>> > Now that the file is no longer in the source directory when the
>>> > processor
>>> > fires, the command is broken.  I could PutFile somewhere temporarily; is
>>> > there a better way?
>>> >
>>> > On Thu, Nov 19, 2015 at 10:33 PM, Joe Witt <joe.w...@gmail.com> wrote:
>>> >>
>>> >> Charlie,
>>> >>
>>> >> The fact that this is confusing is something we agree should be more
>>> >> clear and we will improve.  We're tackling it based on what is
>>> >> mentioned here [1].
>>> >>
>>> >> [1]
>>> >>
>>> >> https://cwiki.apache.org/confluence/display/NIFI/Interactive+Queue+Management
>>> >>
>>> >> Thanks
>>> >> Joe
>>> >>
>>> >> On Thu, Nov 19, 2015 at 10:30 PM, Corey Flowers
>>> >> <cflow...@onyxpoint.com>
>>> >> wrote:
>>> >> > These guys are right. The file to look in for the uuid is the
>>> >> > nifi-app.log.
>>> >> > Also if you wanted to see what the processor itself was doing, you
>>> >> > could
>>> >> > right click on the processor, get its uuid and while it is running,
>>> >> > run
>>> >> > (assuming it is on Linux):
>>> >> >
>>> >> > tail -F nifi-app.log | grep uuid
>>> >> >
>>> >> > This will just scroll the logs for that specific processor and will
>>> >> > show
>>> >> > you
>>> >> > what it is doing. It should also tell you specific file names and
>>> >> > uuids
>>> >> > of
>>> >> > the failing files.
>>> >> >
>>> >> > Hope that helps! Have a great night and good luck!
>>> >> >
>>> >> > Sent from my iPhone
>>> >> >
>>> >> > On Nov 19, 2015, at 9:27 PM, Juan Sequeiros <helloj...@gmail.com>
>>> >> > wrote:
>>> >> >
>>> >> > You can also check the NiFi logs for a searchable id or for what the
>>> >> > previous processor ID produced to help search provenance.
>>> >> >
>>> >> > On Nov 19, 2015 21:22, "Bryan Bende" <bbe...@gmail.com> wrote:
>>> >> >>
>>> >> >> Charlie,
>>> >> >>
>>> >> >> The behavior you described usually means that the processor
>>> >> >> encountered
>>> >> >> an
>>> >> >> unexpected error which was thrown back to the framework which rolls
>>> >> >> back the
>>> >> >> processing of that flow file and leaves it in the queue, as opposed
>>> >> >> to
>>> >> >> an
>>> >> >> error it expected where it would usually route to a failure
>>> >> >> relationship.
>>> >> >>
>>> >> >> Is the id that you see in the bulletin a uuid?
>>> >> >>
>>> >> >> There should still be some provenance events for this FlowFile from
>>> >> >> the
>>> >> >> previous points in the flow. If it looks like the uuid of the
>>> >> >> FlowFile,
>>> >> >> that
>>> >> >> should be searchable from provenance using the search button on the
>>> >> >> right.
>>> >> >> Let us know if we can help more.
>>> >> >>
>>> >> >> -Bryan
>>> >> >>
>>> >> >> On Thu, Nov 19, 2015 at 9:10 PM, Charlie Frasure
>>> >> >> <charliefras...@gmail.com> wrote:
>>> >> >>>
>>> >> >>> I have a question on troubleshooting a flow.  I've built a flow
>>> >> >>> with
>>> >> >>> no
>>> >> >>> exception routing, just trying to process the expected values
>>> >> >>> first.
>>> >> >>> When a
>>> >> >>> file exposes a problem with the logic in my flow, it queues up
>>> >> >>> prior
>>> >> >>> to the
>>> >> >>> flow that is raising the bulletin.
>>> >> >>>
>>> >> >>> In the bulletin, I can see an id, but can't tell which file it is.
>>> >> >>> Data
>>> >> >>> provenance doesn't seem to help as it passed the flow on the last
>>> >> >>> processor,
>>> >> >>> but hasn't been logged (to my knowledge) on the next one.
>>> >> >>>
>>> >> >>> Is there a way to match the bulletin back to a file without
>>> >> >>> creating a
>>> >> >>> route for failed files?
>>> >> >>
>>> >> >>
>>> >> >
>>> >
>>> >
>>
>>
>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><template><description>Uses the &quot;uchardet&quot; command to find the encoding of a file without reading it in twice.</description><name>GetFileEncodingInFlight</name><snippet><connections><id>0a170da3-b4e2-4634-bcd3-c30956c1b561</id><parentGroupId>06dede9b-01b0-4511-9529-3ce36bb4ac25</parentGroupId><backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold><backPressureObjectThreshold>0</backPressureObjectThreshold><destination><groupId>06dede9b-01b0-4511-9529-3ce36bb4ac25</groupId><id>9f7531c8-4c97-42f2-b680-3bcfd5d4a85e</id><type>PROCESSOR</type></destination><flowFileExpiration>0 sec</flowFileExpiration><labelIndex>1</labelIndex><name></name><selectedRelationships>original</selectedRelationships><source><groupId>06dede9b-01b0-4511-9529-3ce36bb4ac25</groupId><id>f5cfb3b8-a4ad-408c-a34d-5c4ab46d65f7</id><type>PROCESSOR</type></source><zIndex>0</zIndex></connections><connections><id>9ebfba0f-d963-4374-b96e-18dc26eea8ae</id><parentGroupId>06dede9b-01b0-4511-9529-3ce36bb4ac25</parentGroupId><backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold><backPressureObjectThreshold>0</backPressureObjectThreshold><destination><groupId>06dede9b-01b0-4511-9529-3ce36bb4ac25</groupId><id>f5cfb3b8-a4ad-408c-a34d-5c4ab46d65f7</id><type>PROCESSOR</type></destination><flowFileExpiration>0 sec</flowFileExpiration><labelIndex>1</labelIndex><name></name><selectedRelationships>success</selectedRelationships><source><groupId>06dede9b-01b0-4511-9529-3ce36bb4ac25</groupId><id>7f45c5a9-8445-438c-b89f-ac63d1957f2d</id><type>PROCESSOR</type></source><zIndex>0</zIndex></connections><processors><id>7f45c5a9-8445-438c-b89f-ac63d1957f2d</id><parentGroupId>06dede9b-01b0-4511-9529-3ce36bb4ac25</parentGroupId><position><x>-555.0</x><y>-142.0</y></position><config><bulletinLevel>WARN</bulletinLevel><comments></comments><concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount><defaultConcurrentTasks><entry><key>TIMER_DRIVEN</key><value>1</value></entry><entry><key>EVENT_DRIVEN</key><value>0</value></entry><entry><key>CRON_DRIVEN</key><value>1</value></entry></defaultConcurrentTasks><defaultSchedulingPeriod><entry><key>TIMER_DRIVEN</key><value>0 sec</value></entry><entry><key>CRON_DRIVEN</key><value>* * * * * ?</value></entry></defaultSchedulingPeriod><descriptors><entry><key>Input Directory</key><value><description>The input directory from which to pull files</description><displayName>Input Directory</displayName><dynamic>false</dynamic><name>Input Directory</name><required>true</required><sensitive>false</sensitive><supportsEl>true</supportsEl></value></entry><entry><key>File Filter</key><value><defaultValue>[^\.].*</defaultValue><description>Only files whose names match the given regular expression will be picked up</description><displayName>File Filter</displayName><dynamic>false</dynamic><name>File Filter</name><required>true</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Path Filter</key><value><description>When Recurse Subdirectories is true, then only subdirectories whose path matches the given regular expression will be scanned</description><displayName>Path Filter</displayName><dynamic>false</dynamic><name>Path Filter</name><required>false</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Batch Size</key><value><defaultValue>10</defaultValue><description>The maximum number of files to pull in each iteration</description><displayName>Batch Size</displayName><dynamic>false</dynamic><name>Batch Size</name><required>true</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Keep Source File</key><value><allowableValues><displayName>true</displayName><value>true</value></allowableValues><allowableValues><displayName>false</displayName><value>false</value></allowableValues><defaultValue>false</defaultValue><description>If true, the file is not deleted after it has been copied to the Content Repository; this causes the file to be picked up continually and is useful for testing purposes.  If not keeping original NiFi will need write permissions on the directory it is pulling from otherwise it will ignore the file.</description><displayName>Keep Source File</displayName><dynamic>false</dynamic><name>Keep Source File</name><required>true</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Recurse Subdirectories</key><value><allowableValues><displayName>true</displayName><value>true</value></allowableValues><allowableValues><displayName>false</displayName><value>false</value></allowableValues><defaultValue>true</defaultValue><description>Indicates whether or not to pull files from subdirectories</description><displayName>Recurse Subdirectories</displayName><dynamic>false</dynamic><name>Recurse Subdirectories</name><required>true</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Polling Interval</key><value><defaultValue>0 sec</defaultValue><description>Indicates how long to wait before performing a directory listing</description><displayName>Polling Interval</displayName><dynamic>false</dynamic><name>Polling Interval</name><required>true</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Ignore Hidden Files</key><value><allowableValues><displayName>true</displayName><value>true</value></allowableValues><allowableValues><displayName>false</displayName><value>false</value></allowableValues><defaultValue>true</defaultValue><description>Indicates whether or not hidden files should be ignored</description><displayName>Ignore Hidden Files</displayName><dynamic>false</dynamic><name>Ignore Hidden Files</name><required>true</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Minimum File Age</key><value><defaultValue>0 sec</defaultValue><description>The minimum age that a file must be in order to be pulled; any file younger than this amount of time (according to last modification date) will be ignored</description><displayName>Minimum File Age</displayName><dynamic>false</dynamic><name>Minimum File Age</name><required>true</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Maximum File Age</key><value><description>The maximum age that a file must be in order to be pulled; any file older than this amount of time (according to last modification date) will be ignored</description><displayName>Maximum File Age</displayName><dynamic>false</dynamic><name>Maximum File Age</name><required>false</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Minimum File Size</key><value><defaultValue>0 B</defaultValue><description>The minimum size that a file must be in order to be pulled</description><displayName>Minimum File Size</displayName><dynamic>false</dynamic><name>Minimum File Size</name><required>true</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Maximum File Size</key><value><description>The maximum size that a file can be in order to be pulled</description><displayName>Maximum File Size</displayName><dynamic>false</dynamic><name>Maximum File Size</name><required>false</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry></descriptors><lossTolerant>false</lossTolerant><penaltyDuration>30 sec</penaltyDuration><properties><entry><key>Input Directory</key><value>/Users/jpercivall/Downloads/PopularIndicators</value></entry><entry><key>File Filter</key></entry><entry><key>Path Filter</key></entry><entry><key>Batch Size</key></entry><entry><key>Keep Source File</key></entry><entry><key>Recurse Subdirectories</key></entry><entry><key>Polling Interval</key></entry><entry><key>Ignore Hidden Files</key></entry><entry><key>Minimum File Age</key></entry><entry><key>Maximum File Age</key></entry><entry><key>Minimum File Size</key></entry><entry><key>Maximum File Size</key></entry></properties><runDurationMillis>0</runDurationMillis><schedulingPeriod>0 sec</schedulingPeriod><schedulingStrategy>TIMER_DRIVEN</schedulingStrategy><yieldDuration>1 sec</yieldDuration></config><name>GetFile</name><relationships><autoTerminate>false</autoTerminate><description>All files are routed to success</description><name>success</name></relationships><state>STOPPED</state><style/><supportsEventDriven>false</supportsEventDriven><supportsParallelProcessing>true</supportsParallelProcessing><type>org.apache.nifi.processors.standard.GetFile</type></processors><processors><id>9f7531c8-4c97-42f2-b680-3bcfd5d4a85e</id><parentGroupId>06dede9b-01b0-4511-9529-3ce36bb4ac25</parentGroupId><position><x>-550.0</x><y>303.0</y></position><config><bulletinLevel>WARN</bulletinLevel><comments></comments><concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount><defaultConcurrentTasks><entry><key>TIMER_DRIVEN</key><value>1</value></entry><entry><key>EVENT_DRIVEN</key><value>0</value></entry><entry><key>CRON_DRIVEN</key><value>1</value></entry></defaultConcurrentTasks><defaultSchedulingPeriod><entry><key>TIMER_DRIVEN</key><value>0 sec</value></entry><entry><key>CRON_DRIVEN</key><value>* * * * * ?</value></entry></defaultSchedulingPeriod><descriptors><entry><key>Log Level</key><value><allowableValues><displayName>trace</displayName><value>trace</value></allowableValues><allowableValues><displayName>debug</displayName><value>debug</value></allowableValues><allowableValues><displayName>info</displayName><value>info</value></allowableValues><allowableValues><displayName>warn</displayName><value>warn</value></allowableValues><allowableValues><displayName>error</displayName><value>error</value></allowableValues><defaultValue>info</defaultValue><description>The Log Level to use when logging the Attributes</description><displayName>Log Level</displayName><dynamic>false</dynamic><name>Log Level</name><required>true</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Log Payload</key><value><allowableValues><displayName>true</displayName><value>true</value></allowableValues><allowableValues><displayName>false</displayName><value>false</value></allowableValues><defaultValue>false</defaultValue><description>If true, the FlowFile's payload will be logged, in addition to its attributes; otherwise, just the Attributes will be logged.</description><displayName>Log Payload</displayName><dynamic>false</dynamic><name>Log Payload</name><required>true</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Attributes to Log</key><value><description>A comma-separated list of Attributes to Log. If not specified, all attributes will be logged.</description><displayName>Attributes to Log</displayName><dynamic>false</dynamic><name>Attributes to Log</name><required>false</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Attributes to Ignore</key><value><description>A comma-separated list of Attributes to ignore. If not specified, no attributes will be ignored.</description><displayName>Attributes to Ignore</displayName><dynamic>false</dynamic><name>Attributes to Ignore</name><required>false</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Log prefix</key><value><description>Log prefix appended to the log lines. It helps to distinguish the output of multiple LogAttribute processors.</description><displayName>Log prefix</displayName><dynamic>false</dynamic><name>Log prefix</name><required>false</required><sensitive>false</sensitive><supportsEl>true</supportsEl></value></entry></descriptors><lossTolerant>false</lossTolerant><penaltyDuration>30 sec</penaltyDuration><properties><entry><key>Log Level</key></entry><entry><key>Log Payload</key></entry><entry><key>Attributes to Log</key></entry><entry><key>Attributes to Ignore</key></entry><entry><key>Log prefix</key></entry></properties><runDurationMillis>0</runDurationMillis><schedulingPeriod>0 sec</schedulingPeriod><schedulingStrategy>TIMER_DRIVEN</schedulingStrategy><yieldDuration>1 sec</yieldDuration></config><name>LogAttribute</name><relationships><autoTerminate>true</autoTerminate><description>All FlowFiles are routed to this relationship</description><name>success</name></relationships><state>STOPPED</state><style/><supportsEventDriven>true</supportsEventDriven><supportsParallelProcessing>true</supportsParallelProcessing><type>org.apache.nifi.processors.standard.LogAttribute</type></processors><processors><id>f5cfb3b8-a4ad-408c-a34d-5c4ab46d65f7</id><parentGroupId>06dede9b-01b0-4511-9529-3ce36bb4ac25</parentGroupId><position><x>-551.0</x><y>62.0</y></position><config><bulletinLevel>WARN</bulletinLevel><comments></comments><concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount><defaultConcurrentTasks><entry><key>TIMER_DRIVEN</key><value>1</value></entry><entry><key>EVENT_DRIVEN</key><value>0</value></entry><entry><key>CRON_DRIVEN</key><value>1</value></entry></defaultConcurrentTasks><defaultSchedulingPeriod><entry><key>TIMER_DRIVEN</key><value>0 sec</value></entry><entry><key>CRON_DRIVEN</key><value>* * * * * ?</value></entry></defaultSchedulingPeriod><descriptors><entry><key>Command Arguments</key><value><description>The arguments to supply to the executable delimited by the ';' character.</description><displayName>Command Arguments</displayName><dynamic>false</dynamic><name>Command Arguments</name><required>false</required><sensitive>false</sensitive><supportsEl>true</supportsEl></value></entry><entry><key>Command Path</key><value><description>Specifies the command to be executed; if just the name of an executable is provided, it must be in the user's environment PATH.</description><displayName>Command Path</displayName><dynamic>false</dynamic><name>Command Path</name><required>true</required><sensitive>false</sensitive><supportsEl>true</supportsEl></value></entry><entry><key>Ignore STDIN</key><value><allowableValues><displayName>true</displayName><value>true</value></allowableValues><allowableValues><displayName>false</displayName><value>false</value></allowableValues><defaultValue>false</defaultValue><description>If true, the contents of the incoming flowfile will not be passed to the executing command</description><displayName>Ignore STDIN</displayName><dynamic>false</dynamic><name>Ignore STDIN</name><required>false</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Working Directory</key><value><description>The directory to use as the current working directory when executing the command</description><displayName>Working Directory</displayName><dynamic>false</dynamic><name>Working Directory</name><required>false</required><sensitive>false</sensitive><supportsEl>true</supportsEl></value></entry><entry><key>Argument Delimiter</key><value><defaultValue>;</defaultValue><description>Delimiter to use to separate arguments for a command [default: ;]. Must be a single character</description><displayName>Argument Delimiter</displayName><dynamic>false</dynamic><name>Argument Delimiter</name><required>true</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Output Destination Attribute</key><value><description>If set, the output of the stream command will be put into an attribute of the original FlowFile instead of a separate FlowFile. There will no longer be a relationship for 'output stream'. The value of this property will be the key for the output attribute.</description><displayName>Output Destination Attribute</displayName><dynamic>false</dynamic><name>Output Destination Attribute</name><required>false</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry><entry><key>Max Attribute Length</key><value><defaultValue>256</defaultValue><description>If routing the output of the stream command to an attribute, the number of characters put to the attribute value will be at most this amount. This is important because attributes are held in memory and large attributes will quickly cause out of memory issues. If the output goes longer than this value, it will truncated to fit. Consider making this smaller if able.</description><displayName>Max Attribute Length</displayName><dynamic>false</dynamic><name>Max Attribute Length</name><required>false</required><sensitive>false</sensitive><supportsEl>false</supportsEl></value></entry></descriptors><lossTolerant>false</lossTolerant><penaltyDuration>30 sec</penaltyDuration><properties><entry><key>Command Arguments</key></entry><entry><key>Command Path</key><value>uchardet</value></entry><entry><key>Ignore STDIN</key><value>false</value></entry><entry><key>Working Directory</key><value>${absolute.path}</value></entry><entry><key>Argument Delimiter</key></entry><entry><key>Output Destination Attribute</key><value>encoding</value></entry><entry><key>Max Attribute Length</key></entry></properties><runDurationMillis>0</runDurationMillis><schedulingPeriod>0 sec</schedulingPeriod><schedulingStrategy>TIMER_DRIVEN</schedulingStrategy><yieldDuration>1 sec</yieldDuration></config><name>ExecuteStreamCommand</name><relationships><autoTerminate>false</autoTerminate><description>FlowFiles that were successfully processed</description><name>original</name></relationships><state>STOPPED</state><style/><supportsEventDriven>true</supportsEventDriven><supportsParallelProcessing>true</supportsParallelProcessing><type>org.apache.nifi.processors.standard.ExecuteStreamCommand</type></processors></snippet><timestamp>11/24/2015 10:56:49 EST</timestamp></template>

Reply via email to