Flow Studio
Datasource Registry
The IDatasourceRegistry — how datasources are defined, registered by ID, and resolved at runtime with connection pooling and credential isolation.
IDatasourceRegistry
public interface IDatasourceRegistry
{
DatasourceDefinition GetDatasource(string datasourceId);
bool TryGetDatasource(string datasourceId, out DatasourceDefinition definition);
IReadOnlyCollection<string> RegisteredDatasourceIds { get; }
}
public record DatasourceDefinition
{
public string DatasourceId { get; init; } = default!;
public DatasourceType Type { get; init; } // Sql | Rest | DataOcean
public string DisplayName { get; init; } = default!;
public int CredentialId { get; init; } // connection string / API key via ICredentialResolver
public string? Host { get; init; } // for SQL: server host
public string? Database { get; init; } // for SQL: database name
public string? BaseUrl { get; init; } // for REST: base URL
public int? Port { get; init; }
public int ConnectionPoolSize { get; init; } = 10;
}
Registering a Datasource
// Register via API or DI:
services.AddDatasource(new DatasourceDefinition
{
DatasourceId = "payroll-db",
Type = DatasourceType.Sql,
DisplayName = "Payroll PostgreSQL Database",
CredentialId = 31, // connection string stored via ICredentialResolver
Host = "db.acme.internal",
Database = "payroll",
Port = 5432,
ConnectionPoolSize = 20
});
services.AddDatasource(new DatasourceDefinition
{
DatasourceId = "erp-api",
Type = DatasourceType.Rest,
DisplayName = "ERP REST API",
CredentialId = 45, // API key via ICredentialResolver
BaseUrl = "https://erp.acme.com/api/v2"
});
Connection Pooling
The IDatasourceConnectionFactory maintains a connection pool per datasourceId. Connections are reused across node executions. The pool size is configurable per datasource definition via ConnectionPoolSize.
Node designer dropdown: The Flow Studio node inspector shows a dropdown of all registered datasource IDs when configuring a SQL or REST datasource node. The dropdown is populated from
IDatasourceRegistry.RegisteredDatasourceIds.