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

Rob Fellows updated NIFI-16449:
-------------------------------
    Fix Version/s: 2.13.0
       Resolution: Fixed
           Status: Resolved  (was: Patch Available)

> Promote canvas Create/Edit dialogs to reusable output-driven components
> -----------------------------------------------------------------------
>
>                 Key: NIFI-16449
>                 URL: https://issues.apache.org/jira/browse/NIFI-16449
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Core UI
>            Reporter: Matt Gilman
>            Assignee: Matt Gilman
>            Priority: Major
>             Fix For: 2.13.0
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> h2. Background
> Canvas component Create/Edit dialogs currently have mixed ownership.
> Create dialogs are located under the legacy flow-designer feature and 
> dispatch flow-designer NgRx actions directly. Although Edit dialogs are under 
> ui/common/component-dialogs, some still depend on page-specific state or 
> behavior.
> This prevents the reusable canvas and connector canvas from using these 
> dialogs with their own state, effects, API boundaries, error contexts, and 
> saving state.
> NIFI-16447 exposes typed reusable-canvas mutation intent, including 
> createConnectionRequested, but connection creation cannot be completed 
> cleanly until the Create Connection dialog emits intent instead of 
> dispatching flow-designer actions.
> h2. Goals
>  * Make canvas Create/Edit dialogs reusable by flow designer, connector 
> canvas, and other canvas hosts.
>  * Make dialogs emit typed user intent without dispatching page-specific NgRx 
> actions.
>  * Let each host own persistence, saving state, error handling, and response 
> reconciliation.
>  * Preserve existing flow-designer behavior and appearance.
> h2. Scope
> h3. Shared dialog placement
> Move or consolidate the following flow-designer Create dialogs under 
> ui/common/component-dialogs:
>  * Create Processor
>  * Create Port
>  * Create Process Group
>  * Create Remote Process Group
>  * Create Connection
> Review related component-creation dialogs, including label creation/editing, 
> grouping, and registry import, and promote those required by reusable-canvas 
> hosts.
> h3. Dialog contracts
>  * Replace direct Store dispatch with typed outputs.
>  * Receive saving state, breadcrumbs, extension metadata, child ports, 
> defaults, and other host-owned data through inputs or callbacks.
>  * Keep form construction and validation inside the dialog.
>  * Keep API requests and NgRx actions outside the dialog.
>  * Support host-specific error contexts without coupling the dialog to one 
> page.
>  * Use canonical entity and request types from shared flow contracts.
> h3. Flow designer integration
>  * Open shared dialogs from flow-designer effects.
>  * Translate dialog outputs into existing flow-designer actions.
>  * Preserve current behavior, appearance, defaults, error handling, and 
> navigation.
> h3. Connector canvas integration
>  * Open shared dialogs from connector effects.
>  * Translate dialog outputs into connector-scoped typed actions.
>  * Complete createConnectionRequested integration introduced by NIFI-16447.
>  * Use connector-scoped services, saving state, error context, and 
> revision-aware reconciliation.
>  * Keep mutation commands gated by troubleshooting state and permissions.
> h3. Edit dialogs
> Review the existing shared Edit dialogs and remove remaining page-specific 
> Store dispatch or state dependencies so both canvas hosts can use the same 
> components.
> h2. Out of Scope
>  * Entering or ending troubleshooting mode.
>  * Changes to backend REST semantics.
>  * New component operations such as start, stop, enable, or disable.
>  * Visual redesign of the dialogs.
>  * Changes to connection eligibility rules.
> h2. Acceptance Criteria
>  * Shared Create/Edit dialogs do not dispatch flow-designer or connector NgRx 
> actions directly.
>  * Dialogs expose typed outputs for save/create intent.
>  * Flow designer retains its current behavior and appearance.
>  * Connector canvas can create a connection through its own actions, effects, 
> service, and reducer.
>  * Connector requests use the local client ID and canonical request payloads.
>  * Successful connector requests reconcile typed entity collections.
>  * Failed connector requests retain or restore optimistic UI state and use 
> the connector error context.
>  * Dialog cancellation cleans up temporary canvas previews.
>  * Unit tests cover both flow-designer and connector-host integration.
>  * Frontend lint, strict type-check, unit tests, and production build pass.



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

Reply via email to