The Operaton DMN Evaluator plugin integrates WordPress Gravity Forms with Operaton DMN (Decision Model and Notation) engines to provide real-time decision evaluation capabilities. ENHANCED in v1.0.0-beta.11: Completely refactored architecture with performance monitoring, manager-based design, and comprehensive debugging capabilities.
π Active development happens on GitLab: git.open-regels.nl/showcases/operaton-dmn-evaluator
π GitHub mirror for visibility: github.com/OpenWebconcept/operaton-dmn-evaluator
Need | Location | Link |
---|---|---|
π Report Bugs | GitLab Issues | Create Issue |
β¨ Feature Requests | GitLab Issues | Create Issue |
πΎ Latest Releases | GitLab Releases | View Releases |
π Auto-Updates | Configured via GitLab | Release System |
Note: Active development happens on GitLab. GitHub is a read-only mirror for visibility within the OpenWebconcept ecosystem.
This plugin is part of the OpenWebconcept ecosystem - a collection of WordPress building blocks for government and public sector websites.
- WordPress 5.0+ with admin access
- Gravity Forms plugin installed and activated
- Access to an Operaton DMN engine (cloud or self-hosted)
- DMN decision tables and/or BPMN processes deployed on the Operaton engine
- PHP 7.4+ (8.0+ recommended for optimal performance)
All notable changes to this project are documented in the CHANGELOG.md.
- β 29 comprehensive unit tests covering all critical functionality
- β 117 assertions ensuring robust validation across all scenarios
- β Sub-second execution (33ms locally, 12s in CI/CD)
- β 100% test success rate with automated quality gates
- β GitLab CI/CD integration with automated testing on every commit
- β Multi-stage pipeline (build, test, quality, security)
- β JUnit XML reporting for GitLab test result visualization
- β Automated security scanning with vulnerability detection
- β Code quality enforcement with PSR12 standards (1,216 auto-fixes applied)
- β Unit Tests: Individual component testing (API, Database, Performance)
- β Integration Tests: Multi-component workflow validation
- β E2E Tests (Cypress): Live environment browser testing (6 tests, 3s execution)
- β E2E Tests (Playwright): Cross-browser testing (10 tests, 2 browsers, 14.6s execution)
- β Security Tests: XSS prevention, SQL injection protection, input sanitization
- β Performance Tests: Throughput benchmarking, memory usage monitoring
- β Error Handling Tests: Graceful degradation and failure recovery
You will find a comprehensive description in the TESTS readme.
- Manager-Based Design: Modular architecture with specialized managers for different functionality
- Performance Monitoring: Real-time performance tracking with sub-millisecond precision
- Advanced Debugging: Comprehensive debug system with detailed status reporting
- Enhanced Error Handling: Robust error handling with graceful degradation
- Optimized Loading: Intelligent asset loading and state management
- Direct Decision Evaluation: Execute single DMN decisions for simple use cases
- Process Execution with Decision Flow: Execute complete BPMN processes with comprehensive decision analysis
- Flexible Configuration: Choose the appropriate mode based on your complexity requirements
- Professional Decision Summaries: Excel-style decision flow analysis on form completion
- Real-time Evaluation: Execute decisions/processes directly from Gravity Forms
- Multiple Result Fields: Map multiple DMN/process result fields to different form fields
- Advanced Field Mapping: Map form fields to DMN variables with comprehensive type validation
- Professional Decision Flow: Excel-style decision summaries with complete process analysis
- Process Instance Tracking: Complete traceability through Operaton process instances
- Multi-page Form Support: Works seamlessly with single and multi-page Gravity Forms
- Automatic Button Injection: Smart evaluation button placement based on execution mode
- Form Validation: Full integration with Gravity Forms validation system
- Clean State Management: Intelligent clearing of results when form inputs change
- Visual Feedback: Enhanced notifications and professional result presentation
- Comprehensive Debug Support: Advanced logging and decision flow analysis
The plugin now uses a sophisticated manager-based architecture for optimal performance and maintainability:
- π¨ Assets Manager (
Operaton_DMN_Assets
): Handles CSS/JavaScript loading with intelligent conditional loading - βοΈ Admin Manager (
Operaton_DMN_Admin
): Manages WordPress admin interface and configuration pages - ποΈ Database Manager (
Operaton_DMN_Database
): Handles all database operations and schema management - π API Manager (
Operaton_DMN_API
): Manages external API calls and REST endpoint handling - π Gravity Forms Manager (
Operaton_DMN_Gravity_Forms
): Handles all Gravity Forms integration - π§ Quirks Fix Manager (
Operaton_DMN_Quirks_Fix
): Manages DOCTYPE and jQuery compatibility - π Performance Monitor (
Operaton_DMN_Performance_Monitor
): Real-time performance tracking
- Lightning-Fast Loading: 0.4-0.6ms plugin initialization
- Efficient Memory Usage: 10-14MB peak memory (excellent for complex plugins)
- Intelligent Asset Loading: Scripts only load when needed
- Zero Health Issues: Comprehensive health monitoring with issue detection
Plugin Performance Metrics (Typical):
βββ Total Initialization: 0.41ms
βββ Assets Manager Load: 0.21ms
βββ Database Manager Load: 0.35ms
βββ Gravity Forms Load: 0.46ms
βββ Peak Memory Usage: 10MB
βββ WordPress Load Time: 60-70ms
operaton-dmn-evaluator/
βββ assets/
β βββ css/
β β βββ admin.css # Enhanced admin styles with debug interface
β β βββ frontend.css # Frontend styles with decision flow CSS
β β βββ debug.css # Debug interface styling
β β βββ radio-sync.css # Radio button synchronization styles
β βββ images/ # Documentation images and screenshots
β βββ js/
β βββ admin.js # Enhanced admin interface JavaScript
β βββ api-test.js # API endpoint testing functionality
β βββ decision-flow.js # Decision flow display and interaction
β βββ frontend.js # Core frontend evaluation functionality
β βββ gravity-forms.js # Gravity Forms integration scripts
β βββ radio-sync.js # Radio button synchronization system
βββ includes/ # β¨ NEW - Modular manager architecture
β βββ class-operaton-dmn-admin.php # Admin interface manager
β βββ class-operaton-dmn-api.php # API handling and REST endpoints
β βββ class-operaton-dmn-assets.php # Asset loading and management
β βββ class-operaton-dmn-database.php # Database operations and schema
β βββ class-operaton-dmn-gravity-forms.php # Gravity Forms integration
β βββ class-operaton-dmn-performance.php # Performance monitoring system
β βββ class-operaton-dmn-quirks-fix.php # Compatibility and DOCTYPE fixes
β βββ plugin-updater.php # Auto-update system
β βββ update-debug.php # Advanced debug interface
βββ scripts/
β βββ create-release.sh # Release package creation
βββ templates/
β βββ admin/
β β βββ form.php # Configuration form template
β β βββ list.php # Configuration list template
βββ vendor/
β βββ plugin-update-checker/ # Update checker library
βββ operaton-dmn-plugin.php # β¨ REFACTORED - Clean main plugin file
βββ CHANGELOG.md # Detailed version history
βββ README.md # This comprehensive guide
- Separation of Concerns: Each manager handles specific functionality
- Clean Dependencies: Well-defined relationships between components
- Easy Testing: Individual managers can be tested independently
- Scalable Design: Easy to add new features without affecting existing code
- Lazy Loading: Managers only load when needed
- Intelligent Caching: Multiple caching layers for optimal performance
- Resource Efficiency: Minimal memory footprint with maximum functionality
- Debug Integration: Performance monitoring built into every component
- Clear Structure: Easy to understand and modify
- Comprehensive Logging: Detailed debug information throughout
- Error Handling: Graceful error handling with informative messages
- Hook System: Clean WordPress integration following best practices
-
Create Plugin Directory:
cd /wp-content/plugins/ mkdir operaton-dmn-evaluator cd operaton-dmn-evaluator
-
Download Latest Release:
- Visit GitLab Releases
- Download the latest
v1.0.0-beta.11
package - Extract files to plugin directory
-
Activate Plugin:
- Go to WordPress Admin β Plugins
- Find "Operaton DMN Evaluator" and activate it
- Plugin will automatically create database tables and initialize
-
Verify Installation:
- Go to Operaton DMN β Configurations
- Use the "π§ Debug Tools" β "Get Plugin Status" button to verify all managers are loaded
A live demo of the plugin is available at https://owc-gemeente.test.open-regels.nl/
- Page 1: The start form opens with pre-filled data via the Haal Centraal BRP API using a test citizen service number (BSN). A fictitious income has been prefilled as well. Click βNextβ.
- Page 2: Adjust the radio buttons as needed and click βEvaluate.β If left unchanged, the value βtrueβ will appear for βeligibilityHeusdenPassβ and βeligibilityChildPackageβ will be "false". A green confirmation notification will briefly appear in the top right corner. Click βNext.β
- Page 3: The final step shows an overview of all input and output values per decision table. In this example, there are 11 tables, making it 100% transparent how decisions regarding Heusden Pass and Child Package eligibility are made.
The plugin includes comprehensive performance monitoring:
{
"plugin_version": "1.0.0-beta.10",
"managers": {
"assets": "loaded",
"admin": "loaded",
"database": "loaded",
"api": "loaded",
"gravity_forms": "loaded",
"quirks_fix": "loaded",
"performance": "loaded"
},
"performance": {
"total_time_ms": 75.51,
"peak_memory_formatted": "10 MB",
"performance_grade": "A+ (Excellent)",
"recommendations": [
"π Excellent loading speed!",
"π§ Very efficient memory usage!"
]
}
}
Access comprehensive debugging via Operaton DMN β Configurations β Debug Tools:
- Plugin Status: Real-time manager status and health monitoring
- Performance Metrics: Detailed timing and memory usage statistics
- Asset Loading: Script and style loading status with context
- Environment Info: WordPress, PHP, and theme compatibility information
Best for: Simple decision logic, single decision tables, basic use cases
- Single Decision: Evaluates one DMN decision table directly
- Simple Configuration: Just base URL + decision key
- Immediate Results: Direct result population in form fields
- Lightweight: Minimal API calls and processing
- Use Cases: Product recommendations, simple eligibility checks, basic calculations
Best for: Complex business logic, multi-step decisions, comprehensive analysis
- Complete Process: Executes full BPMN processes with multiple decisions
- Decision Flow Analysis: Comprehensive tracking of all decision instances
- Professional Summaries: Excel-style decision flow display on final form page
- Process Tracking: Complete traceability through process instance IDs
- Use Cases: Complex eligibility assessments, multi-criteria evaluations, government applications
Available configurations listed with enhanced debug information.
Selecting a configuration opens the corresponding dashboard.
- Health Monitoring: Each configuration includes health status checking
- Performance Tracking: Database operations are monitored for optimization
- Validation Enhancement: Comprehensive validation with detailed error messages
- Auto-Migration: Database schema updates automatically during plugin updates
Direct Decision Evaluation
- Radio button selection for simple decision table evaluation
- Requires: Base endpoint URL + Decision key
- Results: Direct field population
- Best for: Single-step decisions
Process Execution with Decision Flow
- Radio button selection for comprehensive process execution
- Requires: Base endpoint URL + Process key
- Results: Multiple field population + decision flow summary
- Best for: Multi-step business processes
- Smart URL Building: Automatic endpoint construction with validation
- Real-time Preview: Live preview of generated URLs
- Connection Testing: Enhanced testing with detailed error reporting
- Compatibility Checking: Automatic Operaton version detection
- Purpose: Base URL to your Operaton engine
- Required: Yes (for both modes)
- Format: Should end with
/engine-rest/
- Auto-Detection: Plugin detects and suggests correct format
- Examples:
- Operaton Cloud:
https://your-tenant.operaton.cloud/engine-rest/
- Self-hosted:
https://operatondev.open-regels.nl/engine-rest/
- Local:
http://localhost:8080/engine-rest/
- Operaton Cloud:
- Auto-Detection: Automatic field type detection from Gravity Forms
- Type Validation: Enhanced validation for data type compatibility
- Radio Button Sync: Advanced radio button synchronization system
- Multi-Field Support: Comprehensive support for complex field mappings
// Example of enhanced result extraction capabilities
$results = array(
'aanmerkingHeusdenPas' => array(
'value' => false,
'field_id' => 35,
'extraction_method' => 'process_variable_direct'
),
'aanmerkingKindPakket' => array(
'value' => true,
'field_id' => 36,
'extraction_method' => 'nested_container_search'
)
);
Enhanced decision flow summaries with improved performance and styling:
- Intelligent Caching: 10-minute cache for successful retrievals
- Error Caching: 2-minute cache for failed requests
- Cache Busting: Manual refresh with cache invalidation
- Performance Optimization: Reduced API calls with smart caching
- Professional Styling: Enhanced Excel-style tables with improved responsiveness
- Performance Indicators: Loading states with progress indication
- Interactive Elements: Enhanced refresh buttons with loading states
- Mobile Optimization: Improved mobile display with responsive design
π Summary Statistics:
- Total Decision Types: 3
- Total Evaluations Shown: 5
- Filter Applied: Activity_FinalResultCompilation only
- Process Instance: abc-123-def-456
π Refresh Decision Flow
- Context-Aware Loading: Scripts only load when Gravity Forms are detected
- Performance Optimization: Conditional asset loading prevents bloat
- Emergency Fallback: Automatic asset recovery for edge cases
- Debug Information: Comprehensive loading status tracking
{
"scripts": {
"operaton-dmn-frontend": {
"registered": true,
"enqueued": true,
"done": true
}
},
"context": {
"script_loading_note": "Scripts are only registered when needed - this is optimal behavior"
}
}
- Manager Coordination: All managers coordinate for clean state management
- Performance Tracking: State changes are monitored for optimization
- Error Recovery: Automatic state recovery for failed operations
- Session Management: Enhanced session handling for process execution
{
"health": [],
"managers": {
"assets": "loaded",
"admin": "loaded",
"database": "loaded",
"api": "loaded",
"gravity_forms": "loaded",
"quirks_fix": "loaded",
"performance": "loaded",
"gravity_forms_available": true
}
}
- Manager Status: All managers loaded and operational
- Database Health: Schema integrity and performance
- API Connectivity: External service connectivity
- Gravity Forms Integration: Plugin compatibility and availability
- Performance Metrics: System performance within acceptable ranges
- Manager Level: Individual manager performance and status
- System Level: Overall plugin performance and health
- Integration Level: Third-party integration status
- Performance Level: Detailed timing and memory usage
- Real-Time Monitoring: Live performance metrics during operation
- Historical Data: Performance trends and optimization opportunities
- Error Tracking: Comprehensive error logging with context
- Environment Analysis: Complete system compatibility analysis
- Component Isolation: Manager failures don't affect other components
- Fallback Mechanisms: Automatic fallback to simpler functionality
- User-Friendly Messages: Clear error messages without technical details
- Recovery Procedures: Automatic recovery from transient failures
- Lightning-fast initialization: 0.4-0.8ms plugin construction time
- Optimized asset loading: Smart caching with 300-400% cache efficiency
- Atomic loading prevention: Successfully prevents duplicate script loading (6 preventions per page)
- Minimal memory footprint: 10-14MB peak memory usage
- Fast database operations: 0.18-0.3ms config fetches
- Premium plugins (like WooCommerce, Elementor): Usually 50-200ms initialization
- This plugin: 0.4-0.8ms initialization
- Industry average: 100-500ms for complex form plugins
- Total page load impact: <2ms additional overhead
=== OPERATON DMN PERFORMANCE SUMMARY ===
Request: GET /wp-admin/admin.php?page=operaton-dmn
Total Time: 239.31ms
Peak Memory: 14 MB
Milestones: 12
Performance Grade: A+ (Excellent)
Key Milestones:
quirks_fix_loaded: 0.14ms
assets_manager_loaded: 0.2ms
admin_manager_loaded: 0.27ms
database_manager_loaded: 0.32ms
api_manager_loaded: 0.37ms
gravity_forms_manager_loaded: 0.43ms
plugin_construct_complete: 0.48ms
wp_loaded: 60.75ms
========================================
- Go to Operaton DMN β Configurations
- Click π§ Debug Tools β Get Plugin Status
- Review comprehensive system status
Slow plugin loading (>5ms initialization)
- Check PHP version (8.0+ recommended)
- Review memory limits (128M+ recommended)
- Verify no conflicting plugins
- Check database performance
Manager loading failures
- Verify file permissions on
/includes/
directory - Check for PHP fatal errors in debug log
- Ensure all manager files are present
- Review WordPress debug log for specific errors
Scripts not registering when expected
- This is often optimal behavior - scripts load only when needed
- Check debug status: "Scripts are only registered when needed - this is optimal behavior"
- Verify Gravity Forms is present on the page for frontend assets
- Review asset loading context in debug information
Emergency asset loading failures
- Check browser console for JavaScript errors
- Verify operaton_ajax object is available
- Review emergency fallback system in browser debug
- Clear browser cache and reload
- Symptom: Scripts not loading when expected
- Solution: Check context - scripts only load when Gravity Forms detected
- Debug: Review
assets.context.script_loading_note
in debug status
- Symptom: Configuration save failures
- Solution: Check database permissions and WordPress debug log
- Debug: Review
health
array for database-specific issues
- Symptom: External API calls failing
- Solution: Test connectivity and review endpoint configuration
- Debug: Check API manager status and connection test results
// Enable detailed performance monitoring
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
// Performance monitoring automatically available
$performance = operaton_dmn_get_manager('performance');
$summary = $performance->get_summary();
// Get specific managers for advanced integration
$api_manager = operaton_dmn_get_manager('api');
$database_manager = operaton_dmn_get_manager('database');
$assets_manager = operaton_dmn_get_manager('assets');
- WordPress Object Cache: Manager-level caching for configuration data
- Transient Cache: API response caching for decision flow data
- Static Cache: In-memory caching for repeated operations within requests
- Performance Cache: Benchmark data for optimization analysis
- Automatic Invalidation: Cache automatically cleared on configuration changes
- Manual Clearing: Admin interface provides cache clearing options
- Performance Monitoring: Cache hit/miss ratios tracked for optimization
The API Manager provides enhanced capabilities:
// Enhanced API manager with comprehensive error handling
class Operaton_DMN_API {
private $performance; // Performance monitoring integration
private $core; // Core plugin reference
private $database; // Database manager integration
// Enhanced evaluation with performance tracking
public function handle_evaluation($request) {
$timer_id = $this->performance->start_timer('api_evaluation');
// ... evaluation logic
$this->performance->stop_timer($timer_id, 'Evaluation completed');
}
}
All API calls are automatically monitored:
{
"api_performance": {
"evaluation_time_ms": 45.67,
"external_api_time_ms": 123.45,
"response_processing_ms": 12.34,
"result_population_ms": 8.90
}
}
- Plugin Version: 1.0.0-beta.12
- Architecture: Manager-based modular design
- Performance Grade: A+ (Excellent)
- Gravity Forms Compatibility: 2.4+
- WordPress Compatibility: 5.0+
- PHP Requirements: 7.4+ (8.0+ recommended)
- Operaton Engine Compatibility: 7.x+