This is an automated email from the ASF dual-hosted git repository.
aldrin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi-minifi.git
The following commit(s) were added to refs/heads/master by this push:
new c4e4565 MINIFI-496 Allow multiple RPGS and remote input/output ports
by treating them as a special case and allowing duplicate identifiers.
c4e4565 is described below
commit c4e4565fab17900216f57fd4cd33bce2663c04b1
Author: Aldrin Piri <[email protected]>
AuthorDate: Mon Jun 24 16:07:50 2019 -0400
MINIFI-496 Allow multiple RPGS and remote input/output ports by treating
them as a special case and allowing duplicate identifiers.
---
.../nifi/minifi/commons/schema/ConfigSchema.java | 6 -
.../minifi/commons/schema/v2/ConfigSchemaV2.java | 4 -
.../minifi/commons/schema/ConfigSchemaTest.java | 13 +-
.../toolkit/configuration/ConfigMainTest.java | 8 +
.../src/test/resources/MINIFI-496/dual_rpgs.xml | 1583 ++++++++++++++++++++
5 files changed, 1592 insertions(+), 22 deletions(-)
diff --git
a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ConfigSchema.java
b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ConfigSchema.java
index d871ffd..e043697 100644
---
a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ConfigSchema.java
+++
b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/ConfigSchema.java
@@ -44,8 +44,6 @@ import static
org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.SE
public class ConfigSchema extends BaseSchema implements WritableSchema,
ConvertableSchema<ConfigSchema> {
public static final int CONFIG_VERSION = 3;
public static final String VERSION = "MiNiFi Config Version";
- public static final String
FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_INPUT_PORT_IDS = "Found the following
duplicate remote input port ids: ";
- public static final String
FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_OUTPUT_PORT_IDS = "Found the following
duplicate remote output port ids: ";
public static final String FOUND_THE_FOLLOWING_DUPLICATE_INPUT_PORT_IDS =
"Found the following duplicate input port ids: ";
public static final String FOUND_THE_FOLLOWING_DUPLICATE_OUTPUT_PORT_IDS =
"Found the following duplicate output port ids: ";
public static final String FOUND_THE_FOLLOWING_DUPLICATE_IDS = "Found the
following ids that occur both in more than one Processor(s), Input Port(s),
Output Port(s) and/or Remote Input Port(s): ";
@@ -56,7 +54,6 @@ public class ConfigSchema extends BaseSchema implements
WritableSchema, Converta
public static final String
FOUND_THE_FOLLOWING_DUPLICATE_CONTROLLER_SERVICE_IDS = "Found the following
duplicate controller service ids: ";
public static final String FOUND_THE_FOLLOWING_DUPLICATE_CONNECTION_IDS =
"Found the following duplicate connection ids: ";
public static final String FOUND_THE_FOLLOWING_DUPLICATE_FUNNEL_IDS =
"Found the following duplicate funnel ids: ";
- public static final String
FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESS_GROUP_NAMES = "Found the following
duplicate remote process group names: ";
public static String TOP_LEVEL_NAME = "top level";
private FlowControllerSchema flowControllerProperties;
private CorePropertiesSchema coreProperties;
@@ -125,9 +122,6 @@ public class ConfigSchema extends BaseSchema implements
WritableSchema, Converta
checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_CONTROLLER_SERVICE_IDS, allControllerServiceIds);
checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_FUNNEL_IDS, allFunnelIds);
checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_CONNECTION_IDS, allConnectionIds);
- checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESS_GROUP_NAMES,
allRemoteProcessGroupNames);
- checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_INPUT_PORT_IDS, allRemoteInputPortIds);
- checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_OUTPUT_PORT_IDS, allRemoteOutputPortIds);
checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_INPUT_PORT_IDS, allInputPortIds);
checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_OUTPUT_PORT_IDS, allOutputPortIds);
diff --git
a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v2/ConfigSchemaV2.java
b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v2/ConfigSchemaV2.java
index b4b106d..9d30c74 100644
---
a/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v2/ConfigSchemaV2.java
+++
b/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/v2/ConfigSchemaV2.java
@@ -54,7 +54,6 @@ import
org.apache.nifi.minifi.commons.schema.common.StringUtil;
public class ConfigSchemaV2 extends BaseSchema implements
ConvertableSchema<ConfigSchema> {
public static final int CONFIG_VERSION = 2;
public static final String VERSION = "MiNiFi Config Version";
- public static final String
FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_INPUT_PORT_IDS = "Found the following
duplicate remote input port ids: ";
public static final String FOUND_THE_FOLLOWING_DUPLICATE_INPUT_PORT_IDS =
"Found the following duplicate input port ids: ";
public static final String FOUND_THE_FOLLOWING_DUPLICATE_OUTPUT_PORT_IDS =
"Found the following duplicate output port ids: ";
public static final String FOUND_THE_FOLLOWING_DUPLICATE_IDS = "Found the
following ids that occur both in more than one Processor(s), Input Port(s),
Output Port(s) and/or Remote Input Port(s): ";
@@ -64,7 +63,6 @@ public class ConfigSchemaV2 extends BaseSchema implements
ConvertableSchema<Conf
public static final String FOUND_THE_FOLLOWING_DUPLICATE_PROCESSOR_IDS =
"Found the following duplicate processor ids: ";
public static final String FOUND_THE_FOLLOWING_DUPLICATE_CONNECTION_IDS =
"Found the following duplicate connection ids: ";
public static final String FOUND_THE_FOLLOWING_DUPLICATE_FUNNEL_IDS =
"Found the following duplicate funnel ids: ";
- public static final String
FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESS_GROUP_NAMES = "Found the following
duplicate remote process group names: ";
public static String TOP_LEVEL_NAME = "top level";
private FlowControllerSchema flowControllerProperties;
@@ -122,8 +120,6 @@ public class ConfigSchemaV2 extends BaseSchema implements
ConvertableSchema<Conf
checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_PROCESSOR_IDS, allProcessorIds);
checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_FUNNEL_IDS, allFunnelIds);
checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_CONNECTION_IDS, allConnectionIds);
- checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESS_GROUP_NAMES,
allRemoteProcessGroupNames);
- checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_INPUT_PORT_IDS, allRemoteInputPortIds);
checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_INPUT_PORT_IDS, allInputPortIds);
checkForDuplicates(this::addValidationIssue,
FOUND_THE_FOLLOWING_DUPLICATE_OUTPUT_PORT_IDS, allOutputPortIds);
diff --git
a/minifi-commons/minifi-commons-schema/src/test/java/org/apache/nifi/minifi/commons/schema/ConfigSchemaTest.java
b/minifi-commons/minifi-commons-schema/src/test/java/org/apache/nifi/minifi/commons/schema/ConfigSchemaTest.java
index dfb1fac..a68467a 100644
---
a/minifi-commons/minifi-commons-schema/src/test/java/org/apache/nifi/minifi/commons/schema/ConfigSchemaTest.java
+++
b/minifi-commons/minifi-commons-schema/src/test/java/org/apache/nifi/minifi/commons/schema/ConfigSchemaTest.java
@@ -36,6 +36,7 @@ import static
org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.ID
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
public class ConfigSchemaTest {
@@ -80,18 +81,6 @@ public class ConfigSchemaTest {
}
@Test
- public void testRemoteProcessGroupDuplicateValidationNegativeCase() {
- ConfigSchema configSchema = new
ConfigSchema(Collections.singletonMap(CommonPropertyKeys.REMOTE_PROCESS_GROUPS_KEY,
getListWithNames("testName1", "testName2")));
- assertMessageDoesNotExist(configSchema,
ConfigSchema.FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESS_GROUP_NAMES);
- }
-
- @Test
- public void testRemoteProcessGroupDuplicateValidationPositiveCase() {
- ConfigSchema configSchema = new
ConfigSchema(Collections.singletonMap(CommonPropertyKeys.REMOTE_PROCESS_GROUPS_KEY,
getListWithNames("testName1", "testName1")));
- assertMessageDoesExist(configSchema,
ConfigSchema.FOUND_THE_FOLLOWING_DUPLICATE_REMOTE_PROCESS_GROUP_NAMES);
- }
-
- @Test
public void testInvalidSourceAndDestinationIds() throws IOException,
SchemaLoaderException {
Map<String, Object> yamlAsMap =
SchemaLoader.loadYamlAsMap(ConfigSchemaTest.class.getClassLoader().getResourceAsStream("config-minimal-v2.yml"));
List<Map<String, Object>> connections = (List<Map<String, Object>>)
yamlAsMap.get(CommonPropertyKeys.CONNECTIONS_KEY);
diff --git
a/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/ConfigMainTest.java
b/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/ConfigMainTest.java
index c022dbf..fd8b56b 100644
---
a/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/ConfigMainTest.java
+++
b/minifi-toolkit/minifi-toolkit-configuration/src/test/java/org/apache/nifi/minifi/toolkit/configuration/ConfigMainTest.java
@@ -27,6 +27,7 @@ import
org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema;
import org.apache.nifi.minifi.commons.schema.common.ConvertableSchema;
import org.apache.nifi.minifi.commons.schema.serialization.SchemaLoader;
import org.apache.nifi.minifi.commons.schema.exception.SchemaLoaderException;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -176,6 +177,7 @@ public class ConfigMainTest {
public void testTransformRoundTrip15RPGHandling() throws IOException,
JAXBException, SchemaLoaderException {
transformRoundTrip("1.5_RPG_Handling");
}
+
@Test
public void testTransformRoundTripDecompression() throws IOException,
JAXBException, SchemaLoaderException {
transformRoundTrip("DecompressionCircularFlow");
@@ -297,6 +299,12 @@ public class ConfigMainTest {
transformVsfRoundTrip("VersionedFlowSnapshot-Simple");
}
+ @Test
+ public void testSuccessTransformDualRPGs() throws IOException,
JAXBException, SchemaLoaderException {
+ ConfigSchema configSchema =
ConfigMain.transformTemplateToSchema(getClass().getClassLoader().getResourceAsStream("MINIFI-496/dual_rpgs.xml"));
+ Assert.assertTrue(configSchema.isValid());
+ }
+
private void transformRoundTrip(String name) throws JAXBException,
IOException, SchemaLoaderException {
Map<String, Object> templateMap =
ConfigMain.transformTemplateToSchema(getClass().getClassLoader().getResourceAsStream(name
+ ".xml")).toMap();
Map<String, Object> yamlMap =
SchemaLoader.loadYamlAsMap(getClass().getClassLoader().getResourceAsStream(name
+ ".yml"));
diff --git
a/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MINIFI-496/dual_rpgs.xml
b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MINIFI-496/dual_rpgs.xml
new file mode 100644
index 0000000..961f6e8
--- /dev/null
+++
b/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MINIFI-496/dual_rpgs.xml
@@ -0,0 +1,1583 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+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.
+ -->
+<template encoding-version="1.2">
+ <description></description>
+ <groupId>cd1496d4-6080-3011-a863-6f7ba45f0706</groupId>
+ <name>minifi-flow3</name>
+ <snippet>
+ <connections>
+ <id>0898a4b7-31f0-318b-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>9ac98b13-3f48-31c3-0000-000000000000</groupId>
+ <id>2a731970-8eb8-3cbc-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+ <loadBalancePartitionAttribute></loadBalancePartitionAttribute>
+ <loadBalanceStatus>LOAD_BALANCE_NOT_CONFIGURED</loadBalanceStatus>
+ <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+ <name></name>
+ <selectedRelationships>matched</selectedRelationships>
+ <source>
+ <groupId>9ac98b13-3f48-31c3-0000-000000000000</groupId>
+ <id>a76ad4da-b2d7-375a-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>1195d9ee-2753-3f74-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>9ac98b13-3f48-31c3-0000-000000000000</groupId>
+ <id>0e237e63-d1e5-39d3-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+ <loadBalancePartitionAttribute></loadBalancePartitionAttribute>
+ <loadBalanceStatus>LOAD_BALANCE_NOT_CONFIGURED</loadBalanceStatus>
+ <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>9ac98b13-3f48-31c3-0000-000000000000</groupId>
+ <id>99d947c2-75ae-339f-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>1a2a993c-6623-3414-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <bends>
+ <x>1185.298307749997</x>
+ <y>1433.6684396759533</y>
+ </bends>
+ <destination>
+ <groupId>8be8c0c4-d63b-3ea7-0000-000000000000</groupId>
+ <id>59c5e722-3080-33dd-afa6-0a58f15e2174</id>
+ <type>REMOTE_INPUT_PORT</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>0</labelIndex>
+ <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+ <loadBalancePartitionAttribute></loadBalancePartitionAttribute>
+ <loadBalanceStatus>LOAD_BALANCE_NOT_CONFIGURED</loadBalanceStatus>
+ <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+ <name>SuccessfulResponse </name>
+ <selectedRelationships>Response</selectedRelationships>
+ <source>
+ <groupId>9ac98b13-3f48-31c3-0000-000000000000</groupId>
+ <id>86750867-1f2e-3dcd-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>23f9ce87-6b2a-3b19-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <bends>
+ <x>637.8215316269502</x>
+ <y>227.59629612126582</y>
+ </bends>
+ <destination>
+ <groupId>6051b4d8-c5d9-351c-0000-000000000000</groupId>
+ <id>551e3122-9607-1ef3-944b-e0702188b20b</id>
+ <type>REMOTE_INPUT_PORT</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+ <loadBalancePartitionAttribute></loadBalancePartitionAttribute>
+ <loadBalanceStatus>LOAD_BALANCE_NOT_CONFIGURED</loadBalanceStatus>
+ <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>9ac98b13-3f48-31c3-0000-000000000000</groupId>
+ <id>2d4ebb05-6501-3be3-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>4f2eda7e-edeb-37ac-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>9ac98b13-3f48-31c3-0000-000000000000</groupId>
+ <id>86750867-1f2e-3dcd-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+ <loadBalancePartitionAttribute></loadBalancePartitionAttribute>
+ <loadBalanceStatus>LOAD_BALANCE_NOT_CONFIGURED</loadBalanceStatus>
+ <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>9ac98b13-3f48-31c3-0000-000000000000</groupId>
+ <id>0e237e63-d1e5-39d3-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>58619ab5-eec9-37ca-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>9ac98b13-3f48-31c3-0000-000000000000</groupId>
+ <id>a76ad4da-b2d7-375a-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+ <loadBalancePartitionAttribute></loadBalancePartitionAttribute>
+ <loadBalanceStatus>LOAD_BALANCE_NOT_CONFIGURED</loadBalanceStatus>
+ <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>9ac98b13-3f48-31c3-0000-000000000000</groupId>
+ <id>ea52b353-7567-3380-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>747885c2-ddb1-3ebe-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <bends>
+ <x>1494.7413543163902</x>
+ <y>1436.38960452956</y>
+ </bends>
+ <destination>
+ <groupId>8be8c0c4-d63b-3ea7-0000-000000000000</groupId>
+ <id>59c5e722-3080-33dd-afa6-0a58f15e2174</id>
+ <type>REMOTE_INPUT_PORT</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+ <loadBalancePartitionAttribute></loadBalancePartitionAttribute>
+ <loadBalanceStatus>LOAD_BALANCE_NOT_CONFIGURED</loadBalanceStatus>
+ <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+ <name>FailedResponse</name>
+ <selectedRelationships>Failure</selectedRelationships>
+ <source>
+ <groupId>9ac98b13-3f48-31c3-0000-000000000000</groupId>
+ <id>86750867-1f2e-3dcd-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>c254194f-25db-3b72-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>6051b4d8-c5d9-351c-0000-000000000000</groupId>
+ <id>551e3122-9607-1ef3-944b-e0702188b20b</id>
+ <type>REMOTE_INPUT_PORT</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+ <loadBalancePartitionAttribute></loadBalancePartitionAttribute>
+ <loadBalanceStatus>LOAD_BALANCE_NOT_CONFIGURED</loadBalanceStatus>
+ <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>9ac98b13-3f48-31c3-0000-000000000000</groupId>
+ <id>433629f7-1ef6-3abd-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <connections>
+ <id>fc58358c-fb91-33ca-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
+ <backPressureObjectThreshold>10000</backPressureObjectThreshold>
+ <destination>
+ <groupId>9ac98b13-3f48-31c3-0000-000000000000</groupId>
+ <id>99d947c2-75ae-339f-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </destination>
+ <flowFileExpiration>0 sec</flowFileExpiration>
+ <labelIndex>1</labelIndex>
+ <loadBalanceCompression>DO_NOT_COMPRESS</loadBalanceCompression>
+ <loadBalancePartitionAttribute></loadBalancePartitionAttribute>
+ <loadBalanceStatus>LOAD_BALANCE_NOT_CONFIGURED</loadBalanceStatus>
+ <loadBalanceStrategy>DO_NOT_LOAD_BALANCE</loadBalanceStrategy>
+ <name></name>
+ <selectedRelationships>success</selectedRelationships>
+ <source>
+ <groupId>9ac98b13-3f48-31c3-0000-000000000000</groupId>
+ <id>2a731970-8eb8-3cbc-0000-000000000000</id>
+ <type>PROCESSOR</type>
+ </source>
+ <zIndex>0</zIndex>
+ </connections>
+ <labels>
+ <id>4a0dcc76-d484-387f-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <position>
+ <x>0.0</x>
+ <y>0.0</y>
+ </position>
+ <height>505.39198303222656</height>
+ <label>Generate Data From Edge Device</label>
+ <style>
+ <entry>
+ <key>background-color</key>
+ <value>#d7ffd6</value>
+ </entry>
+ <entry>
+ <key>font-size</key>
+ <value>18px</value>
+ </entry>
+ </style>
+ <width>903.9839019775391</width>
+ </labels>
+ <labels>
+ <id>849b1142-1653-3cda-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <position>
+ <x>991.164833755493</x>
+ <y>5.824765014648619</y>
+ </position>
+ <height>1714.5932922363281</height>
+ <label>MiNiFi (Edge Device) Listening For Instructions</label>
+ <style>
+ <entry>
+ <key>background-color</key>
+ <value>#d4eaff</value>
+ </entry>
+ <entry>
+ <key>font-size</key>
+ <value>18px</value>
+ </entry>
+ </style>
+ <width>757.8429718017578</width>
+ </labels>
+ <processors>
+ <id>0e237e63-d1e5-39d3-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <position>
+ <x>1140.7820775097357</x>
+ <y>951.0628484088484</y>
+ </position>
+ <bundle>
+ <artifact>nifi-standard-nar</artifact>
+ <group>org.apache.nifi</group>
+ <version>1.8.0</version>
+ </bundle>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>Regular Expression</key>
+ <value>
+ <name>Regular Expression</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Replacement Value</key>
+ <value>
+ <name>Replacement Value</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Character Set</key>
+ <value>
+ <name>Character Set</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Maximum Buffer Size</key>
+ <value>
+ <name>Maximum Buffer Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Replacement Strategy</key>
+ <value>
+ <name>Replacement Strategy</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Evaluation Mode</key>
+ <value>
+ <name>Evaluation Mode</name>
+ </value>
+ </entry>
+ </descriptors>
+ <executionNode>ALL</executionNode>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Regular Expression</key>
+ <value>.*</value>
+ </entry>
+ <entry>
+ <key>Replacement Value</key>
+ <value>text=</value>
+ </entry>
+ <entry>
+ <key>Character Set</key>
+ <value>UTF-8</value>
+ </entry>
+ <entry>
+ <key>Maximum Buffer Size</key>
+ <value>1 MB</value>
+ </entry>
+ <entry>
+ <key>Replacement Strategy</key>
+ <value>Prepend</value>
+ </entry>
+ <entry>
+ <key>Evaluation Mode</key>
+ <value>Entire text</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <executionNodeRestricted>false</executionNodeRestricted>
+ <name>Add Meta Tag</name>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>failure</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <state>RUNNING</state>
+ <style/>
+ <type>org.apache.nifi.processors.standard.ReplaceText</type>
+ </processors>
+ <processors>
+ <id>2a731970-8eb8-3cbc-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <position>
+ <x>1140.7820775097357</x>
+ <y>496.4301272650232</y>
+ </position>
+ <bundle>
+ <artifact>nifi-update-attribute-nar</artifact>
+ <group>org.apache.nifi</group>
+ <version>1.8.0</version>
+ </bundle>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>Delete Attributes Expression</key>
+ <value>
+ <name>Delete Attributes Expression</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Store State</key>
+ <value>
+ <name>Store State</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Stateful Variables Initial Value</key>
+ <value>
+ <name>Stateful Variables Initial Value</name>
+ </value>
+ </entry>
+ <entry>
+ <key>message</key>
+ <value>
+ <name>message</name>
+ </value>
+ </entry>
+ <entry>
+ <key>X-AYLIEN-TextAPI-Application-ID</key>
+ <value>
+ <name>X-AYLIEN-TextAPI-Application-ID</name>
+ </value>
+ </entry>
+ <entry>
+ <key>X-AYLIEN-TextAPI-Application-Key</key>
+ <value>
+ <name>X-AYLIEN-TextAPI-Application-Key</name>
+ </value>
+ </entry>
+ </descriptors>
+ <executionNode>ALL</executionNode>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Delete Attributes Expression</key>
+ </entry>
+ <entry>
+ <key>Store State</key>
+ <value>Do not store state</value>
+ </entry>
+ <entry>
+ <key>Stateful Variables Initial Value</key>
+ </entry>
+ <entry>
+ <key>message</key>
+ <value>${message.body.0:urlEncode()}</value>
+ </entry>
+ <entry>
+ <key>X-AYLIEN-TextAPI-Application-ID</key>
+ <value>d679a19a</value>
+ </entry>
+ <entry>
+ <key>X-AYLIEN-TextAPI-Application-Key</key>
+ <value>2548524c53731b86aea166391952ac6e</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <executionNodeRestricted>false</executionNodeRestricted>
+ <name>URL Encode Request</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <state>RUNNING</state>
+ <style/>
+ <type>org.apache.nifi.processors.attributes.UpdateAttribute</type>
+ </processors>
+ <processors>
+ <id>2d4ebb05-6501-3be3-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <position>
+ <x>498.8572649780276</x>
+ <y>49.45602460937516</y>
+ </position>
+ <bundle>
+ <artifact>nifi-standard-nar</artifact>
+ <group>org.apache.nifi</group>
+ <version>1.8.0</version>
+ </bundle>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>File Size</key>
+ <value>
+ <name>File Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>
+ <name>Batch Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>
+ <name>Data Format</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>
+ <name>Unique FlowFiles</name>
+ </value>
+ </entry>
+ <entry>
+ <key>generate-ff-custom-text</key>
+ <value>
+ <name>generate-ff-custom-text</name>
+ </value>
+ </entry>
+ <entry>
+ <key>character-set</key>
+ <value>
+ <name>character-set</name>
+ </value>
+ </entry>
+ </descriptors>
+ <executionNode>ALL</executionNode>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>File Size</key>
+ <value>0B</value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>1</value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>Text</value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>generate-ff-custom-text</key>
+ <value>{
+ "id": "${UUID()}",
+ "type": "pressure",
+ "reading": "${random()}",
+ "time": "${now()}"
+ }</value>
+ </entry>
+ <entry>
+ <key>character-set</key>
+ <value>UTF-8</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>20 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <executionNodeRestricted>false</executionNodeRestricted>
+ <name>Generate Pressure Readings</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <state>STOPPED</state>
+ <style/>
+ <type>org.apache.nifi.processors.standard.GenerateFlowFile</type>
+ </processors>
+ <processors>
+ <id>433629f7-1ef6-3abd-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <position>
+ <x>45.82141665771496</x>
+ <y>46.537025594481975</y>
+ </position>
+ <bundle>
+ <artifact>nifi-standard-nar</artifact>
+ <group>org.apache.nifi</group>
+ <version>1.8.0</version>
+ </bundle>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>File Size</key>
+ <value>
+ <name>File Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>
+ <name>Batch Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>
+ <name>Data Format</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>
+ <name>Unique FlowFiles</name>
+ </value>
+ </entry>
+ <entry>
+ <key>generate-ff-custom-text</key>
+ <value>
+ <name>generate-ff-custom-text</name>
+ </value>
+ </entry>
+ <entry>
+ <key>character-set</key>
+ <value>
+ <name>character-set</name>
+ </value>
+ </entry>
+ </descriptors>
+ <executionNode>ALL</executionNode>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>File Size</key>
+ <value>0B</value>
+ </entry>
+ <entry>
+ <key>Batch Size</key>
+ <value>1</value>
+ </entry>
+ <entry>
+ <key>Data Format</key>
+ <value>Text</value>
+ </entry>
+ <entry>
+ <key>Unique FlowFiles</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>generate-ff-custom-text</key>
+ <value>{
+ "id": "${UUID()}",
+ "type": "temp",
+ "reading": "${random()}",
+ "time": "${now()}"
+ }</value>
+ </entry>
+ <entry>
+ <key>character-set</key>
+ <value>UTF-8</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>22 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <executionNodeRestricted>false</executionNodeRestricted>
+ <name>Generate Temp Readings</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <state>STOPPED</state>
+ <style/>
+ <type>org.apache.nifi.processors.standard.GenerateFlowFile</type>
+ </processors>
+ <processors>
+ <id>86750867-1f2e-3dcd-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <position>
+ <x>1140.7820775097357</x>
+ <y>1192.5762988348474</y>
+ </position>
+ <bundle>
+ <artifact>nifi-standard-nar</artifact>
+ <group>org.apache.nifi</group>
+ <version>1.8.0</version>
+ </bundle>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>HTTP Method</key>
+ <value>
+ <name>HTTP Method</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Remote URL</key>
+ <value>
+ <name>Remote URL</name>
+ </value>
+ </entry>
+ <entry>
+ <key>SSL Context Service</key>
+ <value>
+
<identifiesControllerService>org.apache.nifi.ssl.SSLContextService</identifiesControllerService>
+ <name>SSL Context Service</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Connection Timeout</key>
+ <value>
+ <name>Connection Timeout</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Read Timeout</key>
+ <value>
+ <name>Read Timeout</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Include Date Header</key>
+ <value>
+ <name>Include Date Header</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Follow Redirects</key>
+ <value>
+ <name>Follow Redirects</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Attributes to Send</key>
+ <value>
+ <name>Attributes to Send</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Basic Authentication Username</key>
+ <value>
+ <name>Basic Authentication Username</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Basic Authentication Password</key>
+ <value>
+ <name>Basic Authentication Password</name>
+ </value>
+ </entry>
+ <entry>
+ <key>proxy-configuration-service</key>
+ <value>
+
<identifiesControllerService>org.apache.nifi.proxy.ProxyConfigurationService</identifiesControllerService>
+ <name>proxy-configuration-service</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Proxy Host</key>
+ <value>
+ <name>Proxy Host</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Proxy Port</key>
+ <value>
+ <name>Proxy Port</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Proxy Type</key>
+ <value>
+ <name>Proxy Type</name>
+ </value>
+ </entry>
+ <entry>
+ <key>invokehttp-proxy-user</key>
+ <value>
+ <name>invokehttp-proxy-user</name>
+ </value>
+ </entry>
+ <entry>
+ <key>invokehttp-proxy-password</key>
+ <value>
+ <name>invokehttp-proxy-password</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Put Response Body In Attribute</key>
+ <value>
+ <name>Put Response Body In Attribute</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Max Length To Put In Attribute</key>
+ <value>
+ <name>Max Length To Put In Attribute</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Digest Authentication</key>
+ <value>
+ <name>Digest Authentication</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Always Output Response</key>
+ <value>
+ <name>Always Output Response</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Trusted Hostname</key>
+ <value>
+ <name>Trusted Hostname</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Add Response Headers to Request</key>
+ <value>
+ <name>Add Response Headers to Request</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Content-Type</key>
+ <value>
+ <name>Content-Type</name>
+ </value>
+ </entry>
+ <entry>
+ <key>send-message-body</key>
+ <value>
+ <name>send-message-body</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Use Chunked Encoding</key>
+ <value>
+ <name>Use Chunked Encoding</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Penalize on "No Retry"</key>
+ <value>
+ <name>Penalize on "No Retry"</name>
+ </value>
+ </entry>
+ <entry>
+ <key>use-etag</key>
+ <value>
+ <name>use-etag</name>
+ </value>
+ </entry>
+ <entry>
+ <key>etag-max-cache-size</key>
+ <value>
+ <name>etag-max-cache-size</name>
+ </value>
+ </entry>
+ </descriptors>
+ <executionNode>ALL</executionNode>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>HTTP Method</key>
+ <value>POST</value>
+ </entry>
+ <entry>
+ <key>Remote URL</key>
+ <value>https://api.aylien.com/api/v1/sentiment</value>
+ </entry>
+ <entry>
+ <key>SSL Context Service</key>
+ </entry>
+ <entry>
+ <key>Connection Timeout</key>
+ <value>5 secs</value>
+ </entry>
+ <entry>
+ <key>Read Timeout</key>
+ <value>15 secs</value>
+ </entry>
+ <entry>
+ <key>Include Date Header</key>
+ <value>False</value>
+ </entry>
+ <entry>
+ <key>Follow Redirects</key>
+ <value>True</value>
+ </entry>
+ <entry>
+ <key>Attributes to Send</key>
+ <value>X-AYLIEN-TextAPI-Application.*</value>
+ </entry>
+ <entry>
+ <key>Basic Authentication Username</key>
+ </entry>
+ <entry>
+ <key>Basic Authentication Password</key>
+ </entry>
+ <entry>
+ <key>proxy-configuration-service</key>
+ </entry>
+ <entry>
+ <key>Proxy Host</key>
+ </entry>
+ <entry>
+ <key>Proxy Port</key>
+ </entry>
+ <entry>
+ <key>Proxy Type</key>
+ <value>http</value>
+ </entry>
+ <entry>
+ <key>invokehttp-proxy-user</key>
+ </entry>
+ <entry>
+ <key>invokehttp-proxy-password</key>
+ </entry>
+ <entry>
+ <key>Put Response Body In Attribute</key>
+ <value>true</value>
+ </entry>
+ <entry>
+ <key>Max Length To Put In Attribute</key>
+ <value>256</value>
+ </entry>
+ <entry>
+ <key>Digest Authentication</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Always Output Response</key>
+ <value>true</value>
+ </entry>
+ <entry>
+ <key>Trusted Hostname</key>
+ </entry>
+ <entry>
+ <key>Add Response Headers to Request</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Content-Type</key>
+ <value>application/x-www-form-urlencoded</value>
+ </entry>
+ <entry>
+ <key>send-message-body</key>
+ <value>true</value>
+ </entry>
+ <entry>
+ <key>Use Chunked Encoding</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Penalize on "No Retry"</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>use-etag</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>etag-max-cache-size</key>
+ <value>10MB</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <executionNodeRestricted>false</executionNodeRestricted>
+ <name>Call Sentiment API</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>Failure</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>No Retry</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>Original</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>Response</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>Retry</name>
+ </relationships>
+ <state>STOPPED</state>
+ <style/>
+ <type>org.apache.nifi.processors.standard.InvokeHTTP</type>
+ </processors>
+ <processors>
+ <id>99d947c2-75ae-339f-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <position>
+ <x>1140.7820775097357</x>
+ <y>721.6787892546462</y>
+ </position>
+ <bundle>
+ <artifact>nifi-standard-nar</artifact>
+ <group>org.apache.nifi</group>
+ <version>1.8.0</version>
+ </bundle>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>Regular Expression</key>
+ <value>
+ <name>Regular Expression</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Replacement Value</key>
+ <value>
+ <name>Replacement Value</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Character Set</key>
+ <value>
+ <name>Character Set</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Maximum Buffer Size</key>
+ <value>
+ <name>Maximum Buffer Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Replacement Strategy</key>
+ <value>
+ <name>Replacement Strategy</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Evaluation Mode</key>
+ <value>
+ <name>Evaluation Mode</name>
+ </value>
+ </entry>
+ </descriptors>
+ <executionNode>ALL</executionNode>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Regular Expression</key>
+ <value>.*</value>
+ </entry>
+ <entry>
+ <key>Replacement Value</key>
+ <value>${message}</value>
+ </entry>
+ <entry>
+ <key>Character Set</key>
+ <value>UTF-8</value>
+ </entry>
+ <entry>
+ <key>Maximum Buffer Size</key>
+ <value>1 MB</value>
+ </entry>
+ <entry>
+ <key>Replacement Strategy</key>
+ <value>Always Replace</value>
+ </entry>
+ <entry>
+ <key>Evaluation Mode</key>
+ <value>Entire text</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <executionNodeRestricted>false</executionNodeRestricted>
+ <name>Replace Content with URL Encoding</name>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>failure</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <state>RUNNING</state>
+ <style/>
+ <type>org.apache.nifi.processors.standard.ReplaceText</type>
+ </processors>
+ <processors>
+ <id>a76ad4da-b2d7-375a-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <position>
+ <x>1140.7820775097357</x>
+ <y>279.16976164245034</y>
+ </position>
+ <bundle>
+ <artifact>nifi-standard-nar</artifact>
+ <group>org.apache.nifi</group>
+ <version>1.8.0</version>
+ </bundle>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>Character Set</key>
+ <value>
+ <name>Character Set</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Maximum Buffer Size</key>
+ <value>
+ <name>Maximum Buffer Size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Maximum Capture Group Length</key>
+ <value>
+ <name>Maximum Capture Group Length</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Enable Canonical Equivalence</key>
+ <value>
+ <name>Enable Canonical Equivalence</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Enable Case-insensitive Matching</key>
+ <value>
+ <name>Enable Case-insensitive Matching</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Permit Whitespace and Comments in Pattern</key>
+ <value>
+ <name>Permit Whitespace and Comments in
Pattern</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Enable DOTALL Mode</key>
+ <value>
+ <name>Enable DOTALL Mode</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Enable Literal Parsing of the Pattern</key>
+ <value>
+ <name>Enable Literal Parsing of the Pattern</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Enable Multiline Mode</key>
+ <value>
+ <name>Enable Multiline Mode</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Enable Unicode-aware Case Folding</key>
+ <value>
+ <name>Enable Unicode-aware Case Folding</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Enable Unicode Predefined Character Classes</key>
+ <value>
+ <name>Enable Unicode Predefined Character
Classes</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Enable Unix Lines Mode</key>
+ <value>
+ <name>Enable Unix Lines Mode</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Include Capture Group 0</key>
+ <value>
+ <name>Include Capture Group 0</name>
+ </value>
+ </entry>
+ <entry>
+ <key>extract-text-enable-repeating-capture-group</key>
+ <value>
+
<name>extract-text-enable-repeating-capture-group</name>
+ </value>
+ </entry>
+ <entry>
+ <key>message.body</key>
+ <value>
+ <name>message.body</name>
+ </value>
+ </entry>
+ </descriptors>
+ <executionNode>ALL</executionNode>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Character Set</key>
+ <value>UTF-8</value>
+ </entry>
+ <entry>
+ <key>Maximum Buffer Size</key>
+ <value>1 MB</value>
+ </entry>
+ <entry>
+ <key>Maximum Capture Group Length</key>
+ <value>1024</value>
+ </entry>
+ <entry>
+ <key>Enable Canonical Equivalence</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Enable Case-insensitive Matching</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Permit Whitespace and Comments in Pattern</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Enable DOTALL Mode</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Enable Literal Parsing of the Pattern</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Enable Multiline Mode</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Enable Unicode-aware Case Folding</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Enable Unicode Predefined Character Classes</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Enable Unix Lines Mode</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>Include Capture Group 0</key>
+ <value>true</value>
+ </entry>
+ <entry>
+ <key>extract-text-enable-repeating-capture-group</key>
+ <value>false</value>
+ </entry>
+ <entry>
+ <key>message.body</key>
+ <value>.*</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <executionNodeRestricted>false</executionNodeRestricted>
+ <name>Promote Content To FF</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>matched</name>
+ </relationships>
+ <relationships>
+ <autoTerminate>true</autoTerminate>
+ <name>unmatched</name>
+ </relationships>
+ <state>RUNNING</state>
+ <style/>
+ <type>org.apache.nifi.processors.standard.ExtractText</type>
+ </processors>
+ <processors>
+ <id>ea52b353-7567-3380-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <position>
+ <x>1140.7820775097357</x>
+ <y>27.563473950195657</y>
+ </position>
+ <bundle>
+ <artifact>nifi-standard-nar</artifact>
+ <group>org.apache.nifi</group>
+ <version>1.8.0</version>
+ </bundle>
+ <config>
+ <bulletinLevel>WARN</bulletinLevel>
+ <comments></comments>
+
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <descriptors>
+ <entry>
+ <key>Base Path</key>
+ <value>
+ <name>Base Path</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Listening Port</key>
+ <value>
+ <name>Listening Port</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Max Data to Receive per Second</key>
+ <value>
+ <name>Max Data to Receive per Second</name>
+ </value>
+ </entry>
+ <entry>
+ <key>SSL Context Service</key>
+ <value>
+
<identifiesControllerService>org.apache.nifi.ssl.RestrictedSSLContextService</identifiesControllerService>
+ <name>SSL Context Service</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Authorized DN Pattern</key>
+ <value>
+ <name>Authorized DN Pattern</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Max Unconfirmed Flowfile Time</key>
+ <value>
+ <name>Max Unconfirmed Flowfile Time</name>
+ </value>
+ </entry>
+ <entry>
+ <key>HTTP Headers to receive as Attributes
(Regex)</key>
+ <value>
+ <name>HTTP Headers to receive as Attributes
(Regex)</name>
+ </value>
+ </entry>
+ <entry>
+ <key>Return Code</key>
+ <value>
+ <name>Return Code</name>
+ </value>
+ </entry>
+ <entry>
+ <key>multipart-request-max-size</key>
+ <value>
+ <name>multipart-request-max-size</name>
+ </value>
+ </entry>
+ <entry>
+ <key>multipart-read-buffer-size</key>
+ <value>
+ <name>multipart-read-buffer-size</name>
+ </value>
+ </entry>
+ </descriptors>
+ <executionNode>ALL</executionNode>
+ <lossTolerant>false</lossTolerant>
+ <penaltyDuration>30 sec</penaltyDuration>
+ <properties>
+ <entry>
+ <key>Base Path</key>
+ <value>demo</value>
+ </entry>
+ <entry>
+ <key>Listening Port</key>
+ <value>10222</value>
+ </entry>
+ <entry>
+ <key>Max Data to Receive per Second</key>
+ </entry>
+ <entry>
+ <key>SSL Context Service</key>
+ </entry>
+ <entry>
+ <key>Authorized DN Pattern</key>
+ <value>.*</value>
+ </entry>
+ <entry>
+ <key>Max Unconfirmed Flowfile Time</key>
+ <value>60 secs</value>
+ </entry>
+ <entry>
+ <key>HTTP Headers to receive as Attributes
(Regex)</key>
+ </entry>
+ <entry>
+ <key>Return Code</key>
+ <value>200</value>
+ </entry>
+ <entry>
+ <key>multipart-request-max-size</key>
+ <value>1 MB</value>
+ </entry>
+ <entry>
+ <key>multipart-read-buffer-size</key>
+ <value>512 KB</value>
+ </entry>
+ </properties>
+ <runDurationMillis>0</runDurationMillis>
+ <schedulingPeriod>0 sec</schedulingPeriod>
+ <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+ <yieldDuration>1 sec</yieldDuration>
+ </config>
+ <executionNodeRestricted>false</executionNodeRestricted>
+ <name>Listen For Instructions</name>
+ <relationships>
+ <autoTerminate>false</autoTerminate>
+ <name>success</name>
+ </relationships>
+ <state>RUNNING</state>
+ <style/>
+ <type>org.apache.nifi.processors.standard.ListenHTTP</type>
+ </processors>
+ <remoteProcessGroups>
+ <id>6051b4d8-c5d9-351c-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <position>
+ <x>235.87643001709012</x>
+ <y>305.6273502929689</y>
+ </position>
+ <comments></comments>
+ <communicationsTimeout>30 sec</communicationsTimeout>
+ <contents>
+ <inputPorts>
+ <batchSettings/>
+
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <connected>false</connected>
+ <exists>true</exists>
+ <groupId>73514909-618e-31cd-9e20-e48ecb817d47</groupId>
+ <id>976037a4-da44-3d6f-b33d-69ff44c1d935</id>
+ <name>input-sentiment</name>
+ <targetId>9baa7112-0169-1000-ffff-ffff8a9f3d53</targetId>
+ <targetRunning>true</targetRunning>
+ <transmitting>false</transmitting>
+ <useCompression>false</useCompression>
+ </inputPorts>
+ <inputPorts>
+ <batchSettings/>
+ <comments></comments>
+
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <connected>false</connected>
+ <exists>true</exists>
+ <groupId>73514909-618e-31cd-9e20-e48ecb817d47</groupId>
+ <id>1de0d044-ccc5-3044-832d-e6291ba7dcbf</id>
+ <name>windows-input</name>
+ <targetId>7f49ce13-0169-1000-ffff-ffffbf4dfd35</targetId>
+ <targetRunning>true</targetRunning>
+ <transmitting>false</transmitting>
+ <useCompression>false</useCompression>
+ </inputPorts>
+ <inputPorts>
+ <batchSettings/>
+ <comments></comments>
+
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <connected>true</connected>
+ <exists>true</exists>
+ <groupId>73514909-618e-31cd-9e20-e48ecb817d47</groupId>
+ <id>551e3122-9607-1ef3-944b-e0702188b20b</id>
+ <name>Input Edge Data</name>
+ <targetId>f8fa0b39-dffa-3b45-9588-50ec1b723c7c</targetId>
+ <targetRunning>true</targetRunning>
+ <transmitting>true</transmitting>
+ <useCompression>false</useCompression>
+ </inputPorts>
+ </contents>
+ <proxyHost></proxyHost>
+ <proxyUser></proxyUser>
+ <targetUri>http://my.nifi.com:9090/nifi</targetUri>
+ <targetUris>http://my.nifi.com:9090/nifi</targetUris>
+ <transportProtocol>RAW</transportProtocol>
+ <yieldDuration>10 sec</yieldDuration>
+ </remoteProcessGroups>
+ <remoteProcessGroups>
+ <id>8be8c0c4-d63b-3ea7-0000-000000000000</id>
+ <parentGroupId>9ac98b13-3f48-31c3-0000-000000000000</parentGroupId>
+ <position>
+ <x>1139.8595666699198</x>
+ <y>1518.0175117648382</y>
+ </position>
+ <comments></comments>
+ <communicationsTimeout>30 sec</communicationsTimeout>
+ <contents>
+ <inputPorts>
+ <batchSettings/>
+ <comments></comments>
+
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <connected>false</connected>
+ <exists>true</exists>
+ <groupId>9bb84560-0169-1000-0000-00007562fc70</groupId>
+ <id>c8d37a64-baeb-33f4-81c4-1a49a5ce8b9b</id>
+ <name>windows-input</name>
+ <targetId>7f49ce13-0169-1000-ffff-ffffbf4dfd35</targetId>
+ <targetRunning>true</targetRunning>
+ <transmitting>false</transmitting>
+ <useCompression>false</useCompression>
+ </inputPorts>
+ <inputPorts>
+ <batchSettings/>
+
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <connected>true</connected>
+ <exists>true</exists>
+ <groupId>9bb84560-0169-1000-0000-00007562fc70</groupId>
+ <id>59c5e722-3080-33dd-afa6-0a58f15e2174</id>
+ <name>input-sentiment</name>
+ <targetId>9baa7112-0169-1000-ffff-ffff8a9f3d53</targetId>
+ <targetRunning>true</targetRunning>
+ <transmitting>false</transmitting>
+ <useCompression>false</useCompression>
+ </inputPorts>
+ <inputPorts>
+ <batchSettings/>
+ <comments></comments>
+
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
+ <connected>false</connected>
+ <exists>true</exists>
+ <groupId>9bb84560-0169-1000-0000-00007562fc70</groupId>
+ <id>dc505322-f5f7-363a-b029-7535257c7970</id>
+ <name>Input Edge Data</name>
+ <targetId>f8fa0b39-dffa-3b45-9588-50ec1b723c7c</targetId>
+ <targetRunning>true</targetRunning>
+ <transmitting>false</transmitting>
+ <useCompression>false</useCompression>
+ </inputPorts>
+ </contents>
+ <proxyHost></proxyHost>
+ <proxyUser></proxyUser>
+ <targetUri>http://my.nifi.com:9090/nifi</targetUri>
+ <targetUris>http://my.nifi.com:9090/nifi</targetUris>
+ <transportProtocol>RAW</transportProtocol>
+ <yieldDuration>10 sec</yieldDuration>
+ </remoteProcessGroups>
+ </snippet>
+ <timestamp>03/20/2019 15:55:49 UTC</timestamp>
+</template>