Persistence
Persist the Workflow State across executions.
Last updated
use NeuronAI\Workflow\Persistence\FilePersistence;
$workflow = new WorkflowAgent(
new FilePersistence(__DIR__),
);use NeuronAI\Workflow\Persistence\DatabasePersistence;
$workflow = new WorkflowAgent(
new DatabasePersistence(
pdo: new \PDO(...),
table: 'workflow_interrupts'
),
);CREATE TABLE IF NOT EXISTS workflow_interrupts (
workflow_id VARCHAR(255) PRIMARY KEY,
interrupt LONGBLOB NOT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
INDEX idx_workflow_id (workflow_id),
INDEX idx_updated_at (updated_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;CREATE TABLE workflow_interrupts (
workflow_id VARCHAR(255) PRIMARY KEY,
interrupt BYTEA NOT NULL,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL
);
CREATE INDEX idx_workflow_id ON workflow_interrupts(workflow_id);
CREATE INDEX idx_updated_at ON workflow_interrupts(updated_at);CREATE TABLE workflow_interrupts (
workflow_id TEXT PRIMARY KEY,
interrupt BLOB NOT NULL,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);
CREATE INDEX idx_workflow_id ON workflow_interrupts(workflow_id);
CREATE INDEX idx_updated_at ON workflow_interrupts(updated_at);php artisan make:migration create_workflow_interrupts_table --create=workflow_interruptsSchema::create('workflow_interrupts', function (Blueprint $table) {
$table->id();
$table->string('workflow_id')->unique();
$table->longText('interrupt')->charset('binary');
$table->timestamps();
});class WorkflowInterrupt extends Model
{
protected $fillable = ['workflow_id', 'interrupt'];
}use App\Models\WorkflowInterrupt;
use NeuronAI\Workflow\Persistence\EloquentPersistence;
// Creating a workflow
$workflow = WorkflowAgent(
persistence: new EloquentPersistence(WorkflowInterrupt::class)
);