Pro edycja
Potok wyjściowy
W skrócie
Dział zatytułowany „W skrócie”Potok wyjściowy uruchamia deklaratywny manifest kroków PDF w kolejności zależności, z ponawianiem dla poszczególnych kroków oraz opcją zatrzymania na błędzie. Niektóre typy kroków wymagają dodatkowej możliwości Enterprise Pack.
Dostępność i licencjonowanie
Dział zatytułowany „Dostępność i licencjonowanie”Ta funkcja jest dostarczana w NextPDF Pro (nextpdf/pro) i aktywuje się z kopertą licencyjną poziomu Pro. Wdrożenie bez tego uprawnienia nie ładuje klas tej funkcji. Porównaj edycje i uzyskaj licencję.
Sam wykonawca potoku jest częścią edycji Pro. Trzy typy kroków wymagają dodatkowo nazwanej możliwości Enterprise Pack: krok redakcji wymaga możliwości Privacy Pack, a kroki wyodrębniania i nakładki OCR wymagają możliwości Intelligence Pack. Bramkowany krok bez licencji zawodzi bezpiecznie (fail closed) przy wykonaniu — daje wynik nieudanego kroku, a jego resolver nigdy nie zostaje wywołany — zamiast przerywać cały przebieg.
Instalacja
Dział zatytułowany „Instalacja”composer require nextpdf/pro:^3Kod znajduje się w przestrzeni nazw NextPDF\Pro\OutputPipeline.
Przegląd koncepcyjny
Dział zatytułowany „Przegląd koncepcyjny”PipelineExecutor przyjmuje PipelineManifest, sortuje kroki w porządku topologicznym i kieruje każdy krok do resolvera zarejestrowanego w StepResolverRegistry. Wyniki kroków są przechowywane w PipelineContext dla kroków zależnych. Wykonawca egzekwuje globalny limit czasu, obsługuje ponawianie dla poszczególnych kroków i może wznowić od nazwanego kroku. Jest zaprojektowany do uruchamiania wewnątrz asynchronicznego workera zadań, a nie bezpośrednio z procedury obsługi żądania.
Wbudowane typy kroków obejmują generate, merge, split, inspect, compress, sign oraz convert. Typy kroków redakcji, wyodrębniania i nakładki OCR są licencjonowane możliwościami i mapują się na możliwości Enterprise Pack.
Dlaczego działa to w ten sposób
Dział zatytułowany „Dlaczego działa to w ten sposób”Wykonawca zajmuje się wyłącznie orkiestracją. Sortuje kroki, egzekwuje bramkę licencyjną i kieruje każdy krok do zarejestrowanego resolvera, lecz sam nie wykonuje żadnej pracy na PDF. Ten podział pozwala, aby jeden manifest przebiegał albo tą sekwencyjną ścieżką PHP, albo przez worker poza pasmem, który dyspozycjonuje kroki równolegle, bez zmiany kodu wywołującego. Projekt celuje w asynchronicznego workera zadań, a nie w procedurę obsługi żądania, ponieważ wieloetapowy potok rutynowo przekracza budżet żądania, a kolejka skaluje przepustowość przez dodawanie workerów. Globalny limit czasu jest sprawdzany między krokami z tego samego powodu: cały krok jest jednostką pracy przekazywaną do resolvera, a orkiestrator pozostaje poza przebiegiem tego resolvera. Niepowodzenia ujawniają się jako wartości StepResult poszczególnych kroków, a nie jako rzucane wyjątki, więc jeden nieudany krok nigdy nie załamuje zbiorczego PipelineResult raportowanego przez workera.
Kontekst projektowy: Generowanie dokumentów o dużej objętości.
Kontrakt zachowania
Dział zatytułowany „Kontrakt zachowania”execute($manifest, $variables)zwraca wynik z ogólnym statusem, wynikami poszczególnych kroków, czasem trwania oraz liczbą ukończonych i nieudanych kroków.- Kroki wykonują się w porządku topologicznym; brak resolvera dla danego typu kroku daje nieudany krok z czytelnym komunikatem.
PipelineOptions::$stopOnErrorzatrzymuje wykonanie przy pierwszym niepowodzeniu; w przeciwnym razie wykonanie jest kontynuowane, a status końcowy odzwierciedla wszelkie niepowodzenia.- Globalny limit czasu, gdy ustawiony, kończy potok niepowodzeniem, jeśli zostanie przekroczony przed rozpoczęciem kolejnego kroku.
- Ponawianie dla poszczególnych kroków jest ograniczone skonfigurowanym maksimum; ponawiane są tylko niepowodzenia nieterminalne.
- Wznowienie od kroku pomija wcześniejsze kroki aż do osiągnięcia nazwanego kroku.
- Typy kroków bramkowane możliwościami zawodzą bezpiecznie (fail closed) przy wykonaniu z kodem błędu licencji, gdy brak wymaganej możliwości Pack; resolver nigdy nie zostaje wywołany.
Przykład kodu — Szybki start
Dział zatytułowany „Przykład kodu — Szybki start”Poniższy fragment odzwierciedla udokumentowane publiczne API. Repozytorium nie dostarcza uruchamialnego przykładu dla tego modułu.
use NextPDF\Pro\OutputPipeline\PipelineExecutor;
$result = (new PipelineExecutor($stepResolverRegistry))->execute($manifest);Przykład kodu — Produkcja
Dział zatytułowany „Przykład kodu — Produkcja”use NextPDF\Pro\OutputPipeline\PipelineExecutor;
$executor = new PipelineExecutor($stepResolverRegistry);
// Invoke from an async job worker, not a request handler.$result = $executor->execute($manifest, ['customerName' => 'Acme']);
if ($result->status !== \NextPDF\Pro\OutputPipeline\PipelineStatus::Completed) { foreach ($result->stepResults as $stepResult) { // Inspect per-step error detail. }}Przypadki brzegowe i pułapki
Dział zatytułowany „Przypadki brzegowe i pułapki”- Potok jest przeznaczony do uruchamiania asynchronicznie przez system zadań. Uruchomienie go w trybie inline blokuje wywołującego na cały czas trwania potoku.
- Typ kroku bez zarejestrowanego resolvera kończy ten krok niepowodzeniem, zamiast przerywać cały potok (chyba że ustawiono zatrzymanie na błędzie).
- Globalny limit czasu jest sprawdzany między krokami, a nie w trakcie kroku; długo działający krok może przekroczyć budżet, zanim sprawdzenie zadziała.
Wydajność
Dział zatytułowany „Wydajność”Łączny czas trwania to suma czasów trwania kroków plus narzut ponowień. Globalny limit czasu ogranicza najgorszy przypadek czasu zegarowego. Nie ma opublikowanej wartości przepustowości; koszt potoku jest zdominowany przez włączone kroki. Mierz na reprezentatywnych manifestach.
Uwagi dotyczące bezpieczeństwa
Dział zatytułowany „Uwagi dotyczące bezpieczeństwa”Wykonawca przekazuje dokumenty wejściowe i zmienne do resolverów kroków; traktuj je jako niezaufane i waliduj w obrębie każdego resolvera. Kroki bramkowane możliwościami zawodzą bezpiecznie (fail closed) przy braku licencji. Wykonawca nie loguje żadnej zawartości dokumentu.
Konformancja
Dział zatytułowany „Konformancja”Wykonawca sam nie wykonuje żadnej pracy związanej z konformancją formatu; konformancja zależy od poszczególnych resolverów kroków (generate, merge, split, sign, convert). Korpus RAG był niedostępny w czasie tworzenia, więc ta strona nie podaje żadnych zewnętrznych identyfikatorów klauzul.
Uwaga o granicy Enterprise
Dział zatytułowany „Uwaga o granicy Enterprise”Enterprise dodaje możliwości Pack, które odblokowują bramkowane typy kroków (redakcja, wyodrębnianie, nakładka OCR) na poziomie zachowania. Bez tych pakietów Pack potok nadal uruchamia każdy niebramkowany krok. Wewnętrzne mechanizmy Pack wykraczają poza zakres tej strony.
Rozwiązanie awaryjne / alternatywa Core
Dział zatytułowany „Rozwiązanie awaryjne / alternatywa Core”Bez Pro orkiestruj operacje PDF imperatywnie za pomocą API NextPDF Core; deklaratywny manifest, kolejność zależności i ponawianie to dodatki Pro..
Granica publikacji
Dział zatytułowany „Granica publikacji”Ta strona dokumentuje wyłącznie zewnętrznie obserwowalne zachowanie oraz obsługiwaną publiczną powierzchnię API. Wewnętrzne ścieżki przestrzeni nazw, klasy pomocnicze, tabele mechanizmów, nazwy plików runbooka oraz prefiksy zgłoszeń wykraczają poza zakres.