SlideShare a Scribd company logo
A SPECIAL REPORT
Reporting solutions for ADF Applications




Luc Bors
Oracle Certified ADF Implementation Specialist

AMIS Services, The Netherlands
Oracle ADF Specialized Partner


Monday, June 25, 2012
ODTUG KScope 12
San Antonio, Texas, USA
REPORTING
I USE ADF, WHAT ABOUT REPORTS ?
ORACLE REPORTS DEVELOPER
CREATING ORACLE REPORTS

•   Example:

    – Employees per Department Report

    – Parameter P_DEPARTMENT_ID
HOW TO CALL THE REPORT ?
USING ORACLE REPORTS

•   Use Case : Invoke the report for the currently selected
    Department in an ADF table
PREPARING THE CALL

           •   Create a bean and method to invoke the report

<managed-bean id="__13">
   <managed-bean-name id="__14">oracleReportBean</managed-bean-name>
   <managed-bean-class id="__15">
              com.blogspot.lucbors.reporting.view.orarep.OracleReportBean
   </managed-bean-class>
   <managed-bean-scope id="__16">request</managed-bean-scope>
 </managed-bean>




           •   Provide report parameters

String   oraReportServerUrl = "http://192.168.2.8:8889/reports/rwservlet?";
String   reportNameParam ="report=";
String   reportDestypeParam = "destype=";
String   reportPDesformatParam = "desformat=";
String   reportUseridParam = "userid=“;
CONSTRUCTING THE CALL

               •   Construct Report Server URL; Including the parameters
public void runOracleReport(ActionEvent actionEvent) {

     String departmentParam = "p_department_id=";

      StringBuffer totalCallUrl = new StringBuffer();
      totalCallUrl.append(getOraReportServerUrl());
      totalCallUrl.append(getReportNameParam().concat("employees.rdf")+"&");
      totalCallUrl.append(getReportDestypeParam().concat("cache")+"&");
      totalCallUrl.append(getReportPDesformatParam().concat("html")+"&");
      totalCallUrl.append(getReportUseridParam().concat("hr/hr@xe")+"&");
      totalCallUrl.append(departmentParam.concat(getDepartmentId()));

        setOraReportUrl(totalCallUrl.toString());
}


    public String getDepartmentId() {
      DCIteratorBinding it = ADFUtils.findIterator("SalaryOverview1Iterator");
      oracle.jbo.domain.Number deptId =
         (oracle.jbo.domain.Number)it.getCurrentRow().getAttribute("DepartmentId");
      return deptId.toString();
        }
CALL AND SHOW THE REPORT

            •   Call ………

<af:commandToolbarButton text="Run Oracle Report" id="cb3“
                actionListener="#{oracleReportBean.runOracleReport}">
       <af:showPopupBehavior popupId=":::showOraRpt" triggerType="click"/>
</af:commandToolbarButton>




            •   ……. And Show the report

<af:popup id="showOraRpt" animate="default">
          <af:panelWindow id="pw3" modal="true"
                          title="External Internet Info in a Modal Popup"
                          contentHeight="625" contentWidth="700" resize="on">
            <af:inlineFrame id="if3" shortDesc="This is an inline frame"
                            source="#{oracleReportBean.oraReportUrl}"
                            styleClass="AFStretchWidth"
                            inlineStyle="height:600px;">
            </af:inlineFrame>
</af:panelWindow>
SHOWING THE ORACLE REPORT

•   ….. and the result…..
CAN I USE FMW REPORTING TOOLS ?
ORACLE BI PUBLISHER
ORACLE BI PUBLISHER
ORACLE BI PUBLISHER
ORACLE BI PUBLISHER
PREPARING THE CALL

           •   Create a bean and method to invoke the report

 <managed-bean id="__13">
    <managed-bean-name id="__14">biPublisherBean</managed-bean-name>
    <managed-bean-class id="__15">
               com.blogspot.lucbors.reporting.view.orarep.BiPublisherBean
    </managed-bean-class>
    <managed-bean-scope id="__16">request</managed-bean-scope>
  </managed-bean>




           •   Provide report parameters

private static final String RAPPORT_SERVER_HOST_PARAM =
                     "http://192.168.56.101:7001/xmlpserver/~weblogic/";
private static final String RAPPORT_GENERAL_USER_PARAM = "<UN>";
private static final String RAPPORT_GENERAL_PASSWORD_PARAM = "<PW>";
CONSTRUCTING THE CALL

            •   Construct Report Server URL; Including the parameters
 public void startBiReport(ActionEvent event)
     {
       StringBuffer reportUrl = new StringBuffer();
       reportUrl.append(getRapportServerHost());
       reportUrl.append("/"+"EmployeesPerDepartment"+".xdo");
       // add standard params
       addStandardParams(rapport,reportUrl);
       // add report-specific params
       addReportParams(rapport, reportUrl);
       sLog.fine("Rapport start URL: "+reportUrl);
       setReportUrl(reportUrl.toString());
……..
CALL AND SHOW THE REPORT

            •   Call ………

<af:commandToolbarButton text="Run BI Publisher Report" id="cb3“
                actionListener="#{oracleReportBean.startBiReport}">
       <af:showPopupBehavior popupId=":::showBiRpt" triggerType="click"/>
</af:commandToolbarButton>




            •   ……. And Show the report

<af:popup id="showBiRpt" animate="default">
          <af:panelWindow id="pw3" modal="true"
                          title="External Internet Info in a Modal Popup"
                          contentHeight="625" contentWidth="700" resize="on">
            <af:inlineFrame id="if3" shortDesc="This is an inline frame"
                            source="#{<…BI report source>}"
                            styleClass="AFStretchWidth"
                            inlineStyle="height:600px;">
            </af:inlineFrame>
</af:panelWindow>
SHOWING THE BI PUBLISHER REPORT
ARE THERE OPEN SOURCE TOOLS ?
JASPER REPORTS
JASPER REPORTS - IREPORT
JASPER REPORT QUERY
CREATING JASPER REPORTS

•   Jasper  iReport as design tool
     – Select a report template
     – Create a new report based on a query




     – Add parameters
     – Test report in iReport
PREPARING JDEVELOPER AND ADF

•   Make sure to add Jasper libraries to ADF project
PREPARING THE CALL

         •   Create a bean and method to invoke the report

<managed-bean id="__13">
   <managed-bean-name id="__14">jasperReportBean</managed-bean-name>
   <managed-bean-class id="__15">
              com.blogspot.lucbors.reporting.view.orarep.JasperReportBean
   </managed-bean-class>
   <managed-bean-scope id="__16">request</managed-bean-scope>
 </managed-bean>
CALLING THE JASPER REPORT

         •   How to invoke the Jasper report ?
              – Get a handle to your template

 InputStream is = new FileInputStream (
        new File("C:/ReportingTools/myReports/MyFirstReport.jrxml"));

              – Define the file that will hold the generated report


OutputStream os=new FileOutputStream(
                        new File(this.filepath+this.reportname));

              – Optionally fill parameters


 Map parameters = new HashMap();
         parameters.put("P_DEPARTMENT_ID", getDepartmentId());
CALL AND SHOW THE REPORT

            •   Call ………

<af:commandToolbarButton text="Run Oracle Report" id="cb3“
                actionListener="#{oracleReportBean.runOracleReport}">
       <af:showPopupBehavior popupId=":::showOraRpt" triggerType="click"/>
</af:commandToolbarButton>
JASPER REPORTING

       •   Invoke the report ………
JasperDesign jasperDesign = JRXmlLoader.load(is);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

JasperPrint jasperPrint =
                JasperFillManager.fillReport(jasperReport, parameters, conn);

JasperExportManager.exportReportToPdfStream(jasperPrint, os);




       •   ……. And Show the result


  JasperViewer.viewReport(jasperPrint, false);
JASPER REPORTING

•   ….. And the result….
I DONT WANT MY OWN REPORTSERVER
REPORTING FROM THE CLOUD
DOCMOSIS REPORTING
CREATING TEMPLATES
UPLOAD TO THE CLOUD
CALLING THE CLOUD FROM ADF

•   Setup a connection

•   Build the request

•   Write request to outputstream
PREPARING THE CALL

           •   Create a bean and method to invoke the report

 <managed-bean id="__13">
    <managed-bean-name id="__14">docmosisReportBean</managed-bean-name>
    <managed-bean-class id="__15">
               com.blogspot.lucbors.reporting.view.docmosis.DocmosisReportBean
    </managed-bean-class>
    <managed-bean-scope id="__16">request</managed-bean-scope>
  </managed-bean>




           •   Provide report parameters

private static final String DWS_RENDER_URL =
                   "https://dws.docmosis.com/services/rs/render";
private static final String ACCESS_KEY = “<your acces key>";
private static final String OUTPUT_FORMAT = "pdf";
private static final String OUTPUT_FILE = "myWelcome." + OUTPUT_FORMAT;
CONSTRUCTING THE CALL

           •   Construct Report Server URL; Including the parameters
private static String buildRequestForEmployee() {
       // the name of the template in our cloud account we want to use
       String templateName = "/KScopeDemoTemplate.doc";

      StringBuilder sb = new StringBuilder();

      // Start building the instruction
      sb.append("<?xml version="1.0" encoding="utf-8"?>");
      sb.append("<render n");
      sb.append("accessKey="").append(ACCESS_KEY).append("" ");
      sb.append("templateName="").append(templateName).append("" ");
      sb.append("outputName="").append(OUTPUT_FILE).append("">n");
CONSTRUCTING THE CALL

           •   Adding the Data

// now add the data specifically for this template
       sb.append("<datan");
       sb.append(" date="").append(new Date()).append(""n");
       sb.append(" title="Creating documents with Docmosis from ADF ">n");
       String[] messages = {
         "Reporting from ADF Applications - What are the Options? John Flack",
         "ADF Data Visualization Tips & Techniques. Chris Muir",
         "How to Bring Common UI Patterns to ADF. Luc Bors",
         "and many many more......"};
     for (int i = 0; i < messages.length; i++) {
       sb.append("<suggestions msg="").append(messages[i]).append(""/>n");
       }

      sb.append("</data>n");
      sb.append("</render>n");
CALL AND SHOW THE REPORT

            •   Call ………

 <af:commandToolbarButton text="Run docmosis Report" id="cb5"
                      actionListener="#{docmosisReportBean.runDocmosisReport}">
       <af:showPopupBehavior popupId=":::showDocmosisReport"
                             triggerType="action"/>
</af:commandToolbarButton>



            •   ……. And Show the report

 <af:popup id="showDocmosisReport" animate="default">
     <af:panelWindow id="pw2" modal="true" title="The report"
                     contentHeight="625" contentWidth="700" resize="on">
       <af:inlineFrame id="if2" shortDesc="This is an inline frame“
         source="/showpdfservlet?name=#{docmosisReportBean.docmosisreportname}"
         styleClass="AFStretchWidth"
         inlineStyle="height:600px;"></af:inlineFrame>
     </af:panelWindow>
</af:popup>
SHOWING THE RESULT
REPORTING; YOUR OPTIONS
COMMON FEATURES
PRO’S AND CON’S ?
ARE THERE OTHER ALTERNATIVES?
MORE REPORTING IN THE FMW TRACK
RESOURCES

•   OTN – Reports :
    http://www.oracle.com/technetwork/middleware/reports/overvie
    w/index.html

•   OTN – BI Publisher :
    http://www.oracle.com/technetwork/middleware/bi-
    publisher/overview/index.html

•   Jasper : http://jasperforge.org/projects/jasperreports

•   Docmosis : https://www.docmosis.com/

•   OS Reporting overview : http://java-source.net/open-
    source/charting-and-reporting

•   AMIS tech blog : http://technology.amis.nl

•   ADF-EMG site : http://groups.google.com/group/adf-
    methodology/web/adf-reporting?pli=1
A SPECIAL REPORT
Reporting solutions for ADF Applications




Luc Bors
Oracle Certified ADF Implementation Specialist

AMIS Services, The Netherlands
Oracle ADF Specialized Partner


Monday, June 25, 2012
ODTUG KScope 12
San Antonio, Texas, USA

More Related Content

What's hot

20140821 delapsley-cloudopen-public
20140821 delapsley-cloudopen-public20140821 delapsley-cloudopen-public
20140821 delapsley-cloudopen-public
David Lapsley
 
Tools for Making Machine Learning more Reactive
Tools for Making Machine Learning more ReactiveTools for Making Machine Learning more Reactive
Tools for Making Machine Learning more Reactive
Jeff Smith
 
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
Michael Miles
 
RichFaces: more concepts and features
RichFaces: more concepts and featuresRichFaces: more concepts and features
RichFaces: more concepts and features
Max Katz
 
20141002 delapsley-socalangularjs-final
20141002 delapsley-socalangularjs-final20141002 delapsley-socalangularjs-final
20141002 delapsley-socalangularjs-final
David Lapsley
 
Tweaking the interactive grid
Tweaking the interactive gridTweaking the interactive grid
Tweaking the interactive grid
Roel Hartman
 
Zend framework service
Zend framework serviceZend framework service
Zend framework service
Michelangelo van Dam
 
Demystifying Drupal AJAX Callback Commands
Demystifying Drupal AJAX Callback CommandsDemystifying Drupal AJAX Callback Commands
Demystifying Drupal AJAX Callback Commands
Michael Miles
 
Thinking Beyond ORM in JPA
Thinking Beyond ORM in JPAThinking Beyond ORM in JPA
Thinking Beyond ORM in JPA
Patrycja Wegrzynowicz
 
Second Level Cache in JPA Explained
Second Level Cache in JPA ExplainedSecond Level Cache in JPA Explained
Second Level Cache in JPA Explained
Patrycja Wegrzynowicz
 
Java scriptap iforofficeposter
Java scriptap iforofficeposterJava scriptap iforofficeposter
Java scriptap iforofficeposter
Tayla Gayle X
 
Lazy vs. Eager Loading Strategies in JPA 2.1
Lazy vs. Eager Loading Strategies in JPA 2.1Lazy vs. Eager Loading Strategies in JPA 2.1
Lazy vs. Eager Loading Strategies in JPA 2.1
Patrycja Wegrzynowicz
 
Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with Solr
Erik Hatcher
 
Django tricks (2)
Django tricks (2)Django tricks (2)
Django tricks (2)
Carlos Hernando
 
Play!ng with scala
Play!ng with scalaPlay!ng with scala
Play!ng with scala
Siarzh Miadzvedzeu
 
Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Roel Hartman
 
Tools for Solving Performance Issues
Tools for Solving Performance IssuesTools for Solving Performance Issues
Tools for Solving Performance Issues
Odoo
 
Thinking Beyond ORM in JPA
Thinking Beyond ORM in JPAThinking Beyond ORM in JPA
Thinking Beyond ORM in JPA
Patrycja Wegrzynowicz
 
Web осень 2012 лекция 6
Web осень 2012 лекция 6Web осень 2012 лекция 6
Web осень 2012 лекция 6
Technopark
 
How to perform debounce in react
How to perform debounce in reactHow to perform debounce in react
How to perform debounce in react
BOSC Tech Labs
 

What's hot (20)

20140821 delapsley-cloudopen-public
20140821 delapsley-cloudopen-public20140821 delapsley-cloudopen-public
20140821 delapsley-cloudopen-public
 
Tools for Making Machine Learning more Reactive
Tools for Making Machine Learning more ReactiveTools for Making Machine Learning more Reactive
Tools for Making Machine Learning more Reactive
 
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
MidCamp 2016 - Demystifying AJAX Callback Commands in Drupal 8
 
RichFaces: more concepts and features
RichFaces: more concepts and featuresRichFaces: more concepts and features
RichFaces: more concepts and features
 
20141002 delapsley-socalangularjs-final
20141002 delapsley-socalangularjs-final20141002 delapsley-socalangularjs-final
20141002 delapsley-socalangularjs-final
 
Tweaking the interactive grid
Tweaking the interactive gridTweaking the interactive grid
Tweaking the interactive grid
 
Zend framework service
Zend framework serviceZend framework service
Zend framework service
 
Demystifying Drupal AJAX Callback Commands
Demystifying Drupal AJAX Callback CommandsDemystifying Drupal AJAX Callback Commands
Demystifying Drupal AJAX Callback Commands
 
Thinking Beyond ORM in JPA
Thinking Beyond ORM in JPAThinking Beyond ORM in JPA
Thinking Beyond ORM in JPA
 
Second Level Cache in JPA Explained
Second Level Cache in JPA ExplainedSecond Level Cache in JPA Explained
Second Level Cache in JPA Explained
 
Java scriptap iforofficeposter
Java scriptap iforofficeposterJava scriptap iforofficeposter
Java scriptap iforofficeposter
 
Lazy vs. Eager Loading Strategies in JPA 2.1
Lazy vs. Eager Loading Strategies in JPA 2.1Lazy vs. Eager Loading Strategies in JPA 2.1
Lazy vs. Eager Loading Strategies in JPA 2.1
 
Rapid Prototyping with Solr
Rapid Prototyping with SolrRapid Prototyping with Solr
Rapid Prototyping with Solr
 
Django tricks (2)
Django tricks (2)Django tricks (2)
Django tricks (2)
 
Play!ng with scala
Play!ng with scalaPlay!ng with scala
Play!ng with scala
 
Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...
 
Tools for Solving Performance Issues
Tools for Solving Performance IssuesTools for Solving Performance Issues
Tools for Solving Performance Issues
 
Thinking Beyond ORM in JPA
Thinking Beyond ORM in JPAThinking Beyond ORM in JPA
Thinking Beyond ORM in JPA
 
Web осень 2012 лекция 6
Web осень 2012 лекция 6Web осень 2012 лекция 6
Web осень 2012 лекция 6
 
How to perform debounce in react
How to perform debounce in reactHow to perform debounce in react
How to perform debounce in react
 

Viewers also liked

DOOR UK - Change Management Academy
DOOR UK - Change Management AcademyDOOR UK - Change Management Academy
DOOR UK - Change Management Academy
Craig Hiles
 
Open Data 101
Open Data 101Open Data 101
Open Data 101
Chris O'Donnell
 
Afrocubanos
AfrocubanosAfrocubanos
Afrocubanos
Carlos Alberto
 
TISD Technology Plan
TISD Technology PlanTISD Technology Plan
TISD Technology Plan
amyrou
 
Jiba Resume
Jiba ResumeJiba Resume
Acetaminophen
AcetaminophenAcetaminophen
Acetaminophen
aungkhaing1
 
02 estatutos unsa
02 estatutos unsa02 estatutos unsa
02 estatutos unsa
Percy Rodriguez
 
Unit 9 costing methods
Unit 9 costing methodsUnit 9 costing methods
Unit 9 costing methods
Ryk Ramos
 

Viewers also liked (8)

DOOR UK - Change Management Academy
DOOR UK - Change Management AcademyDOOR UK - Change Management Academy
DOOR UK - Change Management Academy
 
Open Data 101
Open Data 101Open Data 101
Open Data 101
 
Afrocubanos
AfrocubanosAfrocubanos
Afrocubanos
 
TISD Technology Plan
TISD Technology PlanTISD Technology Plan
TISD Technology Plan
 
Jiba Resume
Jiba ResumeJiba Resume
Jiba Resume
 
Acetaminophen
AcetaminophenAcetaminophen
Acetaminophen
 
02 estatutos unsa
02 estatutos unsa02 estatutos unsa
02 estatutos unsa
 
Unit 9 costing methods
Unit 9 costing methodsUnit 9 costing methods
Unit 9 costing methods
 

Similar to An ADF Special Report

Flask – Python
Flask – PythonFlask – Python
Flask – Python
Max Claus Nunes
 
Lab manual asp.net
Lab manual asp.netLab manual asp.net
Lab manual asp.net
Vivek Kumar Sinha
 
ASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin LauASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin Lau
Spiffy
 
Burn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websitesBurn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websites
Lindsay Holmwood
 
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js MicroservicesIBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
Chris Bailey
 
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...
Chester Chen
 
Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3
masahiroookubo
 
AnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFaces
Ankara JUG
 
Dive into DevOps | March, Building with Terraform, Volodymyr Tsap
Dive into DevOps | March, Building with Terraform, Volodymyr TsapDive into DevOps | March, Building with Terraform, Volodymyr Tsap
Dive into DevOps | March, Building with Terraform, Volodymyr Tsap
Provectus
 
GHC Participant Training
GHC Participant TrainingGHC Participant Training
GHC Participant Training
AidIQ
 
Sql storeprocedure
Sql storeprocedureSql storeprocedure
Sql storeprocedure
ftz 420
 
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Amazon Web Services
 
2013 Collaborate - OAUG - Presentation
2013 Collaborate - OAUG - Presentation2013 Collaborate - OAUG - Presentation
2013 Collaborate - OAUG - Presentation
Biju Thomas
 
Spring Batch in Code - simple DB to DB batch applicaiton
Spring Batch in Code - simple DB to DB batch applicaitonSpring Batch in Code - simple DB to DB batch applicaiton
Spring Batch in Code - simple DB to DB batch applicaiton
tomi vanek
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node js
Francois Zaninotto
 
Advance Sql Server Store procedure Presentation
Advance Sql Server Store procedure PresentationAdvance Sql Server Store procedure Presentation
Advance Sql Server Store procedure Presentation
Amin Uddin
 
Red Hat Agile integration Workshop Labs
Red Hat Agile integration Workshop LabsRed Hat Agile integration Workshop Labs
Red Hat Agile integration Workshop Labs
Judy Breedlove
 
I Phone On Rails
I Phone On RailsI Phone On Rails
I Phone On Rails
John Wilker
 
Step By Step Guide For Buidling Simple Struts App
Step By Step Guide For Buidling Simple Struts AppStep By Step Guide For Buidling Simple Struts App
Step By Step Guide For Buidling Simple Struts App
Syed Shahul
 
Azure Day Reloaded 2019 - ARM Template workshop
Azure Day Reloaded 2019 - ARM Template workshopAzure Day Reloaded 2019 - ARM Template workshop
Azure Day Reloaded 2019 - ARM Template workshop
Marco Obinu
 

Similar to An ADF Special Report (20)

Flask – Python
Flask – PythonFlask – Python
Flask – Python
 
Lab manual asp.net
Lab manual asp.netLab manual asp.net
Lab manual asp.net
 
ASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin LauASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin Lau
 
Burn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websitesBurn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websites
 
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js MicroservicesIBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
 
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...
Analytics Metrics delivery and ML Feature visualization: Evolution of Data Pl...
 
Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3
 
AnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFaces
 
Dive into DevOps | March, Building with Terraform, Volodymyr Tsap
Dive into DevOps | March, Building with Terraform, Volodymyr TsapDive into DevOps | March, Building with Terraform, Volodymyr Tsap
Dive into DevOps | March, Building with Terraform, Volodymyr Tsap
 
GHC Participant Training
GHC Participant TrainingGHC Participant Training
GHC Participant Training
 
Sql storeprocedure
Sql storeprocedureSql storeprocedure
Sql storeprocedure
 
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
 
2013 Collaborate - OAUG - Presentation
2013 Collaborate - OAUG - Presentation2013 Collaborate - OAUG - Presentation
2013 Collaborate - OAUG - Presentation
 
Spring Batch in Code - simple DB to DB batch applicaiton
Spring Batch in Code - simple DB to DB batch applicaitonSpring Batch in Code - simple DB to DB batch applicaiton
Spring Batch in Code - simple DB to DB batch applicaiton
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node js
 
Advance Sql Server Store procedure Presentation
Advance Sql Server Store procedure PresentationAdvance Sql Server Store procedure Presentation
Advance Sql Server Store procedure Presentation
 
Red Hat Agile integration Workshop Labs
Red Hat Agile integration Workshop LabsRed Hat Agile integration Workshop Labs
Red Hat Agile integration Workshop Labs
 
I Phone On Rails
I Phone On RailsI Phone On Rails
I Phone On Rails
 
Step By Step Guide For Buidling Simple Struts App
Step By Step Guide For Buidling Simple Struts AppStep By Step Guide For Buidling Simple Struts App
Step By Step Guide For Buidling Simple Struts App
 
Azure Day Reloaded 2019 - ARM Template workshop
Azure Day Reloaded 2019 - ARM Template workshopAzure Day Reloaded 2019 - ARM Template workshop
Azure Day Reloaded 2019 - ARM Template workshop
 

More from Luc Bors

Talk to me Goose: Going beyond your regular Chatbot
Talk to me Goose: Going beyond your regular ChatbotTalk to me Goose: Going beyond your regular Chatbot
Talk to me Goose: Going beyond your regular Chatbot
Luc Bors
 
Extending Oracle SaaS Using Oracle Cloud UX Rapid Development Kit
Extending Oracle SaaS Using Oracle Cloud UX Rapid Development KitExtending Oracle SaaS Using Oracle Cloud UX Rapid Development Kit
Extending Oracle SaaS Using Oracle Cloud UX Rapid Development Kit
Luc Bors
 
NO CODE : Or How to Extend Oracle SaaS with Oracle Visual Builder Cloud Service
NO CODE : Or How to Extend Oracle SaaS with Oracle Visual Builder Cloud ServiceNO CODE : Or How to Extend Oracle SaaS with Oracle Visual Builder Cloud Service
NO CODE : Or How to Extend Oracle SaaS with Oracle Visual Builder Cloud Service
Luc Bors
 
Real Life MAF (2.2) Oracle Open World 2015
Real Life MAF (2.2) Oracle Open World 2015Real Life MAF (2.2) Oracle Open World 2015
Real Life MAF (2.2) Oracle Open World 2015
Luc Bors
 
Real life-maf-2015-k scope-final
Real life-maf-2015-k scope-finalReal life-maf-2015-k scope-final
Real life-maf-2015-k scope-final
Luc Bors
 
Real life-maf-2015
Real life-maf-2015Real life-maf-2015
Real life-maf-2015
Luc Bors
 
ADF Essentials (KScope14)
ADF Essentials (KScope14)ADF Essentials (KScope14)
ADF Essentials (KScope14)
Luc Bors
 
Reaching out from ADF Mobile (ODTUG KScope 2014)
Reaching out from ADF Mobile (ODTUG KScope 2014)Reaching out from ADF Mobile (ODTUG KScope 2014)
Reaching out from ADF Mobile (ODTUG KScope 2014)
Luc Bors
 
OgH Data Visualization Special Part III
OgH Data Visualization Special Part IIIOgH Data Visualization Special Part III
OgH Data Visualization Special Part III
Luc Bors
 
OgH Data Visualization Special Part II
OgH Data Visualization Special Part IIOgH Data Visualization Special Part II
OgH Data Visualization Special Part II
Luc Bors
 
OgH Data Visualization Special Part I
OgH Data Visualization Special Part IOgH Data Visualization Special Part I
OgH Data Visualization Special Part I
Luc Bors
 
MAF push notifications
MAF push notificationsMAF push notifications
MAF push notifications
Luc Bors
 
Doag wysiwyg
Doag wysiwygDoag wysiwyg
Doag wysiwyg
Luc Bors
 
amis-adf-enterprise-mobility
amis-adf-enterprise-mobilityamis-adf-enterprise-mobility
amis-adf-enterprise-mobility
Luc Bors
 
Oracle day 2014-mobile-customer-case
Oracle day 2014-mobile-customer-caseOracle day 2014-mobile-customer-case
Oracle day 2014-mobile-customer-case
Luc Bors
 
Oracle MAF real life OOW.pptx
Oracle MAF real life OOW.pptxOracle MAF real life OOW.pptx
Oracle MAF real life OOW.pptx
Luc Bors
 
AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...
AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...
AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...
Luc Bors
 
ADF Mobile: 10 Things you don't get from the developers guide
ADF Mobile: 10 Things you don't get from the developers guideADF Mobile: 10 Things you don't get from the developers guide
ADF Mobile: 10 Things you don't get from the developers guide
Luc Bors
 
oow2013-adf-mo-bi-le
oow2013-adf-mo-bi-leoow2013-adf-mo-bi-le
oow2013-adf-mo-bi-le
Luc Bors
 
Goodbye Nightmare : Tops and Tricks for creating Layouts
Goodbye Nightmare : Tops and Tricks for creating LayoutsGoodbye Nightmare : Tops and Tricks for creating Layouts
Goodbye Nightmare : Tops and Tricks for creating Layouts
Luc Bors
 

More from Luc Bors (20)

Talk to me Goose: Going beyond your regular Chatbot
Talk to me Goose: Going beyond your regular ChatbotTalk to me Goose: Going beyond your regular Chatbot
Talk to me Goose: Going beyond your regular Chatbot
 
Extending Oracle SaaS Using Oracle Cloud UX Rapid Development Kit
Extending Oracle SaaS Using Oracle Cloud UX Rapid Development KitExtending Oracle SaaS Using Oracle Cloud UX Rapid Development Kit
Extending Oracle SaaS Using Oracle Cloud UX Rapid Development Kit
 
NO CODE : Or How to Extend Oracle SaaS with Oracle Visual Builder Cloud Service
NO CODE : Or How to Extend Oracle SaaS with Oracle Visual Builder Cloud ServiceNO CODE : Or How to Extend Oracle SaaS with Oracle Visual Builder Cloud Service
NO CODE : Or How to Extend Oracle SaaS with Oracle Visual Builder Cloud Service
 
Real Life MAF (2.2) Oracle Open World 2015
Real Life MAF (2.2) Oracle Open World 2015Real Life MAF (2.2) Oracle Open World 2015
Real Life MAF (2.2) Oracle Open World 2015
 
Real life-maf-2015-k scope-final
Real life-maf-2015-k scope-finalReal life-maf-2015-k scope-final
Real life-maf-2015-k scope-final
 
Real life-maf-2015
Real life-maf-2015Real life-maf-2015
Real life-maf-2015
 
ADF Essentials (KScope14)
ADF Essentials (KScope14)ADF Essentials (KScope14)
ADF Essentials (KScope14)
 
Reaching out from ADF Mobile (ODTUG KScope 2014)
Reaching out from ADF Mobile (ODTUG KScope 2014)Reaching out from ADF Mobile (ODTUG KScope 2014)
Reaching out from ADF Mobile (ODTUG KScope 2014)
 
OgH Data Visualization Special Part III
OgH Data Visualization Special Part IIIOgH Data Visualization Special Part III
OgH Data Visualization Special Part III
 
OgH Data Visualization Special Part II
OgH Data Visualization Special Part IIOgH Data Visualization Special Part II
OgH Data Visualization Special Part II
 
OgH Data Visualization Special Part I
OgH Data Visualization Special Part IOgH Data Visualization Special Part I
OgH Data Visualization Special Part I
 
MAF push notifications
MAF push notificationsMAF push notifications
MAF push notifications
 
Doag wysiwyg
Doag wysiwygDoag wysiwyg
Doag wysiwyg
 
amis-adf-enterprise-mobility
amis-adf-enterprise-mobilityamis-adf-enterprise-mobility
amis-adf-enterprise-mobility
 
Oracle day 2014-mobile-customer-case
Oracle day 2014-mobile-customer-caseOracle day 2014-mobile-customer-case
Oracle day 2014-mobile-customer-case
 
Oracle MAF real life OOW.pptx
Oracle MAF real life OOW.pptxOracle MAF real life OOW.pptx
Oracle MAF real life OOW.pptx
 
AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...
AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...
AMIS UX Event 2014: Mobile ADF; From Design To Device; The Tools that make it...
 
ADF Mobile: 10 Things you don't get from the developers guide
ADF Mobile: 10 Things you don't get from the developers guideADF Mobile: 10 Things you don't get from the developers guide
ADF Mobile: 10 Things you don't get from the developers guide
 
oow2013-adf-mo-bi-le
oow2013-adf-mo-bi-leoow2013-adf-mo-bi-le
oow2013-adf-mo-bi-le
 
Goodbye Nightmare : Tops and Tricks for creating Layouts
Goodbye Nightmare : Tops and Tricks for creating LayoutsGoodbye Nightmare : Tops and Tricks for creating Layouts
Goodbye Nightmare : Tops and Tricks for creating Layouts
 

Recently uploaded

Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
Federico Razzoli
 

Recently uploaded (20)

Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
 

An ADF Special Report

  • 1. A SPECIAL REPORT Reporting solutions for ADF Applications Luc Bors Oracle Certified ADF Implementation Specialist AMIS Services, The Netherlands Oracle ADF Specialized Partner Monday, June 25, 2012 ODTUG KScope 12 San Antonio, Texas, USA
  • 3. I USE ADF, WHAT ABOUT REPORTS ?
  • 5. CREATING ORACLE REPORTS • Example: – Employees per Department Report – Parameter P_DEPARTMENT_ID
  • 6. HOW TO CALL THE REPORT ?
  • 7. USING ORACLE REPORTS • Use Case : Invoke the report for the currently selected Department in an ADF table
  • 8. PREPARING THE CALL • Create a bean and method to invoke the report <managed-bean id="__13"> <managed-bean-name id="__14">oracleReportBean</managed-bean-name> <managed-bean-class id="__15"> com.blogspot.lucbors.reporting.view.orarep.OracleReportBean </managed-bean-class> <managed-bean-scope id="__16">request</managed-bean-scope> </managed-bean> • Provide report parameters String oraReportServerUrl = "http://192.168.2.8:8889/reports/rwservlet?"; String reportNameParam ="report="; String reportDestypeParam = "destype="; String reportPDesformatParam = "desformat="; String reportUseridParam = "userid=“;
  • 9. CONSTRUCTING THE CALL • Construct Report Server URL; Including the parameters public void runOracleReport(ActionEvent actionEvent) { String departmentParam = "p_department_id="; StringBuffer totalCallUrl = new StringBuffer(); totalCallUrl.append(getOraReportServerUrl()); totalCallUrl.append(getReportNameParam().concat("employees.rdf")+"&"); totalCallUrl.append(getReportDestypeParam().concat("cache")+"&"); totalCallUrl.append(getReportPDesformatParam().concat("html")+"&"); totalCallUrl.append(getReportUseridParam().concat("hr/hr@xe")+"&"); totalCallUrl.append(departmentParam.concat(getDepartmentId())); setOraReportUrl(totalCallUrl.toString()); } public String getDepartmentId() { DCIteratorBinding it = ADFUtils.findIterator("SalaryOverview1Iterator"); oracle.jbo.domain.Number deptId = (oracle.jbo.domain.Number)it.getCurrentRow().getAttribute("DepartmentId"); return deptId.toString(); }
  • 10. CALL AND SHOW THE REPORT • Call ……… <af:commandToolbarButton text="Run Oracle Report" id="cb3“ actionListener="#{oracleReportBean.runOracleReport}"> <af:showPopupBehavior popupId=":::showOraRpt" triggerType="click"/> </af:commandToolbarButton> • ……. And Show the report <af:popup id="showOraRpt" animate="default"> <af:panelWindow id="pw3" modal="true" title="External Internet Info in a Modal Popup" contentHeight="625" contentWidth="700" resize="on"> <af:inlineFrame id="if3" shortDesc="This is an inline frame" source="#{oracleReportBean.oraReportUrl}" styleClass="AFStretchWidth" inlineStyle="height:600px;"> </af:inlineFrame> </af:panelWindow>
  • 11. SHOWING THE ORACLE REPORT • ….. and the result…..
  • 12. CAN I USE FMW REPORTING TOOLS ?
  • 17. PREPARING THE CALL • Create a bean and method to invoke the report <managed-bean id="__13"> <managed-bean-name id="__14">biPublisherBean</managed-bean-name> <managed-bean-class id="__15"> com.blogspot.lucbors.reporting.view.orarep.BiPublisherBean </managed-bean-class> <managed-bean-scope id="__16">request</managed-bean-scope> </managed-bean> • Provide report parameters private static final String RAPPORT_SERVER_HOST_PARAM = "http://192.168.56.101:7001/xmlpserver/~weblogic/"; private static final String RAPPORT_GENERAL_USER_PARAM = "<UN>"; private static final String RAPPORT_GENERAL_PASSWORD_PARAM = "<PW>";
  • 18. CONSTRUCTING THE CALL • Construct Report Server URL; Including the parameters public void startBiReport(ActionEvent event) { StringBuffer reportUrl = new StringBuffer(); reportUrl.append(getRapportServerHost()); reportUrl.append("/"+"EmployeesPerDepartment"+".xdo"); // add standard params addStandardParams(rapport,reportUrl); // add report-specific params addReportParams(rapport, reportUrl); sLog.fine("Rapport start URL: "+reportUrl); setReportUrl(reportUrl.toString()); ……..
  • 19. CALL AND SHOW THE REPORT • Call ……… <af:commandToolbarButton text="Run BI Publisher Report" id="cb3“ actionListener="#{oracleReportBean.startBiReport}"> <af:showPopupBehavior popupId=":::showBiRpt" triggerType="click"/> </af:commandToolbarButton> • ……. And Show the report <af:popup id="showBiRpt" animate="default"> <af:panelWindow id="pw3" modal="true" title="External Internet Info in a Modal Popup" contentHeight="625" contentWidth="700" resize="on"> <af:inlineFrame id="if3" shortDesc="This is an inline frame" source="#{<…BI report source>}" styleClass="AFStretchWidth" inlineStyle="height:600px;"> </af:inlineFrame> </af:panelWindow>
  • 20. SHOWING THE BI PUBLISHER REPORT
  • 21. ARE THERE OPEN SOURCE TOOLS ?
  • 23. JASPER REPORTS - IREPORT
  • 25. CREATING JASPER REPORTS • Jasper  iReport as design tool – Select a report template – Create a new report based on a query – Add parameters – Test report in iReport
  • 26. PREPARING JDEVELOPER AND ADF • Make sure to add Jasper libraries to ADF project
  • 27. PREPARING THE CALL • Create a bean and method to invoke the report <managed-bean id="__13"> <managed-bean-name id="__14">jasperReportBean</managed-bean-name> <managed-bean-class id="__15"> com.blogspot.lucbors.reporting.view.orarep.JasperReportBean </managed-bean-class> <managed-bean-scope id="__16">request</managed-bean-scope> </managed-bean>
  • 28. CALLING THE JASPER REPORT • How to invoke the Jasper report ? – Get a handle to your template InputStream is = new FileInputStream ( new File("C:/ReportingTools/myReports/MyFirstReport.jrxml")); – Define the file that will hold the generated report OutputStream os=new FileOutputStream( new File(this.filepath+this.reportname)); – Optionally fill parameters Map parameters = new HashMap(); parameters.put("P_DEPARTMENT_ID", getDepartmentId());
  • 29. CALL AND SHOW THE REPORT • Call ……… <af:commandToolbarButton text="Run Oracle Report" id="cb3“ actionListener="#{oracleReportBean.runOracleReport}"> <af:showPopupBehavior popupId=":::showOraRpt" triggerType="click"/> </af:commandToolbarButton>
  • 30. JASPER REPORTING • Invoke the report ……… JasperDesign jasperDesign = JRXmlLoader.load(is); JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn); JasperExportManager.exportReportToPdfStream(jasperPrint, os); • ……. And Show the result JasperViewer.viewReport(jasperPrint, false);
  • 31. JASPER REPORTING • ….. And the result….
  • 32. I DONT WANT MY OWN REPORTSERVER
  • 36. UPLOAD TO THE CLOUD
  • 37. CALLING THE CLOUD FROM ADF • Setup a connection • Build the request • Write request to outputstream
  • 38. PREPARING THE CALL • Create a bean and method to invoke the report <managed-bean id="__13"> <managed-bean-name id="__14">docmosisReportBean</managed-bean-name> <managed-bean-class id="__15"> com.blogspot.lucbors.reporting.view.docmosis.DocmosisReportBean </managed-bean-class> <managed-bean-scope id="__16">request</managed-bean-scope> </managed-bean> • Provide report parameters private static final String DWS_RENDER_URL = "https://dws.docmosis.com/services/rs/render"; private static final String ACCESS_KEY = “<your acces key>"; private static final String OUTPUT_FORMAT = "pdf"; private static final String OUTPUT_FILE = "myWelcome." + OUTPUT_FORMAT;
  • 39. CONSTRUCTING THE CALL • Construct Report Server URL; Including the parameters private static String buildRequestForEmployee() { // the name of the template in our cloud account we want to use String templateName = "/KScopeDemoTemplate.doc"; StringBuilder sb = new StringBuilder(); // Start building the instruction sb.append("<?xml version="1.0" encoding="utf-8"?>"); sb.append("<render n"); sb.append("accessKey="").append(ACCESS_KEY).append("" "); sb.append("templateName="").append(templateName).append("" "); sb.append("outputName="").append(OUTPUT_FILE).append("">n");
  • 40. CONSTRUCTING THE CALL • Adding the Data // now add the data specifically for this template sb.append("<datan"); sb.append(" date="").append(new Date()).append(""n"); sb.append(" title="Creating documents with Docmosis from ADF ">n"); String[] messages = { "Reporting from ADF Applications - What are the Options? John Flack", "ADF Data Visualization Tips & Techniques. Chris Muir", "How to Bring Common UI Patterns to ADF. Luc Bors", "and many many more......"}; for (int i = 0; i < messages.length; i++) { sb.append("<suggestions msg="").append(messages[i]).append(""/>n"); } sb.append("</data>n"); sb.append("</render>n");
  • 41. CALL AND SHOW THE REPORT • Call ……… <af:commandToolbarButton text="Run docmosis Report" id="cb5" actionListener="#{docmosisReportBean.runDocmosisReport}"> <af:showPopupBehavior popupId=":::showDocmosisReport" triggerType="action"/> </af:commandToolbarButton> • ……. And Show the report <af:popup id="showDocmosisReport" animate="default"> <af:panelWindow id="pw2" modal="true" title="The report" contentHeight="625" contentWidth="700" resize="on"> <af:inlineFrame id="if2" shortDesc="This is an inline frame“ source="/showpdfservlet?name=#{docmosisReportBean.docmosisreportname}" styleClass="AFStretchWidth" inlineStyle="height:600px;"></af:inlineFrame> </af:panelWindow> </af:popup>
  • 46. ARE THERE OTHER ALTERNATIVES?
  • 47. MORE REPORTING IN THE FMW TRACK
  • 48. RESOURCES • OTN – Reports : http://www.oracle.com/technetwork/middleware/reports/overvie w/index.html • OTN – BI Publisher : http://www.oracle.com/technetwork/middleware/bi- publisher/overview/index.html • Jasper : http://jasperforge.org/projects/jasperreports • Docmosis : https://www.docmosis.com/ • OS Reporting overview : http://java-source.net/open- source/charting-and-reporting • AMIS tech blog : http://technology.amis.nl • ADF-EMG site : http://groups.google.com/group/adf- methodology/web/adf-reporting?pli=1
  • 49. A SPECIAL REPORT Reporting solutions for ADF Applications Luc Bors Oracle Certified ADF Implementation Specialist AMIS Services, The Netherlands Oracle ADF Specialized Partner Monday, June 25, 2012 ODTUG KScope 12 San Antonio, Texas, USA

Editor's Notes

  1. Lucas JellemaBIRTrapporten (open source Java reporting, inclusief PDF, MS Word) integreren in ADFapplicaties? Zie: - JSF4BIRT in an ADF Application (http://it.toolbox.com/blogs/jjflash-oracle-journal/…)- An ADF Faces Page with a BIRT Report (http://it.toolbox.com/blogs/jjflash-oracle-journal/…)- ADF and BIRT- Postscript (http://it.toolbox.com/blogs/jjflash-oracle-journal/…)JSF4BIRT in an ADF Application http://it.toolbox.com/blogs/jjflash-oracle-journal/jsf4birt-in-an-adf-appli… I&apos;ve been evaluating reporting tools for our ADF applications for more than a year, on and off. Reporting for the first one I wrote is done with a PL/SQL Web module that I wrote as a PL/SQL Server Page.