
# Naudojimas atskirai

Queuety pateikiamas kaip WordPress įskiepis, tačiau daugumai vykdymo aplinkos funkcijų nereikia aktyvios WordPress užklausos.

Eilė, darbo eigos variklis, būsenų automatai, signalai, artefaktai, paketinis apdorojimas,
planavimas, žurnalų rašymas, metrikos ir išteklių valdymas veikia su tomis pačiomis
MySQL lentelėmis. Jei kitas PHP procesas gali atverti tą pačią duomenų bazę, jis gali tiesiogiai naudoti
šį branduolį.

Tai yra atskiro naudojimo riba sistemoje Queuety. Duomenų bazės pagrindu veikiantį orkestravimo
variklį galima naudoti už WordPress ribų. WordPress integraciniai sluoksniai vis tiek priklauso
WordPress.

## Kas veikia už WordPress ribų

Naudodamas tiesioginį `Connection`, atskiras procesas gali inicijuoti Queuety ir naudoti
tuos pačius fasado metodus kaip ir įskiepis pagrindinei vykdymo aplinkai valdyti:

- išsiųsti užduotis
- paleisti vykdytojus ir vykdytojų grupes
- kurti ir paleisti darbo eigas
- siųsti signalus, patvirtinimus ir darbo eigos įvestį
- kurti ir paleisti būsenų automatus
- tikrinti darbo eigos ir automato būseną
- saugoti ir skaityti artefaktus
- valdyti paketinį apdorojimą, grandines ir pasikartojančius tvarkaraščius
- teikti žurnalų, metrikų, eilių ir vykdymo aplinkos būsenos užklausas

Tai reiškia, kad išorinis produktas gali pasiekti tą pačią orkestravimo būseną pirmiausia nepaleidęs WordPress, jei naudoja tą pačią duomenų bazę ir lentelių pavadinimus.

Šiuo metu vykdytojų grupės yra vienintelė išimtis: `Queuety::run_worker_pool()` ir `Queuety::run_auto_scaling_worker_pool()` skaito WordPress `DB_HOST`, `DB_NAME`, `DB_USER` ir `DB_PASSWORD` konstantas, o ne inicijuotą ryšį, todėl atskiras procesas prieš paleisdamas grupę turi apibrėžti šias konstantas ([#5](https://github.com/inline0/queuety/issues/5)).

## Kas lieka WordPress viduje

WordPress skirtas integracinis sluoksnis vis dar priklauso nuo to, ar įkelta WordPress.

Tai apima:

- įskiepio paleidimą ir aktyvinimo veikimą sistemoje `queuety.php`
- `Queuety::on_action()`, kuriam būtina `add_action()`
- `Queuety::replace_wp_cron()` ir `Queuety::restore_wp_cron()`, kurie priklauso nuo WordPress cron filtrų ir `do_action()`
- tikrąjį `wp queuety ...` komandų registravimo kelią, kuris priklauso nuo to, ar įkeliama WP-CLI WordPress

Šios dalys yra pagrindinės vykdymo aplinkos adapteriai. Jos nėra pati vykdymo aplinka.

## Inicijavimas

Atskiras naudojimo kelias sąmoningai paliktas paprastas. Atverkite duomenų bazės pagrindu veikiantį `Connection`,
inicijuokite fasadą ir pasirūpinkite, kad schema būtų sukurta.

```php
use Queuety\Connection;
use Queuety\Queuety;

$conn = new Connection(
    host: '127.0.0.1:3306',
    dbname: 'wordpress',
    user: 'root',
    password: 'secret',
    prefix: 'wp_',
);

Queuety::init( $conn );
Queuety::ensure_schema();
```

Po to bus pasiekiamas įprastas vykdymo aplinkos API:

```php
Queuety::dispatch( 'send_email', [ 'to' => 'user@example.com' ] );

$workflow_id = Queuety::workflow( 'report' )
    ->then( FetchReportData::class )
    ->then( RenderReport::class )
    ->dispatch( [ 'report_id' => 42 ] );

$machine_id = Queuety::machine( 'agent_session' )
    ->state( 'awaiting_input' )
    ->on( 'message', 'planning' )
    ->state( 'planning' )
    ->action( PlanSessionAction::class )
    ->dispatch();
```

## Lentelių pavadinimai

Atskirai naudojant nebūtina turėti specialiai WordPress skirtų lentelių pavadinimų. Reikia tik
stabilios priešdėlių strategijos.

Jei Queuety prijungiate prie WordPress duomenų bazės, naudokite tą patį priešdėlį, kurį ten naudoja
įskiepis. Jei atskiroje duomenų bazėje naudojate Queuety, ryšio
priešdėlis gali atitikti pagrindinės programos poreikius. Lentelių dalis, skirta Queuety,
vis tiek valdoma per `QUEUETY_TABLE_PREFIX` ir kiekvienos lentelės
perrašymo parinktis.

Įterptosios vykdymo aplinkos, kurios naudoja tą pačią duomenų bazę, gali nustatyti šią Queuety skirtą dalį
atskirai kiekvienam ryšiui:

```php
$conn = new Connection(
    host: '127.0.0.1:3306',
    dbname: 'wordpress',
    user: 'root',
    password: 'secret',
    prefix: 'wp_',
    table_prefix: 'themequeue_',
);
```

Taip WordPress duomenų bazės priešdėlis paliekamas nepakeistas, o tokių lentelių kaip
`queuety_jobs` pavadinimai susiejami su `wp_themequeue_jobs`.

## Kaip tai suprasti

Šį padalijimą patogiausia suprasti taip:

- Queuety branduolys = eilė, vykdytojai, darbo eigos, būsenų automatai, signalai, artefaktai ir vykdymo metaduomenys
- WordPress adapteris = įskiepio paleidimas, kablių integracija, WP-Cron pakaitalas ir WP-CLI registravimas

Taip išlaikomas vienas orkestravimo variklis, o su WordPress susijusi įvykių ir
užklausų integracija lieka ten, kur jai ir vieta.
