Skip to content

SAIF.Business.Payment architecture

SAIF.Business.Payment is a component-tier BOF business library that serves as an eligibility-object and contract boundary in the payment domain. It defines the IBankAccount and iPaymentPreference interfaces, and it hosts the claim-payee-eligibility business objects (clsEligPayeeClaim and clsEligPayeeClaimCollection). No live SQL is executed by any class in this library.

Responsibilities

  • Determine and persist eligible-payee-for-claim-payment records (clsEligPayeeClaim and clsEligPayeeClaimCollection) in memory via BOF factory scaffolding.
  • Define the IBankAccount contract describing a bank account's public shape, implemented elsewhere.*
  • Define the iPaymentPreference contract describing a payee's preferred payment method, implemented elsewhere.*

Component boundaries

  • clsEligPayeeClaim: business object representing an eligible payee for a claim payment; inherits clsBusinessBase and implements iPayee. All SQL properties either throw InvalidSQLProperty or return a single-space string literal, so no live SQL is executed.
  • clsEligPayeeClaimCollection: collection of clsEligPayeeClaim; inherits clsBusinessCollectionBase and implements its own nested IBusinessCriteria. BeforeRetrieve is empty and AfterRetrieve returns Me, so no live SQL is executed.
  • IBankAccount: read-only contract interface describing bank-account shape; implemented by clsBankAccount in SAIF.Business.Payment.EFT.*
  • iPaymentPreference: contract interface describing payment-preference shape through the PaymentPreferenceTypes enum and related routing/account properties; implemented by clsPaymentPreference and clsProviderPaymentPreference in SAIF.Business.Payment.EFT.*

Interaction model

  • IBankAccount and iPaymentPreference are defined here but implemented in the larger SAIF.Business.Payment.EFT library, confirming this library's role as the shared contract point between the two payment libraries.*
  • clsEligPayeeClaim and clsEligPayeeClaimCollection do not execute live SQL; the only non-throwing RetrieveSQL getter returns a single-space string literal with no request construction, parameters, table references, or stored-procedure calls.
  • The .nuspec dependency on SAIF.BOF.Business.Claim, SAIF.BOF.Business.Claim.Person, and SAIF.BOF.Business.View.Claim confirms this library's role is claim-payee-specific rather than general payment processing.

Architecture diagram

The following diagram shows the contract relationship between this library and its primary implementer, SAIF.Business.Payment.EFT.

flowchart TD
    EligPayee["clsEligPayeeClaim /<br>clsEligPayeeClaimCollection"] --> Framework["SAIF.BOF.Framework<br>clsBusinessBase / clsBusinessCollectionBase"]
    IBankAccount["IBankAccount contract"] -.-> BankAccountImpl["clsBankAccount<br>in SAIF.Business.Payment.EFT"]
    IPaymentPref["iPaymentPreference contract"] -.-> PaymentPrefImpl["clsPaymentPreference /<br>clsProviderPaymentPreference<br>in SAIF.Business.Payment.EFT"]
    EligPayee --> DB["(No live SQL executed)"]

Sequence diagram

The following diagram shows the claim-payee-eligibility creation sequence, noting that no live SQL is executed by this library.

sequenceDiagram
    participant Caller
    participant EligPayeeClaim as clsEligPayeeClaim
    participant Criteria as Nested Criteria (IBusinessCriteria)
    Caller->>EligPayeeClaim: NewEligPayeeClaim(dpi, personID)
    EligPayeeClaim->>Criteria: RetrieveSQL (returns single-space literal, no live SQL)
    Criteria-->>EligPayeeClaim: In-memory object constructed via BOF factory scaffolding
    EligPayeeClaim-->>Caller: Eligible-payee object (in-memory)

Design constraints

  • No live executable SQL was found in this library despite nested IBusinessCriteria classes being present; both classes use in-memory BOF factory scaffolding instead.
  • The library is Oracle-configured at the provider level (Oracle.ManagedDataAccess.Client registered in app.config and Web.config), but no executable SQL exists to classify at the statement level.
  • No security or authorization framework interaction was detected.
  • No configuration framework (IEnvironmentService, ConfigurationManager.AppSettings, DbConnectionManager) interaction was detected.
  • All dependencies are resolved as NuGet package references per the .nuspec; no local <ProjectReference> values were found.

Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.

Sources

  • Business\SAIF.Business.Payment\clsEligPayeeClaim.vb
  • Business\SAIF.Business.Payment\clsEligPayeeClaimCollection.vb
  • Business\SAIF.Business.Payment\IBankAccount.vb
  • Business\SAIF.Business.Payment\IPaymentPreference.vb
  • Business\SAIF.Business.Payment\SAIF.BOF.Business.Payment.nuspec
  • Business\SAIF.Business.Payment\app.config
  • Business\SAIF.Business.Payment\Web.config