SlideShare a Scribd company logo
1 of 23
Rajesh Raheja
Development Director
Oracle Workflow & Messaging
Oracle Corporation
ATG Standalone
Continuous Integration
Quality Build Process
An important part of any software development
process is getting reliable builds of the software.

- Martin Fowler, Chief Scientist, ThoughtWorks
What is Continuous Integration?

 A Fully Automated, Reproducible Build Process
 Runs many times a day – as often as needed
 Available to run on-demand in a single command
 Built from scratch from source control (ARCS)
 Includes Unit Testing and Code Coverage
 Automated Source Code Review and Quality Analysis
 Deliverables include latest distribution e.g. jar, ear
 Successful compilation AND testing I.e. not a build
  “attempt”, but a build that works!
The Benefits
 Reduced Time to Market
    –   Cuts testing time due to earlier detection of potential issues
    –   Significantly reduces manual source code review efforts
 Improved Product Quality
    –   Reduces bugs by uncovering integration issues early on
    –   Continuous testing enforces code quality
    –   Source code analysis enforces best programming practices
    –   Improved Reliability, Maintainability, Testability, Reusability
 Increased Developer Productivity
    –   Automated source analysis reduces manual review efforts
    –   Developers can focus on what needs to be fixed
    –   Developers can gain unique perspective on best
        programming practices and industry-standard patterns
The Build Process

Setup
Compile
Test
Code Coverage
Source Code Analysis
Publish Reports and Javadoc
Build Process: Setup

 Checks Build Mode and JDK
    –   Supported Build Modes are iAS and DB
    –   Supported JDK: 1.1.8 (may drop), 1.3 and 1.4
    –   Classpath uses iAS 1.0.2.2 or 9.0.4 home based on JDK
 Cleans build area and creates directory structure
 Copies any dependent FND libraries e.g. fndctx.jar
 Checks out latest source code from RCS
 Ignores file patterns specified in build.excludes
 Can check out for a given release label if needed
 Performs iAS or DB specific tasks
    –   E.g. Copy the appropriate Workflow Context factories
Build Process: Compile

 Instruments source code for code coverage
     –   Original source code backed up to ./prof-bak
     –   Generates BasicBlocks file containing source information
 Compiles all source code
     –   For Workflow, following modules are compiled:
          Workflow Engine
          Workflow Configuration Assistant
          XML Gateway Engine
          XML Gateway Message Designer
 Build all the jar, war and ear files
     –   Delivers a single workflow.jar along with other files
Build Process: Test

 Checks out test source code into build area
    –   Unit tests copied from $psa/java/ut
    –   Test data and RTs copied from $psa/test
 Compiles the test source code
 Sets the environment needed for testing
    –   Sets the required environment variables
    –   Puts data directory in the classpath for loading test data
    –   Puts junit.jar in the classpath
 Runs all (or specified) Unit Tests
 Run any additional RTs (manually if needed)
 Produces the profile files for code coverage
Build Process: Code Coverage

 Reads all generated profile files
    –   Initial profile files automatically generated from Unit Tests
    –   More profile files can be generated by running RTs
 Generates code coverage by module
    –   Compares profile against BasicBlocks generated file
    –   Groups by modules defined in the ProfileGroups file
    –   Ignores all blocks mentioned in Infeasible file
 Generates marked up source html files
    –   Indicating non-covered and heavy-hit blocks
 Restores all original source code from backup
    –   Unless of course you need to re-run after RTs
Build Process: Source Analysis

JavaNCSS
  –   Analyzes Complexity of Source Code
       Max Non-Commented Source Statements
       Max Cyclomatic Complexity (loops, conditions)
       Max Classes per Package and Methods Per
        Class
       Min Javadoc Per Method
  –   Helps Refactor code to reduce complexity
       Improve Maintainability
       Reduce bugs
Build Process: Source Analysis

 JDepend
    –   Provides Dependency and Stability Inference
    –   Analyzes Cyclical References between classes
    –   Helps in Refactoring code for Maintainability
 GSCC
    –   Runs GSCC checks per ARU guidelines
    –   Some GSCC checks not applicable in Standalone mode
 Memory Leak Checker (ATG Utility)
    –   Identifies potential memory leaks by smart parsing
    –   Very basic, may not be applicable for J2EE code
Build Process: Source Analysis
Format
  –   Formats source code to industry best-practice
  –   Helps normalize code by various developers
  –   Enforce corporate standards e.g. Oracle headers
      boilerplate in every file with the correct year e.g.
      Copyright © 2003 Oracle. All rights reserved.
  –   Can auto-generate Javadoc comments
  –   Saves developer time and effort
  –   Download Jalopy for JDeveloper and use profile
      file from http://www-apps/wf/wfjalopy.xml
Build Process: Source Analysis
 CheckStyle
    –   Checks conformance to industry best-practices
    –   Significantly reduces developer time and effort for manual,
        tedious code review
    –   Helps learn industry standard best programming practices
    –   Helps in Reusability and Maintainability
    –   Most non-compliances can be fixed by Jalopy
 DocCheck
    –   Checks for non-compliance of Javadoc standards
    –   Checks missing comments at various levels, saving time
    –   Suggests the comments for self-evident methods
    –   Provides suggestions that can be cut-n-pasted
    –   Helps in Maintainability
Build Process: Publish Reports

 Generates Javadoc with a PUBLIC scope
 Publishes to public web server
    –   Build Log Files and Test Outputs of FNDLOG
    –   JUnit Results
    –   Code Coverage Analysis
    –   Javadoc and DocCheck Reports
    –   GSCC and MemLeakChecker Output
    –   JavaNCSS and JDepend Reports
    –   Checkstyle Analysis
 Notifies Recipients by Email of Successful Build
 Master build page updated with build information
Build Progress
   Metric                                          WF2.6*              WF3.0**
   Lines of Code (w/o comments)                     53,046               8,294
   Methods                                          4,832                1,093
   Classes                                            525                  96
   Javadoc                                           1,786                 756
   Unit Tests                                         132                  130
   Unit Test Success Rate                          96.97%               96.92%
   Code Coverage (Unit Tests)                      19.17%               48.38%
                          * Applies to Standalone Java Build WF26.185 as of 08.07.2003
                         ** Applies to Standalone Java Build WF30.12 as of 07.25.2003

  Next Steps: OAM and Diagnostics soon to be enabled for continuous builds.
Build Targets
 Clean Build
    –   Source modifications checked every hour on weekdays
    –   5 minute “quiet period” before starting build
    –   Removes all derived / generated objects
    –   Checks out and compiles all source code
    –   Creates distribution executables
 Full Build (Every 4 Clean Builds)
    –   Performs Clean Build as above
    –   Compiles and Runs All Unit Tests
 Master Build (Every 8 Clean Builds)
    –   Performs Full Build as above
    –   Runs Code Coverage and Source Code Analysis
    –   Publishes Reports and Javadoc to Web Server
    –   Purges log files older than 7 days
Build Modes
 Continuous Build (Official Build Label)
    –   No manual intervention required
    –   Executed From: /wfdev/wf/tools/buildtool/wf26
    –   Outputs to /wfdev/wf/buildstage/wf26
 On-Demand Build (Build Label “X”)
    –   Copy build files to any local directory (one time) and run
    –   Run buildnow buildmaster.xml <targets>
    –   Outputs to /tmp/wf/buildstage/wf26
 Configuration Files
    –   buildmaster.*, config.xml      – DO NOT MODIFY
    –   build.xml, build.properties – Modify as needed
    –   Better still, pass in properties as –D parameters at runtime
Workflow Development Tools

                             GSCC            CheckStyle
               JUnit                                        Jalopy
                       Memory Leak Checker




                                                          JavaNCSS




Ora*Tst
  FSProf                         Cut-N-Paste Detector     JDepend
                    Javadoc
    HTTP*Tst       DocCheck
    ARCS*Web
D E M O N S T R A T I O N


Oracle Workflow
 Build Process
Q
&
QUESTIONS


 A
 ANSWERS
Oracle Workflow Continuous Integration

More Related Content

What's hot

My Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12cMy Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12cNelson Calero
 
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...Inflectra
 
Oracle fusion middleware training with placements and certification
Oracle fusion middleware training with placements and certificationOracle fusion middleware training with placements and certification
Oracle fusion middleware training with placements and certificationmagnificsmily
 
UPGRADING FROM ORACLE ENTERPRISE MANAGER 10G TO CLOUD CONTROL 12C WITH ZERO D...
UPGRADING FROM ORACLE ENTERPRISE MANAGER 10G TO CLOUD CONTROL 12C WITH ZERO D...UPGRADING FROM ORACLE ENTERPRISE MANAGER 10G TO CLOUD CONTROL 12C WITH ZERO D...
UPGRADING FROM ORACLE ENTERPRISE MANAGER 10G TO CLOUD CONTROL 12C WITH ZERO D...Leighton Nelson
 
Evolving from Automated to Continous Testing for Agile and DevOps
Evolving from Automated to Continous Testing for Agile and DevOpsEvolving from Automated to Continous Testing for Agile and DevOps
Evolving from Automated to Continous Testing for Agile and DevOpsParasoft
 
Continuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentContinuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentVladimir Bakhov
 
Zero Downtime for Oracle E-Business Suite on Oracle Exalogic
Zero Downtime for Oracle E-Business Suite on Oracle ExalogicZero Downtime for Oracle E-Business Suite on Oracle Exalogic
Zero Downtime for Oracle E-Business Suite on Oracle ExalogicPaulo Fagundes
 
Lessons learned validating 60,000 pages of api documentation
Lessons learned validating 60,000 pages of api documentationLessons learned validating 60,000 pages of api documentation
Lessons learned validating 60,000 pages of api documentationBob Binder
 
To study pcms pegasus erp cargo management system-release-7 from architectu...
To study pcms   pegasus erp cargo management system-release-7 from architectu...To study pcms   pegasus erp cargo management system-release-7 from architectu...
To study pcms pegasus erp cargo management system-release-7 from architectu...Shahzad
 
Strategies for agile software test automation
Strategies for agile software test automationStrategies for agile software test automation
Strategies for agile software test automationEliane Collins
 
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlobHow to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlobBob Binder
 
Hovitaga OpenSQL Editor - Product flyer
Hovitaga OpenSQL Editor - Product flyerHovitaga OpenSQL Editor - Product flyer
Hovitaga OpenSQL Editor - Product flyerHovitaga Kft.
 
Xray for Jira - How to automate your QA process
Xray for Jira - How to automate your QA processXray for Jira - How to automate your QA process
Xray for Jira - How to automate your QA processXpand IT
 
2016_Resume_Brian_Burrington
2016_Resume_Brian_Burrington2016_Resume_Brian_Burrington
2016_Resume_Brian_BurringtonBrian Burrington
 
SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612SOASTA
 
OOW15 - Planning Your Upgrade to Oracle E-Business Suite 12.2
OOW15 - Planning Your Upgrade to Oracle E-Business Suite 12.2OOW15 - Planning Your Upgrade to Oracle E-Business Suite 12.2
OOW15 - Planning Your Upgrade to Oracle E-Business Suite 12.2vasuballa
 
Database continuous integration, unit test and functional test
Database continuous integration, unit test and functional testDatabase continuous integration, unit test and functional test
Database continuous integration, unit test and functional testHarry Zheng
 

What's hot (18)

My Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12cMy Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12c
 
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...
 
Oracle fusion middleware training with placements and certification
Oracle fusion middleware training with placements and certificationOracle fusion middleware training with placements and certification
Oracle fusion middleware training with placements and certification
 
UPGRADING FROM ORACLE ENTERPRISE MANAGER 10G TO CLOUD CONTROL 12C WITH ZERO D...
UPGRADING FROM ORACLE ENTERPRISE MANAGER 10G TO CLOUD CONTROL 12C WITH ZERO D...UPGRADING FROM ORACLE ENTERPRISE MANAGER 10G TO CLOUD CONTROL 12C WITH ZERO D...
UPGRADING FROM ORACLE ENTERPRISE MANAGER 10G TO CLOUD CONTROL 12C WITH ZERO D...
 
Front Cover:
Front Cover:Front Cover:
Front Cover:
 
Evolving from Automated to Continous Testing for Agile and DevOps
Evolving from Automated to Continous Testing for Agile and DevOpsEvolving from Automated to Continous Testing for Agile and DevOps
Evolving from Automated to Continous Testing for Agile and DevOps
 
Continuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentContinuous Integration for Oracle Database Development
Continuous Integration for Oracle Database Development
 
Zero Downtime for Oracle E-Business Suite on Oracle Exalogic
Zero Downtime for Oracle E-Business Suite on Oracle ExalogicZero Downtime for Oracle E-Business Suite on Oracle Exalogic
Zero Downtime for Oracle E-Business Suite on Oracle Exalogic
 
Lessons learned validating 60,000 pages of api documentation
Lessons learned validating 60,000 pages of api documentationLessons learned validating 60,000 pages of api documentation
Lessons learned validating 60,000 pages of api documentation
 
To study pcms pegasus erp cargo management system-release-7 from architectu...
To study pcms   pegasus erp cargo management system-release-7 from architectu...To study pcms   pegasus erp cargo management system-release-7 from architectu...
To study pcms pegasus erp cargo management system-release-7 from architectu...
 
Strategies for agile software test automation
Strategies for agile software test automationStrategies for agile software test automation
Strategies for agile software test automation
 
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlobHow to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
 
Hovitaga OpenSQL Editor - Product flyer
Hovitaga OpenSQL Editor - Product flyerHovitaga OpenSQL Editor - Product flyer
Hovitaga OpenSQL Editor - Product flyer
 
Xray for Jira - How to automate your QA process
Xray for Jira - How to automate your QA processXray for Jira - How to automate your QA process
Xray for Jira - How to automate your QA process
 
2016_Resume_Brian_Burrington
2016_Resume_Brian_Burrington2016_Resume_Brian_Burrington
2016_Resume_Brian_Burrington
 
SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612
 
OOW15 - Planning Your Upgrade to Oracle E-Business Suite 12.2
OOW15 - Planning Your Upgrade to Oracle E-Business Suite 12.2OOW15 - Planning Your Upgrade to Oracle E-Business Suite 12.2
OOW15 - Planning Your Upgrade to Oracle E-Business Suite 12.2
 
Database continuous integration, unit test and functional test
Database continuous integration, unit test and functional testDatabase continuous integration, unit test and functional test
Database continuous integration, unit test and functional test
 

Similar to Oracle Workflow Continuous Integration

Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practicesCode Mastery
 
Into The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsInto The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsOrtus Solutions, Corp
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpikeos890
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introductionvstorm83
 
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...DataStax
 
Effective Testing in DSE
Effective Testing in DSEEffective Testing in DSE
Effective Testing in DSEpedjak
 
IntelliJ IDEA Architecture and Performance
IntelliJ IDEA Architecture and PerformanceIntelliJ IDEA Architecture and Performance
IntelliJ IDEA Architecture and Performanceintelliyole
 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone CivettaCocoaHeads France
 
Groovy In the Cloud
Groovy In the CloudGroovy In the Cloud
Groovy In the CloudJim Driscoll
 
Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScriptRob Scaduto
 
ContextualContinuous Profilng
ContextualContinuous ProfilngContextualContinuous Profilng
ContextualContinuous ProfilngJaroslav Bachorik
 
Build, logging, and unit test tools
Build, logging, and unit test toolsBuild, logging, and unit test tools
Build, logging, and unit test toolsAllan Huang
 
One integrated platform for all activities,from engineering to production
One integrated platform for all activities,from engineering to productionOne integrated platform for all activities,from engineering to production
One integrated platform for all activities,from engineering to productionS Jebaraj
 
The_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_CouldThe_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_CouldShelley Lambert
 
Illia shestakov - The Future of Java JDK #9
Illia shestakov - The Future of Java JDK #9Illia shestakov - The Future of Java JDK #9
Illia shestakov - The Future of Java JDK #9Anna Shymchenko
 
Performance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle CoherencePerformance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle Coherencearagozin
 
ASP.NET MVC Workshop for Women in Technology
ASP.NET MVC Workshop for Women in TechnologyASP.NET MVC Workshop for Women in Technology
ASP.NET MVC Workshop for Women in TechnologyMałgorzata Borzęcka
 
Play framework : A Walkthrough
Play framework : A WalkthroughPlay framework : A Walkthrough
Play framework : A Walkthroughmitesh_sharma
 

Similar to Oracle Workflow Continuous Integration (20)

Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
 
Into The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsInto The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applications
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpike
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
 
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
 
Effective Testing in DSE
Effective Testing in DSEEffective Testing in DSE
Effective Testing in DSE
 
IntelliJ IDEA Architecture and Performance
IntelliJ IDEA Architecture and PerformanceIntelliJ IDEA Architecture and Performance
IntelliJ IDEA Architecture and Performance
 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone Civetta
 
Groovy In the Cloud
Groovy In the CloudGroovy In the Cloud
Groovy In the Cloud
 
Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScript
 
ContextualContinuous Profilng
ContextualContinuous ProfilngContextualContinuous Profilng
ContextualContinuous Profilng
 
Build, logging, and unit test tools
Build, logging, and unit test toolsBuild, logging, and unit test tools
Build, logging, and unit test tools
 
One integrated platform for all activities,from engineering to production
One integrated platform for all activities,from engineering to productionOne integrated platform for all activities,from engineering to production
One integrated platform for all activities,from engineering to production
 
The_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_CouldThe_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_Could
 
Illia shestakov - The Future of Java JDK #9
Illia shestakov - The Future of Java JDK #9Illia shestakov - The Future of Java JDK #9
Illia shestakov - The Future of Java JDK #9
 
Performance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle CoherencePerformance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle Coherence
 
ASP.NET MVC Workshop for Women in Technology
ASP.NET MVC Workshop for Women in TechnologyASP.NET MVC Workshop for Women in Technology
ASP.NET MVC Workshop for Women in Technology
 
10071756.ppt
10071756.ppt10071756.ppt
10071756.ppt
 
Play framework : A Walkthrough
Play framework : A WalkthroughPlay framework : A Walkthrough
Play framework : A Walkthrough
 

More from Rajesh Raheja

What Product Leaders need to know about DevOps
What Product Leaders need to know about DevOpsWhat Product Leaders need to know about DevOps
What Product Leaders need to know about DevOpsRajesh Raheja
 
The Role of an Architect
The Role of an ArchitectThe Role of an Architect
The Role of an ArchitectRajesh Raheja
 
OOW 2012: Integrate Cloud Applications with Oracle SOA Suite
OOW 2012: Integrate Cloud Applications with Oracle SOA SuiteOOW 2012: Integrate Cloud Applications with Oracle SOA Suite
OOW 2012: Integrate Cloud Applications with Oracle SOA SuiteRajesh Raheja
 
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)Rajesh Raheja
 
Oracle OpenWorld 2010 Practical Insights on Using AIA
Oracle OpenWorld 2010 Practical Insights on Using AIAOracle OpenWorld 2010 Practical Insights on Using AIA
Oracle OpenWorld 2010 Practical Insights on Using AIARajesh Raheja
 
Oracle OpenWorld 2009 AIA Best Practices
Oracle OpenWorld 2009 AIA Best PracticesOracle OpenWorld 2009 AIA Best Practices
Oracle OpenWorld 2009 AIA Best PracticesRajesh Raheja
 
WDSOA'05 Whitepaper: SOA and the Future of Application Development
WDSOA'05 Whitepaper: SOA and the Future of Application DevelopmentWDSOA'05 Whitepaper: SOA and the Future of Application Development
WDSOA'05 Whitepaper: SOA and the Future of Application DevelopmentRajesh Raheja
 
OracleWorld 2002 Whitepaper Web Services in E-Business Suite
OracleWorld 2002 Whitepaper Web Services in E-Business SuiteOracleWorld 2002 Whitepaper Web Services in E-Business Suite
OracleWorld 2002 Whitepaper Web Services in E-Business SuiteRajesh Raheja
 
Oracle World 2002 Leverage Web Services in E-Business Applications
Oracle World 2002 Leverage Web Services in E-Business ApplicationsOracle World 2002 Leverage Web Services in E-Business Applications
Oracle World 2002 Leverage Web Services in E-Business ApplicationsRajesh Raheja
 

More from Rajesh Raheja (9)

What Product Leaders need to know about DevOps
What Product Leaders need to know about DevOpsWhat Product Leaders need to know about DevOps
What Product Leaders need to know about DevOps
 
The Role of an Architect
The Role of an ArchitectThe Role of an Architect
The Role of an Architect
 
OOW 2012: Integrate Cloud Applications with Oracle SOA Suite
OOW 2012: Integrate Cloud Applications with Oracle SOA SuiteOOW 2012: Integrate Cloud Applications with Oracle SOA Suite
OOW 2012: Integrate Cloud Applications with Oracle SOA Suite
 
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
 
Oracle OpenWorld 2010 Practical Insights on Using AIA
Oracle OpenWorld 2010 Practical Insights on Using AIAOracle OpenWorld 2010 Practical Insights on Using AIA
Oracle OpenWorld 2010 Practical Insights on Using AIA
 
Oracle OpenWorld 2009 AIA Best Practices
Oracle OpenWorld 2009 AIA Best PracticesOracle OpenWorld 2009 AIA Best Practices
Oracle OpenWorld 2009 AIA Best Practices
 
WDSOA'05 Whitepaper: SOA and the Future of Application Development
WDSOA'05 Whitepaper: SOA and the Future of Application DevelopmentWDSOA'05 Whitepaper: SOA and the Future of Application Development
WDSOA'05 Whitepaper: SOA and the Future of Application Development
 
OracleWorld 2002 Whitepaper Web Services in E-Business Suite
OracleWorld 2002 Whitepaper Web Services in E-Business SuiteOracleWorld 2002 Whitepaper Web Services in E-Business Suite
OracleWorld 2002 Whitepaper Web Services in E-Business Suite
 
Oracle World 2002 Leverage Web Services in E-Business Applications
Oracle World 2002 Leverage Web Services in E-Business ApplicationsOracle World 2002 Leverage Web Services in E-Business Applications
Oracle World 2002 Leverage Web Services in E-Business Applications
 

Recently uploaded

The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

Oracle Workflow Continuous Integration

  • 1.
  • 2. Rajesh Raheja Development Director Oracle Workflow & Messaging Oracle Corporation
  • 4. An important part of any software development process is getting reliable builds of the software. - Martin Fowler, Chief Scientist, ThoughtWorks
  • 5. What is Continuous Integration?  A Fully Automated, Reproducible Build Process  Runs many times a day – as often as needed  Available to run on-demand in a single command  Built from scratch from source control (ARCS)  Includes Unit Testing and Code Coverage  Automated Source Code Review and Quality Analysis  Deliverables include latest distribution e.g. jar, ear  Successful compilation AND testing I.e. not a build “attempt”, but a build that works!
  • 6. The Benefits  Reduced Time to Market – Cuts testing time due to earlier detection of potential issues – Significantly reduces manual source code review efforts  Improved Product Quality – Reduces bugs by uncovering integration issues early on – Continuous testing enforces code quality – Source code analysis enforces best programming practices – Improved Reliability, Maintainability, Testability, Reusability  Increased Developer Productivity – Automated source analysis reduces manual review efforts – Developers can focus on what needs to be fixed – Developers can gain unique perspective on best programming practices and industry-standard patterns
  • 7. The Build Process Setup Compile Test Code Coverage Source Code Analysis Publish Reports and Javadoc
  • 8. Build Process: Setup  Checks Build Mode and JDK – Supported Build Modes are iAS and DB – Supported JDK: 1.1.8 (may drop), 1.3 and 1.4 – Classpath uses iAS 1.0.2.2 or 9.0.4 home based on JDK  Cleans build area and creates directory structure  Copies any dependent FND libraries e.g. fndctx.jar  Checks out latest source code from RCS  Ignores file patterns specified in build.excludes  Can check out for a given release label if needed  Performs iAS or DB specific tasks – E.g. Copy the appropriate Workflow Context factories
  • 9. Build Process: Compile  Instruments source code for code coverage – Original source code backed up to ./prof-bak – Generates BasicBlocks file containing source information  Compiles all source code – For Workflow, following modules are compiled: Workflow Engine Workflow Configuration Assistant XML Gateway Engine XML Gateway Message Designer  Build all the jar, war and ear files – Delivers a single workflow.jar along with other files
  • 10. Build Process: Test  Checks out test source code into build area – Unit tests copied from $psa/java/ut – Test data and RTs copied from $psa/test  Compiles the test source code  Sets the environment needed for testing – Sets the required environment variables – Puts data directory in the classpath for loading test data – Puts junit.jar in the classpath  Runs all (or specified) Unit Tests  Run any additional RTs (manually if needed)  Produces the profile files for code coverage
  • 11. Build Process: Code Coverage  Reads all generated profile files – Initial profile files automatically generated from Unit Tests – More profile files can be generated by running RTs  Generates code coverage by module – Compares profile against BasicBlocks generated file – Groups by modules defined in the ProfileGroups file – Ignores all blocks mentioned in Infeasible file  Generates marked up source html files – Indicating non-covered and heavy-hit blocks  Restores all original source code from backup – Unless of course you need to re-run after RTs
  • 12. Build Process: Source Analysis JavaNCSS – Analyzes Complexity of Source Code Max Non-Commented Source Statements Max Cyclomatic Complexity (loops, conditions) Max Classes per Package and Methods Per Class Min Javadoc Per Method – Helps Refactor code to reduce complexity Improve Maintainability Reduce bugs
  • 13. Build Process: Source Analysis  JDepend – Provides Dependency and Stability Inference – Analyzes Cyclical References between classes – Helps in Refactoring code for Maintainability  GSCC – Runs GSCC checks per ARU guidelines – Some GSCC checks not applicable in Standalone mode  Memory Leak Checker (ATG Utility) – Identifies potential memory leaks by smart parsing – Very basic, may not be applicable for J2EE code
  • 14. Build Process: Source Analysis Format – Formats source code to industry best-practice – Helps normalize code by various developers – Enforce corporate standards e.g. Oracle headers boilerplate in every file with the correct year e.g. Copyright © 2003 Oracle. All rights reserved. – Can auto-generate Javadoc comments – Saves developer time and effort – Download Jalopy for JDeveloper and use profile file from http://www-apps/wf/wfjalopy.xml
  • 15. Build Process: Source Analysis  CheckStyle – Checks conformance to industry best-practices – Significantly reduces developer time and effort for manual, tedious code review – Helps learn industry standard best programming practices – Helps in Reusability and Maintainability – Most non-compliances can be fixed by Jalopy  DocCheck – Checks for non-compliance of Javadoc standards – Checks missing comments at various levels, saving time – Suggests the comments for self-evident methods – Provides suggestions that can be cut-n-pasted – Helps in Maintainability
  • 16. Build Process: Publish Reports  Generates Javadoc with a PUBLIC scope  Publishes to public web server – Build Log Files and Test Outputs of FNDLOG – JUnit Results – Code Coverage Analysis – Javadoc and DocCheck Reports – GSCC and MemLeakChecker Output – JavaNCSS and JDepend Reports – Checkstyle Analysis  Notifies Recipients by Email of Successful Build  Master build page updated with build information
  • 17. Build Progress Metric WF2.6* WF3.0** Lines of Code (w/o comments) 53,046 8,294 Methods 4,832 1,093 Classes 525 96 Javadoc 1,786 756 Unit Tests 132 130 Unit Test Success Rate 96.97% 96.92% Code Coverage (Unit Tests) 19.17% 48.38% * Applies to Standalone Java Build WF26.185 as of 08.07.2003 ** Applies to Standalone Java Build WF30.12 as of 07.25.2003 Next Steps: OAM and Diagnostics soon to be enabled for continuous builds.
  • 18. Build Targets  Clean Build – Source modifications checked every hour on weekdays – 5 minute “quiet period” before starting build – Removes all derived / generated objects – Checks out and compiles all source code – Creates distribution executables  Full Build (Every 4 Clean Builds) – Performs Clean Build as above – Compiles and Runs All Unit Tests  Master Build (Every 8 Clean Builds) – Performs Full Build as above – Runs Code Coverage and Source Code Analysis – Publishes Reports and Javadoc to Web Server – Purges log files older than 7 days
  • 19. Build Modes  Continuous Build (Official Build Label) – No manual intervention required – Executed From: /wfdev/wf/tools/buildtool/wf26 – Outputs to /wfdev/wf/buildstage/wf26  On-Demand Build (Build Label “X”) – Copy build files to any local directory (one time) and run – Run buildnow buildmaster.xml <targets> – Outputs to /tmp/wf/buildstage/wf26  Configuration Files – buildmaster.*, config.xml – DO NOT MODIFY – build.xml, build.properties – Modify as needed – Better still, pass in properties as –D parameters at runtime
  • 20. Workflow Development Tools GSCC CheckStyle JUnit Jalopy Memory Leak Checker JavaNCSS Ora*Tst FSProf Cut-N-Paste Detector JDepend Javadoc HTTP*Tst DocCheck ARCS*Web
  • 21. D E M O N S T R A T I O N Oracle Workflow Build Process

Editor's Notes

  1. 58 26 24
  2. 58 26 24