NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Každý prechod spustí udalosť s príslušným modelom. Všetky udalosti sú v RoundlyConsulting\Approvals\Events a obsah vystavujú ako verejné vlastnosti:

UdalosťObsahKedy sa spustí
ApprovalRequestedapprovalvyžiada sa čakajúce rozhodnutie (ask())
ApprovalApprovedapprovalrozhodnutie sa schváli
ApprovalRejectedapprovalrozhodnutie sa zamietne
ApprovalCancelledapprovalrozhodnutie sa stiahne — cez cancel(), vypnutím prepínača, alebo sa zruší nevybavené vyžiadanie, lebo jeho žiadosť sa vyhodnotila, jeho stupeň uzavrel alebo kolo uzavrela vaša aplikácia (close())
ApprovalExpiredapprovalčakajúce alebo schválené rozhodnutie vyprší
ApprovalRequestResolvedrequestžiadosť skončí schválením, zamietnutím alebo vypršaním — alebo ju vaša aplikácia uzavrie ako zrušenú či expirovanú (close()); raz, až po zrušení nevybavených vyžiadaní
ApprovalToggledactor, entity, hasBeenApprovedprebehne toggle() / toggleApproval()
ApprovalStageOpenedstageviacstupňová žiadosť otvorí stupeň
ApprovalStageClearedstagestupeň prejde schválením
ApprovalDelegateddelegationschvaľovateľ deleguje právomoc
ApprovalDelegationRevokeddelegationdelegovanie sa zruší
ApprovalStatusChangedsubject, from, to, actorzastrešujúca — každý prechod stavu rozhodnutia či žiadosti, popri konkrétnej udalosti

Zastrešujúca udalosť

Prihláste sa na ApprovalStatusChanged raz a uvidíte všetky prechody: rozhodnutie schválené, zamietnuté, stiahnuté — aj prepínačom či zmenou názoru, ktorá ho nahradí — alebo expirované, nevybavené vyžiadanie zrušené po uzavretí jeho kola a žiadosť vyhodnotenú, expirovanú či uzavretú vašou aplikáciou. Nesie subjekt (zmenenú Approval alebo ApprovalRequest), stavy from a to typu ApprovalStatus a aktéra, ak je známy — pri vyhodnotenej žiadosti či zrušenom vyžiadaní je null:

use RoundlyConsulting\Approvals\Events\ApprovalStatusChanged;

class AuditApprovalChanges
{
    public function handle(ApprovalStatusChanged $event): void
    {
        // $event->from, $event->to, $event->subject, $event->actor
        logger()->info("approval moved {$event->from->value} -> {$event->to->value}");
    }
}

Konkrétne listenery

use Illuminate\Support\Facades\Event;
use RoundlyConsulting\Approvals\Events\ApprovalApproved;
use RoundlyConsulting\Approvals\Events\ApprovalRequestResolved;

Event::listen(function (ApprovalApproved $event): void {
    $approval = $event->approval;   // the Approval model
});

Event::listen(function (ApprovalRequestResolved $event): void {
    $request = $event->request;     // approved, rejected or expired — see $request->status
    $subject = $request->subject;   // e.g. the Release
});

ask() vytvorí čakajúce rozhodnutie, žiadne nemení, preto spustí len ApprovalRequested. Zmeny stupňov a delegovanie tiež spúšťajú len vlastné udalosti — nie zastrešujúcu.

Keď sa kolo uzavrie

Či kolo vyhodnotia jeho rozhodnutia, vyprší, alebo ho uzavrie vaša aplikácia, udalosti prídu vždy v rovnakom poradí: ApprovalCancelled a ApprovalStatusChanged pre každé zrušené vyžiadanie, potom ApprovalRequestResolved a nakoniec ApprovalStatusChanged pre žiadosť. Listener vyhodnotenia tak nikdy neuvidí vyžiadanie, ktoré na kole ešte čaká.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.