laravelplus/automations 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

laravelplus/automations

Composer 安装命令:

composer require laravelplus/automations

包简介

A powerful automation system for Laravel applications

README 文档

README

A powerful automation system for Laravel applications, built with modern PHP 8.4+ and Laravel 12+ features.

🚀 Features

  • Modern PHP 8.4+: Final classes, strict types, return types, readonly properties
  • Laravel 12+: Latest Laravel features and best practices
  • Repository Pattern: Clean separation of data access logic
  • Action-Based Controllers: Single responsibility actions for better maintainability
  • Multiple Trigger Types: Manual, Schedule, Webhook, Event
  • Rich Action Library: HTTP requests, emails, database queries, file operations, queue jobs, custom code
  • Web Interface: Beautiful dashboard for managing workflows
  • API Endpoints: Full REST API for integration
  • Security Features: Webhook signature verification, IP whitelisting, rate limiting
  • Monitoring: Execution history, statistics, and logging

📋 Requirements

  • PHP 8.4+
  • Laravel 12+
  • MySQL/PostgreSQL/SQLite

🛠 Installation

  1. Install the package:
composer require laravelplus/automations
  1. Publish the configuration:
php artisan vendor:publish --tag=automations-config
  1. Run migrations:
php artisan migrate
  1. Add to your .env:
AUTOMATIONS_ENABLED=true
AUTOMATIONS_QUEUE=default

🏗 Architecture

Repository Pattern

// Interface
interface WorkflowRepositoryInterface
{
    public function findById(int $id): ?Workflow;
    public function create(array $data): Workflow;
    public function update(Workflow $workflow, array $data): Workflow;
    // ...
}

// Implementation
final class WorkflowRepository implements WorkflowRepositoryInterface
{
    // Implementation with modern PHP features
}

Action-Based Controllers

final readonly class CreateWorkflowAction
{
    public function __construct(
        private WorkflowRepositoryInterface $workflowRepository
    ) {}

    public function __invoke(Request $request): JsonResponse|RedirectResponse
    {
        // Single responsibility action
    }
}

Modern Models

final class Workflow extends Model
{
    use HasFactory, SoftDeletes;

    protected $casts = [
        'status' => WorkflowStatus::class,
        'trigger_type' => TriggerType::class,
    ];

    public function isReadyForExecution(): bool
    {
        return $this->status === WorkflowStatus::ACTIVE &&
            ($this->next_execution_at === null || $this->next_execution_at <= now());
    }
}

🎯 Usage

Creating Workflows

use LaravelPlus\Automations\Facades\Automation;

// Create a workflow
$workflow = Workflow::create([
    'name' => 'Daily Report',
    'trigger_type' => TriggerType::SCHEDULE,
    'trigger_config' => ['cron_expression' => '0 9 * * *'],
    'definition' => [
        'nodes' => [
            [
                'id' => 'trigger',
                'type' => 'trigger',
                'data' => ['type' => 'schedule']
            ],
            [
                'id' => 'http_request',
                'type' => 'http_request',
                'data' => [
                    'url' => 'https://api.example.com/data',
                    'method' => 'GET'
                ]
            ],
            [
                'id' => 'email',
                'type' => 'email',
                'data' => [
                    'to' => 'admin@example.com',
                    'subject' => 'Daily Report',
                    'body' => '{{http_request.response}}'
                ]
            ]
        ],
        'connections' => [
            ['from' => 'trigger', 'to' => 'http_request'],
            ['from' => 'http_request', 'to' => 'email']
        ]
    ],
    'status' => WorkflowStatus::ACTIVE,
]);

Executing Workflows

// Manual execution
$execution = Automation::executeWorkflow($workflow, ['custom_data' => 'value']);

// Via API
POST /api/automations/workflows/{workflow}/execute
{
    "input_data": {
        "user_id": 123,
        "custom_field": "value"
    }
}

Webhook Triggers

// Create webhook-enabled workflow
$workflow = Workflow::create([
    'name' => 'Webhook Handler',
    'trigger_type' => TriggerType::WEBHOOK,
    'webhook_config' => [
        'name' => 'Order Created',
        'method' => 'POST',
        'require_signature' => true,
        'allowed_ips' => ['192.168.1.1']
    ],
    // ... workflow definition
]);

// Webhook endpoint: POST /api/automations/webhook/{endpoint}

🔧 Configuration

// config/automations.php
return [
    'enabled' => env('AUTOMATIONS_ENABLED', true),
    'queue' => env('AUTOMATIONS_QUEUE', 'default'),
    'timeout' => env('AUTOMATIONS_TIMEOUT', 300),
    'max_retries' => env('AUTOMATIONS_MAX_RETRIES', 3),
    'cleanup_days' => env('AUTOMATIONS_CLEANUP_DAYS', 30),
];

🎛 Console Commands

# Run scheduled workflows
php artisan automations:run-scheduled

# Dry run to see what would execute
php artisan automations:run-scheduled --dry-run

# List workflows
php artisan automations:list

# List with filters
php artisan automations:list --status=active --type=schedule --format=json

🌐 Web Interface

Visit /automations to access the dashboard:

  • Dashboard: Overview with statistics
  • Workflows: Create, edit, and manage workflows
  • Executions: Monitor execution history
  • Webhooks: Manage webhook endpoints

🔌 API Endpoints

Workflows

GET    /api/automations/workflows
POST   /api/automations/workflows
GET    /api/automations/workflows/{id}
PUT    /api/automations/workflows/{id}
DELETE /api/automations/workflows/{id}
POST   /api/automations/workflows/{id}/execute
POST   /api/automations/workflows/{id}/activate
POST   /api/automations/workflows/{id}/deactivate

Executions

GET    /api/automations/executions
GET    /api/automations/executions/{id}
POST   /api/automations/executions/{id}/retry
POST   /api/automations/executions/{id}/cancel

Webhooks

POST   /api/automations/webhook/{endpoint}
GET    /api/automations/webhook/{endpoint}

🛡 Security

  • Webhook Signatures: HMAC-SHA256 signature verification
  • IP Whitelisting: Restrict webhook access by IP
  • Rate Limiting: Prevent abuse with configurable limits
  • Input Validation: Comprehensive validation for all inputs
  • Sandboxed Code: Safe execution of custom code

📊 Monitoring

  • Execution History: Complete audit trail
  • Statistics: Success rates, execution times
  • Logging: Detailed logs for debugging
  • Error Handling: Graceful error recovery

🧪 Testing

# Run tests
composer test

# Run with coverage
composer test -- --coverage

📝 License

This package is open-sourced software licensed under the MIT license.

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Submit a pull request

📚 Documentation

For detailed documentation, visit docs.laravelplus.com/automations.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-07-24

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固