Skip to content

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

Operation Intent Trigger Inputs Outputs Rules Tables SQL
Build a user's authorized menu Loads the authorized menu for one user or the all-users snapshot. Caller requests authorized navigation. IDataPortalInfo, optional MenuUser Typed clsMenuAuthorizedItemCollection BR-MENU-002
BR-MENU-003
BR-MENU-004
BR-MENU-006
MENU_ITEM
MENU_SECURITY
MENU_SECURITY_USER
MENU_PAGE
BUSONLINE_APPS_CODE
MENU_CATEGORY_CODE
MENU_FAVORITE
SQL-MENU-043
SQL-MENU-044
Manage a user's menu favorites Creates, updates, removes, and retrieves favorite menu rows. Caller maintains or loads favorites. IDataPortalInfo, user and favorite keys Persisted favorite rows and collections BR-MENU-001
BR-MENU-004
MENU_FAVORITE
MENU_ITEM
SQL-MENU-036
SQL-MENU-037
SQL-MENU-038
SQL-MENU-039
SQL-MENU-040
SQL-MENU-041
SQL-MENU-042
Maintain a menu item together with its security-group assignments Saves a menu item and its child security-group rows as one logical change. Caller edits a menu item and its security groups. IDataPortalInfo, menu-item fields, security groups Persisted item and security rows BR-MENU-001
BR-MENU-003
BR-MENU-005
MENU_ITEM
MENU_SECURITY
MENU_PAGE
MENU_CATEGORY_CODE
SQL-MENU-012
SQL-MENU-013
SQL-MENU-014
SQL-MENU-015
SQL-MENU-016
SQL-MENU-017
SQL-MENU-024
SQL-MENU-025
SQL-MENU-026
SQL-MENU-027
SQL-MENU-028
SQL-MENU-029
SQL-MENU-030
Maintain reference data Maintains lookup, page, and user-to-group reference rows. Caller maintains lookup or membership data. IDataPortalInfo plus natural or surrogate keys Persisted lookup and membership rows BR-MENU-001 BUSONLINE_APPS_CODE
MENU_CATEGORY_CODE
MENU_PAGE
MENU_SECURITY_USER
SQL-MENU-001
SQL-MENU-002
SQL-MENU-003
SQL-MENU-004
SQL-MENU-005
SQL-MENU-006
SQL-MENU-007
SQL-MENU-008
SQL-MENU-009
SQL-MENU-010
SQL-MENU-011
SQL-MENU-018
SQL-MENU-019
SQL-MENU-020
SQL-MENU-021
SQL-MENU-022
SQL-MENU-023
SQL-MENU-031
SQL-MENU-032
SQL-MENU-033
SQL-MENU-034
SQL-MENU-035

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.

Operation SQL Tables Type
Build a user's authorized menu SQL-MENU-043
SQL-MENU-044
MENU_ITEM
MENU_SECURITY
MENU_SECURITY_USER
MENU_PAGE
BUSONLINE_APPS_CODE
MENU_CATEGORY_CODE
MENU_FAVORITE
Read
Manage a user's menu favorites SQL-MENU-036
SQL-MENU-037
SQL-MENU-038
SQL-MENU-039
SQL-MENU-040
SQL-MENU-041
SQL-MENU-042
MENU_FAVORITE
MENU_ITEM
Read/Write
Maintain a menu item together with its security-group assignments SQL-MENU-012
SQL-MENU-013
SQL-MENU-014
SQL-MENU-015
SQL-MENU-016
SQL-MENU-017
SQL-MENU-024
SQL-MENU-025
SQL-MENU-026
SQL-MENU-027
SQL-MENU-028
SQL-MENU-029
SQL-MENU-030
MENU_ITEM
MENU_SECURITY
MENU_PAGE
MENU_CATEGORY_CODE
Read/Write
Maintain reference data SQL-MENU-001
SQL-MENU-002
SQL-MENU-003
SQL-MENU-004
SQL-MENU-005
SQL-MENU-006
SQL-MENU-007
SQL-MENU-008
SQL-MENU-009
SQL-MENU-010
SQL-MENU-011
SQL-MENU-018
SQL-MENU-019
SQL-MENU-020
SQL-MENU-021
SQL-MENU-022
SQL-MENU-023
SQL-MENU-031
SQL-MENU-032
SQL-MENU-033
SQL-MENU-034
SQL-MENU-035
BUSONLINE_APPS_CODE
MENU_CATEGORY_CODE
MENU_PAGE
MENU_SECURITY_USER
Read/Write

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_DATE is populated.
  • Public rows appear in all-users snapshots through the UNSECURED sentinel 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 overridden BeforeInsert/AfterInsert, BeforeUpdate/AfterUpdate, BeforeDelete/AfterDelete, and BeforeRetrieve/AfterRetrieve hooks in this library.** This base lifecycle is what every insert/update/retrieve operation catalogued above ultimately runs through.**
  • Error/message aggregation — AddErrorMessage and related validation-message plumbing used by local AfterInsert/AfterUpdate/AfterDelete overrides (e.g., the RowsAffected <> 1 checks 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 overridden AfterRetrieve.**
  • Deleted-item tracking — Remove moves an item to an inherited deleted-items list so that a later Save() on the collection still issues the corresponding delete statement for rows removed from memory (see BR-INH-002).**

Note: Statements marked with ** could not be confirmed; treat as unknown until verified.

Sources

  • SAIF.Business.Menu\clsApplicationCode.vb
  • SAIF.Business.Menu\clsApplicationCodeCollection.vb
  • SAIF.Business.Menu\clsMenuAuthorizedItemCollection.vb
  • SAIF.Business.Menu\clsMenuFavorite.vb
  • SAIF.Business.Menu\clsMenuFavoriteCollection.vb
  • SAIF.Business.Menu\clsMenuItem.vb
  • SAIF.Business.Menu\clsMenuPage.vb
  • SAIF.Business.Menu\clsMenuSecurity.vb
  • SAIF.Business.Menu\clsMenuSecurityCollection.vb
  • SAIF.Business.Menu\clsMenuSecurityUser.vb
  • SAIF.Business.Menu\clsMenuSecurityUserCollection.vb