<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at
   http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<flowController>
  <maxTimerDrivenThreadCount>10</maxTimerDrivenThreadCount>
  <maxEventDrivenThreadCount>5</maxEventDrivenThreadCount>
  <rootGroup>
    <id>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</id>
    <name>NiFi Flow</name>
    <position x="0.0" y="0.0"/>
    <comment/>
    <processor>
      <id>cd274fef-168a-486b-b21a-04ed17f981b7</id>
      <name>LogAttribute</name>
      <position x="2823.8107761867964" y="623.2524160253959"/>
      <styles/>
      <comment/>
      <class>org.apache.nifi.processors.standard.LogAttribute</class>
      <maxConcurrentTasks>1</maxConcurrentTasks>
      <schedulingPeriod>0 sec</schedulingPeriod>
      <penalizationPeriod>30 sec</penalizationPeriod>
      <yieldPeriod>1 sec</yieldPeriod>
      <bulletinLevel>WARN</bulletinLevel>
      <lossTolerant>false</lossTolerant>
      <scheduledState>RUNNING</scheduledState>
      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
      <runDurationNanos>0</runDurationNanos>
      <property>
        <name>Log Level</name>
        <value>info</value>
      </property>
      <property>
        <name>Log Payload</name>
        <value>true</value>
      </property>
      <property>
        <name>Attributes to Log</name>
      </property>
      <property>
        <name>Attributes to Ignore</name>
      </property>
      <property>
        <name>Log prefix</name>
      </property>
      <autoTerminatedRelationship>success</autoTerminatedRelationship>
    </processor>
    <processor>
      <id>4fa35a7d-d1f0-44e4-87d7-7d69f0b78b7b</id>
      <name>GenerateFlowFile</name>
      <position x="2248.4411151522036" y="917.8589272756209"/>
      <styles/>
      <comment/>
      <class>org.apache.nifi.processors.standard.GenerateFlowFile</class>
      <maxConcurrentTasks>1</maxConcurrentTasks>
      <schedulingPeriod>1 sec</schedulingPeriod>
      <penalizationPeriod>30 sec</penalizationPeriod>
      <yieldPeriod>1 sec</yieldPeriod>
      <bulletinLevel>WARN</bulletinLevel>
      <lossTolerant>false</lossTolerant>
      <scheduledState>RUNNING</scheduledState>
      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
      <runDurationNanos>0</runDurationNanos>
      <property>
        <name>File Size</name>
        <value>1024 kB</value>
      </property>
      <property>
        <name>Batch Size</name>
        <value>1</value>
      </property>
      <property>
        <name>Data Format</name>
        <value>Text</value>
      </property>
      <property>
        <name>Unique FlowFiles</name>
        <value>false</value>
      </property>
    </processor>
    <inputPort>
      <id>471deef6-2a6e-4a7d-912a-81cc17e3a204</id>
      <name> From Node A</name>
      <position x="2305.369919163486" y="646.0466623031645"/>
      <comments/>
      <scheduledState>RUNNING</scheduledState>
      <maxConcurrentTasks>1</maxConcurrentTasks>
    </inputPort>
    <outputPort>
      <id>75f88005-0a87-4fef-8320-6219cdbcf18b</id>
      <name>To A</name>
      <position x="2915.739181824911" y="1057.8803860295386"/>
      <comments/>
      <scheduledState>RUNNING</scheduledState>
      <maxConcurrentTasks>1</maxConcurrentTasks>
    </outputPort>
    <label>
      <id>2f0db43e-1ce0-49ab-96a5-459c285aff09</id>
      <position x="2197.3693058093504" y="849.4395700448451"/>
      <size height="286.5726013183594" width="1012.2957763671875"/>
      <styles>
        <style name="font-size">18px</style>
      </styles>
      <value>Generate Data that is pushed to Node A and made available to be pulled</value>
    </label>
    <connection>
      <id>7f869898-3a93-4e28-a60c-064789870574</id>
      <name/>
      <bendPoints/>
      <labelIndex>1</labelIndex>
      <zIndex>0</zIndex>
      <sourceId>471deef6-2a6e-4a7d-912a-81cc17e3a204</sourceId>
      <sourceGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</sourceGroupId>
      <sourceType>INPUT_PORT</sourceType>
      <destinationId>cd274fef-168a-486b-b21a-04ed17f981b7</destinationId>
      <destinationGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</destinationGroupId>
      <destinationType>PROCESSOR</destinationType>
      <relationship/>
      <maxWorkQueueSize>0</maxWorkQueueSize>
      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
      <flowFileExpiration>0 sec</flowFileExpiration>
    </connection>
    <connection>
      <id>9dbc73f6-c827-4258-8bc7-06eb6a9b79d5</id>
      <name/>
      <bendPoints/>
      <labelIndex>1</labelIndex>
      <zIndex>0</zIndex>
      <sourceId>4fa35a7d-d1f0-44e4-87d7-7d69f0b78b7b</sourceId>
      <sourceGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</sourceGroupId>
      <sourceType>PROCESSOR</sourceType>
      <destinationId>75f88005-0a87-4fef-8320-6219cdbcf18b</destinationId>
      <destinationGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</destinationGroupId>
      <destinationType>OUTPUT_PORT</destinationType>
      <relationship>success</relationship>
      <maxWorkQueueSize>0</maxWorkQueueSize>
      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
      <flowFileExpiration>0 sec</flowFileExpiration>
    </connection>
  </rootGroup>
  <controllerServices/>
  <reportingTasks/>
</flowController>
