Skip to main content

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>