#
# 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.
#
Flow Controller:
    name: MiNiFi Flow
    id: 2438e3c8-015a-1000-79ca-83af40ec1990
Processors:
    - name: InvokeHTTP
      id: 2438e3c8-015a-1000-79ca-83af40ec1991
      class: org.apache.nifi.processors.standard.InvokeHTTP
      max concurrent tasks: 1
      scheduling strategy: TIMER_DRIVEN
      scheduling period: 1 sec
      penalization period: 30 sec
      yield period: 1 sec
      run duration nanos: 0
      auto-terminated relationships list:
          - failure
          - no retry
          - response
      Properties:
          SSL Context Service: SSLContextService
          HTTP Method: GET
          Remote URL: https://localhost:10004/geturl
    - name: LogAttribute
      id: 2438e3c8-015a-1000-79ca-83af40ec1992
      class: org.apache.nifi.processors.standard.LogAttribute
      max concurrent tasks: 1
      scheduling strategy: TIMER_DRIVEN
      scheduling period: 1 sec
      penalization period: 30 sec
      yield period: 1 sec
      run duration nanos: 0
      auto-terminated relationships list:
        - response
      Properties:
        Log Level: info
        Log Payload: true

Connections:
    - name: TransferFilesToRPG
      id: 2438e3c8-015a-1000-79ca-83af40ec1997
      source name: InvokeHTTP
      source id: 2438e3c8-015a-1000-79ca-83af40ec1991
      source relationship name: success
      destination name: LogAttribute
      destination id: 2438e3c8-015a-1000-79ca-83af40ec1992
      max work queue size: 0
      max work queue data size: 1 MB
      flowfile expiration: 60 sec
    - name: TransferFilesToRPG2
      id: 2438e3c8-015a-1000-79ca-83af40ec1917
      source name: LogAttribute
      source id: 2438e3c8-015a-1000-79ca-83af40ec1992
      destination name: LogAttribute
      destination id: 2438e3c8-015a-1000-79ca-83af40ec1992
      source relationship name: success
      max work queue size: 0
      max work queue data size: 1 MB
      flowfile expiration: 60 sec
    - name: RetryInvokeHTTP
      id: c8a96f1d-48cd-4ee3-8a2f-081c3e3c7bcd
      source name: InvokeHTTP
      source id: 2438e3c8-015a-1000-79ca-83af40ec1991
      source relationship names: retry
      destination name: InvokeHTTP
      destination id: 2438e3c8-015a-1000-79ca-83af40ec1991
      max work queue size: 0
      max work queue data size: 1 MB
      flowfile expiration: 60 seconds

Controller Services:
    - name: SSLContextService
      id: 2438e3c8-015a-1000-79ca-83af40ec1994
      class: SSLContextService
      Properties:
        Client Certificate:
            - value: cn.crt.pem
        Private Key:
            - value: cn.ckey.pem
        Passphrase:
            - value: cn.pass
        CA Certificate:
            - value: nifi-cert.pem

Remote Processing Groups:

