SAIF.Application operations and processes¶
This page is the operation catalog and cross-operation hub for this library. SAIF.Application defines an abstract lifecycle contract, not concrete workflow implementations — concrete steps are supplied by subclasses in other libraries (out of scope). 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 |
|---|---|---|---|---|---|---|---|
| Initialize application manager | Establish the security principal and let a concrete subclass wire its own initialization and data layer | Concrete subclass constructor/factory invokes New(inSecurityPrincipal) then Initialize() |
clsSecurityPrincipal |
Initialized AppManagerBase instance with populated DataLayer |
BR-APP-004 | N/A | N/A |
| Register a database connection portal | Configure connection parameters and register a named SQL Server or Oracle data portal | Concrete code invokes CreateSQLServerPortal(inKey) or CreateOraclePortal(inKey) |
DBUser, Database, Server, BatchID, inKey |
Registered IDataPortalInfo, retrievable via DPI(key) |
N/A | N/A | N/A |
| Check and cache AD resource authorization | Determine and cache whether the current principal has access to a caller-supplied AD resource | Concrete subclass of UserAccess calls HasAccess(inResourceName) or CheckAccess(...) |
inResourceName (string) |
Cached boolean authorization result | BR-APP-003 | N/A | N/A |
| Accumulate and format display messages | Append non-duplicate messages to an accumulated display string, and independently format message arrays for Windows/Web display | Concrete subclass calls AppendMessageLines or MessageFormatting.GetMessagesForWindows/GetMessagesForWeb/GetMessagesUserDefined |
Message string(s) or array | Updated Message property or a concatenated display string |
BR-APP-001 | N/A | N/A |
Process flow diagram¶
The following diagram visualizes the primary operational flow across operations.
flowchart TD
Start([Concrete subclass constructed]) --> Init[Initialize application manager]
Init --> Sec{OnCheckSecurity sets role?}
Sec -->|Update/ViewOnly| DataLayer[Register data connection portal]
Sec -->|NoAccess default| Restricted([Access restricted])
DataLayer --> Access[Check and cache AD resource authorization]
Access --> Messages[Accumulate and format display messages]
Messages --> EndOk([Ready for Retrieve/Write])
Inherited operations and processes¶
Operations in this section originate from base classes provided by dependency framework libraries. They are inherited or delegated, not implemented in this library.
From clsBusinessBase (SAIF.Framework.Core)¶
| Operation | Intent | Provided by | Origin | Embedded in |
|---|---|---|---|---|
| Edit-session management (open/commit/roll back) | Manage BeginEdit/CancelEdit/ApplyEdit state for the object† |
clsBusinessBase |
SAIF.Framework.Core |
Initialize application manager |
| Rule evaluation and save dispatch | Evaluate rules in severity order and dispatch insert/update/delete on Save()† |
clsBusinessBase |
SAIF.Framework.Core |
Initialize application manager |
Origin: These operations are defined in
SAIF.Framework.Core/clsBusinessBaseand inherited byAppManagerBase. No direct evidence in this library's own code shows them being invoked —AppManagerBaseinstead layers its own parallelMustOverridelifecycle contract on top of the inherited surface.*
Failure and edge-case behavior¶
UserAccess.CheckAccess's per-call result is discarded into a local variable that is reset toNothingand never returned; its only observable effect is warming theHasAccesscache.*ServiceResponse.ProcessExceptionloops onex.InnerException(not the current local exception) on each iteration, which would infinite-loop ifex.InnerExceptionis non-Nothing; not confirmed to have been exercised at runtime.**- Until a concrete subclass calls
MarkUpdate()/MarkViewOnly(),AppManagerBasedefaults toNoAccess(fail-closed).*
Related documentation¶
Note: Statements marked with
†are derived from dependency library documentation via the Legends CLI. Statements marked with*were inferred from code structure or contextual evidence. Statements marked with**could not be confirmed; treat as unknown until verified.
Sources¶
SAIF.Application\AppManagerBase.vbSAIF.Application\ApplicationDataAccess.vbSAIF.Application\UserAccess.vbSAIF.Application\MessageFormatting.vbSAIF.Application\Service Based\ServiceResponse.vb- Legends CLI RAG service (indexed documentation for
clsBusinessBase, source librarySAIF.Framework.Core)