SAIF.Business.Menu operations and processes¶
This page is the operation catalog and cross-operation hub for SAIF.Business.Menu. Each operation's detailed logic lives on its own page under operations/.
Operation catalog¶
Process flow diagram¶
The following diagram visualizes the primary operational flow across the documented operations.
flowchart TD
Ref[Maintain reference data] --> Item[Maintain menu item and security groups]
Item --> Fav[Manage menu favorites]
Fav --> Build[Build authorized menu]
Build --> Render[Caller renders navigation]
Database interactions¶
The following table summarizes which operations read from or write to the database. Per-step SQL and table citations live in each operation's detail page.
Failure and edge-case behavior¶
- Authorized-menu retrieval returns an empty collection when no rows match the user's groups, favorites, or public-item branch.
- Write operations surface optimistic-contention errors when the database does not report exactly one affected row.
- Favorites stop participating in menu composition when
ITEM_INACTIVE_DATEis populated. - Public rows appear in all-users snapshots through the
UNSECUREDsentinel path used by BR-MENU-006.
Inherited operations and processes¶
No dependency-resolution.json was produced for this run, so the operations below are a best-effort inference from typical SAIF BOF framework (clsBusinessBase / clsBusinessCollection) lifecycle patterns observed elsewhere in this codebase, not a Legends CLI-sourced dependency lookup.**
From clsBusinessBase (SAIF.BOF.Framework)**¶
- Data-portal lifecycle dispatch —
Save(),Delete(), and the shared/static retrieve helpers route through the inherited data-portal (IDataPortalInfo/IPortalRequest) lifecycle, which invokes each entity's overriddenBeforeInsert/AfterInsert,BeforeUpdate/AfterUpdate,BeforeDelete/AfterDelete, andBeforeRetrieve/AfterRetrievehooks in this library.** This base lifecycle is what every insert/update/retrieve operation catalogued above ultimately runs through.** - Error/message aggregation —
AddErrorMessageand related validation-message plumbing used by localAfterInsert/AfterUpdate/AfterDeleteoverrides (e.g., theRowsAffected <> 1checks behind BR-MENU-001) are inherited members, not locally defined behavior.**
From clsBusinessCollection(Of T) (SAIF.BOF.Framework)**¶
- Retrieve-all/shared-retrieve dispatch — collection-level static factory methods (for example
GetAllMenuItems,GetMenuAuthorizedItems) build on inherited collection retrieve plumbing that populates the typed collection from a data reader via the overriddenAfterRetrieve.** - Deleted-item tracking —
Removemoves an item to an inherited deleted-items list so that a laterSave()on the collection still issues the corresponding delete statement for rows removed from memory (see BR-INH-002).**
Related documentation¶
- Index
- Overview
- Architecture
- Dependencies
- Business rules
- Security and authorization
- Database tables
- SQL catalog
- API reference
Note: Statements marked with
**could not be confirmed; treat as unknown until verified.
Sources¶
SAIF.Business.Menu\clsApplicationCode.vbSAIF.Business.Menu\clsApplicationCodeCollection.vbSAIF.Business.Menu\clsMenuAuthorizedItemCollection.vbSAIF.Business.Menu\clsMenuFavorite.vbSAIF.Business.Menu\clsMenuFavoriteCollection.vbSAIF.Business.Menu\clsMenuItem.vbSAIF.Business.Menu\clsMenuPage.vbSAIF.Business.Menu\clsMenuSecurity.vbSAIF.Business.Menu\clsMenuSecurityCollection.vbSAIF.Business.Menu\clsMenuSecurityUser.vbSAIF.Business.Menu\clsMenuSecurityUserCollection.vb