コンテンツにスキップ
BlackOps1.xは試験的なバージョンです。Production Readyは2.xを予定しています。Releases
BlackOps
Esc
navigateopen⌘Jpreview
このページの内容

Core API

現在のPublic API型と通常のApplication/Adapterでの用途を確認する。

このReferenceは現在のmain Sourceで#[PublicApi]を持つ175型を一覧化しています。Application Authorはまず「Application構成」「Database」「Operation Authoring」「Validation」「Status/Outcome取得」の型を使い、Transport、Journal、Retention等のPortはAdapterを拡張するときだけ使ってください。

BlackOps\Core\Attribute\PublicApi marker自身は利用者向けAPIではないため一覧へ含めません。内部実装Namespaceと#[PublicApi]を持たない実装型にも依存しないでください。Attributeの付与対象と標準形はAttributesを確認してください。

Application構成

Namespace/Type Kind Purpose Typical Use
BlackOps\Application\Application final readonly class HTTP/Console Processの共通Application Application::configure()からBootstrapする
BlackOps\Application\ApplicationBuilder final class Environment、Config、Providerを組み立てる withEnvironmentFile()withEnvironment()withConfiguration()create()を呼ぶ
BlackOps\Application\Environment final readonly class 起動時Environmentを安全に型付きで読む Config Closureでstring()positiveInt()bool()等を呼ぶ
BlackOps\Application\ConsoleKernel final readonly class BlackOps CLIを実行する Project Rootのblackopsからrun()を呼ぶ
BlackOps\Application\ApplicationBootstrapException exception class Public Bootstrapの失敗を通知する Entrypointで安全な起動Errorとして扱う
BlackOps\Console\ConsoleActorProvider interface Console OperationのOrigin/Authorization Actorを供給する Application Service Providerで任意Bindingする

Database

Namespace/Type Kind Purpose Typical Use
BlackOps\Database\DatabaseManager interface DefaultまたはNamed DBAL Connectionを選択する 複数Connectionが必要なServiceへConstructor Injectionする
BlackOps\Database\Attribute\Transactional attribute class DI管理ServiceのTransaction境界を宣言する ClassまたはPublic Instance Methodへ付ける
BlackOps\Database\Attribute\AfterCommit attribute class Commit後に実行するvoid Methodを宣言する Public Instance Methodへ付ける
BlackOps\Database\AfterCommitFailure final readonly value object Commit後CallbackのService、Method、Cause、登録時Contextを保持する Failure Reporterで失敗を観測する
BlackOps\Database\AfterCommitFailureReporter interface Commit後Callback失敗の通知先 Application固有の監視AdapterをService Providerで登録する
BlackOps\Database\Exception\TransactionException exception class Transaction所有権、Rollback-only、DBAL境界の失敗を通知する 安全なMessageとPrevious Throwableを扱う
BlackOps\Database\Seeder interface Application Seederの実行Contract Root Seederと子Seederでrun(): voidを実装する
BlackOps\Database\SeederRunner interface Compile済みSeederを順序付きで実行する Root Seederから子SeederのClass名を渡す

Default Connectionだけを使うRepositoryはDoctrine\DBAL\Connectionを直接Constructor Injectionできます。Named ConnectionはContainerやGlobal HelperではなくDatabaseManager::connection($name)で選択します。Transaction Attributeの制約とContainer管理境界はTransaction Attributes、実行保証はTransactionを参照してください。

Operation Authoringと実行Context

Namespace/Type Kind Purpose Typical Use
BlackOps\Core\Operation marker interface Operation Definitionを示す Typed Self-handled Classで実装する
BlackOps\Core\OperationValue marker interface 型付きOperation Inputを示す Value DTOで実装する
BlackOps\Core\Outcome marker interface 正常完了の型付きOutputを示す Outcome DTOで実装する
BlackOps\Core\EphemeralOutcome marker interface HTTPへ一度だけ返す非永続化Outputを示す Credential Responseのfinal readonly DTOで実装する
BlackOps\Core\OutcomeData marker interface Outcome内のReadonly Nested Response Shapeを示す final readonlyなNested DTOで実装する
BlackOps\Core\EmptyOutcome final readonly class void成功を型付きOutcomeへ正規化する 値のない成功を読む
BlackOps\Core\ExecutionContext final readonly class Operation ID、Correlation、Causation、Attempt、Actorを保持する 必要なOperationだけhandle()第二引数で受ける
BlackOps\Core\AttemptContext final readonly class 現在のDeferred Attempt情報を保持する ExecutionContext::attempt()から読む
BlackOps\Core\ActorRef final readonly class ActorのIDとTypeだけを保持する Credentialを含めず主体を参照する
BlackOps\Core\ActorContext final readonly class Origin、Authorization、Execution Actorを区別する ExecutionContext::actorContext()から読む
BlackOps\Core\OperationEnvelope final readonly class Definition、Value、Context、Strategyをまとめる Legacy Handler/低Level Dispatcher拡張で使う
BlackOps\Core\OperationHandler interface Separate/Legacy Handler Contract Compatibility形のHandlerで実装する
BlackOps\Core\OperationResult final readonly class Completed/Rejected Result、任意のOperation ID、Replay markerを保持する 拒否時はrejected($reason, $operationId)、Replayはcompleted($outcome, $operationId)->asReplayed()で相関IDを残す
BlackOps\Execution\Dispatcher interface Operationを実行してResultを返す 独自入口では任意のActorContextとOptional IdempotencyKeyを末尾へ渡す
BlackOps\Execution\Operations interface Framework管理TransactionへDeferred child OperationをClass+Valueで登録する Application CoordinationへConstructor Injectionする
BlackOps\Execution\DispatchReceipt final readonly value object child Operation IDとUTC dispatch時刻を保持する operationId()dispatchedAt()を読む

Operation Metadata Attributes

Namespace/Type Kind Purpose Typical Use
BlackOps\Core\Attribute\OperationType attribute class 永続Operation Type IDを宣言する 全Operation Classへ付ける
BlackOps\Core\Attribute\Deferred attribute class Canonical Deferred executionを指定する #[Deferred]をOperation Classへ付ける
BlackOps\Core\Attribute\ExecuteWith attribute class Execution Strategyを明示するCompatibility形 Deferredは#[Deferred]がCanonical。InlineはAttributeを省略する
BlackOps\Core\Attribute\Authorize attribute class OperationのAuthorization Policyを指定する 認可が必要なOperationへ付ける
BlackOps\Core\Attribute\Sensitive attribute class Value/Outcome PropertyのObserved Projection Modeを指定する SensitiveなValueまたはOutcome Propertyへ付ける
BlackOps\Core\Attribute\ListOf attribute class Outcomeのlist<OutcomeData> Element型を宣言する 非Nullable array Propertyへ一度だけ付ける
BlackOps\Core\Attribute\SensitiveMode enum Omit/Mask/Hashを選ぶ #[Sensitive]の引数に使う
BlackOps\Core\Attribute\Accepts attribute class Accepted Valueを明示する Legacy/Separate互換形で使う
BlackOps\Core\Attribute\Returns attribute class Outcomeを明示する Legacy/Separate互換形で使う
BlackOps\Core\Attribute\HandledBy attribute class Separate Handlerを指定する 責務分離が必要な互換形で使う
BlackOps\Core\Attribute\ConsoleCommand attribute class OperationをBlackOps CLIへ明示公開する Canonical Command名と任意Descriptionを指定する

HTTP Attributes

Namespace/Type Kind Purpose Typical Use
BlackOps\Http\Attribute\Route attribute class HTTP Method/PathをOperationへ結び付ける HTTP公開するOperationへ付ける
BlackOps\Http\Attribute\FromBody attribute class JSON Body FieldをValueへBindする Body Inputへ付ける
BlackOps\Http\Attribute\FromHeader attribute class HeaderをValueへBindする Header Inputへ付ける
BlackOps\Http\Attribute\FromPath attribute class Path ParameterをValueへBindする Path Inputへ付ける
BlackOps\Http\Attribute\FromQuery attribute class Query ParameterをValueへBindする Query Inputへ付ける

HTTP Authentication

Namespace/Type Kind Purpose Typical Use
BlackOps\Http\Authentication\HttpAuthenticator interface HTTP CredentialをApplication Actorへ解決する Application固有のSession/Token検証を実装する
BlackOps\Http\Authentication\AuthenticationResult final readonly class Anonymous/Authenticated/Invalidを表す Authenticatorから安全なActorまたはCodeを返す
BlackOps\Http\Authentication\AuthenticationMiddleware final readonly middleware Authentication結果をPSR-15 Pipelineへ接続する config/middleware.phpへServiceとして登録する

HTTP Runtime

Namespace/Type Kind Purpose Typical Use
BlackOps\Http\SapiRuntime final class Framework-owned Classic/FrankenPHP Worker SAPI実行境界 Public Entrypointからrun($application)またはrunWorker($application)を呼ぶ

SapiRuntime::run(Application $application): voidはClassic Requestを一回処理し、SapiRuntime::runWorker(Application $application): voidはFrankenPHP Worker Callbackを継続処理します。Request生成、Response Emit、Safe 500、WorkerのEnvironment Restore/GCはRuntimeが所有します。Custom PSR-15 Adapter、Test、Application-owned Outer RouterではApplication::http()をEscape Hatchとして使います。

Session Authentication

Namespace/Type Kind Purpose Typical Use
BlackOps\Auth\Session\SessionIdentityProvider interface Opaque Identity IDを現在有効なActorへ解決する ApplicationのUser/Account StateからActorRefを返す
BlackOps\Auth\Session\SessionConfiguration final readonly class Absolute TTLとLast-used Touch Intervalを固定する Default 8時間/5分をApplication起動時に変更する
BlackOps\Auth\Session\SessionManager interface SessionのIssue/Rotate/Revoke/Cleanupを提供する Login、Token Rotation、Logout、Retention Jobから呼ぶ
BlackOps\Auth\Session\RawSessionToken final readonly value object 発行直後のRaw Tokenを明示取得に限定する IssuedSession::token()->reveal()で一度だけCredential化する
BlackOps\Auth\Session\IssuedSession final readonly value object Token、Issued At、Expires Atだけを返す Login/Rotation ResponseからApplication所有Credentialへ渡す
BlackOps\Auth\Session\InvalidSessionException exception class RotationのInvalid Stateを同じSafe Messageへ閉じる Malformed/Unknown/Expired/Revokedを区別せず扱う
BlackOps\Auth\Session\SessionCookieName final readonly value object Application所有のCookie名を検証する Cookie AdapterのConstructorへ渡す
BlackOps\Auth\Session\BearerSessionAuthenticator final readonly class Bearer CredentialをSessionとActorへ解決する API向けHttpAuthenticatorとして登録する
BlackOps\Auth\Session\CookieSessionAuthenticator final readonly class 指定CookieだけをSessionとActorへ解決する Browser AdapterのCredential抽出に使う
BlackOps\Auth\Session\SessionServiceProvider final readonly service provider Session Coreと選択AdapterをCompiled ContainerへOpt-in登録する bearer()またはcookie()servicesへ追加する

Operation Authorization

Namespace/Type Kind Purpose Typical Use
BlackOps\Core\Authorization\AuthorizationPolicy interface Operation認可をApplicationへ委譲する Policy Serviceでdecide()を実装する
BlackOps\Core\Authorization\AuthorizationRequest final readonly class Operation、Value、Context、Authorization Actorを渡す Policy内で現在権限の検索に使う
BlackOps\Core\Authorization\AuthorizationDecision final readonly class Allow/Unauthorized/Forbiddenを表す 安定Code付きの認可判断を返す

HTTP入口はAuthenticationで得たActorRefから、同じ主体をorigin/authorization/executionへ設定したActorContextを作ります。独自入口からDispatcherを呼ぶ場合も、Credentialを含めず、このActor参照だけを任意の第三引数へ渡してください。従来の二引数呼び出しはAnonymous Contextとして動作します。

Idempotency

Namespace/Type Kind Purpose Typical Use
BlackOps\Idempotency\IdempotencyKey final readonly value object CallerのPrintable ASCII Keyを検証し、Raw Valueを公開せずOpaque Hashへ変換する Network Retryで同じKeyを再利用するときhash()をFramework入口へ渡す
BlackOps\Idempotency\IdempotencyKeyHash final readonly value object Version付きSHA-256 Digestを保持する ExecutionContext::idempotencyKeyHash()からOpaque相関を読む

Keyは1〜255 byteのPrintable ASCIIだけを受け付けます。Raw Key、Credential、Canonical Operation ValueはFrameworkのPublic APIやContext Codecへ返りません。Scope/Fingerprint/Storageの型はInternal Contractであり、Applicationから直接利用しません。

Replayされた結果は元のOperation IDを保持し、OperationResult::isReplayed()で判定できます。Typed Resultを再投影する場合はOperationResult::asReplayed()を使います。Deferred受付のDeferredAcknowledgement::isReplayed()も同じ意味を持ちます。Idempotency-ReplayedCache-ControlなどのHTTPヘッダーはTransport Responderが付与し、Core ResultやAcknowledgement DTOには含めません。

Operation Status

Namespace/Type Kind Purpose Typical Use
BlackOps\Status\OperationStatusQuery interface Operation IDから認可済みStatusを読む ApplicationのStatus Adapterへ注入する
BlackOps\Status\OperationStatusResult marker interface Found/Unavailable/Expiredを束ねる Query Resultを分岐する
BlackOps\Status\OperationStatusFound final readonly value object 取得できたStatusを保持する status()から7 Stateを読む
BlackOps\Status\OperationStatusUnavailable final readonly value object Unknown/Deny/完全Purgeを区別せず表す Safe 404へ変換する
BlackOps\Status\OperationStatusExpired final readonly value object 認可済みRetention期限切れを表す Safe 410へ変換する
BlackOps\Status\OperationStatus final readonly value object StateごとのAttempt、Retry、Outcome、Safe Errorを保持する Named Constructorで7 Stateを扱う
BlackOps\Status\OperationStatusState enum Publicな7 Lifecycle Stateを定義する Status Resultを分岐する
BlackOps\Status\OperationStatusError final readonly value object Rejected/Failed/Dead LetterのSafe Errorを保持する Category/安定Codeだけを返す
BlackOps\Status\OperationStatusAuthorizer interface Status参照判断をApplicationへ委譲する Service ProviderからApplication PolicyをBindingする
BlackOps\Status\OperationStatusAuthorizationRequest final readonly value object Operation ID/Type、Current/Origin Actorを渡す PayloadやOutcomeを読まずPolicy評価する
BlackOps\Status\OperationStatusAuthorizationDecision final readonly value object Allow/Denyを表す Authorizerから判断を返す
BlackOps\Status\DenyOperationStatusAuthorizer final readonly class 未Binding時のFail-closed既定値 Status Detailを常に拒否する
BlackOps\Status\Exception\OperationStatusQueryException exception class Authorization/Storage/Decode/Integrity失敗を安全なCodeへ分類する Adapter境界の500として扱う

HTTPのGET /operations/{operationId}とGenerated .status().wait()はこのQueryを利用します。UnknownとDenyは404、認可済み期限切れだけ410です。Internal Source DTOやPostgreSQL実装へApplicationから依存しないでください。

Value Validation

Namespace/Type Kind Purpose Typical Use
BlackOps\Core\Validation\Attribute\NotBlank attribute class 空文字や空相当を拒否する 必須のValue Propertyへ付ける
BlackOps\Core\Validation\Attribute\Length attribute class Stringの文字数を検証する minmaxを指定する
BlackOps\Core\Validation\Attribute\Range attribute class 数値そのものを検証する intfloat Propertyへ付ける
BlackOps\Core\Validation\Attribute\Email attribute class Email形式を検証する Email Propertyへ付ける
BlackOps\Core\Validation\Attribute\Regex attribute class PCRE Patternとの一致を検証する String Propertyへ付ける
BlackOps\Core\Validation\Attribute\Count attribute class Collectionの要素数を検証する Array等のPropertyへ付ける
BlackOps\Core\Validation\Attribute\Choice attribute class Scalarの許可Listを検証する 列挙候補を持つPropertyへ付ける
BlackOps\Core\Validation\Violation final readonly value object Field、Rule、安定Codeを保持する Rejected Response/Journalで読む

Identifier

すべてのIdentifierはUUIDv7文字列をfromString()で検証し、toString()で取得します。同じUUID値でも型は相互に交換できません。

Namespace/Type Kind Purpose Typical Use
BlackOps\Core\Identifier\OperationId final readonly value object Operationを一意に識別する Response、Journal、Outcomeを相関する
BlackOps\Core\Identifier\AttemptId final readonly value object 一回のHandler Attemptを識別する Retryごとの実行を追跡する
BlackOps\Core\Identifier\CorrelationId final readonly value object 関連Operationを一つのTraceへまとめる Root/子Operationを相関する
BlackOps\Core\Identifier\CausationId final readonly value object 原因となるOperationを示す 子Operationの因果関係を表す
BlackOps\Core\Identifier\JournalRecordId final readonly value object Journal Recordを識別する Journal AdapterでRecordを扱う
BlackOps\Core\Identifier\RetentionHoldId final readonly value object Retention Holdを識別する Holdの作成/解除を相関する
BlackOps\Core\Identifier\RetentionPurgeAuditId final readonly value object Purge Auditを識別する Database AuditとSystem Logを相関する
BlackOps\Core\Identifier\OutboxRecordId final readonly value object Outbox Recordを一意に識別する Outbox登録と将来のRelayを相関する
BlackOps\Identifier\Uuidv7Generator interface Application-owned UUIDv7文字列を生成する Identifier AdapterへConstructor Injectionし、generate(): stringを呼ぶ

Execution StrategyとTransport Port

Namespace/Type Kind Purpose Typical Use
BlackOps\Core\Execution\ExecutionStrategy marker interface 実行経路を表す Custom Strategyの型境界に使う
BlackOps\Core\Execution\Inline final readonly class Request内の同期実行を表す 既定Strategyとして使う
BlackOps\Core\Execution\Deferred final readonly class Durable受付後のWorker実行を表すStrategy Identity #[Deferred]で選ぶ
BlackOps\Core\Execution\DeferredAcknowledgement final readonly value object Deferred受付結果を保持する Operation IDと受付時刻を読む
BlackOps\Core\Execution\DeferredOperationMessage final readonly value object Durable Transport Messageを保持する Transport Adapterで送受信する
BlackOps\Core\Execution\ClaimRequest final readonly value object WorkerのClaim条件を表す Receiverへ現在時刻等を渡す
BlackOps\Core\Execution\OperationClaim final readonly value object 取得したClaimとLease情報を保持する Worker AdapterでAttemptを開始する
BlackOps\Core\Execution\OperationSender interface Deferred Message送信Port Custom Transportの送信側を実装する
BlackOps\Core\Execution\OperationReceiver interface Deferred Claim取得Port Custom TransportのWorker側を実装する
BlackOps\Core\Execution\ClaimHeartbeat interface Lease更新Port Handler実行中のHeartbeatを実装する
BlackOps\Core\Execution\ClaimSettlement interface Claim成功/失敗確定Port Fencing付きSettlementを実装する
BlackOps\Core\Execution\ExecutionTransport aggregate interface Sender/Receiver/Heartbeat/Settlementを束ねる 一体型Transport Adapterを実装する
BlackOps\Core\Exception\DeferredTransportException exception class Deferred Transport失敗を通知する Adapter Errorを境界Exceptionへ変換する

Transactional Outbox

Namespace/Type Kind Purpose Typical Use
BlackOps\Outbox\TransactionalOutbox interface Framework管理TransactionへDeferred child Operationを登録する低Level互換API 既存Integration互換用。新規Application CoordinationはBlackOps\Execution\OperationsをConstructor Injectionする
BlackOps\Outbox\OutboxRegistration final readonly value object Outbox Record ID、child Operation ID、登録時刻を保持する 登録結果を監査・相関する

CodecとDependency Injection

Namespace/Type Kind Purpose Typical Use
BlackOps\Core\Codec\OperationCodec interface Operation Value/ContextをTransport形式へ変換する Custom Codecを実装する
BlackOps\Core\Codec\EncodedOperationMessage final readonly value object Encode済みType/Value/Contextを保持する Transport Payloadとして渡す
BlackOps\Core\Codec\OperationCodecException exception class Encode/Decode失敗を通知する 不正Payloadを安全に拒否する
BlackOps\Core\DependencyInjection\ServiceProvider interface Application Service登録を定義する Repository Interface等をBindingする
BlackOps\Core\DependencyInjection\ServiceRegistry interface Service Definition登録Port Service Providerのregister()で使う

Registry

Namespace/Type Kind Purpose Typical Use
BlackOps\Core\Registry\OperationMetadata final readonly value object Type、Value、Outcome、Handler、Strategy、解決済みTransaction Connectionを保持する Registry/Build Extensionで読む
BlackOps\Core\Registry\OperationRegistry final readonly class Compile済みOperation Metadataを検索する Type IDまたはDefinitionで解決する
BlackOps\Core\Registry\OperationProvider interface Discovery外Operationを列挙する Package/Generated Sourceを登録する

RejectionとSupervision

Namespace/Type Kind Purpose Typical Use
BlackOps\Core\Exception\OperationRejectedException exception class 予期された業務拒否を通知する Category Factoryへ安定Codeを渡してthrowする
BlackOps\Core\Rejection\RejectionCategory enum 拒否Categoryを表す Rejected Resultを分類する
BlackOps\Core\Rejection\RejectionReason final readonly value object Categoryと安定Codeを保持する Rejection Response/Journalで読む
BlackOps\Core\Supervision\RetryableException interface Retry可能なThrowableを示す 一時障害Exceptionで実装する
BlackOps\Core\Supervision\SupervisionPolicy interface FailureからActionを決める Custom Retry Policyを実装する
BlackOps\Core\Supervision\ExponentialBackoffSupervisionPolicy final readonly class Exponential Backoffを提供する Framework Workerの固定既定Retry Policy。Custom Worker Adapterでのみ構成する
BlackOps\Core\Supervision\SupervisionAction enum Retry/Fail/Dead Letter Actionを表す Policy結果を分岐する
BlackOps\Core\Supervision\SupervisionDecision final readonly value object Action、Delay、Reasonを保持する Worker RuntimeへPolicy判断を返す
BlackOps\Core\Exception\InvalidIdentifierException exception class 不正UUIDv7を通知する Identifier Inputを400等へ変換する

Outcome Store

Namespace/Type Kind Purpose Typical Use
BlackOps\Outcome\OutcomeReader interface Operation IDからOutcomeを読む ApplicationのStatus/Result入口へ注入する
BlackOps\Outcome\OutcomeWriter interface 完了Outcomeを保存する Runtime/Store Adapterで実装する
BlackOps\Outcome\OutcomeStore aggregate interface ReaderとWriterを束ねる 一体型Store Adapterで実装する
BlackOps\Outcome\OutcomeRecord final readonly value object Operation ID、Outcome、完了時刻を保持する OutcomeReader::find()の結果を読む
BlackOps\Outcome\Exception\OutcomeStoreException exception class 保存、復元、Schema不整合を通知する Store境界Errorとして扱う

Journal Core

Namespace/Type Kind Purpose Typical Use
BlackOps\Journal\JournalEvent enum Lifecycle Event名を定義する RecordのEventを分岐する
BlackOps\Journal\LifecycleState enum Operation Lifecycle Stateを表す Status Viewで現在Stateを示す
BlackOps\Journal\JournalData marker interface Event Data型を示す Custom/Canonical Data境界で実装する
BlackOps\Journal\EmptyJournalData final readonly class DataなしEventを表す Payloadを持たないRecordで使う
BlackOps\Journal\JournalOperation final readonly value object Journal内のOperation、相関ID、Actor Contextを保持する Canonical RecordからID/TypeだけのActorを読む
BlackOps\Journal\JournalAttempt final readonly value object Journal内のAttempt Metadataを保持する Attempt ID/番号/開始時刻を読む
BlackOps\Journal\JournalRecord final readonly value object Canonical Journal Recordを表す Canonical Storeで読み書きする
BlackOps\Journal\ObservedJournalRecord final readonly value object Projection済みRecordを表す Observer/Log Sinkへ渡す
BlackOps\Journal\JournalDeliveryPolicy enum Best effort/Required配送を選ぶ Observer Pipelineを構成する
BlackOps\Journal\JournalObserver interface Projection済みRecord受信Port Custom Log/Telemetry Sinkを実装する
BlackOps\Journal\FlushableJournalObserver interface Flush可能なObserver Contract Bufferを持つSinkで実装する
BlackOps\Journal\CanonicalJournalReader interface Operation IDのCanonical Recordを読む Status/監査Adapterで使う
BlackOps\Journal\CanonicalJournalWriter interface Canonical Recordを追記する Durable Journal Adapterで実装する
BlackOps\Journal\CanonicalJournalStore aggregate interface ReaderとWriterを束ねる 一体型Canonical Storeで実装する
BlackOps\Logging\JsonlJournalRecordEncoder final readonly class Observed RecordをJSONLへEncodeする File/Stream Observerで使う
BlackOps\Logging\JsonlJournalObserver final readonly class Projection済みRecordをStreamへ追記する Local JSONL Sinkを構成する

Journal Event Data

Namespace/Type Kind Purpose Typical Use
BlackOps\Journal\Data\OperationReceivedData final readonly class 受付Valueを保持する operation.receivedを読む
BlackOps\Journal\Data\AttemptFailedData final readonly class Attempt Failure概要を保持する attempt.failedを読む
BlackOps\Journal\Data\AttemptRetryScheduledData final readonly class Retry時刻/理由を保持する attempt.retry_scheduledを読む
BlackOps\Journal\Data\OperationCompletedData final readonly class 完了Outcomeを保持する operation.completedを読む
BlackOps\Journal\Data\OperationRejectedData final readonly class Rejection Reasonを保持する operation.rejectedを読む
BlackOps\Journal\Data\OperationFailedData final readonly class 最終Failure概要を保持する operation.failedを読む
BlackOps\Journal\Data\OperationDeadLetteredData final readonly class Dead Letter概要を保持する operation.dead_letteredを読む

Journal Exceptions

Namespace/Type Kind Purpose Typical Use
BlackOps\Journal\Exception\JournalReadFailed exception class Canonical Journal読取失敗を通知する Store Errorを境界で扱う
BlackOps\Journal\Exception\JournalWriteFailed exception class Canonical Journal書込失敗を通知する Durable書込を失敗させる
BlackOps\Journal\Exception\JournalObservationFailed exception class Observer配送失敗を通知する Delivery Policyに従って扱う
BlackOps\Journal\Exception\LifecycleTransitionException exception class 不正なState遷移を通知する Stale/Terminal更新を拒否する

Retention

Namespace/Type Kind Purpose Typical Use
BlackOps\Core\Retention\RetentionTarget enum Payload/Journal/Outcome/Dead Letter/Idempotency Record対象を表す PolicyとPlanを分類する
BlackOps\Core\Retention\RetentionPeriod final readonly value object 保持日数を表す 対象別Periodを作る
BlackOps\Core\Retention\RetentionPolicy final readonly value object 対象別保持期間をまとめる Plan/PurgeへAccepted Policyを渡す
BlackOps\Core\Retention\RetentionPolicyRef final readonly value object Policy Version/承認参照を表す Purge Auditへ残す
BlackOps\Core\Retention\RetentionActorRef final readonly value object Purge実行主体を表す CLI/Scheduler Actorを記録する
BlackOps\Core\Retention\RetentionPlan final readonly value object 削除候補一覧を保持する Dry-run結果を表示する
BlackOps\Core\Retention\RetentionPlanItem final readonly value object Operation単位の候補を表す 対象、基準時刻、Operation IDを読む
BlackOps\Core\Retention\RetentionPlanner interface 削除候補を計画する Database Adapterで実装する
BlackOps\Core\Retention\RetentionPurgeTarget enum Purge対象を表す 実削除結果を分類する
BlackOps\Core\Retention\RetentionPurgeService interface Planを再検証して削除する CLI/Schedulerから呼ぶ
BlackOps\Core\Retention\RetentionPurgeResult final readonly value object 対象別削除件数を保持する Purge結果とAuditを表示する。idempotencyRecordsDeleted()でIdempotency Record件数を読む
BlackOps\Core\Retention\RetentionHoldCategory enum Hold理由Categoryを表す Legal/Incident等を分類する
BlackOps\Core\Retention\RetentionHold final readonly value object Operation単位のHoldを表す Plan/Purgeから除外する
BlackOps\Core\Retention\RetentionHoldPort interface Hold保存/検索Port Hold Store Adapterで実装する
BlackOps\Core\Retention\RetentionPurgeAuditRecord final readonly value object PayloadなしPurge監査を表す 変更件数とPolicyを記録する
BlackOps\Core\Retention\RetentionPurgeAuditPort interface Purge Audit保存Port Database/System Log監査を実装する

Source auditの読み方

この一覧はPublic互換性の境界を示しますが、すべての型を通常のApplicationが直接使うという意味ではありません。次を目安に依存範囲を小さくしてください。

  • 通常のFeatureはOperationOperationValueOutcome、必要なAttributeだけを使います。
  • Deferred Result入口はOutcomeReaderOperationIdへ依存します。
  • Repository BindingはServiceProviderServiceRegistryを使います。
  • Transport、Journal、RetentionのPortはAdapterを実装するときだけ使います。
  • 内部実装Namespaceや#[PublicApi]のない具象実装をApplicationのContractにしません。

現行機能と未提供SurfaceはReleasesを確認してください。