SAIF.Framework.Connection operations and processes¶
SAIF.Framework.Connection exposes exactly two operations, both implemented as overloads of clsConnection.getConnection. Neither operation executes SQL or touches a database directly; each one resolves a connection string — either locally or from the remote ConnectInfo SOAP service — and assigns it to a caller-supplied OracleConnection or SqlConnection. Each operation's detailed, step-by-step logic lives in its own page under operations/.
Operation catalog¶
| Operation | Intent | Trigger | Inputs | Outputs | Rules | Tables | SQL |
|---|---|---|---|---|---|---|---|
| Resolve Oracle connection | Populate an OracleConnection.ConnectionString either from local override state supplied at construction or from the remote ConnectInfo service |
Caller invokes the Oracle overload of clsConnection.getConnection |
inInstance, inCode, inUserid, inCnObj, constructor state (m_Userid, m_Password, m_ConnectStringOverride), optional pooling arguments |
Oracle connection object with a populated ConnectionString |
BR-001, BR-002, BR-003 | — | — |
| Resolve SQL Server connection | Populate a SqlConnection.ConnectionString from the remote ConnectInfo service |
Caller invokes the SQL Server overload of clsConnection.getConnection |
inServer, inCode, inDatabase, inCnObj |
SQL Server connection object with a populated ConnectionString |
BR-004 | — | — |
Process flow diagram¶
The following diagram visualizes how a caller's connection request branches by database type and, for Oracle, by whether override credentials were supplied.
flowchart TD
Start([Caller requests connection string]) --> Type{Oracle or SQL Server overload?}
Type -->|Oracle| OracleOverride{Override credentials supplied at construction?}
OracleOverride -->|Yes| OracleLocal[Compose connection string locally]
OracleOverride -->|No| OracleRemote[Resolve string via ConnectInfo.GetOracleConnectString]
OracleRemote --> OracleNormalize[Restore ZSPECIALCHAR token and strip Load Balance Timeout]
OracleLocal --> OracleAssign[Assign Oracle ConnectionString]
OracleNormalize --> OracleAssign
Type -->|SQL Server| SqlRemote[Resolve string via ConnectInfo.GetSQLConnectString]
SqlRemote --> SqlAssign[Assign SQL Server ConnectionString]
OracleAssign --> End([Return connection object to caller])
SqlAssign --> End
Failure and edge-case behavior¶
- On the Oracle override branch,
clsConnectionnever allocates a replacementOracleConnectionwhen the caller passesinCnObjasNothing; the assignment toConnectionStringis skipped and the caller receives no usable object. - The Oracle overload ignores its
inUseridparameter and all optional pooling arguments (inPoolFlag,inLifeTime,inMaxPoolSize,inMinPoolSize) on both the override and remote-resolution branches. The SQL Server overload has no equivalent parameters and always derives the audit identity fromSystem.Environment.UserName. - The override branch composes the Oracle connection string with the literal placeholder
******rather than the storedm_Passwordvalue; the analysis could not confirm why the password field is not read directly, so this behavior is treated as an unconfirmed limitation.** - Both overloads make a synchronous, blocking call into the
ConnectInfoSOAP proxy and contain no retry, timeout, or fallback logic; an unreachableConnectInfoservice surfaces as an unhandled exception to the caller for any request that is not served by the Oracle override path. clsConnectiononly ever populatesConnectionString. It never opens, tests, or disposes the connection object — that lifecycle remains entirely the caller's responsibility.
Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.
Related documentation¶
Sources¶
SAIF.Framework.Connection\clsConnection.vbSAIF.Framework.Connection\Web References\ConnectInfo\Reference.vbSAIF.Framework.Connection\My Project\Settings.Designer.vbSAIF.Framework.Connection\app.config