Questions and feedback on component identification approach

Discussions

EJB design: Questions and feedback on component identification approach

  1. Ok this is my first time developing an J2EE applicaition so I woud appreciate some constructive criticism, and don't be gentle! I am using the componet identification pattern from http://www.theserverside.com/patterns/thread.tss?thread_id=17595. I am creating an application that generates reports based on some data (CRS Data, stored in a db). The application will then use business rules to generate specific types of report based off the CRS data. The user then can choose to send the report to PeopleSoft or simply view. Here are two used cases below:

    1. Book Journal Entry - generate reports and send to PeopleSoft -includes generateReport
    2. Data Administration - select time periods and generate reports and view- includes generateReport

    the apps i have are:

    BookJEApp(1)
    DataAdminApp(2)


    BookJEApp Flow:
    1 System retrieves current and previous reporting periods and presents it to user that have not been booked by the system and displays to user
    2 User Submits request Journal Entry
    3 System process and generates JE file (Standard, Adjusted Journal Entries and amount for each account (interest, principal, offset), back value and threshold reports
    4 System creates txt file
    5 System presents user with accounts and there totals (Interest, Principal)
    6 User requests to send to PeopleSoft
    7 System validates that current Journal Entry has not been sent to PeopleSoft before
    8 System Prompts User to confirm that Journal Entry will be sent PeopleSoft
    9 User confirms
    10 System sends request to PeopleSoft
    11 System Logs sent request to PeopleSoft
    12 System presents user with success of message sent to PeopleSoft

    The following services would be needed:
    getCRSDataNotBooked()
    generateJournalEntry()
    calculateAccounts()
    generatebackValueReport()
    generateThresholdReport()
    getTextFile()
    getThresholdReport()
    getBackValueReport()
    validateJENotSent()
    sendJEtoPeopleSoft()
    logJEsentPeopleSoft()

    Data Adminstaration Flow:
    1 System retrieves all CRS time periods
    2 System displays page with current and previous periods with CRS time periods
    3 User Selects current and previous period, and checks to include mid month
    4 System validates the order of current and previous is in the correct chronological order
    5 System creates txt file, back value and threshold reports
    6 System presents user with accounts and there totals (Interest, Principal, Offset)
    7 User selects to View Report
    8 System presents user with page and two report links
    9 User selects threshold report link
    10 System retrieves threshold report and presents to user

    The following Services would be needed:
    getAllCRSDataFeeds()
    validateSelectionOrder()
    calculateAccounts()
    generateJournalEntry()
    generateBackValueReport()
    generateThresholdReport()
    getThresholdReport()




    After grouping the services into 'components' I get the following:

    ReportEngineMgr
    -validateSelectionOrder()
    -generateJournalEntry()
    -calculateAccounts()
    -generatebackValueReport()
    -generateThresholdReport()

    ReportMgr
    -getTextFile()
    -getThresholdReport()
    -getBackValueReport()

    BookMgr
    -sendJEtoPeopleSoft()
    -validateJENotSent()
    -logJEsentPeopleSoft()

    CRSMgr
    -getAllCRSDataFeeds()
    -getCRSDataNotBooked()


    My questions are:
    1) are the components my session beans essentially?
    2) how do I create my servlets? are these the apps?
    3) any improvements to my approach/design would be greatly appreciated, thank you
  2. My questions are:1) are the components my session beans essentially?2) how do I create my servlets? are these the apps?3) any improvements to my approach/design would be greatly appreciated, thank you
    All the components identified by this analysis belong to the business layer (sandwiched between the web and data layers). If you attach a struts based web front end to the "apps" then you would have a set of action classes for each user action. Each one of those action classes then in turn invokes one of the appropriate "apps" identified to accomplish its goal.

    If you want to use EJBs then convert "apps" into session beans and "comps" into entity beans.

    Nalla