SAIF.Services.Appworx architecture¶
SAIF.Services.Appworx is a small, single-purpose class library that wraps submission of batch jobs to the Appworx scheduling system via a single Oracle stored procedure, exposed through the SAIF BOF data portal.
Responsibilities¶
- Assemble and submit an Appworx batch-job request (module name, requestor, printer, up to 20 string arguments) to the
submit_appworx_jobstored procedure via the SAIF BOF data portal. - Provide both an instance API (construct, set properties, call
SubmitBatchJob()) and a shared/static convenience overload that performs construction, argument assignment, and submission in a single call. - Normalize submission failures into a single
ApplicationExceptiontype so callers see a uniform failure mode regardless of the underlying data-access error. - Optionally override the target Oracle environment for Appworx submissions in non-production environments via the
inUseWCISDEV1AppworxForAllDevEnvflag on the shared overload.
Component boundaries¶
clsRequestAppworxJob(sole public type): owns the entire responsibility of this library — request-shape assembly and stored-procedure submission. It contains no business-rule engine, noCriteriainner class, and does not implement theIBusinessCriteriapattern used elsewhere in the SAIF BOF framework; it is a direct data-portal caller rather than a full BOF business object*.- SAIF BOF Framework boundary: the library depends on
IDataPortalInfo/IPortalRequest/IDataRequest(data portal abstraction),clsMSOracleDataLayer(Oracle data-layer construction), andAppGlobal.EnvironmentService(environment lookup) — all supplied by the referencedSAIF.BOF.Frameworkpackage family. The internal implementation of the data portal and its Oracle connectivity is outside this library's boundary and was not traced here**. - Database boundary: the library's only interaction with persistent state is a single outbound stored-procedure call (
submit_appworx_job); it owns no tables and performs no direct SQL. - Consumer boundary:
SAIF.Application.Claim.Legal\LegalNet\(clsRequestManager.vb,clsMailDateManager.vb,clsCreateFileManager.vb) calls the sharedSubmitBatchJoboverload to submit theLGN0002_LEGALNET_LETTERSAppworx job for LegalNet letter-request, mailed-date-update, and create-file workflows.SAIF.Business.Claim.Legaldeclares a project reference but no direct source-level usage was confirmed within scanned scope**.
Interaction model¶
- Instance model: a caller constructs
clsRequestAppworxJobwith anIDataPortalInfo, setsModuleName/Requestor/Printer/Arg1–Arg20, then callsSubmitBatchJob(), which builds anIPortalRequest/IDataRequestpair and invokesDPI.ProcessPortalRequest(...). - Shared/static convenience model:
clsRequestAppworxJob.SubmitBatchJob(inDPI, inModule, ...)wraps construction, argument assignment, and submission in one call; this is the pattern used by all observed callers. - Environment override: when the shared overload's
inUseWCISDEV1AppworxForAllDevEnvflag isTrue, the library bypasses the caller-suppliedIDataPortalInfoand derives a new one from a fixedclsMSOracleDataLayer("PRADT", target), wheretargetisWCISPRODin Prod andWCISDEV1otherwise (per BR-APX-003). - All submission failures are caught and rethrown as
ApplicationException(per BR-APX-002), presenting a uniform failure contract to callers.
Design constraints¶
- No
<ProjectReference>elements exist in the.vbproj; all SAIF framework dependencies are consumed as prebuilt NuGet packages rather than in-repo project references. - The library targets .NET Framework 4.6.2 and depends on Oracle connectivity (
Oracle.ManagedDataAccess) registered viaApp.config/Web.configDbProviderFactoriesentries. - Argument capacity is fixed at 20 positional string arguments (
Arg1–Arg20); there is no mechanism for additional or named arguments. - The library performs no validation of
ModuleName,Requestor, orPrintervalues beyond passing them as fixed-length stored-procedure parameters (30/32/30 characters respectively). - The
submit_appworx_jobstored procedure body resides in the Oracle database and was not accessible for inline inspection; its internal table interactions are opaque to source-level analysis**.
Architecture diagram¶
The following diagram shows the request submission flow from caller through the environment-override decision to the Appworx stored procedure.
flowchart TD
A["Caller (e.g. LegalNet manager class)"] --> B["clsRequestAppworxJob.SubmitBatchJob (Shared overload)"]
B --> C{"inUseWCISDEV1AppworxForAllDevEnv = True?"}
C -->|Yes, Prod env| D["clsMSOracleDataLayer(PRADT, WCISPROD)"]
C -->|Yes, non-Prod env| E["clsMSOracleDataLayer(PRADT, WCISDEV1)"]
C -->|No| F["Use caller-supplied IDataPortalInfo"]
D --> G["New clsRequestAppworxJob(DPI)"]
E --> G
F --> G
G --> H["Set ModuleName, Requestor, Printer, Arg1..Arg20"]
H --> I["SubmitBatchJob() instance method"]
I --> J["IDataPortalInfo.ProcessPortalRequest"]
J --> K["Stored procedure: submit_appworx_job (Oracle)"]
Sequence diagram¶
The following diagram shows the primary request/response sequence for the shared convenience overload used by all observed callers.
sequenceDiagram
participant Caller
participant AppworxJob as clsRequestAppworxJob
participant DPI as IDataPortalInfo
participant Oracle as Oracle (submit_appworx_job)
Caller->>AppworxJob: SubmitBatchJob(inDPI, inModule, inRequestor, inPrinter, args...)
AppworxJob->>AppworxJob: InitArgs()
AppworxJob->>AppworxJob: Assign ModuleName, Requestor, Printer, Arg1..Arg20
AppworxJob->>DPI: ProcessPortalRequest(PortalRequest)
DPI->>Oracle: Execute submit_appworx_job(inModule, inRequestor, inPrinter, [inArg1..inArg20])
Oracle-->>DPI: Result / exception
DPI-->>AppworxJob: Result / exception
AppworxJob-->>Caller: Return, or ApplicationException on failure
Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.
Related documentation¶
- Index
- Overview
- Dependencies
- Operations and processes
- Business rules
- Database tables
- Configuration
- SQL catalog
- Stored procedures
- API reference
Sources¶
SAIF.Services.Appworx\clsRequestAppworxJob.vbSAIF.Services.Appworx\SAIF.Services.Appworx.vbprojSAIF.Services.Appworx\App.configSAIF.Services.Appworx\Web.configSAIF.Services.Appworx\packages.config