<!--
  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.
-->
<?xml version="1.0" ?>
<template encoding-version="1.0">
  <description></description>
  <groupId>cfed8382-0158-1000-1395-192d30f8b560</groupId>
  <name>BidirectionSite2SiteExample</name>
  <snippet>
    <connections>
      <id>08757b0a-0159-1000-0000-000000000000</id>
      <parentGroupId>cfed8382-0158-1000-0000-000000000000</parentGroupId>
      <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
      <backPressureObjectThreshold>10000</backPressureObjectThreshold>
      <destination>
        <groupId>cfed8382-0158-1000-0000-000000000000</groupId>
        <id>08756e38-0159-1000-0000-000000000000</id>
        <type>PROCESSOR</type>
      </destination>
      <flowFileExpiration>0 sec</flowFileExpiration>
      <labelIndex>1</labelIndex>
      <name></name>
      <source>
        <groupId>cfed8382-0158-1000-0000-000000000000</groupId>
        <id>08755c4f-0159-1000-0000-000000000000</id>
        <type>INPUT_PORT</type>
      </source>
      <zIndex>0</zIndex>
    </connections>
    <connections>
      <id>4152969d-0159-1000-0000-000000000000</id>
      <parentGroupId>cfed8382-0158-1000-0000-000000000000</parentGroupId>
      <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
      <backPressureObjectThreshold>10000</backPressureObjectThreshold>
      <destination>
        <groupId>cfed8382-0158-1000-0000-000000000000</groupId>
        <id>37052b39-0159-1000-0000-000000000000</id>
        <type>OUTPUT_PORT</type>
      </destination>
      <flowFileExpiration>0 sec</flowFileExpiration>
      <labelIndex>1</labelIndex>
      <name></name>
      <source>
        <groupId>cfed8382-0158-1000-0000-000000000000</groupId>
        <id>08755c4f-0159-1000-0000-000000000000</id>
        <type>INPUT_PORT</type>
      </source>
      <zIndex>0</zIndex>
    </connections>
    <inputPorts>
      <id>08755c4f-0159-1000-0000-000000000000</id>
      <parentGroupId>cfed8382-0158-1000-0000-000000000000</parentGroupId>
      <position>
        <x>0.0</x>
        <y>6.696388244628906</y>
      </position>
      <comments></comments>
      <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
      <name>MiNiFiData</name>
      <state>RUNNING</state>
      <transmitting>false</transmitting>
      <type>INPUT_PORT</type>
    </inputPorts>
    <outputPorts>
      <id>37052b39-0159-1000-0000-000000000000</id>
      <parentGroupId>cfed8382-0158-1000-0000-000000000000</parentGroupId>
      <position>
        <x>478.088623046875</x>
        <y>0.0</y>
      </position>
      <comments></comments>
      <concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
      <name>ToMiNiFi</name>
      <state>RUNNING</state>
      <transmitting>false</transmitting>
      <type>OUTPUT_PORT</type>
    </outputPorts>
    <processors>
      <id>08756e38-0159-1000-0000-000000000000</id>
      <parentGroupId>cfed8382-0158-1000-0000-000000000000</parentGroupId>
      <position>
        <x>179.394287109375</x>
        <y>151.79802703857422</y>
      </position>
      <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 Ignore</key>
            <value>
              <name>Attributes to Ignore</name>
            </value>
          </entry>
          <entry>
            <key>Log prefix</key>
            <value>
              <name>Log prefix</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 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>Log Incoming Data</name>
      <relationships>
        <autoTerminate>true</autoTerminate>
        <name>success</name>
      </relationships>
      <style></style>
      <type>org.apache.nifi.processors.standard.LogAttribute</type>
    </processors>
  </snippet>
  <timestamp>12/27/2016 17:29:28 UTC</timestamp>
</template>