SAIF.Business.Menu operations and processes¶
This page is the operation catalog and cross-operation hub for this library. 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 |
|---|---|---|---|---|---|---|---|
| Menu tree construction | Build and maintain the hierarchical menu structure (items grouped by page) | Caller retrieves, creates, or saves a menu item or page | Page/item keys; page, category, tooltip, visibility, and order fields | Menu item and page records | BR-MNU-02 | MENU_ITEM, MENU_PAGE, DUAL | SQL-002, SQL-003, SQL-008, SQL-009, SQL-022, SQL-023, SQL-024, SQL-025, SQL-034, SQL-035, SQL-041, SQL-042 |
| Menu categorization | Maintain the lookup of category codes used to classify menu items | Caller retrieves, creates, or saves a category code | Category code, description | Category code records | BR-MNU-02 | MENU_CATEGORY_CODE | SQL-006, SQL-017, SQL-018, SQL-032, SQL-039 |
| Favorite menu management | Let users bookmark, retrieve, deactivate, or remove frequently used menu items | Caller retrieves favorites for a user (or all), or saves/deactivates/deletes a favorite | User ID, menu item key, display order, inactive date | Favorite records | BR-MNU-02, BR-MNU-05 | MENU_FAVORITE | SQL-001, SQL-007, SQL-019, SQL-020, SQL-021, SQL-033, SQL-040 |
| Menu authorization data lookup | Record which security groups/users are authorized for each menu item, and resolve the authorized/favorited item projection for a user | Caller requests the authorized-item projection for a user (or all users), or maintains a security-group or user-to-group mapping | Menu item key, user, security group | Authorized item collection; authorization mapping records | BR-MNU-01, BR-MNU-02, BR-MNU-04, BR-MNU-05 | MENU_SECURITY, MENU_SECURITY_USER, MENU_ITEM | SQL-004, SQL-010, SQL-011, SQL-015, SQL-016, SQL-026, SQL-027, SQL-028, SQL-029, SQL-030, SQL-036, SQL-037, SQL-043, SQL-044 |
| Application code scoping | Maintain the lookup of application identifiers used to scope menu pages, filtering by active status | Caller retrieves an application code by key, active-only, or all, or saves a code | Application code, path, active flag | Application code records | BR-MNU-02, BR-MNU-03 | BUSONLINE_APPS_CODE | SQL-005, SQL-012, SQL-013, SQL-014, SQL-031, SQL-038 |
Process flow diagram¶
The following diagram visualizes the primary authorized-menu-item retrieval flow, which draws together data maintained by every other operation on this page.
flowchart TD
Start([Start: request authorized menu items]) --> CheckUser{MenuUser provided?}
CheckUser -->|Yes| SQL016[Execute per-user<br>3-part UNION with favorites]
CheckUser -->|No| SQL015[Execute all-user<br>2-part UNION without favorites]
SQL016 --> Result([Return authorized item collection])
SQL015 --> Result
Result --> Presentation[Presentation layer enforces<br>final authorization decision]
Inherited operations and processes¶
SAIF.Business.Menu types extend the BOF framework base classes (clsBusinessBase, clsBusinessCollection(Of T)), which define standard lifecycle operations such as object creation, retrieval, save, validation, and deletion through the Data Portal infrastructure. Specific inherited operation details could not be enumerated: the Legends CLI has no indexed content for BOF framework base classes in this run.*
Database interactions¶
Failure and edge-case behavior¶
- Any insert, update, or delete that affects a row count other than 1 raises an error via
AddErrorMessage(see BR-MNU-02). - Active application codes are filtered using
NVL(ACTIVE_CODE, 'Y') = 'Y'(see BR-MNU-03). - Security group matching is case-insensitive via
UPPER()(see BR-MNU-04). - Favorites are only included in the authorized-item projection when
ITEM_INACTIVE_DATE IS NULL(see BR-MNU-05). clsMenuSecurityUserCollection.BeforeRetrievehas an inverted parameter-binding branch that is a likely source defect — see Menu authorization data lookup for details.**
Related documentation¶
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.Menu\clsApplicationCode.vbBusiness\SAIF.Business.Menu\clsApplicationCodeCollection.vbBusiness\SAIF.Business.Menu\clsMenuAuthorizedItem.vbBusiness\SAIF.Business.Menu\clsMenuAuthorizedItemCollection.vbBusiness\SAIF.Business.Menu\clsMenuCategoryCode.vbBusiness\SAIF.Business.Menu\clsMenuCategoryCodeCollection.vbBusiness\SAIF.Business.Menu\clsMenuFavorite.vbBusiness\SAIF.Business.Menu\clsMenuFavoriteCollection.vbBusiness\SAIF.Business.Menu\clsMenuItem.vbBusiness\SAIF.Business.Menu\clsMenuItemCollection.vbBusiness\SAIF.Business.Menu\clsMenuPage.vbBusiness\SAIF.Business.Menu\clsMenuPageCollection.vbBusiness\SAIF.Business.Menu\clsMenuSecurity.vbBusiness\SAIF.Business.Menu\clsMenuSecurityCollection.vbBusiness\SAIF.Business.Menu\clsMenuSecurityUser.vbBusiness\SAIF.Business.Menu\clsMenuSecurityUserCollection.vb