Failing application-layer tests over fake ports (IWorkflowClient, IAclClient, IRegistrationStore): - Submit persists an INGEDIEND registration and starts the registratie process, recording the instance id — and persists *before* starting, so the worker can correlate the OpenZaakAanmaken job back to its aggregate (ADR-0009). - The worker opens a zaak via the ACL and attaches it; an unknown registration throws (job left for redelivery); a redelivered job is idempotent and opens no second zaak (§8.6). Handlers are stubs (no persistence / no ACL call) so the tests compile and fail on their assertions; the green commit implements them. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
28 lines
1.3 KiB
C#
28 lines
1.3 KiB
C#
using Big.Domain;
|
|
|
|
namespace Big.Application;
|
|
|
|
/// <summary>
|
|
/// Handles one acquired <c>OpenZaakAanmaken</c> external-worker job (ADR-0009): load the registration
|
|
/// the job correlates to, open a zaak for it via the ACL (§8.1), attach the zaak to the aggregate, and
|
|
/// return the zaak URL so the caller can complete the Flowable job. Pure application logic over ports —
|
|
/// it knows nothing of Flowable; the polling loop that feeds it jobs lives in Infrastructure.
|
|
/// </summary>
|
|
public sealed class OpenZaakWorker(IRegistrationStore store, IAclClient acl)
|
|
{
|
|
/// <summary>
|
|
/// Process the job and return the URL of the (existing or newly opened) zaak. Idempotent: if the
|
|
/// registration already has a zaak — a job redelivered after its completion was lost — it returns
|
|
/// that zaak without opening a second one (§8.6, at-least-once delivery). An unknown registration
|
|
/// is an error: it throws, leaving the job un-completed for Flowable to redeliver.
|
|
/// </summary>
|
|
public async Task<Uri> HandleAsync(OpenZaakJob job, CancellationToken ct = default)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(job);
|
|
|
|
// STUB (red): does not load, call the ACL, or attach.
|
|
await Task.CompletedTask;
|
|
return new Uri("about:blank");
|
|
}
|
|
}
|