Example



Angie Specification

Dowload the following Angie example as example.txt

action AWelcome() { forward PWelcome } page PWelcome(String[] featuredBooks, int[] bookIDs) {} action AViewDetails(int bookID) { forward PViewDetails } page PViewDetails(int id, String[] authors, String title, String abs, String price) {} action ABrowse(int customerID, int categoryID) { forward PBrowse } page PBrowse(String categoryName, String[] subcategoryNames, int[] subcategoryIDs, String[] bookTitles, int[] bookIDs) {} action ALogin() { forward PLogin } page PLogin(boolean emailInvalid, boolean pwdInvalid) { form Login calls ACheckPW(TEXT,TEXT) } action ACheckPW(String email, String pw) { forward PWelcome, forward PLogin } action ALogout() { forward PWelcome } action ARegister() { forward PRegister } page PRegister(boolean missingData) { form Data calls AInsertUser(TEXT,TEXT,TEXT,TEXT,TEXT,TEXT,TEXT,TEXT,TEXT,TEXT,TEXT,TEXT) } action AInsertUser(String email, String fullName, String passwd, String streetAddress, String city, String state, int zip, String country, String cardType, String cardNumber, String expiration, String cardholder) { forward PRegister, forward PWelcome } action AEditAccount() { forward PEditAccount } page PEditAccount(boolean missingData, String email, String fullName, String passwd, String streetAddress, String city, String state, int zip, String country, String cardType, String cardNumber, String expiration, String cardholder) { form Data calls AUpdateUser( TEXT,TEXT,TEXT,TEXT,TEXT,TEXT,TEXT,TEXT,TEXT,TEXT,TEXT,TEXT ) } action AUpdateUser(String email, String fullName, String passwd, String streetAddress, String city, String state, int zip, String country, String cardType, String cardNumber, String expiration, String cardholder) { forward PEditAccount, forward PWelcome } action ASearch(String key) { forward PSearch } page PSearch(String key, String[] bookIDs, String[] bookTitles) {} action AAddToCart( int[] bookIDs, String[] bookTitles, String[] bookPrices ) { forward PWelcome } action AViewCart() { forward PViewCart } page PViewCart() {} action AUpdateCart( int[] bookIDs, String[] bookTitles, int[] bookQuantities, String[] bookPrices ) { forward PViewCart } action ADeleteCartItem(int bookID) { forward PViewCart } action ABuy() { forward POrderInfo } page POrderInfo( // customer String email, String fullName, String passwd, String streetAddress, String city, String state, int zip, String country, String cardType, String cardNumber, String expiration, String cardholder) { link PlaceOrder calls APlaceOrder } action APlaceOrder() { forward PWelcome } menu PViewDetails, PBrowse, PLogin, PSearch, PRegister, PEditAccount, PViewCart, POrderInfo { link Welcome calls AWelcome, link Browse calls ABrowse, link ViewCart calls AViewCart, link Login calls ALogin, link Logout calls ALogout, link Register calls ARegister, link EditAccount calls AEditAccount } menu PWelcome, PViewDetails, PBrowse, PSearch, PViewCart { form Search calls ASearch(TEXT) }

Angie Output