Skip to content

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, clsConnection never allocates a replacement OracleConnection when the caller passes inCnObj as Nothing; the assignment to ConnectionString is skipped and the caller receives no usable object.
  • The Oracle overload ignores its inUserid parameter 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 from System.Environment.UserName.
  • The override branch composes the Oracle connection string with the literal placeholder ****** rather than the stored m_Password value; 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 ConnectInfo SOAP proxy and contain no retry, timeout, or fallback logic; an unreachable ConnectInfo service surfaces as an unhandled exception to the caller for any request that is not served by the Oracle override path.
  • clsConnection only ever populates ConnectionString. 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.

Sources

  • SAIF.Framework.Connection\clsConnection.vb
  • SAIF.Framework.Connection\Web References\ConnectInfo\Reference.vb
  • SAIF.Framework.Connection\My Project\Settings.Designer.vb
  • SAIF.Framework.Connection\app.config