https://github.com/fibjs/fib-flow
a workflow management system built on fibjs, designed for orchestrating complex task dependencies and managing distributed task execution.
https://github.com/fibjs/fib-flow
Last synced: 14 days ago
JSON representation
a workflow management system built on fibjs, designed for orchestrating complex task dependencies and managing distributed task execution.
- Host: GitHub
- URL: https://github.com/fibjs/fib-flow
- Owner: fibjs
- License: mit
- Created: 2024-12-03T19:49:42.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2025-06-04T10:23:41.000Z (22 days ago)
- Last Synced: 2025-06-04T17:54:16.297Z (22 days ago)
- Language: JavaScript
- Homepage:
- Size: 467 KB
- Stars: 22
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# fib-flow
A powerful workflow management system built on fibjs for orchestrating complex task dependencies and distributed task execution.
## Key Features
- **Workflow Management**: Parent-child task relationships, automatic state propagation
- **Task Types**: Async tasks and cron jobs with priorities and delays
- **State Management**: Comprehensive task lifecycle and state transitions
- **Reliability**: Automatic retries, timeout protection, transaction safety
- **Database Support**: SQLite/MySQL/PostgreSQL with flexible connection options
- **Resource Management**: Load balancing and specialized worker support## Installation
```bash
fibjs --install fib-flow
```## Quick Start
```javascript
const { TaskManager } = require('fib-flow');// Initialize task manager (uses in-memory SQLite by default)
const taskManager = new TaskManager();
taskManager.db.setup();// Basic task handler
taskManager.use('sendEmail', async (task) => {
const { to, subject, body } = task.payload;
await sendEmail(to, subject, body);
return { sent: true };
});// Handler with configuration
taskManager.use('processImage', {
handler: async (task) => {
const { path } = task.payload;
await processImage(path);
return { processed: true };
},
timeout: 120, // 2 minutes timeout
max_retries: 2, // Maximum 2 retries
retry_interval: 30 // 30 seconds retry interval
});// Start processing
taskManager.start();// Add a task
taskManager.async('sendEmail', {
to: '[email protected]',
subject: 'Hello',
body: 'World'
});
```## Documentation
### Core Concepts
- [Task States and Transitions](docs/core-concepts.md#task-states-and-transitions)
- [Task Types](docs/core-concepts.md#task-types)
- [Error Handling](docs/core-concepts.md#error-handling)
- [Workflow Support](docs/workflow-guide.md)### Configuration & Setup
- [Installation Guide](docs/installation.md)
- [Database Configuration](docs/database-config.md)
- [Task Handler System](docs/task-handler.md)### Reference
- [API Documentation](docs/api-reference.md)
- [Cron Syntax Guide](docs/cron-syntax.md)
- [Usage Examples](docs/usage-examples.md)
- [Common Use Cases](docs/use-cases.md)## Example Use Cases
- Background Processing: File processing, report generation
- Scheduled Tasks: Data synchronization, backups
- Complex Workflows: Multi-step data pipelines
- Distributed Systems: Task coordination across servicesFor detailed examples and implementation guides, see [Usage Examples](docs/usage-examples.md).
## License
MIT License