SAIF.Business.Policy.Affiliate architecture¶
SAIF.Business.Policy.Affiliate is a mid-tier BOF business-object library that models affiliates attached to a policy: interested parties, preferred workers, and corporate officer exemptions. It uses shared base classes to centralize association SQL and delegates lifecycle orchestration to framework data-portal services rather than managing connections or transactions directly.
Responsibilities¶
- Model the
AFFILIATEperson entity and theBUSINESS_AFFILIATEpolicy-association entity. - Differentiate interested parties and preferred workers by
AFFILIATE_TYPE_CODEwhile reusing the same shared join fragments. - Retrieve corporate officer exemptions as a separate result-set-based object family.
- Resolve code descriptions through framework code collections and expose nested affiliate objects where required.
Component boundaries¶
clsAffiliate(clsBusinessBase*): standalone person entity keyed by SSN.clsPolicyAffiliateBase/clsPolicyAffiliateBaseCollection: abstract templates that centralize association identity, joined affiliate hydration, and common retrieve criteria.clsInterestedParty/clsInterestedPartyCollection: concrete affiliate-type-1policy associations.clsPolicyPreferredWorker/clsPolicyPreferredWorkerCollection: concrete affiliate-type-2policy associations with a lazy eligibility lookup againstPREFERRED_WORKER.clsCorporateOfficerExemption/clsCorporateOfficerExemptionCollection: exemption objects loaded throughclsResultSetrather thanIDataReader.
Interaction model¶
- Standard BOF retrieve callbacks (
BeforeRetrieve/AfterRetrieve) drive all keyed and collection retrievals except the preferred-worker eligibility lookup. clsPolicyAffiliateBase.Fillhydrates a nestedclsAffiliatefrom the same joined row so callers receive the association and person together.clsPolicyPreferredWorker.GetPreferredWorkerDatacreates an application-layer portal request on first access to eligibility properties and selects the earliest qualifying eligibility row.- All persistence-oriented SQL properties throw
ApplicationException, so the library remains retrieve-only even when objects are editable in memory.
Architecture diagram¶
The following diagram shows the affiliate/association hierarchy and its retrieve paths.
flowchart TD
Caller[Caller] --> A1[clsAffiliate]
Caller --> A2[clsInterestedPartyCollection]
Caller --> A3[clsPolicyPreferredWorkerCollection]
Caller --> A4[clsCorporateOfficerExemptionCollection]
A2 --> Base[clsPolicyAffiliateBase<br>shared association logic]
A3 --> Base
Base --> Aff[clsAffiliate<br>nested hydration]
A3 -. lazy lookup .-> Elig[GetPreferredWorkerData]
A1 --> Portal["IDataPortalInfo / IDataAccess*"]
Base --> Portal
A4 --> Portal
Elig --> Portal
Portal --> Oracle[(Oracle)]
Sequence diagram¶
The following diagram shows a representative interested-party collection retrieval.
sequenceDiagram
participant Client
participant Collection as clsInterestedPartyCollection
participant Portal as IDataAccess*
participant Oracle
Client->>Collection: GetInterestedPartyCollection(portal, policy, start, end)
Collection->>Portal: RetrieveObject(criteria)
Portal->>Oracle: Execute joined BUSINESS_AFFILIATE + AFFILIATE SQL
Oracle-->>Portal: IDataReader
Portal-->>Collection: Row stream
Collection->>Collection: Load child objects and optional cached code tables
Collection-->>Client: Populated collection
Design constraints¶
- The library is retrieve-only; no live create, insert, update, or delete SQL is exposed.
- Policy-affiliate queries surface personally identifying data such as SSN and date of birth, but no local authorization checks were found in this library.
- Interested-party and preferred-worker families use
IDataReader-style loading, while corporate officer exemptions useclsResultSet, so two BOF result patterns coexist in the same package.
Related documentation¶
- Index
- Overview
- Dependencies
- Operations and processes
- Business rules
- Database tables
- SQL catalog
- API reference
- Configuration
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¶
Business\SAIF.Business.Policy.Affiliate\clsAffiliate.vbBusiness\SAIF.Business.Policy.Affiliate\clsPolicyAffiliateBase.vbBusiness\SAIF.Business.Policy.Affiliate\clsPolicyAffiliateBaseCollection.vbBusiness\SAIF.Business.Policy.Affiliate\clsInterestedParty.vbBusiness\SAIF.Business.Policy.Affiliate\clsInterestedPartyCollection.vbBusiness\SAIF.Business.Policy.Affiliate\clsPolicyPreferredWorker.vbBusiness\SAIF.Business.Policy.Affiliate\clsPolicyPreferredWorkerCollection.vbBusiness\SAIF.Business.Policy.Affiliate\clsCorporateOfficerExemption.vbBusiness\SAIF.Business.Policy.Affiliate\clsCorporateOfficerExemptionCollection.vb