Operations¶
This host publishes 24 operations across six independent service classes: FileService (5), PreferenceService (3), WebContextService (3), ImagingService (2), FaxService (1), and SecurityService (10). Each service class's operations are documented in full on its own page under contracts/; this page is the catalog and hub.
This page is the operation catalog and hub. Each service class's operations are documented in detail on its own page under contracts/.
Operation surface derivation¶
| Aspect | Finding |
|---|---|
| Authoritative surface | Route registrations + implementing class public members |
| Contract assembly | SAIF.Services.WCF.Contracts — external |
[OperationContract] visible in repository |
No — contract assembly is external |
| Operation naming | Method name |
| Metadata document | ?wsdl published |
Because the six [ServiceContract] interfaces are not present in this repository, the operation names, parameters, and return types below are read from each service class's public members and cross-checked against the route registrations in src/WCF/SAIF.Services.WCF.Host/Global.asax.cs. Any [OperationContract] name override, [FaultContract] declaration, or IsOneWay setting present on the external interface could not be inspected; that limitation is a finding, not an omission, and is repeated on Architecture and Operations and processes.
Service class catalog¶
| Service class | Route | Contract | Operations | Documentation |
|---|---|---|---|---|
SAIF.Services.WCF.Services.FileService |
FileService |
IFileService — external |
5 | Details |
SAIF.Services.WCF.Services.PreferenceService |
PreferenceService |
IPreferenceService — external |
3 | Details |
SAIF.Services.WCF.Services.WebContextService |
WebContext |
IWebContextService — external |
3 | Details |
SAIF.Services.WCF.Services.ImagingService |
Imaging |
IImagingService — external |
2 | Details |
SAIF.Services.WCF.Services.FaxService |
Fax |
IFaxService — external |
1 | Details |
SAIF.Services.WCF.Services.Security.SecurityService |
Security |
ISecurityService — external |
10 | Details |
Contract assembly¶
| Aspect | Finding |
|---|---|
| Assembly | SAIF.Services.WCF.Contracts |
| Location | External to this repository |
| Referenced by | SAIF.Services.WCF.Host (transitively, via SAIF.Framework.Core 2.0.22181.2) |
| Contract interfaces | IFileService, IPreferenceService, IWebContextService, IImagingService, IFaxService, ISecurityService |
| Inspected | No — resolved by name from the transitive package closure |
Operation catalog¶
| Operation | Service class | Input message | Output message | Faults | Auth | Rules |
|---|---|---|---|---|---|---|
ReadFile |
SAIF.Services.WCF.Services.FileService |
string path, int byteLength |
byte[] |
Filesystem exception (IOException, UnauthorizedAccessException, FileNotFoundException) |
None in code | BR-WCF-003, BR-WCF-004 |
ReadEntireFile |
SAIF.Services.WCF.Services.FileService |
string path |
byte[] |
Filesystem exception | None in code | BR-WCF-004 |
WriteFile |
SAIF.Services.WCF.Services.FileService |
string path, byte[] bytes |
void | Filesystem exception | None in code | BR-WCF-004 |
DeleteFile |
SAIF.Services.WCF.Services.FileService |
string path |
void | Filesystem exception | None in code | BR-WCF-004 |
Length |
SAIF.Services.WCF.Services.FileService |
string path |
long |
Filesystem exception | None in code | BR-WCF-004 |
GetPreferences |
SAIF.Services.WCF.Services.PreferenceService |
string applicationName, string pageName, string user |
IDictionary<string, string> |
Oracle/NHibernate exception | None in code | BR-WCF-002, BR-WCF-005 |
SavePreferences |
SAIF.Services.WCF.Services.PreferenceService |
string applicationName, string pageName, string user, IDictionary<string, string> preferences, string currentUser |
void | ArgumentNullException (missing currentUser) |
None in code | BR-WCF-002, BR-WCF-005 |
GetDefaultPrinter |
SAIF.Services.WCF.Services.PreferenceService |
string user |
string |
Directory exception | None in code | BR-WCF-012, BR-WCF-013 |
Get |
SAIF.Services.WCF.Services.WebContextService |
string applicationName, string sessionId |
IWebContext |
ArgumentNullException |
None in code | BR-WCF-002, BR-WCF-014 |
Save |
SAIF.Services.WCF.Services.WebContextService |
string applicationName, string sessionId, IWebContext context |
void | ArgumentNullException |
None in code | BR-WCF-002, BR-WCF-011 |
CreateContext |
SAIF.Services.WCF.Services.WebContextService |
string contextId |
IWebContext |
None declared | None in code | BR-WCF-015 |
QueueImage |
SAIF.Services.WCF.Services.ImagingService |
byte[] file, string fileExtension, ImageConfig imageConfig, ApplicationEnvironment environment, ImageTaskConfig taskConfig |
long |
ArgumentNullException |
None in code | BR-WCF-002, BR-WCF-004 |
ReserveImageId |
SAIF.Services.WCF.Services.ImagingService |
None | long |
Oracle/NHibernate exception | None in code | BR-WCF-024 |
SendFax |
SAIF.Services.WCF.Services.FaxService |
SAIF.Core.Services.Documents.FaxConfig config |
void | ArgumentNullException |
None in code | BR-WCF-002, BR-WCF-004 |
IsAuthorized |
SAIF.Services.WCF.Services.Security.SecurityService |
string userId, string role |
bool |
SecurityException (uncategorized) |
None in code | BR-WCF-018, BR-WCF-023 |
IsAuthorized2 |
SAIF.Services.WCF.Services.Security.SecurityService |
string userId, string role, bool tryInternalDomainFirst |
bool |
SecurityException (uncategorized) |
None in code | BR-WCF-018, BR-WCF-023 |
GetUser |
SAIF.Services.WCF.Services.Security.SecurityService |
string userId |
User |
Directory or Oracle/NHibernate exception | None in code | BR-WCF-018a, BR-WCF-019a |
GetSaifUserByUserId |
SAIF.Services.WCF.Services.Security.SecurityService |
string userId |
SaifUser |
Directory exception | None in code | BR-WCF-024a, BR-WCF-025a |
GetSaifUserByEmployeeId |
SAIF.Services.WCF.Services.Security.SecurityService |
string employeeId |
SaifUser |
Directory or Oracle/NHibernate exception | None in code | BR-WCF-023a, BR-WCF-028a |
GetUserIdForEmployeeId |
SAIF.Services.WCF.Services.Security.SecurityService |
string employeeId |
string |
Oracle/NHibernate exception | None in code | BR-WCF-022a, BR-WCF-032 |
GetExternalUser |
SAIF.Services.WCF.Services.Security.SecurityService |
string userId |
ExternalUser |
Oracle/NHibernate exception | None in code | BR-WCF-019a, BR-WCF-020a |
GetExternalUserByCustomerId |
SAIF.Services.WCF.Services.Security.SecurityService |
string customerId, string userType |
ExternalUser |
Oracle/NHibernate exception | None in code | BR-WCF-019a, BR-WCF-020a |
GetInjuredWorkerUserByCustomerId |
SAIF.Services.WCF.Services.Security.SecurityService |
string customerId |
ExternalUser |
Oracle/NHibernate exception | None in code | BR-WCF-019a, BR-WCF-020a |
GetUsersByGroup |
SAIF.Services.WCF.Services.Security.SecurityService |
string groupName, string ldap, string domain, bool recurse, bool includeDisabled |
string[] |
Directory exception | None in code | BR-WCF-032, BR-WCF-035 |
Dispatch diagram¶
The following diagram visualizes how a caller reaches a handling operation.
flowchart TD
REQ["SOAP request"] --> ROUTE{"Route match"}
ROUTE -->|"/FileService"| FS["FileService"]
ROUTE -->|"/PreferenceService"| PS["PreferenceService"]
ROUTE -->|"/WebContext"| WC["WebContextService"]
ROUTE -->|"/Imaging"| IM["ImagingService"]
ROUTE -->|"/Fax"| FX["FaxService"]
ROUTE -->|"/Security"| SEC["SecurityService"]
ROUTE -->|"No match"| NF["HTTP 404<br>no service at address"]
FS --> OPSEL{"Operation selected<br>by SOAP action"}
PS --> OPSEL
WC --> OPSEL
IM --> OPSEL
FX --> OPSEL
SEC --> OPSEL
OPSEL -->|"Known operation"| NOAUTH["No authorization check<br>None in code"]
OPSEL -->|"Unknown action"| ACTFAULT["ActionNotSupported fault"]
NOAUTH --> OP["Operation body executes"]
OP --> OK["Response message"]
OP --> FAULT["SOAP fault<br>see Faults and error pipeline"]
Operations by process¶
Operations that delegate to a documented processing workflow link to it here.
Coverage¶
| Check | Result |
|---|---|
| Service classes registered in the route table | 6 |
Service classes with a contracts/ page |
6 |
| Public operations across all service classes | 24 |
| Rows in the operation catalog | 24 |
Related documentation¶
- Index
- Overview
- Architecture
- Activation and hosting
- Faults and error pipeline
- Authentication and authorization
- Dependencies
- Configuration
- Operations and processes
- Business rules
- Data model
- Operational runbook
- Tech debt
Sources¶
- src/WCF/SAIF.Services.WCF.Host/Global.asax.cs
- src/WCF/SAIF.Services.WCF.Host/Services/FileService.cs
- src/WCF/SAIF.Services.WCF.Host/Services/PreferenceService.cs
- src/WCF/SAIF.Services.WCF.Host/Services/WebContextService.cs
- src/WCF/SAIF.Services.WCF.Host/Services/ImagingService.cs
- src/WCF/SAIF.Services.WCF.Host/Services/FaxService.cs
- src/WCF/SAIF.Services.WCF.Host/Services/Security/SecurityService.cs