Menu Definition
Overview
Menu Definition creates navigation structures that allow users to access different functions and data sections within your application. Menus can be displayed as traditional menu bars or as tabs, providing flexible navigation options. They support hierarchical structures, user permissions, and integration with flows and pages.
Menu Definition interface showing menu structure, properties, and configuration options
What are Menus?
Menus are navigation structures that:
- Organize Functions: Group related application features into logical navigation structures
- Control Access: Implement user-based permissions for different menu items
- Trigger Actions: Launch flows or display pages when users click menu items
- Support Hierarchy: Create parent-child menu relationships for complex navigation
- Enable Reusability: Include menus from other solutions for component reuse
Example: A Customer Management menu might include "View Customers", "Create Customer", and "Customer Reports" options, with different users seeing different subsets based on their permissions.
Menu Item Types
Parent Menu Element
- Purpose: Contains child menu elements for hierarchical organization
- Configuration: Should not have Flow or Page attached
- Behavior: Expands to show child menu items when clicked
- Use Case: Organizing related functions under logical groupings
Leaf Menu Item - Flow Trigger
- Purpose: Triggers a specific flow when clicked
- Configuration: Should have Flow attached but no Page, or use "Call another menu"
- Exclusivity: Cannot have both Flow and "Call another menu" settings
- Behavior: Executes the specified flow with menu parameters
- Use Case: Launching business processes and data operations
Leaf Menu Item - Page Display
- Purpose: Displays a specific page when clicked
- Configuration: Should have Page attached but no Flow
- Behavior: Shows the specified page to the user
- Use Case: Show tabs for data entry where users browse different sections without moving in the flow
Menu Configuration Properties
Menu Name
- Purpose: Display name shown to users in the navigation
- Visibility: This is what users see in the menu interface
- Best Practice: Use clear, descriptive names that indicate functionality
- Localization: Consider multi-language support if needed
Call Another Menu
- Purpose: Include another menu for reusability
- Use Case: Reuse menu structures from imported solutions
- Modularity: Promotes component reuse across different systems
- Maintenance: Changes to referenced menu automatically apply everywhere
Flow
- Purpose: Specify flow to trigger when menu item is clicked
- Requirement: Used for leaf menu items that execute business logic
- Exclusivity: Cannot be used together with Page property
- Integration: Flow receives menu parameters and executes in menu context
Page
- Purpose: Specify page to display when menu item is clicked
- Requirement: Used for leaf menu items that show content
- Exclusivity: Cannot be used together with Flow property
- Display: Page renders with menu parameters and context
Read-Only
- Purpose: Make DataSet attached to Flow read-only
- Scope: Applies to the entire DataSet context
- Use Case: View-only menu items that prevent data modification
- Security: Enforces data protection at menu level
Create New
- Purpose: Create blank record for DataSet associated with Flow
- Equivalent: Having a "new" action at the beginning of the flow
- Use Case: Menu items for creating new records
- Efficiency: Eliminates need for explicit new action in flow
Id (Optional)
- Purpose: Group menus by logical meaning for user permission control
- Permission System: Links to MENU_OPTIONS in Basic Configuration
- User Control: Determines which users can see which menu groups
- Flexibility: Allows fine-grained access control
Permission Example:
Menu Items: "Security" (Id: 1), "Customer read" (Id: 2), "Customer write" (Id: 3)
Manager MENU_OPTIONS: "YYY" (sees all menu items)
Read-only User MENU_OPTIONS: "YYN" (sees Security and Customer read only)
Menu Items: "Security" (Id: 1), "Customer read" (Id: 2), "Customer write" (Id: 3)
Manager MENU_OPTIONS: "YYY" (sees all menu items)
Read-only User MENU_OPTIONS: "YYN" (sees Security and Customer read only)
Depth
- Purpose: Define menu/sub-menu hierarchical structure
- Multiple Depth 0: Creates separate menu systems
- Use Cases: Main system menu, data capture tabs, specialized toolbars
- Organization: Controls visual grouping and nesting of menu items
Parameters
- Purpose: Pass parameters to associated flows, pages, or scripts
- Syntax:
param1=value1;param2=value2 - Flow Control: Parameters can control flow behavior and script execution
- Use Case: Reuse the same flow for multiple project types by passing different parameters
- Inheritance: Parent-level parameters apply to all sub-menu items
- Override: Child-level parameters can override parent values
CSS Class
- Purpose: Apply custom styling to menu items
- Customization: Control appearance, icons, and visual behavior
- Branding: Maintain consistent visual identity
- User Experience: Enhance navigation with visual cues
Menu Structure Examples
Customer Management Menu
- Customer Management (Parent, Depth: 0)
- View Customers (Flow: CustomerSearch, Id: 1, Depth: 1)
- Create Customer (Flow: CustomerEntry, Create New: Yes, Id: 2, Depth: 1)
- Modify Customer (Flow: CustomerEntry, Id: 2, Depth: 1)
- Customer Reports (Parent, Id: 3, Depth: 1)
- Monthly Report (Page: CustomerMonthlyReport, Id: 3, Depth: 2)
- Annual Summary (Page: CustomerAnnualReport, Id: 3, Depth: 2)
Project Management Tabs
- Project Overview (Flow: ProjectDashboard, Depth: 0)
- Project Tasks (Flow: ProjectTaskManagement, Depth: 0)
- Project Timeline (Page: ProjectGanttChart, Depth: 0)
- Project Reports (Page: ProjectReports, Depth: 0)
Parameter Usage Examples
Parent-Level Parameters
- Menu: Customer Management
- Parameters:
department=sales;region=north - Effect: All child menu items receive these parameters
- Use Case: Department-specific data filtering
Child-Level Parameters
- Menu: Create Customer
- Parameters:
status=active;priority=high - Effect: Flow receives these specific parameters
- Use Case: Pre-populate form fields with default values
Best Practices
Menu Design
- Logical Grouping: Organize menu items by business function
- Clear Naming: Use descriptive names that users understand
- Consistent Depth: Maintain consistent hierarchical levels
- User-Centric: Design menus based on user workflows
Permission Management
- Principle of Least Privilege: Give users minimum necessary access
- Role-Based Design: Group permissions by user roles
- Regular Review: Periodically review and update permissions
- Documentation: Document permission schemes and rationale
Performance Considerations
- Menu Complexity: Avoid overly deep menu hierarchies
- Parameter Efficiency: Use parameters judiciously
- Flow Integration: Ensure menu-triggered flows are optimized
- User Experience: Test menu navigation for responsiveness
Integration with Other Components
Flow Integration
- Parameter Passing: Menu parameters available in flow context
- DataSet Context: Flow executes with menu-specified DataSet
- User Context: Flow has access to user permissions and settings
- Error Handling: Plan for flow execution failures from menu triggers
Page Integration
- Parameter Access: Pages can access menu parameters
- Context Preservation: Page maintains menu context
- Navigation: Pages can trigger other menu items
- User Interface: Consistent styling with menu CSS classes
Security Integration
- User Authentication: Menus respect user login status
- Permission Enforcement: Menu visibility based on MENU_OPTIONS
- Data Security: Read-only flags enforce data protection
- Audit Trail: Menu actions can be logged for compliance
Getting Started
Ready to create menus? Follow these resources:
- Basic Configuration: Understand MENU_OPTIONS for user permissions
- Flows: Learn how to create flows for menu integration
- Your First Application - Part 2: See menu creation in practice
Related Topics
- Flows: Creating flows for menu actions
- Data Set Definition: Understanding DataSet context for menus
- Basic Concepts: Fundamental Opadeez terminology
Pro Tip: Start with simple flat menu structures and gradually add hierarchy and permissions as your application grows. Test menu navigation thoroughly with different user permission levels.