Skip to content

Instantly share code, notes, and snippets.

@anarchivist
Created April 28, 2016 21:39
Show Gist options
  • Select an option

  • Save anarchivist/37e06476f87cecdabea5fa9fd3aebaa3 to your computer and use it in GitHub Desktop.

Select an option

Save anarchivist/37e06476f87cecdabea5fa9fd3aebaa3 to your computer and use it in GitHub Desktop.
Apache NiFi OAI-PMH harvester (work in progress)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<template>
<description/>
<name>OAI-PMH</name>
<snippet>
<connections>
<id>a17830ba-5cff-466a-85cb-f6ef8d2570e2</id>
<parentGroupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</parentGroupId>
<backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>0</backPressureObjectThreshold>
<destination>
<groupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</groupId>
<id>81ce52f7-618b-4802-aab2-424bec82c1c9</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name/>
<selectedRelationships>matched</selectedRelationships>
<source>
<groupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</groupId>
<id>c293aa03-a839-448a-8ca6-e491ff684f44</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>faa7f794-5778-4e29-964d-86765a18e4f4</id>
<parentGroupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</parentGroupId>
<backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>0</backPressureObjectThreshold>
<destination>
<groupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</groupId>
<id>ec8bcaec-28b2-4923-85cd-dfbd2e28019c</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name/>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</groupId>
<id>5fded9d5-098e-4bb8-bd0e-03de394bca09</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>3b0b730f-9641-4677-943f-16105e7cba49</id>
<parentGroupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</parentGroupId>
<backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>0</backPressureObjectThreshold>
<destination>
<groupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</groupId>
<id>7915b6c0-ccc2-40b2-a154-c4e54a28bf96</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name/>
<selectedRelationships>failure</selectedRelationships>
<selectedRelationships>unmatched</selectedRelationships>
<source>
<groupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</groupId>
<id>c293aa03-a839-448a-8ca6-e491ff684f44</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>9ac2975f-4d4b-4770-8c62-5b940750e9fa</id>
<parentGroupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</parentGroupId>
<backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>0</backPressureObjectThreshold>
<destination>
<groupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</groupId>
<id>c293aa03-a839-448a-8ca6-e491ff684f44</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name/>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</groupId>
<id>aa8eec14-63d5-4afd-9aab-50f6dabaabb2</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>f8e828f7-f006-48cc-9735-d1d8881e3619</id>
<parentGroupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</parentGroupId>
<backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>0</backPressureObjectThreshold>
<destination>
<groupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</groupId>
<id>7915b6c0-ccc2-40b2-a154-c4e54a28bf96</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name/>
<selectedRelationships>matched</selectedRelationships>
<selectedRelationships>unmatched</selectedRelationships>
<source>
<groupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</groupId>
<id>ec8bcaec-28b2-4923-85cd-dfbd2e28019c</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>07d3511a-37fb-4518-b900-364a76e670fd</id>
<parentGroupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</parentGroupId>
<backPressureDataSizeThreshold>0 MB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>0</backPressureObjectThreshold>
<destination>
<groupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</groupId>
<id>5fded9d5-098e-4bb8-bd0e-03de394bca09</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name/>
<selectedRelationships>split</selectedRelationships>
<source>
<groupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</groupId>
<id>81ce52f7-618b-4802-aab2-424bec82c1c9</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<processors>
<id>aa8eec14-63d5-4afd-9aab-50f6dabaabb2</id>
<parentGroupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</parentGroupId>
<position>
<x>-65.0</x>
<y>-44.0</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<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>URL</key>
<value>
<description>The URL to pull from</description>
<displayName>URL</displayName>
<dynamic>false</dynamic>
<name>URL</name>
<required>true</required>
<sensitive>false</sensitive>
<supportsEl>true</supportsEl>
</value>
</entry>
<entry>
<key>Filename</key>
<value>
<description>The filename to assign to the file when pulled</description>
<displayName>Filename</displayName>
<dynamic>false</dynamic>
<name>Filename</name>
<required>true</required>
<sensitive>false</sensitive>
<supportsEl>true</supportsEl>
</value>
</entry>
<entry>
<key>SSL Context Service</key>
<value>
<description>The Controller Service to use in order to obtain an SSL Context</description>
<displayName>SSL Context Service</displayName>
<dynamic>false</dynamic>
<identifiesControllerService>org.apache.nifi.ssl.SSLContextService</identifiesControllerService>
<name>SSL Context Service</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>Username</key>
<value>
<description>Username required to access the URL</description>
<displayName>Username</displayName>
<dynamic>false</dynamic>
<name>Username</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>Password</key>
<value>
<description>Password required to access the URL</description>
<displayName>Password</displayName>
<dynamic>false</dynamic>
<name>Password</name>
<required>false</required>
<sensitive>true</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>Connection Timeout</key>
<value>
<defaultValue>30 sec</defaultValue>
<description>How long to wait when attempting to connect to the remote server before giving up</description>
<displayName>Connection Timeout</displayName>
<dynamic>false</dynamic>
<name>Connection Timeout</name>
<required>true</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>Data Timeout</key>
<value>
<defaultValue>30 sec</defaultValue>
<description>How long to wait between receiving segments of data from the remote server before giving up and discarding the partial file</description>
<displayName>Data Timeout</displayName>
<dynamic>false</dynamic>
<name>Data Timeout</name>
<required>true</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>User Agent</key>
<value>
<description>What to report as the User Agent when we connect to the remote server</description>
<displayName>User Agent</displayName>
<dynamic>false</dynamic>
<name>User Agent</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>Accept Content-Type</key>
<value>
<description>If specified, requests will only accept the provided Content-Type</description>
<displayName>Accept Content-Type</displayName>
<dynamic>false</dynamic>
<name>Accept Content-Type</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>Follow Redirects</key>
<value>
<allowableValues>
<displayName>true</displayName>
<value>true</value>
</allowableValues>
<allowableValues>
<displayName>false</displayName>
<value>false</value>
</allowableValues>
<defaultValue>false</defaultValue>
<description>If we receive a 3xx HTTP Status Code from the server, indicates whether or not we should follow the redirect that the server specifies</description>
<displayName>Follow Redirects</displayName>
<dynamic>false</dynamic>
<name>Follow Redirects</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>Proxy Host</key>
<value>
<description>The fully qualified hostname or IP address of the proxy server</description>
<displayName>Proxy Host</displayName>
<dynamic>false</dynamic>
<name>Proxy Host</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>Proxy Port</key>
<value>
<description>The port of the proxy server</description>
<displayName>Proxy Port</displayName>
<dynamic>false</dynamic>
<name>Proxy Port</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
</descriptors>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>URL</key>
<value>http://dpla.library.in.gov/OAIHandler?verb=ListRecords&amp;metadataPrefix=oai_qdc_imdpla</value>
</entry>
<entry>
<key>Filename</key>
<value>oaiResponse</value>
</entry>
<entry>
<key>SSL Context Service</key>
</entry>
<entry>
<key>Username</key>
</entry>
<entry>
<key>Password</key>
</entry>
<entry>
<key>Connection Timeout</key>
</entry>
<entry>
<key>Data Timeout</key>
</entry>
<entry>
<key>User Agent</key>
</entry>
<entry>
<key>Accept Content-Type</key>
</entry>
<entry>
<key>Follow Redirects</key>
</entry>
<entry>
<key>Proxy Host</key>
</entry>
<entry>
<key>Proxy Port</key>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>10 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>GetHTTP</name>
<relationships>
<autoTerminate>false</autoTerminate>
<description>All files are transferred to the success relationship</description>
<name>success</name>
</relationships>
<state>STOPPED</state>
<style/>
<supportsEventDriven>false</supportsEventDriven>
<supportsParallelProcessing>true</supportsParallelProcessing>
<type>org.apache.nifi.processors.standard.GetHTTP</type>
</processors>
<processors>
<id>7915b6c0-ccc2-40b2-a154-c4e54a28bf96</id>
<parentGroupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</parentGroupId>
<position>
<x>559.1438598632812</x>
<y>536.7674407958984</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<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>Directory</key>
<value>
<description>The directory to which files should be written. You may use expression language such as /aa/bb/${path}</description>
<displayName>Directory</displayName>
<dynamic>false</dynamic>
<name>Directory</name>
<required>true</required>
<sensitive>false</sensitive>
<supportsEl>true</supportsEl>
</value>
</entry>
<entry>
<key>Conflict Resolution Strategy</key>
<value>
<allowableValues>
<displayName>replace</displayName>
<value>replace</value>
</allowableValues>
<allowableValues>
<displayName>ignore</displayName>
<value>ignore</value>
</allowableValues>
<allowableValues>
<displayName>fail</displayName>
<value>fail</value>
</allowableValues>
<defaultValue>fail</defaultValue>
<description>Indicates what should happen when a file with the same name already exists in the output directory</description>
<displayName>Conflict Resolution Strategy</displayName>
<dynamic>false</dynamic>
<name>Conflict Resolution Strategy</name>
<required>true</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>Create Missing Directories</key>
<value>
<allowableValues>
<displayName>true</displayName>
<value>true</value>
</allowableValues>
<allowableValues>
<displayName>false</displayName>
<value>false</value>
</allowableValues>
<defaultValue>true</defaultValue>
<description>If true, then missing destination directories will be created. If false, flowfiles are penalized and sent to failure.</description>
<displayName>Create Missing Directories</displayName>
<dynamic>false</dynamic>
<name>Create Missing Directories</name>
<required>true</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>Maximum File Count</key>
<value>
<description>Specifies the maximum number of files that can exist in the output directory</description>
<displayName>Maximum File Count</displayName>
<dynamic>false</dynamic>
<name>Maximum File Count</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>Last Modified Time</key>
<value>
<description>Sets the lastModifiedTime on the output file to the value of this attribute. Format must be yyyy-MM-dd'T'HH:mm:ssZ. You may also use expression language such as ${file.lastModifiedTime}.</description>
<displayName>Last Modified Time</displayName>
<dynamic>false</dynamic>
<name>Last Modified Time</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>true</supportsEl>
</value>
</entry>
<entry>
<key>Permissions</key>
<value>
<description>Sets the permissions on the output file to the value of this attribute. Format must be either UNIX rwxrwxrwx with a - in place of denied permissions (e.g. rw-r--r--) or an octal number (e.g. 644). You may also use expression language such as ${file.permissions}.</description>
<displayName>Permissions</displayName>
<dynamic>false</dynamic>
<name>Permissions</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>true</supportsEl>
</value>
</entry>
<entry>
<key>Owner</key>
<value>
<description>Sets the owner on the output file to the value of this attribute. You may also use expression language such as ${file.owner}.</description>
<displayName>Owner</displayName>
<dynamic>false</dynamic>
<name>Owner</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>true</supportsEl>
</value>
</entry>
<entry>
<key>Group</key>
<value>
<description>Sets the group on the output file to the value of this attribute. You may also use expression language such as ${file.group}.</description>
<displayName>Group</displayName>
<dynamic>false</dynamic>
<name>Group</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>true</supportsEl>
</value>
</entry>
</descriptors>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Directory</key>
<value>/tmp/foo</value>
</entry>
<entry>
<key>Conflict Resolution Strategy</key>
</entry>
<entry>
<key>Create Missing Directories</key>
</entry>
<entry>
<key>Maximum File Count</key>
</entry>
<entry>
<key>Last Modified Time</key>
</entry>
<entry>
<key>Permissions</key>
</entry>
<entry>
<key>Owner</key>
</entry>
<entry>
<key>Group</key>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>PutFile</name>
<relationships>
<autoTerminate>true</autoTerminate>
<description>Files that could not be written to the output directory for some reason are transferred to this relationship</description>
<name>failure</name>
</relationships>
<relationships>
<autoTerminate>true</autoTerminate>
<description>Files that have been successfully written to the output directory are transferred to this relationship</description>
<name>success</name>
</relationships>
<state>STOPPED</state>
<style/>
<supportsEventDriven>false</supportsEventDriven>
<supportsParallelProcessing>true</supportsParallelProcessing>
<type>org.apache.nifi.processors.standard.PutFile</type>
</processors>
<processors>
<id>ec8bcaec-28b2-4923-85cd-dfbd2e28019c</id>
<parentGroupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</parentGroupId>
<position>
<x>-427.85787509913155</x>
<y>466.11830366665095</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<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>Destination</key>
<value>
<allowableValues>
<displayName>flowfile-content</displayName>
<value>flowfile-content</value>
</allowableValues>
<allowableValues>
<displayName>flowfile-attribute</displayName>
<value>flowfile-attribute</value>
</allowableValues>
<defaultValue>flowfile-content</defaultValue>
<description>Indicates whether the results of the XPath evaluation are written to the FlowFile content or a FlowFile attribute; if using attribute, must specify the Attribute Name property. If set to flowfile-content, only one XPath may be specified, and the property name is ignored.</description>
<displayName>Destination</displayName>
<dynamic>false</dynamic>
<name>Destination</name>
<required>true</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>Return Type</key>
<value>
<allowableValues>
<displayName>auto-detect</displayName>
<value>auto-detect</value>
</allowableValues>
<allowableValues>
<displayName>nodeset</displayName>
<value>nodeset</value>
</allowableValues>
<allowableValues>
<displayName>string</displayName>
<value>string</value>
</allowableValues>
<defaultValue>auto-detect</defaultValue>
<description>Indicates the desired return type of the Xpath expressions. Selecting 'auto-detect' will set the return type to 'nodeset' for a Destination of 'flowfile-content', and 'string' for a Destination of 'flowfile-attribute'.</description>
<displayName>Return Type</displayName>
<dynamic>false</dynamic>
<name>Return Type</name>
<required>true</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>header</key>
<value>
<description/>
<displayName>header</displayName>
<dynamic>true</dynamic>
<name>header</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>id</key>
<value>
<description/>
<displayName>id</displayName>
<dynamic>true</dynamic>
<name>id</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>metadata</key>
<value>
<description/>
<displayName>metadata</displayName>
<dynamic>true</dynamic>
<name>metadata</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>slashmetadata</key>
<value>
<description/>
<displayName>slashmetadata</displayName>
<dynamic>true</dynamic>
<name>slashmetadata</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
</descriptors>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Destination</key>
<value>flowfile-attribute</value>
</entry>
<entry>
<key>Return Type</key>
<value>auto-detect</value>
</entry>
<entry>
<key>header</key>
<value>record/header</value>
</entry>
<entry>
<key>id</key>
<value>/record/header/identifier</value>
</entry>
<entry>
<key>metadata</key>
<value>record/metadata</value>
</entry>
<entry>
<key>slashmetadata</key>
<value>/record/metadata</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>EvaluateXPath</name>
<relationships>
<autoTerminate>true</autoTerminate>
<description>FlowFiles are routed to this relationship when the XPath cannot be evaluated against the content of the FlowFile; for instance, if the FlowFile is not valid XML, or if the Return Type is 'nodeset' and the XPath evaluates to multiple nodes</description>
<name>failure</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<description>FlowFiles are routed to this relationship when the XPath is successfully evaluated and the FlowFile is modified as a result</description>
<name>matched</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<description>FlowFiles are routed to this relationship when the XPath does not match the content of the FlowFile and the Destination is set to flowfile-content</description>
<name>unmatched</name>
</relationships>
<state>STOPPED</state>
<style/>
<supportsEventDriven>true</supportsEventDriven>
<supportsParallelProcessing>true</supportsParallelProcessing>
<type>org.apache.nifi.processors.standard.EvaluateXPath</type>
</processors>
<processors>
<id>c293aa03-a839-448a-8ca6-e491ff684f44</id>
<parentGroupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</parentGroupId>
<position>
<x>552.2781982421875</x>
<y>-48.651856422424316</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<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>Destination</key>
<value>
<allowableValues>
<displayName>flowfile-content</displayName>
<value>flowfile-content</value>
</allowableValues>
<allowableValues>
<displayName>flowfile-attribute</displayName>
<value>flowfile-attribute</value>
</allowableValues>
<defaultValue>flowfile-content</defaultValue>
<description>Indicates whether the results of the XPath evaluation are written to the FlowFile content or a FlowFile attribute; if using attribute, must specify the Attribute Name property. If set to flowfile-content, only one XPath may be specified, and the property name is ignored.</description>
<displayName>Destination</displayName>
<dynamic>false</dynamic>
<name>Destination</name>
<required>true</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>Return Type</key>
<value>
<allowableValues>
<displayName>auto-detect</displayName>
<value>auto-detect</value>
</allowableValues>
<allowableValues>
<displayName>nodeset</displayName>
<value>nodeset</value>
</allowableValues>
<allowableValues>
<displayName>string</displayName>
<value>string</value>
</allowableValues>
<defaultValue>auto-detect</defaultValue>
<description>Indicates the desired return type of the Xpath expressions. Selecting 'auto-detect' will set the return type to 'nodeset' for a Destination of 'flowfile-content', and 'string' for a Destination of 'flowfile-attribute'.</description>
<displayName>Return Type</displayName>
<dynamic>false</dynamic>
<name>Return Type</name>
<required>true</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
<entry>
<key>oaiResponse</key>
<value>
<description/>
<displayName>oaiResponse</displayName>
<dynamic>true</dynamic>
<name>oaiResponse</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
</descriptors>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Destination</key>
<value>flowfile-attribute</value>
</entry>
<entry>
<key>Return Type</key>
<value>auto-detect</value>
</entry>
<entry>
<key>oaiResponse</key>
<value>/OAI-PMH/ListRecords</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>EvaluateXPath</name>
<relationships>
<autoTerminate>false</autoTerminate>
<description>FlowFiles are routed to this relationship when the XPath cannot be evaluated against the content of the FlowFile; for instance, if the FlowFile is not valid XML, or if the Return Type is 'nodeset' and the XPath evaluates to multiple nodes</description>
<name>failure</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<description>FlowFiles are routed to this relationship when the XPath is successfully evaluated and the FlowFile is modified as a result</description>
<name>matched</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<description>FlowFiles are routed to this relationship when the XPath does not match the content of the FlowFile and the Destination is set to flowfile-content</description>
<name>unmatched</name>
</relationships>
<state>STOPPED</state>
<style/>
<supportsEventDriven>true</supportsEventDriven>
<supportsParallelProcessing>true</supportsParallelProcessing>
<type>org.apache.nifi.processors.standard.EvaluateXPath</type>
</processors>
<processors>
<id>5fded9d5-098e-4bb8-bd0e-03de394bca09</id>
<parentGroupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</parentGroupId>
<position>
<x>-422.0982723419329</x>
<y>185.39533544409733</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<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>Delete Attributes Expression</key>
<value>
<description>Regular expression for attributes to be deleted from flowfiles.</description>
<displayName>Delete Attributes Expression</displayName>
<dynamic>false</dynamic>
<name>Delete Attributes Expression</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>true</supportsEl>
</value>
</entry>
<entry>
<key>body</key>
<value>
<description/>
<displayName>body</displayName>
<dynamic>true</dynamic>
<name>body</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>true</supportsEl>
</value>
</entry>
<entry>
<key>filename</key>
<value>
<description/>
<displayName>filename</displayName>
<dynamic>true</dynamic>
<name>filename</name>
<required>false</required>
<sensitive>false</sensitive>
<supportsEl>true</supportsEl>
</value>
</entry>
</descriptors>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Delete Attributes Expression</key>
</entry>
<entry>
<key>body</key>
<value>${content}</value>
</entry>
<entry>
<key>filename</key>
<value>${uuid}</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>UpdateAttribute</name>
<relationships>
<autoTerminate>false</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.attributes.UpdateAttribute</type>
</processors>
<processors>
<id>81ce52f7-618b-4802-aab2-424bec82c1c9</id>
<parentGroupId>39307b88-cf92-400b-8d28-ca855e4bbf3f</parentGroupId>
<position>
<x>217.5176760876189</x>
<y>189.20572875263292</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<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>Split Depth</key>
<value>
<defaultValue>1</defaultValue>
<description>Indicates the XML-nesting depth to start splitting XML fragments. A depth of 1 means split the root's children, whereas a depth of 2 means split the root's children's children and so forth.</description>
<displayName>Split Depth</displayName>
<dynamic>false</dynamic>
<name>Split Depth</name>
<required>true</required>
<sensitive>false</sensitive>
<supportsEl>false</supportsEl>
</value>
</entry>
</descriptors>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Split Depth</key>
<value>2</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>SplitXml</name>
<relationships>
<autoTerminate>true</autoTerminate>
<description>If a FlowFile fails processing for any reason (for example, the FlowFile is not valid XML), it will be routed to this relationship</description>
<name>failure</name>
</relationships>
<relationships>
<autoTerminate>true</autoTerminate>
<description>The original FlowFile that was split into segments. If the FlowFile fails processing, nothing will be sent to this relationship</description>
<name>original</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<description>All segments of the original FlowFile will be routed to this relationship</description>
<name>split</name>
</relationships>
<state>STOPPED</state>
<style/>
<supportsEventDriven>true</supportsEventDriven>
<supportsParallelProcessing>true</supportsParallelProcessing>
<type>org.apache.nifi.processors.standard.SplitXml</type>
</processors>
</snippet>
<timestamp>04/28/2016 17:38:19 EDT</timestamp>
</template>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment