SlideShare a Scribd company logo
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/12c
Nelson 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
 
Front Cover:
Front Cover:Front Cover:
Front Cover:
Jeff Smith
 
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
Parasoft
 
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 Exalogic
Paulo 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 documentation
Bob 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 automation
Eliane 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 BackBlob
Bob Binder
 
Hovitaga OpenSQL Editor - Product flyer
Hovitaga OpenSQL Editor - Product flyerHovitaga OpenSQL Editor - Product flyer
Hovitaga OpenSQL Editor - Product flyer
Hovitaga 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 process
Xpand 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.2
vasuballa
 
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
Harry 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 applications
Ortus Solutions, Corp
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpikeos890
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
François Camus
 
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 DSE
pedjak
 
IntelliJ IDEA Architecture and Performance
IntelliJ IDEA Architecture and PerformanceIntelliJ IDEA Architecture and Performance
IntelliJ IDEA Architecture and Performance
intelliyole
 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone Civetta
CocoaHeads France
 
Groovy In the Cloud
Groovy In the CloudGroovy In the Cloud
Groovy In the Cloud
Jim Driscoll
 
Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScript
Rob Scaduto
 
ContextualContinuous Profilng
ContextualContinuous ProfilngContextualContinuous Profilng
ContextualContinuous Profilng
Jaroslav Bachorik
 
Build, logging, and unit test tools
Build, logging, and unit test toolsBuild, logging, and unit test tools
Build, logging, and unit test tools
Allan 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 production
S Jebaraj
 
The_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_CouldThe_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_Could
Shelley 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 #9
Anna 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 Coherence
aragozin
 
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
Małgorzata Borzęcka
 
10071756.ppt
10071756.ppt10071756.ppt
10071756.ppt
Rohit846825
 
Play framework : A Walkthrough
Play framework : A WalkthroughPlay framework : A Walkthrough
Play framework : A Walkthrough
mitesh_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 DevOps
Rajesh Raheja
 
The Role of an Architect
The Role of an ArchitectThe Role of an Architect
The Role of an Architect
Rajesh 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 Suite
Rajesh 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 AIA
Rajesh Raheja
 
Oracle OpenWorld 2009 AIA Best Practices
Oracle OpenWorld 2009 AIA Best PracticesOracle OpenWorld 2009 AIA Best Practices
Oracle OpenWorld 2009 AIA Best Practices
Rajesh 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 Development
Rajesh 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 Suite
Rajesh 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 Applications
Rajesh 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

Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
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
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 

Recently uploaded (20)

Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
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
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 

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