You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by sz...@apache.org on 2021/07/19 14:31:52 UTC

[nifi-minifi-cpp] 03/04: MINIFICPP-1601 Add example flow configurations

This is an automated email from the ASF dual-hosted git repository.

szaszm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit a178c9f10c676f212bf0110789e89757e90d233c
Author: Gabor Gyimesi <ga...@gmail.com>
AuthorDate: Mon Jul 19 15:50:39 2021 +0200

    MINIFICPP-1601 Add example flow configurations
    
    New files under examples/:
    - getfile_putfile_config.yml: Getting File Data and Putting It in an Output Directory
    - tailfile_config.yml: Tailing a Single File
    - cwel_config.yml: Consuming Windows Event Logs (Win-only)
    - pdh_config.yml: Reading System Performance Data (Win-only)
    - consumejournald_config.yml: Consume Systemd-Journald System Journal
      Messages (Linux-only)
    - http_post_config.yml: HTTP POST Invocation
    - site_to_site_config.yml: Transfer Data to Remote Nifi Instance
    - publishkafka_config.yml: Publish Message to Kafka Broker
    - publishkafka_ssl_config.yml: Publish Message to Kafka Broker Through SSL
    - consumekafka_config.yml: Consume Messages from Kafka
    - azure_storage_config.yml: Upload Blob to Azure Storage
    - puts3_config.yml: Put Object in AWS S3 Bucket
    - lists3_fetchs3_config.yml: List and Fetch Content from AWS S3 Bucket
    - querydbtable_config.yml: Query Database Table
    
    Closes #1127
    
    Signed-off-by: Marton Szasz <sz...@apache.org>
---
 PROCESSORS.md                        |  10 +--
 README.md                            |   4 ++
 conf/config.yml                      |   2 +-
 examples/README.md                   | 128 ++++++++++++++++++++++++++++++++++-
 examples/azure_storage_config.yml    |  46 +++++++++++++
 examples/consumejournald_config.yml  |  43 ++++++++++++
 examples/consumekafka_config.yml     |  53 +++++++++++++++
 examples/cwel_config.yml             |  50 ++++++++++++++
 examples/getfile_putfile_config.yml  |  50 ++++++++++++++
 examples/http_post_config.yml        |  85 +++++++++++++++++++++++
 examples/lists3_fetchs3_config.yml   |  66 ++++++++++++++++++
 examples/pdh_config.yml              |  49 ++++++++++++++
 examples/publishkafka_config.yml     |  49 ++++++++++++++
 examples/publishkafka_ssl_config.yml |  55 +++++++++++++++
 examples/puts3_config.yml            |  45 ++++++++++++
 examples/querydbtable_config.yml     |  52 ++++++++++++++
 examples/site_to_site_config.yml     |  43 ++++++++++++
 examples/tailfile_config.yml         |  47 +++++++++++++
 18 files changed, 869 insertions(+), 8 deletions(-)

diff --git a/PROCESSORS.md b/PROCESSORS.md
index e2f7b30..c110348 100644
--- a/PROCESSORS.md
+++ b/PROCESSORS.md
@@ -1195,11 +1195,11 @@ In the list below, the names of required properties appear in bold. Any other pr
 | Name | Default Value | Allowable Values | Description |
 | - | - | - | - |
 |**Container Name**|||Name of the Azure storage container. In case of PutAzureBlobStorage processor, container can be created if it does not exist.<br/>**Supports Expression Language: true**|
-|Storage Account Name||||The storage account name.<br/>**Supports Expression Language: true**|
-|Storage Account Key||||The storage account key. This is an admin-like password providing access to every container in this account. It is recommended one uses Shared Access Signature (SAS) token instead for fine-grained control with policies.<br/>**Supports Expression Language: true**|
-|SAS Token||||Shared Access Signature token. Specify either SAS Token (recommended) or Account Key.<br/>**Supports Expression Language: true**|
-|Common Storage Account Endpoint Suffix||||Storage accounts in public Azure always use a common FQDN suffix. Override this endpoint suffix with a different suffix in certain circumstances (like Azure Stack or non-public Azure regions).<br/>**Supports Expression Language: true**|
-|Connection String||||Connection string used to connect to Azure Storage service. This overrides all other set credential properties.<br/>**Supports Expression Language: true**|
+|Storage Account Name|||The storage account name.<br/>**Supports Expression Language: true**|
+|Storage Account Key|||The storage account key. This is an admin-like password providing access to every container in this account. It is recommended one uses Shared Access Signature (SAS) token instead for fine-grained control with policies.<br/>**Supports Expression Language: true**|
+|SAS Token|||Shared Access Signature token. Specify either SAS Token (recommended) or Account Key.<br/>**Supports Expression Language: true**|
+|Common Storage Account Endpoint Suffix|||Storage accounts in public Azure always use a common FQDN suffix. Override this endpoint suffix with a different suffix in certain circumstances (like Azure Stack or non-public Azure regions).<br/>**Supports Expression Language: true**|
+|Connection String|||Connection string used to connect to Azure Storage service. This overrides all other set credential properties.<br/>**Supports Expression Language: true**|
 |Azure Storage Credentials Service|||Name of the Azure Storage Credentials Service used to retrieve the connection string from.|
 |**Blob**|||The filename of the blob.<br/>**Supports Expression Language: true**|
 |**Create Container**|false||Specifies whether to check if the container exists and to automatically create it if it does not. Permission to list containers is required. If false, this check is not made, but the Put operation will fail if the container does not exist.|
diff --git a/README.md b/README.md
index bf71160..3928a94 100644
--- a/README.md
+++ b/README.md
@@ -38,6 +38,7 @@ MiNiFi is a child project effort of Apache NiFi.  This repository is for a nativ
 - [Operations](#operations)
 - [Issue Tracking](#issue-tracking)
 - [Documentation](#documentation)
+- [Examples](#examples)
 - [License](#license)
 
 ## Features
@@ -588,6 +589,9 @@ See https://issues.apache.org/jira/projects/MINIFICPP/issues for the issue track
 ## Documentation
 See https://nifi.apache.org/minifi for the latest documentation.
 
+## Examples
+See our [examples page](examples/README.md) for flow examples.
+
 ## Contributing
 
 We welcome all contributions to Apache MiNiFi. To make development easier, we've included
diff --git a/conf/config.yml b/conf/config.yml
index 0f7f2a5..a3e1837 100644
--- a/conf/config.yml
+++ b/conf/config.yml
@@ -18,4 +18,4 @@ Flow Controller:
 Processors: []
 Connections: []
 Remote Processing Groups: []
-Provenance Reporting:
\ No newline at end of file
+Provenance Reporting:
diff --git a/examples/README.md b/examples/README.md
index f12935a..5c154d7 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -12,6 +12,130 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-# Apache NiFi -  MiNiFi - C++ Examples
+# Apache NiFi - MiNiFi - C++ Examples
 
-- [Site-2-Site Bi-directional Configuration](BidirectionalSiteToSite/README.md)
\ No newline at end of file
+The following examples show simple flow configurations for several common use cases. Use the path of these yaml files as the flow configuration set in the `nifi.flow.configuration.file` property of `conf/minifi.properties` file or replace the default `conf/config.yml` file to try them out.
+
+- [Filesystem Operations](#filesystem-operations)
+  - [Getting File Data and Putting It in an Output Directory](#getting-file-data-and-putting-it-in-an-output-directory)
+  - [Tailing a Single File](#tailing-a-single-file)
+- [Windows Specific Processors](#windows-specific-processors)
+  - [Consuming Windows Event Logs](#consuming-windows-event-logs)
+  - [Reading System Performance Data](#reading-system-performance-data)
+- [Linux Specific Processors](#linux-specific-processors)
+  - [Consume Systemd-Journald System Journal Messages](#consume-systemd-journald-system-journal-messages)
+- [HTTP Operations](#http-operations)
+  - [HTTP POST Invocation](#http-post-invocation)
+- [Site to Site Operations](#site-to-site-operations)
+  - [Transfer Data to Remote Nifi Instance](#transfer-data-to-remote-nifi-instance)
+  - [Site-2-Site Bi-directional Configuration](#site-2-site-bi-directional-configuration)
+- [Kafka Operations](#kafka-operations)
+  - [Publish Message to Kafka Broker](#publish-message-to-kafka-broker)
+  - [Publish Message to Kafka Broker Through SSL](#publish-message-to-kafka-broker-through-ssl)
+  - [Consume Messages from Kafka](#consume-messages-from-kafka)
+- [Public Cloud Operations](#public-cloud-operations)
+  - [Upload Blob to Azure Storage](#upload-blob-to-azure-storage)
+  - [Put Object in AWS S3 Bucket](#put-object-in-aws-s3-bucket)
+  - [List and Fetch Content from AWS S3 Bucket](#list-and-fetch-content-from-aws-s3-bucket)
+- [SQL Operations](#sql-operations)
+  - [Query Database Table](#query-database-table)
+
+## Filesystem Operations
+
+### Getting File Data and Putting It in an Output Directory
+
+Using the [getfile_putfile_config.yml](getfile_putfile_config.yml) flow configuration MiNiFi gets all files of minimum 1MB size from the `/tmp/getfile_dir` directory and puts them in the `/tmp/out_dir` output directory.
+
+The flow: GetFile &#10132; success &#10132; PutFile
+
+### Tailing a Single File
+
+Using the [tailfile_config.yml](tailfile_config.yml) flow configuration MiNiFi tails a single file `/tmp/test_file.log` and creates flowfiles from every single line, then logs the flowfile attributes.
+
+The flow: TailFile &#10132; success &#10132; LogAttribute
+
+## Windows Specific Processors
+
+### Consuming Windows Event Logs
+
+Using the [cwel_config.yml](cwel_config.yml) flow configuration MiNiFi queries all Windows system events and puts them to the `C:\temp\` directory in flattened JSON format.
+
+The flow: ConsumeWindowsEventLog &#10132; PutFile
+
+### Reading System Performance Data
+
+Using the [pdh_config.yml](pdh_config.yml) flow configuration MiNiFi reads CPU and Disk performance data through Windows' Performance Data Helper (PDH) component and puts the data to the `C:\temp\` directory in a compact JSON format.
+
+The flow: PerformanceDataMonitor &#10132; PutFile
+
+## Linux Specific Processors
+
+### Consume Systemd-Journald System Journal Messages
+
+Using the [consumejournald_config.yml](consumejournald_config.yml) flow configuration MiNiFi reads systemd-journald journal messages and logs them on `info` level.
+
+The flow: ConsumeJournald &#10132; LogAttribute
+
+## HTTP Operations
+
+### HTTP POST Invocation
+
+Using the [http_post_config.yml](http_post_config.yml) flow configuration MiNiFi transfers flowfile data received from the GetFile processor by invoking an HTTP endpoint with POST method.
+
+The flow: GetFile &#10132; success &#10132; InvokeHTTP
+
+## Site to Site Operations
+
+### Transfer Data to Remote Nifi Instance
+
+Using the [site_to_site_config.yml](site_to_site_config.yml) flow configuration MiNiFi transfers data received from the GetFile processor to a remote NiFi instance located at `http://nifi:8080/nifi`.
+
+### [Site-2-Site Bi-directional Configuration](BidirectionalSiteToSite/README.md)
+
+## Kafka Operations
+
+### Publish Message to Kafka Broker
+
+Using the [publishkafka_config.yml](publishkafka_config.yml) flow configuration MiNiFi publishes data received from the GetFile processor to a configured Kafka broker's `test` topic.
+
+The flow: GetFile &#10132; success &#10132; PublishKafka
+
+### Publish Message to Kafka Broker Through SSL
+
+Using the [publishkafka_ssl_config.yml](publishkafka_ssl_config.yml) flow configuration MiNiFi publishes data received from the GetFile processor to a configured Kafka broker's `test` topic through SSL connection.
+
+The flow: GetFile &#10132; success &#10132; PublishKafka
+
+### Consume Messages from Kafka
+
+Using the [consumekafka_config.yml](consumekafka_config.yml) flow configuration MiNiFi consumes messages from the configured Kafka broker's `ConsumeKafkaTest` topic from the earliest available message. The messages are forwarded to the `PutFile` processor and put in the `/tmp/output` directory.
+
+The flow: ConsumeKafka &#10132; success &#10132; PutFile
+
+## Public Cloud Operations
+
+### Upload Blob to Azure Storage
+
+Using the [azure_storage_config.yml](azure_storage_config.yml) flow configuration MiNiFi uploads data received from the GetFile processor to Azure's blob storage container `test-container`.
+
+The flow: GetFile &#10132; success &#10132; PutAzureBlobStorage
+
+### Put Object in AWS S3 Bucket
+
+Using the [puts3_config.yml](puts3_config.yml) flow configuration MiNiFi uploads data received from the GetFile processor to AWS S3 bucket `test_bucket`.
+
+The flow: GetFile &#10132; success &#10132; PutS3Object
+
+### List and Fetch Content from AWS S3 Bucket
+
+Using the [lists3_fetchs3_config.yml](lists3_fetchs3_config.yml) flow configuration MiNiFi lists S3 bucket `test_bucket` and fetches its contents in flowfiles then logs the attributes. The flow uses `AWSCredentialsService` controller service to provide credentials for all S3 processors. It has `Use Default Credentials` property set which retrieves credentials from AWS default credentials provider chain (environment variables, configuration file, instance profile).
+
+The flow: ListS3 &#10132; FetchS3Object &#10132; LogAttribute
+
+## SQL Operations
+
+### Query Database Table
+
+Using the [querydbtable_config.yml](querydbtable_config.yml) flow configuration MiNiFi queries the `id` and `name` columns of the `users` table with a `where` clause and the results are put in the `/tmp/output` directory. The database connection data is set in the `ODBCService` controller service.
+
+The flow: QueryDatabaseTable &#10132; PutFile
diff --git a/examples/azure_storage_config.yml b/examples/azure_storage_config.yml
new file mode 100644
index 0000000..777be17
--- /dev/null
+++ b/examples/azure_storage_config.yml
@@ -0,0 +1,46 @@
+# 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: MiNiFi Flow
+Processors:
+- name: Get files from /tmp/input
+  id: d5fef466-fef0-4d90-814e-9c19a67e454a
+  class: org.apache.nifi.processors.standard.GetFile
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 2 sec
+  Properties:
+    Input Directory: /tmp/input
+- name: Upload Blob to test-container in Azure Storage
+  id: e7b3f9c6-d1ee-4d9b-b676-48c872cc7ae3
+  class: org.apache.nifi.processors.standard.PutAzureBlobStorage
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - success
+  - failure
+  Properties:
+    Blob: test-blob
+    Storage Account Name: test-account
+    Storage Account Key: test-key
+    Container Name: test-container
+    Create Container: 'true'
+Connections:
+- name: GetFile/success/PutAzureBlobStorage
+  source id: d5fef466-fef0-4d90-814e-9c19a67e454a
+  source relationship name: success
+  destination id: e7b3f9c6-d1ee-4d9b-b676-48c872cc7ae3
+Controller Services: []
+Remote Processing Groups: []
diff --git a/examples/consumejournald_config.yml b/examples/consumejournald_config.yml
new file mode 100644
index 0000000..89ea553
--- /dev/null
+++ b/examples/consumejournald_config.yml
@@ -0,0 +1,43 @@
+# 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: MiNiFi Flow
+Processors:
+- name: Consume journal messages
+  id: 66fbb65d-8b11-43a9-aaad-746a07d2fe35
+  class: org.apache.nifi.minifi.extensions.systemd.ConsumeJournald
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 5 sec
+- name: Log messages to info level
+  id: f7281113-9576-4680-9a87-a8e961101b5c
+  class: org.apache.nifi.minifi.processors.LogAttribute
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list: [success]
+  Properties:
+    FlowFiles To Log: 0
+    Log Level: info
+    Log Payload: true
+    Log Prefix: '====='
+    Maxumim Payload Line Length: 0
+Connections:
+- name: ConsumeJournald/success/LogAttribute
+  id: f57713d9-fa0b-4416-948d-4b316b1a1c0d
+  source id: 66fbb65d-8b11-43a9-aaad-746a07d2fe35
+  source relationship name: success
+  destination id: f7281113-9576-4680-9a87-a8e961101b5c
+Remote Processing Groups: []
+Provenance Reporting:
diff --git a/examples/consumekafka_config.yml b/examples/consumekafka_config.yml
new file mode 100644
index 0000000..3878bd3
--- /dev/null
+++ b/examples/consumekafka_config.yml
@@ -0,0 +1,53 @@
+# 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: MiNiFi Flow
+Processors:
+- name: Consume Kafka messages from ConsumeKafkaTest topic
+  id: 37d6e8e5-6284-423e-8620-c5168a71add7
+  class: org.apache.nifi.processors.standard.ConsumeKafka
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 1 sec
+  auto-terminated relationships list:
+  - failure
+  Properties:
+    Group ID: test_group
+    Honor Transactions: 'true'
+    Kafka Brokers: kafka-broker:9092
+    Key Attribute Encoding: UTF-8
+    Max Poll Time: 4 sec
+    Message Header Encoding: UTF-8
+    Offset Reset: earliest
+    Session Timeout: 60 sec
+    Topic Name Format: Names
+    Topic Names: ConsumeKafkaTest
+- name: Put files to /tmp/output
+  class: org.apache.nifi.processors.standard.PutFile
+  id: 7f9c6f0b-e936-499e-b659-acfaf6872772
+  auto-terminated relationships list:
+  - success
+  - failure
+  scheduling strategy: EVENT_DRIVEN
+  Properties:
+    Directory: /tmp/output
+Connections:
+- name: ConsumeKafka/success/PutFile
+  source id: 37d6e8e5-6284-423e-8620-c5168a71add7
+  source relationship name: success
+  destination id: 7f9c6f0b-e936-499e-b659-acfaf6872772
+Controller Services: []
+Remote Processing Groups: []
diff --git a/examples/cwel_config.yml b/examples/cwel_config.yml
new file mode 100644
index 0000000..252e16b
--- /dev/null
+++ b/examples/cwel_config.yml
@@ -0,0 +1,50 @@
+# 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: MiNiFi Flow
+Processors:
+- name: Consume Windows Events in JSON format
+  id: 2f2a3b47-f5ba-49f6-82b5-bc1c86b96e27
+  class: org.apache.nifi.minifi.processors.ConsumeWindowsEventLog
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 1000 ms
+  Properties:
+    Channel: "System"
+    Query: "*"
+    Output Format: "JSON"
+    JSON Format: "Flattened"
+    Batch Commit Size: "10"
+- name: Put files to C:\temp\
+  id: e143601d-de4f-44ba-a6ec-d1f97d77ec94
+  class: org.apache.nifi.minifi.processors.PutFile
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - failure
+  - success
+  Properties:
+    Conflict Resolution Strategy: fail
+    Create Missing Directories: 'true'
+    Directory: C:\temp\
+Connections:
+- name: ConsumeWindowsEventLog/success/PutFile
+  id: 098a56ba-f4bf-4323-a3f3-6f8a5e3586bf
+  source id: 2f2a3b47-f5ba-49f6-82b5-bc1c86b96e27
+  source relationship names:
+  - success
+  destination id: e143601d-de4f-44ba-a6ec-d1f97d77ec94
+Controller Services: []
+Remote Process Groups: []
diff --git a/examples/getfile_putfile_config.yml b/examples/getfile_putfile_config.yml
new file mode 100644
index 0000000..e1fe675
--- /dev/null
+++ b/examples/getfile_putfile_config.yml
@@ -0,0 +1,50 @@
+# 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: MiNiFi Flow
+Processors:
+- name: Get files from /tmp/getfile_dir
+  id: 2f2a3b47-f5ba-49f6-82b5-bc1c86b96e27
+  class: org.apache.nifi.minifi.processors.GetFile
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 1000 ms
+  Properties:
+    Input Directory: /tmp/getfile_dir
+    Keep Source File: 'true'
+    Recurse Subdirectories: 'true'
+    Ignore Hidden Files: 'false'
+    Minimum File Size: '1 MB'
+- name: Put files to /tmp/out_dir
+  id: e143601d-de4f-44ba-a6ec-d1f97d77ec94
+  class: org.apache.nifi.minifi.processors.PutFile
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - failure
+  - success
+  Properties:
+    Conflict Resolution Strategy: fail
+    Create Missing Directories: 'true'
+    Directory: /tmp/out_dir
+Connections:
+- name: GetFile/success/PutFile
+  id: 098a56ba-f4bf-4323-a3f3-6f8a5e3586bf
+  source id: 2f2a3b47-f5ba-49f6-82b5-bc1c86b96e27
+  source relationship names:
+  - success
+  destination id: e143601d-de4f-44ba-a6ec-d1f97d77ec94
+Controller Services: []
+Remote Process Groups: []
diff --git a/examples/http_post_config.yml b/examples/http_post_config.yml
new file mode 100644
index 0000000..4ce683b
--- /dev/null
+++ b/examples/http_post_config.yml
@@ -0,0 +1,85 @@
+# 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: MiNiFi Flow
+Processors:
+- name: Get files from /tmp/input
+  id: 962790e7-ea35-4096-9362-96f527288669
+  class: org.apache.nifi.processors.standard.GetFile
+  scheduling period: 2 sec
+  scheduling strategy: TIMER_DRIVEN
+  Properties:
+    Input Directory: /tmp/input
+    Keep Source File: 'true'
+- name: Invoke POST request on remote URL
+  id: 33b373b6-6f19-4194-b45a-1ef73c357a8e
+  class: org.apache.nifi.processors.standard.InvokeHTTP
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - success
+  - response
+  Properties:
+    HTTP Method: POST
+    Remote URL: http://1.2.3.4:8080/contentListener
+- name: Retry on HTTP 5xx status codes
+  id: 3b1c6971-541b-4530-9f72-175757500699
+  class: org.apache.nifi.processors.standard.RetryFlowFile
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - failure
+  Properties:
+    Maximum Retries: 5
+- name: Log failed flow files
+  id: 1f669bb0-6d50-41e6-9230-90c1cc3e21f9
+  class: org.apache.nifi.minifi.processors.LogAttribute
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list: [success]
+  Properties:
+    FlowFiles To Log: 0
+    Log Level: warn
+    Log Prefix: '=== Failed HTTP request ==='
+    Maxumim Payload Line Length: 0
+Connections:
+- name: GetFile/success/InvokeHTTP
+  source id: 962790e7-ea35-4096-9362-96f527288669
+  source relationship name: success
+  destination id: 33b373b6-6f19-4194-b45a-1ef73c357a8e
+- name: InvokeHTTP/failure/InvokeHTTP
+  source id: 33b373b6-6f19-4194-b45a-1ef73c357a8e
+  source relationship name: failure
+  destination id: 33b373b6-6f19-4194-b45a-1ef73c357a8e
+- name: InvokeHTTP/retry/RetryFlowFile
+  id: c8a96f1d-48cd-4ee3-8a2f-081c3e3c7bcd
+  source id: 33b373b6-6f19-4194-b45a-1ef73c357a8e
+  source relationship names: retry
+  destination id: 3b1c6971-541b-4530-9f72-175757500699
+- name: RetryFlowFile/retry/InvokeHTTP
+  id: cadf51f0-3468-423a-9d12-5c40270aa7ca
+  source id: 3b1c6971-541b-4530-9f72-175757500699
+  source relationship names: retry
+  destination id: 33b373b6-6f19-4194-b45a-1ef73c357a8e
+- name: RetryFlowFile/retries_exceeded/LogAttribute
+  id: 160fc0f4-6efe-4274-8bc7-2a416570bdeb
+  source id: 3b1c6971-541b-4530-9f72-175757500699
+  source relationship names: retries_exceeded
+  destination id: 1f669bb0-6d50-41e6-9230-90c1cc3e21f9
+- name: InvokeHTTP/no retry/LogAttribute
+  source id: 33b373b6-6f19-4194-b45a-1ef73c357a8e
+  source relationship name: no retry
+  destination id: 1f669bb0-6d50-41e6-9230-90c1cc3e21f9
+Controller Services: []
+Remote Processing Groups: []
diff --git a/examples/lists3_fetchs3_config.yml b/examples/lists3_fetchs3_config.yml
new file mode 100644
index 0000000..e9e7d88
--- /dev/null
+++ b/examples/lists3_fetchs3_config.yml
@@ -0,0 +1,66 @@
+# 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: MiNiFi Flow
+Processors:
+- name: Fetch S3 object from test_bucket
+  id: 6ccd8be9-4aa3-4b86-ae10-0a68668f1c25
+  class: org.apache.nifi.minifi.aws.processors.FetchS3Object
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - failure
+  Properties:
+    AWS Credentials Provider service: AWSCredentialsService
+    Bucket: test_bucket
+    Communications Timeout: 30 sec
+- name: List test_bucket S3 bucket
+  id: 6f2c20f5-e990-4d9f-bfd6-f7471e3df469
+  class: org.apache.nifi.minifi.aws.processors.ListS3
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 10000 ms
+  Properties:
+    AWS Credentials Provider service: AWSCredentialsService
+    Bucket: test_bucket
+    Communications Timeout: 30 sec
+- name: Log S3 object attributes
+  id: 73fd7f54-7639-4f27-b20b-889708f493cb
+  class: org.apache.nifi.minifi.processors.LogAttribute
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - success
+  Properties:
+    FlowFiles To Log: '0'
+Controller Services:
+- name: AWSCredentialsService
+  id: 2094d776-2006-4d02-9bb9-28eac9d0fc95
+  class: org.apache.nifi.minifi.aws.controllers.AWSCredentialsService
+  Properties:
+    Use Default Credentials: 'true'
+Connections:
+- name: FetchS3Object/success/LogAttribute
+  id: 2c13ddd6-543e-4e37-a295-e4cb8fe85fa5
+  source id: 6ccd8be9-4aa3-4b86-ae10-0a68668f1c25
+  source relationship names:
+  - success
+  destination id: 73fd7f54-7639-4f27-b20b-889708f493cb
+- name: ListS3/success/FetchS3Object
+  id: 7895c12e-9657-4baa-a8ec-6b8cb11f32cd
+  source id: 6f2c20f5-e990-4d9f-bfd6-f7471e3df469
+  source relationship names:
+  - success
+  destination id: 6ccd8be9-4aa3-4b86-ae10-0a68668f1c25
+Remote Process Groups: []
diff --git a/examples/pdh_config.yml b/examples/pdh_config.yml
new file mode 100644
index 0000000..143cb98
--- /dev/null
+++ b/examples/pdh_config.yml
@@ -0,0 +1,49 @@
+# 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: MiNiFi Flow
+Processors:
+- name: Read disk and CPU performance data
+  id: 2f2a3b47-f5ba-49f6-82b5-bc1c86b96e27
+  class: org.apache.nifi.minifi.processors.PerformanceDataMonitor
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 10000 ms
+  Properties:
+    Predefined Groups: "Disk,CPU"
+    Custom PDH Counters: "\\System\\Processes,\\Process(*)\\ID Process,\\Process(*)\\Private Bytes"
+    Output Format: "JSON"
+    Output Compactness: "Compact"
+- name: Put files to C:\temp\
+  id: e143601d-de4f-44ba-a6ec-d1f97d77ec94
+  class: org.apache.nifi.minifi.processors.PutFile
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - failure
+  - success
+  Properties:
+    Conflict Resolution Strategy: fail
+    Create Missing Directories: 'true'
+    Directory: C:\temp\
+Connections:
+- name: PerformanceDataMonitor/success/PutFile
+  id: 098a56ba-f4bf-4323-a3f3-6f8a5e3586bf
+  source id: 2f2a3b47-f5ba-49f6-82b5-bc1c86b96e27
+  source relationship names:
+  - success
+  destination id: e143601d-de4f-44ba-a6ec-d1f97d77ec94
+Controller Services: []
+Remote Process Groups: []
diff --git a/examples/publishkafka_config.yml b/examples/publishkafka_config.yml
new file mode 100644
index 0000000..104c931
--- /dev/null
+++ b/examples/publishkafka_config.yml
@@ -0,0 +1,49 @@
+# 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: MiNiFi Flow
+Processors:
+- name: Get files from /tmp/input
+  id: 7fd166aa-0662-4c42-affa-88f6fb39807f
+  class: org.apache.nifi.processors.standard.GetFile
+  scheduling period: 2 sec
+  scheduling strategy: TIMER_DRIVEN
+  Properties:
+    Input Directory: /tmp/input
+- name: Publish messages to Kafka topic test
+  id: 8a534b4a-2b4a-4e1e-ab07-8a09fa08f848
+  class: org.apache.nifi.processors.standard.PublishKafka
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - success
+  - failure
+  Properties:
+    Batch Size: '10'
+    Client Name: test-client
+    Compress Codec: none
+    Delivery Guarantee: '1'
+    Known Brokers: kafka-broker:9092
+    Message Timeout: 12 sec
+    Request Timeout: 10 sec
+    Topic Name: test
+Connections:
+- name: GetFile/success/PublishKafka
+  source id: 7fd166aa-0662-4c42-affa-88f6fb39807f
+  source relationship name: success
+  destination id: 8a534b4a-2b4a-4e1e-ab07-8a09fa08f848
+Controller Services: []
+Remote Processing Groups: []
diff --git a/examples/publishkafka_ssl_config.yml b/examples/publishkafka_ssl_config.yml
new file mode 100644
index 0000000..16f90b8
--- /dev/null
+++ b/examples/publishkafka_ssl_config.yml
@@ -0,0 +1,55 @@
+# 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: MiNiFi Flow
+Processors:
+- name: Get files from /tmp/input
+  id: a78f9d7d-cc68-4f30-aac1-ee716d42bf9d
+  class: org.apache.nifi.processors.standard.GetFile
+  scheduling period: 2 sec
+  scheduling strategy: TIMER_DRIVEN
+  Properties:
+    Input Directory: /tmp/input
+- name: Publish messages to Kafka topic test
+  id: 8c0791c7-920c-4541-bcde-f5d559f42ed2
+  class: org.apache.nifi.processors.standard.PublishKafka
+  scheduling strategy: EVENT_DRIVEN
+  auto-terminated relationships list:
+  - success
+  - failure
+  Properties:
+    Batch Size: 10
+    Client Name: test_client
+    Compress Codec: none
+    Delivery Guarantee: 1
+    Known Brokers: kafka-broker:9093
+    Message Timeout: 12 sec
+    Message Timeout Phrase: 12 sec
+    Request Timeout: 10 sec
+    Security CA Key: /tmp/resources/certs/ca-cert
+    Security Cert: /tmp/resources/certs/client_test_client_client.pem
+    Security Pass Phrase: abcdefgh
+    Security Private Key: /tmp/resources/certs/client_test_client_client.key
+    Security Protocol: ssl
+    Topic Name: test
+Connections:
+- name: GetFile/success/PublishKafka
+  source id: a78f9d7d-cc68-4f30-aac1-ee716d42bf9d
+  source relationship name: success
+  destination id: 8c0791c7-920c-4541-bcde-f5d559f42ed2
+Controller Services: []
+Remote Processing Groups: []
diff --git a/examples/puts3_config.yml b/examples/puts3_config.yml
new file mode 100644
index 0000000..5786d6b
--- /dev/null
+++ b/examples/puts3_config.yml
@@ -0,0 +1,45 @@
+# 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: MiNiFi Flow
+Processors:
+- name: Get files from /tmp/input
+  id: bfd376a8-c845-453b-9f74-4cf6f3a95e74
+  class: org.apache.nifi.processors.standard.GetFile
+  scheduling period: 2 sec
+  scheduling strategy: TIMER_DRIVEN
+  Properties:
+    Input Directory: /tmp/input
+- name: Upload to S3 test_bucket
+  id: 8c9e2512-e814-4b73-ac5c-f33753332128
+  class: org.apache.nifi.processors.standard.PutS3Object
+  scheduling period: 1 sec
+  scheduling strategy: TIMER_DRIVEN
+  auto-terminated relationships list:
+  - success
+  - failure
+  Properties:
+    Access Key: test_access_key
+    Bucket: test_bucket
+    Secret Key: test_secret
+Connections:
+- name: GetFile/success/PutS3Object
+  source id: bfd376a8-c845-453b-9f74-4cf6f3a95e74
+  source relationship name: success
+  destination id: 8c9e2512-e814-4b73-ac5c-f33753332128
+Controller Services: []
+Remote Processing Groups: []
diff --git a/examples/querydbtable_config.yml b/examples/querydbtable_config.yml
new file mode 100644
index 0000000..903bd5f
--- /dev/null
+++ b/examples/querydbtable_config.yml
@@ -0,0 +1,52 @@
+# 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: MiNiFi Flow
+Processors:
+- name: Query users table
+  id: 0bd6ebcd-7fef-47e3-8e36-4413d39d01d5
+  class: org.apache.nifi.processors.standard.QueryDatabaseTable
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 1 sec
+  Properties:
+    Columns to Return: id,name
+    DB Controller Service: ODBCService
+    Output Format: JSON
+    Table Name: users
+    Where Clause: id = 1
+- name: Put files to /tmp/output
+  id: 32700228-e078-42a6-89d7-03e4e478c9da
+  class: org.apache.nifi.processors.standard.PutFile
+  scheduling strategy: EVENT_DRIVEN
+  scheduling period: 1 sec
+  auto-terminated relationships list:
+  - success
+  - failure
+  Properties:
+    Directory: /tmp/output
+Controller Services:
+- name: ODBCService
+  id: 64fafacd-74ad-4c3b-b1cc-a816ef128e09
+  class: ODBCService
+  Properties:
+    Connection String: Driver={PostgreSQL ANSI};Server=postgresql-server;Port=5432;Database=postgres;Uid=postgres;Pwd=password;
+Connections:
+- name: QueryDatabaseTable/success/PutFile
+  destination id: 32700228-e078-42a6-89d7-03e4e478c9da
+  source id: 0bd6ebcd-7fef-47e3-8e36-4413d39d01d5
+  source relationship name: success
+Remote Processing Groups: []
diff --git a/examples/site_to_site_config.yml b/examples/site_to_site_config.yml
new file mode 100644
index 0000000..2030b16
--- /dev/null
+++ b/examples/site_to_site_config.yml
@@ -0,0 +1,43 @@
+# 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: MiNiFi Flow
+Processors:
+- name: Get files from /tmp/input
+  id: 45c2a56e-7c29-42f3-8c1d-89c0c84a6ee7
+  class: org.apache.nifi.processors.standard.GetFile
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 2 sec
+  Properties:
+    Input Directory: /tmp/input
+Remote Processing Groups:
+- Input Ports:
+  - Properties: {}
+    id: 4222cd3a-746e-3497-abd0-b7695faa750c
+    max concurrent tasks: 1
+    name: to_nifi
+  id: 38878f84-23cd-4aaa-9c45-45151bb2d681
+  name: RemoteProcessGroup
+  timeout: 30 sec
+  url: http://nifi:8080/nifi
+  yield period: 3 sec
+Connections:
+- name: GetFile/success/RPG
+  source id: 45c2a56e-7c29-42f3-8c1d-89c0c84a6ee7
+  source relationship name: success
+  destination id: 4222cd3a-746e-3497-abd0-b7695faa750c
+Controller Services: []
diff --git a/examples/tailfile_config.yml b/examples/tailfile_config.yml
new file mode 100644
index 0000000..ada27ff
--- /dev/null
+++ b/examples/tailfile_config.yml
@@ -0,0 +1,47 @@
+# 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: MiNiFi Flow
+Processors:
+- name: Log tailfile attributes
+  id: 41141af1-3c43-4fa4-8236-2b207b0fe9d8
+  class: org.apache.nifi.minifi.processors.LogAttribute
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 1000 ms
+  auto-terminated relationships list:
+  - success
+  Properties:
+    FlowFiles To Log: '0'
+- name: Tail /tmp/test_file.log
+  id: 0ef22940-ac0a-4813-9ad9-fe41c2b51fff
+  class: org.apache.nifi.minifi.processors.TailFile
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 1000 ms
+  Properties:
+    File to Tail: /tmp/test_file.log
+    Initial Start Position: Beginning of File
+    Input Delimiter: \n
+    tail-mode: Single file
+Connections:
+- name: TailFile/success/LogAttribute
+  id: eda7f758-c548-46d6-aba0-faa6e9937d8c
+  source id: 0ef22940-ac0a-4813-9ad9-fe41c2b51fff
+  source relationship names:
+  - success
+  destination id: 41141af1-3c43-4fa4-8236-2b207b0fe9d8
+Controller Services: []
+Remote Process Groups: []