Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FenixEdu Training: Part one - Introduction, Con...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

FenixEdu Training: Part one - Introduction, Concepts and Architecture

Avatar for Artur Ventura

Artur Ventura

May 13, 2014

More Decks by Artur Ventura

Other Decks in Technology

Transcript

  1. Schedule 12 15 Introduction Concepts Architecture Bennu Fenix Framework Struts

    & Renderers JSP & Renderers Faces & Spring New technologies Git & Maven Collaboration You are here Coffee Break Coffee Break
  2. The Bible • A compendium of information about FenixEdu. •

    Relative to Version 2, most parts still apply • Contributions welcomed:
 github.com/FenixEdu/bible
  3. FenixEdu • Academic Management System • Learning Management System •

    Open Source Project • github.com/FenixEdu/fenix • Used on several institutions
  4. FenixEdu Academic Management System Learning Management System Student Management Space

    Management Payments Infrastructure Alumni Candidatures Curriculum Management Grant Management Statistics Content Management System Homepages Online tests Communication
  5. Calculus Degree Student Teacher Calculus Execution Period Execution Course !

    (e.g. 1st Sem. 11/12) Execution Course ! (e.g. 2st Sem. 11/12)
  6. Calculus Degree Student Teacher Calculus Execution Period Execution Course !

    (e.g. 1st Sem. 11/12) Execution Course ! (e.g. 2st Sem. 11/12) What if the Degree changes?
  7. Calculus Degree Student Teacher Curricular Plan Calculus Execution Course !

    (e.g. 2st Sem. 11/12) Curricular Course! (e.g. LEQ2006)
  8. Calculus Degree Student Teacher Curricular Plan Calculus Execution Course !

    (e.g. 2st Sem. 11/12) Curricular Course! (e.g. LEQ2006) Calculus never changes, why can’t I see from other curricular plans?
  9. Calculus Degree Student Teacher Curricular Plan Calculus Execution Course !

    (e.g. 2st Sem. 11/12) Curricular Course! (e.g. LEQ2006) Department Calculus Competence Course! Bible page 66
  10. Calculus Degree Student Teacher Curricular Plan Calculus Execution Course !

    (e.g. 2st Sem. 11/12) Curricular Course! (e.g. LEQ2006) Department Calculus Competence Course! Bible page 66 I want to have a teacher give the same classes to more than one degree.
  11. Calculus Degree Student Teacher Curricular Plan Calculus Execution Course !

    (e.g. 2st Sem. 11/12) Curricular Course Department Calculus Competence Course! Calculus Calculus Degree Curricular Plan Department
  12. Teacher Calculus Execution Course ! Courses have more than one

    teacher and they have different responsibilities (e.g. hours)
  13. Presentation Tier — Based on Struts Application Tier POJO’s Persistence

    Tier — Based on OJB XML Configuration Service Manager Services Filters XML! Configuration DTO’s XML! Configuration Data Repository JDBC JSP! Views Actions SQL Statements
  14. The 11 “Simple” Steps 1. Create a POJO to represent

    the domain object; 2. Write the SQL schema to store the domain object; 3. Write the xml configuration to map the POJO against the SQL schema; 4. Write SQL statements for custom reading of the domain object (in case something other than a read by ID or a read all was necessary); 5. Create data transfer objects for passing information to the presentation tier; 6. Write services at the application level for creating, reading, updating and deleting the domain object; 7. Write access control filters to limit who can invoke services; 8. Write service and filter configurations in a xml file; 9. Create JSP views for presenting information to the users; 10. Write Actions to handle user requests; 11. Configure struts xml files to specify the application flow.
  15. Presentation Tier — Based on Struts Application Tier Persistence Tier

    — Fenix Framework Based Service Manager Services Filters XML! Configuration Domain! Objects XML! Configuration Data Repository JDBC JSP! Views Actions DML Configuration
  16. • Long compilation times • Large memory requirements • Poor

    expansibility • Poor encapsulation • It becomes easy to break domain constraints
  17. Persistence Tier — Fenix Framework Based Data Repository Fenix Application

    Request Controller Module 1 Presentation Tier Application Tier Domain Objects Module 2 Presentation Tier Application Tier Domain Objects ... Module N Presentation Tier Application Tier Domain Objects
  18. Fenix Framework Bennu Framework Bennu Core Bennu IO Bennu Scheduler

    Bennu Portal Bennu Renderers Bennu Spring Bankai Angular Persistence Web Infrastructure Presentation Application Modules FenixEdu (IST) FenixEdu Id Cards FenixEdu Core
  19. [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ bennu-portal --- [INFO] org.fenixedu:bennu-portal:jar:3.1.0-SNAPSHOT [INFO]

    +- org.fenixedu:bennu-core:jar:3.1.0-SNAPSHOT:compile [INFO] | +- org.jasig.cas.client:cas-client-core:jar:3.3.1:compile [INFO] | \- org.antlr:antlr4-runtime:jar:4.2.2:compile [INFO] | +- org.abego.treelayout:org.abego.treelayout.core:jar:1.0.1:compile [INFO] | \- org.antlr:antlr4-annotations:jar:4.2.2:compile [INFO] +- org.fenixedu:fenixedu-commons:jar:1.0.1:compile [INFO] +- com.google.guava:guava:jar:17.0:compile [INFO] +- joda-time:joda-time:jar:2.3:compile [INFO] +- com.google.code.gson:gson:jar:2.2.4:compile [INFO] +- javax.ws.rs:javax.ws.rs-api:jar:2.0:compile [INFO] +- com.mitchellbosecke:pebble:jar:1.0.0:compile [INFO] | \- com.coverity.security:coverity-escapers:jar:1.1:compile [INFO] +- pt.ist:fenix-framework-core-api:jar:2.4.0:compile [INFO] | +- pt.ist:fenix-framework-core-dml:jar:2.4.0:compile [INFO] | | +- commons-lang:commons-lang:jar:2.6:compile [INFO] | | \- antlr:antlr:jar:2.7.7:compile [INFO] | +- javax.transaction:jta:jar:1.1:compile [INFO] | +- pt.ist.esw:advice-runtime:jar:1.8:compile [INFO] | \- org.jgroups:jgroups:jar:3.2.7.Final:compile [INFO] +- pt.ist:fenix-framework-core-consistency-predicates:jar:2.4.0:compile [INFO] | +- jvstm:jvstm-fenix:jar:1.4:compile [INFO] | \- pt.ist:fenix-framework-core-adt-bplustree:jar:2.4.0:compile [INFO] +- javax.servlet:javax.servlet-api:jar:3.0.1:provided [INFO] +- org.slf4j:slf4j-api:jar:1.7.5:compile [INFO] \- junit:junit:jar:4.11:test [INFO] \- org.hamcrest:hamcrest-core:jar:1.3:test
  20. Semantic Versioning • Major Version (2.0.0) • API Disruption •

    Minor Version (1.2.0) • New (backward-compatible) API • Revision (1.2.3) • Bug fixes and internal changes