FluxFlow.Components.Routing.Composition 1.4.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package FluxFlow.Components.Routing.Composition --version 1.4.0
                    
NuGet\Install-Package FluxFlow.Components.Routing.Composition -Version 1.4.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FluxFlow.Components.Routing.Composition" Version="1.4.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FluxFlow.Components.Routing.Composition" Version="1.4.0" />
                    
Directory.Packages.props
<PackageReference Include="FluxFlow.Components.Routing.Composition" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FluxFlow.Components.Routing.Composition --version 1.4.0
                    
#r "nuget: FluxFlow.Components.Routing.Composition, 1.4.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FluxFlow.Components.Routing.Composition@1.4.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FluxFlow.Components.Routing.Composition&version=1.4.0
                    
Install as a Cake Addin
#tool nuget:?package=FluxFlow.Components.Routing.Composition&version=1.4.0
                    
Install as a Cake Tool

FluxFlow.Components.Routing.Composition

Optional FluxFlow.Composition registration helpers for the standalone routing nodes from FluxFlow.Components.Routing.

This package does not choose an expression language, scan assemblies, resolve CLR types from strings, or create selector resources. Hosts register closed routing node types explicitly and provide keyed selector delegates where a node needs routing logic.

Registration

services.AddKeyedSingleton<Func<OrderMessage, string?>>(
    "order-route",
    order => order.Kind);

services
    .AddFluxFlowComposition(configuration)
    .RegisterNodes(registry => registry
        .RegisterSwitch<OrderMessage>()
        .RegisterFork<OrderMessage>()
        .RegisterMerge<OrderMessage>()
        .RegisterWindow<OrderMessage>()
        .RegisterCorrelation<OrderMessage>()
        .RegisterJoin<RequestMessage, ResponseMessage>());

Use custom node type names when a host needs more than one input shape:

registry
    .RegisterSwitch<OrderMessage>("flow.switch.order")
    .RegisterJoin<RequestMessage, ResponseMessage>("flow.join.requests");

Node Types

Type Node Required resources Ports
flow.switch FlowSwitchNode<TInput> routeKeySelector Input, Output, Matched, Default, optional Routed, configured route-output ports
flow.fork FlowForkNode<TInput> none Input, Output, configured output ports
flow.merge FlowMergeNode<TInput> none Input, Output
flow.window FlowWindowNode<TInput> none Input, Output
flow.correlation FlowCorrelationNode<TInput> keySelector, sideSelector Input, Output, Matched, Timeouts
flow.join FlowJoinNode<TLeft,TRight> leftKeySelector, rightKeySelector Left, Right, Output, Timeouts

clock is an optional keyed TimeProvider resource for deterministic timing and diagnostics. Selector delegates are required keyed resources for switch, correlation, and join nodes. Option fields such as Engine, InputType, LeftInputType, and RightInputType remain diagnostic/config metadata; the CLR port types come from the closed generic registration selected by the host.

flow.switch and flow.fork expose output ports from node configuration at composition build time. Static registry metadata is intentionally limited to their input ports so config-defined output names are validated after their factories bind options.

Design Metadata

RoutingComponentDesignMetadataProvider exposes neutral Designer metadata for the six routing composition nodes. Hosts can add it to a ComponentDesignMetadataCatalog to populate palettes, editors, validation views, or generated documentation.

The provider describes node options, built-in ports, option grouping/editor hints, and host-owned resource picker hints. Selector delegates such as routeKeySelector, keySelector, sideSelector, leftKeySelector, and rightKeySelector are exposed as required resources for the nodes that need them, with delegate key-pattern hints for hosts. The optional clock resource is exposed separately from editable node options with a clock key-pattern hint. Switch routeOutputs and fork outputs are represented as configuration options because those dynamic ports are exposed after the composition factory binds node options. The metadata is authored through the shared validated Designer metadata builder while preserving the same public metadata contracts consumed by hosts. Built-in input and output port descriptors are also added through the builder.

Configuration

{
  "FluxFlow": {
    "Composition": {
      "workflows": {
        "main": {
          "nodes": {
            "route": {
              "type": "flow.switch",
              "resources": {
                "routeKeySelector": "order-route"
              },
              "configuration": {
                "routes": [ "priority", "standard" ],
                "routeOutputs": {
                  "priority": "Priority"
                },
                "emitRouteEnvelope": true,
                "boundedCapacity": 128
              }
            }
          },
          "links": []
        }
      }
    }
  }
}

Dynamic output names for switch and fork composition must be simple identifiers and cannot collide with built-in composition ports.

Invalid routing options, such as blank inputType, non-positive boundedCapacity, invalid window boundaries, or invalid correlation limits, fail during composition build and surface as factory diagnostics when build failures are configured as diagnostics.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
8.0.0-rc.1 83 9/5/2026
7.0.0-rc.1 92 8/9/2026
6.0.0 139 8/3/2026
1.4.0 135 7/3/2026
1.3.0 137 7/2/2026

Drops the FluxFlow.Composition.Hosting dependency (host-owned keyed resource resolution moved to the FluxFlow.Composition factory context) and adds the shared package icon.