# Moose / Workflows / Schedule Workflow Documentation – TypeScript ## Included Files 1. moose/workflows/schedule-workflow/schedule-workflow.mdx ## Schedule Workflows Source: moose/workflows/schedule-workflow/schedule-workflow.mdx Set up recurring and scheduled workflow execution # Schedule Workflows ## Overview Moose workflows can be configured to run automatically on a schedule using cron expressions or interval-based scheduling. This enables you to automate recurring tasks, data processing jobs, and maintenance operations. ## Scheduling Workflows Workflows can be configured to run on a schedule using the `schedule` field in `Workflow`. This field is optional and blank by default. ### Cron Expressions ```typescript filename="app/scheduled-workflow.ts" copy ); ``` #### Cron Expression Format ```text |------------------------------- Minute (0-59) | |------------------------- Hour (0-23) | | |------------------- Day of the month (1-31) | | | |------------- Month (1-12; or JAN to DEC) | | | | |------- Day of the week (0-6; or SUN to SAT; or 7 for Sunday) | | | | | | | | | | * * * * * ``` #### Common Cron Examples | Cron Expression | Description | |-----------------|-------------| | 0 12 * * * | Runs at 12:00 PM every day | | 0 0 * * 0 | Runs at 12:00 AM every Sunday | | 0 8 * * 1-5 | Runs at 8:00 AM on weekdays (Monday to Friday) | | * * * * * | Runs every minute | | 0 */6 * * * | Runs every 6 hours | | 0 9 1 * * | Runs at 9:00 AM on the first day of every month | | 0 0 1 1 * | Runs at midnight on January 1st every year | Use an online cron expression visualizer like [crontab.guru](https://crontab.guru/) to help you understand how the cron expression will schedule your workflow. ### Interval Schedules Interval schedules can be specified as a string `"@every "`. The interval follows standard duration format: ```typescript filename="app/interval-workflow.ts" copy ); ``` #### Interval Examples | Interval | Description | |----------|-------------| | `@every 30s` | Every 30 seconds | | `@every 5m` | Every 5 minutes | | `@every 1h` | Every hour | | `@every 12h` | Every 12 hours | | `@every 24h` | Every 24 hours | | `@every 7d` | Every 7 days | ## Practical Scheduling Examples ### Daily Data Processing ```typescript filename="app/daily-etl.ts" copy ); ``` ### Weekly Reports ```typescript filename="app/weekly-reports.ts" copy ); ``` ### High-Frequency Monitoring ```typescript filename="app/monitoring.ts" copy ); ``` ## Monitoring Scheduled Workflows ### Development Environment If your dev server is running, you should see logs in the terminal when your scheduled workflow is executed: ```bash filename="Terminal" copy moose dev ``` ```txt filename="Terminal" [2024-01-15 12:00:00] Scheduled workflow 'daily-data-processing' started [2024-01-15 12:00:01] Task 'extract' completed successfully [2024-01-15 12:00:15] Task 'transform' completed successfully [2024-01-15 12:00:30] Task 'load' completed successfully [2024-01-15 12:00:30] Workflow 'daily-data-processing' completed successfully ``` ### Checking Workflow Status You can check the status of scheduled workflows using the CLI: ```bash filename="Terminal" copy # List all workflows defined in your project moose workflow list # Alternative command to list all workflows moose ls --type workflows # View workflow execution history moose workflow history # Check specific workflow status moose workflow status daily-data-processing # Get detailed execution history moose workflow status daily-data-processing --verbose ``` ### Temporal Dashboard Access the Temporal dashboard to view scheduled workflow executions: ```bash filename="Terminal" copy # Open Temporal dashboard (typically at http://localhost:8080) open http://localhost:8080 ``` The dashboard shows: - Scheduled workflow definitions - Execution history and timing - Success/failure rates - Retry attempts and errors ## Best Practices for Scheduled Workflows ### Timeout and Retry Configuration Configure appropriate timeouts and retries for scheduled workflows: ```typescript filename="app/robust-scheduled-workflow.ts" copy ); ); ``` ## Troubleshooting Scheduled Workflows ### Common Issues - **Timezone considerations**: Cron schedules use UTC by default - **Resource conflicts**: Ensure scheduled workflows don't compete for resources - **Long-running tasks**: Set appropriate timeouts for lengthy operations - **Error handling**: Implement proper error handling and logging