#
# 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: invoke
      id: 2438e3c8-015a-1000-79ca-83af40ec1991
      class: org.apache.nifi.processors.standard.GetTCP
      max concurrent tasks: 1
      scheduling strategy: TIMER_DRIVEN
      scheduling period: 10 msec
      penalization period: 30 msec
      yield period: 10 msec
      run duration nanos: 0
      auto-terminated relationships list:
      Properties:
          SSL Context Service: SSLContextService
          endpoint-list: localhost:8776
          end-of-message-byte: d
          reconnect-interval: 5ms
          connection-attempt-timeout: 2000
    - 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: invoke
      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

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:
    
