SAIF.Application.Claim architecture¶
SAIF.Application.Claim is the claim-domain application layer: it specializes the domain-neutral SAIF.Application manager framework with claim identity, claim retrieval, and claim confidentiality rules, and is in turn specialized by the legal-domain layer (SAIF.Application.Claim.Legal). It owns claim context establishment, the fixed claim retrieve/security/save lifecycle, claim confidentiality evaluation, Oracle claim data-portal provisioning, shared claim message vocabulary, and ancillary service handles (imaging API client, claim task generator), while delegating all SQL and persistence logic to referenced business/view libraries.
Responsibilities¶
- Claim context establishment —
ClaimContextand theSetClaimContext/SetWorkerContextentry points define the only supported ways to bind a manager to a claim (claim number, claim id, or worker id); context is immutable once constructed. - Claim lifecycle template —
ChangeContextfixes the order retrieve claim → evaluate security → retrieve screen data for every claim application in the solution, andWritefixes the transaction bracket around every claim save. - Claim confidentiality evaluation —
ClaimSecuritytranslates claim attributes (IsWorkerConflict,IsExposure,IsHealthIssue,IsHostileWorker) plus the user's AD resources into four boolean access flags;ClaimUserAccessowns the four claim AD resource names. - Oracle claim data-portal provisioning —
OnCreateDataLayercreates theClaimDPIOracle portal with DB userCLM, andDPI(inKey)makes it the default handle for all downstream business objects. - Shared claim message vocabulary —
ClaimAppConstantscentralizes user-facing strings (claim not found, confidential denial, confirm-delete) reused across the LegalNet managers. - Ancillary service handles — the imaging API client and the claim task generator are created here so every derived claim manager gets them configured identically.
Component boundaries¶
ClaimAppManager(MustInherit): the abstract claim application-manager base class; owns the context/security/retrieve/write template and is extended bySAIF.Application.Claim.Legal.LegalManagerBase.ClaimContext: immutable value object capturing the current claim/worker identity (ClaimID,ClaimNumber,WorkerID,ContextSet).ClaimSecurity: per-claim access evaluator producingConflictAccess,ExposureAccess,SecureClaimAccess, andHealthIssueAccessflags.ClaimUserAccess(extendsUserAccessfromSAIF.Application): claim-specific AD resource accessor exposing the four claim security resource checks (SecureClaim,ConflictClaim,ExposureClaim,CollateralHealthClaim).ClaimAppConstants(extendsAppConstantsfromSAIF.Application): claim message/key string constants.Institutionstyped DataSet: an auto-generated, unreferenced banking-institution DataSet carried as a duplicated artifact from a shared project template; not consumed by any code in this library.*- No SQL/persistence boundary — this library never declares an
IBusinessCriteriaorIDataRequestand never writes SQL; data retrieval is delegated toclsClaimData,clsEmployeeData,ClaimServices(SAIF.BOF.Business.View.Claim), andclsClaimTaskGenerator(SAIF.Business.Tasks.Claim). It only provisions and hands out the data portal. - No legal-domain knowledge — case, attorney, firm, and schedule concepts live entirely in
SAIF.Application.Claim.Legal, which inherits from this library.
Interaction model¶
SAIF.Application.Claim.Legal.LegalManagerBaseand the LegalNet managers inheritClaimAppManagerand consumeClaimSecurity/ClaimAppConstants, invokingSetClaimContextto bind a claim and then relying on the inherited retrieve/write pipeline.ClaimAppManagerinheritsAppManagerBase(SAIF.Application), which invokes the protected template hooks (OnContextChanged,OnCheckSecurity,OnValidContext,OnInitialize,OnCreateDataLayer,OnTransactionStart,OnTransactionStop) implemented in this library.- Claim data retrieval and per-claim security-override checks are delegated to
clsClaimData,clsEmployeeData, andClaimServicesinSAIF.BOF.Business.View.Claim— this library only supplies the Oracle data-portal handle (ClaimDPI) those calls execute against. - Claim task creation/save is delegated to
clsClaimTaskGeneratorinSAIF.Business.Tasks.Claim, invoked fromNewTaskGenerator/SaveTasksduring a derived manager'sOnWrite(). - The imaging service handle (
ClaimImageApiClient) is built from theImagingAPI.Clientpackage using theimagingapiurlEnvironment API setting, giving derived managers a single, consistently configured imaging client. - Security decisions are advisory:
OnCheckSecuritycan only downgrade access toViewOnlyorNoAccess; a derived manager (e.g.LegalManagerBase) must callMarkUpdate()itself to enable editing.
Architecture diagram¶
The following diagram shows how this library sits between the domain-neutral application framework and the legal-domain layer, and which services it delegates to.
flowchart TD
UI["LegalMaintenance<br>(ASP.NET WebForms)"] --> LEG["SAIF.Application.Claim.Legal<br>LegalManagerBase, LegalNet managers"]
LEG --> CLM["SAIF.Application.Claim<br>ClaimAppManager, ClaimSecurity,<br>ClaimUserAccess, ClaimContext, ClaimAppConstants"]
CLM --> APP["SAIF.Application<br>AppManagerBase, UserAccess, ApplicationDataAccess"]
CLM --> TSKC["SAIF.Business.Tasks.Claim<br>clsClaimTaskGenerator"]
CLM --> VCLM["SAIF.BOF.Business.View.Claim<br>clsClaimData, clsEmployeeData, ClaimServices"]
CLM --> IMG["ImagingAPI.Client<br>ImagingClient"]
APP --> BOF["SAIF.BOF.Framework<br>clsSecurityPrincipal, IDataPortalInfo, data portals"]
Sequence diagram¶
The following diagram shows the primary claim-context establishment sequence: binding a claim, evaluating security, and retrieving screen data.
sequenceDiagram
participant UI as Derived manager / UI
participant CLM as ClaimAppManager
participant SEC as ClaimSecurity
participant VCLM as SAIF.BOF.Business.View.Claim
UI->>CLM: SetClaimContext(claimNumber)
CLM->>CLM: ChangeContext()
CLM->>VCLM: clsClaimData.GetData(DPI, claim key)
VCLM-->>CLM: claim data
CLM->>SEC: CheckClaim(ClaimData)
SEC-->>CLM: access flags
CLM->>VCLM: ClaimServices.HasOverrideAcess(...)
VCLM-->>CLM: override result
CLM-->>UI: security role + message
Design constraints¶
- Every hand-written type is
<Serializable()>, consistent with WebForms session/view-state persistence of manager state.* ChangeContextonly enforces the conflict-access flag; exposure, hostile-worker, and health-issue flags are computed byClaimSecuritybut left for consumers to enforce, andLegalManagerBase/clsCaseSearchManagerdo so.OnCheckSecuritydereferencesClaimDatawithout a null guard; whether a worker-only context or a failedGetClaimDatacan reach this path in production is unknown.**- No SQL, tables, or persistence steps are traced in this library; claim retrieval and override checks are implemented in
SAIF.BOF.Business.View.Claimand were not traced in this pass.** - The library is embedded (ProjectReference) in this repository, not packaged; a separate
nuget/shadow project referencing older framework versions exists but is excluded fromLegalMaintenance.slnand is treated as a stale artifact.*
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¶
- Index
- Overview
- Dependencies
- Configuration
- Operations and processes
- Business rules
- Security and authorization
- API reference
Sources¶
SAIF.Application.Claim/SAIF.Application.Claim.vbprojSAIF.Application.Claim/ClaimAppManager.vbSAIF.Application.Claim/ClaimAppConstants.vbSAIF.Application.Claim/ClaimContext.vbSAIF.Application.Claim/ClaimSecurity.vbSAIF.Application.Claim/ClaimUserAccess.vbSAIF.Application.Claim/Institutions.Designer.vbSAIF.Application.Claim.Legal/LegalManagerBase.vbSAIF.Application.Claim.Legal/LegalNet/clsCaseSearchManager.vbSAIF.Business.Tasks.Claim/clsClaimTaskGenerator.vbSAIF.Application.Claim/AssemblyInfo.vbSAIF.Application.Claim/Institutions.xsdSAIF.Application.Claim/app.configSAIF.Application.Claim/Web.configSAIF.Application.Claim/packages.config