Skip to content

Operations and processes

Every operation on this host is invoked through one route: UC4 → UC4Service. Transaction boundary for every process below: none — the host opens no unit of work, no transaction, and no compensating path; the forward call to the downstream service is the only side effect, and it is not undone if anything after it fails. This page is the process hub; input/output messages, declared faults, and binding facts belong to Operations.

Process catalog

ID Process Entry operation Rules enforced
OP-001 Invoke job by enum environment, no parameters ExecuteJob BR-UC4-001, BR-UC4-002, BR-UC4-003, BR-UC4-005, BR-UC4-006, BR-UC4-008, BR-UC4-009, BR-UC4-010, BR-UC4-011, BR-UC4-012
OP-002 Invoke job by client id, no parameters ExecuteJobWithClientId BR-UC4-001, BR-UC4-002, BR-UC4-003, BR-UC4-005, BR-UC4-008, BR-UC4-009, BR-UC4-010, BR-UC4-011, BR-UC4-012
OP-003 Invoke job by enum environment, JSON parameters ExecuteJobWithJson BR-UC4-001, BR-UC4-002, BR-UC4-003, BR-UC4-005, BR-UC4-006, BR-UC4-008, BR-UC4-010, BR-UC4-011, BR-UC4-012, BR-UC4-013
OP-004 Invoke job by client id, JSON parameters ExecuteJobWithJsonAndClientId BR-UC4-001, BR-UC4-002, BR-UC4-003, BR-UC4-004, BR-UC4-005, BR-UC4-008, BR-UC4-010, BR-UC4-011, BR-UC4-012, BR-UC4-013
OP-005 Invoke job by enum environment, positional values ExecuteJobWithValues BR-UC4-001, BR-UC4-002, BR-UC4-003, BR-UC4-005, BR-UC4-006, BR-UC4-008, BR-UC4-009, BR-UC4-010, BR-UC4-011, BR-UC4-012
OP-006 Invoke job by client id, positional values (canonical flow) ExecuteJobWithValuesAndClientId BR-UC4-001, BR-UC4-002, BR-UC4-003, BR-UC4-004, BR-UC4-005, BR-UC4-008, BR-UC4-009, BR-UC4-010, BR-UC4-011, BR-UC4-012
OP-007 Invoke job by enum environment, key/value parameters ExecuteJobWithParameters BR-UC4-001, BR-UC4-002, BR-UC4-003, BR-UC4-005, BR-UC4-006, BR-UC4-008, BR-UC4-010, BR-UC4-011, BR-UC4-012
OP-008 Invoke job by client id, key/value parameters ExecuteJobWithParametersAndClientId BR-UC4-001, BR-UC4-002, BR-UC4-003, BR-UC4-004, BR-UC4-005, BR-UC4-008, BR-UC4-010, BR-UC4-011, BR-UC4-012

BR-UC4-007 (job/parameter name space validation) reaches no process: UC4Service.Validate has no caller anywhere in this host.

Cross-process flowchart

ExecuteJobWithValuesAndClientId (OP-006) is the canonical flow; the other seven processes are deltas against it — each either prepends an enum-to-client-id conversion, adds a JSON-parsing step, or omits the positional-naming step.

flowchart TD
    ENTRY["Caller invokes one of<br>the eight operations"] --> ENUMCHECK{"Enum-typed<br>operation?"}
    ENUMCHECK -->|"Yes (OP-001,003,005,007)"| CONV["Convert UC4Environment<br>to client id"]
    ENUMCHECK -->|"No (OP-002,004,006,008)"| LOG["Logging: trace INFO"]
    CONV --> LOG
    LOG --> NULLCHECK{"Name ends in<br>AndClientId?"}
    NULLCHECK -->|"Yes"| ENFORCE["Enforce.ArgumentNotNull<br>jobName"]
    NULLCHECK -->|"No"| GATE
    ENFORCE --> JSONCHECK{"JSON form?<br>(OP-003,004)"}
    JSONCHECK -->|"Yes"| PARSE["Parse jsonKeyValuePairs<br>before gate"]
    JSONCHECK -->|"No"| GATE["IsJobAllowed:<br>read uc4.rules, evaluate"]
    PARSE --> GATE
    GATE -->|"blocked"| EMPTY["Return empty UC4Result<br>reason discarded"]
    GATE -->|"allowed"| SHAPE{"values-form?<br>(OP-001,002,005,006)"}
    SHAPE -->|"Yes"| NAME["Name positional values<br>as arg1, arg2, in order"]
    SHAPE -->|"No"| CLIENT
    NAME --> CLIENT["UC4Client: resolve address,<br>stamp host identity, forward job"]
    CLIENT --> MAP["Map downstream result<br>to published UC4Result"]
    MAP --> RESP["Return response"]
    EMPTY --> RESP
    GATE --> FAULT["Unhandled exception<br>surfaced as detailed fault"]
    CLIENT --> FAULT

Transaction boundaries

No process opens a unit of work, a database transaction, or any compensating action. The forward call to the downstream service is the sole side effect of every process, and it is not undone if the response mapping or any later step fails.

Failure and edge-case behavior

Condition Behavior
jobName is null (ExecuteJobWithJsonAndClientId, ExecuteJobWithValuesAndClientId, or ExecuteJobWithParametersAndClientId) Enforce.ArgumentNotNull throws — surfaced as a detailed WCF fault
uc4.rules document missing or malformed NullReferenceException from an unguarded dereference of rules.UC4Rules.Environments* — surfaced as a detailed WCF fault
Requested environment has no rule entry Allowed by default, except environment 100 — see BR-UC4-002
Job is blocked by the rule set Caller-visible response is a successful, empty UC4Result — not a fault — see BR-UC4-005
Malformed jsonKeyValuePairs (JSON forms only) Faults even for a job the rule set would have blocked, because parsing happens before the gate — see BR-UC4-013
Downstream service unreachable or throws Propagates unchanged as a detailed WCF fault — no retry, circuit breaker, or timeout override exists in this host

Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.

Sources

  • src/WCF/SAIF.Services.WCF.UC4.Host/UC4Service.cs
  • src/WCF/SAIF.Services.WCF.UC4.Host/Uc4Client.cs
  • src/WCF/SAIF.Services.WCF.UC4.Host/UC4JobRules.cs