Banking Events Workflow
sequenceDiagram
participant K as Kafka
participant C as Consumer
participant P as Producer
participant W as Worker
participant A as ABSA
C-->>K: Any payments from offset x
K->>C: PaymentRequested <1>
Note right of C: Database Validations
alt is valid
C->>P: PaymentRequest <1> OK
else is invalid
C->>P: PaymentRequest <1> FAIL
end
alt is accepted
P->>K: PaymentAccepted <1>
else is rejected
P->>K: PaymentRejected <1, error_messages>
end
Note over W, A: Worker generates a file of requests
W->>A: Submit Request 1
W->>P: Request 1 submitted
P->>K: PaymentSubmitted <1>
Note over W, A: REPLY/OUTPUT file received
A->>W: REPLY FILE
Note over W, A: Worker processes the files
alt is accepted
W->>P: Request <1>
else is rejected
W->>P: Request <1, reason>
end
alt is accepted
P->>K: PaymentAccepted <1>
else is rejected
P->>K: PaymentRejected <1, reason>
end
Note over W, A: Output file arrives marking an
Note over W, A: accepted payment as rejected
A->>W: OUTPUT FILE
W->>P: RequestRejected
P->>K: PaymentRejected <1, reason>
Note over K,A: Next day we receive a daily statement with all bank transactions
A->>W: STATEMENT file
W->>P: Payment verified
W->>P: DetailRecord created
P->>K: PaymentVerified <1>
P->>K: DetailRecordCreated <1>