Failing infrastructure unit tests (stub HttpMessageHandler, fakes): - FlowableWorkflowClient starts a process with the registrationId variable and returns the instance id; acquires OpenZaakAanmaken jobs (topic/workerId/lock) and parses their registrationId; completes a job with the zaakUrl variable — request URIs match flowable-rest's service/ and external-job-api/ paths. - AclHttpClient POSTs the bsn to the ACL and returns the zaak URL. - InMemoryRegistrationStore saves/reads/upserts by id. - OpenZaakJobProcessor acquires, opens a zaak, completes the job; leaves a failing job uncompleted for redelivery; polls harmlessly when idle. Adapters are stubs so the tests compile and fail on their assertions; the green commit implements them against the REST contract verified on a live Flowable. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
30 lines
1.3 KiB
C#
30 lines
1.3 KiB
C#
namespace Big.Infrastructure;
|
|
|
|
/// <summary>Configuration for the Flowable Workflow Client. <see cref="BaseUrl"/> is the flowable-rest
|
|
/// root and must end with a slash (e.g. <c>http://flowable-rest:8080/flowable-rest/</c>) so the
|
|
/// <c>service/…</c> and <c>external-job-api/…</c> sub-paths resolve correctly.</summary>
|
|
public sealed class FlowableOptions
|
|
{
|
|
public Uri BaseUrl { get; set; } = null!;
|
|
public string Username { get; set; } = "";
|
|
public string Password { get; set; } = "";
|
|
|
|
/// <summary>The id this worker locks jobs under, so two workers don't process the same job.</summary>
|
|
public string WorkerId { get; set; } = "big-domain-worker";
|
|
|
|
/// <summary>How long an acquired job stays locked to this worker (ISO-8601 duration).</summary>
|
|
public string LockDuration { get; set; } = "PT5M";
|
|
|
|
/// <summary>How many OpenZaakAanmaken jobs to acquire per poll.</summary>
|
|
public int MaxJobsPerPoll { get; set; } = 5;
|
|
|
|
/// <summary>How often the worker polls Flowable for new jobs.</summary>
|
|
public TimeSpan PollInterval { get; set; } = TimeSpan.FromSeconds(2);
|
|
}
|
|
|
|
/// <summary>Configuration for the ACL HTTP client. <see cref="BaseUrl"/> is the ACL service root.</summary>
|
|
public sealed class AclOptions
|
|
{
|
|
public Uri BaseUrl { get; set; } = null!;
|
|
}
|