Advantage Software Factory




         Java Enterprise in the Real World
         NextReports
         Octombrie, 2011



Advantage Software Factory                   www.asf.ro
Agenda



            Despre noi
            Arhitectură aplicaţie de tip enterprise
            Arhitectură creare artefacte
            NextReports
            Frameworks
            Modalităţi de integrare
            Demo
            Concluzii


Advantage Software Factory                            www.asf.ro
Despre noi

       Advantage Software Factory
       firmă românească înfiinţată în 2001

       4 linii de afaceri:
             Sistemul de colectare Capone
             Suita de aplicaţii AnytimeCRM
             Software-ul de raportare NextReports
             Dezvoltarea de soluţii la cererea clientului

       Prezentare
                   Decebal Şuiu, Senior Java Developer
                   Mihai Dincă-Panaitescu, Senior Java Developer


Advantage Software Factory                                         www.asf.ro
Arhitectură aplicaţie enterprise




Advantage Software Factory                    www.asf.ro
Arhitectură creare artefacte




Advantage Software Factory                www.asf.ro
NextReports


       Suită de aplicaţii Java pentru crearea şi
     distribuirea de rapoarte în mediul enterprise

          Designer gratuit de rapoarte

          Engine (API) gratuit pentru rularea rapoartelor




Advantage Software Factory                                  www.asf.ro
NextReports

             Enterprise Server
                             - centralizare
                             - administrare
                             - rulare programată automată
                             - distribuţie
                             - versionare
                             - istoric
                             - monitorizare
                             - securitate
                             - vizualizare in timp real
                             - analiză


Advantage Software Factory                                  www.asf.ro
NextReports: aplicaţie enterprise




Advantage Software Factory                     www.asf.ro
NextReports: creare artefacte




Advantage Software Factory                www.asf.ro
Spring


           Injectare dependinţe (DI)
           Tranzacţii
           Simplificare acces la storage
           Securitate
           AOP
           Configurabilitate: servicii, UI




Advantage Software Factory                   www.asf.ro
Spring
        public class ReportServiceImpl implements ReportService {
                private StorageDao storageDao;
                @Required
                public void setStorageDao(StorageDao storageDao) {
                         this.storageDao = storageDao;
                }


                @Transactional(readOnly = true)
                @Secured("AFTER_ACL_COLLECTION_READ")
                public List<RunReportHistory> getRunHistory() {
                        return storageDao.getRunHistory();
                }
        }

Advantage Software Factory                                           www.asf.ro
JackRabbit

            JCR
         - storage, acces si administrare de conţinut
         - structură de date ierarhică
         - versionare
         - control acces
         - căutare

            JackRabbit
         - implementare completă JCR
         - integrare cu Spring

            JCROM
         - framework de mapare între obiectele Java şi JCR
         - bazat pe adnotări (fără XML)
Advantage Software Factory                                   www.asf.ro
JackRabbit
        @JcrNode (classNameProperty="className",
                             mixinTypes = {"mix:referenceable", "mix:versionable"})
        public class Chart {
            @JcrProperty
            private String description;


            @JcrReference
            private DataSource dataSource;


            @JcrChildNode(createContainerNode = false)
            private ChartContent content;
            …
        }

Advantage Software Factory                                                            www.asf.ro
Wicket



             POJO
             Uşurinţă în dezvoltare (Java + HTML)
             Componente reutilizabile
             Suport AJAX
             Integrare cu Spring
             WiQuery (JQuery)




Advantage Software Factory                          www.asf.ro
Wicket

        ActionPanel.java
        public class ActionPanel extends Panel {
             @SpringBean
             private ReportService reportService;
             public ActionPanel(String id, final IModel<Entity> model) {
                       add(new Label("entityId", "Id"));
              }
        }
        ActionPanel.html
        <wicket:panel>
             <label wicket:id="entityId">[]</label>
        </wicket:panel>


Advantage Software Factory                                                 www.asf.ro
Jersey



           Implementare JAX-RS

           Oferă un API pentru apeluri REST

           Integrare cu Spring




Advantage Software Factory                    www.asf.ro
Jersey


      @Path("storage")
      public class StorageWebService {

      @InjectParam
      private StorageService storageService;

      @POST
      @Path("publishReport")
      public void publishReport(ReportMetaData reportMetaData) {..}
      }




Advantage Software Factory                                            www.asf.ro
Integrare

             Creare de API-uri uşor de utilizat

           FluentReportRunner
             .report(loadReport(new FileInputStream(“test.xml”)))
             .connectTo(connection)
             .withQueryTimeout(60)
             .withParameterValues(createParameterValues())
             .formatAs(ReportRunner.HTML_FORMAT)
             .run(new FileOutputStream("test.html"));

             Procese de sincronizare
             Externalizarea securităţii
             Servicii Web


Advantage Software Factory                                          www.asf.ro
Demo




         Prezentare NextReports




Advantage Software Factory        www.asf.ro
Concluzii



        Alegere framework-uri:

             Necesităţile de implementare
             Funcţionalităţi
             Interoperabilitate cu alte framework-uri
             Usurinţa în utilizare
             Comunitate



Advantage Software Factory                              www.asf.ro
Contact



     Advantage Software Factory
     address: 169 Calea Floreasca, IPA building, 6th floor, Sect. 1, Bucharest, Romania.
     phone: +4 01 242 87 20
     fax: +4 01 242 87 22

     web:       www.next-reports.com
     demo:      demo.next-reports.com

     email:      next-support@asf.ro
                 decebal.suiu@asf.ro
                 mihai.panaitescu@asf.ro




Advantage Software Factory                                                                 www.asf.ro

Java enterprise real world

  • 1.
    Advantage Software Factory Java Enterprise in the Real World NextReports Octombrie, 2011 Advantage Software Factory www.asf.ro
  • 2.
    Agenda Despre noi Arhitectură aplicaţie de tip enterprise Arhitectură creare artefacte NextReports Frameworks Modalităţi de integrare Demo Concluzii Advantage Software Factory www.asf.ro
  • 3.
    Despre noi Advantage Software Factory firmă românească înfiinţată în 2001 4 linii de afaceri: Sistemul de colectare Capone Suita de aplicaţii AnytimeCRM Software-ul de raportare NextReports Dezvoltarea de soluţii la cererea clientului Prezentare Decebal Şuiu, Senior Java Developer Mihai Dincă-Panaitescu, Senior Java Developer Advantage Software Factory www.asf.ro
  • 4.
  • 5.
    Arhitectură creare artefacte AdvantageSoftware Factory www.asf.ro
  • 6.
    NextReports Suită de aplicaţii Java pentru crearea şi distribuirea de rapoarte în mediul enterprise Designer gratuit de rapoarte Engine (API) gratuit pentru rularea rapoartelor Advantage Software Factory www.asf.ro
  • 7.
    NextReports Enterprise Server - centralizare - administrare - rulare programată automată - distribuţie - versionare - istoric - monitorizare - securitate - vizualizare in timp real - analiză Advantage Software Factory www.asf.ro
  • 8.
  • 9.
    NextReports: creare artefacte AdvantageSoftware Factory www.asf.ro
  • 10.
    Spring Injectare dependinţe (DI) Tranzacţii Simplificare acces la storage Securitate AOP Configurabilitate: servicii, UI Advantage Software Factory www.asf.ro
  • 11.
    Spring public class ReportServiceImpl implements ReportService { private StorageDao storageDao; @Required public void setStorageDao(StorageDao storageDao) { this.storageDao = storageDao; } @Transactional(readOnly = true) @Secured("AFTER_ACL_COLLECTION_READ") public List<RunReportHistory> getRunHistory() { return storageDao.getRunHistory(); } } Advantage Software Factory www.asf.ro
  • 12.
    JackRabbit JCR - storage, acces si administrare de conţinut - structură de date ierarhică - versionare - control acces - căutare JackRabbit - implementare completă JCR - integrare cu Spring JCROM - framework de mapare între obiectele Java şi JCR - bazat pe adnotări (fără XML) Advantage Software Factory www.asf.ro
  • 13.
    JackRabbit @JcrNode (classNameProperty="className", mixinTypes = {"mix:referenceable", "mix:versionable"}) public class Chart { @JcrProperty private String description; @JcrReference private DataSource dataSource; @JcrChildNode(createContainerNode = false) private ChartContent content; … } Advantage Software Factory www.asf.ro
  • 14.
    Wicket POJO Uşurinţă în dezvoltare (Java + HTML) Componente reutilizabile Suport AJAX Integrare cu Spring WiQuery (JQuery) Advantage Software Factory www.asf.ro
  • 15.
    Wicket ActionPanel.java public class ActionPanel extends Panel { @SpringBean private ReportService reportService; public ActionPanel(String id, final IModel<Entity> model) { add(new Label("entityId", "Id")); } } ActionPanel.html <wicket:panel> <label wicket:id="entityId">[]</label> </wicket:panel> Advantage Software Factory www.asf.ro
  • 16.
    Jersey Implementare JAX-RS Oferă un API pentru apeluri REST Integrare cu Spring Advantage Software Factory www.asf.ro
  • 17.
    Jersey @Path("storage") public class StorageWebService { @InjectParam private StorageService storageService; @POST @Path("publishReport") public void publishReport(ReportMetaData reportMetaData) {..} } Advantage Software Factory www.asf.ro
  • 18.
    Integrare Creare de API-uri uşor de utilizat FluentReportRunner .report(loadReport(new FileInputStream(“test.xml”))) .connectTo(connection) .withQueryTimeout(60) .withParameterValues(createParameterValues()) .formatAs(ReportRunner.HTML_FORMAT) .run(new FileOutputStream("test.html")); Procese de sincronizare Externalizarea securităţii Servicii Web Advantage Software Factory www.asf.ro
  • 19.
    Demo Prezentare NextReports Advantage Software Factory www.asf.ro
  • 20.
    Concluzii Alegere framework-uri: Necesităţile de implementare Funcţionalităţi Interoperabilitate cu alte framework-uri Usurinţa în utilizare Comunitate Advantage Software Factory www.asf.ro
  • 21.
    Contact Advantage Software Factory address: 169 Calea Floreasca, IPA building, 6th floor, Sect. 1, Bucharest, Romania. phone: +4 01 242 87 20 fax: +4 01 242 87 22 web: www.next-reports.com demo: demo.next-reports.com email: next-support@asf.ro decebal.suiu@asf.ro mihai.panaitescu@asf.ro Advantage Software Factory www.asf.ro