# 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:
  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: {}
