Checkout Soundings at riaForge.com> Subject: [CFCDEV] Feedback please> Date: Tue, 28 Aug 2007 16:21:54 -0500> From: [EMAIL PROTECTED]> To: cfcdev@cfczone.org> > I'm building a mostly-OO CF application. What follows is a quick summary of the application (no code). I'd like to get your feedback on the initial design, as well as any suggestions.> > --- Overview ---> The application will allow users in the company to create and administer custom surveys. Value added (over sites such as SurveyMonkey) is connection to internal LDAP server and other data sources and keeping company data inside the firewall. > > --- Components ---> User: > * One instance in session scope for each user. > * Instantiated in onSessionStart. > * Handles authentication, roles, and persisting user data (employee Id, name, email, manager, etc.). > > LDAP: > * One instance in application scope. > * Instantiated in onApplicationStart.> * Handles interaction with corporate LDAP server.> * Almost static: will persist data already retrieved from LDAP in struct to be checked before querying LDAP. Data will be timestamped, and stale data "pruned". > > Survey:> * Instantiated when: > - a user begins to create/modify a survey (one Survey object created in session scope)> - a user begins to take a survey (created by and within Response object)> * Persists data about a survey (survey name, active status, employees required to take the survey, etc.)> * Contains a struct of Question objects.> * Contains one SurveyGateway object (created by init method).> * Contains one QuestionGateway object (created by init method).> > SurveyGateway> * Created in and by Survey object (in init method of Survey).> * One instance contained within each Survey object.> * Handles interaction with db and data persistence.> > Question> * Created by QuestionGateway object, which is contained by Survey object.> * Struct of Question objects is contained by Survey object.> * Contains information about one survey question (question text, label for reporting, options if multi-choice, etc.).> * Almost like a TO (no business logic, only getters and setters).> > QuestionGateway> * Created in and by Survey object (in init method of Survey).> * Contained by Survey object.> * Acts almost like both a gateway to retrieve and persist data and a factory to create Question objects.> > Response> * Instantiated when a user begins to take a survey.> * Contains one Survey object (created by init method).> * Contains one ResponseGateway object (created by init method).> * Contains a struct of survey answers.> > ResponseGateway> * Instantiated in init method of Response object.> * Contained by Response object.> * Handles interaction with db and data persistence.> > --- Comments ---> * Only "gateway" objects (no DAOs) are used for simplicity. Gateway objects will handle CRUD operations as well as multi-record queries.> * The "view" layer will be cfm pages using custom tags for layout.> * onRequestStart intercepts submitted forms and (cf)includes appropriate processing scripts.> * Form processing scripts will create or use existing objects as necessary then (cf)include or redirect user to appropriate page.> * Data is persisted in cached queries in gateway objects.> * There are a couple of components related to reporting not shown here.> > --- Unresolved Issues and Questions ---> * Where is data manipulation done (e.g., computed fields, sorting, filtering, paging)?> * Is some kind of factory called for?> * Are layers properly separated? > * Do I need a service layer? If so, how would it fit in?> * Where to do validation of submitted data?> * Should all data be bound to request scope to be passed to view layer?> * Should utility functions be wrapped in a Utility object and persisted in application scope, or just (cf)included on every page request?> > I'm not expecting an in-depth review; I'm just looking for pointers, particularly if I've really mangled something. Thanks in advance.> > --> Joe Lakey> Sr. Technical Analyst> FedEx Services> > > You are subscribed to cfcdev. To unsubscribe, please follow the instructions at http://www.cfczone.org/listserv.cfm> > CFCDev is supported by:> Katapult Media, Inc.> We are cool code geeks looking for fun projects to rock!> www.katapultmedia.com> > An archive of the CFCDev list is available at www.mail-archive.com/cfcdev@cfczone.org> _________________________________________________________________ Discover the new Windows Vista http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE
You are subscribed to cfcdev. To unsubscribe, please follow the instructions at http://www.cfczone.org/listserv.cfm CFCDev is supported by: Katapult Media, Inc. We are cool code geeks looking for fun projects to rock! www.katapultmedia.com An archive of the CFCDev list is available at www.mail-archive.com/cfcdev@cfczone.org