100 likes | 209 Views
WDK Overview. How the WDK implements MVC and provides a base from which custom sites can be created. Top Level Design. Bioinformatics Data (Oracle, Read-Only). Gbrowse (Perl CGI). Java Beans (RW, (Session/Request scope). JavaScript, CSS. Factory Classes. User Data (Oracle, RW).
E N D
WDK Overview How the WDK implements MVC and provides a base from which custom sites can be created
Top Level Design Bioinformatics Data (Oracle, Read-Only) Gbrowse (Perl CGI) Java Beans (RW, (Session/Request scope) JavaScript, CSS Factory Classes User Data (Oracle, RW) View/Controller WDK Model (Read-Only Java Objects) Struts 1 Actions Comment Data Top-level JSPs Client Questions WDK custom tags WDK Model (XML) Queries Franchise-supplied custom JSP/tags Params
What’s in the App Database? • Different sorts of bioinformatics data • Defined as RecordClasses in the Model • Types: • Genes • Isolates • Genomic Sequences • Genomic Segments • ESTs (Expressed Sequence Tags) • SNPs (Single Nucleotide Polymorphisms) • Sage Tag Alignments • ORFs (Open Reading Frames) • Results caching
What’s in the User Database? • User authentication, roles, preferences • Favorites • Individually saved IDs, kind of like bookmarks • Able to comment on or assign to projects • Basket • Large set of ids gathered from results page • Able to be incorporated into a strategy (as a Step) • User-saved Strategies • All steps and param values are saved in user database • IDs for saved strategies are cached in main database • ***This includes guest users*** • And by extension, their unsaved strategies
How do we search? • Begin by asking a “Question,” a search with specific (related) parameters • First Question becomes a “Step;” can then refine results by adding Steps representing different Questions • Results from each Step are combined using “Booleans” or logical set operators (union, intersection, minus) • This process of adding Steps, representing different Questions, and combining them with Booleans, results in a search “Strategy” • Executing a Strategy results in a set of IDs representing “Records” of the “Data Type” searched • Records can be displayed on the results page, where “Columns”, or attributes of the records can be accessed
What’s in the Model? • RecordClasses • Data types stored, other properties • Columns available • Filters for certain organisms • Questions and their Parameters • Name (term), display name • Potential values (for enumparams- also include term and display) • Some validation info • Which UI widget to use • Which projects to include with • Queries • Query usually corresponds to a single Question • Contains parameterized SQL, params linked to Question params • Other queries for ajax calls, sources, non-searchable RecordClasses
Customizing the WDK • This is what ApiCommon is! (i.e. a customization of the WDK) • The model XML is a configuration of the WDK • CSS, page styles, layouts, etc. • Customized JSPs, overridden JSP tags • The build process combines everything together into the web application • model-config.xml defines the databases from which data is retrieved • Customized Java classes to retrieve supplemental information or build custom objects required by custom JSPs • WDK uses file look-ups, factory classes to choose which implementation to apply in a specific case • All the content you see in the pages is a mixture of information pulled from the model XML files, or data pulled from the database • Sometimes it is not obvious which of these it is
How do Strategies work? • Database maintains an ordered list of steps for each Strategy • Each Step’s parameter values are also saved • Reminder: Most steps represent a Question • …and the parameters associated with that question • Booleans represent “interim” steps which link Question steps • Strategies workspace (top of Results page): • All strategy information is retrieved in JSON format, and rendered in the workspace using JavaScript • Each time a Step is revised, that part of the UI is refreshed • Results display (bottom of Results page): • Large SQL query is constructed to fetch IDs • Sub-queries are Question SQL containing the parameterized queries • Question SQL sub-queries are joined by Boolean set operators • Selected columns/attributes are added (wrapping ID query) after ID set has been determined
How do we load BioInformatics data? • Slide here about ReFlow, workflow processes
Where does the source data come from? • Slide here about data sources, maybe original data formats • (I don’t know anything about this)