コンテンツにスキップ
getnextpdf.com

Pro エディション

Output Pipeline — 詳細リファレンス

このページは、NextPDF\Pro\OutputPipeline の公開サーフェスに関する詳細リファレンスです。マニフェストの構築と検証、トポロジカルな実行順序、リトライとタイムアウトのセマンティクス、resume の挙動、そして fail-closed な pack ケーパビリティゲートを扱います。すべての公開シンボルについて、パラメーター、デフォルト、失敗モードを記載します。まず Output Pipeline のケーパビリティページ を読み、ワークフローのガイダンスを確認してください。

このケーパビリティは NextPDF Pronextpdf/pro)に含まれ、Pro ティアのライセンスエンベロープで有効化されます。その権利を持たないデプロイメントでは、当該ケーパビリティのクラスはロードされません。エディションを比較してライセンスを取得する

エグゼキューターと 10 種類のステップタイプのうち 7 種類には、機能単位のフラグはありません。残る 3 種類のステップタイプは、追加で Pack ケーパビリティを必要とします。

Step typeManifest valueRequired capabilityPack
Redactredactpack.privacy.redactPrivacy Pack
Extractextractpack.intelligence.extractIntelligence Pack
OCR overlayocr_overlaypack.intelligence.searchable_pdfIntelligence Pack

このゲートは実行時に fail-closed で、ステップがそのリゾルバーに到達する前に強制されます。ライセンスのないゲート対象ステップは、SPEC-LIC-001 コードと必要なケーパビリティを伴う Failed のステップ結果を返し、リゾルバーは一切呼び出されません。ケーパビリティリゾルバーが注入されていないパイプラインは、すべてのゲート対象ステップを拒否します。

Terminal window
composer require nextpdf/pro:^3

nextpdf/premium メタパッケージは nextpdf/pro のコードをインストールします。このモジュールは NextPDF\Pro\OutputPipeline 名前空間の下に存在します。

SymbolParametersDefault behaviorReturnsThrows or fails withNotes
PipelineExecutor::__constructStepResolverRegistry $registry, ?CapabilityResolverInterface $capabilityResolver = null組み込みのリゾルバーレジストリと任意の権利ソースをバインドPipelineExecutor宣言なしnull のケーパビリティリゾルバーはすべての pack ゲート対象ステップを拒否
PipelineExecutor::executePipelineManifest $manifest, array $variables = []ステップをトポロジカル順序で実行し結果を集約PipelineResult宣言なし。リゾルバーの失敗は Failed のステップ結果として捕捉非同期ジョブワーカー内での実行を想定
PipelineManifest::__constructstring $id, array $steps, PipelineOptions $options = new PipelineOptions(), ?string $resumeFromStepId = null構築時にステップグラフを検証PipelineManifest空のステップリスト、重複するステップ ID、未知の依存関係、循環、出力タイプ不整合、resume ステップ欠落で InvalidArgumentException。10 000 ステップ超で OverflowExceptionすべての検証は実行前に完了
PipelineManifest::topologicalOrderなし依存元を依存先より前に並べるlist<PipelineStep>宣言なし所与のマニフェストに対して決定的
PipelineManifest::getStepstring $stepIdステップ ID による線形探索?PipelineStep宣言なし未知の ID には null
PipelineManifest::rootStepsなし依存を持たないステップを返すlist<PipelineStep>宣言なしroot ステップが最初に実行
PipelineManifestBuilder::createstring $manifestId新しいビルダーを開始self宣言なしコンストラクターは private。これが唯一の入口
PipelineManifestBuilder::addStepstring $id, PipelineStepType $type, array $parameters = [], array $dependsOn = [], ?StepOutputType $outputType = nullステップを追加。null の出力タイプはステップタイプから推論self宣言なし検証は build() に延期
PipelineManifestBuilder::stopOnErrorbool $stop = true最初の失敗で停止する設定self宣言なしデフォルトは true
PipelineManifestBuilder::maxRetriesint $retriesステップごとのリトライ上限を設定self宣言なしデフォルトは 0(リトライなし)
PipelineManifestBuilder::timeoutint $timeoutMsグローバルパイプラインタイムアウトを設定self宣言なし0 でタイムアウト無効
PipelineManifestBuilder::resumeFromstring $stepIdresume ポイントを設定self宣言なしbuild() 時にそのステップが存在する必要あり
PipelineManifestBuilder::buildなし検証済みマニフェストを構築PipelineManifestPipelineManifest::__construct と同様
PipelineOptions::__constructbool $stopOnError = true, int $maxRetries = 0, int $timeoutMs = 0イミュータブルな実行オプションPipelineOptions宣言なしreadonly の値オブジェクト
PipelineStep::__constructstring $id, PipelineStepType $type, array $parameters = [], array $dependsOn = [], StepOutputType $outputType = StepOutputType::Pdfイミュータブルなステップ定義PipelineStep宣言なし直接構築ではすべてのタイプで出力タイプが PDF になる
PipelineStep::isRootなしステップが依存を持たなければ truebool宣言なし
PipelineStepType (enum)文字列バックの 10 ケース: generatemergesplitinspectcompresssignconvert、およびゲート対象の redactextractocr_overlay組み込み操作ごとに 1 ケース
PipelineStepType::requiresPackなしRedact、Extract、OcrOverlay で truebool宣言なしその他のケースは false を返す
PipelineStepType::requiredCapabilityなしゲート対象ケースをケーパビリティコードにマップ?string宣言なし非ゲートケースには null
PipelineStatus (enum)5 ケース: pendingrunningcompletedfailedcancelledパイプラインとステップの結果で共有
PipelineStatus::isTerminalなしCompleted、Failed、Cancelled で truebool宣言なしPending と Running は非終端
StepOutputType (enum)3 ケース: pdfjsonmetadataビルド時のエッジ検証を駆動
StepOutputType::forStepTypePipelineStepType $stepTypeステップタイプのデフォルト出力タイプself宣言なしInspect と Extract は JSON にマップ。その他はすべて PDF
StepOutputType::isCompatibleWithself $expectedInput同一タイプ一致または PDF 出力で truebool宣言なしヘルパー。PDF は汎用入力
PipelineContext::__constructstring $manifestId, array $variables = [], ?string $resumeFromStepId = null実行ごとのインメモリコンテキストPipelineContext宣言なしTTL、有効期限、永続化、バッキングストアなし
PipelineContext::setStepResult / ::getStepResultstring $stepId(set 時は StepResult を追加)ステップ結果を記録または読み取りvoid / ?StepResult宣言なし未実行のステップには null
PipelineContext::setStepOutput / ::getStepOutputstring $stepId(set 時は mixed を追加)中間出力を保存または読み取りvoid / mixed宣言なし欠落した出力には null
PipelineContext::hasStepResultstring $stepIdステップが既に実行済みかbool宣言なしresume チェックを支援
PipelineContext::allStepResultsなしこれまでに記録された全結果array<string, StepResult>宣言なしステップ ID をキーとする
PipelineContext::isResumeなしあるステップから再開する実行かbool宣言なし
PipelineResult::isSuccessなし全体ステータスが Completed のときのみ truebool宣言なし結果はエグゼキューターが生成
PipelineResult::getStepResultstring $stepIdID で 1 つのステップ結果を検索?StepResult宣言なしスキップまたは未知のステップには null
PipelineResult::failedStepsなし失敗したステップ結果を抽出list<StepResult>宣言なし完全成功時は空リスト
StepResult::isSuccessなしステップステータスが Completed のときのみ truebool宣言なしstepIdtypestatusdurationMserroroutput を保持
CapabilityResolverInterface::hasCapabilitystring $capability1 つのケーパビリティコードに対する肯定的な権利判定bool例外を投げてはならない省略による拒否。未知・失効・未マップのコードには false
final class PipelineExecutor
{
public function __construct(
private readonly StepResolverRegistry $registry,
private readonly ?CapabilityResolverInterface $capabilityResolver = null,
)
public function execute(PipelineManifest $manifest, array $variables = []): PipelineResult
}
final class PipelineManifestBuilder
{
public static function create(string $manifestId): self
public function addStep(
string $id,
PipelineStepType $type,
array $parameters = [],
array $dependsOn = [],
?StepOutputType $outputType = null,
): self
public function stopOnError(bool $stop = true): self
public function maxRetries(int $retries): self
public function timeout(int $timeoutMs): self
public function resumeFrom(string $stepId): self
public function build(): PipelineManifest
}
interface CapabilityResolverInterface
{
public function hasCapability(string $capability): bool;
}

検証は PipelineManifest のコンストラクター内で、実行の前に行われます。順序としては、ステップリストは空であってはならず、ステップ数は 10 000 に制限され、敵対的に深い依存チェーンをネイティブなスタック枯渇ではなく捕捉可能な OverflowException に変換します。ステップ ID は一意である必要があり、すべての dependsOn 参照は解決される必要があり、依存グラフは非循環でなければならず、出力タイプは互換でなければならず、宣言された resume ステップは存在しなければなりません。各違反は、具体的なメッセージを伴う InvalidArgumentException を送出します。

出力タイプのチェックは、タイプが PDF 出力にマップされるステップに適用されます。そのようなステップのすべての依存は、それ自体が PDF 出力を生成しなければなりません。JSON を生成するステップタイプ(inspectextract)への依存エッジは、本リリースではタイプチェックされません。

execute($manifest, $variables) は新しい PipelineContext を構築し、トポロジカル順序を計算して、その順序でステップを逐次実行します。resume ポイントが設定されている場合、指定されたステップに到達するまで先行ステップはスキップされます。スキップされた先行ステップは再実行されず、その出力も復元されません。コンテキストは実行ごとかつインメモリであるため、スキップされた先行ステップの出力を読み取る resume 後のステップは null を観測します。

グローバルタイムアウトは、正の値のとき、各ステップの開始前にステップ間で評価されます。期限切れになるとパイプラインステータスは Failed になり、残りのステップは開始されません。すでに実行中のステップが実行途中で中断されることはないため、1 つの長いステップが予算を超過する可能性があります。

各ステップは最大で maxRetries + 1 回の試行を受けます。成功した試行は直ちに返ります。失敗した試行 — リゾルバーからの Failed 結果、または送出された Throwable — は、試行回数が残っている限りリトライされ、最終試行の結果が返されます。リゾルバー内で送出された Throwable は、例外メッセージ(メッセージが空の場合は Unknown error)を伴う Failed のステップ結果に降格されます。したがって execute() は常に PipelineResult を返し、リゾルバーの失敗を伝播させることはありません。

登録されたリゾルバーを持たないステップタイプは、明示的なメッセージを伴う Failed のステップ結果を返し、実行は中断されません。stopOnError が true(デフォルト)の場合、実行は最初の失敗したステップで停止し、パイプラインステータスは Failed になります。false の場合、実行は継続し、いずれかのステップが失敗すれば最終ステータスは Failed、そうでなければ Completed になります。

リゾルバーのディスパッチの前に、すべての pack ゲート対象ステップ(Redact、Extract、OcrOverlay)が、注入された CapabilityResolverInterface に対してチェックされます。このゲートは fail-closed です。リゾルバーの欠落、false の応答、未マップのケーパビリティコードは、いずれもステップを拒否します。拒否は、SPEC-LIC-001 コード、ステップタイプ、必要なケーパビリティをエラーに保持する Failed のステップ結果を生成します。ゲートによる拒否はリトライ試行を消費せず、所要時間 0.0 を報告します。リゾルバーの実装は、肯定的に保持された権利に対してのみ true を返し、例外を投げてはなりません。

PipelineResult は、マニフェスト ID、全体ステータス、実行順のステップごとの結果、ミリ秒単位の合計所要時間、そしてステップの総数・完了数・失敗数を報告します。stepsTotal はマニフェスト内のすべてのステップを数え、resume によってスキップされたステップや停止後に到達しなかったステップも含みます。stepsCompletedstepsFailed は実行されたステップのみを数えます。

  • エグゼキューターは、ジョブワーカー内での非同期実行を想定して設計されています。インライン利用では、パイプライン全体の所要時間にわたって呼び出し元がブロックされます。
  • グローバルタイムアウトはステップ間のチェックです。単一の長いステップが予算を超過する可能性があり、実行途中でステップが中断されることはありません。
  • resume は同一実行内でのみステップをスキップします。いかなるストアからも出力を復元することはなく、キャッシュされた出力を伴う実行間 resume は実装されていません。
  • PipelineStep を直接構築すると、すべてのステップタイプで出力タイプが PDF にデフォルト設定されます。ビルダーを使うか、出力タイプを明示的に渡して、inspectextract のステップが JSON 出力を宣言し、エッジ検証が意味を保つようにしてください。
  • メッセージが空のリゾルバー例外は、ステップ結果内で Unknown error に正規化されます。
  • ゲートまたはリゾルバー欠落によって生成された Failed のステップ結果は、所要時間 0.0 を報告します。
  • PipelineResult::getStepResult() は、未知の ID に対しても、resume や停止によってスキップされたステップに対しても null を返します。stepsTotal と結果リストの長さを比較して区別してください。
  • このモジュールは暗号操作を一切行わず、FIPS 固有の挙動も定義しません。sign ステップの FIPS 姿勢は、パイプラインではなく署名モジュールによって管理されます。

パイプラインは、それ自体ではフォーマット適合性に関する処理を一切行いません。生成された各成果物の適合性は、実行中のステップの背後にあるモジュール — 署名、最適化、変換など — が所有し、それらのモジュールのリファレンスページに記載されています。このページは外部の節識別子を一切主張せず、すべての記述は製品ソースに基づいています。NextPDF はいかなる認証も主張しません。

  • モジュールソースは @since 2.2.0 を持ちます。このリファレンスは nextpdf/pro 3.1.0 で出荷されたサーフェスを記載します。
  • すべてのクラスは final であり、マニフェスト、オプション、ステップ、結果の各タイプは readonly の値オブジェクトです。ミューテートせず、新しいインスタンスを構築してください。
  • StepResolverInterfaceStepResolverRegistry@internal です。ステップリゾルバーは組み込みのみで、ユーザー定義のカスタムステップハンドラーは本リリースではサポートされません。
  • CapabilityResolverInterface は公開された権利のシームです。実装は省略による拒否でなければならず、デフォルトで許可してはなりません。
  • この PHP エグゼキューターは、マニフェスト検証と逐次実行のパスです。本番デプロイメントでは、並列オーケストレーションのためにサイドカー経由でディスパッチする場合があります。PHP パス上のケーパビリティゲートは、いずれの場合でも独立して fail-closed です。
  • 内部メカニズムの詳細はソースリポジトリの内部ドキュメントに留められ、本マニュアルの範囲外です。

このページは、外部から観測可能な挙動とサポートされる公開 API サーフェスのみを記載します。内部の名前空間パス、ヘルパークラス、メカニズムテーブル、ランブックのファイル名、チケットの接頭辞は範囲外です。