• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
JBUG.Jbpm.2009
 

JBUG.Jbpm.2009

on

  • 1,130 views

 

Statistics

Views

Total Views
1,130
Views on SlideShare
1,062
Embed Views
68

Actions

Likes
1
Downloads
0
Comments
0

2 Embeds 68

http://jbug.be 41
http://www.jbug.be 27

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • This shows the client API Indicate the transactions
  • This shows the client API Indicate the transactions
  • This shows the client API Indicate the transactions

JBUG.Jbpm.2009 JBUG.Jbpm.2009 Presentation Transcript

  • jBPM 4 Tom Baeyens JBoss, Red Hat
  • Agenda
    • What is jBPM
    • jBPM 4 Goals
    • jBPM 4 Use Cases
  • Tom Baeyens
    • Lead and founder of JBoss jBPM
    • Consulting for numerous BPM projects
    • Bringing BPM mainstream
    • Articles
      • InfoQ, TSS, Dzone, OnJava,…
    • Blogs
      • http://processdevelopments.blogspot.com/
    • Talks
      • JavaOne, JBossWorld, JAOO, TSS,…
  • What is jBPM
    • Business Process Management
      • BPM as a discipline
      • BPM as software engineering
    • jBPM
      • BPM for Java Developer
      • Manage task lists for people
      • Orchestrate POJO code
      • Transactional state machine library
      • Graphical
  • What is jBPM Your App Your Architecture jBPM
  • What is jBPM
    • Model process
      • Declare tasks
      • Bind to your POJO Java code
    • Decorate
      • Asynchronous continuations
      • Timers
  • jBPM 4 Goals
    • Improve supportability
    • Grow to next level of adoption
    • Raise 'ability to execute'
    • Implementation improvements
  • Improve Supportability
    • Separation between normal usage from bleeding edge usage
      • public API vs internal packages
      • Userguide vs devguide
    • More stable database / process definition caching
      • Migration between 4.x releases (plan)
    • Automatic JBoss installation
      • No messing with configs and libs
      • Tested configurations
  • Improve Supportability
    • Continuous integration
      • Ability to reproduce bugs
      • Collect community knowledge in test suite
        • Ability to keep improving over longer time
        • Longer lifespan of jBPM 4
    • Config import system
      • Less error prone
      • Imports for hibernate tx, jta tx, spring tx
      • Allows for default updates in default imports
  • Grow to Next Level of Adoption
    • Lowering the treshold to get started
      • Simpler API
        • Split normal usage from bleeding edge
        • API based queries
      • Better container and app pluggability
    • Much! improved docs
    • Examples
    • Automatic installations
      • Remove need for messing on your own
    • Easier configuration abstraction through imports
  • Increase ‘Ability to Execute'
    • Historical data separated from runtime data
      • Queryable history information
      • Keeps runtime data healthy
    • Improved transaction mappings
    • Proper handling of timers and external triggers
    • More stable database
      • DB data migration becomes possible
    • Improved job executor
  • Implementation Improvements
    • Improved pluggable architecture
      • Changed composition to inheritence. 
      • Direct variable access
    • Interfaces for activity implementations 
      • Only exposing the methods that can be invoked.
    • Changed recursion with iteration
      • Dealing with automatic long loops.
  • Use Case 1: Rapid Prototyping
    • Model the process
    • Include tasks
    • Generate forms
    • Deploy
    • Show live demo
  • Use Cases 2: Transactional Script
    • Model the script process
    • Delegate activities
      • To POJO user code
      • EJBeans
      • SEAM beans
    • Demarcate
      • Asynchonous continuations
      • Timers
    • Update control flow
      • Hot redeploy
      • Changed logic
  • Use Cases 3: Pageflow
    • Pages are activities
    • Navigations are transitions
    • Persistence in HTTP session
    • SEAM
  • jPDL Activities
    • Control flow
      • transition
      • start
      • end
      • end-cancel
      • end-error
      • decision
      • fork
      • join
      • super-state
      • sub-process
    • Functional
      • state
      • sub-process
      • task
      • java
      • script
      • esb
      • hql
      • sql
  • jPDL Features
    • Lots of functional activities
      • mail, java, esb, task,…
    • Concurrency
    • Event listeners
    • Timers
    • Asynchronous continuations
    • Transactional exception handlers
  • State Choice
  • State Choice
    • < process name = &quot;StateChoice&quot; >
    • < start >
    • < transition to = &quot;wait for response&quot; />
    • </ start >
    • < state name = &quot;wait for response&quot; >
    • < transition name = &quot;accept&quot; to = &quot;submit document&quot; />
    • < transition name = &quot;reject&quot; to = &quot;try again&quot; />
    • </ state >
    • < state name = &quot;submit document&quot; />
    • < state name = &quot;try again&quot; />
    • </ process >
  • State Choice
    • // create a configuration
    • Configuration configuration = new Configuration();
    • // build a process engine from a configuration
    • ProcessEngine processEngine = configuration.buildProcessEngine();
    • // Obtain the services from the process engine
    • // ProcessEngine and Services are to be used as singletons.
    • // ( ie they are threadsafe )
    • RepositoryService repositoryService = processEngine.getRepositoryService();
    • ExecutionService executionService = processEngine.getExecutionService();
    • TaskService taskService = processEngine.getTaskService();
  • State Choice
    • repositoryService .createDeployment()
    • .addResourceFromClasspath(
    • &quot;org/jbpm/examples/state/choice/process.jpdl.xml“ )
    • .deploy();
  • State Choice
    • ProcessInstance processInstance = executionService
    • .startProcessInstanceByKey( &quot;StateChoice&quot; );
    • String executionId = processInstance
    • .findActiveExecutionIn( &quot;wait for response&quot; )
    • .getId();
    • processInstance = executionService
    • .signalExecutionById(executionId, &quot;accept&quot; );
    • assertEquals( &quot;submit document&quot; ,
    • processInstance.getActivityName());
  • Designer
  • Console
  • Conclusion
    • jBPM provides overview of application
      • External triggers
      • Wait states
      • Business view
    • jBPM adds a layer on top of TX basics
      • Transactional timers
      • Asynchronous messages
    • Integrates with
      • Standard & Enterprise Java
      • JBoss and other app servers
      • SEAM
      • Spring
  • Q&A
  • Process Concurrency