Upload
sasmito-adibowo
View
215
Download
1
Embed Size (px)
Citation preview
8/14/2019 BNCC Information System - Member Services Design
1/39
BNCC Information SystemSystem Design
Prototype: Alpha One
Member ServicesEvent Attendance
July 22, 2002
Sasmito AdibowoWiratna Sari Wiguna
Yusri
Arcle Technologies
S IMPLE RELIABLE SOLUTIONS
8/14/2019 BNCC Information System - Member Services Design
2/39
Table of Contents
About This Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Project History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
General Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4System Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Database Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5People Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Project History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
General Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
System Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Database Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14People Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Member Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Administrative Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Event Organizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Shared Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Value Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Data-Access Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Business Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Member Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Sample Screens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Value Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Data-Access Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Business Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Event Organizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Sample Screens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Value Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Data-Access Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Business Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8/14/2019 BNCC Information System - Member Services Design
3/39
BNCC Information System
System Design
http://www.arcle.com Page 3 of 39
1 About This Document
This document provides the design specification for the prototype of yournew information system, code-named Buncis. The prototype consists of
member servicesand attendance(which is a part of the planned event
organizer) modules. Like any other system designs, this document only acts
as a guide for the implementation and does not make every requiredimplementation decision. Included in the design is the system's general
architecture, database design, user interface design, business processes,
and significant classes that will be placed in the system.
1.1 Project History
BNCC is a Student Activity Unit that operates under the consent of Bina
Nusantara University. It is organized as a club that focuses on computer-related interest groups. It maintains an approximately constant sum of
300 400 members yearly, which most of the new members among them are
first-year undergraduates. Its activities include tutoring, member meetings,annual publications, visitations, contests, seminars, expositions, and
research. Its major income come from the yearly members' fees and
sponsors.
At the core of BNCC lies a committee that organizes all of its activities. Thecommittee is divided categorically into several major divisions, and each led
by a Division Chair. Each chair is organized horizontally and answers
directly to the General Chair.
The need for an information system was expressed in a meeting conducted
by Faran Gunawan, the former coordinator of Fave Club, now the generalchair. Fave Club recognizes that the increasing number activities of BNCC
and likewise the number of members involved in it poses a growing load to
its core committee. To provide better service for its members, BNCC requires
a strong information system to back its daily activities.
The current information system employed by BNCC is primarily a manualsystem. The uses of computers are limited in the creation and storage of
free-form documents and tables. Those documents and tables are created asfiles by standard office applications such as word processing, spreadsheet,and file-based database software. There are no provisions to impose
structure to those data, which creates difficulties in assessing information
from them. This ad-hoc system although it has been used for a significant
amount of time has impeded the performance of BNCC in servicing andmaintaining its members.
Since its first conception, Buncis has received positive attitudes from the
organization. Additionally, it has expresses its commitment through the
8/14/2019 BNCC Information System - Member Services Design
4/39
BNCC Information System
System Design
http://www.arcle.com Page 4 of 39
SQL Database
Data-
Access
Objects
Value
Objects
Presentation
Logic
UserSecurityControl
Business
Logic
Figure 1 Buncis Architecture Overview
mandates assigned to both Fave Club and the Organization DevelopmentTeam divisions in favor of Buncis development.
The design phase of the project has been initiated. Because of the urgentneed of a member registration and attendance system, the implementation of
those parts of Buncis are made prominent. Therefore, the initial prototype
consists of those modules.
2 General Description
2.1 System ArchitectureArchitecturally, the system is separated into three primary subsystems: The
Presentation Logics, the Business Logic, and the Data-Access Objects. Thisseparation is modeled after the Model-View-Controller pattern, where the
Presentation Logic interacts with the user acting as the View, the Data-
Access Objects provides a model of the data, and finally the Business Logiccontrols the interaction between the two.
This architecture is selected to minimize the impact of change to the system.For instance, accommodation of new user interfaces will only affect the
Presentation Logics. Likewise, changes in the database schema and/or
DBMS will mostly affect the Data-Access Objects with minimal (if any)impact to the other components.
The Data-Access Objects (DAO) perform queries to the database. Only theclasses in this layer may perform JDBC/SQL queries to the DBMS. Other
components that require to access the database must go through themethods in this layer. Data-Access Objects are also responsible for
maintaining referential integrityof the records in the database.
The Business Logic (BL) layer implements the business processes embedded
in the system. Classes in this layer define how data are to be manipulated
from a business perspective. This layer relies on the Data-Access Objects to
actually manipulate the data in the database. Changes in business policiesand/or workflow will mostly affect the classes in this layer.
8/14/2019 BNCC Information System - Member Services Design
5/39
BNCC Information System
System Design
http://www.arcle.com Page 5 of 39
Consisting of JSP pages, the Presentation Logic drives the user interface.It provides user screens and accepts user input. User commands are
translated into one or more actions in the Business Logic by this layer. Bynot performing business processes in the user interface, more userinterfaces may be accommodated without re-coding the business process
layer.
Attached to the Business Logic is the Security Control layer. This layer
determines whether the currently logged-on user is allowed to access
specified functionalities of the Business Logic. Upon entry at each methodin the Business Logic, the invoked method first queries the security control
before executing the algorithm it contains. If the user is allowed access,
then the method will continue to execute normally. Whereas the user
doesnt have access to the functionality, the method will throw an exceptionwithout executing any further.
Instantiated by the Data-Access Objects, the Value Objects are simple data
structures. Value Objects are -- by definition -- unintelligent, and must not
perform processing on its own; the methods of these objects are only
accessor methods. These objects are passed around as parameters in the
system as required.
2.1.1 Prototype notes
Currently, the Alpha One prototype does not implement the Security Control
layer thus security is not enforced. The Security Control layer design willbe included in the User Management module.
3 Database Design
3.1 People Tables
One of the goals of Buncis is to record the interaction of BNCC with otherparties. This includes the people within and outside the organization. In
relation to people, Buncis stores information about activists, staffs, seniors,
and contact persons.
8/14/2019 BNCC Information System - Member Services Design
6/39
BNCC Information System
System Design
http://www.arcle.com Page 6 of 39
person
person_id
namegenderemailbirthdayhome_addresshome_phonemobile_phonepersonal_notesdt_lastupdate
member
person_id (FK)membership_year
school_major
activist
person_id (FK)active_year
division
contact_person
person_id (FK)organization_name (FK)
office_addressoffice_phoneoffice_emaildt_lastupdate
senior
person_id (FK)last_active_year
last_staff_position
staff
person_id (FK)active_year
active_position
Figure 2 People Tables
3.1.1 PersonThe person table is the primary table which stores a persons personal
information. Entries in this table are created upon the person's first contactwith BNCC.
person
Field Name Type Constraints Description
person_id String primary key For people who have a students identitycard, this field is generated from the bar-codeprinted on the card. For others, this value israndomly generated in such a way that it willnot conflict with a students identity card
number.
name String alternatekey, not null
The full name which that person is prefer tobe referred to.
gender Char none The sex group the person belongs to.Consists of either M or F values, for maleor female, respectively.
email String none The primary e-mail address of the person, if any.
birthday Date none The birth date of the person, if known.
8/14/2019 BNCC Information System - Member Services Design
7/39
BNCC Information System
System Design
Field Name Type Constraints Description
http://www.arcle.com Page 7 of 39
home_address
Memo none The primary residence address of the person,if known.
home_phone String none The telephone number of the primaryresidence, if known or exists.
mobile_phone String none The primary mobile telephone number, if known or exists.
personal_notes Memo none Free-form text which contains various notesabout the person.
dt_lastupdate Date/
Time
not null The timestamp of the records last update.
3.1.2 Members
The member table stores data about members for each period of membership.Those members who register for more than one period of membership will
have multiple entries in this table, but only one entry in the person table. It
is assumed that a membership period lasts for one year.
member
Field Name Type Constraints Description
person_id String primary keyand foreignkey to person(person_id)
The unique identification of the memberas a person.
membersip_year String primary key The members period of membership.This value is expressed as a four-digityear at which the member registered.Examples of valid values are {2002,2003, 2004, ...}.
school_major String none The members university major. This
value is expressed as abbreviations ofthe major names. Examples of validvalues are {TI, MI, TK, KA, ...}.
3.1.3 Activists
The activist table contains records about activists during a period of
occupancy (which each occupancy is normally one year). Since activists arealso people, this table records the occupancies of the person in question as
an activist. It is facilitated in the system for a person to have more than one
activist occupancy period, in which he/she will have one record in the person
table, and one or more records in the activist table.
8/14/2019 BNCC Information System - Member Services Design
8/39
BNCC Information System
System Design
http://www.arcle.com Page 8 of 39
activist
Field Name Type Constraints Description
person_id String primary key andforeign key toperson(person_id)
The unique identification of the activist as aperson.
active_year String primary key The activists period of occupancy. Thisvalue is expressed as a four-digit year atwhich the activist began his or heroccupancy. Examples of valid values are{2002, 2003, 2004, ...}.
division String none The division(s) of the activist in which he or
she participates during occupancy. Multipledivisions are separated by commas.
3.1.4 Staffs
The staff table contains data about staffs during their periods of occupancies.Each record in this table stores data about a person during one period of
occupancy. When a person occupies more than one period, this table stores each
occupancy as one record, referencing to that persons identification in the person
table.
staff
Field Name Type Constraints Description
person_id String primary keyand foreign keyto person(person_id)
The unique identification of the staff as aperson.
active_year String primary key The staffs period of occupancy. Thisvalue is expressed as a four-digit year atwhich the staff began his or heroccupancy. Examples of valid values are{2002, 2003, 2004, ...}.
active_position String not null Describes the position of the staff at thisperiod of occupancy.
3.1.5 Seniors
The senior table records data about staffs that are no longer in service. In otherwords, seniors are retired staffs.
senior
8/14/2019 BNCC Information System - Member Services Design
9/39
BNCC Information System
System Design
http://www.arcle.com Page 9 of 39
Field Name Type Constraints Description
person_id
String primary keyand foreign keyto person(person_id)
The unique identification of thesenior as a person.
last_active_year String primary key The seniors last period of occupancy. This value is expressedas a four-digit year at which thesenior ends its occupancy.Examples of valid values are {2002,2003, 2004, ...}.
last_active_position String not null Describes the last position as a staff
at this period of occupancy.
3.1.6 Contact Person
The contact_person table records data about people which played a role as arepresentative for organizations outside of BNCC. The system allows a person to
represent more than one organizations, which is expressed by more than one record
in the contact_person table for that person.
contact_person
Field Name Type Constraints Description
person_id String primary key andforeign key to person(person_id)
The unique identification as aperson.
organization_name String primary key andforeign key toorganization(organization_name)
The name of the organizationthat the person represents.
office_address Memo none The branch/office address of theorganization in which this personmay be contacted.
office_phone String none The branch or office phonenumber of the organization inwhich this person may becontacted.
office_email String none The branch/office e-mail addressof the organization in which thisperson may be contacted.
dt_lastupdate Date/Time
not null Timestamp which this recordwas last updated.
8/14/2019 BNCC Information System - Member Services Design
10/39
BNCC Information System
System Design
http://www.arcle.com Page 10 of 39
member
person_id (FK)membership_year
school_major
magazine
magazine_id
descriptionamount_in_stockdt_lastupdate
member_take_magazine
magazine_id (FK)person_id (FK)membership_year (FK)
dt_taken
member_payment
person_id (FK)membership_year (FK)payment_date
amount
Figure 3 Member Services tables
3.2 Member Services
These tables (Figure 3) store administrative data of the members. Those
data are magazines, member payments and magazine claims.
3.2.1 Magazine
The magazine table stores data about each printed edition of the magazines
published by BNCC.
magazine
Field Name Type Constraints Description
magazine_id String primary key The identification number that signifies themagazines edition. This number is uniquefor each edition of the magazine, and isprinted as bar codes in the magazine.Copies for the same edition have thesame identification number.
description String alternatekey, not null
The human-readable identification of themagazines edition.
amount_in_stock Integer not null, >= 0 The number of copies for the currentedition which are still stored in stock.
dt_lastupdate Date/Time
not null Timestamp of the last update of thisrecord.
3.2.2 Magazine Claims
8/14/2019 BNCC Information System - Member Services Design
11/39
BNCC Information System
System Design
http://www.arcle.com Page 11 of 39
The member_take_magazine table records the members' magazine claims. Everytime a member claims a magazine, a record is inserted into this table. Each
member may only take one copyof a particular magazine edition.
member_take_magazine
Field Name Type Constraints Description
magazine_id String primary key and foreignkey to magazine(magazine_id)
The identification number of themagazine taken.
person_id String primary key and foreignkey to member(person_id)
The person_id of the memberwho took the magazine.
membership_year String primary key and foreignkey to member(membership_year)
The membership year of themember who took the magazine.
dt_taken Date/Time
not null When was the magazine wastaken by the member.
3.2.3 Member Payments
The member_payment table keeps track of each member's installments. An
entry in this table is inserted when a member provides payment. These
installment data are used to validate the member's access to the
events/facilities provided by BNCC.
member_payment
Field Name Type Constraints Description
person_id String primary key andforeign key to member(person_id)
The person_id of the memberproviding the payment.
membership_year String primary key andforeign key to member(membership_year)
The membership year of themember providing the payment.
payment_date Date primary key When was the payment provided.
amount Real not null, > 0 The amount of payment provided, inmonetary units.
3.3 Administrative Services
8/14/2019 BNCC Information System - Member Services Design
12/39
BNCC Information System
System Design
http://www.arcle.com Page 12 of 39
person
person_id
namegenderemailbirthdayhome_addresshome_phonemobile_phonepersonal_notesdt_lastupdate
attendance
person_id (FK)dt_attend
event_name (FK)
event
event_name
event_startevent_finish
Figure 4 Administrative Services tables
3.3.1 AttendanceThe attendance table records data about people who attend the various events
held by BNCC. It is assumed that a person may not attend more than one
event at an instance of time.
attendance
Field Name Type Constraints Description
person_id String primary key and foreign keyto person (person_id)
The Persons ID of the attendee.
dt_attend Date/Time
primary key The timestamp at when the personattends.
event_name String not null, and foreign key toevent (event_name)
The event attended.
3.4 Event Organizer
8/14/2019 BNCC Information System - Member Services Design
13/39
BNCC Information System
System Design
http://www.arcle.com Page 13 of 39
organization
organization_name
primary_address
primary_phone
primary_website
dt_lastupdate
contact_person
person_id (FK)
organization_name (FK)
office_address
office_phone
office_email
dt_lastupdate
event
event_name
event_start
event_finish
Figure 5 Event Organizer tables
3.4.1 Events
The event table store data about the various events held by BNCC. Eventsare identified by their name, which must be unique for all events. Therefore,
recurring (periodic) events must be made unique by appending the event
name with time information (for example: "FA May 2003").
event
Field Name Type Constraints Description
event_name String primary key The name of the event. Since this field is theprimary key, event names must be globallyunique for all events.
event_start Date not null The start date of the event.
event_finish Date none The finish date of the event. If this date is notknown, it may be null.
3.4.2 Organizations
The organization table stores data about other organizations that came into
contact with BNCC. Organizations are identified solely by their names.
organization
Field Name Type Constraints Description
organization_name String primary key The name of the organization. This namemust be globally unique for allorganizations.
8/14/2019 BNCC Information System - Member Services Design
14/39
BNCC Information System
System Design
Field Name Type Constraints Description
http://www.arcle.com Page 14 of 39
primary_address
String none The address of the head office of theorganization.
primary_phone String none The telephone number of the head office of the organization.
primary_website String none The website address for the organization.Typically this is a URL which contains onlythe host name without any paths.
dt_lastupdate Date/Time
not null Timestamp which this record was lastupdated.
4 Shared Components
4.1 Value Objects
8/14/2019 BNCC Information System - Member Services Design
15/39
8/14/2019 BNCC Information System - Member Services Design
16/39
BNCC Information System
System Design
http://www.arcle.com Page 16 of 39
PersonDAO
getPerson(personID : String) : PersonVO
insertPerson(person : PersonVO) : void
createPersonVO() : PersonVO
updatePerson(person : PersonVO) : void
(from data)
DataAccessObject
getPoolManager() : ConnectionPoolManager
createEmptyList() : List
(from data)LoginSession
(from con trol )0..*1 0..*1
Figure 7 Shared Data-Access Objects classes
Property Field Notes
personID person_id
name name
gender gender
email email
birthday birthday
homeAddress home_address
homePhone home_phone
mobilePhone mobile_phone
personalNotes personal_notes
dtLastUpdate dt_lastupdate This VO property is read-only, the related field isupdated only by the DAO classes.
4.1.2 ReportVO
Unlike most other value objects, ReportVO does not correspond to any table.
Instead it is used to model spreadsheet-style report contents. The
representation is done through the implementation of the TableModel interface
(from javax.swing.table).4.2 Data-Access Objects
8/14/2019 BNCC Information System - Member Services Design
17/39
8/14/2019 BNCC Information System - Member Services Design
18/39
BNCC Information System
System Design
http://www.arcle.com Page 18 of 39
Reporter
getMemberListByYear(membershipYear : String) : ReportVO
getTopActivis ts(num Activis ts : int = 10, activeYear : String) : ReportVO
getMemberListByMajor(membershipYear : String, schoolMajor : String) : ReportVO
getPersonDAO() : PersonDAO
createAttendanceReportVO() : AttendanceReportVO
generateAttendanceReport(eventName : String) : AttendanceReportVO
getEventDAO() : EventDAO
createReportVO() : ReportVO
(from business)
PeopleManager
viewPersonProfile(personID : String) : PersonVO
createPersonVO() : PersonVO
(from busin ess)
BusinessLogic
(f rom business)
DataAccessObject(from data)
1..* 1..*1..* 1..*
uses
Figure 8 Shared Business Logic classes
4.3.1 PeopleManager
The PeopleManager class is responsible for managing the lowest-common
denominators of people data recorded by the system.
Method Summary
publicPersonVO
createPersonVO()
Pass-through to PersonDAO.createPersonVO() factory method [GoF95].
publicPersonVO viewPersonProfile(String personID)Returns the person's personal data.
4.3.2 Reporter
The Reporter class is responsible for generating various reports from the data
in the database. To obtain the data used in creating the reports, it uses
most of the DAO classes. The reports generated are in one-dimensionalspreadsheet-style report tables, represented in ReportVO objects. This
facilitates further data analysis and formatting by using general-purpose
spreadsheet packages.
8/14/2019 BNCC Information System - Member Services Design
19/39
BNCC Information System
System Design
http://www.arcle.com Page 19 of 39
Method Summary
public ReportVOgetMemberListByYear(String membershipYear)Returns a list of all members for the specified year.
public ReportVO getTopActivists(int numActivists,String activeYear)
Returns the most active activists for the specified year.
public ReportVO getMemberListByMajor(String membershipYear, StringschoolMajor)
Returns a membership year grouped by their majors for thespecified year.
public PersonDAO getPersonDAO()
Returns the PersonDAO object used to query the database.
public
AttendanceReportVO
createAttendanceReportVO()
The primary factory method[GoF95] to create new instances ofAttendanceReportVO objects.
publicAttendanceReportVO
generateAttendanceReport(String eventName)
Generates an attendance report for the specified event.
public EventDAO getEventDAO()
Returns the EventDAO object used to query the database.
public ReportVO createReportVO()
The primary factory method[GoF95] to create new instances ofReportVO objects.
4.3.2.1 Attendance ReportThe generate attendance reportbusiness process (Figure 9) is performed by
the Reporter.generateAttendanceReport()method. This method first retrieves
the list of all attendees for the event from the EventDAO object by callinggetAttendanceByEventName(). Since the list ofAttendanceVO objects refers to a
person only by his/her person ID, the list must be formatted to fit human
consumption. Formatting the list is done by providing names and details ofeach attendees that are obtained from the PersonDAO object by callinggetPerson() repeatedly, one for each attendees.
8/14/2019 BNCC Information System - Member Services Design
20/39
BNCC Information System
System Design
http://www.arcle.com Page 20 of 39
: AttendanceReportVO: Reporter : EventDAO : PersonDAO
1: getPersonDAO( )
2: getAttendanceByEventName(String)
5: *setValueAt(Object, int, int)
4: createAttendanceReportVO( )
3: *getPerson(String)
Figure 9 Generate Attendance Report business process
MemberHistoryReportVO(from data)
ReportVO(from data)
MemberVO(f rom da ta)
MemberManager(from business)
1
0..*
1
0..*
MemberDAO(from data)
1
1
1
1
1..10..n
Reporter(f rom busines s)
1
1
1
1
1..1
0..n
Figure 10 Member Services classes overview
5 Member Services
5.1 OverviewIn the context of member services (Figure 10), a MemberDAO object is used by
two business logic objects: MemberManager and Reporter. The MemberManager uses
the DAO to manage member data, records the members payment data,
records magazine claims, and retrieves the history about those paymentsand claims.
8/14/2019 BNCC Information System - Member Services Design
21/39
BNCC Information System
System Design
http://www.arcle.com Page 21 of 39
Member Registration
Person ID
Name
Address
Phone
Mobile Phone
Birthday
Gender
Majoring
Day Month Year
(select)
(select)
Register Clear
1.2.1
Period: 2002
Figure 11 Member Registration screen
OK
Person ID:
Member Sign-On 1.1.1
Membership Year:
Exit
2002
Figure 12 Member Sign-On
1.1.2
Member name :
Membership year :
Administrative Records
Payments received :
1. 22 Jan 2002 Rp. 150.0002. 21 Feb 2002 Rp. 300.000
----------------
SUM Rp 450.000
Magazines taken this year :
1. Feb 2002 25 Feb 20022. Apr 2002 25 Apr 2002
Action
Pay membership fee
Amount Rp
Take magazine
Magazine ID
Finish
Bunbun
2001
Confirm
Figure 13 Member Administrative Records
These DAO and BL classes uses MemberVO objects to express data about amember. It contains the members personal data (which are inherited from
PersonVO) and data about his/her current membership.
5.2 Sample Screens5.2.1 Member Registration
The Member Registration screen (Figure 11)allows registration along with data entry
about the members personal information
(name, address, phone, etc). It is visible that
the membership year is automatically filledin (obtained from the systems internal clock).
This screen is optimized for fast data entry,
where typing-intensive tasks are performedprior to selection tasks.
The new members Person ID is obtained
from his/her student identity number. This
number is scanned from the bar code located
in the students identity card.
The birthday is entered numerically, with theday ranges 131, month 112, and year is
entered as four digits (such as 1984, 1985, etc.).
All fields except Person ID and Name may be left blank although thecompletion of all fields is desirable. When all data has been entered, the
user clicks the Register button to enter the members data.
5.2.2 Member Sign-on
For each event held by BNCC, members must signon to validate access to the event. This is
performed by
scanning themembers
identity card
to obtain his/her Person ID. Thescreen is shown in Figure 12.
After signing on, the screen in Figure
13 is displayed. This screen shows the
members administrative records,
which are his/her payments andmagazine claims. The records
displayed allow the operator to decide
whether the member may or may not
participate in the event and/or claim a
8/14/2019 BNCC Information System - Member Services Design
22/39
BNCC Information System
System Design
http://www.arcle.com Page 22 of 39
Start
1.1.1 Waiting for Person ID
and Membership Year input1.1.2 Waiting
for action
take magazine
or
pay fee
End
Person ID /
Membership
year entered
exit
quit
Figure 14 Member Sign-On state diagram
: JSP for MemberServices
: MemberManager
1: Request person ID and membership year
5: show member records
2: viewMemberProfile(String, String)
3: getMemberPaymentHistory(String, String)
4: getMagazineClaimHistory(String, String)
6: m emberClaimMagazine(String, String, String)
Figure 15 Member Magazine Claims user interface.
magazine. Additionally, this screen may also be used to enter a record forthe members payment, or claim a magazine.
When a member decides to pay the fee, the operator places a check mark in
the Pay membership feecheck box and then enters the amount paid in the
field provided. When a member claims a magazine, a check mark is placed
in the Take magazinecheck box and the taken magazines ID is entered in
the field provided nearby. This Magazine ID is obtained by scanning the bar
code located on the magazine. Both the Pay membership feeand Take
magazineactions may be performed in one step.
The Confirmbutton performs the
desired actions (pay or take,
inclusively) and then re-displays thescreen, showing the newly entered
records. While the Finishbutton
returns to the Member Sign-On screen(Figure 12).
These screens follow the statediagram shown in Figure 14. The
dotted numbers in the state names
correspond to the numbers shown inthe upper-right of each screens.
5.2.3 Interaction with the business logicThe Member Services user interface performs business processes by calling
the appropriate methods in the MemberManager class. An example in Figure 15
illustrates the methods called when a member claims a magazine.
8/14/2019 BNCC Information System - Member Services Design
23/39
BNCC Information System
System Design
http://www.arcle.com Page 23 of 39
PersonVO(from data)
MemberVO
mem bershipYear : String
schoolMajor : String
getMembers hipYear() : String
getSchoolMajor() : String
setMembershipYear(members hipYear : String) : void
setSchoolMajor(schoolMajor : String ) : void
(from data)
ReportVO
(from data)
ValueObject
(from data)
Serializable
(from io)
MemberHistoryReportVO(from da ta)
TableModel
(from table)MemberPaymentVO
personID : String
mem bershipYear : String
paym entDate : Date
amount : float
setPersonID()
getPersonID()setMem bershipYear()
getMem bershipYear()
setPaymentDate()
getPaymentDate()
setAmount()
getAmount()
(from data)MemberTakeMagazineVO
personID : String
membershipYear : String
magazineID : String
dtTaken : Times tamp
setPersonID()
getPersonID()
setMembershipYear()
getMembershipYear()
setDtTaken()
getDtTaken()
(from data)
Figure 16 Member Services value objects
5.3 Value Objects
5.3.1 MemberVOMemberVO is derived from PersonVO, therefore it inherits all of the parent class'
properties. Each MemberVO object represents one record in the member table andits corresponding parent record in the person table. Updates on MemberVO
objects affects both the member table and the person table.
MemberVO
Property Field Notes
membershipYear membership_year
schoolMajor school_major
5.3.2 MemberTakeMagazineVOEach MemberTakeMagazineVO object represents one record in themember_take_magazine table.
MemberTakeMagazineVO
Property Field Notes
personID person_id
membershipYear membership_year
8/14/2019 BNCC Information System - Member Services Design
24/39
BNCC Information System
System Design
Property Field Notes
http://www.arcle.com Page 24 of 39
PersonDAO(from data)
DataAccessObject(from data)
MemberDAO
createMemberVO() : MemberVO
insertMember(newMember : MemberVO) : void
updateMember(member : MemberVO) : void
deleteMember(member : MemberVO) : void
getMemberVO(personID : String, membershipYear : String) : MemberVO
getMemberByCriteria(membershipYear : String, criterias : Map) : List
createMemberPaymentVO() : MemberPaymentVO
insertMemberPayment(memberPayment : MemberPaymentVO) : void
insertMemberTakeMagazine(magazineClaim : MemberTakeMagazineVO) : void createMemberTakeMagazineVO() : MemberTakeMagazineVO
(from data)
Figure 17 Member Services data-access objects classes
magazineID magazine_id
dtTaken dt_taken
5.3.3 MemberPaymentVO
Each MemberPaymentVO object represents one record in the member_payment table.
MemberPaymentVO
Property Field Notes
personID person_id
membershipYear membership_year
paymentDate payment_date
amount amount
5.4 Data-Access Objects
5.4.1 MemberDAO
The MemberDAO class manages data about the members. Member data are
stored in the following tables:
people member
8/14/2019 BNCC Information System - Member Services Design
25/39
BNCC Information System
System Design
http://www.arcle.com Page 25 of 39
member_payment member_take_magazine
Method Summary
public MemberVO createMemberVO()
The primary factory method[GoF95] to create new instances ofMemberVO objects.
public void insertMember(MemberVO newMember)
Inserts a new member in the member table. The parent record inthe people table corresponding to the member must already exist,or this method will throw an exception.
public void updateMemberVO(MemberVO member)
Updates the members data. Both the member table and thepeople table are updated.
public MemberVO getMemberVO(String personID, String membershipYear)
Returns data about a member with the specified person ID andmembership year. Data from both of the people table andmembertable are retrieved.
public List getMemberByCriteria(String membershipYear, Map criterias)
Returns a List (from java.util) which contains MemberVO objectsfor the members matching all of the specified criterias. Thecriterias parameter is specified by a set of (String name, Objectvalue) pairs, where name is the field name requested (either from
the people table or from the member table) and value is thematching value of the field.
publicMemberPaymentVO
createMemberPaymentVO()
The primary factory method[GoF95] to create new instances ofMemberPaymentVO objects.
public void insertMemberPaymentVO()
Inserts a new entry in the member_payment table. The foreign keys(person_id and membership_year) must be valid at the time ofinsertion (the referred records exists).
publicMemberTakeMagazineVO
createMemberTakeMagazineVO()
The primary factory method[GoF95] to create new instances of
MemberTakeMagazineVO objects.public void insertMemberTakeMagazine (MemberTakeMagazineVO
magazineClaim)
Inserts a new entry in the member_take_magazine table. Theforeign keys (magazine_id, person_id, and membership_year) mustbe valid at the time of insertion (the referred records exists).
5.5 Business Logic5.5.1 Member Manager
The MemberManager business logic implements business rules concerning
member services. At the beginning of each method, a security check is
8/14/2019 BNCC Information System - Member Services Design
26/39
BNCC Information System
System Design
http://www.arcle.com Page 26 of 39
performed to verify whether the currently logged-on operator may performthe desired business action. If access to the action is denied, the
corresponding method throws a security exception.
Note that not all of the required methods are explained in the text. These
unlisted methods are typically simple they passthrough to the related
methods in the DAO after performing some security checks and setting someeasily-obtained values.
Method Summary
MemberVO createMemberVO()
Pass-through to MemberDAO.createMemberVO() to create an empty MemberVOobject.
publicvoid
payMemberFee(String personID, String membershipYear, float amountPaid)
Registers a member's payment. The amount paid must be greater than zero,or this method will throw an exception.
publicList
getMemberPaymentHistory (String personID, String membershipYear)
Returns a List (from java.util) which contains MemberPaymentVO objects forthe specified member. The value objects returned represents a history of themember's payments for this period.
publicList
getMagazineClaimHistory(String personID, String membershipYear)
Returns a List (from java.util) which contains MemberTakeMagazineVOobjects for the specified member. The value objects returned represents ahistory of the member's payments for this period.
protectedMemberDAO
getMemberDAO()
Returns the MemberDAO object associated with this business logic.
5.5.2 Create Member
Member creation (Figure 18) is done when a member registers for a period ofmembership (one year). This process is invoked by the presentation logic and
handled by the MemberManager business logic at the createMember() method.
This method expects an initialized MemberVO object specifying the newmember's data. Within the method, MemberManager first makes sure that the
candidate member's personal data (in the person table) already exists --
creating a new entry if necessary, or updating the existing entry. Then theperson's membership data for this period (the current membership year) is
created. The MemberDAO takes care of the actual details of handling the tables.
8/14/2019 BNCC Information System - Member Services Design
27/39
BNCC Information System
System Design
http://www.arcle.com Page 27 of 39
verify operator
privileges
privilege recordsobtained
security clearance
approved
get PersonID of
the new member
createMember()
called
Person dataobtained
New member
created
lookup profile data
in the people table
insert new record in
the member table
update the current data
in the people table[ data exist ]
insert new record in
the people table[ data not exist ]
The new member'sdata entered
[ a ccess granted ]
[ access denied ]
: MemberDAO: MemberManager: Securi tyC ontrol: JSP for Member Ser vices
Figure 18Create Memberbusiness process
8/14/2019 BNCC Information System - Member Services Design
28/39
BNCC Information System
System Design
http://www.arcle.com Page 28 of 39
: MemberManager : MemberDAO
1: getMemberDAO( )
2: getPerson(String)
3: insertPerson(PersonVO)
4: insertMember(Mem berVO)
Figure 19 Member Creation sequence
5.5.3 Member Payment
The Pay Member Feebusiness process is handled by theMemberManager.payMemberFee() method. The method first verifies that the
payment amount is larger than zero. If the condition does not apply, thenthe method will throw an exception. The process is shown in Figure 20.
8/14/2019 BNCC Information System - Member Services Design
29/39
BNCC Information System
System Design
http://www.arcle.com Page 29 of 39
Member's payment
data entered
verify operator
privileges
privilege records
obtained
payMemberFee()
called
[ acc ess denied ]
security clearance
approved
[ access granted ]
member payment
recorded
check payment
amount
payment
denied
amount < = 0
insert member
pay ment recor ds
amount > 0
: MemberDA O: MemberManager: Secur ityControl: JSP for Member S ervices
Figure 20 Pay Member Fee business process
8/14/2019 BNCC Information System - Member Services Design
30/39
BNCC Information System
System Design
http://www.arcle.com Page 30 of 39
: MemberPaymentVO: MemberManager : MemberDAO
1: getMemberDAO( )
2: createMemberPaymentVO( )
3: setPersonID(String)
4: setMembershipYear(String)
5: setPaymentDate(Date)
6: setAmount(float)
7: insertMemberPayment(MemberPaymentVO)
Figure 21 Sample sequence forPay Member Fee business logic
A sample sequence of method calls is shown in Figure 21 -- the diagram
shows that after some intermediate checks, the method passes through to
the DAO. The intermediary MemberPaymentVO object is used for communicatingthe payment data to the DAO. Note: the sequence diagram in Figure 21 do
not visualize the security checks that must be performed by the business
logic beforehand.5.5.4 Magazine Claims
The Claim Magazinebusiness process is handled by the
MemberManager.memberClaimMagazine()method. After performing the necessarysecurity checks, this method simply passes through to the corresponding
DAO object (Figure 22).
8/14/2019 BNCC Information System - Member Services Design
31/39
BNCC Information System
System Design
http://www.arcle.com Page 31 of 39
Magazine ID, Person ID and
Membership Year entered
verify operator
privileges
privilege records
obtained
memberClaimMagazine()
called
security clearance
approved
magazine
claim recorded
decrement magazineamount in stock by one
magazineamount updated
get mag azinerecord
update magazinerecord
insert magazine
claim data
[ acc ess denied ]
[ access granted ]
: MemberDAO: MemberManager: Se curityControl: JSP for Member Services
Figure 22Magazine Claims business process
8/14/2019 BNCC Information System - Member Services Design
32/39
BNCC Information System
System Design
http://www.arcle.com Page 32 of 39
: MemberManager : MemberDAO : MemberTakeMagazineVO
1: getMemberDAO( )
2: createMem berTakeMagazineVO( )
3: setPersonID(String)
4: getMembershipYear( )
5: setDtTaken(Timestamp)
6: insertMemberTakeMagazine(MemberTakeMagazineVO)
Figure 23 Sample Claim Magazine sequence
ReportVO(from data)
AttendanceReportVO(from data)
Reporter(f rom business)
1..1 0..n
AttendanceVO(from data)
EventVO(from data)
EventDAO(from data)
1
1
1
1
0..* 10..* 1
EventManager(f rom business)
0..*
1
0..*
11
0..*
1
0..*
1
1
1
1
1..10..n
Figure 24 Event Organizer Class Overview
6 Event Organizer
6.1 OverviewIn the context of event organizer (Figure 24), an EventDAO object is used by
two business logic objects: EventManager and Reporter
8/14/2019 BNCC Information System - Member Services Design
33/39
BNCC Information System
System Design
http://www.arcle.com Page 33 of 39
Event Name
Create
Event Start
Event Finish
Create Event
Figure 25 Create Event user interface
Attendance
Please select the event name :FA April 2001
OK
3.1.1
Attend to active events
ending not after:12 April 2001
Figure 26 Attendance user interface
The EventManager uses the DAO to manage event data, records the events
attendance data, and retrieves currently active events. These DAO and BLclasses uses EventVO objects to express data about an event. It contains theevent start and finish date, the attendance of the event, and of course the
event name.
6.2 Sample Screens6.2.1 Create Event
The event creationscreen (Figure 25)allows the event manager to create a
new event in the database. The fields
to be filled in are the event name, the
event start date, and the eventfinishdate. If the event manager wishes to
create an event that is not expectedto end (such as the secretariate
event), the event finishfield should
not be filled. Events are identified bytheir names, thus the name of the
newly-created event must not already
exist in the database.
After all the fields (except event finish) has been filled in, the event manager
then clicks the Createbutton and the new event will be created. This event-creation process will fail if there is an already-existing event with the same
name in the database.
6.2.2 Attend Event
After an event has been created, it canbe attended by many people. To start
the attendance service, the operator will
bring up the attendancescreen shownin Figure 26. This screen will prompt
the operator to select the event for
which the attendance records will beentered. The screen also displays the
current date, which is used to filter the
events available for selection. Theoperator then chooses the event and click the OK button after ensuring his
choice is the right event. The available choices for the event are only the
currently active events (The event which has not finished at the current
date).
8/14/2019 BNCC Information System - Member Services Design
34/39
BNCC Information System
System Design
http://www.arcle.com Page 34 of 39
Attend Event
Event name : FA April 2001Start : 12 April 2001End : 12 April 2001
Person ID
Attend
3.1.2
Quit
Figure 27 Attend Event user interface
Confirm Attendance
Name: John Doe
Address: One Doe's way, 1415,
California
Confirm
3.1.3
Event FA April 2001
Cancel
Figure 28 Confirm Attendance user interface
EventVO
eventName : String
eventStart : Date
eventFinish : Date
setEventName(name : String) : voidsetEventStart(eventStart : Date) : void
setEventFinish(finishDate : Date) : void
getEventName() : String
getEventStart() : Date
getEventFinish() : Date
(from d ata)
ValueObject(from data)
ReportVO(from data)
AttendanceReportVO(from data)
AttendanceVO
personID : String
dtAttend : Times tamp
eventName : String
se tPersonID(personID : String) : voidse tDtAttend(attendTimestamp : Timestamp) : void
se tEventName( eventNam e : String) : void
getPersonID() : String
getDtAttend() : Timestamp
getEventName( ) : String
(from data)
Figure 29 Event Organizer value objects
Figure 27 shows the screen after theoperator clicks on the OK button at
the attendancescreen. This followingscreen will wait the operator to enter fora Person ID. This ID number may be
entered using any tools (such a bar
code reader or keyboard). The operatorshould aware that there are two
buttons available here. The Attend
button should be clicked after the
operator entered the ID of the person who is attending the event. The Quit
button is used if there are no more people who will attend the event. The
button will send the operator to screen 3.1.1 (Figure 26).
If the operator the operator clicks theAttend button, he/she will go to the
confirmation screen (Figure 28). Herethe operator may see the profile (name
and address) of the person attending
the event. If the displayed profilematches the real person, the operator
then clicks on the Confirmbutton.
Otherwise, the Cancelbutton will send
the operator to the previous screen.6.3 Value Objects
6.3.1 EventVO
Each EventVO object represents a record in the event table. All properties are
to be set and retrieved using the public methods provided by the object.
8/14/2019 BNCC Information System - Member Services Design
35/39
BNCC Information System
System Design
http://www.arcle.com Page 35 of 39
DataAccessObject
(from data)
EventDAO
createEventVO() : EventVO
insertEvent(newEvent : EventVO) : void
updateEvent(event : EventVO) : void
deleteEvent(event : Even tVO) : void
getEventsBetween(startDate : Date, endDate : Date) : ListcreateAttendance VO() : AttendanceVO
getAttendanceByEven tNam e(eventNam e : String) : List
insertAttendance(attendance : AttendanceVO) : void
(from data)
Figure 30 Event Organizer data-access objects
EventVO
Property Field Notes
eventName event_name
eventStart event_start
eventFinish event_finish
6.3.2 AttendanceVO
Each AttendanceVO object represents a record in the attendance table.
AttendanceVO
Property Field Notes
personID person_id
dtAttend dt_attend
eventName event_name
6.4 Data-Access Objects
The EventDAO class manages data about the events. Event data are stored inthe event table and the attendance table
8/14/2019 BNCC Information System - Member Services Design
36/39
BNCC Information System
System Design
http://www.arcle.com Page 36 of 39
Method Summary
publicEventVO
createEventVO()
The primary factory method[GoF95] to create new instances ofEventVOobjects.
public void insertEvent(EventVO newEvent)
Inserts a new event in the event table.
public void updateEvent(EventVO event)
Updates the events data. Both the event table and the attendance tableare updated.
public void deleteEvent(EventVO event)
Deletes an event in the event table.
public List getEventsBetween(Date startDate, Date endDate)
Returns a List (from java.util) which contains EventVO objects which arestill active in the time period given.
publicAttendanceVO
createAttendanceVO()
The primary factory method[GoF95] to create new instances ofAttendanceVO objects.
public List getAttendanceByEventName(String name)
Returns a List (from java.util) which contains AttendanceVO objectswhich event name is according to the parameter given.
public void insertAttendance(AttendanceVO attendance)
Inserts a new attendance into the attendance table.
6.5 Business LogicThe EventManager business logic implements business rules concerning event
organizer services. At the beginning of each method, a security check is
performed to verify whether the currently logged-on operator may performthe desired business action. If access to the action is denied, the
corresponding method throws a security exception.
Note that not all of the required methods are explained in the text. These
unlisted methods are typically simple they passthrough to the related
methods in the DAO after performing some security checks and setting some
easily-obtained values.
8/14/2019 BNCC Information System - Member Services Design
37/39
BNCC Information System
System Design
http://www.arcle.com Page 37 of 39
BusinessLogic(from bu siness)
EventManager
enterAttendance(personID : String, eventName : String) : void
createEvent(eventName : String, eventStart : Date, eventFinish : Date) : void
getEventDAO() : EventDAO
getActiveEvents() : List
(from business)
Figure 31 Event-Organizer business logic
Method Summary
public void enterAttendance(String personID, String eventName)
Pass-through to MemberDAO.createMemberVO() to insert an attendance to thedatabase.
public void createEvent(String eventName, Date eventStart, Date eventFinish)
Creates a new event.
publicEventDAO
getEventDAO()
Returns an eventDAO object associated with this business logic.
public List getActiveEvents()
Returns a List (from java.util) which contains EventVO objects which arestill active for the current time. This method generate current date an passit through the DAO.
6.5.1 Create Event
The event organizer services provide a create event service to provide an
event manager a tool to create a new event. If an event is going to be held, anevent manager will use this service to input the event name, start date, andwhen will the event finish. These data will be very useful in generating
documents (such as attendance) later. The process is shown in Figure 32.
8/14/2019 BNCC Information System - Member Services Design
38/39
8/14/2019 BNCC Information System - Member Services Design
39/39
BNCC Information System
System Design
event
specified
Person ID
obtained
verify operator
privileges
privilege records
obtained
enterAttendance()
called
security clearance
approved
person attendance
recorded
insert new record in
the attendance table
[ access denied ][ access granted ]
: EventDAO: Ev entManager: Sec urityControl: JSP for EventAttendance
Figure 33 Enter Attendance business process
7 Appendix
7.1 References
[GoF95] Gamma, Erich, et. al. Design Patterns: Elements of Reusable Object-
Oriented Software. Addison-Wesley Publishing Company. 1995.
ISBN 0-201-63361-2.[Yu02] Object-Oriented Systems Analysis and Design using UML.