ABC Bank Backend Functioneel Ontwerp Jan Michiel ter Reehorst Matthijs Steen Bram Theeuwes 1 / 6
Inhoudsopgave Structuur van de Backend...3 ABC-Bank-IF...3 AccountManagerIF...3 AccountOfficeIF...4 BankAdminIF...4 JNDI...5 Lookups...5 Securitydomain...6 Securtity...6 Inloggen...6 Manager...6 Office...6 2 / 6
Structuur van de Backend ABC-Bank-IF Voor de front-end is zijn de volgende interface klassen beschikbaar: AccountManagerIF AccountOfficeIF BankAdminIF AccountManagerIF Deze klasse en zijn functies zijn gemaakt voor de werknemers van de ABC-Bank. De werknemer kan hiermee de Bank openen en sluiten, de status van de bank opvragen, accounts controleren, accounts aanmaken en transacties van een account opvragen. AccountManagerIF getprincipal(): Principal Returnt de CallerPrincipal uit de EJB-context. getstatus(): String De 4 mogelijke return-strings zijn: abc-bank is open and busy abc-bank is closed and busy abc-bank is open and idle abc-bank is closed and idle getaccount(string number): AccountDAO Returnt een AccountDAO van het gevraagde rekeningnummer. newaccount( double newlimit, String newname, String newpincode) throws BankException: String De return-string is het nieuwe rekening-nummer. gettransactions(string number): Vector<TransactionDAO> De return-vector bevat alle transacties van de klant in een DAO object. setopen(boolean b): String Returned hetzelfde als getstatus(). 3 / 6
AccountOfficeIF De klasse AccountOffice is een voor elke klant unieke pinautomaat voor alle banktransacties. Klanten kunnen hun account inzien en geld storten, opnemen of overboeken. Deze transacties dienen gesynchroniseerd te worden met de functie sync(). AccountOfficeIF getprincipal(): Principal Returnt de CallerPrincipal uit de EJB-context. getdetails(): Vector<String> De return-vector bevat alle gegevens van deze rekening. getpendingtransacties(): List<TransactionDAO> De return-list bevat alle transacties die nog niet zijn verstuurd zijn transfer(string number, double amount) throws BankException: String transfer(null, 1.0); // storten op eigen rekening, bedrag is positief transfer(null, -1.0); // opnemen van eigen rekening, bedrag is negatief transfer(100101, 1.0); // storten op andere rekening, bedrag is positief transfer resulteert in een pending transactie. sync(): void Alle pending transacties worden verzonden. Na een sync() bestaan er geen pending transacties meer. close(): void Na close() is deze AccountOffice onbruikbaar gemaakt. BankAdminIF Het doel van deze interface is puur het inloggen van de gebruiker. BankAdminIF dologin(string username, String password): String De return-string is de naam van de rol die de gebruiker heeft. (manager/office) 4 / 6
JNDI De JNDI is een API die voor naming en directory services zorgt. De Securitydomain en de Queue van de Transaction Manager worden in de JNDI opgeslagen. Lookups De volgende lookups kunnen in de EJB-context gedaan worden: "AccountOffice/remote" Deze returnt een object AccountOffice "AccountManager/remote" Deze returnt een object AccountManager 5 / 6
Securitydomain Securtity De bank is beveiligd door een JAAS-module met een Securitydomain genaamd ABC- Bank-Security-Domain. De bank kent op dit moment 2 rollen die mogen inloggen: manager en office. Inloggen Manager Voor de AccountManager kan er om te testen ingelogd worden met de volgende gegevens: Naam: "100000" Wachtwoord: "geheim" Office Voor de AccountOffice kunnen de volgende gegevens worden gebruikt: Naam: "100010" Wachtwoord: "test100010" Het is klanten verboden om in te loggen als: ze ingelogd zijn en zolang de TransactionManager de ge-sync-te transacties nog niet verwerkt heeft. 6 / 6