[ 
https://issues.apache.org/jira/browse/NIP-11?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

David Handermann resolved NIP-11.
---------------------------------
    Resolution: Fixed

> Introduce Connector extension point
> -----------------------------------
>
>                 Key: NIP-11
>                 URL: https://issues.apache.org/jira/browse/NIP-11
>             Project: NiFi Improvement Proposal
>          Issue Type: New Feature
>            Reporter: Mark Payne
>            Assignee: Mark Payne
>            Priority: Major
>
> h1. Motivation
> The Apache NiFi ecosystem currently caters primarily to Data Engineers and 
> Software Engineers, who possess the technical expertise required to navigate 
> its learning curve. While NiFi offers powerful capabilities for creating and 
> reusing versioned data flows, these flows often necessitate substantial 
> modifications, particularly when adapting to diverse source/destination 
> system authentication strategies. A consistent demand has emerged from less 
> technical users for a more "self-service" solution, alongside requests for 
> automated use cases where users can adjust a few properties without 
> undertaking significant flow alterations. To address these challenges and 
> broaden NiFi's accessibility, this proposal introduces a new "Connector" 
> concept.
> h1. Scope
> The introduction of the Connector abstraction represents a significant 
> undertaking that will necessitate extensive modifications across the NiFi 
> architecture. This initiative will require substantial additions to the 
> existing NiFi API and Framework. Furthermore, it will necessitate updates to 
> the flow.json definition and the various Versioned object models to 
> accommodate the new abstraction. Additionally, the user interface will 
> require updates to provide a cohesive and intuitive experience for 
> configuring and managing Connectors.
> h1. Description
> This proposal aims to introduce a new "Connector" abstraction and extension 
> point within Apache NiFi. A Connector will encapsulate a complete NiFi flow, 
> represented as a Process Group. This new entity will be responsible for the 
> lifecycle management of its constituent components, including their starting 
> and stopping. Crucially, a Connector will also be responsible for dynamically 
> updating its encapsulated flow based on the configuration it exposes to the 
> user. This dynamic update capability will encompass modifying Processor and 
> Controller Service properties, and potentially even adding or removing 
> components within the flow.
>  
> Unlike a Processor, which typically presents a flat list of configurable 
> properties, a Connector will feature a structured collection of 
> PropertyGroups. This organizational approach will enable developers to 
> logically separate different areas of configuration, such as distinct 
> sections for "Source configuration," "Destination configuration," 
> "Transformations," and "Enrichments." This structured approach enhances 
> clarity and ease of use for users.
>  
> Use of Custom UIs, or even more tailored reusable UI components could be used 
> in order to provide a clearer, more usable configuration for selecting source 
> entities, as well. For example, a UI might offer the ability to choose which 
> remote resources should be polled for data whereas we typically rely on 
> domain specific languages such as glob patterns or regular expressions. While 
> this is feasible at a Processor level, it can be made more reusable and 
> consistent among components with Connectors, and that information can be used 
> to more intelligently configure the flow for the user.
>  
> Furthermore, the Connector abstraction will provide a robust foundation for 
> more safely upgrading data flows from one version to another. This is 
> achieved by enabling the execution of custom code to gracefully migrate 
> configurations and flows. This capability extends beyond individual component 
> updates, potentially allowing for complex operations such as migrating state 
> between different components, which is not feasible at the individual 
> component level.
>  
> Finally, the Connector concept lays the groundwork for building future 
> capabilities that are inherently meaningful at the flow level, as opposed to 
> the single component (Processor or Controller Service) level. Examples of 
> such capabilities include comprehensive validation of an entire flow, 
> gathering holistic metrics that provide a more complete operational picture, 
> or providing metrics specifically tailored for intelligent scaling decisions.
>  
> h1. Expected API
> The NiFi API will be impacted significantly. While it’s difficult to entirely 
> suss out the full API, an initial implementation can be found at 
> [https://github.com/markap14/nifi-api/tree/connectors/src/main/java/org/apache/nifi/components/connector]
>  
> Given the scope, the API will be noted as experimental and may change in a 
> non-backward compatible manner between minor versions until the API has been 
> more fully validated through developing concrete implementations.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to