# 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.

MiNiFi Config Version: 3
Flow Controller:
  name: CsvToJsonWorking
  comment: ''
Core Properties:
  flow controller graceful shutdown period: 10 sec
  flow service write delay interval: 500 ms
  administrative yield duration: 30 sec
  bored yield duration: 10 millis
  max concurrent threads: 1
  variable registry properties: ''
FlowFile Repository:
  partitions: 256
  checkpoint interval: 2 mins
  always sync: false
  Swap:
    threshold: 20000
    in period: 5 sec
    in threads: 1
    out period: 5 sec
    out threads: 4
Content Repository:
  implementation: org.apache.nifi.controller.repository.FileSystemRepository
  content claim max appendable size: 10 MB
  content claim max flow files: 100
  always sync: false
  content repository archive max retention period: 12 hours
  content repository archive max usage percentage: 50%
  content repository archive enabled: false
Provenance Repository:
  provenance rollover time: 1 min
  implementation: org.apache.nifi.provenance.MiNiFiPersistentProvenanceRepository
  provenance max storage time: 24 hours
  provenance max storage size: 1 GB
  provenance index shard size: 500 MB
  provenance buffer size: 10000
Component Status Repository:
  buffer size: 1440
  snapshot frequency: 1 min
Security Properties:
  keystore: ''
  keystore type: ''
  keystore password: ''
  key password: ''
  truststore: ''
  truststore type: ''
  truststore password: ''
  ssl protocol: ''
  Sensitive Props:
    key:
    algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
    provider: BC
Processors:
- name: ExtractText
  id: 5f0ec33c-0a07-4305-a3a9-9a3ba0548ac6
  class: org.apache.nifi.processors.standard.ExtractText
  max concurrent tasks: 1
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 0 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 0
  auto-terminated relationships list:
  - unmatched
  Properties:
    Character Set: UTF-8
    Enable Canonical Equivalence: 'false'
    Enable Case-insensitive Matching: 'false'
    Enable DOTALL Mode: 'false'
    Enable Literal Parsing of the Pattern: 'false'
    Enable Multiline Mode: 'false'
    Enable Unicode Predefined Character Classes: 'false'
    Enable Unicode-aware Case Folding: 'false'
    Enable Unix Lines Mode: 'false'
    Include Capture Group 0: 'false'
    Maximum Buffer Size: 1 MB
    Maximum Capture Group Length: '1024'
    Permit Whitespace and Comments in Pattern: 'false'
    csv: (.+),(.+),(.+),(.+)
- name: GenerateFlowFile
  id: ffb6d4e9-9d6c-4fbe-ab8a-52bad90ce2e5
  class: org.apache.nifi.processors.standard.GenerateFlowFile
  max concurrent tasks: 1
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 10 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 0
  auto-terminated relationships list: []
  Properties:
    Batch Size: '1'
    Data Format: Binary
    File Size: 1 b
    Unique FlowFiles: 'false'
- name: ReplaceText
  id: cdcc2028-238b-42b7-bf95-dd4f301b91fc
  class: org.apache.nifi.processors.standard.ReplaceText
  max concurrent tasks: 1
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 0 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 0
  auto-terminated relationships list:
  - failure
  Properties:
    Character Set: UTF-8
    Evaluation Mode: Entire text
    Maximum Buffer Size: 1 MB
    Regular Expression: (?s:^.*$)
    Replacement Strategy:
    Replacement Value: a,b,c,d
- name: ReplaceText2
  id: 8db2ebc8-12c8-4396-89b6-479d907fbc6b
  class: org.apache.nifi.processors.standard.ReplaceText
  max concurrent tasks: 1
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 0 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 0
  auto-terminated relationships list:
  - failure
  Properties:
    Character Set: UTF-8
    Evaluation Mode: Entire text
    Maximum Buffer Size: 1 MB
    Regular Expression: (?s:^.*$)
    Replacement Strategy:
    Replacement Value: "{ \"field1\" : \"${csv.1}\", \"field2\" : \"${csv.2}\",\n\
      \                            \"field3\" : \"${csv.3}\", \"field4\" : \"${csv.4}\"\
      \ }\n                        "
- name: UpdateAttribute
  id: 1d00089c-78cd-467f-9aa6-31e3bdf90cb0
  class: org.apache.nifi.processors.attributes.UpdateAttribute
  max concurrent tasks: 1
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 0 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 0
  auto-terminated relationships list:
  - success
  Properties:
    Delete Attributes Expression:
Controller Services: []
Process Groups: []
Input Ports: []
Output Ports: []
Funnels: []
Connections:
- name: ExtractText/matched/ReplaceText2
  id: 56ef3e2e-ee35-4598-9fbe-ae86050960b0
  source id: 5f0ec33c-0a07-4305-a3a9-9a3ba0548ac6
  source relationship names:
  - matched
  destination id: 8db2ebc8-12c8-4396-89b6-479d907fbc6b
  max work queue size: 0
  max work queue data size: 0 MB
  flowfile expiration: 0 sec
  queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
- name: GenerateFlowFile/success/ReplaceText
  id: 0cc34e0a-0ae9-44ba-838f-792ed393a301
  source id: ffb6d4e9-9d6c-4fbe-ab8a-52bad90ce2e5
  source relationship names:
  - success
  destination id: cdcc2028-238b-42b7-bf95-dd4f301b91fc
  max work queue size: 0
  max work queue data size: 0 MB
  flowfile expiration: 0 sec
  queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
- name: ReplaceText/success/ExtractText
  id: e32e19cb-6c4c-4c6c-a8db-408447ba2ca2
  source id: cdcc2028-238b-42b7-bf95-dd4f301b91fc
  source relationship names:
  - success
  destination id: 5f0ec33c-0a07-4305-a3a9-9a3ba0548ac6
  max work queue size: 0
  max work queue data size: 0 MB
  flowfile expiration: 0 sec
  queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
- name: ReplaceText2/success/UpdateAttribute
  id: b061c170-19da-4e84-9709-327303fef579
  source id: 8db2ebc8-12c8-4396-89b6-479d907fbc6b
  source relationship names:
  - success
  destination id: 1d00089c-78cd-467f-9aa6-31e3bdf90cb0
  max work queue size: 0
  max work queue data size: 0 MB
  flowfile expiration: 0 sec
  queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
Remote Process Groups: []
NiFi Properties Overrides: {}
