ProcessOB3PRetention architecture¶
ProcessOB3PRetention is a thin console application hosted by the SAIF.Framework.Windows runner. The framework owns argument parsing, dependency-injection container construction, lifecycle sequencing, and exit codes; the application contributes an argument container, one orchestrating class, and two service wrappers.
Architecture diagram¶
The diagram shows how the framework runner builds the container, resolves the application class, and reaches the two external systems through the service wrappers.
flowchart TD
Sched["Scheduler (Automic)"] --> Main["Program.Main"]
Main --> Runner["SaifStandardProgramBase.Run"]
Runner --> Args["ArgContainer: Day, Month, Year"]
Runner --> Container["Autofac container"]
Container --> App["ThirdPartyRetentionProcessor"]
App --> Img["ImagingApiClient"]
App --> Ob["OnBaseService"]
App --> Log["IConsoleLogService"]
App --> Env["IEnvironmentService"]
Img --> Json["JsonHttpClient"]
Json --> ImgApi["Imaging REST API"]
Ob --> Wcf["HylandOutBoundContractClient"]
Wcf --> OnBase["OnBase archival SOAP service"]
Env --> EnvApi["Environment API"]
Components¶
| Component | Type | Responsibility |
|---|---|---|
Program |
Runner (SaifStandardProgramBase<ConsoleBase<ArgContainer>, ArgContainer>) |
Entry point and composition root; registers application services |
ArgContainer |
StandardArgumentContainerBase<ArgContainer> |
Declares and parses the optional Day, Month, Year arguments |
ThirdPartyRetentionProcessor |
ConsoleBase<ArgContainer> |
Orchestrates fetch, batch, archive, and mark-processed steps in Execute |
ImagingApiClient |
IImagingApiClient |
Wraps JsonHttpClient for the Imaging REST API (GET claims, PUT mark processed) |
OnBaseService |
IOnBaseService |
Wraps the WCF HylandOutBoundContractClient to call ArchiveDocument |
ThirdPartyRetention |
DTO (Contracts/ThirdPartyRetention.cs) |
Retention record (id, claim number, close date) exchanged with the Imaging API |
Composition root¶
Program.RegisterAppDependencies performs the following registrations:
- Configures OpenTelemetry with owner tag
Documents. - Calls
RegisterCommonDependencies(Environment.UserName), which registersWindowsEnvironmentServiceasIEnvironmentServiceandConsoleLogServiceasIConsoleLogService, bothInstancePerLifetimeScope.† - Registers
ImagingApiClientasIImagingApiClientwith the default lifetime. - Registers
OnBaseServiceasIOnBaseServicewith the default lifetime.
The application class itself is registered by the inherited CreateApplication factory.† No DatabaseConfig is supplied; the framework still registers named IUnitOfWorkFactory singletons, but nothing in this application resolves them.†
The ImagingApiClient and OnBaseService constructors read their endpoint URLs from the Environment API when the container resolves them, so a missing imagingapiurl or ProcessOB3PRetention.WSPEndPointUrl setting fails the run before Execute starts. See Configuration.
Design constraints¶
- Single sequential workflow with no concurrency; batches are processed one at a time.
- No transaction boundary exists. Each batch is an OnBase call followed by an Imaging API
PUT, with no compensation (see Business rules). SAIF.Framework.Data.NHibernateandSAIF.HashUtilare referenced but never used by application code. See Dependencies.ApplicationNameis not overridden, so it defaults toThirdPartyRetentionProcessor.*
Related documentation¶
| Documentation | Description |
|---|---|
| Index | Documentation entry point |
| Overview | Purpose and capabilities |
| Run lifecycle | Execution flow and exit codes |
| Arguments | Argument contract |
| Configuration | Settings and environment variables |
| Dependencies | Packages and API dependencies |
| Operations and processes | Operation catalog |
| Business rules | Rules enforced during processing |
| Operational runbook | Run and recovery procedures |
| Tech debt | Technical debt observations |
Note: Statements marked with
†are derived from dependency library documentation via the Legends CLI. Statements marked with*were inferred from code structure or contextual evidence.
Sources¶
ProcessOB3PRetention/Program.csProcessOB3PRetention/ArgContainer.csProcessOB3PRetention/ThirdPartyRetentionProcessor.csProcessOB3PRetention/Services/ImagingApiClient.csProcessOB3PRetention/Services/OnBaseService.csProcessOB3PRetention/Contracts/ThirdPartyRetention.csProcessOB3PRetention/ProcessOB3PRetention.csproj