Flowable 5.23.0 User Guide
Total Page:16
File Type:pdf, Size:1020Kb
Flowable 5.23.0 User Guide Table of Contents 1. Introduction 1.1. License 1.2. Download 1.3. Sources 1.4. Required software 1.4.1. JDK 7+ 1.4.2. IDE 1.5. Reporting problems 1.6. Experimental features 1.7. Internal implementation classes 2. Getting Started 2.1. What is Flowable? 2.2. Flowable and Activiti 2.3. Building a command-line application 2.3.1. Creating a process engine 2.3.2. Deploying a process definition 2.3.3. Starting a process instance 2.3.4. Sidetrack: transactionality 2.3.5. Querying and completing tasks 2.3.6. Writing a JavaDelegate 2.3.7. Working with historical data 2.3.8. Conclusion 2.4. Getting started with the Flowable REST API 2.4.1. Setting up the REST application 2.4.2. Deploying a process definition 2.4.3. Start a process instance 2.4.4. Task list and completing a task 3. Configuration 3.1. Creating a ProcessEngine 3.2. ProcessEngineConfiguration bean 3.3. Database configuration 3.4. JNDI Datasource Configuration 3.4.1. Configuration 3.4.2. JNDI properties 3.5. Supported databases 3.6. Creating the database tables 3.7. Database table names explained 3.8. Database upgrade 3.9. Job Executor (since version 6.0.0) 3.10. Job executor activation 3.11. Mail server configuration 3.12. History configuration 3.13. Exposing configuration beans in expressions and scripts 3.14. Deployment cache configuration 3.15. Logging 3.16. Mapped Diagnostic Contexts 3.17. Event handlers 3.17.1. Event listener implementation 3.17.2. Configuration and setup 3.17.3. Adding listeners at runtime 3.17.4. Adding listeners to process definitions 3.17.5. Dispatching events through API 3.17.6. Supported event types 3.17.7. Additional remarks 4. The Flowable API 4.1. The Process Engine API and services 4.2. Exception strategy 4.3. Query API 4.4. Variables 4.5. Transient variables 4.6. Expressions 4.7. Unit testing 4.8. Debugging unit tests 4.9. The process engine in a web application 5. Spring integration 5.1. ProcessEngineFactoryBean 5.2. Transactions 5.3. Expressions 5.4. Automatic resource deployment 5.5. Unit testing 5.6. JPA with Hibernate 4.2.x 5.7. Spring Boot 5.7.1. Compatibility 5.7.2. Getting started 5.7.3. Changing the database and connection pool 5.7.4. REST support 5.7.5. JPA support 5.7.6. Further Reading 6. Deployment 6.1. Business archives 6.1.1. Deploying programmatically 6.2. External resources 6.2.1. Java classes 6.2.2. Using Spring beans from a process 6.2.3. Creating a single app 6.3. Versioning of process definitions 6.4. Providing a process diagram 6.5. Generating a process diagram 6.6. Category 7. BPMN 2.0 Introduction 7.1. What is BPMN? 7.2. Defining a process 7.3. Getting started: 10 minute tutorial 7.3.1. Prerequisites 7.3.2. Goal 7.3.3. Use case 7.3.4. Process diagram 7.3.5. XML representation 7.3.6. Starting a process instance 7.3.7. Task lists 7.3.8. Claiming the task 7.3.9. Completing the task 7.3.10. Ending the process 7.3.11. Code overview 7.3.12. Future enhancements 8. BPMN 2.0 Constructs 8.1. Custom extensions 8.2. Events 8.2.1. Event Definitions 8.2.2. Timer Event Definitions 8.2.3. Error Event Definitions 8.2.4. Signal Event Definitions 8.2.5. Message Event Definitions 8.2.6. Start Events 8.2.7. None Start Event 8.2.8. Timer Start Event 8.2.9. Message Start Event 8.2.10. Signal Start Event 8.2.11. Error Start Event 8.2.12. End Events 8.2.13. None End Event 8.2.14. Error End Event 8.2.15. Terminate End Event 8.2.16. Cancel End Event 8.2.17. Boundary Events 8.2.18. Timer Boundary Event 8.2.19. Error Boundary Event 8.2.20. Signal Boundary Event 8.2.21. Message Boundary Event 8.2.22. Cancel Boundary Event 8.2.23. Compensation Boundary Event 8.2.24. Intermediate Catching Events 8.2.25. Timer Intermediate Catching Event 8.2.26. Signal Intermediate Catching Event 8.2.27. Message Intermediate Catching Event 8.2.28. Intermediate Throwing Event 8.2.29. Intermediate Throwing None Event 8.2.30. Signal Intermediate Throwing Event 8.2.31. Compensation Intermediate Throwing Event 8.3. Sequence Flow 8.3.1. Description 8.3.2. Graphical notation 8.3.3. XML representation 8.3.4. Conditional sequence flow 8.3.5. Default sequence flow 8.4. Gateways 8.4.1. Exclusive Gateway 8.4.2. Parallel Gateway 8.4.3. Inclusive Gateway 8.4.4. Event-based Gateway 8.5. Tasks 8.5.1. User Task 8.5.2. Script Task 8.5.3. Java Service Task 8.5.4. Web Service Task 8.5.5. Business Rule Task 8.5.6. Email Task 8.5.7. Mule Task 8.5.8. Camel Task 8.5.9. Manual Task 8.5.10. Java Receive Task 8.5.11. Shell Task 8.5.12. Execution listener 8.5.13. Task listener 8.5.14. Multi-instance (for each) 8.5.15. Compensation Handlers 8.6. Sub-Processes and Call Activities 8.6.1. Sub-Process 8.6.2. Event Sub-Process 8.6.3. Transaction subprocess 8.6.4. Call activity (subprocess) 8.7. Transactions and Concurrency 8.7.1. Asynchronous Continuations 8.7.2. Fail Retry 8.7.3. Exclusive Jobs 8.8. Process Initiation Authorization 8.9. Data objects 9. Forms 9.1. Form properties 9.2. External form rendering 10. JPA 10.1. Requirements 10.2. Configuration 10.3. Usage 10.3.1. Simple Example 10.3.2. Query JPA process variables 10.3.3. Advanced example using Spring beans and JPA 11. History 11.1. Querying history 11.1.1. HistoricProcessInstanceQuery 11.1.2. HistoricVariableInstanceQuery 11.1.3. HistoricActivityInstanceQuery 11.1.4. HistoricDetailQuery 11.1.5. HistoricTaskInstanceQuery 11.2. History configuration 11.3. History for audit purposes 12. Eclipse Designer 12.1. Installation 12.2. Flowable Designer editor features 12.3. Flowable Designer BPMN features 12.4. Flowable Designer deployment features 12.5. Extending Flowable Designer 12.5.1. Customizing the palette 12.5.2. Validating diagrams and exporting to custom output formats 13. REST API 13.1. General Flowable REST principles 13.1.1. Installation and Authentication 13.1.2. Configuration 13.1.3. Usage in Tomcat 13.1.4. Methods and return-codes 13.1.5. Error response body 13.1.6. Request parameters 13.2. Deployment 13.2.1. List of Deployments 13.2.2. Get a deployment 13.2.3. Create a new deployment 13.2.4. Delete a deployment 13.2.5. List resources in a deployment 13.2.6. Get a deployment resource 13.2.7. Get a deployment resource content 13.3. Process Definitions 13.3.1. List of process definitions 13.3.2. Get a process definition 13.3.3. Update category for a process definition 13.3.4. Get a process definition resource content 13.3.5. Get a process definition BPMN model 13.3.6. Suspend a process definition 13.3.7. Activate a process definition 13.3.8. Get all candidate starters for a process-definition 13.3.9. Add a candidate starter to a process definition 13.3.10. Delete a candidate starter from a process definition 13.3.11. Get a candidate starter from a process definition 13.4. Models 13.4.1. Get a list of models 13.4.2. Get a model 13.4.3. Update a model 13.4.4. Create a model 13.4.5. Delete a model 13.4.6. Get the editor source for a model 13.4.7. Set the editor source for a model 13.4.8. Get the extra editor source for a model 13.4.9. Set the extra editor source for a model 13.5. Process Instances 13.5.1. Get a process instance 13.5.2. Delete a process instance 13.5.3. Activate or suspend a process instance 13.5.4. Start a process instance 13.5.5. List of process instances 13.5.6. Query process instances 13.5.7. Get diagram for a process instance 13.5.8. Get involved people for process instance 13.5.9. Add an involved user to a process instance 13.5.10. Remove an involved user to from process instance 13.5.11. List of variables for a process instance 13.5.12. Get a variable for a process instance 13.5.13. Create (or update) variables on a process instance 13.5.14. Update a single variable on a process instance 13.5.15. Create a new binary variable on a process-instance 13.5.16. Update an existing binary variable on a process-instance 13.6. Executions 13.6.1. Get an execution 13.6.2. Execute an action on an execution 13.6.3. Get active activities in an execution 13.6.4. List of executions 13.6.5. Query executions 13.6.6. List of variables for an execution 13.6.7. Get a variable for an execution 13.6.8. Create (or update) variables on an execution 13.6.9. Update a variable on an execution 13.6.10. Create a new binary variable on an execution 13.6.11. Update an existing binary variable on a process-instance 13.7.