<!DOCTYPE html>
<html lang="en">
    <!--
      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.
    -->
    <head>
        <meta charset="utf-8"/>
        <title>DebugFlow</title>
        <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
    </head>

    <body>
        <!-- Processor Documentation ================================================== -->
        <p>
            When triggered, the processor loops through the appropriate response list (based on whether or not it
            received a FlowFile).  A response is produced the configured number of times for each pass through its
            response list, as long as the processor is running.
        </p><p>
            Triggered by a FlowFile, the processor can produce the following responses.
            <ol>
                <li>transfer FlowFile to success relationship.</li>
                <li>transfer FlowFile to failure relationship.</li>
                <li>rollback the FlowFile without penalty.</li>
                <li>rollback the FlowFile and yield the context.</li>
                <li>rollback the FlowFile with penalty.</li>
                <li>throw an exception.</li>
            </ol>
        </p><p>
            Triggered without a FlowFile, the processor can produce the following responses.
            <ol>
                <li>do nothing and return.</li>
                <li>throw an exception.</li>
                <li>yield the context.</li>
            </ol>
        </p>
    </body>
</html>
