SlideShare a Scribd company logo
1 of 57
BATCHING AND
JAVA EE
Ryan Cuprak
What is Batch Processing?
Batch jobs are typically:
• Bulk-oriented
• Non-interactive
• Potentially compute intensive
• May require parallel execution
• Maybe invoked, ad hoc, scheduled, on-demand etc.
Batching Examples
• Monthly reports/statements
• Daily data cleanup
• One-time data migrations
• Data synchronization
• Data analysis
• Portfolio rebalancing
Introducing Java EE Batching
• Introduced in Java EE 7
• JSR 352 - https://jcp.org/en/jsr/detail?id=352
• Reference implementation:
https://github.com/WASdev/standards.jsr352.jbatch
• Batch Framework:
• Batch container for execution of jobs
• XML Job Specification Language
• Batch annotations and interfaces
• Supporting classes and interfaces for interacting with the
container
• Depends on CDI
Java EE Batching Overview
JobOperator Job Step
JobRepository
ItemReader
ItemProcessor
ItemWriter
1 *
1
1
1 1
1
1
Java EE Batching Overview
JobInstance
Job
JobExecution
*
*
EndOfDayJob
EndOfDayJob for 9/1/2016
First attempt at EndOfDay
job for 9/1/2016
Java EE Batching Features
• Fault-tolerant – checkpoints and job persistence
• Transactions - chunks execute within a JTA transaction
• Listeners – notification of job status/completion/etc.
• Resource management – limits concurrent jobs
• Starting/stopping/restarting – job control API
Java EE Batching Deployment
WAR EAR JAR
Deploy batch jobs in:
Manage jobs – split application into modules
Server B
app.war
End of Day
Job
Cleanup Job
Server C
app2.war
Analytics Job
Server A
frontend.war
Batchlet
Exit Codes
Code Description
STARTING Job has been submitted to runtime.
STARTED Batch job has started executing.
STOPPING Job termination has been requested.
STOPPED Job has been stopped.
FAILED Job has thrown an error or failured triggered by
<failure>
COMPLETED Job has completed normally.
ABANDONDED Job cannot be restarted
Basic Layout
CDI Configuration
Job Configuration
Batchlet
Job Configuration
META-INF/batch-jobs/<job-name>.xml
Batch Runtime
Batchlet with Termination
Jobs should implement and
terminate when requested!
Batching & Resources
Concurrent Resources
IDs and Names
instanceId
• ID represents an instance of a job.
• Created when JobOperator start method invoked.
executionId
• ID that represents the next attempt to run a particular job
instance.
• Created when a job is started/restarted.
• Only one executionId for a job can be started at a time
stepExecutionId
• ID for an attempt to execute a particular step in a job
jobName
• name of the job from XML (actually id) <job id=“”>
jobXMLName
• name of the config file in META-INF/batch-jobs
JobInstance vs. JobExecution
JobInstance
JobExecution
1
*
• BatchStatus
• createTime
• endTime
• executionID
• exitStatus
• jobName
• jobParameters,
lastUpdateTime
• startTime
• instanceId
• jobName
Managing Jobs
• JobOperator – interface for operating on batch jobs.
• BatchRuntime.getJobOperator()
• JobOperator:
• Provides information on current and completed jobs
• Used to start/stop/restart/abandon jobs
• Security is implementation dependent
• JobOperator interacts with JobRepository
• JobRepository
• Implementation out-side scope of JSR
• No API for deleting old jobs
• Reference implementation provides no API for cleanup!
JobOperator Methods
Type Method
void Abandon(long executionId)
JobExecution getJobExecution(long executionId)
List<JobExecution> getJobExecutions(JobInstance instance)
JobInstance getJobInstance(long executionId)
int getJobInstanceCount(String jobName)
List<JobInstance> getJobInstances(String jobName,int start, in count)
Set<String> getJobNames()
Properties getParameters(long executionId)
List<Long> getRunningExecutions(String jobName)
List<StepExecution> getStepExecutions(long jobExecutionId)
long Restart(long executionId, Properties restartParams)
long start(String jobXMLName, Properties jobParams)
void Stop(long executionId)
Listing Batch Jobs
Chunking
• Chunking is primary pattern for batch processing in JSR-
352.
• Encapsulates the ETL pattern:
• Pieces: Reader/Processor/Writer
• Reader/Processor invoked until an entire chuck of data is
processed.
• Output is written atomically
• Implementation:
• Interfaces: ItemReader/ItemWriter/ItemProcessor
• Classes: AbstractReader/AbstractWriter/AbstractProcessor
Reader Processor Writer
Chunking
Chunk Configuration
Parameter Description
checkpoint-policy Possible values: item or custom
item-count Number of items to be processed per
chunk. Default is 10.
time-limit Time in seconds before taking a
checkpoint. Default is 0 (means after
each chunk)
skip-limit Number of exceptions a step will skip
if there are configured skippable
exceptions.
retry-limit Number of times a step will be retried
if it has throw a skippable exception.
Skippable Exceptions
Chunking
Step ItemReader ItemProcessor ItemWriter
read()
item
process(item)
item
read()
item
process(item)
item
write(items)
execute()
ExitStatus
Chunking: ItemReader
Chunking: ItemProcessor
Chunking: ItemWriter
Demo
Runtime Parameters
Set Property
Retrieve Property
Pre-Defined Properties
Set Property
Property Injected
Step Exceptions
• Parallel running instances (partition) complete before the
job completes.
• Batch status transitions to FAILED
Job Listener Configuration
Listener
Config
Job Listener Implementation
Step Listener Configuration
Listener
Config
Step Listener Implementation
Partition Configuration
Partition Implementation
Decision Configuration
Decision
What next?
Decision Implementation
Dependency Injection!
Split
updateExisting processNewStorms
Flow & Splits JCL
• <flow> element is used to implement process workflows.
• <split> element is used to run jobs in parallel
retrieveTracking
processDecider
stormReader
stormProcessor
stormWriter
updateExisting
Storms
Flows & Splits
Checkpoint Algorithm Configuration
Checkpoint Algorithm Implementation
Hadoop Overview
• Massively scalable storage and batch data processing
system
• Written in Java
• Huge ecosystem
• Meant for massive data processing jobs
• Horizontally scalable
• Uses MapReduce programming model
• Handles processing of petabytes of data
• Started at Yahoo! In 2005.
Hadoop
MapReduce
(Distributed Computation)
HDFS
(Distributed Storage)
YARN
Framework
Common
Utilities
Hadoop
Typically Hadoop is used when:
• Analysis is performed on unstructured datasets
• Data is stored across multiple servers (HDFS)
• Non-Java processes are fed data and managed
Ex. https://svi.nl/HuygensSoftware
Spring vs. Java EE Batching
• Spring Batch 3.0 implements JSR-352!
• Batch artifacts developed against JSR-352 won’t work
within a traditional Spring Batch Job
• Same two processing models as Spring Batch:
• Item – aka chunking
• Task - aka Batchlet
Terminology Comparison
JSR-352 Spring Batch
Job Job
Step Step
Chunk Chunk
Item Item
ItemReader ItemReader/ItemStream
ItemProcessor ItemProcessor
ItemWriter ItemWriter/ItemStream
JobInstance JobInstance
JobExecution JobExecution
StepExecution StepExecution
JobListener JobExecutionListener
StepListener StepExecutionListener
Scaling Batch Jobs
• Traditional Spring Batch Scaling:
• Split – running multiple steps in parallel
• Multiple threads – executing a single step via multiple threads
• Partitioning – dividing data up for parallel processing
• Remote Chunking – executing the processor logic remotely
• JSR-352 Job Scaling
• Split – running multiple steps in parallel
• Partitioning – dividing data up – implementation slightly different.
JSR-352/Spring/Hadoop
Hadoop
• Massively parallel / large jobs
• Processing petabytes of data (BIG DATA)
JSR-352/Spring
• Traditional batch processing jobs
• Structured data/business processes
JSR-352 vs. Spring
• Java EE versus Spring containers
• Spring has better job scaling capabilities
JSR-352 Implementations
• JBeret
• http://tinyurl.com/z4qx3wo
• WebSphere/WebLogic/Payara
• jbatch (reference)
• http://tinyurl.com/jk6vcb8
• WildFly/JBoss
• SpringBatch
• http://tinyurl.com/mt8v3k7
Best Practices
• Package/deploy batch jobs separately
• Implement logic to cleanup old jobs
• Implement logic for auto-restart
• Test restart and checkpoint logic
• Configure database to store jobs
• Configure thread pool for batch jobs
• Only invoke batch jobs from logic that is secured (@Role
etc.)
Resources
• JSR-352
https://jcp.org/en/jsr/detail?id=352
• Java EE Support
http://javaee.support/contributors/
• Spring Batch
http://docs.spring.io/spring-batch/reference/html/spring-batch-
intro.html
• Spring JSR-352 Support
http://docs.spring.io/spring-batch/reference/html/jsr-352.html
Resources
• Java EE 7 Batch Processing and World of Warcraft
http://tinyurl.com/gp8yls8
• Three Key Concepts for Understanding JSR-352
http://tinyurl.com/oxe2dhu
• Java EE Tutorial
https://docs.oracle.com/javaee/7/tutorial/batch-
processing.htm
Q&A
Email: rcuprak@gmail.com
Twitter: @ctjava

More Related Content

What's hot (20)

Reactive programming intro
Reactive programming introReactive programming intro
Reactive programming intro
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Java spring framework
Java spring frameworkJava spring framework
Java spring framework
 
React hooks
React hooksReact hooks
React hooks
 
Java Persistence API (JPA) Step By Step
Java Persistence API (JPA) Step By StepJava Persistence API (JPA) Step By Step
Java Persistence API (JPA) Step By Step
 
Java Spring Framework
Java Spring FrameworkJava Spring Framework
Java Spring Framework
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
How to Avoid Common Mistakes When Using Reactor Netty
How to Avoid Common Mistakes When Using Reactor NettyHow to Avoid Common Mistakes When Using Reactor Netty
How to Avoid Common Mistakes When Using Reactor Netty
 
Spring boot
Spring bootSpring boot
Spring boot
 
Spring boot
Spring bootSpring boot
Spring boot
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Spring framework core
Spring framework coreSpring framework core
Spring framework core
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
 
Nouveautés de java 8
Nouveautés de java 8Nouveautés de java 8
Nouveautés de java 8
 
Spring Boot Actuator
Spring Boot ActuatorSpring Boot Actuator
Spring Boot Actuator
 
Hibernate jpa
Hibernate jpaHibernate jpa
Hibernate jpa
 

Viewers also liked

Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Ryan Cuprak
 
Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 UpdateRyan Cuprak
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]Ryan Cuprak
 
Containerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaContainerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaRyan Cuprak
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Ryan Cuprak
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with GradleRyan Cuprak
 
Intro to Java ME and Asha Platform
Intro to Java ME and Asha PlatformIntro to Java ME and Asha Platform
Intro to Java ME and Asha PlatformJussi Pohjolainen
 
Development Horror Stories
Development Horror StoriesDevelopment Horror Stories
Development Horror StoriesRoberto Cortez
 
Java. Lecture 01. Introducing Java
Java. Lecture 01. Introducing JavaJava. Lecture 01. Introducing Java
Java. Lecture 01. Introducing Javacolriot
 
Open Source - Bзгляд из вражeскoгo лагeря
Open Source - Bзгляд из вражeскoгo лагeряOpen Source - Bзгляд из вражeскoгo лагeря
Open Source - Bзгляд из вражeскoгo лагeряAndrew Zaikin
 
Kathy Barton - Letter of Recommendation Odyssey Healthcare of Chicago
Kathy Barton - Letter of Recommendation Odyssey Healthcare of ChicagoKathy Barton - Letter of Recommendation Odyssey Healthcare of Chicago
Kathy Barton - Letter of Recommendation Odyssey Healthcare of ChicagoMichele Cuprak
 
South Suburban College Dean's List
South Suburban College  Dean's ListSouth Suburban College  Dean's List
South Suburban College Dean's ListMichele Cuprak
 
2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...
2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...
2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...Michele Cuprak
 
Munster Med-Inn Letter of Recommendaton - Copy
Munster Med-Inn Letter of Recommendaton - CopyMunster Med-Inn Letter of Recommendaton - Copy
Munster Med-Inn Letter of Recommendaton - CopyMichele Cuprak
 
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...CocoaHeads
 
Java on zSystems zOS
Java on zSystems zOSJava on zSystems zOS
Java on zSystems zOSTim Ellison
 
20 most important java programming interview questions
20 most important java programming interview questions20 most important java programming interview questions
20 most important java programming interview questionsGradeup
 
11 Java User Interface Libraries for Developing Mobile Applications
11 Java User Interface Libraries for Developing Mobile Applications11 Java User Interface Libraries for Developing Mobile Applications
11 Java User Interface Libraries for Developing Mobile ApplicationsAEGIS-ACCESSIBLE Projects
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Ryan Cuprak
 

Viewers also liked (20)

Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]
 
Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 Update
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]
 
Containerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaContainerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS Lambda
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Intro to Java ME and Asha Platform
Intro to Java ME and Asha PlatformIntro to Java ME and Asha Platform
Intro to Java ME and Asha Platform
 
Development Horror Stories
Development Horror StoriesDevelopment Horror Stories
Development Horror Stories
 
Java. Lecture 01. Introducing Java
Java. Lecture 01. Introducing JavaJava. Lecture 01. Introducing Java
Java. Lecture 01. Introducing Java
 
Open Source - Bзгляд из вражeскoгo лагeря
Open Source - Bзгляд из вражeскoгo лагeряOpen Source - Bзгляд из вражeскoгo лагeря
Open Source - Bзгляд из вражeскoгo лагeря
 
Kathy Barton - Letter of Recommendation Odyssey Healthcare of Chicago
Kathy Barton - Letter of Recommendation Odyssey Healthcare of ChicagoKathy Barton - Letter of Recommendation Odyssey Healthcare of Chicago
Kathy Barton - Letter of Recommendation Odyssey Healthcare of Chicago
 
South Suburban College Dean's List
South Suburban College  Dean's ListSouth Suburban College  Dean's List
South Suburban College Dean's List
 
2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...
2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...
2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...
 
Munster Med-Inn Letter of Recommendaton - Copy
Munster Med-Inn Letter of Recommendaton - CopyMunster Med-Inn Letter of Recommendaton - Copy
Munster Med-Inn Letter of Recommendaton - Copy
 
Java 8. Lambdas
Java 8. LambdasJava 8. Lambdas
Java 8. Lambdas
 
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
 
Java on zSystems zOS
Java on zSystems zOSJava on zSystems zOS
Java on zSystems zOS
 
20 most important java programming interview questions
20 most important java programming interview questions20 most important java programming interview questions
20 most important java programming interview questions
 
11 Java User Interface Libraries for Developing Mobile Applications
11 Java User Interface Libraries for Developing Mobile Applications11 Java User Interface Libraries for Developing Mobile Applications
11 Java User Interface Libraries for Developing Mobile Applications
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
 

Similar to Batching and Java EE (jdk.io)

Spring batch showCase
Spring batch showCaseSpring batch showCase
Spring batch showCasetaher abdo
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and ActivatorKevin Webber
 
Java EE 7 Batch processing in the Real World
Java EE 7 Batch processing in the Real WorldJava EE 7 Batch processing in the Real World
Java EE 7 Batch processing in the Real WorldRoberto Cortez
 
Elements for an iOS Backend
Elements for an iOS BackendElements for an iOS Backend
Elements for an iOS BackendLaurent Cerveau
 
Spring Batch Performance Tuning
Spring Batch Performance TuningSpring Batch Performance Tuning
Spring Batch Performance TuningGunnar Hillert
 
Gain Proficiency in Batch Processing with Spring Batch
Gain Proficiency in Batch Processing with Spring BatchGain Proficiency in Batch Processing with Spring Batch
Gain Proficiency in Batch Processing with Spring BatchInexture Solutions
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts weili_at_slideshare
 
WebObjects Optimization
WebObjects OptimizationWebObjects Optimization
WebObjects OptimizationWO Community
 
Hibernate in XPages
Hibernate in XPagesHibernate in XPages
Hibernate in XPagesToby Samples
 
AAI-1713 Introduction to Java EE 7
AAI-1713 Introduction to Java EE 7AAI-1713 Introduction to Java EE 7
AAI-1713 Introduction to Java EE 7WASdev Community
 
AAI 1713-Introduction to Java EE 7
AAI 1713-Introduction to Java EE 7AAI 1713-Introduction to Java EE 7
AAI 1713-Introduction to Java EE 7Kevin Sutter
 
Parallel batch processing with spring batch slideshare
Parallel batch processing with spring batch   slideshareParallel batch processing with spring batch   slideshare
Parallel batch processing with spring batch slideshareMorten Andersen-Gott
 
DjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling DisqusDjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling Disquszeeg
 
Priority enabled wps
Priority enabled wpsPriority enabled wps
Priority enabled wps52North
 
SeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisSeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisWill Iverson
 

Similar to Batching and Java EE (jdk.io) (20)

Spring batch
Spring batchSpring batch
Spring batch
 
Spring Batch
Spring BatchSpring Batch
Spring Batch
 
Spring batch showCase
Spring batch showCaseSpring batch showCase
Spring batch showCase
 
Java Batch
Java BatchJava Batch
Java Batch
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Java EE 7 Batch processing in the Real World
Java EE 7 Batch processing in the Real WorldJava EE 7 Batch processing in the Real World
Java EE 7 Batch processing in the Real World
 
Elements for an iOS Backend
Elements for an iOS BackendElements for an iOS Backend
Elements for an iOS Backend
 
Spring Batch Performance Tuning
Spring Batch Performance TuningSpring Batch Performance Tuning
Spring Batch Performance Tuning
 
JS Essence
JS EssenceJS Essence
JS Essence
 
Gain Proficiency in Batch Processing with Spring Batch
Gain Proficiency in Batch Processing with Spring BatchGain Proficiency in Batch Processing with Spring Batch
Gain Proficiency in Batch Processing with Spring Batch
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts
 
Datastage Online Training
Datastage Online TrainingDatastage Online Training
Datastage Online Training
 
WebObjects Optimization
WebObjects OptimizationWebObjects Optimization
WebObjects Optimization
 
Hibernate in XPages
Hibernate in XPagesHibernate in XPages
Hibernate in XPages
 
AAI-1713 Introduction to Java EE 7
AAI-1713 Introduction to Java EE 7AAI-1713 Introduction to Java EE 7
AAI-1713 Introduction to Java EE 7
 
AAI 1713-Introduction to Java EE 7
AAI 1713-Introduction to Java EE 7AAI 1713-Introduction to Java EE 7
AAI 1713-Introduction to Java EE 7
 
Parallel batch processing with spring batch slideshare
Parallel batch processing with spring batch   slideshareParallel batch processing with spring batch   slideshare
Parallel batch processing with spring batch slideshare
 
DjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling DisqusDjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling Disqus
 
Priority enabled wps
Priority enabled wpsPriority enabled wps
Priority enabled wps
 
SeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisSeaJUG May 2012 mybatis
SeaJUG May 2012 mybatis
 

More from Ryan Cuprak

Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)Ryan Cuprak
 
DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)Ryan Cuprak
 
Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Ryan Cuprak
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVMRyan Cuprak
 
Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Ryan Cuprak
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeansRyan Cuprak
 
Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules uploadRyan Cuprak
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with GradleRyan Cuprak
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Ryan Cuprak
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the CloudRyan Cuprak
 
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)Ryan Cuprak
 
Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Ryan Cuprak
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014Ryan Cuprak
 
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 201450 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014Ryan Cuprak
 
JavaOne 2013: Organizing Your Local Community
JavaOne 2013: Organizing Your Local CommunityJavaOne 2013: Organizing Your Local Community
JavaOne 2013: Organizing Your Local CommunityRyan Cuprak
 

More from Ryan Cuprak (16)

Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)
 
DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)
 
Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
 
Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeans
 
Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules upload
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Java EE 8
Java EE 8Java EE 8
Java EE 8
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the Cloud
 
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
 
Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014
 
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 201450 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
 
JavaOne 2013: Organizing Your Local Community
JavaOne 2013: Organizing Your Local CommunityJavaOne 2013: Organizing Your Local Community
JavaOne 2013: Organizing Your Local Community
 

Recently uploaded

Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 

Recently uploaded (20)

Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 

Batching and Java EE (jdk.io)

  • 2. What is Batch Processing? Batch jobs are typically: • Bulk-oriented • Non-interactive • Potentially compute intensive • May require parallel execution • Maybe invoked, ad hoc, scheduled, on-demand etc.
  • 3. Batching Examples • Monthly reports/statements • Daily data cleanup • One-time data migrations • Data synchronization • Data analysis • Portfolio rebalancing
  • 4. Introducing Java EE Batching • Introduced in Java EE 7 • JSR 352 - https://jcp.org/en/jsr/detail?id=352 • Reference implementation: https://github.com/WASdev/standards.jsr352.jbatch • Batch Framework: • Batch container for execution of jobs • XML Job Specification Language • Batch annotations and interfaces • Supporting classes and interfaces for interacting with the container • Depends on CDI
  • 5. Java EE Batching Overview JobOperator Job Step JobRepository ItemReader ItemProcessor ItemWriter 1 * 1 1 1 1 1 1
  • 6. Java EE Batching Overview JobInstance Job JobExecution * * EndOfDayJob EndOfDayJob for 9/1/2016 First attempt at EndOfDay job for 9/1/2016
  • 7. Java EE Batching Features • Fault-tolerant – checkpoints and job persistence • Transactions - chunks execute within a JTA transaction • Listeners – notification of job status/completion/etc. • Resource management – limits concurrent jobs • Starting/stopping/restarting – job control API
  • 8. Java EE Batching Deployment WAR EAR JAR Deploy batch jobs in: Manage jobs – split application into modules Server B app.war End of Day Job Cleanup Job Server C app2.war Analytics Job Server A frontend.war
  • 10. Exit Codes Code Description STARTING Job has been submitted to runtime. STARTED Batch job has started executing. STOPPING Job termination has been requested. STOPPED Job has been stopped. FAILED Job has thrown an error or failured triggered by <failure> COMPLETED Job has completed normally. ABANDONDED Job cannot be restarted
  • 11. Basic Layout CDI Configuration Job Configuration Batchlet
  • 14. Batchlet with Termination Jobs should implement and terminate when requested!
  • 17. IDs and Names instanceId • ID represents an instance of a job. • Created when JobOperator start method invoked. executionId • ID that represents the next attempt to run a particular job instance. • Created when a job is started/restarted. • Only one executionId for a job can be started at a time stepExecutionId • ID for an attempt to execute a particular step in a job jobName • name of the job from XML (actually id) <job id=“”> jobXMLName • name of the config file in META-INF/batch-jobs
  • 18. JobInstance vs. JobExecution JobInstance JobExecution 1 * • BatchStatus • createTime • endTime • executionID • exitStatus • jobName • jobParameters, lastUpdateTime • startTime • instanceId • jobName
  • 19. Managing Jobs • JobOperator – interface for operating on batch jobs. • BatchRuntime.getJobOperator() • JobOperator: • Provides information on current and completed jobs • Used to start/stop/restart/abandon jobs • Security is implementation dependent • JobOperator interacts with JobRepository • JobRepository • Implementation out-side scope of JSR • No API for deleting old jobs • Reference implementation provides no API for cleanup!
  • 20. JobOperator Methods Type Method void Abandon(long executionId) JobExecution getJobExecution(long executionId) List<JobExecution> getJobExecutions(JobInstance instance) JobInstance getJobInstance(long executionId) int getJobInstanceCount(String jobName) List<JobInstance> getJobInstances(String jobName,int start, in count) Set<String> getJobNames() Properties getParameters(long executionId) List<Long> getRunningExecutions(String jobName) List<StepExecution> getStepExecutions(long jobExecutionId) long Restart(long executionId, Properties restartParams) long start(String jobXMLName, Properties jobParams) void Stop(long executionId)
  • 22. Chunking • Chunking is primary pattern for batch processing in JSR- 352. • Encapsulates the ETL pattern: • Pieces: Reader/Processor/Writer • Reader/Processor invoked until an entire chuck of data is processed. • Output is written atomically • Implementation: • Interfaces: ItemReader/ItemWriter/ItemProcessor • Classes: AbstractReader/AbstractWriter/AbstractProcessor Reader Processor Writer
  • 24. Chunk Configuration Parameter Description checkpoint-policy Possible values: item or custom item-count Number of items to be processed per chunk. Default is 10. time-limit Time in seconds before taking a checkpoint. Default is 0 (means after each chunk) skip-limit Number of exceptions a step will skip if there are configured skippable exceptions. retry-limit Number of times a step will be retried if it has throw a skippable exception.
  • 26. Chunking Step ItemReader ItemProcessor ItemWriter read() item process(item) item read() item process(item) item write(items) execute() ExitStatus
  • 30. Demo
  • 33. Step Exceptions • Parallel running instances (partition) complete before the job completes. • Batch status transitions to FAILED
  • 42. Split updateExisting processNewStorms Flow & Splits JCL • <flow> element is used to implement process workflows. • <split> element is used to run jobs in parallel retrieveTracking processDecider stormReader stormProcessor stormWriter updateExisting Storms
  • 46. Hadoop Overview • Massively scalable storage and batch data processing system • Written in Java • Huge ecosystem • Meant for massive data processing jobs • Horizontally scalable • Uses MapReduce programming model • Handles processing of petabytes of data • Started at Yahoo! In 2005.
  • 48. Hadoop Typically Hadoop is used when: • Analysis is performed on unstructured datasets • Data is stored across multiple servers (HDFS) • Non-Java processes are fed data and managed Ex. https://svi.nl/HuygensSoftware
  • 49. Spring vs. Java EE Batching • Spring Batch 3.0 implements JSR-352! • Batch artifacts developed against JSR-352 won’t work within a traditional Spring Batch Job • Same two processing models as Spring Batch: • Item – aka chunking • Task - aka Batchlet
  • 50. Terminology Comparison JSR-352 Spring Batch Job Job Step Step Chunk Chunk Item Item ItemReader ItemReader/ItemStream ItemProcessor ItemProcessor ItemWriter ItemWriter/ItemStream JobInstance JobInstance JobExecution JobExecution StepExecution StepExecution JobListener JobExecutionListener StepListener StepExecutionListener
  • 51. Scaling Batch Jobs • Traditional Spring Batch Scaling: • Split – running multiple steps in parallel • Multiple threads – executing a single step via multiple threads • Partitioning – dividing data up for parallel processing • Remote Chunking – executing the processor logic remotely • JSR-352 Job Scaling • Split – running multiple steps in parallel • Partitioning – dividing data up – implementation slightly different.
  • 52. JSR-352/Spring/Hadoop Hadoop • Massively parallel / large jobs • Processing petabytes of data (BIG DATA) JSR-352/Spring • Traditional batch processing jobs • Structured data/business processes JSR-352 vs. Spring • Java EE versus Spring containers • Spring has better job scaling capabilities
  • 53. JSR-352 Implementations • JBeret • http://tinyurl.com/z4qx3wo • WebSphere/WebLogic/Payara • jbatch (reference) • http://tinyurl.com/jk6vcb8 • WildFly/JBoss • SpringBatch • http://tinyurl.com/mt8v3k7
  • 54. Best Practices • Package/deploy batch jobs separately • Implement logic to cleanup old jobs • Implement logic for auto-restart • Test restart and checkpoint logic • Configure database to store jobs • Configure thread pool for batch jobs • Only invoke batch jobs from logic that is secured (@Role etc.)
  • 55. Resources • JSR-352 https://jcp.org/en/jsr/detail?id=352 • Java EE Support http://javaee.support/contributors/ • Spring Batch http://docs.spring.io/spring-batch/reference/html/spring-batch- intro.html • Spring JSR-352 Support http://docs.spring.io/spring-batch/reference/html/jsr-352.html
  • 56. Resources • Java EE 7 Batch Processing and World of Warcraft http://tinyurl.com/gp8yls8 • Three Key Concepts for Understanding JSR-352 http://tinyurl.com/oxe2dhu • Java EE Tutorial https://docs.oracle.com/javaee/7/tutorial/batch- processing.htm

Editor's Notes

  1. I would like to welcome everybody to
  2. We’ve got our class, next we need to create a XML configuration file for the job.
  3. Starting a job is relatively easy. We access the batch runtime and get a job operator. Initialize properties, which would contain configuration settings. Start the job – the “simpleJob”