Skip to content

SAIF.Services.Imaging.Import architecture

SAIF.Services.Imaging.Import is a shared contract / data-transfer library that defines the imaging-import index vocabulary — document types, sub-types, and the full index field set (claim, policy, legal case, task-routing, and document-classification fields) — and produces the canonical KEY=value wire representation of that data for the downstream OnBase imaging import / xPresso document-distribution process. The library contains a single serializable class, clsImageImport, and carries no business logic beyond output shaping.*

Responsibilities

  • Define the imaging-import index vocabulary via public constants (OnBaseType*, OnBaseSubType*) and the clsImageImport property set.
  • Hold caller-populated index metadata spanning claim, policy, agency/group, legal, and task-routing domains.
  • Serialize populated metadata into a newline-delimited KEY=value block via ToString(), applying the field emission rules BR-IMG-001 through BR-IMG-007.
  • Supply construction-time defaults (BR-IMG-008) so callers that set only claim/document identifiers still produce a valid, indexable claim-file import request.*

Component boundaries

  • clsImageImport (data-transfer type): the sole component in the library. It owns the field vocabulary and the serialization contract; it performs no I/O and has no outbound coupling to other repository projects or external services.*
  • Transport boundary (owned outside this library): the ToString() output is the integration contract with the OnBase imaging import / xPresso distribution process. All transport — MSMQ BinaryMessageFormatter message construction or the distributeDocument xPresso web-service call — is owned by SAIF.Services.Printing/clsPrint.vb, not by this library.*

Interaction model

  • A consumer (clsPrint.ImportInfo in SAIF.Services.Printing) lazily instantiates clsImageImport, letting the property initializers apply the BR-IMG-008 defaults, and returns the instance for the caller to populate.
  • The consumer reads clsImageImport.ToString() (via clsPrint.ImportInfoString) to obtain the serialized KEY=value block, then either attaches the instance to PrintRequest.Importinfo for MSMQ delivery or passes the serialized string to the xPresso distributeDocument web-service call.
  • LegalMaintenance/LegalMaintenance.vbproj holds a <ProjectReference> to this library so the assembly is deployed alongside the SAIF.Services.Printing chain, but no .vb/.aspx file in the web project references clsImageImport by name.*
  • The <Serializable()> attribute on clsImageImport makes binary MSMQ round-tripping an implicit versioning constraint: adding or renaming fields changes both the binary payload and the KEY=value text contract.*

Architecture diagram

The following diagram shows how this library's data-transfer type is populated and consumed by the printing service before reaching the imaging/distribution destinations.

flowchart TD
    A["LegalMaintenance web<br>application"] --> B["SAIF.Services.Printing -<br>clsPrint"]
    B --> C["SAIF.Services.Imaging.Import<br>- clsImageImport"]
    C -->|ToString KEY=value block| B
    B -->|MSMQ BinaryMessageFormatter| D["MSMQ print/distribution<br>queue"]
    B -->|distributeDocument call| E[xPresso web service]

Sequence diagram

The following diagram shows the primary request/response sequence for producing the imaging-import wire representation.

sequenceDiagram
    participant Consumer as clsPrint (SAIF.Services.Printing)
    participant Descriptor as clsImageImport
    participant Xpresso as xPresso web service
    Consumer->>Descriptor: New clsImageImport (defaults applied, BR-IMG-008)
    Consumer->>Descriptor: set property values (claim/policy/legal/task fields)
    Consumer->>Descriptor: ToString()
    Descriptor-->>Consumer: KEY=value block (BR-IMG-001..BR-IMG-007 applied)
    Consumer->>Xpresso: distributeDocument(ImportInfoString)
    Xpresso-->>Consumer: distribution result

Design constraints

  • No exception handling, validation, or null guards exist in ToString(); Nothing-valued string properties append as empty text and there is no failure path.*
  • The emitted key order is fixed and not alphabetical (e.g., SLevel is emitted after ReceivedDate); consumers and downstream imaging configuration must treat the order as part of the contract.*
  • The field set spans multiple domains (claim, policy, agency/group, legal, task) accreted over time (in-source comments span 2007–2018) rather than being modelled into sub-objects.*
  • The library depends solely on System/Microsoft.VisualBasic BCL intrinsics; declared NuGet packages (SAIF.BOF.Framework, SAIF.Framework.Common, SAIF.HashUtil, SAIF.Web.API.Clients, Oracle.ManagedDataAccess, Newtonsoft.Json, RestSharp, and related transitive packages) are inherited, solution-uniform references not used by the compiled source.*

Sources

  • SAIF.Services.Imaging.Import/clsImageImport.vb
  • SAIF.Services.Imaging.Import/SAIF.Services.Imaging.Import.vbproj
  • SAIF.Services.Imaging.Import/AssemblyInfo.vb
  • SAIF.Services.Imaging.Import/packages.config
  • SAIF.Services.Imaging.Import/App.config
  • SAIF.Services.Imaging.Import/Web.config
  • SAIF.Services.Imaging.Import/SAIF.Services.Imaging.Import.vbproj
  • SAIF.Services.Printing/clsPrint.vb
  • LegalMaintenance/LegalMaintenance.vbproj