[
https://issues.apache.org/jira/browse/NIFI-11627?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17770593#comment-17770593
]
Chuck Tilly commented on NIFI-11627:
------------------------------------
[~exceptionfactory] A specific use-case would be every single time you want
to validate your data, which is always. Hence the need for this processor.
But storing the schema in the attributes is not the solution, you are right
about that. Rather, it would be better if the flow file contained a +reference+
to its schema. The schema itself is stored as a value in the Parameter
Contexts, and the ValidateJSON Processor uses this schema to perform the
validation. This is exactly the same paradigm that the AvroSchemaRegistry
uses, except the schemas are stored in a Controller Service instead of a
Parameter Context (the principle is the same though). So assuming you have a
flowfile with an attribute named "schema.name" (e.g. schema.name = blue-cars),
then the syntax for referencing a schema stored as a Parameter Context value
would be:
JSON Schema = #\{${schema.name}}
Within the Parameter Contexts there would be a value "blue-cars", and it would
contain the JSON schema for blue-cars.
The benefits are:
1) Only a single ValidateJSON processor is needed to perform all the
validations. This allows for clean and simple flows that are easy to manage,
and consume fewer resources.
2) This approach is consistent with how schema validation is done in Nifi
using schema registries. It is a well established pattern in NiFi.
> Add Dynamic Schema References to ValidateJSON Processor
> -------------------------------------------------------
>
> Key: NIFI-11627
> URL: https://issues.apache.org/jira/browse/NIFI-11627
> Project: Apache NiFi
> Issue Type: Improvement
> Components: Extensions
> Affects Versions: 1.19.1
> Reporter: Chuck Tilly
> Assignee: Daniel Stieglitz
> Priority: Major
>
> For the ValidateJSON processor, add support for flowfile attribute references
> that will allow for a JSON schema located in the Parameter Contexts, to be
> referenced dynamically based on a flowfile attribute. e.g.
> {code:java}
> #{${schema.name}} {code}
>
> The benefits of adding support for attribute references are significant.
> Adding this capability will allow a single processor to be used for all JSON
> schema validation. Unfortunately, the current version of this processor
> requires a dedicated processor for every schema, i.e. 12 schemas requires 12
> ValidateJSON processors. This is very laborious to construct and maintain,
> and resource expensive.
> ValidateJSON processor (https://issues.apache.org/jira/browse/NIFI-7392)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)