
# Lietošana patstāvīgi

Queuety ir iepakots kā WordPress spraudnis, taču lielākajai daļai izpildlaika nav
vajadzīgs aktīvs WordPress pieprasījums.

Rinda, darbplūsmu dzinis, stāvokļu mašīnas, signāli, artefakti, grupēšana,
plānošana, reģistrēšana, metrikas un resursu pārvaldība darbojas ar tām pašām
MySQL tabulām. Ja cits PHP process var atvērt to pašu datubāzi, tas var tieši
izmantot šo pamatdaļu.

Tā ir patstāvīgās darbības robeža Queuety. Datubāzē balstīto orķestrēšanas
dzini var izmantot ārpus WordPress. Savienotāji WordPress joprojām pieder
WordPress.

## Kas darbojas ārpus WordPress

Izmantojot tiešu `Connection`, patstāvīgs process var inicializēt Queuety un izmantot
tās pašas fasādes metodes, ko spraudnis izmanto pamatdarbības izpildei:

- palaist uzdevumus
- darbināt darbiniekus un darbinieku kopumus
- veidot un palaist darbplūsmas
- sūtīt signālus, apstiprinājumus un darbplūsmas ievadi
- veidot un palaist stāvokļu mašīnas
- pārbaudīt darbplūsmu un mašīnu statusu
- glabāt un nolasīt artefaktus
- vadīt grupēšanu, ķēdēšanu un periodiskos grafikus
- vaicāt žurnālus, metriku, rindas un izpildlaika statusu

Tas nozīmē, ka ārējs produkts var piekļūt tam pašam orķestrēšanas stāvoklim,
vispirms nepalaižot WordPress, ja vien tas izmanto to pašu datubāzi un tabulu nosaukumus.

Darbinieku kopumi pašlaik ir vienīgais izņēmums: `Queuety::run_worker_pool()` un
`Queuety::run_auto_scaling_worker_pool()` nolasa WordPress `DB_HOST`,
`DB_NAME`, `DB_USER` un `DB_PASSWORD` konstantes, nevis inicializēto
savienojumu, tāpēc patstāvīgam procesam šīs konstantes ir jādefinē, pirms tas
palaiž kopumu ([#5](https://github.com/inline0/queuety/issues/5)).

## Kas paliek WordPress vidē

WordPress paredzētais savienotāju slānis joprojām ir atkarīgs no tā, vai ir ielādēts WordPress.

Tas ietver:

- spraudņa ielādes un aktivizēšanas darbības `queuety.php` vidē
- `Queuety::on_action()`, kam nepieciešams `add_action()`
- `Queuety::replace_wp_cron()` un `Queuety::restore_wp_cron()`, kas ir atkarīgi no WordPress cron filtriem un `do_action()`
- īstais komandas `wp queuety ...` reģistrācijas ceļš, kas ir atkarīgs no tā, vai WP-CLI ielādē WordPress

Šīs daļas ir pamatdarbības izpildlaika adapteri. Tās pašas nav izpildlaika vide.

## Inicializēšana

Patstāvīgās darbības ceļš ir apzināti vienkāršs. Atveriet DB balstītu `Connection`,
inicializējiet fasādi un pārliecinieties, ka shēma ir izveidota.

```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();
```

Pēc tam ir pieejams parastais izpildlaika 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();
```

## Tabulu nosaukumi

Patstāvīgai lietošanai nav vajadzīgi tieši WordPress tabulu nosaukumi. Nepieciešama tikai
stabila prefiksu piešķiršanas stratēģija.

Ja savienojat Queuety ar WordPress datubāzi, izmantojiet to pašu prefiksu, ko
spraudnis tur izmanto. Ja izmantojat Queuety atsevišķā datubāzē, savienojuma
prefikss var būt jebkurš, ko paredz jūsu resursdatora lietotne. Queuety paredzēto tabulu
daļu joprojām nosaka `QUEUETY_TABLE_PREFIX` un katras tabulas
pārrakstīšanas iestatījumi.

Iegultas izpildlaika vides, kas koplieto vienu datubāzi, var iestatīt šo Queuety paredzēto daļu
katram savienojumam:

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

Tādējādi datubāzes WordPress prefikss paliek neskarts, bet tabulas, piemēram,
`queuety_jobs`, tiek atrisinātas uz `wp_themequeue_jobs`.

## Priekšstats par darbību

Vienkāršākais veids, kā izprast šo sadalījumu:

- Queuety pamatdaļa = rinda, darbinieki, darbplūsmas, stāvokļu mašīnas, signāli, artefakti un izpildlaika metadati
- WordPress adapteris = spraudņa ielāde, aizķeru savienotāji, WP-Cron aizstāšana un WP-CLI reģistrācija

Tādējādi tiek saglabāts viens orķestrēšanas dzinis, bet WordPress paredzētā notikumu un
pieprasījumu integrācija paliek tai paredzētajā vietā.
