212 lines
5.4 KiB
YAML
212 lines
5.4 KiB
YAML
# Timer Types Example
|
|
# This file demonstrates all three timer types with practical use cases
|
|
|
|
---
|
|
# Example 1: Interval Timer - Health Check
|
|
# Use case: Monitor service health every 30 seconds
|
|
name: health_check_rule
|
|
ref: monitoring.health_check
|
|
description: "Periodic health check every 30 seconds"
|
|
enabled: true
|
|
trigger:
|
|
type: core.intervaltimer
|
|
parameters:
|
|
unit: seconds
|
|
interval: 30
|
|
action:
|
|
ref: core.http_request
|
|
parameters:
|
|
url: "https://api.example.com/health"
|
|
method: GET
|
|
timeout: 5
|
|
|
|
---
|
|
# Example 2: Interval Timer - Backup
|
|
# Use case: Run backups every 6 hours
|
|
name: database_backup_rule
|
|
ref: backup.database
|
|
description: "Backup database every 6 hours"
|
|
enabled: true
|
|
trigger:
|
|
type: core.intervaltimer
|
|
parameters:
|
|
unit: hours
|
|
interval: 6
|
|
action:
|
|
ref: backup.run_backup
|
|
parameters:
|
|
backup_type: full
|
|
retention_days: 30
|
|
|
|
---
|
|
# Example 3: Cron Timer - Business Hours Report
|
|
# Use case: Generate report weekdays at 5 PM
|
|
name: daily_report_rule
|
|
ref: reports.daily
|
|
description: "Generate daily report at 5 PM on weekdays"
|
|
enabled: true
|
|
trigger:
|
|
type: core.crontimer
|
|
parameters:
|
|
expression: "0 0 17 * * 1-5" # 5 PM Monday-Friday
|
|
timezone: "America/New_York"
|
|
description: "End of business day"
|
|
action:
|
|
ref: reports.generate
|
|
parameters:
|
|
report_type: daily_summary
|
|
recipients:
|
|
- ops@example.com
|
|
- management@example.com
|
|
|
|
---
|
|
# Example 4: Cron Timer - Cleanup Task
|
|
# Use case: Clean up old logs daily at midnight
|
|
name: log_cleanup_rule
|
|
ref: maintenance.cleanup
|
|
description: "Clean up old logs daily at midnight"
|
|
enabled: true
|
|
trigger:
|
|
type: core.crontimer
|
|
parameters:
|
|
expression: "0 0 0 * * *" # Midnight UTC
|
|
timezone: "UTC"
|
|
action:
|
|
ref: core.shell
|
|
parameters:
|
|
cmd: |
|
|
find /var/log/app -type f -mtime +30 -delete
|
|
echo "Cleaned up logs older than 30 days"
|
|
|
|
---
|
|
# Example 5: Cron Timer - Complex Schedule
|
|
# Use case: Run intensive task during off-peak hours only
|
|
name: data_processing_rule
|
|
ref: processing.intensive
|
|
description: "Process data only during off-peak hours"
|
|
enabled: true
|
|
trigger:
|
|
type: core.crontimer
|
|
parameters:
|
|
# Every 2 hours between 10 PM and 6 AM (22, 0, 2, 4 hours)
|
|
expression: "0 0 22,0,2,4 * * *"
|
|
timezone: "UTC"
|
|
action:
|
|
ref: processing.run_job
|
|
parameters:
|
|
job_type: intensive_processing
|
|
max_duration_minutes: 90
|
|
|
|
---
|
|
# Example 6: DateTime Timer - Scheduled Deployment
|
|
# Use case: Deploy to production at specific date/time
|
|
name: production_deployment_rule
|
|
ref: deployment.production
|
|
description: "Deploy version 2.0 to production"
|
|
enabled: true
|
|
trigger:
|
|
type: core.datetimetimer
|
|
parameters:
|
|
fire_at: "2024-06-15T02:00:00Z"
|
|
timezone: "UTC"
|
|
description: "Version 2.0 production release"
|
|
action:
|
|
ref: deployment.deploy
|
|
parameters:
|
|
environment: production
|
|
version: "2.0.0"
|
|
rollback_on_error: true
|
|
|
|
---
|
|
# Example 7: DateTime Timer - Event Reminder
|
|
# Use case: Send reminder before important event
|
|
name: meeting_reminder_rule
|
|
ref: notifications.reminder
|
|
description: "Send reminder 15 minutes before meeting"
|
|
enabled: true
|
|
trigger:
|
|
type: core.datetimetimer
|
|
parameters:
|
|
fire_at: "2024-03-20T13:45:00Z" # 1:45 PM, 15 min before 2 PM meeting
|
|
timezone: "America/New_York"
|
|
description: "Board meeting reminder"
|
|
action:
|
|
ref: notifications.send
|
|
parameters:
|
|
recipients:
|
|
- team@example.com
|
|
subject: "Reminder: Board Meeting in 15 minutes"
|
|
message: "The quarterly board meeting starts at 2:00 PM in Conference Room A"
|
|
|
|
---
|
|
# Example 8: DateTime Timer - License Renewal
|
|
# Use case: Reminder for upcoming license expiration
|
|
name: license_renewal_reminder
|
|
ref: admin.license_renewal
|
|
description: "Remind about license expiration"
|
|
enabled: true
|
|
trigger:
|
|
type: core.datetimetimer
|
|
parameters:
|
|
fire_at: "2024-11-15T09:00:00Z" # 30 days before expiration
|
|
timezone: "UTC"
|
|
description: "30-day license renewal reminder"
|
|
action:
|
|
ref: notifications.send
|
|
parameters:
|
|
recipients:
|
|
- admin@example.com
|
|
- finance@example.com
|
|
subject: "Action Required: Software License Expires in 30 Days"
|
|
message: "Please renew the production software license before Dec 15, 2024"
|
|
priority: high
|
|
|
|
---
|
|
# Example 9: Combined Pattern - Monitoring with Escalation
|
|
# Use case: Regular checks with scheduled review
|
|
name: monitoring_with_review
|
|
ref: monitoring.combined
|
|
description: "Regular health checks with weekly review"
|
|
# Note: This would actually be two separate rules
|
|
# Rule 9a: Interval check
|
|
enabled: true
|
|
trigger:
|
|
type: core.intervaltimer
|
|
parameters:
|
|
unit: minutes
|
|
interval: 5
|
|
action:
|
|
ref: monitoring.check_and_alert
|
|
parameters:
|
|
service: payment_api
|
|
alert_threshold: 3
|
|
|
|
# Rule 9b would be a separate rule:
|
|
# name: monitoring_weekly_review
|
|
# trigger:
|
|
# type: core.crontimer
|
|
# parameters:
|
|
# expression: "0 0 9 * * 1" # Monday 9 AM
|
|
# action:
|
|
# ref: reports.weekly_summary
|
|
|
|
---
|
|
# Best Practices Demonstrated:
|
|
|
|
# Interval Timers:
|
|
# - Use for continuous monitoring (health checks, metrics)
|
|
# - Use for regular maintenance (backups, cleanup)
|
|
# - Simple, predictable schedules
|
|
|
|
# Cron Timers:
|
|
# - Use for business-hour operations
|
|
# - Use for complex recurring schedules
|
|
# - Use when you need specific times (not just intervals)
|
|
|
|
# DateTime Timers:
|
|
# - Use for one-time events (deployments, migrations)
|
|
# - Use for reminders and notifications
|
|
# - Use for scheduled cutover events
|
|
# - Remember: These fire once and are automatically removed
|
|
|