diff --git a/README.md b/README.md index dd67c71..1295dbc 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,18 @@ -# This documentation is still in progress. - # Operaton Documentation This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator. +## ๐Ÿš€ Quick Start + ### Installation -``` -$ npm install +```bash +npm install ``` ### Local Development -``` +```bash npm run start ``` @@ -20,16 +20,169 @@ This command starts a local development server and opens up a browser window. Mo ### Build -``` -$ npm run build +```bash +npm run build ``` This command generates static content into the `build` directory and can be served using any static contents hosting service. -### Update dependencies +## ๐Ÿงช Testing & Validation + +### Check Broken References + +```bash +# Quick check for broken asset references +npm run check:refs + +# Verbose mode (shows all references being checked) +npm run check:refs:verbose +# Full test suite (checks references + builds) +npm test ``` -$ npm update + +The broken references checker scans all markdown files for: +- โœ… Broken image links +- โœ… Missing assets (PNG, SVG, BPMN, etc.) +- โœ… Invalid file paths +- ๐Ÿ“Š Generates detailed report: `broken-asset-references.md` + +**Exit codes:** +- `0` - All references valid โœ… +- `1` - Broken references found โŒ + +## ๐Ÿ“ Project Structure + ``` +operaton-documentation/ +โ”œโ”€โ”€ docs/ # Documentation content +โ”‚ โ”œโ”€โ”€ assets/ # Versioned assets (images, diagrams) +โ”‚ โ”‚ โ”œโ”€โ”€ documentation/ +โ”‚ โ”‚ โ”œโ”€โ”€ get-started/ +โ”‚ โ”‚ โ””โ”€โ”€ security/ +โ”‚ โ”œโ”€โ”€ documentation/ # Main documentation +โ”‚ โ”œโ”€โ”€ get-started/ # Getting started guides +โ”‚ โ””โ”€โ”€ security/ # Security documentation +โ”œโ”€โ”€ static/ # Static assets (not versioned) +โ”‚ โ””โ”€โ”€ img/ # Theme assets (logo, favicon, etc.) +โ”œโ”€โ”€ src/ # React components & plugins +โ”‚ โ”œโ”€โ”€ components/ # Custom components (e.g., BpmnViewer) +โ”‚ โ”œโ”€โ”€ plugins/ # Docusaurus plugins +โ”‚ โ””โ”€โ”€ theme/ # Theme customizations +โ”œโ”€โ”€ scripts/ # Utility scripts +โ”‚ โ””โ”€โ”€ check-broken-references.js +โ””โ”€โ”€ docusaurus.config.ts # Docusaurus configuration +``` + +## ๐Ÿ“ Documentation Guidelines + +### Adding Images + +**For documentation images** (versioned with docs): +```markdown +![Description](../assets/documentation/section/image.png) +``` + +**For images with specific sizing** (use JSX): +```jsx +Description +``` + +**For theme assets** (non-versioned): +```markdown +![Logo](/img/operaton-logo.svg) +``` + +### Asset Organization + +- **Documentation assets**: `docs/assets/` - Versioned with documentation +- **Theme assets**: `static/img/` - Site-wide assets (logo, favicon, social cards) +- **BPMN files**: Keep alongside markdown files for BPMN viewer integration + +### BPMN Diagrams + +Include interactive BPMN diagrams in documentation: + +```markdown + +``` + +The BPMN viewer component automatically renders interactive diagrams from `.bpmn` files. + +## ๐Ÿ”„ Versioning + +Create a new documentation version: + +```bash +npm run docusaurus docs:version 1.1.0 +``` + +**Note:** Docusaurus versioning includes: +- โœ… All markdown content in `docs/` +- โœ… All assets in `docs/assets/` (images, diagrams) +- โœ… Sidebar configuration +- โŒ Static assets in `static/img/` (shared across versions) + +## ๐Ÿ› ๏ธ Maintenance + +### Update Dependencies + +```bash +npm update +``` + +This command updates the dependencies from `package.json`. + +### Clear Cache + +```bash +npm run clear +``` + +Clears Docusaurus cache. Use when experiencing build issues. + +### Verify Documentation Quality + +Before committing changes: + +```bash +# 1. Check for broken references +npm run check:refs + +# 2. Test build +npm run build + +# 3. Run full test suite +npm test +``` + +## ๐Ÿค Contributing + +1. Create a feature branch from `main` +2. Make your changes +3. Run `npm test` to verify +4. Commit with descriptive messages +5. Create a pull request + +### Commit Message Format + +``` +feat: add new feature +fix: correct broken link +docs: update installation guide +chore: update dependencies +``` + +## ๐Ÿ“š Additional Resources + +- [Docusaurus Documentation](https://docusaurus.io/) +- [Markdown Guide](https://www.markdownguide.org/) +- [BPMN 2.0 Specification](https://www.omg.org/spec/BPMN/2.0/) + +--- -This command update the dependencies from `package.json` \ No newline at end of file +**Status:** Documentation in active development ๐Ÿšง \ No newline at end of file diff --git a/static/img/documentation/introduction/architecture-overview.png b/docs/assets/documentation/introduction/architecture-overview.png similarity index 100% rename from static/img/documentation/introduction/architecture-overview.png rename to docs/assets/documentation/introduction/architecture-overview.png diff --git a/static/img/documentation/introduction/clustered-process-engine.png b/docs/assets/documentation/introduction/clustered-process-engine.png similarity index 100% rename from static/img/documentation/introduction/clustered-process-engine.png rename to docs/assets/documentation/introduction/clustered-process-engine.png diff --git a/static/img/documentation/introduction/embedded-process-engine.png b/docs/assets/documentation/introduction/embedded-process-engine.png similarity index 100% rename from static/img/documentation/introduction/embedded-process-engine.png rename to docs/assets/documentation/introduction/embedded-process-engine.png diff --git a/static/img/documentation/introduction/process-engine-architecture.png b/docs/assets/documentation/introduction/process-engine-architecture.png similarity index 100% rename from static/img/documentation/introduction/process-engine-architecture.png rename to docs/assets/documentation/introduction/process-engine-architecture.png diff --git a/static/img/documentation/introduction/shared-process-engine.png b/docs/assets/documentation/introduction/shared-process-engine.png similarity index 100% rename from static/img/documentation/introduction/shared-process-engine.png rename to docs/assets/documentation/introduction/shared-process-engine.png diff --git a/static/img/documentation/introduction/standalone-process-engine.png b/docs/assets/documentation/introduction/standalone-process-engine.png similarity index 100% rename from static/img/documentation/introduction/standalone-process-engine.png rename to docs/assets/documentation/introduction/standalone-process-engine.png diff --git a/static/img/documentation/reference/bpmn20/and_gateway.svg b/docs/assets/documentation/reference/bpmn20/and_gateway.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/and_gateway.svg rename to docs/assets/documentation/reference/bpmn20/and_gateway.svg diff --git a/static/img/documentation/reference/bpmn20/business_rule_task.svg b/docs/assets/documentation/reference/bpmn20/business_rule_task.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/business_rule_task.svg rename to docs/assets/documentation/reference/bpmn20/business_rule_task.svg diff --git a/static/img/documentation/reference/bpmn20/call_activity.svg b/docs/assets/documentation/reference/bpmn20/call_activity.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/call_activity.svg rename to docs/assets/documentation/reference/bpmn20/call_activity.svg diff --git a/static/img/documentation/reference/bpmn20/cancel_boundary_event.svg b/docs/assets/documentation/reference/bpmn20/cancel_boundary_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/cancel_boundary_event.svg rename to docs/assets/documentation/reference/bpmn20/cancel_boundary_event.svg diff --git a/static/img/documentation/reference/bpmn20/cancel_end_event.svg b/docs/assets/documentation/reference/bpmn20/cancel_end_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/cancel_end_event.svg rename to docs/assets/documentation/reference/bpmn20/cancel_end_event.svg diff --git a/static/img/documentation/reference/bpmn20/compensation_boundary_event.svg b/docs/assets/documentation/reference/bpmn20/compensation_boundary_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/compensation_boundary_event.svg rename to docs/assets/documentation/reference/bpmn20/compensation_boundary_event.svg diff --git a/static/img/documentation/reference/bpmn20/compensation_end_event.svg b/docs/assets/documentation/reference/bpmn20/compensation_end_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/compensation_end_event.svg rename to docs/assets/documentation/reference/bpmn20/compensation_end_event.svg diff --git a/static/img/documentation/reference/bpmn20/compensation_event_subprocess_start_event.svg b/docs/assets/documentation/reference/bpmn20/compensation_event_subprocess_start_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/compensation_event_subprocess_start_event.svg rename to docs/assets/documentation/reference/bpmn20/compensation_event_subprocess_start_event.svg diff --git a/static/img/documentation/reference/bpmn20/compensation_intermediate_throw_event.svg b/docs/assets/documentation/reference/bpmn20/compensation_intermediate_throw_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/compensation_intermediate_throw_event.svg rename to docs/assets/documentation/reference/bpmn20/compensation_intermediate_throw_event.svg diff --git a/static/img/documentation/reference/bpmn20/complex_gateway.svg b/docs/assets/documentation/reference/bpmn20/complex_gateway.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/complex_gateway.svg rename to docs/assets/documentation/reference/bpmn20/complex_gateway.svg diff --git a/static/img/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg b/docs/assets/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg rename to docs/assets/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg diff --git a/static/img/documentation/reference/bpmn20/conditional_intermediate_non_interrupting_event.svg b/docs/assets/documentation/reference/bpmn20/conditional_intermediate_non_interrupting_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/conditional_intermediate_non_interrupting_event.svg rename to docs/assets/documentation/reference/bpmn20/conditional_intermediate_non_interrupting_event.svg diff --git a/static/img/documentation/reference/bpmn20/conditional_start_event.svg b/docs/assets/documentation/reference/bpmn20/conditional_start_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/conditional_start_event.svg rename to docs/assets/documentation/reference/bpmn20/conditional_start_event.svg diff --git a/static/img/documentation/reference/bpmn20/data_object.svg b/docs/assets/documentation/reference/bpmn20/data_object.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/data_object.svg rename to docs/assets/documentation/reference/bpmn20/data_object.svg diff --git a/static/img/documentation/reference/bpmn20/data_store.svg b/docs/assets/documentation/reference/bpmn20/data_store.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/data_store.svg rename to docs/assets/documentation/reference/bpmn20/data_store.svg diff --git a/static/img/documentation/reference/bpmn20/error_boundary_catch_event.svg b/docs/assets/documentation/reference/bpmn20/error_boundary_catch_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/error_boundary_catch_event.svg rename to docs/assets/documentation/reference/bpmn20/error_boundary_catch_event.svg diff --git a/static/img/documentation/reference/bpmn20/error_event_subprocess_start_event.svg b/docs/assets/documentation/reference/bpmn20/error_event_subprocess_start_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/error_event_subprocess_start_event.svg rename to docs/assets/documentation/reference/bpmn20/error_event_subprocess_start_event.svg diff --git a/static/img/documentation/reference/bpmn20/error_throw_end_event.svg b/docs/assets/documentation/reference/bpmn20/error_throw_end_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/error_throw_end_event.svg rename to docs/assets/documentation/reference/bpmn20/error_throw_end_event.svg diff --git a/static/img/documentation/reference/bpmn20/escalation_boundary_catch_event.svg b/docs/assets/documentation/reference/bpmn20/escalation_boundary_catch_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/escalation_boundary_catch_event.svg rename to docs/assets/documentation/reference/bpmn20/escalation_boundary_catch_event.svg diff --git a/static/img/documentation/reference/bpmn20/escalation_boundary_catch_non_interrupting_event.svg b/docs/assets/documentation/reference/bpmn20/escalation_boundary_catch_non_interrupting_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/escalation_boundary_catch_non_interrupting_event.svg rename to docs/assets/documentation/reference/bpmn20/escalation_boundary_catch_non_interrupting_event.svg diff --git a/static/img/documentation/reference/bpmn20/escalation_event_subprocess_non_interrupting_start_event.svg b/docs/assets/documentation/reference/bpmn20/escalation_event_subprocess_non_interrupting_start_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/escalation_event_subprocess_non_interrupting_start_event.svg rename to docs/assets/documentation/reference/bpmn20/escalation_event_subprocess_non_interrupting_start_event.svg diff --git a/static/img/documentation/reference/bpmn20/escalation_event_subprocess_start_event.svg b/docs/assets/documentation/reference/bpmn20/escalation_event_subprocess_start_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/escalation_event_subprocess_start_event.svg rename to docs/assets/documentation/reference/bpmn20/escalation_event_subprocess_start_event.svg diff --git a/static/img/documentation/reference/bpmn20/escalation_intermediate_throw_event.svg b/docs/assets/documentation/reference/bpmn20/escalation_intermediate_throw_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/escalation_intermediate_throw_event.svg rename to docs/assets/documentation/reference/bpmn20/escalation_intermediate_throw_event.svg diff --git a/static/img/documentation/reference/bpmn20/escalation_throw_end_event.svg b/docs/assets/documentation/reference/bpmn20/escalation_throw_end_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/escalation_throw_end_event.svg rename to docs/assets/documentation/reference/bpmn20/escalation_throw_end_event.svg diff --git a/static/img/documentation/reference/bpmn20/event_gateway.svg b/docs/assets/documentation/reference/bpmn20/event_gateway.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/event_gateway.svg rename to docs/assets/documentation/reference/bpmn20/event_gateway.svg diff --git a/static/img/documentation/reference/bpmn20/event_subprocess.svg b/docs/assets/documentation/reference/bpmn20/event_subprocess.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/event_subprocess.svg rename to docs/assets/documentation/reference/bpmn20/event_subprocess.svg diff --git a/static/img/documentation/reference/bpmn20/event_subprocess_conditional_non_interrupting.svg b/docs/assets/documentation/reference/bpmn20/event_subprocess_conditional_non_interrupting.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/event_subprocess_conditional_non_interrupting.svg rename to docs/assets/documentation/reference/bpmn20/event_subprocess_conditional_non_interrupting.svg diff --git a/static/img/documentation/reference/bpmn20/event_subprocess_message_non_interrupting.svg b/docs/assets/documentation/reference/bpmn20/event_subprocess_message_non_interrupting.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/event_subprocess_message_non_interrupting.svg rename to docs/assets/documentation/reference/bpmn20/event_subprocess_message_non_interrupting.svg diff --git a/static/img/documentation/reference/bpmn20/event_subprocess_signal_non_interrupting_start_event.svg b/docs/assets/documentation/reference/bpmn20/event_subprocess_signal_non_interrupting_start_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/event_subprocess_signal_non_interrupting_start_event.svg rename to docs/assets/documentation/reference/bpmn20/event_subprocess_signal_non_interrupting_start_event.svg diff --git a/static/img/documentation/reference/bpmn20/event_subprocess_timer_non_interrupting.svg b/docs/assets/documentation/reference/bpmn20/event_subprocess_timer_non_interrupting.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/event_subprocess_timer_non_interrupting.svg rename to docs/assets/documentation/reference/bpmn20/event_subprocess_timer_non_interrupting.svg diff --git a/static/img/documentation/reference/bpmn20/events/activityInstanceState.png b/docs/assets/documentation/reference/bpmn20/events/activityInstanceState.png similarity index 100% rename from static/img/documentation/reference/bpmn20/events/activityInstanceState.png rename to docs/assets/documentation/reference/bpmn20/events/activityInstanceState.png diff --git a/static/img/documentation/reference/bpmn20/events/event-conditional.svg b/docs/assets/documentation/reference/bpmn20/events/event-conditional.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/events/event-conditional.svg rename to docs/assets/documentation/reference/bpmn20/events/event-conditional.svg diff --git a/static/img/documentation/reference/bpmn20/group_symbol.svg b/docs/assets/documentation/reference/bpmn20/group_symbol.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/group_symbol.svg rename to docs/assets/documentation/reference/bpmn20/group_symbol.svg diff --git a/static/img/documentation/reference/bpmn20/instantiated_receive_task.svg b/docs/assets/documentation/reference/bpmn20/instantiated_receive_task.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/instantiated_receive_task.svg rename to docs/assets/documentation/reference/bpmn20/instantiated_receive_task.svg diff --git a/static/img/documentation/reference/bpmn20/lane.svg b/docs/assets/documentation/reference/bpmn20/lane.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/lane.svg rename to docs/assets/documentation/reference/bpmn20/lane.svg diff --git a/static/img/documentation/reference/bpmn20/link_intermediate_catch_event.svg b/docs/assets/documentation/reference/bpmn20/link_intermediate_catch_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/link_intermediate_catch_event.svg rename to docs/assets/documentation/reference/bpmn20/link_intermediate_catch_event.svg diff --git a/static/img/documentation/reference/bpmn20/link_intermediate_throw_event.svg b/docs/assets/documentation/reference/bpmn20/link_intermediate_throw_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/link_intermediate_throw_event.svg rename to docs/assets/documentation/reference/bpmn20/link_intermediate_throw_event.svg diff --git a/static/img/documentation/reference/bpmn20/manual_task.svg b/docs/assets/documentation/reference/bpmn20/manual_task.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/manual_task.svg rename to docs/assets/documentation/reference/bpmn20/manual_task.svg diff --git a/static/img/documentation/reference/bpmn20/message_intermediate_catch_event.svg b/docs/assets/documentation/reference/bpmn20/message_intermediate_catch_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/message_intermediate_catch_event.svg rename to docs/assets/documentation/reference/bpmn20/message_intermediate_catch_event.svg diff --git a/static/img/documentation/reference/bpmn20/message_intermediate_non_interrupting_catch_event.svg b/docs/assets/documentation/reference/bpmn20/message_intermediate_non_interrupting_catch_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/message_intermediate_non_interrupting_catch_event.svg rename to docs/assets/documentation/reference/bpmn20/message_intermediate_non_interrupting_catch_event.svg diff --git a/static/img/documentation/reference/bpmn20/message_intermediate_throw_event.svg b/docs/assets/documentation/reference/bpmn20/message_intermediate_throw_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/message_intermediate_throw_event.svg rename to docs/assets/documentation/reference/bpmn20/message_intermediate_throw_event.svg diff --git a/static/img/documentation/reference/bpmn20/message_start_event.svg b/docs/assets/documentation/reference/bpmn20/message_start_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/message_start_event.svg rename to docs/assets/documentation/reference/bpmn20/message_start_event.svg diff --git a/static/img/documentation/reference/bpmn20/message_throw_end_event.svg b/docs/assets/documentation/reference/bpmn20/message_throw_end_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/message_throw_end_event.svg rename to docs/assets/documentation/reference/bpmn20/message_throw_end_event.svg diff --git a/static/img/documentation/reference/bpmn20/multiple_boundary_non_interrupting_event.svg b/docs/assets/documentation/reference/bpmn20/multiple_boundary_non_interrupting_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/multiple_boundary_non_interrupting_event.svg rename to docs/assets/documentation/reference/bpmn20/multiple_boundary_non_interrupting_event.svg diff --git a/static/img/documentation/reference/bpmn20/multiple_end_event.svg b/docs/assets/documentation/reference/bpmn20/multiple_end_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/multiple_end_event.svg rename to docs/assets/documentation/reference/bpmn20/multiple_end_event.svg diff --git a/static/img/documentation/reference/bpmn20/multiple_event_subprocess_non_interrupting_start_event.svg b/docs/assets/documentation/reference/bpmn20/multiple_event_subprocess_non_interrupting_start_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/multiple_event_subprocess_non_interrupting_start_event.svg rename to docs/assets/documentation/reference/bpmn20/multiple_event_subprocess_non_interrupting_start_event.svg diff --git a/static/img/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg b/docs/assets/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg rename to docs/assets/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg diff --git a/static/img/documentation/reference/bpmn20/multiple_intermediate_throw_event.svg b/docs/assets/documentation/reference/bpmn20/multiple_intermediate_throw_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/multiple_intermediate_throw_event.svg rename to docs/assets/documentation/reference/bpmn20/multiple_intermediate_throw_event.svg diff --git a/static/img/documentation/reference/bpmn20/multiple_parallel_catch_event.svg b/docs/assets/documentation/reference/bpmn20/multiple_parallel_catch_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/multiple_parallel_catch_event.svg rename to docs/assets/documentation/reference/bpmn20/multiple_parallel_catch_event.svg diff --git a/static/img/documentation/reference/bpmn20/multiple_parallel_intermediate_non_interrupting_event.svg b/docs/assets/documentation/reference/bpmn20/multiple_parallel_intermediate_non_interrupting_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/multiple_parallel_intermediate_non_interrupting_event.svg rename to docs/assets/documentation/reference/bpmn20/multiple_parallel_intermediate_non_interrupting_event.svg diff --git a/static/img/documentation/reference/bpmn20/multiple_parallel_non_interrupting_start_event.svg b/docs/assets/documentation/reference/bpmn20/multiple_parallel_non_interrupting_start_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/multiple_parallel_non_interrupting_start_event.svg rename to docs/assets/documentation/reference/bpmn20/multiple_parallel_non_interrupting_start_event.svg diff --git a/static/img/documentation/reference/bpmn20/multiple_parallel_start_event.svg b/docs/assets/documentation/reference/bpmn20/multiple_parallel_start_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/multiple_parallel_start_event.svg rename to docs/assets/documentation/reference/bpmn20/multiple_parallel_start_event.svg diff --git a/static/img/documentation/reference/bpmn20/multiple_start_event.svg b/docs/assets/documentation/reference/bpmn20/multiple_start_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/multiple_start_event.svg rename to docs/assets/documentation/reference/bpmn20/multiple_start_event.svg diff --git a/static/img/documentation/reference/bpmn20/none_end_event.svg b/docs/assets/documentation/reference/bpmn20/none_end_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/none_end_event.svg rename to docs/assets/documentation/reference/bpmn20/none_end_event.svg diff --git a/static/img/documentation/reference/bpmn20/none_intermediate_event.svg b/docs/assets/documentation/reference/bpmn20/none_intermediate_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/none_intermediate_event.svg rename to docs/assets/documentation/reference/bpmn20/none_intermediate_event.svg diff --git a/static/img/documentation/reference/bpmn20/none_start_event.svg b/docs/assets/documentation/reference/bpmn20/none_start_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/none_start_event.svg rename to docs/assets/documentation/reference/bpmn20/none_start_event.svg diff --git a/static/img/documentation/reference/bpmn20/or_gateway.svg b/docs/assets/documentation/reference/bpmn20/or_gateway.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/or_gateway.svg rename to docs/assets/documentation/reference/bpmn20/or_gateway.svg diff --git a/static/img/documentation/reference/bpmn20/pool.svg b/docs/assets/documentation/reference/bpmn20/pool.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/pool.svg rename to docs/assets/documentation/reference/bpmn20/pool.svg diff --git a/static/img/documentation/reference/bpmn20/receive_task.svg b/docs/assets/documentation/reference/bpmn20/receive_task.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/receive_task.svg rename to docs/assets/documentation/reference/bpmn20/receive_task.svg diff --git a/static/img/documentation/reference/bpmn20/script_task.svg b/docs/assets/documentation/reference/bpmn20/script_task.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/script_task.svg rename to docs/assets/documentation/reference/bpmn20/script_task.svg diff --git a/static/img/documentation/reference/bpmn20/send_task.svg b/docs/assets/documentation/reference/bpmn20/send_task.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/send_task.svg rename to docs/assets/documentation/reference/bpmn20/send_task.svg diff --git a/static/img/documentation/reference/bpmn20/service_task.svg b/docs/assets/documentation/reference/bpmn20/service_task.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/service_task.svg rename to docs/assets/documentation/reference/bpmn20/service_task.svg diff --git a/static/img/documentation/reference/bpmn20/signal_intermediate_catch_event.svg b/docs/assets/documentation/reference/bpmn20/signal_intermediate_catch_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/signal_intermediate_catch_event.svg rename to docs/assets/documentation/reference/bpmn20/signal_intermediate_catch_event.svg diff --git a/static/img/documentation/reference/bpmn20/signal_intermediate_non_interrupting_catch_event.svg b/docs/assets/documentation/reference/bpmn20/signal_intermediate_non_interrupting_catch_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/signal_intermediate_non_interrupting_catch_event.svg rename to docs/assets/documentation/reference/bpmn20/signal_intermediate_non_interrupting_catch_event.svg diff --git a/static/img/documentation/reference/bpmn20/signal_intermediate_throw_event.svg b/docs/assets/documentation/reference/bpmn20/signal_intermediate_throw_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/signal_intermediate_throw_event.svg rename to docs/assets/documentation/reference/bpmn20/signal_intermediate_throw_event.svg diff --git a/static/img/documentation/reference/bpmn20/signal_start_event.svg b/docs/assets/documentation/reference/bpmn20/signal_start_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/signal_start_event.svg rename to docs/assets/documentation/reference/bpmn20/signal_start_event.svg diff --git a/static/img/documentation/reference/bpmn20/signal_throw_end_event.svg b/docs/assets/documentation/reference/bpmn20/signal_throw_end_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/signal_throw_end_event.svg rename to docs/assets/documentation/reference/bpmn20/signal_throw_end_event.svg diff --git a/static/img/documentation/reference/bpmn20/subprocess.svg b/docs/assets/documentation/reference/bpmn20/subprocess.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/subprocess.svg rename to docs/assets/documentation/reference/bpmn20/subprocess.svg diff --git a/static/img/documentation/reference/bpmn20/termination_end_event.svg b/docs/assets/documentation/reference/bpmn20/termination_end_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/termination_end_event.svg rename to docs/assets/documentation/reference/bpmn20/termination_end_event.svg diff --git a/static/img/documentation/reference/bpmn20/text_annotation.svg b/docs/assets/documentation/reference/bpmn20/text_annotation.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/text_annotation.svg rename to docs/assets/documentation/reference/bpmn20/text_annotation.svg diff --git a/static/img/documentation/reference/bpmn20/timer_intermediate_event.svg b/docs/assets/documentation/reference/bpmn20/timer_intermediate_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/timer_intermediate_event.svg rename to docs/assets/documentation/reference/bpmn20/timer_intermediate_event.svg diff --git a/static/img/documentation/reference/bpmn20/timer_intermediate_none_interrupting_event.svg b/docs/assets/documentation/reference/bpmn20/timer_intermediate_none_interrupting_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/timer_intermediate_none_interrupting_event.svg rename to docs/assets/documentation/reference/bpmn20/timer_intermediate_none_interrupting_event.svg diff --git a/static/img/documentation/reference/bpmn20/timer_start_event.svg b/docs/assets/documentation/reference/bpmn20/timer_start_event.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/timer_start_event.svg rename to docs/assets/documentation/reference/bpmn20/timer_start_event.svg diff --git a/static/img/documentation/reference/bpmn20/transaction.svg b/docs/assets/documentation/reference/bpmn20/transaction.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/transaction.svg rename to docs/assets/documentation/reference/bpmn20/transaction.svg diff --git a/static/img/documentation/reference/bpmn20/undefined_task.svg b/docs/assets/documentation/reference/bpmn20/undefined_task.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/undefined_task.svg rename to docs/assets/documentation/reference/bpmn20/undefined_task.svg diff --git a/static/img/documentation/reference/bpmn20/user_task.svg b/docs/assets/documentation/reference/bpmn20/user_task.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/user_task.svg rename to docs/assets/documentation/reference/bpmn20/user_task.svg diff --git a/static/img/documentation/reference/bpmn20/xor_gateway.svg b/docs/assets/documentation/reference/bpmn20/xor_gateway.svg similarity index 100% rename from static/img/documentation/reference/bpmn20/xor_gateway.svg rename to docs/assets/documentation/reference/bpmn20/xor_gateway.svg diff --git a/static/img/documentation/reference/cmmn11/concepts/CaseInstanceLifecycle.png b/docs/assets/documentation/reference/cmmn11/concepts/CaseInstanceLifecycle.png similarity index 100% rename from static/img/documentation/reference/cmmn11/concepts/CaseInstanceLifecycle.png rename to docs/assets/documentation/reference/cmmn11/concepts/CaseInstanceLifecycle.png diff --git a/static/img/documentation/reference/cmmn11/concepts/MilestoneLifecycle.png b/docs/assets/documentation/reference/cmmn11/concepts/MilestoneLifecycle.png similarity index 100% rename from static/img/documentation/reference/cmmn11/concepts/MilestoneLifecycle.png rename to docs/assets/documentation/reference/cmmn11/concepts/MilestoneLifecycle.png diff --git a/static/img/documentation/reference/cmmn11/concepts/TaskStageLifecycle.png b/docs/assets/documentation/reference/cmmn11/concepts/TaskStageLifecycle.png similarity index 100% rename from static/img/documentation/reference/cmmn11/concepts/TaskStageLifecycle.png rename to docs/assets/documentation/reference/cmmn11/concepts/TaskStageLifecycle.png diff --git a/static/img/documentation/reference/cmmn11/concepts/example-lifecycle-case.png b/docs/assets/documentation/reference/cmmn11/concepts/example-lifecycle-case.png similarity index 100% rename from static/img/documentation/reference/cmmn11/concepts/example-lifecycle-case.png rename to docs/assets/documentation/reference/cmmn11/concepts/example-lifecycle-case.png diff --git a/static/img/documentation/reference/cmmn11/concepts/lifecycle-example-1.png b/docs/assets/documentation/reference/cmmn11/concepts/lifecycle-example-1.png similarity index 100% rename from static/img/documentation/reference/cmmn11/concepts/lifecycle-example-1.png rename to docs/assets/documentation/reference/cmmn11/concepts/lifecycle-example-1.png diff --git a/static/img/documentation/reference/cmmn11/concepts/lifecycle-example-2.png b/docs/assets/documentation/reference/cmmn11/concepts/lifecycle-example-2.png similarity index 100% rename from static/img/documentation/reference/cmmn11/concepts/lifecycle-example-2.png rename to docs/assets/documentation/reference/cmmn11/concepts/lifecycle-example-2.png diff --git a/static/img/documentation/reference/cmmn11/concepts/lifecycle-example-3.png b/docs/assets/documentation/reference/cmmn11/concepts/lifecycle-example-3.png similarity index 100% rename from static/img/documentation/reference/cmmn11/concepts/lifecycle-example-3.png rename to docs/assets/documentation/reference/cmmn11/concepts/lifecycle-example-3.png diff --git a/static/img/documentation/reference/cmmn11/concepts/lifecycle-example-4.png b/docs/assets/documentation/reference/cmmn11/concepts/lifecycle-example-4.png similarity index 100% rename from static/img/documentation/reference/cmmn11/concepts/lifecycle-example-4.png rename to docs/assets/documentation/reference/cmmn11/concepts/lifecycle-example-4.png diff --git a/static/img/documentation/reference/cmmn11/markers/repetition-rule-example.png b/docs/assets/documentation/reference/cmmn11/markers/repetition-rule-example.png similarity index 100% rename from static/img/documentation/reference/cmmn11/markers/repetition-rule-example.png rename to docs/assets/documentation/reference/cmmn11/markers/repetition-rule-example.png diff --git a/static/img/documentation/reference/cmmn11/markers/state-1.png b/docs/assets/documentation/reference/cmmn11/markers/state-1.png similarity index 100% rename from static/img/documentation/reference/cmmn11/markers/state-1.png rename to docs/assets/documentation/reference/cmmn11/markers/state-1.png diff --git a/static/img/documentation/reference/cmmn11/markers/state-2.png b/docs/assets/documentation/reference/cmmn11/markers/state-2.png similarity index 100% rename from static/img/documentation/reference/cmmn11/markers/state-2.png rename to docs/assets/documentation/reference/cmmn11/markers/state-2.png diff --git a/static/img/documentation/reference/cmmn11/markers/state-3.png b/docs/assets/documentation/reference/cmmn11/markers/state-3.png similarity index 100% rename from static/img/documentation/reference/cmmn11/markers/state-3.png rename to docs/assets/documentation/reference/cmmn11/markers/state-3.png diff --git a/static/img/documentation/reference/cmmn11/markers/state-4.png b/docs/assets/documentation/reference/cmmn11/markers/state-4.png similarity index 100% rename from static/img/documentation/reference/cmmn11/markers/state-4.png rename to docs/assets/documentation/reference/cmmn11/markers/state-4.png diff --git a/static/img/documentation/reference/cmmn11/markers/state-5.png b/docs/assets/documentation/reference/cmmn11/markers/state-5.png similarity index 100% rename from static/img/documentation/reference/cmmn11/markers/state-5.png rename to docs/assets/documentation/reference/cmmn11/markers/state-5.png diff --git a/static/img/documentation/reference/cmmn11/variableOnPart.png b/docs/assets/documentation/reference/cmmn11/variableOnPart.png similarity index 100% rename from static/img/documentation/reference/cmmn11/variableOnPart.png rename to docs/assets/documentation/reference/cmmn11/variableOnPart.png diff --git a/static/img/documentation/reference/dmn/decision-table/decision-id.png b/docs/assets/documentation/reference/dmn/decision-table/decision-id.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/decision-id.png rename to docs/assets/documentation/reference/dmn/decision-table/decision-id.png diff --git a/static/img/documentation/reference/dmn/decision-table/decision-name.png b/docs/assets/documentation/reference/dmn/decision-table/decision-name.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/decision-name.png rename to docs/assets/documentation/reference/dmn/decision-table/decision-name.png diff --git a/static/img/documentation/reference/dmn/decision-table/description.png b/docs/assets/documentation/reference/dmn/decision-table/description.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/description.png rename to docs/assets/documentation/reference/dmn/decision-table/description.png diff --git a/static/img/documentation/reference/dmn/decision-table/dish-table.png b/docs/assets/documentation/reference/dmn/decision-table/dish-table.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/dish-table.png rename to docs/assets/documentation/reference/dmn/decision-table/dish-table.png diff --git a/static/img/documentation/reference/dmn/decision-table/hit-policy-any.png b/docs/assets/documentation/reference/dmn/decision-table/hit-policy-any.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/hit-policy-any.png rename to docs/assets/documentation/reference/dmn/decision-table/hit-policy-any.png diff --git a/static/img/documentation/reference/dmn/decision-table/hit-policy-collect-count.png b/docs/assets/documentation/reference/dmn/decision-table/hit-policy-collect-count.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/hit-policy-collect-count.png rename to docs/assets/documentation/reference/dmn/decision-table/hit-policy-collect-count.png diff --git a/static/img/documentation/reference/dmn/decision-table/hit-policy-collect-max.png b/docs/assets/documentation/reference/dmn/decision-table/hit-policy-collect-max.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/hit-policy-collect-max.png rename to docs/assets/documentation/reference/dmn/decision-table/hit-policy-collect-max.png diff --git a/static/img/documentation/reference/dmn/decision-table/hit-policy-collect-min.png b/docs/assets/documentation/reference/dmn/decision-table/hit-policy-collect-min.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/hit-policy-collect-min.png rename to docs/assets/documentation/reference/dmn/decision-table/hit-policy-collect-min.png diff --git a/static/img/documentation/reference/dmn/decision-table/hit-policy-collect-sum.png b/docs/assets/documentation/reference/dmn/decision-table/hit-policy-collect-sum.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/hit-policy-collect-sum.png rename to docs/assets/documentation/reference/dmn/decision-table/hit-policy-collect-sum.png diff --git a/static/img/documentation/reference/dmn/decision-table/hit-policy-collect.png b/docs/assets/documentation/reference/dmn/decision-table/hit-policy-collect.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/hit-policy-collect.png rename to docs/assets/documentation/reference/dmn/decision-table/hit-policy-collect.png diff --git a/static/img/documentation/reference/dmn/decision-table/hit-policy-first.png b/docs/assets/documentation/reference/dmn/decision-table/hit-policy-first.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/hit-policy-first.png rename to docs/assets/documentation/reference/dmn/decision-table/hit-policy-first.png diff --git a/static/img/documentation/reference/dmn/decision-table/hit-policy-rule-order.png b/docs/assets/documentation/reference/dmn/decision-table/hit-policy-rule-order.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/hit-policy-rule-order.png rename to docs/assets/documentation/reference/dmn/decision-table/hit-policy-rule-order.png diff --git a/static/img/documentation/reference/dmn/decision-table/hit-policy-unique.png b/docs/assets/documentation/reference/dmn/decision-table/hit-policy-unique.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/hit-policy-unique.png rename to docs/assets/documentation/reference/dmn/decision-table/hit-policy-unique.png diff --git a/static/img/documentation/reference/dmn/decision-table/hit-policy.png b/docs/assets/documentation/reference/dmn/decision-table/hit-policy.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/hit-policy.png rename to docs/assets/documentation/reference/dmn/decision-table/hit-policy.png diff --git a/static/img/documentation/reference/dmn/decision-table/input-entry.png b/docs/assets/documentation/reference/dmn/decision-table/input-entry.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/input-entry.png rename to docs/assets/documentation/reference/dmn/decision-table/input-entry.png diff --git a/static/img/documentation/reference/dmn/decision-table/input-expression.png b/docs/assets/documentation/reference/dmn/decision-table/input-expression.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/input-expression.png rename to docs/assets/documentation/reference/dmn/decision-table/input-expression.png diff --git a/static/img/documentation/reference/dmn/decision-table/input-label.png b/docs/assets/documentation/reference/dmn/decision-table/input-label.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/input-label.png rename to docs/assets/documentation/reference/dmn/decision-table/input-label.png diff --git a/static/img/documentation/reference/dmn/decision-table/input-type-definition.png b/docs/assets/documentation/reference/dmn/decision-table/input-type-definition.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/input-type-definition.png rename to docs/assets/documentation/reference/dmn/decision-table/input-type-definition.png diff --git a/static/img/documentation/reference/dmn/decision-table/input.png b/docs/assets/documentation/reference/dmn/decision-table/input.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/input.png rename to docs/assets/documentation/reference/dmn/decision-table/input.png diff --git a/static/img/documentation/reference/dmn/decision-table/output-entry.png b/docs/assets/documentation/reference/dmn/decision-table/output-entry.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/output-entry.png rename to docs/assets/documentation/reference/dmn/decision-table/output-entry.png diff --git a/static/img/documentation/reference/dmn/decision-table/output-label.png b/docs/assets/documentation/reference/dmn/decision-table/output-label.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/output-label.png rename to docs/assets/documentation/reference/dmn/decision-table/output-label.png diff --git a/static/img/documentation/reference/dmn/decision-table/output-name.png b/docs/assets/documentation/reference/dmn/decision-table/output-name.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/output-name.png rename to docs/assets/documentation/reference/dmn/decision-table/output-name.png diff --git a/static/img/documentation/reference/dmn/decision-table/output-type-definition.png b/docs/assets/documentation/reference/dmn/decision-table/output-type-definition.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/output-type-definition.png rename to docs/assets/documentation/reference/dmn/decision-table/output-type-definition.png diff --git a/static/img/documentation/reference/dmn/decision-table/output.png b/docs/assets/documentation/reference/dmn/decision-table/output.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/output.png rename to docs/assets/documentation/reference/dmn/decision-table/output.png diff --git a/static/img/documentation/reference/dmn/decision-table/rule.png b/docs/assets/documentation/reference/dmn/decision-table/rule.png similarity index 100% rename from static/img/documentation/reference/dmn/decision-table/rule.png rename to docs/assets/documentation/reference/dmn/decision-table/rule.png diff --git a/static/img/documentation/reference/dmn/drg/decision.png b/docs/assets/documentation/reference/dmn/drg/decision.png similarity index 100% rename from static/img/documentation/reference/dmn/drg/decision.png rename to docs/assets/documentation/reference/dmn/drg/decision.png diff --git a/static/img/documentation/reference/dmn/drg/drd.png b/docs/assets/documentation/reference/dmn/drg/drd.png similarity index 100% rename from static/img/documentation/reference/dmn/drg/drd.png rename to docs/assets/documentation/reference/dmn/drg/drd.png diff --git a/static/img/documentation/reference/dmn/drg/drg-id.png b/docs/assets/documentation/reference/dmn/drg/drg-id.png similarity index 100% rename from static/img/documentation/reference/dmn/drg/drg-id.png rename to docs/assets/documentation/reference/dmn/drg/drg-id.png diff --git a/static/img/documentation/reference/dmn/drg/drg-name.png b/docs/assets/documentation/reference/dmn/drg/drg-name.png similarity index 100% rename from static/img/documentation/reference/dmn/drg/drg-name.png rename to docs/assets/documentation/reference/dmn/drg/drg-name.png diff --git a/static/img/documentation/reference/dmn/drg/input-data.png b/docs/assets/documentation/reference/dmn/drg/input-data.png similarity index 100% rename from static/img/documentation/reference/dmn/drg/input-data.png rename to docs/assets/documentation/reference/dmn/drg/input-data.png diff --git a/static/img/documentation/reference/dmn/drg/knowledge-source.png b/docs/assets/documentation/reference/dmn/drg/knowledge-source.png similarity index 100% rename from static/img/documentation/reference/dmn/drg/knowledge-source.png rename to docs/assets/documentation/reference/dmn/drg/knowledge-source.png diff --git a/static/img/documentation/reference/dmn/drg/required-decision.png b/docs/assets/documentation/reference/dmn/drg/required-decision.png similarity index 100% rename from static/img/documentation/reference/dmn/drg/required-decision.png rename to docs/assets/documentation/reference/dmn/drg/required-decision.png diff --git a/static/img/documentation/reference/dmn/feel/legacy/boolean-type.png b/docs/assets/documentation/reference/dmn/feel/legacy/boolean-type.png similarity index 100% rename from static/img/documentation/reference/dmn/feel/legacy/boolean-type.png rename to docs/assets/documentation/reference/dmn/feel/legacy/boolean-type.png diff --git a/static/img/documentation/reference/dmn/feel/legacy/date-type.png b/docs/assets/documentation/reference/dmn/feel/legacy/date-type.png similarity index 100% rename from static/img/documentation/reference/dmn/feel/legacy/date-type.png rename to docs/assets/documentation/reference/dmn/feel/legacy/date-type.png diff --git a/static/img/documentation/reference/dmn/feel/legacy/integer-type.png b/docs/assets/documentation/reference/dmn/feel/legacy/integer-type.png similarity index 100% rename from static/img/documentation/reference/dmn/feel/legacy/integer-type.png rename to docs/assets/documentation/reference/dmn/feel/legacy/integer-type.png diff --git a/static/img/documentation/reference/dmn/feel/legacy/string-type.png b/docs/assets/documentation/reference/dmn/feel/legacy/string-type.png similarity index 100% rename from static/img/documentation/reference/dmn/feel/legacy/string-type.png rename to docs/assets/documentation/reference/dmn/feel/legacy/string-type.png diff --git a/static/img/documentation/user-guide/dmn-engine/beverages-dmn.png b/docs/assets/documentation/user-guide/dmn-engine/beverages-dmn.png similarity index 100% rename from static/img/documentation/user-guide/dmn-engine/beverages-dmn.png rename to docs/assets/documentation/user-guide/dmn-engine/beverages-dmn.png diff --git a/static/img/documentation/user-guide/dmn-engine/dish-dmn.png b/docs/assets/documentation/user-guide/dmn-engine/dish-dmn.png similarity index 100% rename from static/img/documentation/user-guide/dmn-engine/dish-dmn.png rename to docs/assets/documentation/user-guide/dmn-engine/dish-dmn.png diff --git a/static/img/documentation/user-guide/dmn-engine/drd.png b/docs/assets/documentation/user-guide/dmn-engine/drd.png similarity index 100% rename from static/img/documentation/user-guide/dmn-engine/drd.png rename to docs/assets/documentation/user-guide/dmn-engine/drd.png diff --git a/static/img/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-parallel-gateway.png b/docs/assets/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-parallel-gateway.png similarity index 100% rename from static/img/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-parallel-gateway.png rename to docs/assets/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-parallel-gateway.png diff --git a/static/img/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-simple-process.png b/docs/assets/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-simple-process.png similarity index 100% rename from static/img/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-simple-process.png rename to docs/assets/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-simple-process.png diff --git a/static/img/documentation/user-guide/process-applications/eclipse-00-preferences-maven-archetypes.png b/docs/assets/documentation/user-guide/process-applications/eclipse-00-preferences-maven-archetypes.png similarity index 100% rename from static/img/documentation/user-guide/process-applications/eclipse-00-preferences-maven-archetypes.png rename to docs/assets/documentation/user-guide/process-applications/eclipse-00-preferences-maven-archetypes.png diff --git a/static/img/documentation/user-guide/process-applications/eclipse-01-add-remote-archetype-catalog.png b/docs/assets/documentation/user-guide/process-applications/eclipse-01-add-remote-archetype-catalog.png similarity index 100% rename from static/img/documentation/user-guide/process-applications/eclipse-01-add-remote-archetype-catalog.png rename to docs/assets/documentation/user-guide/process-applications/eclipse-01-add-remote-archetype-catalog.png diff --git a/static/img/documentation/user-guide/process-applications/eclipse-02-create-maven-project.png b/docs/assets/documentation/user-guide/process-applications/eclipse-02-create-maven-project.png similarity index 100% rename from static/img/documentation/user-guide/process-applications/eclipse-02-create-maven-project.png rename to docs/assets/documentation/user-guide/process-applications/eclipse-02-create-maven-project.png diff --git a/static/img/documentation/user-guide/process-applications/eclipse-03-select-maven-project-location.png b/docs/assets/documentation/user-guide/process-applications/eclipse-03-select-maven-project-location.png similarity index 100% rename from static/img/documentation/user-guide/process-applications/eclipse-03-select-maven-project-location.png rename to docs/assets/documentation/user-guide/process-applications/eclipse-03-select-maven-project-location.png diff --git a/static/img/documentation/user-guide/process-applications/eclipse-04-select-archetype-from-catalog.png b/docs/assets/documentation/user-guide/process-applications/eclipse-04-select-archetype-from-catalog.png similarity index 100% rename from static/img/documentation/user-guide/process-applications/eclipse-04-select-archetype-from-catalog.png rename to docs/assets/documentation/user-guide/process-applications/eclipse-04-select-archetype-from-catalog.png diff --git a/static/img/documentation/user-guide/process-applications/eclipse-05-specify-maven-coordinates-and-operaton-version.png b/docs/assets/documentation/user-guide/process-applications/eclipse-05-specify-maven-coordinates-and-operaton-version.png similarity index 100% rename from static/img/documentation/user-guide/process-applications/eclipse-05-specify-maven-coordinates-and-operaton-version.png rename to docs/assets/documentation/user-guide/process-applications/eclipse-05-specify-maven-coordinates-and-operaton-version.png diff --git a/static/img/documentation/user-guide/process-applications/eclipse-06-generated-maven-project.png b/docs/assets/documentation/user-guide/process-applications/eclipse-06-generated-maven-project.png similarity index 100% rename from static/img/documentation/user-guide/process-applications/eclipse-06-generated-maven-project.png rename to docs/assets/documentation/user-guide/process-applications/eclipse-06-generated-maven-project.png diff --git a/static/img/documentation/user-guide/process-applications/process-application-context.png b/docs/assets/documentation/user-guide/process-applications/process-application-context.png similarity index 100% rename from static/img/documentation/user-guide/process-applications/process-application-context.png rename to docs/assets/documentation/user-guide/process-applications/process-application-context.png diff --git a/static/img/documentation/user-guide/process-applications/process-application-deployment.png b/docs/assets/documentation/user-guide/process-applications/process-application-deployment.png similarity index 100% rename from static/img/documentation/user-guide/process-applications/process-application-deployment.png rename to docs/assets/documentation/user-guide/process-applications/process-application-deployment.png diff --git a/static/img/documentation/user-guide/process-applications/process-application-events.png b/docs/assets/documentation/user-guide/process-applications/process-application-events.png similarity index 100% rename from static/img/documentation/user-guide/process-applications/process-application-events.png rename to docs/assets/documentation/user-guide/process-applications/process-application-events.png diff --git a/static/img/documentation/user-guide/process-applications/process-application-redeployment.png b/docs/assets/documentation/user-guide/process-applications/process-application-redeployment.png similarity index 100% rename from static/img/documentation/user-guide/process-applications/process-application-redeployment.png rename to docs/assets/documentation/user-guide/process-applications/process-application-redeployment.png diff --git a/static/img/documentation/user-guide/process-engine/NotWorkingTimerOnServiceTimeout.png b/docs/assets/documentation/user-guide/process-engine/NotWorkingTimerOnServiceTimeout.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/NotWorkingTimerOnServiceTimeout.png rename to docs/assets/documentation/user-guide/process-engine/NotWorkingTimerOnServiceTimeout.png diff --git a/static/img/documentation/user-guide/process-engine/api.services.png b/docs/assets/documentation/user-guide/process-engine/api.services.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/api.services.png rename to docs/assets/documentation/user-guide/process-engine/api.services.png diff --git a/static/img/documentation/user-guide/process-engine/bpmn.boundary.error.event.png b/docs/assets/documentation/user-guide/process-engine/bpmn.boundary.error.event.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/bpmn.boundary.error.event.png rename to docs/assets/documentation/user-guide/process-engine/bpmn.boundary.error.event.png diff --git a/static/img/documentation/user-guide/process-engine/database/database-schema.png b/docs/assets/documentation/user-guide/process-engine/database/database-schema.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/database/database-schema.png rename to docs/assets/documentation/user-guide/process-engine/database/database-schema.png diff --git a/static/img/documentation/user-guide/process-engine/database/erd_722_bpmn.svg b/docs/assets/documentation/user-guide/process-engine/database/erd_722_bpmn.svg similarity index 100% rename from static/img/documentation/user-guide/process-engine/database/erd_722_bpmn.svg rename to docs/assets/documentation/user-guide/process-engine/database/erd_722_bpmn.svg diff --git a/static/img/documentation/user-guide/process-engine/database/erd_722_cmmn.svg b/docs/assets/documentation/user-guide/process-engine/database/erd_722_cmmn.svg similarity index 100% rename from static/img/documentation/user-guide/process-engine/database/erd_722_cmmn.svg rename to docs/assets/documentation/user-guide/process-engine/database/erd_722_cmmn.svg diff --git a/static/img/documentation/user-guide/process-engine/database/erd_722_dmn.svg b/docs/assets/documentation/user-guide/process-engine/database/erd_722_dmn.svg similarity index 100% rename from static/img/documentation/user-guide/process-engine/database/erd_722_dmn.svg rename to docs/assets/documentation/user-guide/process-engine/database/erd_722_dmn.svg diff --git a/static/img/documentation/user-guide/process-engine/database/erd_722_history.svg b/docs/assets/documentation/user-guide/process-engine/database/erd_722_history.svg similarity index 100% rename from static/img/documentation/user-guide/process-engine/database/erd_722_history.svg rename to docs/assets/documentation/user-guide/process-engine/database/erd_722_history.svg diff --git a/static/img/documentation/user-guide/process-engine/database/erd_722_identity.svg b/docs/assets/documentation/user-guide/process-engine/database/erd_722_identity.svg similarity index 100% rename from static/img/documentation/user-guide/process-engine/database/erd_722_identity.svg rename to docs/assets/documentation/user-guide/process-engine/database/erd_722_identity.svg diff --git a/static/img/documentation/user-guide/process-engine/error-handling-user-task.png b/docs/assets/documentation/user-guide/process-engine/error-handling-user-task.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/error-handling-user-task.png rename to docs/assets/documentation/user-guide/process-engine/error-handling-user-task.png diff --git a/static/img/documentation/user-guide/process-engine/error-result-xor.png b/docs/assets/documentation/user-guide/process-engine/error-result-xor.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/error-result-xor.png rename to docs/assets/documentation/user-guide/process-engine/error-result-xor.png diff --git a/static/img/documentation/user-guide/process-engine/event-based-gateway.png b/docs/assets/documentation/user-guide/process-engine/event-based-gateway.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/event-based-gateway.png rename to docs/assets/documentation/user-guide/process-engine/event-based-gateway.png diff --git a/static/img/documentation/user-guide/process-engine/exclusive-over-process-hierarchies.png b/docs/assets/documentation/user-guide/process-engine/exclusive-over-process-hierarchies.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/exclusive-over-process-hierarchies.png rename to docs/assets/documentation/user-guide/process-engine/exclusive-over-process-hierarchies.png diff --git a/static/img/documentation/user-guide/process-engine/external-task-long-polling.png b/docs/assets/documentation/user-guide/process-engine/external-task-long-polling.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/external-task-long-polling.png rename to docs/assets/documentation/user-guide/process-engine/external-task-long-polling.png diff --git a/static/img/documentation/user-guide/process-engine/external-task-pattern.png b/docs/assets/documentation/user-guide/process-engine/external-task-pattern.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/external-task-pattern.png rename to docs/assets/documentation/user-guide/process-engine/external-task-pattern.png diff --git a/static/img/documentation/user-guide/process-engine/heterogeneous-cluster.png b/docs/assets/documentation/user-guide/process-engine/heterogeneous-cluster.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/heterogeneous-cluster.png rename to docs/assets/documentation/user-guide/process-engine/heterogeneous-cluster.png diff --git a/static/img/documentation/user-guide/process-engine/history/history-cleanup-process-hierarchy.png b/docs/assets/documentation/user-guide/process-engine/history/history-cleanup-process-hierarchy.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/history/history-cleanup-process-hierarchy.png rename to docs/assets/documentation/user-guide/process-engine/history/history-cleanup-process-hierarchy.png diff --git a/static/img/documentation/user-guide/process-engine/history/process-engine-history-architecture.png b/docs/assets/documentation/user-guide/process-engine/history/process-engine-history-architecture.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/history/process-engine-history-architecture.png rename to docs/assets/documentation/user-guide/process-engine/history/process-engine-history-architecture.png diff --git a/static/img/documentation/user-guide/process-engine/homogeneous-cluster.png b/docs/assets/documentation/user-guide/process-engine/homogeneous-cluster.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/homogeneous-cluster.png rename to docs/assets/documentation/user-guide/process-engine/homogeneous-cluster.png diff --git a/static/img/documentation/user-guide/process-engine/job-executor-basic-architecture.png b/docs/assets/documentation/user-guide/process-engine/job-executor-basic-architecture.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/job-executor-basic-architecture.png rename to docs/assets/documentation/user-guide/process-engine/job-executor-basic-architecture.png diff --git a/static/img/documentation/user-guide/process-engine/job-executor-exclusive-jobs.png b/docs/assets/documentation/user-guide/process-engine/job-executor-exclusive-jobs.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/job-executor-exclusive-jobs.png rename to docs/assets/documentation/user-guide/process-engine/job-executor-exclusive-jobs.png diff --git a/static/img/documentation/user-guide/process-engine/job-executor-multiple-engines.png b/docs/assets/documentation/user-guide/process-engine/job-executor-multiple-engines.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/job-executor-multiple-engines.png rename to docs/assets/documentation/user-guide/process-engine/job-executor-multiple-engines.png diff --git a/static/img/documentation/user-guide/process-engine/job-executor-priority-precedence.png b/docs/assets/documentation/user-guide/process-engine/job-executor-priority-precedence.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/job-executor-priority-precedence.png rename to docs/assets/documentation/user-guide/process-engine/job-executor-priority-precedence.png diff --git a/static/img/documentation/user-guide/process-engine/job-executor-single-engine.png b/docs/assets/documentation/user-guide/process-engine/job-executor-single-engine.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/job-executor-single-engine.png rename to docs/assets/documentation/user-guide/process-engine/job-executor-single-engine.png diff --git a/static/img/documentation/user-guide/process-engine/message-event.svg b/docs/assets/documentation/user-guide/process-engine/message-event.svg similarity index 100% rename from static/img/documentation/user-guide/process-engine/message-event.svg rename to docs/assets/documentation/user-guide/process-engine/message-event.svg diff --git a/static/img/documentation/user-guide/process-engine/multi-tenancy-process-engine.png b/docs/assets/documentation/user-guide/process-engine/multi-tenancy-process-engine.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/multi-tenancy-process-engine.png rename to docs/assets/documentation/user-guide/process-engine/multi-tenancy-process-engine.png diff --git a/static/img/documentation/user-guide/process-engine/multi-tenancy-tenant-identifiers.png b/docs/assets/documentation/user-guide/process-engine/multi-tenancy-tenant-identifiers.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/multi-tenancy-tenant-identifiers.png rename to docs/assets/documentation/user-guide/process-engine/multi-tenancy-tenant-identifiers.png diff --git a/static/img/documentation/user-guide/process-engine/optimisticLockingParallel.png b/docs/assets/documentation/user-guide/process-engine/optimisticLockingParallel.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/optimisticLockingParallel.png rename to docs/assets/documentation/user-guide/process-engine/optimisticLockingParallel.png diff --git a/static/img/documentation/user-guide/process-engine/optimisticLockingTransactions.png b/docs/assets/documentation/user-guide/process-engine/optimisticLockingTransactions.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/optimisticLockingTransactions.png rename to docs/assets/documentation/user-guide/process-engine/optimisticLockingTransactions.png diff --git a/static/img/documentation/user-guide/process-engine/parallel-gw.png b/docs/assets/documentation/user-guide/process-engine/parallel-gw.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/parallel-gw.png rename to docs/assets/documentation/user-guide/process-engine/parallel-gw.png diff --git a/static/img/documentation/user-guide/process-engine/process-diagram-bpmn-js.png b/docs/assets/documentation/user-guide/process-engine/process-diagram-bpmn-js.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/process-diagram-bpmn-js.png rename to docs/assets/documentation/user-guide/process-engine/process-diagram-bpmn-js.png diff --git a/static/img/documentation/user-guide/process-engine/process-engine-activity-execution.png b/docs/assets/documentation/user-guide/process-engine/process-engine-activity-execution.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/process-engine-activity-execution.png rename to docs/assets/documentation/user-guide/process-engine/process-engine-activity-execution.png diff --git a/static/img/documentation/user-guide/process-engine/process-engine-async-transactions.png b/docs/assets/documentation/user-guide/process-engine/process-engine-async-transactions.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/process-engine-async-transactions.png rename to docs/assets/documentation/user-guide/process-engine/process-engine-async-transactions.png diff --git a/static/img/documentation/user-guide/process-engine/process-engine-async.png b/docs/assets/documentation/user-guide/process-engine/process-engine-async.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/process-engine-async.png rename to docs/assets/documentation/user-guide/process-engine/process-engine-async.png diff --git a/static/img/documentation/user-guide/process-engine/receive-task.svg b/docs/assets/documentation/user-guide/process-engine/receive-task.svg similarity index 100% rename from static/img/documentation/user-guide/process-engine/receive-task.svg rename to docs/assets/documentation/user-guide/process-engine/receive-task.svg diff --git a/static/img/documentation/user-guide/process-engine/retry.png b/docs/assets/documentation/user-guide/process-engine/retry.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/retry.png rename to docs/assets/documentation/user-guide/process-engine/retry.png diff --git a/static/img/documentation/user-guide/process-engine/signal-event.svg b/docs/assets/documentation/user-guide/process-engine/signal-event.svg similarity index 100% rename from static/img/documentation/user-guide/process-engine/signal-event.svg rename to docs/assets/documentation/user-guide/process-engine/signal-event.svg diff --git a/static/img/documentation/user-guide/process-engine/timer-event.svg b/docs/assets/documentation/user-guide/process-engine/timer-event.svg similarity index 100% rename from static/img/documentation/user-guide/process-engine/timer-event.svg rename to docs/assets/documentation/user-guide/process-engine/timer-event.svg diff --git a/static/img/documentation/user-guide/process-engine/transactions-1.png b/docs/assets/documentation/user-guide/process-engine/transactions-1.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/transactions-1.png rename to docs/assets/documentation/user-guide/process-engine/transactions-1.png diff --git a/static/img/documentation/user-guide/process-engine/transactions-2.png b/docs/assets/documentation/user-guide/process-engine/transactions-2.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/transactions-2.png rename to docs/assets/documentation/user-guide/process-engine/transactions-2.png diff --git a/static/img/documentation/user-guide/process-engine/transactions-3.png b/docs/assets/documentation/user-guide/process-engine/transactions-3.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/transactions-3.png rename to docs/assets/documentation/user-guide/process-engine/transactions-3.png diff --git a/static/img/documentation/user-guide/process-engine/user-task.svg b/docs/assets/documentation/user-guide/process-engine/user-task.svg similarity index 100% rename from static/img/documentation/user-guide/process-engine/user-task.svg rename to docs/assets/documentation/user-guide/process-engine/user-task.svg diff --git a/static/img/documentation/user-guide/process-engine/variables-1.png b/docs/assets/documentation/user-guide/process-engine/variables-1.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/variables-1.png rename to docs/assets/documentation/user-guide/process-engine/variables-1.png diff --git a/static/img/documentation/user-guide/process-engine/variables-3.png b/docs/assets/documentation/user-guide/process-engine/variables-3.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/variables-3.png rename to docs/assets/documentation/user-guide/process-engine/variables-3.png diff --git a/static/img/documentation/user-guide/process-engine/variables-4.png b/docs/assets/documentation/user-guide/process-engine/variables-4.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/variables-4.png rename to docs/assets/documentation/user-guide/process-engine/variables-4.png diff --git a/static/img/documentation/user-guide/process-engine/variables-5.png b/docs/assets/documentation/user-guide/process-engine/variables-5.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/variables-5.png rename to docs/assets/documentation/user-guide/process-engine/variables-5.png diff --git a/static/img/documentation/user-guide/process-engine/variables-6.png b/docs/assets/documentation/user-guide/process-engine/variables-6.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/variables-6.png rename to docs/assets/documentation/user-guide/process-engine/variables-6.png diff --git a/static/img/documentation/user-guide/process-engine/versioning.png b/docs/assets/documentation/user-guide/process-engine/versioning.png similarity index 100% rename from static/img/documentation/user-guide/process-engine/versioning.png rename to docs/assets/documentation/user-guide/process-engine/versioning.png diff --git a/static/img/documentation/user-guide/runtime-container-integration/jboss-jconsole.png b/docs/assets/documentation/user-guide/runtime-container-integration/jboss-jconsole.png similarity index 100% rename from static/img/documentation/user-guide/runtime-container-integration/jboss-jconsole.png rename to docs/assets/documentation/user-guide/runtime-container-integration/jboss-jconsole.png diff --git a/static/img/documentation/user-guide/runtime-container-integration/jboss-service-dependencies.png b/docs/assets/documentation/user-guide/runtime-container-integration/jboss-service-dependencies.png similarity index 100% rename from static/img/documentation/user-guide/runtime-container-integration/jboss-service-dependencies.png rename to docs/assets/documentation/user-guide/runtime-container-integration/jboss-service-dependencies.png diff --git a/static/img/documentation/user-guide/task-forms/deploy-form.png b/docs/assets/documentation/user-guide/task-forms/deploy-form.png similarity index 100% rename from static/img/documentation/user-guide/task-forms/deploy-form.png rename to docs/assets/documentation/user-guide/task-forms/deploy-form.png diff --git a/static/img/documentation/user-guide/task-forms/generated-forms-example.png b/docs/assets/documentation/user-guide/task-forms/generated-forms-example.png similarity index 100% rename from static/img/documentation/user-guide/task-forms/generated-forms-example.png rename to docs/assets/documentation/user-guide/task-forms/generated-forms-example.png diff --git a/static/img/documentation/user-guide/task-forms/reference-operaton-form.png b/docs/assets/documentation/user-guide/task-forms/reference-operaton-form.png similarity index 100% rename from static/img/documentation/user-guide/task-forms/reference-operaton-form.png rename to docs/assets/documentation/user-guide/task-forms/reference-operaton-form.png diff --git a/static/img/documentation/user-guide/task-forms/start-process-button.png b/docs/assets/documentation/user-guide/task-forms/start-process-button.png similarity index 100% rename from static/img/documentation/user-guide/task-forms/start-process-button.png rename to docs/assets/documentation/user-guide/task-forms/start-process-button.png diff --git a/static/img/documentation/user-guide/task-forms/start-task-button.png b/docs/assets/documentation/user-guide/task-forms/start-task-button.png similarity index 100% rename from static/img/documentation/user-guide/task-forms/start-task-button.png rename to docs/assets/documentation/user-guide/task-forms/start-task-button.png diff --git a/static/img/documentation/user-guide/task-forms/startFormExample.png b/docs/assets/documentation/user-guide/task-forms/startFormExample.png similarity index 100% rename from static/img/documentation/user-guide/task-forms/startFormExample.png rename to docs/assets/documentation/user-guide/task-forms/startFormExample.png diff --git a/static/img/documentation/user-guide/task-forms/task-form-process.png b/docs/assets/documentation/user-guide/task-forms/task-form-process.png similarity index 100% rename from static/img/documentation/user-guide/task-forms/task-form-process.png rename to docs/assets/documentation/user-guide/task-forms/task-form-process.png diff --git a/static/img/documentation/user-guide/task-forms/tasklist-forms-layouted-start.png b/docs/assets/documentation/user-guide/task-forms/tasklist-forms-layouted-start.png similarity index 100% rename from static/img/documentation/user-guide/task-forms/tasklist-forms-layouted-start.png rename to docs/assets/documentation/user-guide/task-forms/tasklist-forms-layouted-start.png diff --git a/static/img/documentation/user-guide/task-forms/tasklist-generic-form.png b/docs/assets/documentation/user-guide/task-forms/tasklist-generic-form.png similarity index 100% rename from static/img/documentation/user-guide/task-forms/tasklist-generic-form.png rename to docs/assets/documentation/user-guide/task-forms/tasklist-generic-form.png diff --git a/static/img/documentation/user-guide/task-forms/variable-mapping-operaton-form.png b/docs/assets/documentation/user-guide/task-forms/variable-mapping-operaton-form.png similarity index 100% rename from static/img/documentation/user-guide/task-forms/variable-mapping-operaton-form.png rename to docs/assets/documentation/user-guide/task-forms/variable-mapping-operaton-form.png diff --git a/static/img/documentation/user-guide/task-forms/variablesTaskFormExample.png b/docs/assets/documentation/user-guide/task-forms/variablesTaskFormExample.png similarity index 100% rename from static/img/documentation/user-guide/task-forms/variablesTaskFormExample.png rename to docs/assets/documentation/user-guide/task-forms/variablesTaskFormExample.png diff --git a/static/img/documentation/user-guide/testing/api-test-debug-breakpoint.png b/docs/assets/documentation/user-guide/testing/api-test-debug-breakpoint.png similarity index 100% rename from static/img/documentation/user-guide/testing/api-test-debug-breakpoint.png rename to docs/assets/documentation/user-guide/testing/api-test-debug-breakpoint.png diff --git a/static/img/documentation/user-guide/testing/api-test-debug-h2-login.png b/docs/assets/documentation/user-guide/testing/api-test-debug-h2-login.png similarity index 100% rename from static/img/documentation/user-guide/testing/api-test-debug-h2-login.png rename to docs/assets/documentation/user-guide/testing/api-test-debug-h2-login.png diff --git a/static/img/documentation/user-guide/testing/api-test-debug-h2-tables.png b/docs/assets/documentation/user-guide/testing/api-test-debug-h2-tables.png similarity index 100% rename from static/img/documentation/user-guide/testing/api-test-debug-h2-tables.png rename to docs/assets/documentation/user-guide/testing/api-test-debug-h2-tables.png diff --git a/static/img/documentation/user-guide/testing/api-test-debug-start-h2-server-2.png b/docs/assets/documentation/user-guide/testing/api-test-debug-start-h2-server-2.png similarity index 100% rename from static/img/documentation/user-guide/testing/api-test-debug-start-h2-server-2.png rename to docs/assets/documentation/user-guide/testing/api-test-debug-start-h2-server-2.png diff --git a/static/img/documentation/user-guide/testing/api-test-debug-start-h2-server.png b/docs/assets/documentation/user-guide/testing/api-test-debug-start-h2-server.png similarity index 100% rename from static/img/documentation/user-guide/testing/api-test-debug-start-h2-server.png rename to docs/assets/documentation/user-guide/testing/api-test-debug-start-h2-server.png diff --git a/static/img/documentation/user-guide/testing/api-test-debug-view.png b/docs/assets/documentation/user-guide/testing/api-test-debug-view.png similarity index 100% rename from static/img/documentation/user-guide/testing/api-test-debug-view.png rename to docs/assets/documentation/user-guide/testing/api-test-debug-view.png diff --git a/static/img/documentation/user-guide/testing/test-scopes.png b/docs/assets/documentation/user-guide/testing/test-scopes.png similarity index 100% rename from static/img/documentation/user-guide/testing/test-scopes.png rename to docs/assets/documentation/user-guide/testing/test-scopes.png diff --git a/static/img/documentation/webapps/admin/admin-access.png b/docs/assets/documentation/webapps/admin/admin-access.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-access.png rename to docs/assets/documentation/webapps/admin/admin-access.png diff --git a/static/img/documentation/webapps/admin/admin-audit-entity.png b/docs/assets/documentation/webapps/admin/admin-audit-entity.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-audit-entity.png rename to docs/assets/documentation/webapps/admin/admin-audit-entity.png diff --git a/static/img/documentation/webapps/admin/admin-authorization-application-new-group.png b/docs/assets/documentation/webapps/admin/admin-authorization-application-new-group.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-authorization-application-new-group.png rename to docs/assets/documentation/webapps/admin/admin-authorization-application-new-group.png diff --git a/static/img/documentation/webapps/admin/admin-authorization-application-new-user.png b/docs/assets/documentation/webapps/admin/admin-authorization-application-new-user.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-authorization-application-new-user.png rename to docs/assets/documentation/webapps/admin/admin-authorization-application-new-user.png diff --git a/static/img/documentation/webapps/admin/admin-authorization-filter.png b/docs/assets/documentation/webapps/admin/admin-authorization-filter.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-authorization-filter.png rename to docs/assets/documentation/webapps/admin/admin-authorization-filter.png diff --git a/static/img/documentation/webapps/admin/admin-authorization-users.png b/docs/assets/documentation/webapps/admin/admin-authorization-users.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-authorization-users.png rename to docs/assets/documentation/webapps/admin/admin-authorization-users.png diff --git a/static/img/documentation/webapps/admin/admin-authorization.png b/docs/assets/documentation/webapps/admin/admin-authorization.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-authorization.png rename to docs/assets/documentation/webapps/admin/admin-authorization.png diff --git a/static/img/documentation/webapps/admin/admin-diagnostics.png b/docs/assets/documentation/webapps/admin/admin-diagnostics.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-diagnostics.png rename to docs/assets/documentation/webapps/admin/admin-diagnostics.png diff --git a/static/img/documentation/webapps/admin/admin-execution-metrics.png b/docs/assets/documentation/webapps/admin/admin-execution-metrics.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-execution-metrics.png rename to docs/assets/documentation/webapps/admin/admin-execution-metrics.png diff --git a/static/img/documentation/webapps/admin/admin-groups.png b/docs/assets/documentation/webapps/admin/admin-groups.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-groups.png rename to docs/assets/documentation/webapps/admin/admin-groups.png diff --git a/static/img/documentation/webapps/admin/admin-initial-user-setup.png b/docs/assets/documentation/webapps/admin/admin-initial-user-setup.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-initial-user-setup.png rename to docs/assets/documentation/webapps/admin/admin-initial-user-setup.png diff --git a/static/img/documentation/webapps/admin/admin-start-page-view.png b/docs/assets/documentation/webapps/admin/admin-start-page-view.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-start-page-view.png rename to docs/assets/documentation/webapps/admin/admin-start-page-view.png diff --git a/static/img/documentation/webapps/admin/admin-system-audit.png b/docs/assets/documentation/webapps/admin/admin-system-audit.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-system-audit.png rename to docs/assets/documentation/webapps/admin/admin-system-audit.png diff --git a/static/img/documentation/webapps/admin/admin-system-management.png b/docs/assets/documentation/webapps/admin/admin-system-management.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-system-management.png rename to docs/assets/documentation/webapps/admin/admin-system-management.png diff --git a/static/img/documentation/webapps/admin/admin-tenants.png b/docs/assets/documentation/webapps/admin/admin-tenants.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-tenants.png rename to docs/assets/documentation/webapps/admin/admin-tenants.png diff --git a/static/img/documentation/webapps/admin/admin-users.png b/docs/assets/documentation/webapps/admin/admin-users.png similarity index 100% rename from static/img/documentation/webapps/admin/admin-users.png rename to docs/assets/documentation/webapps/admin/admin-users.png diff --git a/static/img/documentation/webapps/admin/admin_auth_edit_full_access.png b/docs/assets/documentation/webapps/admin/admin_auth_edit_full_access.png similarity index 100% rename from static/img/documentation/webapps/admin/admin_auth_edit_full_access.png rename to docs/assets/documentation/webapps/admin/admin_auth_edit_full_access.png diff --git a/static/img/documentation/webapps/admin/admin_cockpit_access_group.png b/docs/assets/documentation/webapps/admin/admin_cockpit_access_group.png similarity index 100% rename from static/img/documentation/webapps/admin/admin_cockpit_access_group.png rename to docs/assets/documentation/webapps/admin/admin_cockpit_access_group.png diff --git a/static/img/documentation/webapps/admin/admin_cockpit_proc_inst_id.png b/docs/assets/documentation/webapps/admin/admin_cockpit_proc_inst_id.png similarity index 100% rename from static/img/documentation/webapps/admin/admin_cockpit_proc_inst_id.png rename to docs/assets/documentation/webapps/admin/admin_cockpit_proc_inst_id.png diff --git a/static/img/documentation/webapps/admin/admin_filter_acc_read.png b/docs/assets/documentation/webapps/admin/admin_filter_acc_read.png similarity index 100% rename from static/img/documentation/webapps/admin/admin_filter_acc_read.png rename to docs/assets/documentation/webapps/admin/admin_filter_acc_read.png diff --git a/static/img/documentation/webapps/admin/admin_proc_def_acc_read.png b/docs/assets/documentation/webapps/admin/admin_proc_def_acc_read.png similarity index 100% rename from static/img/documentation/webapps/admin/admin_proc_def_acc_read.png rename to docs/assets/documentation/webapps/admin/admin_proc_def_acc_read.png diff --git a/static/img/documentation/webapps/admin/admin_proc_def_acc_read_create_inst_access.png b/docs/assets/documentation/webapps/admin/admin_proc_def_acc_read_create_inst_access.png similarity index 100% rename from static/img/documentation/webapps/admin/admin_proc_def_acc_read_create_inst_access.png rename to docs/assets/documentation/webapps/admin/admin_proc_def_acc_read_create_inst_access.png diff --git a/static/img/documentation/webapps/admin/admin_proc_def_group_full_access.png b/docs/assets/documentation/webapps/admin/admin_proc_def_group_full_access.png similarity index 100% rename from static/img/documentation/webapps/admin/admin_proc_def_group_full_access.png rename to docs/assets/documentation/webapps/admin/admin_proc_def_group_full_access.png diff --git a/static/img/documentation/webapps/admin/admin_proc_def_group_read_access.png b/docs/assets/documentation/webapps/admin/admin_proc_def_group_read_access.png similarity index 100% rename from static/img/documentation/webapps/admin/admin_proc_def_group_read_access.png rename to docs/assets/documentation/webapps/admin/admin_proc_def_group_read_access.png diff --git a/static/img/documentation/webapps/admin/admin_proc_inst_acc_create.png b/docs/assets/documentation/webapps/admin/admin_proc_inst_acc_create.png similarity index 100% rename from static/img/documentation/webapps/admin/admin_proc_inst_acc_create.png rename to docs/assets/documentation/webapps/admin/admin_proc_inst_acc_create.png diff --git a/static/img/documentation/webapps/admin/admin_proc_inst_id_acc.png b/docs/assets/documentation/webapps/admin/admin_proc_inst_id_acc.png similarity index 100% rename from static/img/documentation/webapps/admin/admin_proc_inst_id_acc.png rename to docs/assets/documentation/webapps/admin/admin_proc_inst_id_acc.png diff --git a/static/img/documentation/webapps/admin/admin_task_acc_edit.png b/docs/assets/documentation/webapps/admin/admin_task_acc_edit.png similarity index 100% rename from static/img/documentation/webapps/admin/admin_task_acc_edit.png rename to docs/assets/documentation/webapps/admin/admin_task_acc_edit.png diff --git a/static/img/documentation/webapps/admin/admin_tasklist_access_group.png b/docs/assets/documentation/webapps/admin/admin_tasklist_access_group.png similarity index 100% rename from static/img/documentation/webapps/admin/admin_tasklist_access_group.png rename to docs/assets/documentation/webapps/admin/admin_tasklist_access_group.png diff --git a/static/img/documentation/webapps/cockpit/batch/batch-in-operator-modal.png b/docs/assets/documentation/webapps/cockpit/batch/batch-in-operator-modal.png similarity index 100% rename from static/img/documentation/webapps/cockpit/batch/batch-in-operator-modal.png rename to docs/assets/documentation/webapps/cockpit/batch/batch-in-operator-modal.png diff --git a/static/img/documentation/webapps/cockpit/batch/batch-in-operator.png b/docs/assets/documentation/webapps/cockpit/batch/batch-in-operator.png similarity index 100% rename from static/img/documentation/webapps/cockpit/batch/batch-in-operator.png rename to docs/assets/documentation/webapps/cockpit/batch/batch-in-operator.png diff --git a/static/img/documentation/webapps/cockpit/batch/batch-search.png b/docs/assets/documentation/webapps/cockpit/batch/batch-search.png similarity index 100% rename from static/img/documentation/webapps/cockpit/batch/batch-search.png rename to docs/assets/documentation/webapps/cockpit/batch/batch-search.png diff --git a/static/img/documentation/webapps/cockpit/batch/batch.png b/docs/assets/documentation/webapps/cockpit/batch/batch.png similarity index 100% rename from static/img/documentation/webapps/cockpit/batch/batch.png rename to docs/assets/documentation/webapps/cockpit/batch/batch.png diff --git a/static/img/documentation/webapps/cockpit/batch/batch_operation_confirmation.png b/docs/assets/documentation/webapps/cockpit/batch/batch_operation_confirmation.png similarity index 100% rename from static/img/documentation/webapps/cockpit/batch/batch_operation_confirmation.png rename to docs/assets/documentation/webapps/cockpit/batch/batch_operation_confirmation.png diff --git a/static/img/documentation/webapps/cockpit/batch/batch_operation_definition.png b/docs/assets/documentation/webapps/cockpit/batch/batch_operation_definition.png similarity index 100% rename from static/img/documentation/webapps/cockpit/batch/batch_operation_definition.png rename to docs/assets/documentation/webapps/cockpit/batch/batch_operation_definition.png diff --git a/static/img/documentation/webapps/cockpit/batch/batch_operation_result.png b/docs/assets/documentation/webapps/cockpit/batch/batch_operation_result.png similarity index 100% rename from static/img/documentation/webapps/cockpit/batch/batch_operation_result.png rename to docs/assets/documentation/webapps/cockpit/batch/batch_operation_result.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/accessing_2.png b/docs/assets/documentation/webapps/cockpit/bpmn/accessing_2.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/accessing_2.png rename to docs/assets/documentation/webapps/cockpit/bpmn/accessing_2.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/add-filter.png b/docs/assets/documentation/webapps/cockpit/bpmn/add-filter.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/add-filter.png rename to docs/assets/documentation/webapps/cockpit/bpmn/add-filter.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/batch-operation.png b/docs/assets/documentation/webapps/cockpit/bpmn/batch-operation.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/batch-operation.png rename to docs/assets/documentation/webapps/cockpit/bpmn/batch-operation.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/breadcrumbs.png b/docs/assets/documentation/webapps/cockpit/bpmn/breadcrumbs.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/breadcrumbs.png rename to docs/assets/documentation/webapps/cockpit/bpmn/breadcrumbs.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/business-key.png b/docs/assets/documentation/webapps/cockpit/bpmn/business-key.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/business-key.png rename to docs/assets/documentation/webapps/cockpit/bpmn/business-key.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-activity-instance-tree-view.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-activity-instance-tree-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-activity-instance-tree-view.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-activity-instance-tree-view.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-add-variables.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-add-variables.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-add-variables.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-add-variables.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-detail.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-detail.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-detail.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-detail.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-instance-selection.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-instance-selection.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-instance-selection.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-instance-selection.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-options.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-options.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-options.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-options.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-view.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-view.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-view.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-bulk-delete.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-bulk-delete.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-bulk-delete.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-bulk-delete.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-bulk-retry.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-bulk-retry.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-bulk-retry.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-bulk-retry.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-call-activity-definition-navigation.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-call-activity-definition-navigation.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-call-activity-definition-navigation.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-call-activity-definition-navigation.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-call-activity-instance-drill-down.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-call-activity-instance-drill-down.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-call-activity-instance-drill-down.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-call-activity-instance-drill-down.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-cancel-process-instance.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-cancel-process-instance.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-cancel-process-instance.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-cancel-process-instance.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-delete-process-definition.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-delete-process-definition.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-delete-process-definition.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-delete-process-definition.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes-search.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes-search.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes-search.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes-search.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-detailed-information-view.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-detailed-information-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-detailed-information-view.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-detailed-information-view.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-documentation.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-documentation.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-documentation.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-documentation.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-edit-variables.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-edit-variables.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-edit-variables.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-edit-variables.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-export-download-as-csv.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-export-download-as-csv.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-export-download-as-csv.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-export-download-as-csv.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-export-modal-dialog.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-export-modal-dialog.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-export-modal-dialog.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-export-modal-dialog.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-export-result.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-export-result.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-export-result.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-export-result.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-export.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-export.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-export.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-export.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-failed-job-drill-down.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-failed-job-drill-down.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-failed-job-drill-down.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-failed-job-drill-down.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-heatmap.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-heatmap.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-heatmap.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-heatmap.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-definition-history.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-definition-history.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-definition-history.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-definition-history.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-instance-history.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-instance-history.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-instance-history.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-instance-history.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-in-operator-modal.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-in-operator-modal.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-in-operator-modal.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-in-operator-modal.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-in-operator.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-in-operator.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-in-operator.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-in-operator.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-instance-job-retry.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-instance-job-retry.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-instance-job-retry.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-instance-job-retry.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-modification-cancel.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-cancel.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-modification-cancel.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-cancel.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-modification-review.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-review.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-modification-review.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-review.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-modification-start.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-start.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-modification-start.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-start.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-modification.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-modification.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-modification.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-modification.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-process-definition-state.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-process-definition-state.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-process-definition-state.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-process-definition-state.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-process-definitions-view.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-process-definitions-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-process-definitions-view.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-process-definitions-view.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-process-instances-view.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-process-instances-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-process-instances-view.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-process-instances-view.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-restart-confirm.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-restart-confirm.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-restart-confirm.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-restart-confirm.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-restart-instance-selection.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-restart-instance-selection.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-restart-instance-selection.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-restart-instance-selection.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-restart.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-restart.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-restart.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-restart.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-search.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-search.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-search.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-search.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/cockpit-set-job-priority.png b/docs/assets/documentation/webapps/cockpit/bpmn/cockpit-set-job-priority.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/cockpit-set-job-priority.png rename to docs/assets/documentation/webapps/cockpit/bpmn/cockpit-set-job-priority.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/diagram-overlay-button.png b/docs/assets/documentation/webapps/cockpit/bpmn/diagram-overlay-button.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/diagram-overlay-button.png rename to docs/assets/documentation/webapps/cockpit/bpmn/diagram-overlay-button.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/history-completed.png b/docs/assets/documentation/webapps/cockpit/bpmn/history-completed.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/history-completed.png rename to docs/assets/documentation/webapps/cockpit/bpmn/history-completed.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/history-end-date.png b/docs/assets/documentation/webapps/cockpit/bpmn/history-end-date.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/history-end-date.png rename to docs/assets/documentation/webapps/cockpit/bpmn/history-end-date.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/history-running.png b/docs/assets/documentation/webapps/cockpit/bpmn/history-running.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/history-running.png rename to docs/assets/documentation/webapps/cockpit/bpmn/history-running.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/migration.png b/docs/assets/documentation/webapps/cockpit/bpmn/migration.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/migration.png rename to docs/assets/documentation/webapps/cockpit/bpmn/migration.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/modal-dialog.png b/docs/assets/documentation/webapps/cockpit/bpmn/modal-dialog.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/modal-dialog.png rename to docs/assets/documentation/webapps/cockpit/bpmn/modal-dialog.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/process-action.png b/docs/assets/documentation/webapps/cockpit/bpmn/process-action.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/process-action.png rename to docs/assets/documentation/webapps/cockpit/bpmn/process-action.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/shape.png b/docs/assets/documentation/webapps/cockpit/bpmn/shape.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/shape.png rename to docs/assets/documentation/webapps/cockpit/bpmn/shape.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/start-date-before-after.png b/docs/assets/documentation/webapps/cockpit/bpmn/start-date-before-after.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/start-date-before-after.png rename to docs/assets/documentation/webapps/cockpit/bpmn/start-date-before-after.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/start-date.png b/docs/assets/documentation/webapps/cockpit/bpmn/start-date.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/start-date.png rename to docs/assets/documentation/webapps/cockpit/bpmn/start-date.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/step1_createMapping.png b/docs/assets/documentation/webapps/cockpit/bpmn/step1_createMapping.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/step1_createMapping.png rename to docs/assets/documentation/webapps/cockpit/bpmn/step1_createMapping.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/step1_errorPopover.png b/docs/assets/documentation/webapps/cockpit/bpmn/step1_errorPopover.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/step1_errorPopover.png rename to docs/assets/documentation/webapps/cockpit/bpmn/step1_errorPopover.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/step1_overview.png b/docs/assets/documentation/webapps/cockpit/bpmn/step1_overview.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/step1_overview.png rename to docs/assets/documentation/webapps/cockpit/bpmn/step1_overview.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/step2.png b/docs/assets/documentation/webapps/cockpit/bpmn/step2.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/step2.png rename to docs/assets/documentation/webapps/cockpit/bpmn/step2.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/step2_edit.png b/docs/assets/documentation/webapps/cockpit/bpmn/step2_edit.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/step2_edit.png rename to docs/assets/documentation/webapps/cockpit/bpmn/step2_edit.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/step2_modal.png b/docs/assets/documentation/webapps/cockpit/bpmn/step2_modal.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/step2_modal.png rename to docs/assets/documentation/webapps/cockpit/bpmn/step2_modal.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/step2_validation.png b/docs/assets/documentation/webapps/cockpit/bpmn/step2_validation.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/step2_validation.png rename to docs/assets/documentation/webapps/cockpit/bpmn/step2_validation.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/step3.png b/docs/assets/documentation/webapps/cockpit/bpmn/step3.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/step3.png rename to docs/assets/documentation/webapps/cockpit/bpmn/step3.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/step4.png b/docs/assets/documentation/webapps/cockpit/bpmn/step4.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/step4.png rename to docs/assets/documentation/webapps/cockpit/bpmn/step4.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/step5_batch.png b/docs/assets/documentation/webapps/cockpit/bpmn/step5_batch.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/step5_batch.png rename to docs/assets/documentation/webapps/cockpit/bpmn/step5_batch.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/step5_error.png b/docs/assets/documentation/webapps/cockpit/bpmn/step5_error.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/step5_error.png rename to docs/assets/documentation/webapps/cockpit/bpmn/step5_error.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/var-boolean.png b/docs/assets/documentation/webapps/cockpit/bpmn/var-boolean.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/var-boolean.png rename to docs/assets/documentation/webapps/cockpit/bpmn/var-boolean.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/var-numeric.png b/docs/assets/documentation/webapps/cockpit/bpmn/var-numeric.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/var-numeric.png rename to docs/assets/documentation/webapps/cockpit/bpmn/var-numeric.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/var-string.png b/docs/assets/documentation/webapps/cockpit/bpmn/var-string.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/var-string.png rename to docs/assets/documentation/webapps/cockpit/bpmn/var-string.png diff --git a/static/img/documentation/webapps/cockpit/bpmn/variable-filter.png b/docs/assets/documentation/webapps/cockpit/bpmn/variable-filter.png similarity index 100% rename from static/img/documentation/webapps/cockpit/bpmn/variable-filter.png rename to docs/assets/documentation/webapps/cockpit/bpmn/variable-filter.png diff --git a/static/img/documentation/webapps/cockpit/cmmn/add-variables.png b/docs/assets/documentation/webapps/cockpit/cmmn/add-variables.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cmmn/add-variables.png rename to docs/assets/documentation/webapps/cockpit/cmmn/add-variables.png diff --git a/static/img/documentation/webapps/cockpit/cmmn/case-dashboard-deployed.png b/docs/assets/documentation/webapps/cockpit/cmmn/case-dashboard-deployed.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cmmn/case-dashboard-deployed.png rename to docs/assets/documentation/webapps/cockpit/cmmn/case-dashboard-deployed.png diff --git a/static/img/documentation/webapps/cockpit/cmmn/case-dashboard-search.png b/docs/assets/documentation/webapps/cockpit/cmmn/case-dashboard-search.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cmmn/case-dashboard-search.png rename to docs/assets/documentation/webapps/cockpit/cmmn/case-dashboard-search.png diff --git a/static/img/documentation/webapps/cockpit/cmmn/case-definition-view.png b/docs/assets/documentation/webapps/cockpit/cmmn/case-definition-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cmmn/case-definition-view.png rename to docs/assets/documentation/webapps/cockpit/cmmn/case-definition-view.png diff --git a/static/img/documentation/webapps/cockpit/cmmn/case-instance-view.png b/docs/assets/documentation/webapps/cockpit/cmmn/case-instance-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cmmn/case-instance-view.png rename to docs/assets/documentation/webapps/cockpit/cmmn/case-instance-view.png diff --git a/static/img/documentation/webapps/cockpit/cmmn/detailed-information-view.png b/docs/assets/documentation/webapps/cockpit/cmmn/detailed-information-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cmmn/detailed-information-view.png rename to docs/assets/documentation/webapps/cockpit/cmmn/detailed-information-view.png diff --git a/static/img/documentation/webapps/cockpit/cmmn/edit-variables.png b/docs/assets/documentation/webapps/cockpit/cmmn/edit-variables.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cmmn/edit-variables.png rename to docs/assets/documentation/webapps/cockpit/cmmn/edit-variables.png diff --git a/static/img/documentation/webapps/cockpit/cmmn/terminate-case.png b/docs/assets/documentation/webapps/cockpit/cmmn/terminate-case.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cmmn/terminate-case.png rename to docs/assets/documentation/webapps/cockpit/cmmn/terminate-case.png diff --git a/static/img/documentation/webapps/cockpit/cockpit-audit-annotation.png b/docs/assets/documentation/webapps/cockpit/cockpit-audit-annotation.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cockpit-audit-annotation.png rename to docs/assets/documentation/webapps/cockpit/cockpit-audit-annotation.png diff --git a/static/img/documentation/webapps/cockpit/cockpit-audit-timestamp.png b/docs/assets/documentation/webapps/cockpit/cockpit-audit-timestamp.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cockpit-audit-timestamp.png rename to docs/assets/documentation/webapps/cockpit/cockpit-audit-timestamp.png diff --git a/static/img/documentation/webapps/cockpit/cockpit-audit-type.png b/docs/assets/documentation/webapps/cockpit/cockpit-audit-type.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cockpit-audit-type.png rename to docs/assets/documentation/webapps/cockpit/cockpit-audit-type.png diff --git a/static/img/documentation/webapps/cockpit/cockpit-cleanup-page.png b/docs/assets/documentation/webapps/cockpit/cockpit-cleanup-page.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cockpit-cleanup-page.png rename to docs/assets/documentation/webapps/cockpit/cockpit-cleanup-page.png diff --git a/static/img/documentation/webapps/cockpit/cockpit-cleanup-state-incident.png b/docs/assets/documentation/webapps/cockpit/cockpit-cleanup-state-incident.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cockpit-cleanup-state-incident.png rename to docs/assets/documentation/webapps/cockpit/cockpit-cleanup-state-incident.png diff --git a/static/img/documentation/webapps/cockpit/cockpit-cleanup-ttl.png b/docs/assets/documentation/webapps/cockpit/cockpit-cleanup-ttl.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cockpit-cleanup-ttl.png rename to docs/assets/documentation/webapps/cockpit/cockpit-cleanup-ttl.png diff --git a/static/img/documentation/webapps/cockpit/cockpit-deployments-page.png b/docs/assets/documentation/webapps/cockpit/cockpit-deployments-page.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cockpit-deployments-page.png rename to docs/assets/documentation/webapps/cockpit/cockpit-deployments-page.png diff --git a/static/img/documentation/webapps/cockpit/cockpit-multi-engine.png b/docs/assets/documentation/webapps/cockpit/cockpit-multi-engine.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cockpit-multi-engine.png rename to docs/assets/documentation/webapps/cockpit/cockpit-multi-engine.png diff --git a/static/img/documentation/webapps/cockpit/cockpit-operation-log.png b/docs/assets/documentation/webapps/cockpit/cockpit-operation-log.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cockpit-operation-log.png rename to docs/assets/documentation/webapps/cockpit/cockpit-operation-log.png diff --git a/static/img/documentation/webapps/cockpit/cockpit-user-operation-log.png b/docs/assets/documentation/webapps/cockpit/cockpit-user-operation-log.png similarity index 100% rename from static/img/documentation/webapps/cockpit/cockpit-user-operation-log.png rename to docs/assets/documentation/webapps/cockpit/cockpit-user-operation-log.png diff --git a/static/img/documentation/webapps/cockpit/dashboard-metrics.png b/docs/assets/documentation/webapps/cockpit/dashboard-metrics.png similarity index 100% rename from static/img/documentation/webapps/cockpit/dashboard-metrics.png rename to docs/assets/documentation/webapps/cockpit/dashboard-metrics.png diff --git a/static/img/documentation/webapps/cockpit/dashboard.png b/docs/assets/documentation/webapps/cockpit/dashboard.png similarity index 100% rename from static/img/documentation/webapps/cockpit/dashboard.png rename to docs/assets/documentation/webapps/cockpit/dashboard.png diff --git a/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-list.png b/docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-list.png similarity index 100% rename from static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-list.png rename to docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-list.png diff --git a/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-drd-tab.png b/docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-drd-tab.png similarity index 100% rename from static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-drd-tab.png rename to docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-drd-tab.png diff --git a/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instance-instances-tab.png b/docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instance-instances-tab.png similarity index 100% rename from static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instance-instances-tab.png rename to docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instance-instances-tab.png diff --git a/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instances-tab.png b/docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instances-tab.png similarity index 100% rename from static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instances-tab.png rename to docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instances-tab.png diff --git a/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-view.png b/docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-view.png rename to docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-view.png diff --git a/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-instance-view.png b/docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-instance-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/dmn/cockpit-decision-instance-view.png rename to docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-instance-view.png diff --git a/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-instance-view.png b/docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-instance-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-instance-view.png rename to docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-instance-view.png diff --git a/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-view.png b/docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-view.png rename to docs/assets/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-view.png diff --git a/static/img/documentation/webapps/cockpit/dmn/cockpit-drd-list.png b/docs/assets/documentation/webapps/cockpit/dmn/cockpit-drd-list.png similarity index 100% rename from static/img/documentation/webapps/cockpit/dmn/cockpit-drd-list.png rename to docs/assets/documentation/webapps/cockpit/dmn/cockpit-drd-list.png diff --git a/static/img/documentation/webapps/cockpit/dmn/decision-instance-search.png b/docs/assets/documentation/webapps/cockpit/dmn/decision-instance-search.png similarity index 100% rename from static/img/documentation/webapps/cockpit/dmn/decision-instance-search.png rename to docs/assets/documentation/webapps/cockpit/dmn/decision-instance-search.png diff --git a/static/img/documentation/webapps/cockpit/duration-report.png b/docs/assets/documentation/webapps/cockpit/duration-report.png similarity index 100% rename from static/img/documentation/webapps/cockpit/duration-report.png rename to docs/assets/documentation/webapps/cockpit/duration-report.png diff --git a/static/img/documentation/webapps/cockpit/extend/cockpit-plugin.png b/docs/assets/documentation/webapps/cockpit/extend/cockpit-plugin.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/cockpit-plugin.png rename to docs/assets/documentation/webapps/cockpit/extend/cockpit-plugin.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-batch-operation.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-batch-operation.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-batch-operation.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-batch-operation.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-action.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-action.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-action.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-action.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-diagram-overlay.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-diagram-overlay.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-diagram-overlay.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-diagram-overlay.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-tab.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-tab.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-tab.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-tab.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-action.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-action.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-action.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-action.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-diagram-overlay.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-diagram-overlay.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-diagram-overlay.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-diagram-overlay.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-tab.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-tab.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-tab.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-tab.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-cases-dashboard.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-cases-dashboard.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-cases-dashboard.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-cases-dashboard.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-decisions-dashboard.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-decisions-dashboard.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-decisions-dashboard.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-decisions-dashboard.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-definition-view.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-definition-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-definition-view.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-definition-view.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-instance-view.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-instance-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-instance-view.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-instance-view.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-processes-dashboard.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-processes-dashboard.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-processes-dashboard.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-processes-dashboard.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-dashboard-custom.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-dashboard-custom.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-dashboard-custom.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-dashboard-custom.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-dashboard-metrics-view.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-dashboard-metrics-view.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-dashboard-metrics-view.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-dashboard-metrics-view.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-action.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-action.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-action.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-action.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-tab.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-tab.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-tab.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-tab.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-table.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-table.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-table.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-table.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-action.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-action.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-action.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-action.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-tab.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-tab.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-tab.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-tab.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-table.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-table.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-table.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-table.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-definition-diagram-overlay.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-definition-diagram-overlay.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-definition-diagram-overlay.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-definition-diagram-overlay.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-incident-action.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-incident-action.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-incident-action.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-incident-action.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-instance-diagram-overlay.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-instance-diagram-overlay.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-instance-diagram-overlay.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-instance-diagram-overlay.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-job-definition-action.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-job-definition-action.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-job-definition-action.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-job-definition-action.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-login-custom.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-login-custom.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-login-custom.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-login-custom.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-navigation.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-navigation.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-navigation.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-navigation.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-process-definition-details.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-process-definition-details.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-process-definition-details.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-process-definition-details.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-process-definition-runtime-action.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-process-definition-runtime-action.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-process-definition-runtime-action.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-process-definition-runtime-action.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-process-instance-details.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-process-instance-details.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-process-instance-details.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-process-instance-details.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-process-instance-runtime-action.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-process-instance-runtime-action.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-process-instance-runtime-action.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-process-instance-runtime-action.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-repository-resource-action.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-repository-resource-action.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-repository-resource-action.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-repository-resource-action.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-repository-resource-detail.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-repository-resource-detail.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-repository-resource-detail.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-repository-resource-detail.png diff --git a/static/img/documentation/webapps/cockpit/extend/plugin-point-task-dashboard.png b/docs/assets/documentation/webapps/cockpit/extend/plugin-point-task-dashboard.png similarity index 100% rename from static/img/documentation/webapps/cockpit/extend/plugin-point-task-dashboard.png rename to docs/assets/documentation/webapps/cockpit/extend/plugin-point-task-dashboard.png diff --git a/static/img/documentation/webapps/cockpit/historic-task-instance-report.png b/docs/assets/documentation/webapps/cockpit/historic-task-instance-report.png similarity index 100% rename from static/img/documentation/webapps/cockpit/historic-task-instance-report.png rename to docs/assets/documentation/webapps/cockpit/historic-task-instance-report.png diff --git a/static/img/documentation/webapps/cockpit/task-dashboard.png b/docs/assets/documentation/webapps/cockpit/task-dashboard.png similarity index 100% rename from static/img/documentation/webapps/cockpit/task-dashboard.png rename to docs/assets/documentation/webapps/cockpit/task-dashboard.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-case-insensitive.png b/docs/assets/documentation/webapps/tasklist/tasklist-case-insensitive.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-case-insensitive.png rename to docs/assets/documentation/webapps/tasklist/tasklist-case-insensitive.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-create-filter.png b/docs/assets/documentation/webapps/tasklist/tasklist-create-filter.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-create-filter.png rename to docs/assets/documentation/webapps/tasklist/tasklist-create-filter.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-dashboard-detail.png b/docs/assets/documentation/webapps/tasklist/tasklist-dashboard-detail.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-dashboard-detail.png rename to docs/assets/documentation/webapps/tasklist/tasklist-dashboard-detail.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-filter-detail.png b/docs/assets/documentation/webapps/tasklist/tasklist-filter-detail.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-filter-detail.png rename to docs/assets/documentation/webapps/tasklist/tasklist-filter-detail.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-filter-results.png b/docs/assets/documentation/webapps/tasklist/tasklist-filter-results.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-filter-results.png rename to docs/assets/documentation/webapps/tasklist/tasklist-filter-results.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-in-operator-modal.png b/docs/assets/documentation/webapps/tasklist/tasklist-in-operator-modal.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-in-operator-modal.png rename to docs/assets/documentation/webapps/tasklist/tasklist-in-operator-modal.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-in-operator.png b/docs/assets/documentation/webapps/tasklist/tasklist-in-operator.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-in-operator.png rename to docs/assets/documentation/webapps/tasklist/tasklist-in-operator.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-plugin-card.png b/docs/assets/documentation/webapps/tasklist/tasklist-plugin-card.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-plugin-card.png rename to docs/assets/documentation/webapps/tasklist/tasklist-plugin-card.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-plugin-list.png b/docs/assets/documentation/webapps/tasklist/tasklist-plugin-list.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-plugin-list.png rename to docs/assets/documentation/webapps/tasklist/tasklist-plugin-list.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-plugin-navbar-action.png b/docs/assets/documentation/webapps/tasklist/tasklist-plugin-navbar-action.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-plugin-navbar-action.png rename to docs/assets/documentation/webapps/tasklist/tasklist-plugin-navbar-action.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-plugin-task-action.png b/docs/assets/documentation/webapps/tasklist/tasklist-plugin-task-action.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-plugin-task-action.png rename to docs/assets/documentation/webapps/tasklist/tasklist-plugin-task-action.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-plugin-task-detail.png b/docs/assets/documentation/webapps/tasklist/tasklist-plugin-task-detail.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-plugin-task-detail.png rename to docs/assets/documentation/webapps/tasklist/tasklist-plugin-task-detail.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-plugin-tasklist-header.png b/docs/assets/documentation/webapps/tasklist/tasklist-plugin-tasklist-header.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-plugin-tasklist-header.png rename to docs/assets/documentation/webapps/tasklist/tasklist-plugin-tasklist-header.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-start-process.png b/docs/assets/documentation/webapps/tasklist/tasklist-start-process.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-start-process.png rename to docs/assets/documentation/webapps/tasklist/tasklist-start-process.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-start-task.png b/docs/assets/documentation/webapps/tasklist/tasklist-start-task.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-start-task.png rename to docs/assets/documentation/webapps/tasklist/tasklist-start-task.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-task-form-modeler.png b/docs/assets/documentation/webapps/tasklist/tasklist-task-form-modeler.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-task-form-modeler.png rename to docs/assets/documentation/webapps/tasklist/tasklist-task-form-modeler.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-task-search.png b/docs/assets/documentation/webapps/tasklist/tasklist-task-search.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-task-search.png rename to docs/assets/documentation/webapps/tasklist/tasklist-task-search.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-task-view-tabs.png b/docs/assets/documentation/webapps/tasklist/tasklist-task-view-tabs.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-task-view-tabs.png rename to docs/assets/documentation/webapps/tasklist/tasklist-task-view-tabs.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-task-view.png b/docs/assets/documentation/webapps/tasklist/tasklist-task-view.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-task-view.png rename to docs/assets/documentation/webapps/tasklist/tasklist-task-view.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-toggle-view.png b/docs/assets/documentation/webapps/tasklist/tasklist-toggle-view.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-toggle-view.png rename to docs/assets/documentation/webapps/tasklist/tasklist-toggle-view.png diff --git a/static/img/documentation/webapps/tasklist/tasklist-user-task-state-complete.png b/docs/assets/documentation/webapps/tasklist/tasklist-user-task-state-complete.png similarity index 100% rename from static/img/documentation/webapps/tasklist/tasklist-user-task-state-complete.png rename to docs/assets/documentation/webapps/tasklist/tasklist-user-task-state-complete.png diff --git a/static/img/documentation/webapps/welcome/welcome-dashboard-plugin.png b/docs/assets/documentation/webapps/welcome/welcome-dashboard-plugin.png similarity index 100% rename from static/img/documentation/webapps/welcome/welcome-dashboard-plugin.png rename to docs/assets/documentation/webapps/welcome/welcome-dashboard-plugin.png diff --git a/static/img/documentation/webapps/welcome/welcome-profile-plugin.png b/docs/assets/documentation/webapps/welcome/welcome-profile-plugin.png similarity index 100% rename from static/img/documentation/webapps/welcome/welcome-profile-plugin.png rename to docs/assets/documentation/webapps/welcome/welcome-profile-plugin.png diff --git a/static/img/get-started/archive/java-process-app/cockpit-loan-approval.png b/docs/assets/get-started/archive/java-process-app/cockpit-loan-approval.png similarity index 100% rename from static/img/get-started/archive/java-process-app/cockpit-loan-approval.png rename to docs/assets/get-started/archive/java-process-app/cockpit-loan-approval.png diff --git a/static/img/get-started/archive/java-process-app/create-process-definition-authorization.png b/docs/assets/get-started/archive/java-process-app/create-process-definition-authorization.png similarity index 100% rename from static/img/get-started/archive/java-process-app/create-process-definition-authorization.png rename to docs/assets/get-started/archive/java-process-app/create-process-definition-authorization.png diff --git a/static/img/get-started/archive/java-process-app/create-process-instance-authorization.png b/docs/assets/get-started/archive/java-process-app/create-process-instance-authorization.png similarity index 100% rename from static/img/get-started/archive/java-process-app/create-process-instance-authorization.png rename to docs/assets/get-started/archive/java-process-app/create-process-instance-authorization.png diff --git a/static/img/get-started/archive/java-process-app/diagram.png b/docs/assets/get-started/archive/java-process-app/diagram.png similarity index 100% rename from static/img/get-started/archive/java-process-app/diagram.png rename to docs/assets/get-started/archive/java-process-app/diagram.png diff --git a/static/img/get-started/archive/java-process-app/eclipse-new-project.png b/docs/assets/get-started/archive/java-process-app/eclipse-new-project.png similarity index 100% rename from static/img/get-started/archive/java-process-app/eclipse-new-project.png rename to docs/assets/get-started/archive/java-process-app/eclipse-new-project.png diff --git a/static/img/get-started/archive/java-process-app/form-builder-start-form.png b/docs/assets/get-started/archive/java-process-app/form-builder-start-form.png similarity index 100% rename from static/img/get-started/archive/java-process-app/form-builder-start-form.png rename to docs/assets/get-started/archive/java-process-app/form-builder-start-form.png diff --git a/static/img/get-started/archive/java-process-app/modeler-new-bpmn-diagram.png b/docs/assets/get-started/archive/java-process-app/modeler-new-bpmn-diagram.png similarity index 100% rename from static/img/get-started/archive/java-process-app/modeler-new-bpmn-diagram.png rename to docs/assets/get-started/archive/java-process-app/modeler-new-bpmn-diagram.png diff --git a/static/img/get-started/archive/java-process-app/modeler-service-task1.png b/docs/assets/get-started/archive/java-process-app/modeler-service-task1.png similarity index 100% rename from static/img/get-started/archive/java-process-app/modeler-service-task1.png rename to docs/assets/get-started/archive/java-process-app/modeler-service-task1.png diff --git a/static/img/get-started/archive/java-process-app/modeler-service-task2.png b/docs/assets/get-started/archive/java-process-app/modeler-service-task2.png similarity index 100% rename from static/img/get-started/archive/java-process-app/modeler-service-task2.png rename to docs/assets/get-started/archive/java-process-app/modeler-service-task2.png diff --git a/static/img/get-started/archive/java-process-app/modeler-service-task3.png b/docs/assets/get-started/archive/java-process-app/modeler-service-task3.png similarity index 100% rename from static/img/get-started/archive/java-process-app/modeler-service-task3.png rename to docs/assets/get-started/archive/java-process-app/modeler-service-task3.png diff --git a/static/img/get-started/archive/java-process-app/modeler-start-form.png b/docs/assets/get-started/archive/java-process-app/modeler-start-form.png similarity index 100% rename from static/img/get-started/archive/java-process-app/modeler-start-form.png rename to docs/assets/get-started/archive/java-process-app/modeler-start-form.png diff --git a/static/img/get-started/archive/java-process-app/modeler-step1.png b/docs/assets/get-started/archive/java-process-app/modeler-step1.png similarity index 100% rename from static/img/get-started/archive/java-process-app/modeler-step1.png rename to docs/assets/get-started/archive/java-process-app/modeler-step1.png diff --git a/static/img/get-started/archive/java-process-app/modeler-step2.png b/docs/assets/get-started/archive/java-process-app/modeler-step2.png similarity index 100% rename from static/img/get-started/archive/java-process-app/modeler-step2.png rename to docs/assets/get-started/archive/java-process-app/modeler-step2.png diff --git a/static/img/get-started/archive/java-process-app/modeler-step3.png b/docs/assets/get-started/archive/java-process-app/modeler-step3.png similarity index 100% rename from static/img/get-started/archive/java-process-app/modeler-step3.png rename to docs/assets/get-started/archive/java-process-app/modeler-step3.png diff --git a/static/img/get-started/archive/java-process-app/modeler-step4.png b/docs/assets/get-started/archive/java-process-app/modeler-step4.png similarity index 100% rename from static/img/get-started/archive/java-process-app/modeler-step4.png rename to docs/assets/get-started/archive/java-process-app/modeler-step4.png diff --git a/static/img/get-started/archive/java-process-app/modeler-step5.png b/docs/assets/get-started/archive/java-process-app/modeler-step5.png similarity index 100% rename from static/img/get-started/archive/java-process-app/modeler-step5.png rename to docs/assets/get-started/archive/java-process-app/modeler-step5.png diff --git a/static/img/get-started/archive/java-process-app/start-form-embedded.png b/docs/assets/get-started/archive/java-process-app/start-form-embedded.png similarity index 100% rename from static/img/get-started/archive/java-process-app/start-form-embedded.png rename to docs/assets/get-started/archive/java-process-app/start-form-embedded.png diff --git a/static/img/get-started/archive/java-process-app/start-form-generic.png b/docs/assets/get-started/archive/java-process-app/start-form-generic.png similarity index 100% rename from static/img/get-started/archive/java-process-app/start-form-generic.png rename to docs/assets/get-started/archive/java-process-app/start-form-generic.png diff --git a/static/img/get-started/archive/java-process-app/task-form-embedded.png b/docs/assets/get-started/archive/java-process-app/task-form-embedded.png similarity index 100% rename from static/img/get-started/archive/java-process-app/task-form-embedded.png rename to docs/assets/get-started/archive/java-process-app/task-form-embedded.png diff --git a/static/img/get-started/archive/java-process-app/task-form-generic.png b/docs/assets/get-started/archive/java-process-app/task-form-generic.png similarity index 100% rename from static/img/get-started/archive/java-process-app/task-form-generic.png rename to docs/assets/get-started/archive/java-process-app/task-form-generic.png diff --git a/static/img/get-started/archive/javaee7/approve-order.png b/docs/assets/get-started/archive/javaee7/approve-order.png similarity index 100% rename from static/img/get-started/archive/javaee7/approve-order.png rename to docs/assets/get-started/archive/javaee7/approve-order.png diff --git a/static/img/get-started/archive/javaee7/maven-project-settings.png b/docs/assets/get-started/archive/javaee7/maven-project-settings.png similarity index 100% rename from static/img/get-started/archive/javaee7/maven-project-settings.png rename to docs/assets/get-started/archive/javaee7/maven-project-settings.png diff --git a/static/img/get-started/archive/javaee7/modeler-new-bpmn-diagram.png b/docs/assets/get-started/archive/javaee7/modeler-new-bpmn-diagram.png similarity index 100% rename from static/img/get-started/archive/javaee7/modeler-new-bpmn-diagram.png rename to docs/assets/get-started/archive/javaee7/modeler-new-bpmn-diagram.png diff --git a/static/img/get-started/archive/javaee7/pizza-order-process-condition-expression.png b/docs/assets/get-started/archive/javaee7/pizza-order-process-condition-expression.png similarity index 100% rename from static/img/get-started/archive/javaee7/pizza-order-process-condition-expression.png rename to docs/assets/get-started/archive/javaee7/pizza-order-process-condition-expression.png diff --git a/static/img/get-started/archive/javaee7/pizza-order-process-expression.png b/docs/assets/get-started/archive/javaee7/pizza-order-process-expression.png similarity index 100% rename from static/img/get-started/archive/javaee7/pizza-order-process-expression.png rename to docs/assets/get-started/archive/javaee7/pizza-order-process-expression.png diff --git a/static/img/get-started/archive/javaee7/pizza-order-process-no.png b/docs/assets/get-started/archive/javaee7/pizza-order-process-no.png similarity index 100% rename from static/img/get-started/archive/javaee7/pizza-order-process-no.png rename to docs/assets/get-started/archive/javaee7/pizza-order-process-no.png diff --git a/static/img/get-started/archive/javaee7/pizza-order-process-prepare-pizza.png b/docs/assets/get-started/archive/javaee7/pizza-order-process-prepare-pizza.png similarity index 100% rename from static/img/get-started/archive/javaee7/pizza-order-process-prepare-pizza.png rename to docs/assets/get-started/archive/javaee7/pizza-order-process-prepare-pizza.png diff --git a/static/img/get-started/archive/javaee7/pizza-order-process-send-rejection-email.png b/docs/assets/get-started/archive/javaee7/pizza-order-process-send-rejection-email.png similarity index 100% rename from static/img/get-started/archive/javaee7/pizza-order-process-send-rejection-email.png rename to docs/assets/get-started/archive/javaee7/pizza-order-process-send-rejection-email.png diff --git a/static/img/get-started/archive/javaee7/pizza-order-process-service-task-expression.png b/docs/assets/get-started/archive/javaee7/pizza-order-process-service-task-expression.png similarity index 100% rename from static/img/get-started/archive/javaee7/pizza-order-process-service-task-expression.png rename to docs/assets/get-started/archive/javaee7/pizza-order-process-service-task-expression.png diff --git a/static/img/get-started/archive/javaee7/pizza-order-process-start-form.png b/docs/assets/get-started/archive/javaee7/pizza-order-process-start-form.png similarity index 100% rename from static/img/get-started/archive/javaee7/pizza-order-process-start-form.png rename to docs/assets/get-started/archive/javaee7/pizza-order-process-start-form.png diff --git a/static/img/get-started/archive/javaee7/pizza-order-process-task-form.png b/docs/assets/get-started/archive/javaee7/pizza-order-process-task-form.png similarity index 100% rename from static/img/get-started/archive/javaee7/pizza-order-process-task-form.png rename to docs/assets/get-started/archive/javaee7/pizza-order-process-task-form.png diff --git a/static/img/get-started/archive/javaee7/pizza-order-process.png b/docs/assets/get-started/archive/javaee7/pizza-order-process.png similarity index 100% rename from static/img/get-started/archive/javaee7/pizza-order-process.png rename to docs/assets/get-started/archive/javaee7/pizza-order-process.png diff --git a/static/img/get-started/archive/javaee7/prepare-pizza.png b/docs/assets/get-started/archive/javaee7/prepare-pizza.png similarity index 100% rename from static/img/get-started/archive/javaee7/prepare-pizza.png rename to docs/assets/get-started/archive/javaee7/prepare-pizza.png diff --git a/static/img/get-started/archive/spring/eclipse-new-project.png b/docs/assets/get-started/archive/spring/eclipse-new-project.png similarity index 100% rename from static/img/get-started/archive/spring/eclipse-new-project.png rename to docs/assets/get-started/archive/spring/eclipse-new-project.png diff --git a/static/img/get-started/archive/spring/process-model.png b/docs/assets/get-started/archive/spring/process-model.png similarity index 100% rename from static/img/get-started/archive/spring/process-model.png rename to docs/assets/get-started/archive/spring/process-model.png diff --git a/static/img/get-started/archive/spring/project-layout-after-setup.png b/docs/assets/get-started/archive/spring/project-layout-after-setup.png similarity index 100% rename from static/img/get-started/archive/spring/project-layout-after-setup.png rename to docs/assets/get-started/archive/spring/project-layout-after-setup.png diff --git a/static/img/get-started/archive/spring/service-task.png b/docs/assets/get-started/archive/spring/service-task.png similarity index 100% rename from static/img/get-started/archive/spring/service-task.png rename to docs/assets/get-started/archive/spring/service-task.png diff --git a/static/img/get-started/dmn/cockpit-decision-history-beverages-dmn.png b/docs/assets/get-started/dmn/cockpit-decision-history-beverages-dmn.png similarity index 100% rename from static/img/get-started/dmn/cockpit-decision-history-beverages-dmn.png rename to docs/assets/get-started/dmn/cockpit-decision-history-beverages-dmn.png diff --git a/static/img/get-started/dmn/cockpit-decision-history-dish-dmn.png b/docs/assets/get-started/dmn/cockpit-decision-history-dish-dmn.png similarity index 100% rename from static/img/get-started/dmn/cockpit-decision-history-dish-dmn.png rename to docs/assets/get-started/dmn/cockpit-decision-history-dish-dmn.png diff --git a/static/img/get-started/dmn/cockpit-decision-overview-beverages-dmn.png b/docs/assets/get-started/dmn/cockpit-decision-overview-beverages-dmn.png similarity index 100% rename from static/img/get-started/dmn/cockpit-decision-overview-beverages-dmn.png rename to docs/assets/get-started/dmn/cockpit-decision-overview-beverages-dmn.png diff --git a/static/img/get-started/dmn/cockpit-decision-overview-dish-dmn.png b/docs/assets/get-started/dmn/cockpit-decision-overview-dish-dmn.png similarity index 100% rename from static/img/get-started/dmn/cockpit-decision-overview-dish-dmn.png rename to docs/assets/get-started/dmn/cockpit-decision-overview-dish-dmn.png diff --git a/static/img/get-started/dmn/cockpit-dish-dmn.png b/docs/assets/get-started/dmn/cockpit-dish-dmn.png similarity index 100% rename from static/img/get-started/dmn/cockpit-dish-dmn.png rename to docs/assets/get-started/dmn/cockpit-dish-dmn.png diff --git a/static/img/get-started/dmn/eclipse-new-project.png b/docs/assets/get-started/dmn/eclipse-new-project.png similarity index 100% rename from static/img/get-started/dmn/eclipse-new-project.png rename to docs/assets/get-started/dmn/eclipse-new-project.png diff --git a/static/img/get-started/dmn/modeler-drd-step1.png b/docs/assets/get-started/dmn/modeler-drd-step1.png similarity index 100% rename from static/img/get-started/dmn/modeler-drd-step1.png rename to docs/assets/get-started/dmn/modeler-drd-step1.png diff --git a/static/img/get-started/dmn/modeler-drd-step2.png b/docs/assets/get-started/dmn/modeler-drd-step2.png similarity index 100% rename from static/img/get-started/dmn/modeler-drd-step2.png rename to docs/assets/get-started/dmn/modeler-drd-step2.png diff --git a/static/img/get-started/dmn/modeler-drd-step3.png b/docs/assets/get-started/dmn/modeler-drd-step3.png similarity index 100% rename from static/img/get-started/dmn/modeler-drd-step3.png rename to docs/assets/get-started/dmn/modeler-drd-step3.png diff --git a/static/img/get-started/dmn/modeler-drd-step4.png b/docs/assets/get-started/dmn/modeler-drd-step4.png similarity index 100% rename from static/img/get-started/dmn/modeler-drd-step4.png rename to docs/assets/get-started/dmn/modeler-drd-step4.png diff --git a/static/img/get-started/dmn/modeler-drd-step5.png b/docs/assets/get-started/dmn/modeler-drd-step5.png similarity index 100% rename from static/img/get-started/dmn/modeler-drd-step5.png rename to docs/assets/get-started/dmn/modeler-drd-step5.png diff --git a/static/img/get-started/dmn/modeler-new-dmn-table.png b/docs/assets/get-started/dmn/modeler-new-dmn-table.png similarity index 100% rename from static/img/get-started/dmn/modeler-new-dmn-table.png rename to docs/assets/get-started/dmn/modeler-new-dmn-table.png diff --git a/static/img/get-started/dmn/modeler-save-dmn-table.png b/docs/assets/get-started/dmn/modeler-save-dmn-table.png similarity index 100% rename from static/img/get-started/dmn/modeler-save-dmn-table.png rename to docs/assets/get-started/dmn/modeler-save-dmn-table.png diff --git a/static/img/get-started/dmn/modeler-step1.png b/docs/assets/get-started/dmn/modeler-step1.png similarity index 100% rename from static/img/get-started/dmn/modeler-step1.png rename to docs/assets/get-started/dmn/modeler-step1.png diff --git a/static/img/get-started/dmn/modeler-step2a.png b/docs/assets/get-started/dmn/modeler-step2a.png similarity index 100% rename from static/img/get-started/dmn/modeler-step2a.png rename to docs/assets/get-started/dmn/modeler-step2a.png diff --git a/static/img/get-started/dmn/modeler-step2b.png b/docs/assets/get-started/dmn/modeler-step2b.png similarity index 100% rename from static/img/get-started/dmn/modeler-step2b.png rename to docs/assets/get-started/dmn/modeler-step2b.png diff --git a/static/img/get-started/dmn/modeler-step3.png b/docs/assets/get-started/dmn/modeler-step3.png similarity index 100% rename from static/img/get-started/dmn/modeler-step3.png rename to docs/assets/get-started/dmn/modeler-step3.png diff --git a/static/img/get-started/dmn/modeler-step4.png b/docs/assets/get-started/dmn/modeler-step4.png similarity index 100% rename from static/img/get-started/dmn/modeler-step4.png rename to docs/assets/get-started/dmn/modeler-step4.png diff --git a/static/img/get-started/dmn/modeler-step5.png b/docs/assets/get-started/dmn/modeler-step5.png similarity index 100% rename from static/img/get-started/dmn/modeler-step5.png rename to docs/assets/get-started/dmn/modeler-step5.png diff --git a/static/img/get-started/dmn/modeler-step6.png b/docs/assets/get-started/dmn/modeler-step6.png similarity index 100% rename from static/img/get-started/dmn/modeler-step6.png rename to docs/assets/get-started/dmn/modeler-step6.png diff --git a/static/img/get-started/dmn/modeler-step7.png b/docs/assets/get-started/dmn/modeler-step7.png similarity index 100% rename from static/img/get-started/dmn/modeler-step7.png rename to docs/assets/get-started/dmn/modeler-step7.png diff --git a/static/img/get-started/quick-start/cockpit-approve-payment.png b/docs/assets/get-started/quick-start/cockpit-approve-payment.png similarity index 100% rename from static/img/get-started/quick-start/cockpit-approve-payment.png rename to docs/assets/get-started/quick-start/cockpit-approve-payment.png diff --git a/static/img/get-started/quick-start/cockpit-dmn-table.png b/docs/assets/get-started/quick-start/cockpit-dmn-table.png similarity index 100% rename from static/img/get-started/quick-start/cockpit-dmn-table.png rename to docs/assets/get-started/quick-start/cockpit-dmn-table.png diff --git a/static/img/get-started/quick-start/cockpit-payment-retrieval.png b/docs/assets/get-started/quick-start/cockpit-payment-retrieval.png similarity index 100% rename from static/img/get-started/quick-start/cockpit-payment-retrieval.png rename to docs/assets/get-started/quick-start/cockpit-payment-retrieval.png diff --git a/static/img/get-started/quick-start/diagram.png b/docs/assets/get-started/quick-start/diagram.png similarity index 100% rename from static/img/get-started/quick-start/diagram.png rename to docs/assets/get-started/quick-start/diagram.png diff --git a/static/img/get-started/quick-start/eclipse-new-project.png b/docs/assets/get-started/quick-start/eclipse-new-project.png similarity index 100% rename from static/img/get-started/quick-start/eclipse-new-project.png rename to docs/assets/get-started/quick-start/eclipse-new-project.png diff --git a/static/img/get-started/quick-start/modeler-businessrule-task1.png b/docs/assets/get-started/quick-start/modeler-businessrule-task1.png similarity index 100% rename from static/img/get-started/quick-start/modeler-businessrule-task1.png rename to docs/assets/get-started/quick-start/modeler-businessrule-task1.png diff --git a/static/img/get-started/quick-start/modeler-businessrule-task2.png b/docs/assets/get-started/quick-start/modeler-businessrule-task2.png similarity index 100% rename from static/img/get-started/quick-start/modeler-businessrule-task2.png rename to docs/assets/get-started/quick-start/modeler-businessrule-task2.png diff --git a/static/img/get-started/quick-start/modeler-deploy-form.png b/docs/assets/get-started/quick-start/modeler-deploy-form.png similarity index 100% rename from static/img/get-started/quick-start/modeler-deploy-form.png rename to docs/assets/get-started/quick-start/modeler-deploy-form.png diff --git a/static/img/get-started/quick-start/modeler-deploy1.png b/docs/assets/get-started/quick-start/modeler-deploy1.png similarity index 100% rename from static/img/get-started/quick-start/modeler-deploy1.png rename to docs/assets/get-started/quick-start/modeler-deploy1.png diff --git a/static/img/get-started/quick-start/modeler-deploy2.png b/docs/assets/get-started/quick-start/modeler-deploy2.png similarity index 100% rename from static/img/get-started/quick-start/modeler-deploy2.png rename to docs/assets/get-started/quick-start/modeler-deploy2.png diff --git a/static/img/get-started/quick-start/modeler-deploy3.png b/docs/assets/get-started/quick-start/modeler-deploy3.png similarity index 100% rename from static/img/get-started/quick-start/modeler-deploy3.png rename to docs/assets/get-started/quick-start/modeler-deploy3.png diff --git a/static/img/get-started/quick-start/modeler-dmn2.png b/docs/assets/get-started/quick-start/modeler-dmn2.png similarity index 100% rename from static/img/get-started/quick-start/modeler-dmn2.png rename to docs/assets/get-started/quick-start/modeler-dmn2.png diff --git a/static/img/get-started/quick-start/modeler-dmn3.png b/docs/assets/get-started/quick-start/modeler-dmn3.png similarity index 100% rename from static/img/get-started/quick-start/modeler-dmn3.png rename to docs/assets/get-started/quick-start/modeler-dmn3.png diff --git a/static/img/get-started/quick-start/modeler-dmn4.png b/docs/assets/get-started/quick-start/modeler-dmn4.png similarity index 100% rename from static/img/get-started/quick-start/modeler-dmn4.png rename to docs/assets/get-started/quick-start/modeler-dmn4.png diff --git a/static/img/get-started/quick-start/modeler-dmn5.png b/docs/assets/get-started/quick-start/modeler-dmn5.png similarity index 100% rename from static/img/get-started/quick-start/modeler-dmn5.png rename to docs/assets/get-started/quick-start/modeler-dmn5.png diff --git a/static/img/get-started/quick-start/modeler-dmn6.png b/docs/assets/get-started/quick-start/modeler-dmn6.png similarity index 100% rename from static/img/get-started/quick-start/modeler-dmn6.png rename to docs/assets/get-started/quick-start/modeler-dmn6.png diff --git a/static/img/get-started/quick-start/modeler-gateway1.png b/docs/assets/get-started/quick-start/modeler-gateway1.png similarity index 100% rename from static/img/get-started/quick-start/modeler-gateway1.png rename to docs/assets/get-started/quick-start/modeler-gateway1.png diff --git a/static/img/get-started/quick-start/modeler-gateway2.png b/docs/assets/get-started/quick-start/modeler-gateway2.png similarity index 100% rename from static/img/get-started/quick-start/modeler-gateway2.png rename to docs/assets/get-started/quick-start/modeler-gateway2.png diff --git a/static/img/get-started/quick-start/modeler-gateway3.png b/docs/assets/get-started/quick-start/modeler-gateway3.png similarity index 100% rename from static/img/get-started/quick-start/modeler-gateway3.png rename to docs/assets/get-started/quick-start/modeler-gateway3.png diff --git a/static/img/get-started/quick-start/modeler-gateway4.png b/docs/assets/get-started/quick-start/modeler-gateway4.png similarity index 100% rename from static/img/get-started/quick-start/modeler-gateway4.png rename to docs/assets/get-started/quick-start/modeler-gateway4.png diff --git a/static/img/get-started/quick-start/modeler-gateway5.png b/docs/assets/get-started/quick-start/modeler-gateway5.png similarity index 100% rename from static/img/get-started/quick-start/modeler-gateway5.png rename to docs/assets/get-started/quick-start/modeler-gateway5.png diff --git a/static/img/get-started/quick-start/modeler-gateway6.png b/docs/assets/get-started/quick-start/modeler-gateway6.png similarity index 100% rename from static/img/get-started/quick-start/modeler-gateway6.png rename to docs/assets/get-started/quick-start/modeler-gateway6.png diff --git a/static/img/get-started/quick-start/modeler-new-bpmn-diagram.png b/docs/assets/get-started/quick-start/modeler-new-bpmn-diagram.png similarity index 100% rename from static/img/get-started/quick-start/modeler-new-bpmn-diagram.png rename to docs/assets/get-started/quick-start/modeler-new-bpmn-diagram.png diff --git a/static/img/get-started/quick-start/modeler-new-dmn-diagram-properties.png b/docs/assets/get-started/quick-start/modeler-new-dmn-diagram-properties.png similarity index 100% rename from static/img/get-started/quick-start/modeler-new-dmn-diagram-properties.png rename to docs/assets/get-started/quick-start/modeler-new-dmn-diagram-properties.png diff --git a/static/img/get-started/quick-start/modeler-new-dmn-diagram.png b/docs/assets/get-started/quick-start/modeler-new-dmn-diagram.png similarity index 100% rename from static/img/get-started/quick-start/modeler-new-dmn-diagram.png rename to docs/assets/get-started/quick-start/modeler-new-dmn-diagram.png diff --git a/static/img/get-started/quick-start/modeler-new-dmn-table.png b/docs/assets/get-started/quick-start/modeler-new-dmn-table.png similarity index 100% rename from static/img/get-started/quick-start/modeler-new-dmn-table.png rename to docs/assets/get-started/quick-start/modeler-new-dmn-table.png diff --git a/static/img/get-started/quick-start/modeler-platform-selection.png b/docs/assets/get-started/quick-start/modeler-platform-selection.png similarity index 100% rename from static/img/get-started/quick-start/modeler-platform-selection.png rename to docs/assets/get-started/quick-start/modeler-platform-selection.png diff --git a/static/img/get-started/quick-start/modeler-step1.png b/docs/assets/get-started/quick-start/modeler-step1.png similarity index 100% rename from static/img/get-started/quick-start/modeler-step1.png rename to docs/assets/get-started/quick-start/modeler-step1.png diff --git a/static/img/get-started/quick-start/modeler-step2.png b/docs/assets/get-started/quick-start/modeler-step2.png similarity index 100% rename from static/img/get-started/quick-start/modeler-step2.png rename to docs/assets/get-started/quick-start/modeler-step2.png diff --git a/static/img/get-started/quick-start/modeler-step3.png b/docs/assets/get-started/quick-start/modeler-step3.png similarity index 100% rename from static/img/get-started/quick-start/modeler-step3.png rename to docs/assets/get-started/quick-start/modeler-step3.png diff --git a/static/img/get-started/quick-start/modeler-step4.png b/docs/assets/get-started/quick-start/modeler-step4.png similarity index 100% rename from static/img/get-started/quick-start/modeler-step4.png rename to docs/assets/get-started/quick-start/modeler-step4.png diff --git a/static/img/get-started/quick-start/modeler-step5.png b/docs/assets/get-started/quick-start/modeler-step5.png similarity index 100% rename from static/img/get-started/quick-start/modeler-step5.png rename to docs/assets/get-started/quick-start/modeler-step5.png diff --git a/static/img/get-started/quick-start/modeler-usertask-add.png b/docs/assets/get-started/quick-start/modeler-usertask-add.png similarity index 100% rename from static/img/get-started/quick-start/modeler-usertask-add.png rename to docs/assets/get-started/quick-start/modeler-usertask-add.png diff --git a/static/img/get-started/quick-start/modeler-usertask-form.png b/docs/assets/get-started/quick-start/modeler-usertask-form.png similarity index 100% rename from static/img/get-started/quick-start/modeler-usertask-form.png rename to docs/assets/get-started/quick-start/modeler-usertask-form.png diff --git a/static/img/get-started/quick-start/modeler-usertask1.png b/docs/assets/get-started/quick-start/modeler-usertask1.png similarity index 100% rename from static/img/get-started/quick-start/modeler-usertask1.png rename to docs/assets/get-started/quick-start/modeler-usertask1.png diff --git a/static/img/get-started/quick-start/modeler-usertask2.png b/docs/assets/get-started/quick-start/modeler-usertask2.png similarity index 100% rename from static/img/get-started/quick-start/modeler-usertask2.png rename to docs/assets/get-started/quick-start/modeler-usertask2.png diff --git a/static/img/get-started/quick-start/modeler-usertask3.png b/docs/assets/get-started/quick-start/modeler-usertask3.png similarity index 100% rename from static/img/get-started/quick-start/modeler-usertask3.png rename to docs/assets/get-started/quick-start/modeler-usertask3.png diff --git a/static/img/get-started/quick-start/modeler-usertask4.png b/docs/assets/get-started/quick-start/modeler-usertask4.png similarity index 100% rename from static/img/get-started/quick-start/modeler-usertask4.png rename to docs/assets/get-started/quick-start/modeler-usertask4.png diff --git a/static/img/get-started/quick-start/modeler-usertask5.png b/docs/assets/get-started/quick-start/modeler-usertask5.png similarity index 100% rename from static/img/get-started/quick-start/modeler-usertask5.png rename to docs/assets/get-started/quick-start/modeler-usertask5.png diff --git a/static/img/get-started/quick-start/modeler-usertask6.png b/docs/assets/get-started/quick-start/modeler-usertask6.png similarity index 100% rename from static/img/get-started/quick-start/modeler-usertask6.png rename to docs/assets/get-started/quick-start/modeler-usertask6.png diff --git a/static/img/get-started/quick-start/postman-start-instance.png b/docs/assets/get-started/quick-start/postman-start-instance.png similarity index 100% rename from static/img/get-started/quick-start/postman-start-instance.png rename to docs/assets/get-started/quick-start/postman-start-instance.png diff --git a/static/img/get-started/quick-start/start-form-generic.png b/docs/assets/get-started/quick-start/start-form-generic.png similarity index 100% rename from static/img/get-started/quick-start/start-form-generic.png rename to docs/assets/get-started/quick-start/start-form-generic.png diff --git a/static/img/get-started/quick-start/task-form-generated.png b/docs/assets/get-started/quick-start/task-form-generated.png similarity index 100% rename from static/img/get-started/quick-start/task-form-generated.png rename to docs/assets/get-started/quick-start/task-form-generated.png diff --git a/static/img/get-started/quick-start/tasklist-dmn1.png b/docs/assets/get-started/quick-start/tasklist-dmn1.png similarity index 100% rename from static/img/get-started/quick-start/tasklist-dmn1.png rename to docs/assets/get-started/quick-start/tasklist-dmn1.png diff --git a/static/img/get-started/quick-start/tasklist-dmn2.png b/docs/assets/get-started/quick-start/tasklist-dmn2.png similarity index 100% rename from static/img/get-started/quick-start/tasklist-dmn2.png rename to docs/assets/get-started/quick-start/tasklist-dmn2.png diff --git a/static/img/get-started/spring-boot/eclipse-new-project.png b/docs/assets/get-started/spring-boot/eclipse-new-project.png similarity index 100% rename from static/img/get-started/spring-boot/eclipse-new-project.png rename to docs/assets/get-started/spring-boot/eclipse-new-project.png diff --git a/static/img/get-started/spring-boot/loanApproval.png b/docs/assets/get-started/spring-boot/loanApproval.png similarity index 100% rename from static/img/get-started/spring-boot/loanApproval.png rename to docs/assets/get-started/spring-boot/loanApproval.png diff --git a/static/img/get-started/spring-boot/tasklist.png b/docs/assets/get-started/spring-boot/tasklist.png similarity index 100% rename from static/img/get-started/spring-boot/tasklist.png rename to docs/assets/get-started/spring-boot/tasklist.png diff --git a/docs/documentation/introduction/architecture.md b/docs/documentation/introduction/architecture.md index f728dc4..d804e5a 100644 --- a/docs/documentation/introduction/architecture.md +++ b/docs/documentation/introduction/architecture.md @@ -13,7 +13,7 @@ Operaton can be used both as a standalone process engine server or embedded insi ## Process Engine Architecture -![Process Engine Architecture](/img/documentation/introduction/process-engine-architecture.png) +![Process Engine Architecture](../../assets/documentation/introduction/process-engine-architecture.png) * [Process Engine Public API](../user-guide/process-engine/process-engine-api.md): Service-oriented API allowing Java applications to interact with the process engine. The different responsibilities of the process engine (i.e., Process Repository, Runtime Process Interaction, Task Management, ...) are separated into individual services. The public API features a [command-style access pattern](http://en.wikipedia.org/wiki/Command_pattern): Threads entering the process engine are routed through a Command Interceptor which is used for setting up Thread Context such as Transactions. * **BPMN 2.0 Core Engine**: This is the core of the process engine. It features a lightweight execution engine for graph structures (PVM - Process Virtual Machine), a BPMN 2.0 parser which transforms BPMN 2.0 XML files into Java Objects and a set of BPMN Behavior implementations (providing the implementation for BPMN 2.0 constructs such as Gateways or Service Tasks). @@ -33,21 +33,21 @@ Operaton is a flexible framework which can be deployed in different scenarios. T ### Embedded Process Engine -![Embedded Process Engine](/img/documentation/introduction/embedded-process-engine.png) +![Embedded Process Engine](../../assets/documentation/introduction/embedded-process-engine.png) In this case, the process engine is added as an application library to a custom application. This way, the process engine can easily be started and stopped with the application lifecycle. It is possible to run multiple embedded process engines on top of a shared database. ### Shared, Container-Managed Process Engine -![Shared Process Engine](/img/documentation/introduction/shared-process-engine.png) +![Shared Process Engine](../../assets/documentation/introduction/shared-process-engine.png) In this case, the process engine is started inside the runtime container (Servlet Container, Application Server, ...). The process engine is provided as a container service and can be shared by all applications deployed inside the container. The concept can be compared to a JMS Message Queue which is provided by the runtime and can be used by all applications. There is a one-to-one mapping between process deployments and applications: the process engine keeps track of the process definitions deployed by an application and delegates execution to the application in question. ### Standalone (Remote) Process Engine Server -![Standalone Process Engine](/img/documentation/introduction/standalone-process-engine.png) +![Standalone Process Engine](../../assets/documentation/introduction/standalone-process-engine.png) In this case, the process engine is provided as a network service. Different applications running on the network can interact with the process engine through a remote communication channel. The easiest way to make the process engine accessible remotely is to use the built-in REST API. Different communication channels such as SOAP Webservices or JMS are possible but need to be implemented by users. @@ -56,7 +56,7 @@ In this case, the process engine is provided as a network service. Different app In order to provide scale-up or fail-over capabilities, the process engine can be distributed to different nodes in a cluster. Each process engine instance must then connect to a shared database. -![Process Engine Cluster](/img/documentation/introduction/clustered-process-engine.png) +![Process Engine Cluster](../../assets/documentation/introduction/clustered-process-engine.png) The individual process engine instances do not maintain session state across transactions. Whenever the process engine runs a transaction, the complete state is flushed out to the shared database. This makes it possible to route subsequent requests which do work in the same process instance to different cluster nodes. This model is very simple and easy to understand and imposes limited restrictions when it comes to deploying a cluster installation. As far as the process engine is concerned, there is no difference between setups for scale-up and setups for fail-over (as the process engine keeps no session state between transactions). diff --git a/docs/documentation/introduction/index.md b/docs/documentation/introduction/index.md index 07f190e..ba20e32 100644 --- a/docs/documentation/introduction/index.md +++ b/docs/documentation/introduction/index.md @@ -17,7 +17,7 @@ This document contains information about the features provided by Operaton. To give you an overview of Operaton, the following illustration shows the most important components along with some typical user roles. -![Operaton Components and Roles](/img/documentation/introduction/architecture-overview.png) +![Operaton Components and Roles](../../assets/documentation/introduction/architecture-overview.png) ## Process Engine & Infrastructure diff --git a/docs/documentation/reference/bpmn20/events/conditional-events.md b/docs/documentation/reference/bpmn20/events/conditional-events.md index f175753..075d6ea 100644 --- a/docs/documentation/reference/bpmn20/events/conditional-events.md +++ b/docs/documentation/reference/bpmn20/events/conditional-events.md @@ -20,7 +20,7 @@ See the [Trigger Conditional Events](#trigger-conditional-events) section for de In the following BPMN model, all supported conditional events are used. -![Example img](/img/documentation/reference/bpmn20/events/event-conditional.svg)Conditional Events Overview +![Example img](../../../../assets/documentation/reference/bpmn20/events/event-conditional.svg)Conditional Events Overview As you can see, an intermediate conditional event is like a wait until the condition is satisfied. In this example, if the processor becomes available and the condition is, for example, `${processorAvailable == true}`, the condition will be satisfied and the execution process continues to the next activity. @@ -203,7 +203,7 @@ When set from delegation code, variable changes do not trigger conditional event In the following picture the different activity instance phases are displayed. -![API Services](/img/documentation/reference/bpmn20/events/activityInstanceState.png) +![API Services](../../../../assets/documentation/reference/bpmn20/events/activityInstanceState.png) * `Starting` corresponds to the starting phase of the activity instance. At this time the input mappings and execution start listeners are called. * `Execute` corresponds to the executing phase of the activity instance. diff --git a/docs/documentation/reference/bpmn20/index.md b/docs/documentation/reference/bpmn20/index.md index 0d83cc3..c185c6d 100644 --- a/docs/documentation/reference/bpmn20/index.md +++ b/docs/documentation/reference/bpmn20/index.md @@ -26,10 +26,10 @@ The elements marked in orang

Participants

- ![Pool Symbol](/img/documentation/reference/bpmn20/pool.svg) + ![Pool Symbol](../../../assets/documentation/reference/bpmn20/pool.svg)
- ![Lane Symbol](/img/documentation/reference/bpmn20/lane.svg) + ![Lane Symbol](../../../assets/documentation/reference/bpmn20/lane.svg)
@@ -39,25 +39,25 @@ The elements marked in orang

Subprocesses

- ![Subprocess Symbol](/img/documentation/reference/bpmn20/subprocess.svg) + ![Subprocess Symbol](../../../assets/documentation/reference/bpmn20/subprocess.svg)
- ![CallActivity Symbol](/img/documentation/reference/bpmn20/call_activity.svg) + ![CallActivity Symbol](../../../assets/documentation/reference/bpmn20/call_activity.svg)
- ![Event Subprocess Symbol](/img/documentation/reference/bpmn20/event_subprocess.svg) + ![Event Subprocess Symbol](../../../assets/documentation/reference/bpmn20/event_subprocess.svg)
- ![Transaction Symbol](/img/documentation/reference/bpmn20/transaction.svg) + ![Transaction Symbol](../../../assets/documentation/reference/bpmn20/transaction.svg) @@ -71,52 +71,52 @@ The elements marked in orang
- ![ServiceTask Symbol](/img/documentation/reference/bpmn20/service_task.svg) + ![ServiceTask Symbol](../../../assets/documentation/reference/bpmn20/service_task.svg)
- ![UserTask Symbol](/img/documentation/reference/bpmn20/user_task.svg) + ![UserTask Symbol](../../../assets/documentation/reference/bpmn20/user_task.svg)
- ![ScriptTask Symbol](/img/documentation/reference/bpmn20/script_task.svg) + ![ScriptTask Symbol](../../../assets/documentation/reference/bpmn20/script_task.svg)
- ![Business Rule Task Symbol](/img/documentation/reference/bpmn20/business_rule_task.svg) + ![Business Rule Task Symbol](../../../assets/documentation/reference/bpmn20/business_rule_task.svg)
- ![Manual Task Symbol](/img/documentation/reference/bpmn20/manual_task.svg) + ![Manual Task Symbol](../../../assets/documentation/reference/bpmn20/manual_task.svg)
- ![Receive Task Symbol](/img/documentation/reference/bpmn20/receive_task.svg) + ![Receive Task Symbol](../../../assets/documentation/reference/bpmn20/receive_task.svg)
- ![Undefined Task Symbol](/img/documentation/reference/bpmn20/undefined_task.svg) + ![Undefined Task Symbol](../../../assets/documentation/reference/bpmn20/undefined_task.svg)
- ![Send Task Symbol](/img/documentation/reference/bpmn20/send_task.svg) + ![Send Task Symbol](../../../assets/documentation/reference/bpmn20/send_task.svg)
- ![Instantiated Receive Task Symbol](/img/documentation/reference/bpmn20/instantiated_receive_task.svg) + ![Instantiated Receive Task Symbol](../../../assets/documentation/reference/bpmn20/instantiated_receive_task.svg)
@@ -126,50 +126,50 @@ The elements marked in orang

Gateways

- ![XOR Gateway Symbol](/img/documentation/reference/bpmn20/xor_gateway.svg) + ![XOR Gateway Symbol](../../../assets/documentation/reference/bpmn20/xor_gateway.svg)
- ![OR Gateway Symbol](/img/documentation/reference/bpmn20/or_gateway.svg) + ![OR Gateway Symbol](../../../assets/documentation/reference/bpmn20/or_gateway.svg)
- ![AND Gateway Symbol](/img/documentation/reference/bpmn20/and_gateway.svg) + ![AND Gateway Symbol](../../../assets/documentation/reference/bpmn20/and_gateway.svg)
- ![Event Gateway Symbol](/img/documentation/reference/bpmn20/event_gateway.svg) + ![Event Gateway Symbol](../../../assets/documentation/reference/bpmn20/event_gateway.svg)
- ![Complex Gateway Symbol](/img/documentation/reference/bpmn20/complex_gateway.svg) + ![Complex Gateway Symbol](../../../assets/documentation/reference/bpmn20/complex_gateway.svg)

Data

- ![Data Object Symbol](/img/documentation/reference/bpmn20/data_object.svg) + ![Data Object Symbol](../../../assets/documentation/reference/bpmn20/data_object.svg)
- ![Data Store Symbol](/img/documentation/reference/bpmn20/data_store.svg) + ![Data Store Symbol](../../../assets/documentation/reference/bpmn20/data_store.svg)

Artifacts

- ![Text Annotation Symbol](/img/documentation/reference/bpmn20/text_annotation.svg) + ![Text Annotation Symbol](../../../assets/documentation/reference/bpmn20/text_annotation.svg)
- ![Group Symbol](/img/documentation/reference/bpmn20/group_symbol.svg) + ![Group Symbol](../../../assets/documentation/reference/bpmn20/group_symbol.svg)
@@ -215,7 +215,7 @@ chapter of the [BPMN Modeling Reference](http://operaton.org/bpmn/reference.html None - ![Non Start Event Symbol](/img/documentation/reference/bpmn20/none_start_event.svg) + ![Non Start Event Symbol](../../../assets/documentation/reference/bpmn20/none_start_event.svg) @@ -223,58 +223,58 @@ chapter of the [BPMN Modeling Reference](http://operaton.org/bpmn/reference.html - ![Non Intermediate Event Symbol](/img/documentation/reference/bpmn20/none_intermediate_event.svg) + ![Non Intermediate Event Symbol](../../../assets/documentation/reference/bpmn20/none_intermediate_event.svg) - ![Non End Event Symbol](/img/documentation/reference/bpmn20/none_end_event.svg) + ![Non End Event Symbol](../../../assets/documentation/reference/bpmn20/none_end_event.svg) Message - ![Message Start Event Symbol](/img/documentation/reference/bpmn20/message_start_event.svg) + ![Message Start Event Symbol](../../../assets/documentation/reference/bpmn20/message_start_event.svg) - ![Message Start Event Symbol](/img/documentation/reference/bpmn20/message_start_event.svg) + ![Message Start Event Symbol](../../../assets/documentation/reference/bpmn20/message_start_event.svg) - ![Event Subprocess Message Start Event non-interrupting Symbol](/img/documentation/reference/bpmn20/event_subprocess_message_non_interrupting.svg) + ![Event Subprocess Message Start Event non-interrupting Symbol](../../../assets/documentation/reference/bpmn20/event_subprocess_message_non_interrupting.svg) - ![Message Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/message_intermediate_catch_event.svg) + ![Message Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/message_intermediate_catch_event.svg) - ![Message Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/message_intermediate_catch_event.svg) + ![Message Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/message_intermediate_catch_event.svg) - ![Message Intermediate Non Interrupting Catch Event Symbol](/img/documentation/reference/bpmn20/message_intermediate_non_interrupting_catch_event.svg) + ![Message Intermediate Non Interrupting Catch Event Symbol](../../../assets/documentation/reference/bpmn20/message_intermediate_non_interrupting_catch_event.svg) - ![Message Intermediate Throw Event Symbol](/img/documentation/reference/bpmn20/message_intermediate_throw_event.svg) + ![Message Intermediate Throw Event Symbol](../../../assets/documentation/reference/bpmn20/message_intermediate_throw_event.svg) - ![Message Throw End Event Symbol](/img/documentation/reference/bpmn20/message_throw_end_event.svg) + ![Message Throw End Event Symbol](../../../assets/documentation/reference/bpmn20/message_throw_end_event.svg) Timer - ![Timer Start Event Symbol](/img/documentation/reference/bpmn20/timer_start_event.svg) + ![Timer Start Event Symbol](../../../assets/documentation/reference/bpmn20/timer_start_event.svg) - ![Event Subprocess Timer Start Event Symbol](/img/documentation/reference/bpmn20/timer_start_event.svg) + ![Event Subprocess Timer Start Event Symbol](../../../assets/documentation/reference/bpmn20/timer_start_event.svg) - ![Event Subprocess Timer Start Event Non Interrupting Symbol](/img/documentation/reference/bpmn20/event_subprocess_timer_non_interrupting.svg) + ![Event Subprocess Timer Start Event Non Interrupting Symbol](../../../assets/documentation/reference/bpmn20/event_subprocess_timer_non_interrupting.svg) - ![Timer Intermediate Interrupting Event Symbol](/img/documentation/reference/bpmn20/timer_intermediate_event.svg) + ![Timer Intermediate Interrupting Event Symbol](../../../assets/documentation/reference/bpmn20/timer_intermediate_event.svg) - ![Timer Intermediate Interrupting Event Symbol](/img/documentation/reference/bpmn20/timer_intermediate_event.svg) + ![Timer Intermediate Interrupting Event Symbol](../../../assets/documentation/reference/bpmn20/timer_intermediate_event.svg) - ![Timer Intermediate None Interrupting Event Symbol](/img/documentation/reference/bpmn20/timer_intermediate_none_interrupting_event.svg) + ![Timer Intermediate None Interrupting Event Symbol](../../../assets/documentation/reference/bpmn20/timer_intermediate_none_interrupting_event.svg) @@ -282,22 +282,22 @@ chapter of the [BPMN Modeling Reference](http://operaton.org/bpmn/reference.html Conditional - ![Conditional Start Event Symbol](/img/documentation/reference/bpmn20/conditional_start_event.svg) + ![Conditional Start Event Symbol](../../../assets/documentation/reference/bpmn20/conditional_start_event.svg) - ![Conditional Start Event Symbol](/img/documentation/reference/bpmn20/conditional_start_event.svg) + ![Conditional Start Event Symbol](../../../assets/documentation/reference/bpmn20/conditional_start_event.svg) - ![Conditional Event Subprocess Non Interrupting Start Event Symbol](/img/documentation/reference/bpmn20/event_subprocess_conditional_non_interrupting.svg) + ![Conditional Event Subprocess Non Interrupting Start Event Symbol](../../../assets/documentation/reference/bpmn20/event_subprocess_conditional_non_interrupting.svg) - ![Conditional Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg) + ![Conditional Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg) - ![Conditional Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg) + ![Conditional Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg) - ![Conditional Intermediate Non Interrupting Event Symbol](/img/documentation/reference/bpmn20/conditional_intermediate_non_interrupting_event.svg) + ![Conditional Intermediate Non Interrupting Event Symbol](../../../assets/documentation/reference/bpmn20/conditional_intermediate_non_interrupting_event.svg) @@ -308,80 +308,80 @@ chapter of the [BPMN Modeling Reference](http://operaton.org/bpmn/reference.html - ![Link Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/link_intermediate_catch_event.svg) + ![Link Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/link_intermediate_catch_event.svg) - ![Link Intermediate Throw Event Symbol](/img/documentation/reference/bpmn20/link_intermediate_throw_event.svg) + ![Link Intermediate Throw Event Symbol](../../../assets/documentation/reference/bpmn20/link_intermediate_throw_event.svg) Signal - ![Signal Event Symbol](/img/documentation/reference/bpmn20/signal_start_event.svg) + ![Signal Event Symbol](../../../assets/documentation/reference/bpmn20/signal_start_event.svg) - ![Signal Event Symbol](/img/documentation/reference/bpmn20/signal_start_event.svg) + ![Signal Event Symbol](../../../assets/documentation/reference/bpmn20/signal_start_event.svg) - ![Event Subprocess Signal Non Interrupting Start Event Symbol](/img/documentation/reference/bpmn20/event_subprocess_signal_non_interrupting_start_event.svg) + ![Event Subprocess Signal Non Interrupting Start Event Symbol](../../../assets/documentation/reference/bpmn20/event_subprocess_signal_non_interrupting_start_event.svg) - ![Signal Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/signal_intermediate_catch_event.svg) + ![Signal Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/signal_intermediate_catch_event.svg) - ![Signal Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/signal_intermediate_catch_event.svg) + ![Signal Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/signal_intermediate_catch_event.svg) - ![Signal Intermediate Non Interrupting Catch Event Symbol](/img/documentation/reference/bpmn20/signal_intermediate_non_interrupting_catch_event.svg) + ![Signal Intermediate Non Interrupting Catch Event Symbol](../../../assets/documentation/reference/bpmn20/signal_intermediate_non_interrupting_catch_event.svg) - ![Signal Intermediate Throw Event Symbol](/img/documentation/reference/bpmn20/signal_intermediate_throw_event.svg) + ![Signal Intermediate Throw Event Symbol](../../../assets/documentation/reference/bpmn20/signal_intermediate_throw_event.svg) - ![Signal Throw End Event Symbol](/img/documentation/reference/bpmn20/signal_throw_end_event.svg) + ![Signal Throw End Event Symbol](../../../assets/documentation/reference/bpmn20/signal_throw_end_event.svg) Error - ![Error EventSubprocess StartEvent Symbol](/img/documentation/reference/bpmn20/error_event_subprocess_start_event.svg) + ![Error EventSubprocess StartEvent Symbol](../../../assets/documentation/reference/bpmn20/error_event_subprocess_start_event.svg) - ![Error Boundary Catch Event Symbol](/img/documentation/reference/bpmn20/error_boundary_catch_event.svg) + ![Error Boundary Catch Event Symbol](../../../assets/documentation/reference/bpmn20/error_boundary_catch_event.svg) - ![Error Throw End Event Symbol](/img/documentation/reference/bpmn20/error_throw_end_event.svg) + ![Error Throw End Event Symbol](../../../assets/documentation/reference/bpmn20/error_throw_end_event.svg) Escalation - ![Escalation Event Subprocess Start Event Symbol](/img/documentation/reference/bpmn20/escalation_event_subprocess_start_event.svg) + ![Escalation Event Subprocess Start Event Symbol](../../../assets/documentation/reference/bpmn20/escalation_event_subprocess_start_event.svg) - ![Escalation Event Subprocess Non Interrupting Start Event Symbol](/img/documentation/reference/bpmn20/escalation_event_subprocess_non_interrupting_start_event.svg) + ![Escalation Event Subprocess Non Interrupting Start Event Symbol](../../../assets/documentation/reference/bpmn20/escalation_event_subprocess_non_interrupting_start_event.svg) - ![Escalation Boundary Catch Event Symbol](/img/documentation/reference/bpmn20/escalation_boundary_catch_event.svg) + ![Escalation Boundary Catch Event Symbol](../../../assets/documentation/reference/bpmn20/escalation_boundary_catch_event.svg) - ![Escalation Boundary Catch Non Interrupting Event Symbol](/img/documentation/reference/bpmn20/escalation_boundary_catch_non_interrupting_event.svg) + ![Escalation Boundary Catch Non Interrupting Event Symbol](../../../assets/documentation/reference/bpmn20/escalation_boundary_catch_non_interrupting_event.svg) - ![Escalation Intermediate Throw Event Symbol](/img/documentation/reference/bpmn20/escalation_intermediate_throw_event.svg) + ![Escalation Intermediate Throw Event Symbol](../../../assets/documentation/reference/bpmn20/escalation_intermediate_throw_event.svg) - ![Escalation Throw End Event Symbol](/img/documentation/reference/bpmn20/escalation_throw_end_event.svg) + ![Escalation Throw End Event Symbol](../../../assets/documentation/reference/bpmn20/escalation_throw_end_event.svg) @@ -394,26 +394,26 @@ chapter of the [BPMN Modeling Reference](http://operaton.org/bpmn/reference.html - ![Termination End Event Symbol](/img/documentation/reference/bpmn20/termination_end_event.svg) + ![Termination End Event Symbol](../../../assets/documentation/reference/bpmn20/termination_end_event.svg) Compensation - ![Compensation Event Subprocess Startevent Symbol](/img/documentation/reference/bpmn20/compensation_event_subprocess_start_event.svg) + ![Compensation Event Subprocess Startevent Symbol](../../../assets/documentation/reference/bpmn20/compensation_event_subprocess_start_event.svg) - ![Compensation Boundary Interrupting Event Symbol](/img/documentation/reference/bpmn20/compensation_boundary_event.svg) + ![Compensation Boundary Interrupting Event Symbol](../../../assets/documentation/reference/bpmn20/compensation_boundary_event.svg) - ![Compensation Intermediate Throw Event Symbol](/img/documentation/reference/bpmn20/compensation_intermediate_throw_event.svg) + ![Compensation Intermediate Throw Event Symbol](../../../assets/documentation/reference/bpmn20/compensation_intermediate_throw_event.svg) - ![Compensation End Event Symbol](/img/documentation/reference/bpmn20/compensation_end_event.svg) + ![Compensation End Event Symbol](../../../assets/documentation/reference/bpmn20/compensation_end_event.svg) @@ -423,61 +423,61 @@ chapter of the [BPMN Modeling Reference](http://operaton.org/bpmn/reference.html - ![Cancel Boundary Symbol](/img/documentation/reference/bpmn20/cancel_boundary_event.svg) + ![Cancel Boundary Symbol](../../../assets/documentation/reference/bpmn20/cancel_boundary_event.svg) - ![Cancel End Event Symbol](/img/documentation/reference/bpmn20/cancel_end_event.svg) + ![Cancel End Event Symbol](../../../assets/documentation/reference/bpmn20/cancel_end_event.svg) Multiple - ![Multiple Start Event Symbol](/img/documentation/reference/bpmn20/multiple_start_event.svg) + ![Multiple Start Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_start_event.svg) - ![Multiple Start Event Symbol](/img/documentation/reference/bpmn20/multiple_start_event.svg) + ![Multiple Start Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_start_event.svg) - ![Multiple Event Subprocess Non Interrupting Start Event Symbol](/img/documentation/reference/bpmn20/multiple_event_subprocess_non_interrupting_start_event.svg) + ![Multiple Event Subprocess Non Interrupting Start Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_event_subprocess_non_interrupting_start_event.svg) - ![Multiple Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg) + ![Multiple Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg) - ![Multiple Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg) + ![Multiple Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg) - ![Multiple Boundary Non Interrupting Catch Event Symbol](/img/documentation/reference/bpmn20/multiple_boundary_non_interrupting_event.svg) + ![Multiple Boundary Non Interrupting Catch Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_boundary_non_interrupting_event.svg) - ![Multiple Intermediate Throw Event Symbol](/img/documentation/reference/bpmn20/multiple_intermediate_throw_event.svg) + ![Multiple Intermediate Throw Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_intermediate_throw_event.svg) - ![Multiple End Event Symbol](/img/documentation/reference/bpmn20/multiple_end_event.svg) + ![Multiple End Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_end_event.svg) Multiple Parallel - ![Multiple Parallel Start Event Symbol](/img/documentation/reference/bpmn20/multiple_parallel_start_event.svg) + ![Multiple Parallel Start Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_parallel_start_event.svg) - ![Multiple Parallel Start Event Symbol](/img/documentation/reference/bpmn20/multiple_parallel_start_event.svg) + ![Multiple Parallel Start Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_parallel_start_event.svg) - ![Multiple Parallel Start Event Symbol](/img/documentation/reference/bpmn20/multiple_parallel_non_interrupting_start_event.svg) + ![Multiple Parallel Start Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_parallel_non_interrupting_start_event.svg) - ![Multiple Parallel Catch Event Symbol](/img/documentation/reference/bpmn20/multiple_parallel_catch_event.svg) + ![Multiple Parallel Catch Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_parallel_catch_event.svg) - ![Multiple Parallel Catch Event Symbol](/img/documentation/reference/bpmn20/multiple_parallel_catch_event.svg) + ![Multiple Parallel Catch Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_parallel_catch_event.svg) - ![Multiple Parallel Intermediate Non Interrupting Event Symbol](/img/documentation/reference/bpmn20/multiple_parallel_intermediate_non_interrupting_event.svg) + ![Multiple Parallel Intermediate Non Interrupting Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_parallel_intermediate_non_interrupting_event.svg) diff --git a/docs/documentation/reference/cmmn11/concepts/lifecycle.md b/docs/documentation/reference/cmmn11/concepts/lifecycle.md index 91035d4..764526e 100644 --- a/docs/documentation/reference/cmmn11/concepts/lifecycle.md +++ b/docs/documentation/reference/cmmn11/concepts/lifecycle.md @@ -21,7 +21,7 @@ The descriptions in this section are general for the constructs they describe. C To understand the role lifecycles play for CMMN execution, consider the following case: -![Example img](/img/documentation/reference/cmmn11/concepts/example-lifecycle-case.png) +![Example img](../../../../assets/documentation/reference/cmmn11/concepts/example-lifecycle-case.png) This case contains two human tasks *Task A* and *Task B* that are connected by a sentry. The sentry expresses that Task B can be enacted when Task A finishes. This is formally specified by lifecycles. In our example, the following steps might take place: @@ -29,21 +29,21 @@ This case contains two human tasks *Task A* and *Task B* that are connected by a 2. Two instances for each human task are automatically created, both in state `AVAILABLE`. 3. Task A does not have a condition to start, so it immediately reaches state `ENABLED`. Note that the steps 1 to 3 all happens synchronously with the `caseService` invocation from step 1. The case is now in the following state:
- ![Example img](/img/documentation/reference/cmmn11/concepts/lifecycle-example-1.png) + ![Example img](../../../../assets/documentation/reference/cmmn11/concepts/lifecycle-example-1.png)
4. A user manually starts Task A by calling `caseService.manuallyStartCaseExecution(taskAExecutionId);`. As a consequence, Task A reaches state `ACTIVE` and a task instance is added to the assignee's task list. Note that starting a task is only allowed if that task is in state `ENABLED`. Thus, trying to manually start Task B here by `caseService.manuallyStartCaseExecution(taskBExecutionId);` would fail. The state is now:
-![Example img](/img/documentation/reference/cmmn11/concepts/lifecycle-example-2.png) +![Example img](../../../../assets/documentation/reference/cmmn11/concepts/lifecycle-example-2.png)
5. The assignee completes the task instance by calling `taskService.complete(taskId);`. Task A reaches the state `COMPLETED`. 6. Task A's state transition triggers Task B's sentry. In consequence, Task B becomes `ENABLED`. This happens synchronously in the invocation from step 5. Accordingly, the case's new state is:
- ![Example img](/img/documentation/reference/cmmn11/concepts/lifecycle-example-3.png) + ![Example img](../../../../assets/documentation/reference/cmmn11/concepts/lifecycle-example-3.png)
7. Similar to Task A, a user may now use the `CaseService` and `TaskService` to start Task B, complete the corresponding task instance, and complete Task B. Ultimately, Task B reaches the state `COMPLETED`. 8. With both tasks in state `COMPLETED`, the case instance automatically reaches the state `COMPLETED` as well. The state has case has reached the following state:
- ![Example img](/img/documentation/reference/cmmn11/concepts/lifecycle-example-4.png) + ![Example img](../../../../assets/documentation/reference/cmmn11/concepts/lifecycle-example-4.png)
9. A user may close the case instance by invoking `caseService.closeCaseInstance(caseInstanceId);`. The case instance reaches the state `CLOSED`. @@ -65,7 +65,7 @@ Note that a `CaseExecution` object corresponds to a plan item, here the plan ite *Case instance* refers to an instance of the case plan model. More specific, it is an instance of the single top-level stage in a case definition. The lifecycle of a case instance is the following: -![Example img](/img/documentation/reference/cmmn11/concepts/CaseInstanceLifecycle.png) +![Example img](../../../../assets/documentation/reference/cmmn11/concepts/CaseInstanceLifecycle.png) States: @@ -112,7 +112,7 @@ States: The lifecycle of a task or stage plan item is the following: -![Example img](/img/documentation/reference/cmmn11/concepts/TaskStageLifecycle.png) +![Example img](../../../../assets/documentation/reference/cmmn11/concepts/TaskStageLifecycle.png) States: @@ -175,7 +175,7 @@ States: The lifecycle of a milestone plan item is the following: -![Example img](/img/documentation/reference/cmmn11/concepts/MilestoneLifecycle.png) +![Example img](../../../../assets/documentation/reference/cmmn11/concepts/MilestoneLifecycle.png) States diff --git a/docs/documentation/reference/cmmn11/markers/repetition-rule.md b/docs/documentation/reference/cmmn11/markers/repetition-rule.md index 32a8983..6ebc92f 100644 --- a/docs/documentation/reference/cmmn11/markers/repetition-rule.md +++ b/docs/documentation/reference/cmmn11/markers/repetition-rule.md @@ -60,7 +60,7 @@ It is not advisable to define a repetition rule without entry criteria on a mile Consider the following excerpt of a CMMN case definition: -![Example img](/img/documentation/reference/cmmn11/markers/repetition-rule-example.png) +![Example img](../../../../assets/documentation/reference/cmmn11/markers/repetition-rule-example.png) The corresponding XML representation could look like this: @@ -91,15 +91,15 @@ In our example, the following steps might take place: 1. A user instantiates the case and sets the variable `score` to the value `10`. 2. An instance *A* for the human task is created. The instance *A* transitions into state `ENABLED`. -![Example img](/img/documentation/reference/cmmn11/markers/state-1.png) +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-1.png) 3. A user manually starts task *A* and the instance reaches the state `ACTIVE`. 4. A user completes task *A*. During the transition into state `COMPLETED`, the repetition rule is evaluated. As a consequence that the variable `score` is less than `50`, a new instance `A'` of the corresponding task is created. The new instance moves into state `ENABLED`. -![Example img](/img/documentation/reference/cmmn11/markers/state-2.png) +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-2.png) 5. Once again, a user manually starts and completes task *A'*. Since the variable `score` is still less than `50`, the repetition rule evaluates to `true` when *A'* transitions into state `COMPLETED`. As a result, a new instance *A''* is created. -![Example img](/img/documentation/reference/cmmn11/markers/state-3.png) +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-3.png) 6. A user changes the value of the variable `score` to `55`. 7. A user manually starts and completes task *A''* and the instance reaches the state `COMPLETED`. Since the variable `score` has been set to `55` the repetition rule evaluates to `false` and a new instance is not created. -![Example img](/img/documentation/reference/cmmn11/markers/state-4.png) +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-4.png) 8. From now on, no more repetitions of *A* can occur. The transition in which the repetition rule is evaluated can be changed by a Operaton extension attribute named `operaton:repeatOnStandardEvent`. For a task it looks as follows: @@ -133,7 +133,7 @@ A trigger for a repetition of a milestone, stage or task is a satisfied [sentry] Consider the following excerpt of a CMMN case definition, where the repetition of the tasks depends on the occurrence of an entry criterion: -![Example img](/img/documentation/reference/cmmn11/markers/repetition-rule-example.png) +![Example img](../../../../assets/documentation/reference/cmmn11/markers/repetition-rule-example.png) The corresponding XML representation could look like this: @@ -181,18 +181,18 @@ In our example, the following steps might take place: 1. A user instantiates the case and sets the variable `score` to the value `10`. 2. Two instances for each human task are automatically created and both transition in state `AVAILABLE`. -![Example img](/img/documentation/reference/cmmn11/markers/state-1.png) +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-1.png) 1. When the entry criterion (*Sentry_1*) of instance *B* is satisfied, the task *B* reaches the state `ENABLED`. During the transition to the state `ENABLED`, the repetition rule is evaluated. As a consequence that the variable `score` is less than `50`, a new instance *B'* of the corresponding task is created. The instance *B'* moves into state `AVAILABLE`. -![Example img](/img/documentation/reference/cmmn11/markers/state-2.png) +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-2.png) 1. A user manually starts and completes task *B* and the instance reaches the state `COMPLETED`. 2. The completion of instance *B* satisfies the entry criterion (*Sentry_2*) of *A*. In consequence, task *A* becomes `ENABLED` and a new instance *A'* is created, because the evaluation of the repetition rule during the transition returns `true`. -![Example img](/img/documentation/reference/cmmn11/markers/state-3.png) +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-3.png) 1. A user changes the value of the variable `score` to `55`. 2. The entry criterion (*Sentry_1*) of instance *B'* is satisfied (once again). The instance *B'* reaches the state `ENABLED`. As a consequence that the variable `score` has been set to `55`, the repetition rule evaluates to `false`. So, a new instance is not created. -![Example img](/img/documentation/reference/cmmn11/markers/state-4.png) +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-4.png) 1. A user manually starts and completes task *B'* and the instance reaches the state `COMPLETED`. 2. The completion of instance *B'* satisfies the entry criterion (*Sentry_2*) of *A'*. So that *A'* becomes `ENABLED` and a new instance of the corresponding task is not created, because the repetition rule evaluates to `false`. -![Example img](/img/documentation/reference/cmmn11/markers/state-5.png) +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-5.png) 1. From now on, no more repetitions of *A* or *B* can occur. diff --git a/docs/documentation/reference/cmmn11/sentry.md b/docs/documentation/reference/cmmn11/sentry.md index 2dcbcd6..98a12f3 100644 --- a/docs/documentation/reference/cmmn11/sentry.md +++ b/docs/documentation/reference/cmmn11/sentry.md @@ -118,7 +118,7 @@ Variable event that occurs in the scope of the execution triggers the sentry wit Consider the below example in which there are two human tasks. `HumanTask1` is defined inside the case model and the `HumanTask_2` is defined inside the stage. Each human task is attached with a entry criterion sentry and both the sentries are evaluated when the update event for the variable `foo` occurs. -![Example img](/img/documentation/reference/cmmn11/variableOnPart.png) +![Example img](../../../assets/documentation/reference/cmmn11/variableOnPart.png) Scenario 1: diff --git a/docs/documentation/reference/dmn/decision-table/hit-policy.md b/docs/documentation/reference/dmn/decision-table/hit-policy.md index b9898b6..e2bbb1c 100644 --- a/docs/documentation/reference/dmn/decision-table/hit-policy.md +++ b/docs/documentation/reference/dmn/decision-table/hit-policy.md @@ -13,7 +13,7 @@ menu: aliases: [reference/dmn/decision-table/hit-policy/] --- -![Hit Policy](/img/documentation/reference/dmn/decision-table/hit-policy.png) +![Hit Policy](../../../../assets/documentation/reference/dmn/decision-table/hit-policy.png) A decision table has a hit policy that specifies what the results of the evaluation of a decision table consist of. @@ -77,7 +77,7 @@ output entries of the satisfied rule. If more than one rule is satisfied, the Unique hit policy is violated. See the following decision table. -![Example img](/img/documentation/reference/dmn/decision-table/hit-policy-unique.png)Hit Policy Unique" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-unique.png)Hit Policy Unique" class="no-lightbox Depending on the current season the dish should be chosen. Only one dish can be chosen, since only one season can exist at the same time. @@ -91,7 +91,7 @@ If multiple rules are satisfied which generate different outputs, the hit policy is violated. See the following example: -![Example img](/img/documentation/reference/dmn/decision-table/hit-policy-any.png)Hit Policy Any" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-any.png)Hit Policy Any" class="no-lightbox This is a decision table for the leave application. If the applier has no vacation days left or is currently in the probation period, the application will be refused. Otherwise the application is applied. @@ -101,7 +101,7 @@ Otherwise the application is applied. Multiple rules can be satisfied. The decision table result contains only the output of the first satisfied rule. -![Example img](/img/documentation/reference/dmn/decision-table/hit-policy-first.png)Hit Policy First" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-first.png)Hit Policy First" class="no-lightbox See the above decistion table for advertisement. Regarding the current age of the user, which advertisement should be shown is decided. For example, the user is 19 years old. All the rules will match, but since the hit policy is set to first only, the advertisement for Cars is used. @@ -111,7 +111,7 @@ the hit policy is set to first only, the advertisement for Cars is used. Multiple rules can be satisfied. The decision table result contains the output of all satisfied rules in the order of the rules in the decision table. -![Example img](/img/documentation/reference/dmn/decision-table/hit-policy-rule-order.png)Hit Policy Rule Order" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-rule-order.png)Hit Policy Rule Order" class="no-lightbox Again, see the advertisement example with the rule order policy. Say we have a user at the age of 19 again. All rules are satisfied so all outputs are given, ordered by the rule ordering. It can perhaps be used to indicate the priority of the displayed advertisements. @@ -121,7 +121,7 @@ It can perhaps be used to indicate the priority of the displayed advertisements. Multiple rules can be satisfied. The decision table result contains the output of all satisfied rules in an arbitrary order as a list. -![Example img](/img/documentation/reference/dmn/decision-table/hit-policy-collect.png)Hit Policy Collect" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-collect.png)Hit Policy Collect" class="no-lightbox With this hit policy, the output list has no ordering. So the advertisement will be arbitrary if, for example, the age is 19. @@ -175,21 +175,21 @@ the Operaton DMN engine: #### SUM aggregator The SUM aggregator sums up all outputs from the satisfied rules. -![Example img](/img/documentation/reference/dmn/decision-table/hit-policy-collect-sum.png)Hit Policy Collect SUM" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-collect-sum.png)Hit Policy Collect SUM" class="no-lightbox The showed decision table can be used to sum up the salary bonus for an employee. For example, the employee has been working in the company for 3.5 years. So the first, second and third rule will match and the result of the decision table is 600, since the output is summed up. #### MIN aggregator The MIN aggregator can be used to return the smallest output value of all satisfied rules. See the following example of a car insurance. After years without a car crash the insurance fee will be reduced. -![Example img](/img/documentation/reference/dmn/decision-table/hit-policy-collect-min.png)Hit Policy Collect MIN" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-collect-min.png)Hit Policy Collect MIN" class="no-lightbox For example, if the input for the decision table is 3.5 years, the result will be 98.83, since the first three rules match but the third rule has the minimal output. #### MAX aggregator The MAX aggregator can be used to return the largest output value of all satisfied rules. -![Example img](/img/documentation/reference/dmn/decision-table/hit-policy-collect-max.png)Hit Policy Collect MAX" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-collect-max.png)Hit Policy Collect MAX" class="no-lightbox This decision table represents the decision for the amount of pocket money for a child. Depending of the age, the amount grows. For example, an input of 9 will satisfy the first and second rules. @@ -199,7 +199,7 @@ will be 5. A child at the age of 9 will get 5 as pocket money. #### COUNT aggregator The COUNT aggregator can be use to return the count of satisfied rules. -![Example img](/img/documentation/reference/dmn/decision-table/hit-policy-collect-count.png)Hit Policy Collect COUNT" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-collect-count.png)Hit Policy Collect COUNT" class="no-lightbox For example, see the salary bonus decision table again, this time with the COUNT aggregator. With an input of 4, the first three rules will be satisfied. Therefore, the result from the decision table will be 3, which means diff --git a/docs/documentation/reference/dmn/decision-table/index.md b/docs/documentation/reference/dmn/decision-table/index.md index 28ac37a..5912059 100644 --- a/docs/documentation/reference/dmn/decision-table/index.md +++ b/docs/documentation/reference/dmn/decision-table/index.md @@ -5,7 +5,7 @@ sidebar_position: 10 --- -![Dish table](/img/documentation/reference/dmn/decision-table/dish-table.png) +![Dish table](../../../../assets/documentation/reference/dmn/decision-table/dish-table.png) A decision table represents decision logic which can be depicted as a table in @@ -26,7 +26,7 @@ A decision table is represented by a `decisionTable` element inside a ## Decision Name -![Decision Name](/img/documentation/reference/dmn/decision-table/decision-name.png) +![Decision Name](../../../../assets/documentation/reference/dmn/decision-table/decision-name.png) The name describes the decision for which the decision table provides the decision logic. It is set as the `name` attribute on the `decision` element. @@ -43,7 +43,7 @@ It can be changed via the Properties Panel after selecting the respective ## Decision Id -![Decision Id](/img/documentation/reference/dmn/decision-table/decision-id.png) +![Decision Id](../../../../assets/documentation/reference/dmn/decision-table/decision-id.png) The id is the technical identifier of the decision. It is set in the `id` attribute on the `decision` element. diff --git a/docs/documentation/reference/dmn/decision-table/input.md b/docs/documentation/reference/dmn/decision-table/input.md index cfcecbe..0e20dd2 100644 --- a/docs/documentation/reference/dmn/decision-table/input.md +++ b/docs/documentation/reference/dmn/decision-table/input.md @@ -13,7 +13,7 @@ menu: aliases: [reference/dmn/decision-table/input/] --- -![Input](/img/documentation/reference/dmn/decision-table/input.png) +![Input](../../../../assets/documentation/reference/dmn/decision-table/input.png) A decision table can have one or more inputs, also called input clauses. An input clause defines the id, label, expression and type of a decision table @@ -57,7 +57,7 @@ the `id` attribute of the `input` XML element. ## Input Label -![Example img](/img/documentation/reference/dmn/decision-table/input-label.png)Input Label" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/input-label.png)Input Label" class="no-lightbox An input label is a short description of the input. It is set on the `input` XML element in the `label` attribute. Note that the label is not required but @@ -73,7 +73,7 @@ recommended, since it helps to understand the decision. ## Input Expression -![Example img](/img/documentation/reference/dmn/decision-table/input-expression.png)Input Expression" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/input-expression.png)Input Expression" class="no-lightbox An input expression specifies how the value of the input clause is generated. It is an expression which will be evaluated by the DMN engine. It is usually @@ -91,7 +91,7 @@ expression is set inside a `text` element that is a child of the ## Input Type Definition -![Example img](/img/documentation/reference/dmn/decision-table/input-type-definition.png)Input Type Definition" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/input-type-definition.png)Input Type Definition" class="no-lightbox The type of the input clause can be specified by the `typeRef` attribute on the `inputExpression` XML element. After the input expression is evaluated by the diff --git a/docs/documentation/reference/dmn/decision-table/output.md b/docs/documentation/reference/dmn/decision-table/output.md index 5629733..e9241f2 100644 --- a/docs/documentation/reference/dmn/decision-table/output.md +++ b/docs/documentation/reference/dmn/decision-table/output.md @@ -13,7 +13,7 @@ menu: aliases: [reference/dmn/decision-table/output/] --- -![Example img](/img/documentation/reference/dmn/decision-table/output.png)Output" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/output.png)Output" class="no-lightbox A decision table can have one or more outputs, also called output clauses. An output clause defines the id, label, name and type of a decision table output. @@ -47,7 +47,7 @@ set as the `id` attribute of the `output` XML element. ## Output Label -![Example img](/img/documentation/reference/dmn/decision-table/output-label.png)Output Label" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/output-label.png)Output Label" class="no-lightbox An output label is a short description of the output. It is set on the `output` XML element in the `label` attribute. Note that the label is not required but @@ -59,7 +59,7 @@ recommended, since it helps to understand the decision. ## Output Name -![Example img](/img/documentation/reference/dmn/decision-table/output-name.png)Output Name" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/output-name.png)Output Name" class="no-lightbox The name of the output is used to reference the value of the output in the [decision table result]. It is specified by the `name` attribute on the @@ -74,7 +74,7 @@ unique name. ## Output Type Definition -![Example img](/img/documentation/reference/dmn/decision-table/output-type-definition.png)Output Type Definition" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/output-type-definition.png)Output Type Definition" class="no-lightbox The type of the output clause can be specified by the `typeRef` attribute on the `output` XML element. After an [output entry] is evaluated by the diff --git a/docs/documentation/reference/dmn/decision-table/rule.md b/docs/documentation/reference/dmn/decision-table/rule.md index 9882b01..f07ba45 100644 --- a/docs/documentation/reference/dmn/decision-table/rule.md +++ b/docs/documentation/reference/dmn/decision-table/rule.md @@ -13,7 +13,7 @@ menu: aliases: [reference/dmn/decision-table/rule/] --- -![Example img](/img/documentation/reference/dmn/decision-table/rule.png)Rule" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/rule.png)Rule" class="no-lightbox A decision table can have one or more rules. Each rule contains input and output entries. The input entries are the condition and the output entries the @@ -48,7 +48,7 @@ A rule is represented by a `rule` element inside a `decisionTable` XML element. ## Input Entry (Condition) -![Example img](/img/documentation/reference/dmn/decision-table/input-entry.png)Input Entry" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/input-entry.png)Input Entry" class="no-lightbox A rule can have one or more input entries, which are the conditions of the rule. Each input entry contains an expression in a `text` element as child of an @@ -96,7 +96,7 @@ languages. ## Output Entry (Conclusion) -![Example img](/img/documentation/reference/dmn/decision-table/output-entry.png)Output Entry" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/output-entry.png)Output Entry" class="no-lightbox A rule can have one or more output entries, which are the conclusions of the rule. Each output entry contains an expression in a `text` element as child of @@ -173,7 +173,7 @@ will be determined with precedence of the empty input outcome. ## Description -![Example img](/img/documentation/reference/dmn/decision-table/description.png)Description" class="no-lightbox +![Example img](../../../../assets/documentation/reference/dmn/decision-table/description.png)Description" class="no-lightbox A rule can be annotated with a description that provides additional information. The description text is set inside the `description` XML element. diff --git a/docs/documentation/reference/dmn/drg/index.md b/docs/documentation/reference/dmn/drg/index.md index d4d3727..fd0421a 100644 --- a/docs/documentation/reference/dmn/drg/index.md +++ b/docs/documentation/reference/dmn/drg/index.md @@ -5,7 +5,7 @@ sidebar_position: 30 --- -![Decision Requirements Graph](/img/documentation/reference/dmn/drg/drd.png) +![Decision Requirements Graph](../../../../assets/documentation/reference/dmn/drg/drd.png) A Decision Requirements Graph (DRG) models a domain of decision-making, showing the most important elements involved in it and the dependencies between them. The elements modeled are [decisions], [input data], and [knowledge sources]. @@ -27,7 +27,7 @@ In the XML a DRG is represented by the `definitions` element. ## Decision Requirements Graph Name -![Decision Requirements Graph Name](/img/documentation/reference/dmn/drg/drg-name.png) +![Decision Requirements Graph Name](../../../../assets/documentation/reference/dmn/drg/drg-name.png) The name describes the DRG. It is set as the `name` attribute on the `definitions` element. @@ -42,7 +42,7 @@ The name describes the DRG. It is set as the `name` attribute on the `definition ## Decision Requirements Graph Id -![Decision Requirements Graph Id](/img/documentation/reference/dmn/drg/drg-id.png) +![Decision Requirements Graph Id](../../../../assets/documentation/reference/dmn/drg/drg-id.png) The id is the technical identifier of the DRG. It is set in the `id` attribute on the `definitions` element. @@ -61,7 +61,7 @@ The engine uses the id as the decision requirements definition key of the deploy ## Decision -![Decision](/img/documentation/reference/dmn/drg/decision.png) +![Decision](../../../../assets/documentation/reference/dmn/drg/decision.png) A decision requirements graph can have one or more decisions. A decision has a [name] which is shown in the DRD and an [id]. The decision logic inside the decision must be either a [decision table] or a [decision literal expression]. @@ -79,7 +79,7 @@ A decision is represented by a `decision` element inside the `definitions` XML e ### Required Decisions -![Required Decision](/img/documentation/reference/dmn/drg/required-decision.png) +![Required Decision](../../../../assets/documentation/reference/dmn/drg/required-decision.png) A decision can have one or more required decisions which it depends on. @@ -97,7 +97,7 @@ It has a `href` attribute and the value starts with `#` followed by the [decisio ## Input Data -![Input Data](/img/documentation/reference/dmn/drg/input-data.png) +![Input Data](../../../../assets/documentation/reference/dmn/drg/input-data.png) An input data denotes information used as an input by one or more decisions. @@ -119,7 +119,7 @@ Note that an input data has no execution semantics and is ignored by the Operato ## Knowledge Source -![Knowledge Source](/img/documentation/reference/dmn/drg/knowledge-source.png) +![Knowledge Source](../../../../assets/documentation/reference/dmn/drg/knowledge-source.png) A knowledge source denotes an authority for a Decision. diff --git a/docs/documentation/reference/dmn/feel/legacy/data-types.md b/docs/documentation/reference/dmn/feel/legacy/data-types.md index 4b47867..b9837b6 100644 --- a/docs/documentation/reference/dmn/feel/legacy/data-types.md +++ b/docs/documentation/reference/dmn/feel/legacy/data-types.md @@ -15,14 +15,14 @@ The Operaton DMN engine supports the following FEEL data types. ## String -![Example img](/img/documentation/reference/dmn/feel/legacy/string-type.png)String" class="no-lightbox +![Example img](../../../../../assets/documentation/reference/dmn/feel/legacy/string-type.png)String" class="no-lightbox FEEL supports Strings. They must be encapsulated in double quotes. They support only the equal [comparison] operator. ## Numeric Types -![Example img](/img/documentation/reference/dmn/feel/legacy/integer-type.png)Integer" class="no-lightbox +![Example img](../../../../../assets/documentation/reference/dmn/feel/legacy/integer-type.png)Integer" class="no-lightbox FEEL supports numeric types like integer. In the Operaton DMN engine the following numeric types are available: @@ -35,14 +35,14 @@ Numeric types support all [comparison] operators and [ranges]. ## Boolean -![Example img](/img/documentation/reference/dmn/feel/legacy/boolean-type.png)Boolean" class="no-lightbox +![Example img](../../../../../assets/documentation/reference/dmn/feel/legacy/boolean-type.png)Boolean" class="no-lightbox FEEL supports the boolean value `true` and `false`. The boolean type only supports the equal [comparison] operator. ## Date -![Example img](/img/documentation/reference/dmn/feel/legacy/date-type.png)Date" class="no-lightbox +![Example img](../../../../../assets/documentation/reference/dmn/feel/legacy/date-type.png)Date" class="no-lightbox FEEL supports date types. In the Operaton DMN engine the following date types are available: diff --git a/docs/documentation/user-guide/dmn-engine/evaluate-decisions.md b/docs/documentation/user-guide/dmn-engine/evaluate-decisions.md index 0978706..39526be 100644 --- a/docs/documentation/user-guide/dmn-engine/evaluate-decisions.md +++ b/docs/documentation/user-guide/dmn-engine/evaluate-decisions.md @@ -189,7 +189,7 @@ which contains only one entry. This entry represents the expression value and is Assume the following example of making a decision to select a dish. -![Example img](/img/documentation/user-guide/dmn-engine/dish-dmn.png)Select Dish +![Example img](../../../assets/documentation/user-guide/dmn-engine/dish-dmn.png)Select Dish The decision table returns the `desiredDish` as the output. @@ -253,11 +253,11 @@ If a decision has one or more [required decisions], then the required decisions Assume the following example of making a decision to select beverages. -![Example img](/img/documentation/user-guide/dmn-engine/beverages-dmn.png)Beverages Decision +![Example img](../../../assets/documentation/user-guide/dmn-engine/beverages-dmn.png)Beverages Decision The following [decision requirements diagram] shows that the `Beverages` decision requires the `Dish` decision (from the previous example). -![Example img](/img/documentation/user-guide/dmn-engine/drd.png)Select beverages +![Example img](../../../assets/documentation/user-guide/dmn-engine/drd.png)Select beverages When the `Beverages` decision is evaluated then the DMN engine evaluates the `Dish` decision first. diff --git a/docs/documentation/user-guide/model-api/bpmn-model-api/create-a-model.md b/docs/documentation/user-guide/model-api/bpmn-model-api/create-a-model.md index 09b832a..e3409d1 100644 --- a/docs/documentation/user-guide/model-api/bpmn-model-api/create-a-model.md +++ b/docs/documentation/user-guide/model-api/bpmn-model-api/create-a-model.md @@ -91,7 +91,7 @@ Bpmn.writeModelToFile(file, modelInstance); With the basic helper methods from above it is very easy and straightforward to create simple processes. First, create a process with a start event, user task and an end event. -![Example img](/img/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-simple-process.png)Single User Task Example +![Example img](../../../../assets/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-simple-process.png)Single User Task Example The following code creates this process using the helper methods from above (without the DI elements). @@ -126,7 +126,7 @@ Bpmn.writeModelToFile(file, modelInstance); Even more complex processes can be created with a few lines of code with the standard BPMN model API. -![Example img](/img/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-parallel-gateway.png)Parallel Task Example +![Example img](../../../../assets/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-parallel-gateway.png)Parallel Task Example ```java // create an empty model diff --git a/docs/documentation/user-guide/process-applications/maven-archetypes.md b/docs/documentation/user-guide/process-applications/maven-archetypes.md index 22447fc..761165e 100644 --- a/docs/documentation/user-guide/process-applications/maven-archetypes.md +++ b/docs/documentation/user-guide/process-applications/maven-archetypes.md @@ -83,28 +83,28 @@ In case you need more flexibility and customization for your project, you can ge ### Detailed Instructions 1. Go to **Preferences -> Maven -> Archetypes -> Add Remote Catalog** -![Example img](/img/documentation/user-guide/process-applications/eclipse-00-preferences-maven-archetypes.png)Eclipse Preferences: Maven Archetypes +![Example img](../../../assets/documentation/user-guide/process-applications/eclipse-00-preferences-maven-archetypes.png)Eclipse Preferences: Maven Archetypes 2. Enter the following URL and description, click on **Verify...** to test the connection and if that worked click on **OK** to save the catalog. Catalog File: **https://artifacts.camunda.com/artifactory/operaton-bpm/** Description: **Operaton** -![Example img](/img/documentation/user-guide/process-applications/eclipse-01-add-remote-archetype-catalog.png)Eclipse Preferences: Add Maven Archetype Catalog +![Example img](../../../assets/documentation/user-guide/process-applications/eclipse-01-add-remote-archetype-catalog.png)Eclipse Preferences: Add Maven Archetype Catalog Now you should be able to use the archetypes when creating a new Maven project in Eclipse: 1. Go to **File -> New -> Project...** and select **Maven -> Maven Project** -![Example img](/img/documentation/user-guide/process-applications/eclipse-02-create-maven-project.png)Create new Maven project +![Example img](../../../assets/documentation/user-guide/process-applications/eclipse-02-create-maven-project.png)Create new Maven project 2. Select a location for the project or just keep the default setting. -![Example img](/img/documentation/user-guide/process-applications/eclipse-03-select-maven-project-location.png)Eclipse: Select Maven project location +![Example img](../../../assets/documentation/user-guide/process-applications/eclipse-03-select-maven-project-location.png)Eclipse: Select Maven project location 3. Select the archetype from the catalog that you created before. -![Example img](/img/documentation/user-guide/process-applications/eclipse-04-select-archetype-from-catalog.png)Eclipse: Select Maven archetype from catalog +![Example img](../../../assets/documentation/user-guide/process-applications/eclipse-04-select-archetype-from-catalog.png)Eclipse: Select Maven archetype from catalog 4. Specify Maven coordinates and Operaton version and finish the project creation. -![Example img](/img/documentation/user-guide/process-applications/eclipse-05-specify-maven-coordinates-and-operaton-version.png)Eclipse: Specify Maven coordinates and Operaton version +![Example img](../../../assets/documentation/user-guide/process-applications/eclipse-05-specify-maven-coordinates-and-operaton-version.png)Eclipse: Specify Maven coordinates and Operaton version The resulting project should look like this: -![Example img](/img/documentation/user-guide/process-applications/eclipse-06-generated-maven-project.png)Generated Maven Project in Eclipse +![Example img](../../../assets/documentation/user-guide/process-applications/eclipse-06-generated-maven-project.png)Generated Maven Project in Eclipse ### Troubleshooting diff --git a/docs/documentation/user-guide/process-applications/process-application-event-listeners.md b/docs/documentation/user-guide/process-applications/process-application-event-listeners.md index 824e8cd..39f01ec 100644 --- a/docs/documentation/user-guide/process-applications/process-application-event-listeners.md +++ b/docs/documentation/user-guide/process-applications/process-application-event-listeners.md @@ -16,7 +16,7 @@ Task Event listeners allow to react to Task Events (Tasks are Created, Assigned, When using the process application API, the process engine makes sure that Events are delegated to the right process application. For example, assume there is a process application deployed as "invoice.war" which deploys a process definition named "invoice". The invoice process has a task named "archive invoice". The application "invoice.war" further provides a Java Class implementing the [ExecutionListener](../../user-guide/process-engine/delegation-code.md#execution-listener) interface and is configured to be invoked whenever the END event is fired on the "archive invoice" activity. The process engine makes sure that the event is delegated to the listener class located inside the process application: -![Example img](/img/documentation/user-guide/process-applications/process-application-events.png)Process Application Events +![Example img](../../../assets/documentation/user-guide/process-applications/process-application-events.png)Process Application Events On top of the Execution and Task Listeners which are [explicitly configured in the BPMN 2.0 XML](../../user-guide/process-engine/delegation-code.md#execution-listener), the process application API supports defining a global ExecutionListener and a global TaskListener which are notified about *all events* happening in the processes deployed by a process application: ```java diff --git a/docs/documentation/user-guide/process-applications/process-application-resources.md b/docs/documentation/user-guide/process-applications/process-application-resources.md index 315e2f9..5079645 100644 --- a/docs/documentation/user-guide/process-applications/process-application-resources.md +++ b/docs/documentation/user-guide/process-applications/process-application-resources.md @@ -12,7 +12,7 @@ menu: Process applications provide and logically group resources specific to the processes they contain. There are resources that are part of the application itself, like a classloader and its classes and resources, as well as resources managed by the process engine at runtime, like a set of [scripting engines](../../user-guide/process-engine/scripting.md) or [Spin data formats](../../user-guide/data-formats/index.md). This section describes under which conditions the process engine looks up resources on process application level and how that lookup can be enforced. -![Example img](/img/documentation/user-guide/process-applications/process-application-context.png)Process Application Context +![Example img](../../../assets/documentation/user-guide/process-applications/process-application-context.png)Process Application Context ## Context Switch diff --git a/docs/documentation/user-guide/process-applications/the-processes-xml-deployment-descriptor.md b/docs/documentation/user-guide/process-applications/the-processes-xml-deployment-descriptor.md index b2556c3..c89530e 100644 --- a/docs/documentation/user-guide/process-applications/the-processes-xml-deployment-descriptor.md +++ b/docs/documentation/user-guide/process-applications/the-processes-xml-deployment-descriptor.md @@ -138,7 +138,7 @@ Note that the processes.xml file can contain multiple process archives with diff When deploying a set of BPMN 2.0 files to the process engine, a process deployment is created. The process deployment is performed to the process engine database so that when the process engine is stopped and restarted, the process definitions can be restored from the database and execution can continue. When a process application performs a deployment, in addition to the database deployment it will create a registration for this deployment with the process engine. This is illustrated in the following figure: -![Example img](/img/documentation/user-guide/process-applications/process-application-deployment.png)Process Application Deployment +![Example img](../../../assets/documentation/user-guide/process-applications/process-application-deployment.png)Process Application Deployment Deployment of the process application "invoice.war" is illustrated on the left hand side: @@ -150,7 +150,7 @@ When the process application is undeployed, the registration for the deployment The registration allows the process engine to load additional Java Classes and resources from the process application when executing the processes. In contrast to the database deployment, which can be restored whenever the process engine is restarted, the registration of the process application is kept as in-memory state. This in-memory state is local to an individual cluster node, allowing us to undeploy or redeploy a process application on a particular cluster node without affecting the other nodes and without having to restart the process engine. If the Job Executor is deployment aware, job execution will also stop for jobs created by this process application. However, as a consequence, the registration also needs to be re-created when the application server is restarted. This happens automatically if the process application takes part in the application server deployment lifecycle. For instance, ServletProcessApplications are deployed as ServletContextListeners and when the servlet context is started, it creates the deployment and registration with the process engine. The redeployment process is illustrated in the next figure: -![Example img](/img/documentation/user-guide/process-applications/process-application-redeployment.png)Process Application Redeployment +![Example img](../../../assets/documentation/user-guide/process-applications/process-application-redeployment.png)Process Application Redeployment (a) Left hand side: invoice.bpmn has not changed: diff --git a/docs/documentation/user-guide/process-engine/database/database-schema.md b/docs/documentation/user-guide/process-engine/database/database-schema.md index f75226e..e0326b7 100644 --- a/docs/documentation/user-guide/process-engine/database/database-schema.md +++ b/docs/documentation/user-guide/process-engine/database/database-schema.md @@ -23,7 +23,7 @@ match the service API. The main tables of the process engines are the entities of process definitions, executions, tasks, variables and event subscriptions. Their relationship is shown in the following UML model. -![Example img](/img/documentation/user-guide/process-engine/database/database-schema.png)Database Schema +![Example img](../../../../assets/documentation/user-guide/process-engine/database/database-schema.png)Database Schema ## Process Definitions (`ACT_RE_PROCDEF`) @@ -106,26 +106,26 @@ The following Entity Relationship Diagrams visualize the database tables and the ## Engine BPMN -![Example img](/img/documentation/user-guide/process-engine/database/erd_722_bpmn.svg)BPMN Tables +![Example img](../../../../assets/documentation/user-guide/process-engine/database/erd_722_bpmn.svg)BPMN Tables ## Engine DMN -![Example img](/img/documentation/user-guide/process-engine/database/erd_722_dmn.svg)DMN Tables +![Example img](../../../../assets/documentation/user-guide/process-engine/database/erd_722_dmn.svg)DMN Tables ## Engine CMMN -![Example img](/img/documentation/user-guide/process-engine/database/erd_722_cmmn.svg)CMMN Tables +![Example img](../../../../assets/documentation/user-guide/process-engine/database/erd_722_cmmn.svg)CMMN Tables ## History To allow different configurations and to keep the tables more flexible, the history tables contain no foreign key constraints. -![Example img](/img/documentation/user-guide/process-engine/database/erd_722_history.svg)History Tables +![Example img](../../../../assets/documentation/user-guide/process-engine/database/erd_722_history.svg)History Tables ## Identity -![Example img](/img/documentation/user-guide/process-engine/database/erd_722_identity.svg)Identity Tables \ No newline at end of file +![Example img](../../../../assets/documentation/user-guide/process-engine/database/erd_722_identity.svg)Identity Tables \ No newline at end of file diff --git a/docs/documentation/user-guide/process-engine/error-handling.md b/docs/documentation/user-guide/process-engine/error-handling.md index c32189a..1e1ddd3 100644 --- a/docs/documentation/user-guide/process-engine/error-handling.md +++ b/docs/documentation/user-guide/process-engine/error-handling.md @@ -41,7 +41,7 @@ In that case you model the error handling explicitly in the process model but yo Example: -![Example img](/img/documentation/user-guide/process-engine/error-result-xor.png)Error Result XOR +![Example img](../../../assets/documentation/user-guide/process-engine/error-result-xor.png)Error Result XOR We trigger a "check data completeness" task. The Java Service might throw a "DataIncompleteException". However, if we check for completeness, incomplete data is not an exception, but an expected result, so we prefer to use an XOR-Gateway in the process flow which evaluates a process variable, e.g., ```"#{dataComplete==false}"```. @@ -49,7 +49,7 @@ We trigger a "check data completeness" task. The Java Service might throw a "Dat The BPMN 2.0 error event gives you the possibility to explicitly model errors, tackling the use case of business errors. The most prominent example is the "intermediate catching error event", which can be attached to the boundary of an activity. Defining a boundary error event makes most sense on an embedded subprocess, a call activity or a Service Task. An error will cause the alternative process flow to be triggered: -![Example img](/img/documentation/user-guide/process-engine/bpmn.boundary.error.event.png)Error Boundary Event +![Example img](../../../assets/documentation/user-guide/process-engine/bpmn.boundary.error.event.png)Error Boundary Event See the [Error Events](../../reference/bpmn20/events/error-events.md) section of the [BPMN 2.0 Implementation Reference](../../reference/bpmn20/index.md) and the [Throwing Errors from Delegation Code](../process-engine/delegation-code.md#throw-bpmn-errors-from-delegation-code) section of the [User Guide](../index.md) for more information. @@ -86,7 +86,7 @@ for (Job failedJob : failedJobs) { Of course you can always explicitly model a retry mechanism as pointed out in [Where is the retry in BPMN 2.0](http://www.bpm-guide.de/2012/06/15/where-is-the-retry-in-bpmn-2-0/): -![Example img](/img/documentation/user-guide/process-engine/retry.png)Retry Mechanism +![Example img](../../../assets/documentation/user-guide/process-engine/retry.png)Retry Mechanism We would recommend to limit it to cases where you want to see it in the process diagram for a good reason. We prefer asynchronous continuation, as it doesn't bloat your process diagram and basically can do the same thing with even less runtime overhead, as "walking" through the modeled loop involves additional action, e.g., writing an audit log. @@ -94,7 +94,7 @@ We would recommend to limit it to cases where you want to see it in the process We often see something like this in projects: -![Example img](/img/documentation/user-guide/process-engine/error-handling-user-task.png)User Task Error Handling +![Example img](../../../assets/documentation/user-guide/process-engine/error-handling-user-task.png)User Task Error Handling Actually this is a valid approach in which you assign errors to an operator as User Tasks and model what options he has to solve the problem. However, this is a strange mixture: We want to handle a technical error we but add it to our business process model. Where do we stop? Do we have to model it on every Service Task now? diff --git a/docs/documentation/user-guide/process-engine/external-tasks.md b/docs/documentation/user-guide/process-engine/external-tasks.md index 58f894f..ed2434c 100644 --- a/docs/documentation/user-guide/process-engine/external-tasks.md +++ b/docs/documentation/user-guide/process-engine/external-tasks.md @@ -23,7 +23,7 @@ Note that the above distinction does not say whether the actual "business logic" The flow of executing external tasks can be conceptually separated into three steps, as depicted in the following image: -![Example img](/img/documentation/user-guide/process-engine/external-task-pattern.png)External Task Pattern +![Example img](../../../assets/documentation/user-guide/process-engine/external-task-pattern.png)External Task Pattern 1. **Process Engine**: Creation of an external task instance 2. **External Worker**: Fetch and lock external tasks @@ -97,7 +97,7 @@ Ordinary HTTP requests are immediately answered by the server, regardless of whe is available or not. This inevitably leads to a situation where the client has to perform multiple recurring requests until the information is available (polling). This approach can obviously be expensive in terms of resources. -![Long polling to fetch and lock external tasks](/img/documentation/user-guide/process-engine/external-task-long-polling.png) +![Long polling to fetch and lock external tasks](../../../assets/documentation/user-guide/process-engine/external-task-long-polling.png) With the aid of long polling, a request is suspended by the server if no external tasks are available. As soon as new external tasks occur, the request is reactivated and the response is performed. The suspension is limited to a diff --git a/docs/documentation/user-guide/process-engine/history/custom-implementation.md b/docs/documentation/user-guide/process-engine/history/custom-implementation.md index ed5a6ca..c2bf1c1 100644 --- a/docs/documentation/user-guide/process-engine/history/custom-implementation.md +++ b/docs/documentation/user-guide/process-engine/history/custom-implementation.md @@ -14,7 +14,7 @@ menu: In order to understand how to provide a custom history backend, it is useful to first look at a more detailed view of the history architecture: -![Example img](/img/documentation/user-guide/process-engine/history/process-engine-history-architecture.png)History Architecture +![Example img](../../../../assets/documentation/user-guide/process-engine/history/process-engine-history-architecture.png)History Architecture Whenever the state of a runtime entity is changed, the core execution component of the process engine fires History Events. In order to make this flexible, the actual creation of the History Events as well as populating the history events with data from the runtime structures is delegated to the History Event Producer. The producer is handed in the runtime data structures (such as an ExecutionEntity or a TaskEntity), creates a new History Event and populates it with data extracted from the runtime structures. diff --git a/docs/documentation/user-guide/process-engine/history/history-cleanup.md b/docs/documentation/user-guide/process-engine/history/history-cleanup.md index 042b7e3..00afe4b 100644 --- a/docs/documentation/user-guide/process-engine/history/history-cleanup.md +++ b/docs/documentation/user-guide/process-engine/history/history-cleanup.md @@ -78,7 +78,7 @@ The end time is persisted in the corresponding instance tables `ACT_HI_PROCINST` For process and decision instances in a hierarchy (e.g. a process instance that is started by another process instance via a BPMN Call Activity), the removal time of all instances is always equal to the removal time of the root instance. -![Example img](/img/documentation/user-guide/process-engine/history/history-cleanup-process-hierarchy.png)History Cleanup +![Example img](../../../../assets/documentation/user-guide/process-engine/history/history-cleanup-process-hierarchy.png)History Cleanup The removal time is persisted in *all* history tables. So in case of a process instance, the removal time is present in `ACT_HI_PROCINST` as well as the corresponding secondary entries in `ACT_HI_ACTINST`, `ACT_HI_TASKINST` etc. diff --git a/docs/documentation/user-guide/process-engine/multi-tenancy.md b/docs/documentation/user-guide/process-engine/multi-tenancy.md index 2d27bb7..dfcca20 100644 --- a/docs/documentation/user-guide/process-engine/multi-tenancy.md +++ b/docs/documentation/user-guide/process-engine/multi-tenancy.md @@ -19,7 +19,7 @@ Multi-Tenancy can be achieved in two different ways. One way is to use [one proc Multi-Tenancy can be achieved with one process engine which uses tenant identifiers (i.e., tenant-ids). The data of all tenants is stored in one table (same database and schema). Isolation is provided by the means of a tenant identifier that is stored in a column. -![Example img](/img/documentation/user-guide/process-engine/multi-tenancy-tenant-identifiers.png)One Process Engine with Tenant-Identifiers Architecture +![Example img](../../../assets/documentation/user-guide/process-engine/multi-tenancy-tenant-identifiers.png)One Process Engine with Tenant-Identifiers Architecture The tenant identifier is specified on the deployment and is propagated to all data that is created from the deployment (e.g., process definitions, process instances, tasks, etc.). To access the data for a specific tenant, the process engine allows to filter queries by a tenant identifier or specify a tenant identifier for a command (e.g., create a process instance). Additionally, the process engine provides transparent access restrictions in combination with the Identity Service that allows to omit the tenant identifier. @@ -464,7 +464,7 @@ See also: Multi-Tenancy can be achieved by providing one process engine per tenant. Each process engine is configured to use a different data source which connects the data of the tenant. The data of the tenants can be stored in different databases, in one database with different schemas or in one schema with different tables. -![Example img](/img/documentation/user-guide/process-engine/multi-tenancy-process-engine.png)One Process Engine per Tenant Architecture +![Example img](../../../assets/documentation/user-guide/process-engine/multi-tenancy-process-engine.png)One Process Engine per Tenant Architecture The process engines can run on the same server so that all share the same computational resources such as a data source (when isolating via schemas or tables) or a thread pool for asynchronous job execution. diff --git a/docs/documentation/user-guide/process-engine/process-diagram-api.md b/docs/documentation/user-guide/process-engine/process-diagram-api.md index dd5cceb..3ea8803 100644 --- a/docs/documentation/user-guide/process-engine/process-diagram-api.md +++ b/docs/documentation/user-guide/process-engine/process-diagram-api.md @@ -17,7 +17,7 @@ In our web applications [Cockpit](../../webapps/cockpit/index.md) and [Tasklist] The previous JavaScript BPMN renderer can still be found at [operaton-bpmn.js](https://github.com/operaton/operaton-bpmn.js), but it is not actively developed anymore. -![Example img](/img/documentation/user-guide/process-engine/process-diagram-bpmn-js.png)Process Diagram Rendering +![Example img](../../../assets/documentation/user-guide/process-engine/process-diagram-bpmn-js.png)Process Diagram Rendering ## bpmn.io Diagram Renderer diff --git a/docs/documentation/user-guide/process-engine/process-engine-api.md b/docs/documentation/user-guide/process-engine/process-engine-api.md index 704e932..1ab59fb 100644 --- a/docs/documentation/user-guide/process-engine/process-engine-api.md +++ b/docs/documentation/user-guide/process-engine/process-engine-api.md @@ -15,7 +15,7 @@ menu: The Java API is the most common way of interacting with the engine. The central starting point is the ProcessEngine, which can be created in several ways as described in the configuration section. From the ProcessEngine, you can obtain the various services that contain the workflow/BPM methods. ProcessEngine and the services objects are thread safe. So you can keep a reference to 1 of those for a whole server. -![Example img](/img/documentation/user-guide/process-engine/api.services.png)API Services +![Example img](../../../assets/documentation/user-guide/process-engine/api.services.png)API Services ```java ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); diff --git a/docs/documentation/user-guide/process-engine/process-engine-concepts.md b/docs/documentation/user-guide/process-engine/process-engine-concepts.md index 372510b..66c1acc 100644 --- a/docs/documentation/user-guide/process-engine/process-engine-concepts.md +++ b/docs/documentation/user-guide/process-engine/process-engine-concepts.md @@ -188,7 +188,7 @@ If you would like to suspend all process instances of a given process definition If your process instance contains multiple execution paths (like for instance after a [parallel gateway](../../reference/bpmn20/gateways/parallel-gateway.md), you must be able to differentiate the currently active paths inside the process instance. In the following example, two user tasks *receive payment* and *ship order* can be active at the same time. -![Example img](/img/documentation/user-guide/process-engine/parallel-gw.png)Parallel Gateway +![Example img](../../../assets/documentation/user-guide/process-engine/parallel-gw.png)Parallel Gateway Internally, the process engine creates two concurrent executions inside the process instance, one for each concurrent path of execution. Executions are also created for scopes, for example if the process engine reaches a [Embedded Sub Process](../../reference/bpmn20/subprocesses/embedded-subprocess.md) or in case of [Multi Instance](../../reference/bpmn20/tasks/task-markers.md). diff --git a/docs/documentation/user-guide/process-engine/process-instance-restart.md b/docs/documentation/user-guide/process-engine/process-instance-restart.md index a3ce755..06eee23 100644 --- a/docs/documentation/user-guide/process-engine/process-instance-restart.md +++ b/docs/documentation/user-guide/process-engine/process-instance-restart.md @@ -24,7 +24,7 @@ Note that these operations are also available via REST: restref page="restartPro As an example, consider the following process model where the red dots mark active tasks: -![Example img](/img/documentation/user-guide/process-engine/variables-3.png)Running Process Instance +![Example img](../../../assets/documentation/user-guide/process-engine/variables-3.png)Running Process Instance Let us assume that the process instance has been canceled externally by a worker using the following code: diff --git a/docs/documentation/user-guide/process-engine/process-versioning.md b/docs/documentation/user-guide/process-engine/process-versioning.md index 6a07c18..d8ac69e 100644 --- a/docs/documentation/user-guide/process-engine/process-versioning.md +++ b/docs/documentation/user-guide/process-engine/process-versioning.md @@ -24,7 +24,7 @@ This is supported by the process engine: You can see different versions in the process definition table and the process instances are linked to this: -![Example img](/img/documentation/user-guide/process-engine/versioning.png)Versioning +![Example img](../../../assets/documentation/user-guide/process-engine/versioning.png)Versioning :::note[Multi-Tenancy] If you are using [multi-tenancy with tenant identifiers](../process-engine/multi-tenancy.md#single-process-engine-with-tenant-identifiers) then each tenant has its own process definitions which have versions independent from other tenants. See the [multi-tenancy section](../process-engine/multi-tenancy.md#versioning-of-tenant-specific-definitions) for details. diff --git a/docs/documentation/user-guide/process-engine/the-job-executor.md b/docs/documentation/user-guide/process-engine/the-job-executor.md index 1b1eeab..1e72d43 100644 --- a/docs/documentation/user-guide/process-engine/the-job-executor.md +++ b/docs/documentation/user-guide/process-engine/the-job-executor.md @@ -19,7 +19,7 @@ A job is an explicit representation of a task to trigger process execution. A jo While jobs are created during process execution, job acquisition and execution are the job executor's responsibility. The following diagram illustrates these two steps: -![Example img](/img/documentation/user-guide/process-engine/job-executor-basic-architecture.png)Basic Architecture +![Example img](../../../assets/documentation/user-guide/process-engine/job-executor-basic-architecture.png)Basic Architecture ## Job Executor Activation @@ -222,7 +222,7 @@ From now on, all new jobs receive the priorities specified in the BPMN XML again The following diagram sums up the precedence of priority sources when a job's priority is determined: -![Example img](/img/documentation/user-guide/process-engine/job-executor-priority-precedence.png)^Priority Precedence +![Example img](../../../assets/documentation/user-guide/process-engine/job-executor-priority-precedence.png)^Priority Precedence ### Set Job Priorities via ManagementService API @@ -556,7 +556,7 @@ You can configure an custom retry configuration by adding the `customPostBPMNPar The Job Executor makes sure that **jobs from a single process instance are never executed concurrently**. Why is this? Consider the following process definition: -![Example img](/img/documentation/user-guide/process-engine/job-executor-exclusive-jobs.png)Exclusive Jobs +![Example img](../../../assets/documentation/user-guide/process-engine/job-executor-exclusive-jobs.png)Exclusive Jobs We have a parallel gateway followed by three service tasks which all perform an [asynchronous continuation](../process-engine/transactions-in-processes.md#asynchronous-continuations). As a result of this, three jobs are added to the database. Once such a job is present in the database it can be processed by the job executor. It acquires the jobs and delegates them to a thread pool of worker threads which actually process the jobs. This means that using an asynchronous continuation, you can distribute the work to this thread pool (and in a clustered scenario even across multiple thread pools in the cluster). @@ -590,7 +590,7 @@ How does `exclusive` behave when a process contains hierarchies e.g. when multip By default, the exclusive _acquisition_ & _execution_ is only guaranteed for the jobs that originate from the root process instance. In a multi-instance call activity setting, the subprocess instances that will be spawned can run in parallel despite selecting `exclusive` asynchronous continuation as depicted in the image below. -![Example img](/img/documentation/user-guide/process-engine/exclusive-over-process-hierarchies.png)Single Engine +![Example img](../../../assets/documentation/user-guide/process-engine/exclusive-over-process-hierarchies.png)Single Engine If there is a use case where the subprocess-jobs **should not be performed in parallel across each single process instance**, the following configuration can be used: @@ -617,13 +617,13 @@ Use the feature in combination with awareness of your process model. In the case of a single, application-embedded process engine, the job executor setup is the following: -![Example img](/img/documentation/user-guide/process-engine/job-executor-single-engine.png)Single Engine +![Example img](../../../assets/documentation/user-guide/process-engine/job-executor-single-engine.png)Single Engine There is a single job table that the engine adds jobs to and the acquisition consumes from. Creating a second embedded engine would therefore create another acquisition thread and execution thread-pool. In larger deployments however, this quickly leads to a poorly manageable situation. When running Operaton on Tomcat or an application server, the platform allows to declare multiple process engines shared by multiple process applications. With respect to job execution, one job acquisition may serve multiple job tables (and thus process engines) and a single thread-pool for execution may be used. -![Example img](/img/documentation/user-guide/process-engine/job-executor-multiple-engines.png)Multiple Engines +![Example img](../../../assets/documentation/user-guide/process-engine/job-executor-multiple-engines.png)Multiple Engines **This setup enables centralized monitoring of job acquisition and execution**. See the platform-specific information in the [Runtime Container Integration](../runtime-container-integration/index.md) section on how the thread pooling is implemented on the different platforms. @@ -646,11 +646,11 @@ Job acquisitions have to be declared in Operaton's deployment descriptor, see [t When running Operaton in a cluster, there is a distinction between *homogeneous* and *heterogeneous* setups. We define a cluster as a set of network nodes that all run Operaton against the same database (at least for one engine on each node). In the *homogeneous* case, the same process applications (and thus custom classes like JavaDelegates) are deployed to all of the nodes, as depicted below. -![Example img](/img/documentation/user-guide/process-engine/homogeneous-cluster.png)Homogeneous Cluster +![Example img](../../../assets/documentation/user-guide/process-engine/homogeneous-cluster.png)Homogeneous Cluster In the *heterogeneous* case, this is not given, meaning that some process applications are only deployed to a part of the nodes. -![Example img](/img/documentation/user-guide/process-engine/heterogeneous-cluster.png)Heterogenous Cluster +![Example img](../../../assets/documentation/user-guide/process-engine/heterogeneous-cluster.png)Heterogenous Cluster ### Job Execution in Heterogeneous Clusters diff --git a/docs/documentation/user-guide/process-engine/transactions-in-processes.md b/docs/documentation/user-guide/process-engine/transactions-in-processes.md index 5d047ea..a214702 100644 --- a/docs/documentation/user-guide/process-engine/transactions-in-processes.md +++ b/docs/documentation/user-guide/process-engine/transactions-in-processes.md @@ -15,15 +15,19 @@ On any such *external* trigger (i.e., start a process, complete a task, signal a We talked about wait states as transaction boundaries where the process state is stored to the database, the thread returns to the client and the transaction is committed. The following BPMN elements are always wait states: -[![](/img/documentation/user-guide/process-engine/receive-task.svg)](../../reference/bpmn20/tasks/receive-task.md) -[![](/img/documentation/user-guide/process-engine/user-task.svg)](../../reference/bpmn20/tasks/user-task.md) -[![](/img/documentation/user-guide/process-engine/message-event.svg) Message Event](../../reference/bpmn20/events/message-events.md) -[![](/img/documentation/user-guide/process-engine/timer-event.svg) Timer Event](../../reference/bpmn20/events/timer-events.md) -[![](/img/documentation/user-guide/process-engine/signal-event.svg) Signal Event](../../reference/bpmn20/events/signal-events.md) +[![](../../../assets/documentation/user-guide/process-engine/receive-task.svg)](../../reference/bpmn20/tasks/receive-task.md) +[![](../../../assets/documentation/user-guide/process-engine/user-task.svg)](../../reference/bpmn20/tasks/user-task.md) +[![](../../../assets/documentation/user-guide/process-engine/message-event.svg) Message Event](../../reference/bpmn20/events/message-events.md) +[![](../../../assets/documentation/user-guide/process-engine/timer-event.svg) Timer Event](../../reference/bpmn20/events/timer-events.md) +[![](../../../assets/documentation/user-guide/process-engine/signal-event.svg) Signal Event](../../reference/bpmn20/events/signal-events.md) The [Event Based Gateway](../../reference/bpmn20/gateways/event-based-gateway.md): - +Event Based Gateway
@@ -38,7 +42,7 @@ Keep in mind that [Asynchronous Continuations](#asynchronous-continuations) can The transition from one such stable state to another stable state is always part of a single transaction, meaning that it succeeds as a whole or is rolled back on any kind of exception occuring during its execution. This is illustrated in the following example: -![Example img](/img/documentation/user-guide/process-engine/transactions-1.png)Transaction Boundaries +![Example img](../../../assets/documentation/user-guide/process-engine/transactions-1.png)Transaction Boundaries We see a segment of a BPMN process with a user task, a service task and a timer event. The timer event marks the next wait state. Completing the user task and validating the address is therefore part of the same unit of work, so it should succeed or fail atomically. That means that if the service task throws an exception we want to roll back the current transaction, so that the execution tracks back to the user task and the user task is still present in the database. This is also the default behavior of the process engine. @@ -52,7 +56,7 @@ In **1**, an application or client thread completes the task. In that same threa In some cases the synchronous behavior is not desired. Sometimes it is useful to have custom control over transaction boundaries in a process. The most common motivation is the requirement to scope *logical units of work*. Consider the following process fragment: -![Example img](/img/documentation/user-guide/process-engine/transactions-2.png)Asynchronous Continuations +![Example img](../../../assets/documentation/user-guide/process-engine/transactions-2.png)Asynchronous Continuations We are completing the user task, generating an invoice and then sending that invoice to the customer. It can be argued that the generation of the invoice is not part of the same unit of work: we do not want to roll back the completion of the usertask if generating an invoice fails. Ideally, the process engine would complete the user task (**1**), commit the transaction and return @@ -114,7 +118,7 @@ Declaring asynchronous continuation of the inner activity makes each instance of To understand how asynchronous continuations work, we first need to understand how an activity is executed: -![Example img](/img/documentation/user-guide/process-engine/process-engine-activity-execution.png)Asynchronous Continuations +![Example img](../../../assets/documentation/user-guide/process-engine/process-engine-activity-execution.png)Asynchronous Continuations The above illustration shows how a regular activity which is entered and left by a sequence flow is executed: @@ -129,7 +133,7 @@ executed: Asynchronous Continuations allow putting break points between the execution of the sequence flows and the execution of the activity: -![Example img](/img/documentation/user-guide/process-engine/process-engine-async.png) +![Example img](../../../assets/documentation/user-guide/process-engine/process-engine-async.png) The above illustration shows where the different types of asynchronous continuations break the execution flow: @@ -143,7 +147,7 @@ listeners. Asynchronous continuations directly relate to transaction boundaries: putting an asynchronous continuation before or after an activity creates a transaction boundary before or after the activity: -![Example img](/img/documentation/user-guide/process-engine/process-engine-async-transactions.png) +![Example img](../../../assets/documentation/user-guide/process-engine/process-engine-async-transactions.png) What's more, asynchronous continuations are always executed by the [Job Executor](../process-engine/the-job-executor.md). @@ -153,7 +157,7 @@ Executor](../process-engine/the-job-executor.md). We want to emphasize that in case of a non handled exception, the current transaction gets rolled back and the process instance is in the last wait state (save point). The following image visualizes that. -![Example img](/img/documentation/user-guide/process-engine/transactions-3.png)Rollback +![Example img](../../../assets/documentation/user-guide/process-engine/transactions-3.png)Rollback If an exception occurs when calling `startProcessInstanceByKey` the process instance will not be saved to the database at all. @@ -173,7 +177,7 @@ However, there are consequences which you should keep in mind: * Parallel process paths are not executed in parallel in terms of Java Threads, the different paths are executed sequentially, since we only have and use one Thread. * Timers cannot fire before the transaction is committed to the database. Timers are explained in more detail later, but they are triggered by the only active part of the Process Engine where we use own Threads: The Job Executor. Hence they run in an own thread which receives the due timers from the database. However, in the database the timers are not visible before the current transaction is visible. So the following timer will never fire: -![Example img](/img/documentation/user-guide/process-engine/NotWorkingTimerOnServiceTimeout.png)Not Working Timeout +![Example img](../../../assets/documentation/user-guide/process-engine/NotWorkingTimerOnServiceTimeout.png)Not Working Timeout ## Transaction Integration @@ -322,7 +326,7 @@ The above table shows a single row holding user data. The user has a unique Id ( We now construct a situation in which 2 transactions attempt to update this entry, one attempting to change the address, the other one attempting to delete the user. The intended behavior is that once of the transactions succeeds and the other is aborted with an error indicating that a concurrency conflict was detected. The user can then decide to retry the transaction based on the latest state of the data: -![Example img](/img/documentation/user-guide/process-engine/optimisticLockingTransactions.png)Transactions with Optimistic Locking +![Example img](../../../assets/documentation/user-guide/process-engine/optimisticLockingTransactions.png)Transactions with Optimistic Locking As you can see in the picture above, `Transaction 1` reads the user data, does something with the data, deletes the user and then commits. `Transaction 2` starts at the same time and reads the same user data, and also works on the data. When `Transaction 2` attempts to update the user address a conflict is detected (since `Transaction 1` has already deleted the user). @@ -384,7 +388,7 @@ For example The following model shows a parallel gateway, on which the `OptimisticLockingException` can occur. -![Example img](/img/documentation/user-guide/process-engine/optimisticLockingParallel.png)Optimistic Locking in parallel gateway +![Example img](../../../assets/documentation/user-guide/process-engine/optimisticLockingParallel.png)Optimistic Locking in parallel gateway There are two user tasks after the opening parallel gateway. The closing parallel gateway, after the user tasks, merges the executions to one. In most cases, one of the user tasks will be completed first. Execution then waits on the closing parallel gateway until the second user task is completed. diff --git a/docs/documentation/user-guide/process-engine/variables.md b/docs/documentation/user-guide/process-engine/variables.md index 157fac6..0b42e7f 100644 --- a/docs/documentation/user-guide/process-engine/variables.md +++ b/docs/documentation/user-guide/process-engine/variables.md @@ -18,15 +18,15 @@ This section describes the concepts of variables in processes. Variables can be All entities that can have variables are called *variable scopes*. These are executions (which include process instances) and tasks. As described in the [Concepts section](../process-engine/process-engine-concepts.md#executions), the runtime state of a process instance is represented by a tree of executions. Consider the following process model where the red dots mark active tasks: -![Example img](/img/documentation/user-guide/process-engine/variables-3.png)Variables +![Example img](../../../assets/documentation/user-guide/process-engine/variables-3.png)Variables The runtime structure of this process is as follows: -![Example img](/img/documentation/user-guide/process-engine/variables-4.png)Variables +![Example img](../../../assets/documentation/user-guide/process-engine/variables-4.png)Variables There is a process instance with two child executions, each of which has created a task. All these five entities are variable scopes and the arrows mark a parent-child relationship. A variable that is defined on a parent scope is accessible in every child scope unless a child scope defines a variable of the same name. The other way around, child variables are not accessible from a parent scope. Variables that are directly attached to the scope in question are called *local* variables. Consider the following assignment of variables to scopes: -![Example img](/img/documentation/user-guide/process-engine/variables-5.png)Variables +![Example img](../../../assets/documentation/user-guide/process-engine/variables-5.png)Variables In this case, when working on *Task 1* the variables *worker* and *customer* are accessible. Note that due to the structure of scopes, the variable *worker* can be defined twice, so that *Task 1* accesses a different *worker* variable than *Task 2*. However, both share the variable *customer* which means that if that variable is updated by one of the tasks, this change is also visible to the other. @@ -34,7 +34,7 @@ Both tasks can access two variables each while none of these is a local variable Now let's say, we set a local variable *customer* on *Task 1*: -![Example img](/img/documentation/user-guide/process-engine/variables-6.png)Variables +![Example img](../../../assets/documentation/user-guide/process-engine/variables-6.png)Variables While two variables named *customer* and *worker* can still be accessed from *Task 1*, the *customer* variable on *Execution 1* is hidden, so the accessible *customer* variable is the local variable of *Task 1*. @@ -109,7 +109,7 @@ here variable will be set locally in "aSubProcess" and not propagated to the par The process engine supports the following variable value types: -![Example img](/img/documentation/user-guide/process-engine/variables-1.png)Variables +![Example img](../../../assets/documentation/user-guide/process-engine/variables-1.png)Variables Depending on the actual value of a variable, a different type is assigned. Out of the available types, there are nine *primitive* value types, meaning that they store values of simple standard JDK classes without additional metadata: diff --git a/docs/documentation/user-guide/runtime-container-integration/jboss.md b/docs/documentation/user-guide/runtime-container-integration/jboss.md index b7b4ede..c68a183 100644 --- a/docs/documentation/user-guide/runtime-container-integration/jboss.md +++ b/docs/documentation/user-guide/runtime-container-integration/jboss.md @@ -296,7 +296,7 @@ One of the nice features of the Wildfly Management System is that it will In some cases, you may find it more convenient to use WildFly's JConsole extension for starting a process engine. -![Example img](/img/documentation/user-guide/runtime-container-integration/jboss-jconsole.png)JConsole +![Example img](../../../assets/documentation/user-guide/runtime-container-integration/jboss-jconsole.png)JConsole The JConsole plugin allows you to inspect the management model graphically and build operations using a wizard. To start the JBoss JConsole plugin, start the jconsole.bat/sh file provided in the WildFly distribution. [More Information in the WildFly Docs](https://docs.wildfly.org/23/Admin_Guide.html#JMX). @@ -353,7 +353,7 @@ As a result, the Application Service will add the process engine module to the c The Operaton Wildfly subsystem manages process engines as JBoss Services in the JBoss Module Service Container. For the Module Service Container to provide the process engine service(s) to the deployed applications, it is important that the dependencies are known. Consider the following example: -![Example img](/img/documentation/user-guide/runtime-container-integration/jboss-service-dependencies.png)JBoss Service Dependencies +![Example img](../../../assets/documentation/user-guide/runtime-container-integration/jboss-service-dependencies.png)JBoss Service Dependencies There are three applications deployed and two process engine services exist. Application 1 and Application 2 are using Process Engine 1 and Application 3 is using Process Engine 2. diff --git a/docs/documentation/user-guide/task-forms/index.md b/docs/documentation/user-guide/task-forms/index.md index bce6217..722d308 100644 --- a/docs/documentation/user-guide/task-forms/index.md +++ b/docs/documentation/user-guide/task-forms/index.md @@ -124,7 +124,7 @@ The attributes `operaton:formRef` and `operaton:formRefVersion` can be specified ``` -![Example img](/img/documentation/user-guide/task-forms/reference-operaton-form.png)Provide Form Key for Operaton Forms +![Example img](../../../assets/documentation/user-guide/task-forms/reference-operaton-form.png)Provide Form Key for Operaton Forms ### Form Key @@ -141,7 +141,7 @@ From the form developers point of view, `formRef` offers more flexibility than ` To define a default value for a form field, a process variable with the same name as the form field key needs to be defined. Local variables (e.g. created by defining an [Input Parameter](../process-engine/variables/#inputoutput-variable-mapping) for the User Task) take precedence over process variables. -![Example img](/img/documentation/user-guide/task-forms/variable-mapping-operaton-form.png)User Input/Output Mappings for default values for form fields +![Example img](../../../assets/documentation/user-guide/task-forms/variable-mapping-operaton-form.png)User Input/Output Mappings for default values for form fields The submitted values of a form are returned as variables to the process engine: @@ -195,7 +195,7 @@ Using [Operaton Run](../../user-guide/operaton-bpm-run.md#starting-with-operaton placed inside the `configuration/resources/` directory are automatically deployed. ::: -![Example img](/img/documentation/user-guide/task-forms/deploy-form.png)Deploy your Operaton Form file +![Example img](../../../assets/documentation/user-guide/task-forms/deploy-form.png)Deploy your Operaton Form file You can also include Operaton Forms from other deployments by using [form references](#form-reference). @@ -232,7 +232,7 @@ These Task forms do not use the form-key attribute to be referenced. They are no The generic form will be used whenever you have not added a dedicated form for a [UserTask][user-tasks] or a [StartEvent][start-event]. -![Example img](/img/documentation/user-guide/task-forms/tasklist-generic-form.png)Generic Start Form +![Example img](../../../assets/documentation/user-guide/task-forms/tasklist-generic-form.png)Generic Start Form Hit the *Add a variable* button to add a variable that will be passed to the process instance upon task completion. State a variable name, select the type and enter the desired value. Enter as many variables as you need. @@ -283,7 +283,7 @@ Form metadata can be graphically edited using the [Camunda Modeler](https://camu This form would look like this in Tasklist: -![Example img](/img/documentation/user-guide/task-forms/generated-forms-example.png)Generated Form +![Example img](../../../assets/documentation/user-guide/task-forms/generated-forms-example.png)Generated Form As you can see, the `` element is provided as a child element of the BPMN `` element. Form metadata consists of multiple form fields which represent individual input fields where a user has to provide some value or selection. diff --git a/docs/documentation/user-guide/task-forms/jsf-task-forms.md b/docs/documentation/user-guide/task-forms/jsf-task-forms.md index dc2136a..117a2d4 100644 --- a/docs/documentation/user-guide/task-forms/jsf-task-forms.md +++ b/docs/documentation/user-guide/task-forms/jsf-task-forms.md @@ -23,7 +23,7 @@ A working example can be found in the [examples repository](https://github.com/o The BPMN process used for this example is shown in the image below: -![Example img](/img/documentation/user-guide/task-forms/task-form-process.png)Task Form Process +![Example img](../../../assets/documentation/user-guide/task-forms/task-form-process.png)Task Form Process In this process model we added so called form keys to @@ -87,7 +87,7 @@ Note that you need `operaton-engine-cdi` in order to have the `camundaTaskForm` ## How does this work? -If the user clicks on "Start to work on task" ![Example img](/img/documentation/user-guide/task-forms/start-task-button.png)Start Task Button in the tasklist, he will follow a link to this form, including the taskId and the callback URL (the URL to access the central tasklist) as GET-Parameters. Accessing this form will trigger the special CDI bean `camundaTaskForm` which +If the user clicks on "Start to work on task" ![Example img](../../../assets/documentation/user-guide/task-forms/start-task-button.png)Start Task Button in the tasklist, he will follow a link to this form, including the taskId and the callback URL (the URL to access the central tasklist) as GET-Parameters. Accessing this form will trigger the special CDI bean `camundaTaskForm` which * starts a conversation, * remembers the callback URL @@ -151,7 +151,7 @@ In the forms you can access your own CDI beans as usual and also access the Oper This is rendered to a simple form: -![Example img](/img/documentation/user-guide/task-forms/variablesTaskFormExample.png)Varibales Task Form Example +![Example img](../../../assets/documentation/user-guide/task-forms/variablesTaskFormExample.png)Varibales Task Form Example The same mechanism can be used to start a new process instance: @@ -202,9 +202,9 @@ The same mechanism can be used to start a new process instance: ``` -![Example img](/img/documentation/user-guide/task-forms/startFormExample.png)Start Form Example +![Example img](../../../assets/documentation/user-guide/task-forms/startFormExample.png)Start Form Example -If the user clicks on "Start a process instance" ![Example img](/img/documentation/user-guide/task-forms/start-process-button.png)Start Process Button in the tasklist and chooses the process your start form is assigned to, he will follow a link to this form, including the processDefinitionKey and the callback URL (the URL to access the central tasklist) as GET-Parameters. Accessing this form will trigger the special CDI bean `camundaTaskForm` which: +If the user clicks on "Start a process instance" ![Example img](../../../assets/documentation/user-guide/task-forms/start-process-button.png)Start Process Button in the tasklist and chooses the process your start form is assigned to, he will follow a link to this form, including the processDefinitionKey and the callback URL (the URL to access the central tasklist) as GET-Parameters. Accessing this form will trigger the special CDI bean `camundaTaskForm` which: * Starts a conversation * Remembers the callback URL to the centralized tasklist @@ -234,7 +234,7 @@ Note that the command button doesn't have to be on the same form, you might have We use [Twitter Bootstrap](http://getbootstrap.com/) in our tasklist - so best add this to your Process Application as well and you can easily polish your UI: -![Example img](/img/documentation/user-guide/task-forms/tasklist-forms-layouted-start.png)Tasklist Start Forms layouted +![Example img](../../../assets/documentation/user-guide/task-forms/tasklist-forms-layouted-start.png)Tasklist Start Forms layouted To include CSS and Javascript libraries in your project you can add them to your maven project as dependencies. diff --git a/docs/documentation/user-guide/testing/index.md b/docs/documentation/user-guide/testing/index.md index 6c35cda..9095cf3 100644 --- a/docs/documentation/user-guide/testing/index.md +++ b/docs/documentation/user-guide/testing/index.md @@ -213,27 +213,27 @@ When using the in-memory H2 database for unit tests, the following instructions Suppose we have put a breakpoint somewhere in our unit test. In Eclipse this is done by double-clicking in the left border next to the code: -![API Test Debugging](/img/documentation/user-guide/testing/api-test-debug-breakpoint.png) +![API Test Debugging](../../../assets/documentation/user-guide/testing/api-test-debug-breakpoint.png) If we now run the unit test in debug mode (right-click in test class, select 'Run as' and then 'JUnit test'), the test execution halts at our breakpoint, where we can now inspect the variables of our test as shown in the right upper panel. -![API Test Debugging](/img/documentation/user-guide/testing/api-test-debug-view.png) +![API Test Debugging](../../../assets/documentation/user-guide/testing/api-test-debug-view.png) To inspect the data, open up the 'Display' window (if this window isn't there, open Window->Show View->Other and select Display.) and type (code completion is available) `org.h2.tools.Server.createWebServer("-web").start()` -![API Test Debugging](/img/documentation/user-guide/testing/api-test-debug-start-h2-server.png) +![API Test Debugging](../../../assets/documentation/user-guide/testing/api-test-debug-start-h2-server.png) Select the line you've just typed and right-click on it. Now select 'Display' (or execute the shortcut instead of right-clicking) -![API Test Debugging](/img/documentation/user-guide/testing/api-test-debug-start-h2-server-2.png) +![API Test Debugging](../../../assets/documentation/user-guide/testing/api-test-debug-start-h2-server-2.png) Now open up a browser and go to http://localhost:8082, and fill in the JDBC URL to the in-memory database (by default this is jdbc:h2:mem:operaton), and hit the connect button. -![API Test Debugging](/img/documentation/user-guide/testing/api-test-debug-h2-login.png) +![API Test Debugging](../../../assets/documentation/user-guide/testing/api-test-debug-h2-login.png) You can now see the engine database and use it to understand how and why your unit test is executing your process in a certain way. -![API Test Debugging](/img/documentation/user-guide/testing/api-test-debug-h2-tables.png) +![API Test Debugging](../../../assets/documentation/user-guide/testing/api-test-debug-h2-tables.png) ## Operaton Assertions @@ -405,7 +405,7 @@ To test this application, all components, including the application server itsel The following drawing shows a schematic representation of what this looks like for our example of a Java EE application: -![Testing Scopes](/img/documentation/user-guide/testing/test-scopes.png) +![Testing Scopes](../../../assets/documentation/user-guide/testing/test-scopes.png) Three test scopes are defined: diff --git a/docs/documentation/webapps/admin/auditing.md b/docs/documentation/webapps/admin/auditing.md index 44dc560..73471fe 100644 --- a/docs/documentation/webapps/admin/auditing.md +++ b/docs/documentation/webapps/admin/auditing.md @@ -21,7 +21,7 @@ It is often desired to inspect which user performed which operation for auditing Please see the [complete table](../../user-guide/process-engine/history/user-operation-log.md#access-the-user-operation-log) of APIs that produce User Operation Logs. ## Operation Log in Admin -![Example img](/img/documentation/webapps/admin/admin-system-audit.png)Operation Log +![Example img](../../../assets/documentation/webapps/admin/admin-system-audit.png)Operation Log Admin provides the possibility to audit the activities which each user performs. You can find the Operation Log in the `System` submenu. The table is a representation of the history of various user operations, and it provides information about changes performed in the past. The rows are grouped by an operation to provide clear insights on the changes produced by each operation. Results can be filtered using the search bar at the top. You can add columns using the dropdown in the top right. They can be removed by clicking the next to the corresponding table header. @@ -33,4 +33,4 @@ You can filter the results by a timespan in which the operation occurred. Click ### Operations of a specific Entity If you are only interested in operations concerning Authorizations, you can use the `Entity Type` filter. For a complete list of logged operations, check out [History and Audit Event Log](/user-guide/process-engine/history/#glossary-of-operations-logged-in-the-user-operation-log). -![Example img](/img/documentation/webapps/admin/admin-audit-entity.png)Filter by Type +![Example img](../../../assets/documentation/webapps/admin/admin-audit-entity.png)Filter by Type diff --git a/docs/documentation/webapps/admin/authorization-management.md b/docs/documentation/webapps/admin/authorization-management.md index 9d5a5bf..fd792ef 100644 --- a/docs/documentation/webapps/admin/authorization-management.md +++ b/docs/documentation/webapps/admin/authorization-management.md @@ -11,7 +11,7 @@ menu: --- -![Example img](/img/documentation/webapps/admin/admin-authorization.png)Authorizations +![Example img](../../../assets/documentation/webapps/admin/admin-authorization.png)Authorizations Manage authorizations for a variety of resources (e.g., *Applications*, *Groups*, *Filters*). In the following sections you will learn how to use an administrator account with the help of some simple use cases. @@ -30,17 +30,17 @@ In this use case we'll grant some basic permissions. To start out we'll need som Set the authorizations for the new group and the created users. First you have to define which application the members of your new group have access to. Select the *Application* menu and create a new `Application Authorization` rule. The group members should be able to access Tasklist, so add the following rule: -![Example img](/img/documentation/webapps/admin/admin-authorization-application-new-group.png)New Group +![Example img](../../../assets/documentation/webapps/admin/admin-authorization-application-new-group.png)New Group Now every member of the group *support* can use Tasklist. Furthermore, you want one of the new users to get access to Cockpit. Therefore, add a new user-specific rule: -![Example img](/img/documentation/webapps/admin/admin-authorization-application-new-user.png)Authorization Application New User +![Example img](../../../assets/documentation/webapps/admin/admin-authorization-application-new-user.png)Authorization Application New User This specific rule is only valid for the user 'lemmy' and provides him with additional authorization for the resource Cockpit. -![Example img](/img/documentation/webapps/admin/admin-access.png)Admin Access +![Example img](../../../assets/documentation/webapps/admin/admin-access.png)Admin Access Log in with the new user accounts and test if you can access the desired application. @@ -49,7 +49,7 @@ Log in with the new user accounts and test if you can access the desired applica Currently the users in the *support* group can only see the predefined filters in Tasklist. We want the group members to have `READ` access to another filter, so we create a rule for that filter: -![Example img](/img/documentation/webapps/admin/admin-authorization-filter.png)Authorization Application New User +![Example img](../../../assets/documentation/webapps/admin/admin-authorization-filter.png)Authorization Application New User The authorizations set here correspond to the authorizations that can be set in the filter settings in Tasklist. The resource ID can be found in the database table `ACT_RU_FILTER`. See [this section](../tasklist/filters.md) for more information about filters. @@ -58,7 +58,7 @@ The authorizations set here correspond to the authorizations that can be set in Depending on the users authorization, [Tasklist](../tasklist/index.md) will show you information about your colleagues and groups. Currently you can only see the group folder *support* but not your colleague. To change that, log in to the admin application as administrator, enter the Users Authorization menu and create the following rules: -![Example img](/img/documentation/webapps/admin/admin-authorization-users.png)Users Authorization +![Example img](../../../assets/documentation/webapps/admin/admin-authorization-users.png)Users Authorization Now every member of the group *support* is able to see the new users *lemmy* and *Ozzy*. @@ -74,11 +74,11 @@ Of the predefined resources at the moment this would be: * Process Instance * Task -![Example img](/img/documentation/webapps/admin/admin_cockpit_access_group.png)Authorization Application New User +![Example img](../../../assets/documentation/webapps/admin/admin_cockpit_access_group.png)Authorization Application New User First of all, we have to provide the permission to access Cockpit (also see the [Application Access](#application-access) section). -![Example img](/img/documentation/webapps/admin/admin_proc_def_group_read_access.png)Authorization Application New User +![Example img](../../../assets/documentation/webapps/admin/admin_proc_def_group_read_access.png)Authorization Application New User For all the resources that are accessible from Cockpit we add `READ` permission for every resource id (indicated by the asterisk) for the group, e.g., in the screenshot for all process definitions. @@ -95,7 +95,7 @@ In this use case we want to give the group *accounting*, which we will assume is For groups and users to be able to see process definitions they need at least `READ` permission for the "Process Definition" resource. To see running process instances the same permission is required for the "Process Instance" resource. -![Example img](/img/documentation/webapps/admin/admin_proc_def_group_full_access.png)Process Definition Authorization +![Example img](../../../assets/documentation/webapps/admin/admin_proc_def_group_full_access.png)Process Definition Authorization We grant the *accounting* group all permissions for the *invoice* process because they shall be able to manage their process completely. The resource id references the key of the process definition. @@ -106,7 +106,7 @@ Now that we know how to grant certain permissions, we might need a second user w During the [setup](../admin/user-management.md#initial-user-setup) you had to create one administrator account. In a real-world scenario it could be beneficial to have a second administrator account to manage the users. Basically, an administrator is a user with the `ALL` permission for every possible resource and resource id. For example, to grant the *accounting* group all permissions for authorizations the following entry has to be made: -![Example img](/img/documentation/webapps/admin/admin_auth_edit_full_access.png)Edit Access +![Example img](../../../assets/documentation/webapps/admin/admin_auth_edit_full_access.png)Edit Access To create an administrator account, there are several options: @@ -123,15 +123,15 @@ Now, after creating a new administrator account, we may want to start working an Processes are started from Tasklist. For a user or group to be able to start processes we need, again, a certain combination of permissions. In this use case we want to give the *accounting* group the permission to start the *invoice* process from Tasklist. -![Example img](/img/documentation/webapps/admin/admin_tasklist_access_group.png)Access Group +![Example img](../../../assets/documentation/webapps/admin/admin_tasklist_access_group.png)Access Group To start, we will grant the group access to Tasklist (also see [Application Specific Permission](#application-specific-permissions). -![Example img](/img/documentation/webapps/admin/admin_proc_def_acc_read_create_inst_access.png)Instance Access +![Example img](../../../assets/documentation/webapps/admin/admin_proc_def_acc_read_create_inst_access.png)Instance Access Next, we grant the *accounting* group the `READ` and `CREATE_INSTANCE` permission for the *invoice* process to be able to see the process definition and create instances in Tasklist. -![Example img](/img/documentation/webapps/admin/admin_proc_inst_acc_create.png)Create Access +![Example img](../../../assets/documentation/webapps/admin/admin_proc_inst_acc_create.png)Create Access After that, we grant the `CREATE` permission for process instances. The `CREATE` permission is necessary for the group to be able to create new process instances. The resource id references the generated process instance ids, therefore we use the asterisk, because we can't know the generated id in advance. @@ -142,15 +142,15 @@ Now that we know how to start a process, we may want to restrict permissions to It is possible to restrict a group's/user's permissions to a single process instance, i.e., after the process ends, the group/user will not be able to change any other running process instances. We will use the *accounting* group again in this example. We assume that the group has access to Cockpit (also see [Application Access](#application-access)) and that a process with the name and key *OrderProcess* is present. -![Example img](/img/documentation/webapps/admin/admin_proc_def_acc_read.png)Definition Access +![Example img](../../../assets/documentation/webapps/admin/admin_proc_def_acc_read.png)Definition Access To enable the group to see the process in Cockpit, we have to grant the `READ` permission for the process definition. -![Example img](/img/documentation/webapps/admin/admin_cockpit_proc_inst_id.png)Running Instances +![Example img](../../../assets/documentation/webapps/admin/admin_cockpit_proc_inst_id.png)Running Instances Now we have to get the process instance id from Cockpit. You can find the ids of all running processes after clicking on a process definition name or diagram preview on the [Cockpit dashboard](../cockpit/dashboard.md). -![Example img](/img/documentation/webapps/admin/admin_proc_inst_id_acc.png)Instance Access +![Example img](../../../assets/documentation/webapps/admin/admin_proc_inst_id_acc.png)Instance Access This id then has to be used as the resource id when granting the user all permissions for the *Process Instance* resource. @@ -161,11 +161,11 @@ This will limit the group's permissions to this running process instance. As wit Since several groups can participate in a process, it could be useful to restrict certain tasks to certain people/groups. For this example, we will reuse the *accounting* group and the *invoice* process from the previous sections. At least we need one running instance of the process. -![Example img](/img/documentation/webapps/admin/admin_filter_acc_read.png)Read Permissions +![Example img](../../../assets/documentation/webapps/admin/admin_filter_acc_read.png)Read Permissions First of all, we have to grant the *accounting* group `READ` permission for filters so that tasks will be displayed in Tasklist. -![Example img](/img/documentation/webapps/admin/admin_task_acc_edit.png)Edit Access +![Example img](../../../assets/documentation/webapps/admin/admin_task_acc_edit.png)Edit Access Next we go into Cockpit and [assign the desired task](../cockpit/bpmn/process-instance-view.md#detailed-information-panel) to the *accounting* group. This will automatically create an entry for the task with the task id as resource id in Admin and grant the `READ` and `UPDATE` permissions. diff --git a/docs/documentation/webapps/admin/group-management.md b/docs/documentation/webapps/admin/group-management.md index bbbc552..5978001 100644 --- a/docs/documentation/webapps/admin/group-management.md +++ b/docs/documentation/webapps/admin/group-management.md @@ -13,6 +13,6 @@ menu: ## Groups Menu -![Example img](/img/documentation/webapps/admin/admin-groups.png)Groups Menu +![Example img](../../../assets/documentation/webapps/admin/admin-groups.png)Groups Menu The Groups menu allows you to add, edit and delete user groups. Besides that you can view the members of groups diff --git a/docs/documentation/webapps/admin/plugins.md b/docs/documentation/webapps/admin/plugins.md index e75d193..0d3602a 100644 --- a/docs/documentation/webapps/admin/plugins.md +++ b/docs/documentation/webapps/admin/plugins.md @@ -44,7 +44,7 @@ properties: { **Name:** `admin.dashboard.section` -![Example img](/img/documentation/webapps/admin/admin-start-page-view.png)Dashboard +![Example img](../../../assets/documentation/webapps/admin/admin-start-page-view.png)Dashboard With Operaton.5, the Admin webapp gets a dashboard based on plugins similar to the [Cockpit dashboard ones](../cockpit/extend/plugins.md#dashboard). diff --git a/docs/documentation/webapps/admin/system-management.md b/docs/documentation/webapps/admin/system-management.md index 8c35337..aaca495 100644 --- a/docs/documentation/webapps/admin/system-management.md +++ b/docs/documentation/webapps/admin/system-management.md @@ -11,7 +11,7 @@ menu: --- -![Example img](/img/documentation/webapps/admin/admin-system-management.png)System Management +![Example img](../../../assets/documentation/webapps/admin/admin-system-management.png)System Management The System Settings menu gives you general information about the process engine. It enables users with system permissions to access certain system information, including diagnostics and metrics. @@ -21,13 +21,13 @@ The System Settings menu is only usable by users which are granted with *All* pe ## Diagnostics -![Example img](/img/documentation/webapps/admin/admin-diagnostics.png)Diagnostics +![Example img](../../../assets/documentation/webapps/admin/admin-diagnostics.png)Diagnostics The **Diagnostics** menu allows you to view and copy diagnostics data about your environment or distribution of Operaton. The main purpose of the **Diagnostics** menu is to increase transparency by giving you easy access to important system diagnostics information. In the event of an issue, this should also improve problem diagnosis by enabling you to quickly understand and share the Operaton environment you are running. ## Execution Metrics -![Example img](/img/documentation/webapps/admin/admin-execution-metrics.png)Execution Metrics +![Example img](../../../assets/documentation/webapps/admin/admin-execution-metrics.png)Execution Metrics The Execution Metrics menu in Admin displays an approximate number of *Flow Nodes Instances (FNI)*, *Executed Decision Elements (EDE)*, *Process Instances (PI)* and *Decision diff --git a/docs/documentation/webapps/admin/tenant-management.md b/docs/documentation/webapps/admin/tenant-management.md index 7bb3396..90811ec 100644 --- a/docs/documentation/webapps/admin/tenant-management.md +++ b/docs/documentation/webapps/admin/tenant-management.md @@ -13,7 +13,7 @@ menu: ## Tenants Menu -![Example img](/img/documentation/webapps/admin/admin-tenants.png)Tenants Menu +![Example img](../../../assets/documentation/webapps/admin/admin-tenants.png)Tenants Menu The Tenants menu allows you to add, edit and delete tenants. Besides that you can view which user or group is a member of a tenant. diff --git a/docs/documentation/webapps/admin/user-management.md b/docs/documentation/webapps/admin/user-management.md index e95270a..56119db 100644 --- a/docs/documentation/webapps/admin/user-management.md +++ b/docs/documentation/webapps/admin/user-management.md @@ -13,7 +13,7 @@ menu: ## User Menu -![Example img](/img/documentation/webapps/admin/admin-users.png)User Menu +![Example img](../../../assets/documentation/webapps/admin/admin-users.png)User Menu The Users menu allows you to add, edit and delete user profiles. Furthermore, you can manage group membership and change passwords. @@ -31,7 +31,7 @@ You can also access the My Profile menu from any of the web applications by clic ## Initial User Setup -![Example img](/img/documentation/webapps/admin/admin-initial-user-setup.png)Initial User Setup +![Example img](../../../assets/documentation/webapps/admin/admin-initial-user-setup.png)Initial User Setup If no administrator account is configured, a setup screen will be shown on first access of a process engine through Cockpit or Tasklist . This screen allows you to configure an initial user account with administrator rights. Administrator users are not global but per engine. Thus, you will need to set up an admin user for each separate engine. diff --git a/docs/documentation/webapps/cockpit/auditing.md b/docs/documentation/webapps/cockpit/auditing.md index 5e60094..1766d36 100644 --- a/docs/documentation/webapps/cockpit/auditing.md +++ b/docs/documentation/webapps/cockpit/auditing.md @@ -18,7 +18,7 @@ Since Cockpit is a very powerful tool, it is often desired to inspect which user To get a more detailed explanation about the Java and REST API methods to get user operations, check out [this url](../../user-guide/process-engine/history/user-operation-log.md#access-the-user-operation-log). ## Operation Log in Cockpit -![Example img](/img/documentation/webapps/cockpit/cockpit-operation-log.png)Operation Log +![Example img](../../../assets/documentation/webapps/cockpit/cockpit-operation-log.png)Operation Log Cockpit provides the possibility to audit the activities which each user performs. You can find the Operation Log in the top menu bar under the `more` option. The table is a representation of the history of various user operations, and it provides information about changes performed in the past. The rows are grouped by an operation to provide clear insights on the changes produced by each operation. Results can be filtered using the search bar at the top. You can add columns using the dropdown in the top right. They can be removed by clicking the next to the corresponding table header. @@ -27,18 +27,18 @@ To only display Operations performed by a specific User, click in the Search fie ### Operations in a specific Timespan You can limit Results the time the operation occurred. Click in the Search field and select `Timestamp` from the dropdown. You can now specify the date and time at which you want to cut off results. By clicking on the operator, you can select if you want results `before` or `after` the specified time. Add another `Timestamp` filter to specify a period. -![Example img](/img/documentation/webapps/cockpit/cockpit-audit-timestamp.png)Filter by Timestamp +![Example img](../../../assets/documentation/webapps/cockpit/cockpit-audit-timestamp.png)Filter by Timestamp ### Operations of a specific Type If you are only interested in a specific operation, for example, every time a process instance was manually modified, you can use the `operation` filter. Select the desired operation from the dropdown or start to type the name to filter through the list. For a complete list of logged operations, check out [History and Audit Event Log](/user-guide/process-engine/history/#glossary-of-operations-logged-in-the-user-operation-log). -![Example img](/img/documentation/webapps/cockpit/cockpit-audit-type.png)Filter by Type +![Example img](../../../assets/documentation/webapps/cockpit/cockpit-audit-type.png)Filter by Type ### Annotating Operation Logs For each operation, an annotation can be added to provide context. To do this, click on the for the operation you want to annotate. The maximum length of the annotation is limited by your database. The length can be configured in the [Cockpit Configuration](extend/configuration.md#user-operation-log-annotation-length). -![Example img](/img/documentation/webapps/cockpit/cockpit-audit-annotation.png)Annotation edit +![Example img](../../../assets/documentation/webapps/cockpit/cockpit-audit-annotation.png)Annotation edit ## User Operation Log per Process -![Example img](/img/documentation/webapps/cockpit/cockpit-user-operation-log.png)Batch View Page +![Example img](../../../assets/documentation/webapps/cockpit/cockpit-user-operation-log.png)Batch View Page Every Process Instance offers a User Operations table. It displays all User Operation affecting the particular process. The table can be found in both the process definition and instance history views. \ No newline at end of file diff --git a/docs/documentation/webapps/cockpit/batch/batch-operation.md b/docs/documentation/webapps/cockpit/batch/batch-operation.md index 4efa147..ebb8a6c 100644 --- a/docs/documentation/webapps/cockpit/batch/batch-operation.md +++ b/docs/documentation/webapps/cockpit/batch/batch-operation.md @@ -13,7 +13,7 @@ menu: ## Definition Of operation -![Example img](/img/documentation/webapps/cockpit/batch/batch_operation_definition.png) +![Example img](../../../../assets/documentation/webapps/cockpit/batch/batch_operation_definition.png) It is possible to execute the following batch operations: @@ -48,7 +48,7 @@ appropriate notice once the operation type is selected. Navigation to the next step is disabled as long as all required data to perform the operation is not filled out. -![Example img](/img/documentation/webapps/cockpit/batch/batch-in-operator.png)IN Operator +![Example img](../../../../assets/documentation/webapps/cockpit/batch/batch-in-operator.png)IN Operator Cockpit provides `IN` operator support when filtering for process instances for the following query criteria: @@ -63,7 +63,7 @@ Occasionally, you may search for multiple query criterion values. The `IN` opera To use the `IN` operator, select a query criterion that supports the `IN` operator, and provide the values as a comma-separated list. To adjust the comma-separated list of values, start editing by clicking on the value. You can expand the value in a modal dialog for easier editing by clicking on the button. -![Example img](/img/documentation/webapps/cockpit/batch/batch-in-operator-modal.png)IN Operator Modal +![Example img](../../../../assets/documentation/webapps/cockpit/batch/batch-in-operator-modal.png)IN Operator Modal :::note[Heads-up!] The instance search operates on the history endpoint of the engine. In case the requested historic data is not persisted to the database, then the search does not deliver the desired results. @@ -71,14 +71,14 @@ start editing by clicking on the value. You can expand the value in a modal dial ## Confirmation of operation -![Batch Operation Confirmation](/img/documentation/webapps/cockpit/batch/batch_operation_confirmation.png) +![Batch Operation Confirmation](../../../../assets/documentation/webapps/cockpit/batch/batch_operation_confirmation.png) In the next step of the process, you can review the operation that is going to be performed. One can see a short summary of affected instances count as well as a button which toggles display of extended information. In the section with extended information, you see a path to the REST endpoint that will process the request as well as the payload of the request. ## Review results -![Batch Operation Result](/img/documentation/webapps/cockpit/batch/batch_operation_result.png) +![Batch Operation Result](../../../../assets/documentation/webapps/cockpit/batch/batch_operation_result.png) On the results screen you will see the current status of the batch operation creation. Upon successful batch creation, the user is able to navigate to [batch monitoring](../batch/monitoring.md). In case of error, this screen will display a corresponding error message. diff --git a/docs/documentation/webapps/cockpit/batch/monitoring.md b/docs/documentation/webapps/cockpit/batch/monitoring.md index 954a5a2..1d53fdd 100644 --- a/docs/documentation/webapps/cockpit/batch/monitoring.md +++ b/docs/documentation/webapps/cockpit/batch/monitoring.md @@ -12,7 +12,7 @@ menu: --- -![Example img](/img/documentation/webapps/cockpit/batch/batch.png)Batch View Page +![Example img](../../../../assets/documentation/webapps/cockpit/batch/batch.png)Batch View Page The batch page displays the status of running and completed batches. It allows displaying details of a batch such as the start- and end-time or the number of remaining jobs. For failed jobs, it displays the error message and allows a retry or deletion of the job. @@ -30,7 +30,7 @@ See the [process engine section](../../../user-guide/process-engine/batch.md) fo ### Search -![Example img](/img/documentation/webapps/cockpit/batch/batch-search.png)Batch Search +![Example img](../../../../assets/documentation/webapps/cockpit/batch/batch-search.png)Batch Search Above the in progress batches table, you can search for batches which fulfill certain search criteria. To do so, click in the search box and select the parameters to search for. diff --git a/docs/documentation/webapps/cockpit/bpmn/correlate-message.md b/docs/documentation/webapps/cockpit/bpmn/correlate-message.md index 7d6030d..7213679 100644 --- a/docs/documentation/webapps/cockpit/bpmn/correlate-message.md +++ b/docs/documentation/webapps/cockpit/bpmn/correlate-message.md @@ -14,7 +14,7 @@ menu: When an execution waits in a message-catching flow-node, you can use [Message Correlation][] to continue the execution. Cockpit offers a [Batch Operation][] to correlate messages. -![Correlate Message Batch Operation](/img/documentation/webapps/cockpit/bpmn/batch-operation.png) +![Correlate Message Batch Operation](../../../../assets/documentation/webapps/cockpit/bpmn/batch-operation.png) You can configure the batch operation as follows: @@ -30,11 +30,11 @@ You can configure the batch operation as follows: You can find a envelope button on the right side next to the BPMN diagram on the process definition and instance view. -![Process action to correlate a message](/img/documentation/webapps/cockpit/bpmn/process-action.png) +![Process action to correlate a message](../../../../assets/documentation/webapps/cockpit/bpmn/process-action.png) If you click this button, a modal dialog opens: -![Modal dialog to correlate a message](/img/documentation/webapps/cockpit/bpmn/modal-dialog.png) +![Modal dialog to correlate a message](../../../../assets/documentation/webapps/cockpit/bpmn/modal-dialog.png) When you click into the text input field, you can choose a message name from a list of suggestions. @@ -51,7 +51,7 @@ You can open the modal dialog prefilled with the message name by clicking the en in the upper right corner of a message-catching flow-node. To make the button visible, hover over a message-catching flow-node. -![Diagram overlay button](/img/documentation/webapps/cockpit/bpmn/diagram-overlay-button.png) +![Diagram overlay button](../../../../assets/documentation/webapps/cockpit/bpmn/diagram-overlay-button.png) :::note[Known limitations] Not all message-catching flow-nodes in a BPMN diagram are covered with overlays or are present diff --git a/docs/documentation/webapps/cockpit/bpmn/dashboard.md b/docs/documentation/webapps/cockpit/bpmn/dashboard.md index 8455656..02f6789 100644 --- a/docs/documentation/webapps/cockpit/bpmn/dashboard.md +++ b/docs/documentation/webapps/cockpit/bpmn/dashboard.md @@ -17,11 +17,11 @@ The processes dashboard of Cockpit is the entry point for process monitoring. It ## Deployed Processes -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-process-definition-state.png)Deployed Processes +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-process-definition-state.png)Deployed Processes With this plugin you can easily observe the state of a process definition. Green and red dots signalize running and [failed jobs][failed-jobs]. At this observing level a red dot signifies that there is at least one process instance or a sub process instance which has an unresolved incident. You can localize the problem by using the [process definition view][process-definition-view]. -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes-search.png)cockpit Search +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes-search.png)cockpit Search With the search component above the table, you can search for deployed processes by their name or key. To do so, click in the search box and select the property. @@ -35,7 +35,7 @@ inserting a name in the drop-down menu that appears. You can then retrieve the s clicking on the button and selecting the chosen name in the drop-down menu. -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes.png)Rendered Process Preview +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes.png)Rendered Process Preview You can also switch to the preview tab which displays the rendered process model of each deployed process. Additionally, you get information about how many instances of the process are currently running and about the process state. Green and red dots signalize running and [failed jobs][failed-jobs]. Click on the model to go to the [process definition view][process-definition-view]. @@ -44,7 +44,7 @@ You can also switch to the preview tab which displays the rendered process model ## Process Instances Search -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-search.png)cockpit Search +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-search.png)cockpit Search At the top of the dashboard, you can search for process instances and incidents which fulfill certain search criteria. To do so, click in the search box and select the parameters to search for. You can also begin typing to find the required parameter faster. Depending on the selected property, you have to specify the value of the property. Some properties also allow operators other than equal, e.g., 'like', which allows searching for process instances where the entered value is a substring of the property value. To search for process variables, you also have to enter the variable name you want to search for. You can search for variable values with the type `String`, `Number`, or `Boolean`. To search for a variable of type string, which has a numeric, boolean or null value, you have to wrap the value in single quotes (e.g., `'93288'` or `'NULL'`). You can combine multiple search pills to narrow down the search results. @@ -67,7 +67,7 @@ not always be solvable from Cockpit if other services or systems are involved. F to export affected process instances and their process variable values as CSV spreadsheets. The export feature helps to communicate efficiently with other system owners. -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-export.png)CSV Export for Process Instances +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-export.png)CSV Export for Process Instances To trigger the CSV export, search for process instances and customize what properties you want to export by adding or removing columns. Suppose you are only interested in selecting specific process instances; you can checkmark the process instances of interest on the left side or select the whole page by checkmarking @@ -75,7 +75,7 @@ the box on the left side in the table header. You can select process instances a When you are satisfied with your configuration of columns, query criteria, and selection of process instances, click . -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-export-modal-dialog.png)CSV Export for Process Instances: Modal Dialog +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-export-modal-dialog.png)CSV Export for Process Instances: Modal Dialog Clicking the button opens a modal dialog. You can define if you want to export your previous selection of process instances, the currently displayed page, or all pages. @@ -89,7 +89,7 @@ Additionally, you can specify process variables by name to enrich the export res When clicking **Export CSV**, the backend crunches the requested data and creates a CSV file. This could take a while, depending on the amounts of process instances you want to export. -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-export-download-as-csv.png)CSV Export for Process Instances: Modal Dialog โ€“ Download as CSV +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-export-download-as-csv.png)CSV Export for Process Instances: Modal Dialog โ€“ Download as CSV As soon as the request succeeds, you should see a notification that the CSV creation was successful, and the button changes to **Download as CSV**. When you click the button, the download of the CSV file starts. @@ -108,7 +108,7 @@ The format of the export result is a file of [Comma-separated values (CSV)](http #### Example -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-export-result.png)CSV Export for Process Instances: Export Result +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-export-result.png)CSV Export for Process Instances: Export Result ### Limitations @@ -121,7 +121,7 @@ The format of the export result is a file of [Comma-separated values (CSV)](http ### `IN` operator -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-in-operator.png)IN Operator +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-in-operator.png)IN Operator Cockpit provides `IN` operator support when filtering for process instances for the following query criteria: @@ -136,11 +136,11 @@ Occasionally, you may search for multiple query criterion values. The `IN` opera To use the `IN` operator, select a query criterion that supports the `IN` operator, and provide the values as a comma-separated list. To adjust the comma-separated list of values, start editing by clicking on the value. You can expand the value in a modal dialog for easier editing by clicking on the button. -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-in-operator-modal.png)IN Operator Modal +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-in-operator-modal.png)IN Operator Modal ## Delete process definitions -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-delete-process-definition.png)Delete Process Definition +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-delete-process-definition.png)Delete Process Definition Each process definition in the dashboard has a delete action. This action allows to delete all versions of a process definition. When proceeding with this action, you can always choose to enable/disable skipping custom listeners. However, if the process definition has process instances running, enabling the cascading flag becomes mandatory. diff --git a/docs/documentation/webapps/cockpit/bpmn/drilldown.md b/docs/documentation/webapps/cockpit/bpmn/drilldown.md index 9b80101..5f03690 100644 --- a/docs/documentation/webapps/cockpit/bpmn/drilldown.md +++ b/docs/documentation/webapps/cockpit/bpmn/drilldown.md @@ -18,14 +18,14 @@ collapsed subprocesses with the drilldown icon. If you have a collapsed subprocess in your diagram, a drilldown icon will appear in the lower right of the activity. -![A Collapsed Subprocess Shape with a drilldown Action](/img/documentation/webapps/cockpit/bpmn/shape.png) +![A Collapsed Subprocess Shape with a drilldown Action](../../../../assets/documentation/webapps/cockpit/bpmn/shape.png) The collapsed shape indicates if there are running child instances or if an incident occurred in a child activity. If you click on the drilldown icon, the diagram will show the contents of the collapsed subprocess. Use the breadcrumbs in the upper left corner of the diagram to navigate back to the parent process. -![Breadcrumb links showing the process hirarchy](/img/documentation/webapps/cockpit/bpmn/breadcrumbs.png) +![Breadcrumb links showing the process hirarchy](../../../../assets/documentation/webapps/cockpit/bpmn/breadcrumbs.png) The breadcrumbs show the process hierarchy. Opening an expanded subprocess opens the nearest collapsed subprocess. @@ -33,7 +33,7 @@ The breadcrumbs show the process hierarchy. Opening an expanded subprocess opens When migrating collapsed subprocesses, be aware that the collapsed shapes hide other activities. The wizard only displays connections for the current layer. -![Migration view for collapsed subprocesses](/img/documentation/webapps/cockpit/bpmn/migration.png) +![Migration view for collapsed subprocesses](../../../../assets/documentation/webapps/cockpit/bpmn/migration.png) Additionally, collapsed subprocesses can have two badges: diff --git a/docs/documentation/webapps/cockpit/bpmn/failed-jobs.md b/docs/documentation/webapps/cockpit/bpmn/failed-jobs.md index 2f7eeff..957a4f2 100644 --- a/docs/documentation/webapps/cockpit/bpmn/failed-jobs.md +++ b/docs/documentation/webapps/cockpit/bpmn/failed-jobs.md @@ -12,7 +12,7 @@ menu: --- -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-failed-job-drill-down.png)Failed Job Drill Down +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-failed-job-drill-down.png)Failed Job Drill Down Unresolved incidents of a process instance or a sub process instance are indicated by Cockpit as failed jobs. To localize which instance of a process failed, Cockpit allows you to drill down to the unresolved incident by using the process status dots. Hit a red status dot of the affected instance in the Process Definition View to get an overview of all incidents. The *Incidents* tab in the [Detailed Information Panel](../bpmn/process-instance-view.md#detailed-information-panel) lists the failed activities with additional information. Furthermore, you have the possibility of going down to the failing instance of a sub process. @@ -28,12 +28,12 @@ A modal dialog opens where you can: After clicking on **Retry**, the engine will re-trigger the jobs and increment their retry values in the database so the Job Executor can acquire and execute the jobs again. -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-instance-job-retry.png)Process instance job retry +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-instance-job-retry.png)Process instance job retry Alternatively, you can change the retries of jobs asynchronously via the [Batch Operation](../batch/batch-operation.md) "Set retries of Jobs belonging to process instances". ## Bulk Retry -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-bulk-retry.png)Batch Retry +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-bulk-retry.png)Batch Retry You can also perform a synchronous bulk retry of failed jobs. This feature is available in the [process definition view](../bpmn/process-definition-view.md) in the Job Definitions tab. If you hit this button, you will increment the number of retries for all the defined jobs of the process definition. diff --git a/docs/documentation/webapps/cockpit/bpmn/process-definition-view.md b/docs/documentation/webapps/cockpit/bpmn/process-definition-view.md index 3c88ec2..32db616 100644 --- a/docs/documentation/webapps/cockpit/bpmn/process-definition-view.md +++ b/docs/documentation/webapps/cockpit/bpmn/process-definition-view.md @@ -11,7 +11,7 @@ menu: --- -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-process-definitions-view.png)Process Definition View +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-process-definitions-view.png)Process Definition View The process definition view provides you with information about the definition and the status of a process. On the left side you can easily survey the versions of the process and how many instances of the versions are running. Incidents of all running process instances are displayed together with an instance counter label in the corresponding rendered diagram. So it is easy to locate [failed activities][failed-activities] in the process. Use the mouse to navigate through the diagram. By pressing the CTRL key while turning the mouse wheel you can zoom in and out. Hold the left mouse button to pan the diagram in the desired direction. Furthermore, you can maximize the diagram view or the detailed information panel by clicking on, respectively, the button or the button, at the bottom left of the diagram view. @@ -45,46 +45,46 @@ Furthermore, you can copy a link to the current filter query to your clipboard b ### Runtime View -![Example img](/img/documentation/webapps/cockpit/bpmn/add-filter.png)Filter Example +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/add-filter.png)Filter Example Add a filter to the process definition view. Select a filter for variables, the start date and time, activity ID or the business key of process instances. **Business Key** -![Example img](/img/documentation/webapps/cockpit/bpmn/business-key.png)Filter Example +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/business-key.png)Filter Example Add a filter for process instances by business key. **Start Date and Time** -![Example img](/img/documentation/webapps/cockpit/bpmn/start-date.png)Filter Example +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/start-date.png)Filter Example Add a filter for process instances by start date. Please note that the date must be set in accordance to the [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) standard. -![Example img](/img/documentation/webapps/cockpit/bpmn/start-date-before-after.png)Filter Example +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/start-date-before-after.png)Filter Example Choose between `before` and `after` to filter for instances that were started before or after the given date. For example, click on `before` to obtain the selection. **String variable** -![Example img](/img/documentation/webapps/cockpit/bpmn/var-string.png)Filter Example +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/var-string.png)Filter Example Add a filter for process instances by filtering for a `string` value. Please note that you should **not** encase the value in quotation marks. **Boolean variable** -![Example img](/img/documentation/webapps/cockpit/bpmn/var-boolean.png)Filter Example +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/var-boolean.png)Filter Example Add a filter for process instances by filtering for a `boolean` value. **Numeric variable** -![Example img](/img/documentation/webapps/cockpit/bpmn/var-numeric.png)Filter Example +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/var-numeric.png)Filter Example Add a filter for process instances by filtering for a `numeric` (double, integer, long or short) value. @@ -95,15 +95,15 @@ Add a filter to the [process definition history view][process-definition-history **Filtering for completed and running process instances** -![Example img](/img/documentation/webapps/cockpit/bpmn/history-completed.png)Filter Example -![Example img](/img/documentation/webapps/cockpit/bpmn/history-running.png)Filter Example +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/history-completed.png)Filter Example +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/history-running.png)Filter Example Add a filter for process instances by filtering for already completed or still running process instances. **End Date and Time** -![Example img](/img/documentation/webapps/cockpit/bpmn/history-end-date.png)Filter Example +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/history-end-date.png)Filter Example Add a filter for process instances by end date. Please note that the date must be set in accordance to the [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) standard and that this option is only available in the [process definition history view][process-definition-history-view]. Again choose between `before` and `after` to filter for instances that were ended before or after the given date. For example, click on `before` to obtain the selection.. @@ -113,7 +113,7 @@ Add a filter for process instances by end date. Please note that the date must b ## Delete Multiple Running Process Instances -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-bulk-delete.png)Batch Delete Running Process Instances +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-bulk-delete.png)Batch Delete Running Process Instances Delete multiple running process instances at once by using this feature. In the process definition view, hit the remove-circle button on the right side. This opens a confirmation screen in which you can select which process instances to delete. You can apply [filters](#filter) to make it easier to find the desired process instances. In addition, it is possible to provide a reason for the delete. After you have selected which instances to delete and confirmed the delete, the runtime data of the deleted instances will be removed. @@ -123,7 +123,7 @@ Delete the current process definition version by using this feature. In the proc ## BPMN Documentation -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-documentation.png)Set Job Priority +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-documentation.png)Set Job Priority This feature allows you to inspect documentation added in the Camunda Modeler. To do so, open the Documentation tab. Elements with a documentation are indicated with a info-sign in the diagram. The documentation table lists all documented elements. Click on a table row to highlight the element in the diagram. @@ -131,7 +131,7 @@ To view long documentations, click on the info-sign on the element or the docume ## Set Job priority -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-set-job-priority.png)Set Job Priority +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-set-job-priority.png)Set Job Priority You can change the job priority by overriding the priority specified in the BPMN 2.0 XML. To do so, click on the icon in the `Job Definitions` tab. In the opened dialog you can override the job priority. If an overridden priority is already set, you can clear it to use the priority specified in the XML again. It is also possible to include existing jobs when changing the priority. @@ -158,7 +158,7 @@ information and a call activity in this process is currently calling it. * *Running*: There is currently a process instance calling this process definition. However, the called process definition can only be resolved at runtime and is only valid for a particular process instance. -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-call-activity-definition-navigation.png)Navigate to called processes definition +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-call-activity-definition-navigation.png)Navigate to called processes definition For more drill down options on call activities you can check out the [process instance view][process-instance-view] and the [process history views][process-history-views]. diff --git a/docs/documentation/webapps/cockpit/bpmn/process-instance-restart.md b/docs/documentation/webapps/cockpit/bpmn/process-instance-restart.md index 406277e..92b05c7 100644 --- a/docs/documentation/webapps/cockpit/bpmn/process-instance-restart.md +++ b/docs/documentation/webapps/cockpit/bpmn/process-instance-restart.md @@ -17,7 +17,7 @@ In the history view, you can restart process instances individually or by a batc ## Perform Restart -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-restart.png)Process Instance Restart +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-restart.png)Process Instance Restart A restart of a terminated process instance includes instructions which are displayed in the bottom of the screen, after you have selected the restart tab in the history view (1). @@ -34,7 +34,7 @@ When restarting a process instance, you have the option to *start before* or *st ### Instance selection -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-restart-instance-selection.png)Instance Selection +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-restart-instance-selection.png)Instance Selection When you click on **Select Instances**, a modal opens. Initially, all instances are displayed. You can use the filter bar above the list of instances to filter the displayed instances. @@ -49,7 +49,7 @@ When you have made your selection you can proceed by clicking the red button. Th ### Confirm Restart -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-restart-confirm.png)Confirm Restart +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-restart-confirm.png)Confirm Restart Here you see two sections. The option section allows you to specify options related to the execution of the restart. diff --git a/docs/documentation/webapps/cockpit/bpmn/process-instance-view.md b/docs/documentation/webapps/cockpit/bpmn/process-instance-view.md index 1bde0e6..fc21ecd 100644 --- a/docs/documentation/webapps/cockpit/bpmn/process-instance-view.md +++ b/docs/documentation/webapps/cockpit/bpmn/process-instance-view.md @@ -11,7 +11,7 @@ menu: --- -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-process-instances-view.png)Process Instance View +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-process-instances-view.png)Process Instance View Open the process instance view by selecting a process instance from the [process definition view][process-definition-view] instance list. This view allows you to drill down into a single process instance and explore its running activities as well as the variables, tasks, jobs, etc. Beside the diagram view the process will be displayed as an [activity instance tree view](#activity-instance-tree). Variables that belong to the instance will be listed in a variables table of the [detailed information panel](#detailed-information-panel). Now you can select single or multiple ('ctrl + click') flow nodes in the interactive BPMN 2.0 diagram or you can select an activity instance within the activity tree view. As diagram, tree view and variables table correspond with each other, the selected flow node will also be selected in the tree and the associated variables will be shown and vice versa. @@ -23,13 +23,13 @@ Furthermore, you can maximize the diagram view or the detailed information panel ## Activity Instance Tree -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-activity-instance-tree-view.png)Activity Instance Tree +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-activity-instance-tree-view.png)Activity Instance Tree The activity instance tree contains a node for each activity that is currently active in the process instance. It allows you to select activity instances to explore their details. Concurrently, the selected instance will be marked in the rendered process diagram and the corresponding variables will be listed in the detailed information panel. ## Call Activity Drill Down -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-call-activity-instance-drill-down.png)Call Activity Drill Down +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-call-activity-instance-drill-down.png)Call Activity Drill Down Call activity instances that call at least one process instance have an overlay on the upper right corner that links to their called process instances. @@ -40,7 +40,7 @@ However, if the number of called process instances exceeds one, then clicking th ## Detailed Information Panel -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-detailed-information-view.png)Detailed Information Panel +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-detailed-information-view.png)Detailed Information Panel Use the detailed information panel to get an overview of the variables, incidents, called process instances, user tasks and external tasks that the process instance contains. Furthermore, you can access the [instance modification](../bpmn/process-instance-modification.md) tab. Depending on the selected activity instance in the rendered diagram, the panel lists the corresponding information. You can also focus on the activity instance via a scope link in the table. @@ -56,26 +56,26 @@ The external tasks tab displays various information about external tasks, such a ## Filter for Variables -![Example img](/img/documentation/webapps/cockpit/bpmn/variable-filter.png)Filter Variables +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/variable-filter.png)Filter Variables In the variables tab, you can filter for variables by variable name, activity instance id and variable value by using search pills. You can filter variable values with the type `String`, `Number`, or `Boolean`. To do so, click in the empty search field and select a criterion. Next, fill in the respective values for the search pill. You can combine multiple search pills to narrow down the results. The total amount of results that suit the search query is displayed to the right. Furthermore, you can copy a link to the current search query to your clipboard by clicking on the button and you can save search queries to your local browser storage by clicking on the button and inserting a name in the drop down menu that appears. You can then retrieve the search query by clicking on the button and selecting the chosen name in the drop down menu. ## Add Variables -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-add-variables.png)Add Variables +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-add-variables.png)Add Variables Hit the plus button on the right side to add variables to a process instance. You can choose between different data types. Please note that variables will be overwritten if you add a new variable with an existing name. ## Edit Variables -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-edit-variables.png)Edit Variables +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-edit-variables.png)Edit Variables Edit variables in the list of variables by using the pencil symbol. This feature allows you to change the value of variables as well as the type. A validation of the date format and for the value of integers happens on client side. If you enter NULL the variable will be converted to a string type. ## Cancel a Process Instance -![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-cancel-process-instance.png)Cancel Instances +![Example img](../../../../assets/documentation/webapps/cockpit/bpmn/cockpit-cancel-process-instance.png)Cancel Instances In the process instance view you can cancel a single process instance. Hit the remove button on the right side. In the dialog that appears, you can choose to skip custom listeners and to skip I/O mappings. After you have completed this step, a confirmation dialog appears and the runtime data of the canceled instance is deleted. diff --git a/docs/documentation/webapps/cockpit/cleanup.md b/docs/documentation/webapps/cockpit/cleanup.md index a71c20c..9b93631 100644 --- a/docs/documentation/webapps/cockpit/cleanup.md +++ b/docs/documentation/webapps/cockpit/cleanup.md @@ -7,7 +7,7 @@ sidebar_position: 50 ## Cleanup View -![Example img](/img/documentation/webapps/cockpit/cockpit-cleanup-page.png)Cockpit Cleanup View +![Example img](../../../assets/documentation/webapps/cockpit/cockpit-cleanup-page.png)Cockpit Cleanup View The cleanup view in Cockpit provides information about the history cleanup state and statistics about the cleanable and deleted data. Moreover, the page allows to manually perform various operations related to the history cleanup. @@ -21,7 +21,7 @@ If a history cleanup window is configured and scheduled, you can check out the r Furthermore, you can always be aware of any incident that occurred to the cleanup job, see its related stacktrace and retry it manually. -![Example img](/img/documentation/webapps/cockpit/cockpit-cleanup-state-incident.png)Cockpit Cleanup Job Incident +![Example img](../../../assets/documentation/webapps/cockpit/cockpit-cleanup-state-incident.png)Cockpit Cleanup Job Incident ## Cleanable Data Statistics @@ -29,7 +29,7 @@ Furthermore, you can always be aware of any incident that occurred to the cleanu You can get more insights on the effectiveness of your configuration by checking statistics about the cleanable process/decision/case instances as well as batch operations. Data are filtered and sorted in a way to only show the most relevant data to history cleanup first, i.e. the rows with the most finished instances first. -![Example img](/img/documentation/webapps/cockpit/cockpit-cleanup-ttl.png)Cockpit History Time To Live Modification in Cleanup Page +![Example img](../../../assets/documentation/webapps/cockpit/cockpit-cleanup-ttl.png)Cockpit History Time To Live Modification in Cleanup Page Moreover, it's also possible to modify the history time to live directly from the table for a specific definition version. diff --git a/docs/documentation/webapps/cockpit/cmmn/case-definition-view.md b/docs/documentation/webapps/cockpit/cmmn/case-definition-view.md index fc504e5..79662e1 100644 --- a/docs/documentation/webapps/cockpit/cmmn/case-definition-view.md +++ b/docs/documentation/webapps/cockpit/cmmn/case-definition-view.md @@ -11,7 +11,7 @@ menu: --- -![Example img](/img/documentation/webapps/cockpit/cmmn/case-definition-view.png)Case Definition View +![Example img](../../../../assets/documentation/webapps/cockpit/cmmn/case-definition-view.png)Case Definition View On the case definition view, you can find a diagram of the deployed case definition. Use the mouse to navigate through the diagram. By turning the mouse wheel you can zoom in and out. Hold the left mouse button to pan the diagram in the desired direction. diff --git a/docs/documentation/webapps/cockpit/cmmn/case-instance-view.md b/docs/documentation/webapps/cockpit/cmmn/case-instance-view.md index 24d93c3..a72fe73 100644 --- a/docs/documentation/webapps/cockpit/cmmn/case-instance-view.md +++ b/docs/documentation/webapps/cockpit/cmmn/case-instance-view.md @@ -11,7 +11,7 @@ menu: --- -![Example img](/img/documentation/webapps/cockpit/cmmn/case-instance-view.png)Case Instance View +![Example img](../../../../assets/documentation/webapps/cockpit/cmmn/case-instance-view.png)Case Instance View Open the case instance view by selecting a case instance from the [case definition view][case-definition-view] instance list. This view allows you to drill down into a single case instance and explore its activities as well as the variables, tasks, etc. @@ -19,7 +19,7 @@ Furthermore, you can maximize the diagram view or the detailed information panel ## Detailed Information Panel -![Example img](/img/documentation/webapps/cockpit/cmmn/detailed-information-view.png)Detailed Information Panel +![Example img](../../../../assets/documentation/webapps/cockpit/cmmn/detailed-information-view.png)Detailed Information Panel You can access various information regarding the specific instance by selecting the applicable tab at the bottom of the screen: @@ -43,21 +43,21 @@ In the Executed Decision Instances tab you find an overview of all decision inst ## Add Variables -![Example img](/img/documentation/webapps/cockpit/cmmn/add-variables.png)Add Variables +![Example img](../../../../assets/documentation/webapps/cockpit/cmmn/add-variables.png)Add Variables Hit the plus button on the right side to add variables to a case instance. You can choose between different data types. Please note that variables will be overwritten if you add a new variable with an existing name. ## Edit Variables -![Example img](/img/documentation/webapps/cockpit/cmmn/edit-variables.png)Edit Variables +![Example img](../../../../assets/documentation/webapps/cockpit/cmmn/edit-variables.png)Edit Variables Edit variables in the list of variables by using the pencil symbol. This feature allows you to change the value of variables as well as the type. A validation of the date format and for the value of integers happens on client side. If you enter NULL, the variable will be converted to a string type. ## Terminate a Case Instance -![Example img](/img/documentation/webapps/cockpit/cmmn/terminate-case.png)Terminate Case Instance +![Example img](../../../../assets/documentation/webapps/cockpit/cmmn/terminate-case.png)Terminate Case Instance In the case instance view you can terminate a single case instance. Hit the remove button on the right side. diff --git a/docs/documentation/webapps/cockpit/cmmn/dashboard.md b/docs/documentation/webapps/cockpit/cmmn/dashboard.md index e74400a..d1c30e2 100644 --- a/docs/documentation/webapps/cockpit/cmmn/dashboard.md +++ b/docs/documentation/webapps/cockpit/cmmn/dashboard.md @@ -17,7 +17,7 @@ The CMMN Cases dashboard of Cockpit is the entry point for case monitoring. It c ## Search -![Example img](/img/documentation/webapps/cockpit/cmmn/case-dashboard-search.png)Case Instance Search +![Example img](../../../../assets/documentation/webapps/cockpit/cmmn/case-dashboard-search.png)Case Instance Search At the top of the dashboard, you can search for case instances which fulfill certain search criteria. To do so, click in the search box and select the parameters to search for. You can also begin typing to find the required parameter faster. Depending on the selected property, you have to specify the value of the property. Some properties also allow operators other than equal, e.g., `like`, which allows searching for case instances where the entered value is a substring of the property value. To search for case variables, you also have to enter the variable name you want to search for. To search for a variable of type string, which has a numeric, boolean or null value, you have to wrap the value in single quotes (e.g., `'93288'` or `'NULL'`). @@ -32,7 +32,7 @@ Furthermore, you can copy a link to the current search query to your clipboard b ## Deployed Cases -![Example img](/img/documentation/webapps/cockpit/cmmn/case-dashboard-deployed.png)Deployed Case Definitions +![Example img](../../../../assets/documentation/webapps/cockpit/cmmn/case-dashboard-deployed.png)Deployed Case Definitions This plugin provides you with a list of deployed case definitions. You can click on the name of a case to go to the [case definition view][case-definition-view] and access more details, like the CMMN Case or the executed [case instance view][case-instance-view]. diff --git a/docs/documentation/webapps/cockpit/dashboard.md b/docs/documentation/webapps/cockpit/dashboard.md index 2defb2b..f6d6152 100644 --- a/docs/documentation/webapps/cockpit/dashboard.md +++ b/docs/documentation/webapps/cockpit/dashboard.md @@ -5,7 +5,7 @@ sidebar_position: 10 --- -![Example img](/img/documentation/webapps/cockpit/dashboard.png)Cockpit Dashboard +![Example img](../../../assets/documentation/webapps/cockpit/dashboard.png)Cockpit Dashboard The dashboard of Cockpit provides a quick overview of running and historic operations as well as details about deployments. @@ -18,7 +18,7 @@ Additional [plugins](../cockpit/extend/plugins.md) can be added to the dashboard ## Metrics -![Example img](/img/documentation/webapps/cockpit/dashboard-metrics.png)Cockpit Dashboard Metrics +![Example img](../../../assets/documentation/webapps/cockpit/dashboard-metrics.png)Cockpit Dashboard Metrics At the bottom of the dashboard, the metrics plugin displays graphs with metrics for executed activity instances, evaluated decision instances and executed jobs. You can select to display the details for the current day, the current week or the current month. By clicking on the metrics graphs and dragging the cursor @@ -28,6 +28,6 @@ appears under the graph, you are forwarded to the respective search with presele ## Multi Engine -![Example img](/img/documentation/webapps/cockpit/cockpit-multi-engine.png)Multiple Engines +![Example img](../../../assets/documentation/webapps/cockpit/cockpit-multi-engine.png)Multiple Engines If you are working with more than one engine, you can select the desired engine via a dropdown selection. Cockpit provides all information of the selected engine. diff --git a/docs/documentation/webapps/cockpit/deployment-view.md b/docs/documentation/webapps/cockpit/deployment-view.md index 883d0e9..ded4d7d 100644 --- a/docs/documentation/webapps/cockpit/deployment-view.md +++ b/docs/documentation/webapps/cockpit/deployment-view.md @@ -7,7 +7,7 @@ sidebar_position: 60 ## Deployment View -![Example img](/img/documentation/webapps/cockpit/cockpit-deployments-page.png)Cockpit Deployment View +![Example img](../../../assets/documentation/webapps/cockpit/cockpit-deployments-page.png)Cockpit Deployment View The deployment view of Cockpit shows an overview of all deployments, their resources and the content of these resources. It allows the deletion of existing deployments as well as redeployment of old resources and the creation of new deployments. The content of resources within deployments can be displayed. It is also possible to download single resources from this view. diff --git a/docs/documentation/webapps/cockpit/dmn/dashboard.md b/docs/documentation/webapps/cockpit/dmn/dashboard.md index c9c7e06..0cd25fe 100644 --- a/docs/documentation/webapps/cockpit/dmn/dashboard.md +++ b/docs/documentation/webapps/cockpit/dmn/dashboard.md @@ -17,7 +17,7 @@ The decisions dashboard of Cockpit is the entry point for decision monitoring. I ## Deployed Decisions -![Example img](/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-list.png)Deployed Decision Definitions +![Example img](../../../../assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-list.png)Deployed Decision Definitions This plugin provides you with a list of deployed decision definitions. You can click on the name of a decision to go to the [decision definition view][decision-definition-view] and access more details, like the DMN table or executed [decision instances view][decision-instance-view]. You can also click on the name of a decision requirements definition to go to the [decision requirements definition view][decision-requirements-definition-view]. @@ -25,14 +25,14 @@ You can also click on the name of a decision requirements definition to go to th ## Deployed Decision Requirements Definition -![Example img](/img/documentation/webapps/cockpit/dmn/cockpit-drd-list.png)Deployed Decision Definitions +![Example img](../../../../assets/documentation/webapps/cockpit/dmn/cockpit-drd-list.png)Deployed Decision Definitions This plugin provides you with a list of deployed decision requirements definitions. You can click on the name of a decision requirements definition to go to the [decision requirements definition view][decision-requirements-definition-view] and access more details, like the decision requirements definition diagram or executed [decision requirements definition instances view][decision-requirements-definition-instance-view]. ## Search -![Example img](/img/documentation/webapps/cockpit/dmn/decision-instance-search.png)Decision Instance Search +![Example img](../../../../assets/documentation/webapps/cockpit/dmn/decision-instance-search.png)Decision Instance Search At the top of the dashboard, you can search for decision instances which fulfill certain search criteria. To do so, click in the search box and select the parameters to search for. You can also begin typing to find the required parameter faster. Depending on the selected property, you have to specify the value of the property. You can combine multiple search pills to narrow down the search results. diff --git a/docs/documentation/webapps/cockpit/dmn/decision-definition-view.md b/docs/documentation/webapps/cockpit/dmn/decision-definition-view.md index 76c1e4a..1af704d 100644 --- a/docs/documentation/webapps/cockpit/dmn/decision-definition-view.md +++ b/docs/documentation/webapps/cockpit/dmn/decision-definition-view.md @@ -11,7 +11,7 @@ menu: --- -![Example img](/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-view.png)Decision Definition View +![Example img](../../../../assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-view.png)Decision Definition View On the decision definition view, you can find a table or literal expression of the deployed decision definition. You can change the version of the decision definition in the dropdown menu on the left side. The table or literal expression is then updated accordingly. You can also navigate to the deployment of the selected version that contains the decision definition. Clicking the `navigate to deployment` button will take you to the [deployment view](../deployment-view.md). You can maximize the table view or the detailed information panel by clicking on the button, respectively the button, at the bottom left of the table view. diff --git a/docs/documentation/webapps/cockpit/dmn/decision-instance-view.md b/docs/documentation/webapps/cockpit/dmn/decision-instance-view.md index 74c69d2..284e65d 100644 --- a/docs/documentation/webapps/cockpit/dmn/decision-instance-view.md +++ b/docs/documentation/webapps/cockpit/dmn/decision-instance-view.md @@ -13,7 +13,7 @@ menu: On the decision instance page you find the table or literal expression of the decision that was executed as well as the values for the input variables and the decision result. -![Example img](/img/documentation/webapps/cockpit/dmn/cockpit-decision-instance-view.png)Decision Instance View +![Example img](../../../../assets/documentation/webapps/cockpit/dmn/cockpit-decision-instance-view.png)Decision Instance View The input and output values for this decision instance are shown directly on the table in the corresponding cells as well as in the Inputs and Outputs tabs below the table. Complex variables like Objects, Files and Bytes are not displayed on the table. You have to use the Inputs and Outputs tabs to access the values of these variables. diff --git a/docs/documentation/webapps/cockpit/dmn/decision-requirements-definition-view.md b/docs/documentation/webapps/cockpit/dmn/decision-requirements-definition-view.md index 54c4670..dbd0d89 100644 --- a/docs/documentation/webapps/cockpit/dmn/decision-requirements-definition-view.md +++ b/docs/documentation/webapps/cockpit/dmn/decision-requirements-definition-view.md @@ -11,7 +11,7 @@ menu: --- -![Example img](/img/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-view.png)Decision Requirements Definition View +![Example img](../../../../assets/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-view.png)Decision Requirements Definition View On the decision requirements definition view, you can find a diagram of the deployed decision requirements definition. Use the mouse to navigate through the diagram. By turning the mouse wheel you can zoom in and out. @@ -32,7 +32,7 @@ Below the diagram you find the decision instances tab and the decision requireme You can maximize the table view or the detailed information panel by clicking on the button, respectively the button, at the bottom left of the table view. -![Example img](/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instances-tab.png)Decision Instances Tab +![Example img](../../../../assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instances-tab.png)Decision Instances Tab In the decision instances tab, you can find a listing of all decision instances for this definition. You can also search for decision instances which fulfill certain search criteria. To do so, click in the search box and select the parameters to search for. You can also begin typing to find the required parameter faster. You have to specify the value of the selected property to perform the search and you can combine multiple search pills to narrow down the search results. @@ -47,7 +47,7 @@ The same principle also applies to case definitions and case instances. Clicking on the ID of the decision instance takes you to the [decision instance view](../dmn/decision-instance-view.md). Clicking on the decision definition takes you to the [decision definition view](../dmn/decision-definition-view.md) -![Example img](/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-drd-tab.png)Decision Requirements Definition Instances Tab +![Example img](../../../../assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-drd-tab.png)Decision Requirements Definition Instances Tab In the decision requirements definition instances tab, you can find a listing of all instances of the current decision requirements definition. You can also search for decision instances which fulfill certain search criteria. To do so, click in the search box and select the parameters to search for. You can also begin typing to find the required parameter faster. You have to specify the value of the selected property to perform the search and you can combine multiple search pills to narrow down the search results. diff --git a/docs/documentation/webapps/cockpit/dmn/decision-requirements-instance-view.md b/docs/documentation/webapps/cockpit/dmn/decision-requirements-instance-view.md index 3a456d3..0a1d1dc 100644 --- a/docs/documentation/webapps/cockpit/dmn/decision-requirements-instance-view.md +++ b/docs/documentation/webapps/cockpit/dmn/decision-requirements-instance-view.md @@ -12,7 +12,7 @@ menu: --- -![Example img](/img/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-instance-view.png)Decision Requirements Definition View +![Example img](../../../../assets/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-instance-view.png)Decision Requirements Definition View On the decision requirements definition instance view, you can find a diagram of the deployed decision requirements definition. Use the mouse to navigate through the diagram. By turning the mouse wheel you can zoom in and out. @@ -32,7 +32,7 @@ Clicking on the deployment ID will take you to the [deployment view](../deployme You can maximize the table view or the detailed information panel by clicking on the button, respectively the button, at the bottom left of the table view. -![Example img](/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instance-instances-tab.png)Decision Instances Tab +![Example img](../../../../assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instance-instances-tab.png)Decision Instances Tab In the lower panel, you can see a listing of all decision instances for this decision requirements definition instance. You can also search for decision instances which fulfill certain search criteria. To do so, click in the search box and select the parameters to search for. You can also begin typing to find the required parameter faster. You have to specify the value of the selected property to perform the search and you can combine multiple search pills to narrow down the search results. diff --git a/docs/documentation/webapps/cockpit/extend/plugins.md b/docs/documentation/webapps/cockpit/extend/plugins.md index 2d3ac2f..2cc55cb 100644 --- a/docs/documentation/webapps/cockpit/extend/plugins.md +++ b/docs/documentation/webapps/cockpit/extend/plugins.md @@ -17,7 +17,7 @@ Please note that we updated the frontend plugin interface with Operaton Runtime Cockpit defines a plugin concept to add own functionality without being forced to extend or hack the Cockpit web application. You can add plugins at various plugin points, e.g., the processes dashboard as shown in the following example: -![Example img](/img/documentation/webapps/cockpit/extend/cockpit-plugin.png)Cockpit Plugin +![Example img](../../../../assets/documentation/webapps/cockpit/extend/cockpit-plugin.png)Cockpit Plugin ## The Nature of a Cockpit Plugin @@ -198,7 +198,7 @@ properties: { ### Navigation -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-navigation.png)Navigation +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-navigation.png)Navigation **Name:** `cockpit.navigation` @@ -216,7 +216,7 @@ properties: { **Name:** `cockpit.login` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-login-custom.png)Login +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-login-custom.png)Login The `cockpit.login` plugin point allows to add your custom views at the place where the web app renders the login form. @@ -226,7 +226,7 @@ This plugin point is available for all web apps. Just change the canonical app n **Name:** `cockpit.dashboard` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-dashboard-custom.png)Dashboard +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-dashboard-custom.png)Dashboard The `cockpit.dashboard` plugin point will allow to add your custom views at the bottom of the dashboard. @@ -234,31 +234,31 @@ The `cockpit.dashboard` plugin point will allow to add your custom views at the **Name:** `cockpit.dashboard.metrics` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-dashboard-metrics-view.png)Dashboard +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-dashboard-metrics-view.png)Dashboard ### Processes Dashboard **Name:** `cockpit.processes.dashboard` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-processes-dashboard.png)Dashboard +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-processes-dashboard.png)Dashboard ### Decisions Dashboard **Name:** `cockpit.decisions.dashboard` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-decisions-dashboard.png)Dashboard +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-decisions-dashboard.png)Dashboard ### Cases Dashboard **Name:** `cockpit.cases.dashboard` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-cases-dashboard.png)Dashboard +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-cases-dashboard.png)Dashboard ### Process Definition Runtime Tab **Name:** `cockpit.processDefinition.runtime.tab` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-process-definition-details.png)Process Definition Runtime Tab +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-process-definition-details.png)Process Definition Runtime Tab This plugin points properties contain the attribute `label`, which will be rendered in the navigation even when the plugin is not selected. @@ -276,7 +276,7 @@ This additional data is passed into the render function: **Name:** `cockpit.processInstance.runtime.tab` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-process-instance-details.png)Process Instance Runtime Tab +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-process-instance-details.png)Process Instance Runtime Tab This plugin points properties contain the attribute `label`, which will be rendered in the navigation even when the plugin is not selected. @@ -294,7 +294,7 @@ This additional data is passed into the render function: **Name:** `cockpit.processDefinition.runtime.action` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-process-definition-runtime-action.png)Process Definition Runtime Action +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-process-definition-runtime-action.png)Process Definition Runtime Action This additional data is passed into the render function: @@ -304,7 +304,7 @@ This additional data is passed into the render function: **Name:** `cockpit.processInstance.runtime.action` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-process-instance-runtime-action.png)Process Instance Runtime Action +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-process-instance-runtime-action.png)Process Instance Runtime Action This additional data is passed into the render function: @@ -314,19 +314,19 @@ This additional data is passed into the render function: **Name:** `cockpit.processDefinition.view` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-definition-view.png)Process Definition View +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-definition-view.png)Process Definition View ### Process Instance View **Name:** `cockpit.processInstance.view` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-instance-view.png)Process Instance View +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-instance-view.png)Process Instance View ### Process Definition Diagram Overlay **Name:** `cockpit.processDefinition.diagram.plugin` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-definition-diagram-overlay.png)Definition Diagram Overlay +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-definition-diagram-overlay.png)Definition Diagram Overlay Diagram overlay plugins are a little different from other plugins. This plugin point does not receive a DOM node to render into but an instance of the Diagram viewer to create an overlay. @@ -352,7 +352,7 @@ This additional data is passed into the render function: **Name:** `cockpit.processInstance.diagram.plugin` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-instance-diagram-overlay.png)Instance Diagram Overlay +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-instance-diagram-overlay.png)Instance Diagram Overlay Diagram overlay plugins are a little different from other plugins. This plugin point does not receive a DOM node to render into but an instance of the Diagram viewer to create an overlay. See [Process Definition Diagram Overlay](#process-definition-diagram-overlay) for an example. @@ -366,7 +366,7 @@ This additional data is passed into the render function: **Name:** `cockpit.jobDefinition.action` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-job-definition-action.png)Job Definition Action +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-job-definition-action.png)Job Definition Action This additional data is passed into the render function: @@ -376,7 +376,7 @@ This additional data is passed into the render function: **Name:** `cockpit.decisionDefinition.tab` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-tab.png)Decision Definition Tab +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-tab.png)Decision Definition Tab This plugin points properties contain the attribute `label`, which will be rendered in the navigation even when the plugin is not selected. @@ -394,7 +394,7 @@ This additional data is passed into the render function: **Name:** `cockpit.decisionDefinition.action` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-action.png)Decision Definition Action +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-action.png)Decision Definition Action This additional data is passed into the render function: @@ -404,7 +404,7 @@ This additional data is passed into the render function: **Name:** `cockpit.decisionDefinition.table` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-table.png)Decision Definition Table +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-table.png)Decision Definition Table Diagram overlay plugins are a little different from other plugins. This plugin point does not receive a DOM node to render into but an instance of the Diagram viewer to create an overlay. See [Process Definition Diagram Overlay](#process-definition-diagram-overlay) for an example. @@ -417,7 +417,7 @@ This additional data is passed into the render function: **Name:** `cockpit.decisionInstance.tab` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-tab.png)Decision Instance Tab +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-tab.png)Decision Instance Tab This plugin points properties contain the attribute `label`, which will be rendered in the navigation even when the plugin is not selected. @@ -435,7 +435,7 @@ This additional data is passed into the render function: **Name:** `cockpit.decisionInstance.action` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-action.png)Decision Instance Action +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-action.png)Decision Instance Action This additional data is passed into the render function: @@ -445,7 +445,7 @@ This additional data is passed into the render function: **Name:** `cockpit.decisionInstance.table` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-table.png)Decision Instance Table +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-table.png)Decision Instance Table Diagram overlay plugins are a little different from other plugins. This plugin point does not receive a DOM node to render into but an instance of the Diagram viewer to create an overlay. See [Process Definition Diagram Overlay](#process-definition-diagram-overlay) for an example. @@ -458,7 +458,7 @@ This additional data is passed into the render function: **Name:** `cockpit.caseDefinition.tab` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-tab.png)Case Definition Tab +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-tab.png)Case Definition Tab This plugin points properties contain the attribute `label`, which will be rendered in the navigation even when the plugin is not selected. @@ -476,7 +476,7 @@ This additional data is passed into the render function: **Name:** `cockpit.caseDefinition.action` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-action.png)Case Definition Action +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-action.png)Case Definition Action This plugin points properties contain the attribute `label`, which will be rendered in the navigation even when the plugin is not selected. @@ -494,13 +494,13 @@ This additional data is passed into the render function: **Name:** `cockpit.caseDefinition.diagram.overlay` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-diagram-overlay.png)Case Definition Diagram Overlay +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-diagram-overlay.png)Case Definition Diagram Overlay ### Case Definition Diagram Plugin **Name:** `cockpit.caseDefinition.diagram.plugin` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-diagram-overlay.png)Case Definition Diagram Overlay +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-diagram-overlay.png)Case Definition Diagram Overlay Diagram overlay plugins are a little different from other plugins. This plugin point does not receive a DOM node to render into but an instance of the Diagram viewer to create an overlay. See [Process Definition Diagram Overlay](#process-definition-diagram-overlay) for an example. @@ -513,7 +513,7 @@ This additional data is passed into the render function: **Name:** `cockpit.caseInstance.tab` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-tab.png)Case Instance Tab +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-tab.png)Case Instance Tab This plugin points properties contain the attribute `label`, which will be rendered in the navigation even when the plugin is not selected. @@ -531,7 +531,7 @@ This additional data is passed into the render function: **Name:** `cockpit.caseInstance.action` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-action.png)Case Instance Action +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-action.png)Case Instance Action This additional data is passed into the render function: @@ -541,13 +541,13 @@ This additional data is passed into the render function: **Name:** `cockpit.caseInstance.diagram.overlay` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-diagram-overlay.png)Case Instance Diagram Overlay +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-diagram-overlay.png)Case Instance Diagram Overlay ### Case Instance Diagram Plugin **Name:** `cockpit.caseInstance.diagram.plugin` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-diagram-overlay.png)Case Instance Diagram Overlay +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-diagram-overlay.png)Case Instance Diagram Overlay Diagram overlay plugins are a little different from other plugins. This plugin point does not receive a DOM node to render into but an instance of the Diagram viewer to create an overlay. See [Process Definition Diagram Overlay](#process-definition-diagram-overlay) for an example. @@ -561,7 +561,7 @@ This additional data is passed into the render function: **Name:** `cockpit.repository.resource.action` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-repository-resource-action.png)Repository Resource Action +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-repository-resource-action.png)Repository Resource Action This additional data is passed into the render function: @@ -572,7 +572,7 @@ This additional data is passed into the render function: **Name:** `cockpit.repository.resource.detail` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-repository-resource-detail.png)Repository Resource Detail +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-repository-resource-detail.png)Repository Resource Detail This additional data is passed into the render function: @@ -583,7 +583,7 @@ This additional data is passed into the render function: **Name:** `cockpit.tasks.dashboard` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-task-dashboard.png)Open Task Dashboard +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-task-dashboard.png)Open Task Dashboard ### Report View @@ -603,7 +603,7 @@ properties: { **Name:** `cockpit.batch.operation` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-batch-operation.png)Custom Plugin +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-batch-operation.png)Custom Plugin The render function can be used to create a form for custom payloads to your batch operation. @@ -645,7 +645,7 @@ export default { **Name:** `cockpit.incident.action` -![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-incident-action.png)Incident Action +![Example img](../../../../assets/documentation/webapps/cockpit/extend/plugin-point-incident-action.png)Incident Action This additional data is passed into the render function: diff --git a/docs/documentation/webapps/cockpit/reporting.md b/docs/documentation/webapps/cockpit/reporting.md index ab005c8..1165b07 100644 --- a/docs/documentation/webapps/cockpit/reporting.md +++ b/docs/documentation/webapps/cockpit/reporting.md @@ -10,7 +10,7 @@ You can use the reports section of cockpit to display custom statistics and repo ## Process Instance Duration Report -![Example img](/img/documentation/webapps/cockpit/duration-report.png)Process Instance Duration Report +![Example img](../../../assets/documentation/webapps/cockpit/duration-report.png)Process Instance Duration Report This report shows the average, minimum and maximum duration for a selected process definition and version for a given timeframe. Monthly and quarterly aggregation of the duration times are supported. You can hover over a bar in the bars chart to see the exact values below the chart. You can also switch to the table view to see the exact values for every month or quarter. @@ -18,7 +18,7 @@ Pressing the download buttons above the chart triggers the export of the results ## Completed Task Instance Report -![Example img](/img/documentation/webapps/cockpit/historic-task-instance-report.png)Historic Task Instance Report +![Example img](../../../assets/documentation/webapps/cockpit/historic-task-instance-report.png)Historic Task Instance Report This report contains two types of report. There is a completed tasks report which shows all tasks which are completed within a given timeframe. It is possible to group these tasks by task definition key or by process definition key. diff --git a/docs/documentation/webapps/cockpit/tasks-dashboard.md b/docs/documentation/webapps/cockpit/tasks-dashboard.md index 1d9d3af..5e88892 100644 --- a/docs/documentation/webapps/cockpit/tasks-dashboard.md +++ b/docs/documentation/webapps/cockpit/tasks-dashboard.md @@ -9,7 +9,7 @@ You can use the open tasks dashboard to see how the open tasks are distributed b Refer to the [Cockpit Plugins](../cockpit/extend/plugins.md) section for information about adding a custom open task dashboard plugin. -![Example img](/img/documentation/webapps/cockpit/task-dashboard.png)Open Task Dashboard +![Example img](../../../assets/documentation/webapps/cockpit/task-dashboard.png)Open Task Dashboard ## Open Tasks diff --git a/docs/documentation/webapps/tasklist/dashboard.md b/docs/documentation/webapps/tasklist/dashboard.md index b112d71..60b6733 100644 --- a/docs/documentation/webapps/tasklist/dashboard.md +++ b/docs/documentation/webapps/tasklist/dashboard.md @@ -10,21 +10,21 @@ menu: --- -![Example img](/img/documentation/webapps/tasklist/tasklist-dashboard-detail.png)Tasklist Dashboard +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-dashboard-detail.png)Tasklist Dashboard On the dashboard of Tasklist you see an overview of pending tasks. On the left side of the screen, an overview of the [filters][tasklist-filters] is displayed. On the upper right side of the screen, you can set a follow-up or due date, you can claim, unclaim and reassign tasks and you can add comments. Underneath that section, the embedded form is displayed (please note that external task forms cannot be displayed here), you can switch to the task history, you can see the diagram view or you can view the description of the user task. ## Toggle view -![Example img](/img/documentation/webapps/tasklist/tasklist-toggle-view.png)Tasklist View +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-toggle-view.png)Tasklist View Tasklist offers you the option of toggling the view options on the dashboard. You can select to have a focus on the [filters][tasklist-filters], the [filter results][filter-results], the [task view][task-view] or to display the full dashboard. To do so, hit the respective *toggle view* button. At any time, you can choose to instantly set full focus on the task view by hitting the *expand* button. ## Start a process -![Example img](/img/documentation/webapps/tasklist/tasklist-start-process.png)Start Process +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-start-process.png)Start Process To start a process instance via Tasklist, click on *Start process* in the header menu and select a process out of the displayed list of process definitions. If no process definitions are listed here, please verify that your process application is deployed correctly. @@ -33,7 +33,7 @@ Depending on whether you have defined a [start form](../../user-guide/task-forms ## Create a standalone task -![Example img](/img/documentation/webapps/tasklist/tasklist-start-task.png)Standalone Tasks +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-start-task.png)Standalone Tasks Tasklist offers you the possibility of creating standalone tasks. To do so, click on the *Create task* button. In the screen that appears, you can define a name of the task, the assignee and you can add a description. Once you click on *Save*, the task is created. @@ -42,7 +42,7 @@ Now the standalone task becomes visible in the filter results and can be handled ## Filter results -![Example img](/img/documentation/webapps/tasklist/tasklist-filter-results.png)Filter Results +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-filter-results.png)Filter Results Here you can see an overview of all tasks for the selected [filter][tasklist-filters]. The filter with the lowest priority is displayed first. After selecting the appropriate filter, you will see an overview of all tasks, sorted by a specified criteria (by default it is sorted by the creation date). You can change the sorting of the tasks by clicking on the name of the sorting property. You can toggle between ascending and descending order. @@ -53,7 +53,7 @@ To start working on the task, simply select the task. ### Search for tasks -![Example img](/img/documentation/webapps/tasklist/tasklist-task-search.png)Task Search +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-task-search.png)Task Search Above the filter results, you have the option of searching for user tasks within the selected filter results. To do so, click in the search box and select the parameters to search for. You can also begin typing to find the required parameter faster. Depending on the selected property, you have to specify the value of the property. Some properties also allow operators other than equal, e.g., `'like'`, which allows to search for a task where the entered value is a substring of the property value. The `'in'` operator allows you to provide a comma-separated list of possible values. @@ -64,7 +64,7 @@ If you are searching for a variable of type string, which has a numeric, boolean Furthermore, you can copy a link to the current search query to your clipboard by clicking on the button and you can save search queries to your local browser storage by clicking on the button and inserting a name in the drop down menu that appears. You can then retrieve the search query by clicking on the button and selecting the chosen name in the drop down menu. ### Case insensitive search -![Example img](/img/documentation/webapps/tasklist/tasklist-case-insensitive.png)Task Search +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-case-insensitive.png)Task Search Sometimes it is not relevant for your search whether the value is capitalized or not. For search queries for Process-, Task- and Case Variables, you can configure if the search should be performed case sensitive or case insensitive. A case insensitive search for `'Fruits Inc.'` will also return matches for values like `'fruits inc.'` or `'FRUITS Inc.'`. @@ -72,7 +72,7 @@ When your search contains one of the Variables mentioned above, two checkboxes a ### `IN` operator -![Example img](/img/documentation/webapps/tasklist/tasklist-in-operator.png)IN Operator +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-in-operator.png)IN Operator Tasklist provides `IN` operator support for the following query criteria: @@ -85,11 +85,11 @@ Occasionally, you may search for multiple query criterion values. The `IN` opera To use the `IN` operator, select a query criterion that supports the `IN` operator, and provide the values as a comma-separated list. To adjust the comma-separated list of values, start editing by clicking on the value. You can expand the value in a modal dialog for easier editing by clicking on the button. -![Example img](/img/documentation/webapps/tasklist/tasklist-in-operator-modal.png)IN Operator Modal +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-in-operator-modal.png)IN Operator Modal ## Task view -![Example img](/img/documentation/webapps/tasklist/tasklist-task-view.png)Task Detail View +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-task-view.png)Task Detail View On the right section of the dashboard, you can see the task view. Here you can work on tasks and perform the following operational actions. @@ -111,7 +111,7 @@ In Tasklist you can add and view comments on specific tasks. After selecting a t ## Task Detail Tabs -![Example img](/img/documentation/webapps/tasklist/tasklist-task-view-tabs.png)Detail Tabs +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-task-view-tabs.png)Detail Tabs In the lower section of the task view there are several tabs which can be selected to display both the task form itself and additional information related to this user task. diff --git a/docs/documentation/webapps/tasklist/filters.md b/docs/documentation/webapps/tasklist/filters.md index cecc018..101a414 100644 --- a/docs/documentation/webapps/tasklist/filters.md +++ b/docs/documentation/webapps/tasklist/filters.md @@ -11,7 +11,7 @@ menu: --- -![Example img](/img/documentation/webapps/tasklist/tasklist-create-filter.png)Create Filter +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-create-filter.png)Create Filter In Tasklist, you can create and select filters. You can use these filters to create lists of tasks, sorted by specified criteria. To create a filter, select *Create a Filter*. You will then see a screen as depicted in the above image. You have several options to configure your filter: @@ -33,7 +33,7 @@ Several of the filter criteria accept expressions as values. These expressions a ## Common Filters -![Example img](/img/documentation/webapps/tasklist/tasklist-filter-detail.png)Filter Details +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-filter-detail.png)Filter Details In the table below we list some of the more common and useful filters that you can create in Tasklist and how to set them up. diff --git a/docs/documentation/webapps/tasklist/task-lifecycle.md b/docs/documentation/webapps/tasklist/task-lifecycle.md index f7a933f..b0f6e94 100644 --- a/docs/documentation/webapps/tasklist/task-lifecycle.md +++ b/docs/documentation/webapps/tasklist/task-lifecycle.md @@ -13,4 +13,4 @@ menu: The diagram below shows the task lifecycle and supported transitions supported by Operaton. To get to know how to programmatically work with the lifecycle in your application, refer to the [Java-API Reference](org/operaton/bpm/engine/impl/TaskServiceImpl.html). -![Example img](/img/documentation/webapps/tasklist/tasklist-user-task-state-complete.png)User Task States +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-user-task-state-complete.png)User Task States diff --git a/docs/documentation/webapps/tasklist/tasklist-plugins.md b/docs/documentation/webapps/tasklist/tasklist-plugins.md index 1e66dc4..17c22e7 100644 --- a/docs/documentation/webapps/tasklist/tasklist-plugins.md +++ b/docs/documentation/webapps/tasklist/tasklist-plugins.md @@ -30,25 +30,25 @@ Here you can see the various points at which you are able to add your own plugin **Name:** `tasklist.navbar.action`. -![Example img](/img/documentation/webapps/tasklist/tasklist-plugin-navbar-action.png)Plugin Point +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-plugin-navbar-action.png)Plugin Point --- **Name:** `tasklist.task.action`. -![Example img](/img/documentation/webapps/tasklist/tasklist-plugin-task-action.png)Plugin Point +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-plugin-task-action.png)Plugin Point --- **Name:** `tasklist.header`. -![Example img](/img/documentation/webapps/tasklist/tasklist-plugin-tasklist-header.png)Plugin Point +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-plugin-tasklist-header.png)Plugin Point --- **Name:** `tasklist.task.detail`. -![Example img](/img/documentation/webapps/tasklist/tasklist-plugin-task-detail.png)Plugin Point +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-plugin-task-detail.png)Plugin Point This plugin points properties contain the attribute `label`, which will be rendered in the navigation even when the plugin is not selected. @@ -66,13 +66,13 @@ This additional data is passed into the render function: **Name:** `tasklist.list`. -![Example img](/img/documentation/webapps/tasklist/tasklist-plugin-list.png)Plugin Point +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-plugin-list.png)Plugin Point --- **Name:** `tasklist.card`. -![Example img](/img/documentation/webapps/tasklist/tasklist-plugin-card.png)Plugin Point +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-plugin-card.png)Plugin Point This additional data is passed into the render function: diff --git a/docs/documentation/webapps/tasklist/user-assignment.md b/docs/documentation/webapps/tasklist/user-assignment.md index df9a347..ff5b8f2 100644 --- a/docs/documentation/webapps/tasklist/user-assignment.md +++ b/docs/documentation/webapps/tasklist/user-assignment.md @@ -20,7 +20,7 @@ This works as follows: ## Implementing Initial Assignment -![Example img](/img/documentation/webapps/tasklist/tasklist-task-form-modeler.png)User Task Assignment +![Example img](../../../assets/documentation/webapps/tasklist/tasklist-task-form-modeler.png)User Task Assignment You can read up on how to implement the inital user assignment for BPMN User Tasks and CMMN Human Tasks in the corresponding reference sections: diff --git a/docs/documentation/webapps/welcome/welcome-plugins.md b/docs/documentation/webapps/welcome/welcome-plugins.md index a4bbdb5..660fe52 100644 --- a/docs/documentation/webapps/welcome/welcome-plugins.md +++ b/docs/documentation/webapps/welcome/welcome-plugins.md @@ -18,8 +18,8 @@ In addition to the [configurable custom links](../welcome/configuration.md), plu **Name:** `welcome.dashboard`. -![Example img](/img/documentation/webapps/welcome/welcome-dashboard-plugin.png)Plugin Point +![Example img](../../../assets/documentation/webapps/welcome/welcome-dashboard-plugin.png)Plugin Point **Name:** `welcome.profile`. -![Example img](/img/documentation/webapps/welcome/welcome-profile-plugin.png)Plugin Point +![Example img](../../../assets/documentation/webapps/welcome/welcome-profile-plugin.png)Plugin Point diff --git a/docs/get-started/archive/java-process-app/deploy.md b/docs/get-started/archive/java-process-app/deploy.md index ecd5086..0a20403 100644 --- a/docs/get-started/archive/java-process-app/deploy.md +++ b/docs/get-started/archive/java-process-app/deploy.md @@ -50,14 +50,14 @@ ENGINE-08050 Process application Loan Approval App successfully deployed Now use Cockpit to check if the process is successfully deployed. Go to [http://localhost:8080/operaton/app/cockpit](http://localhost:8080/operaton/app/cockpit). Log in with demo / demo. Your process *Loan Approval* is visible on the dashboard. -![Example image](/img/get-started/archive/java-process-app/cockpit-loan-approval.png) +![Example image](../../../assets/get-started/archive/java-process-app/cockpit-loan-approval.png) ## Start a Process Instance Next, go to Operaton Tasklist ([http://localhost:8080/operaton/app/tasklist](http://localhost:8080/operaton/app/tasklist)). Click on the **Start process** button to start a process instance. This opens a dialog where you can select *Loan Approval* from the list. Now you can set variables for the process instance using a generic form. -![Example image](/img/get-started/archive/java-process-app/start-form-generic.png) +![Example image](../../../assets/get-started/archive/java-process-app/start-form-generic.png) The generic form can be used whenever you have not added a dedicated form for a User Task or a Start Event. Click on the *Add a variable* button to get a new row. Fill in the form as shown in the screenshot. When you are done, click *Start*. @@ -68,11 +68,11 @@ If you now go back to [Operaton Cockpit](http://localhost:8080/operaton/app/cock To allow the user *john* to see the process definition *Loan Approval*, you have to go to Operaton Admin ([http://localhost:8080/operaton/app/admin/default/#/authorization?resource=6](http://localhost:8080/operaton/app/admin/default/#/authorization?resource=6)). Next, click on the button *Create new authorization* to add a new authorization on the resource *process definition*. Now you can give the user *john* all permissions on process definition *approve-loan*. When you are done, submit the new authorization. -![Example image](/img/get-started/archive/java-process-app/create-process-definition-authorization.png) +![Example image](../../../assets/get-started/archive/java-process-app/create-process-definition-authorization.png) Now create a second authorization for the *process instance* resource. Set the permission to *CREATE*. -![Example image](/img/get-started/archive/java-process-app/create-process-instance-authorization.png) +![Example image](../../../assets/get-started/archive/java-process-app/create-process-instance-authorization.png) For further details about authorizations and how to manage them, please read the following sections in the user guide: [Authorization Service](/docs/documentation/user-guide/process-engine/authorization-service) and [Authorization Management](/docs/documentation/webapps/admin/authorization-management). @@ -81,8 +81,8 @@ For further details about authorizations and how to manage them, please read the Log out of Admin. Go to Tasklist ([http://localhost:8080/operaton/app/tasklist](http://localhost:8080/operaton/app/tasklist)) and log back in with the user credentials "john / john". Now you see the *Approve Loan* task in your Tasklist. Select the task and click on the *Diagram* tab. This displays the process diagram highlighting the User Task that is waiting for you to work on it. -![Example image](/img/get-started/archive/java-process-app/diagram.png) +![Example image](../../../assets/get-started/archive/java-process-app/diagram.png) To work on the task, select the *Form* tab. Again, there is no task form associated with the process. Click on *Load Variables*. This displays the variables you have put in in the first step. -![Example image](/img/get-started/archive/java-process-app/task-form-generic.png) +![Example image](../../../assets/get-started/archive/java-process-app/task-form-generic.png) diff --git a/docs/get-started/archive/java-process-app/forms.md b/docs/get-started/archive/java-process-app/forms.md index 390c79e..d7d8aa9 100644 --- a/docs/get-started/archive/java-process-app/forms.md +++ b/docs/get-started/archive/java-process-app/forms.md @@ -25,11 +25,11 @@ Add a **Number Field**, set the **Field Label** to `Amount` and the **Key** to ` Save the form with the file name `request-loan.form` to `src/main/resources`. -.![Example image](/img/get-started/archive/java-process-app/form-builder-start-form.png) +.![Example image](../../../assets/get-started/archive/java-process-app/form-builder-start-form.png) Open the process with the modeler. Click on the start event. In the properties panel, click on `Forms` select `Operaton Forms` as type, insert `request-loan` into the `Form reference` field, and choose `latest` as binding. This means Tasklist uses the latest deployed version of the form. Save the diagram and refresh the Eclipse project. -![Example image](/img/get-started/archive/java-process-app/modeler-start-form.png) +![Example image](../../../assets/get-started/archive/java-process-app/modeler-start-form.png) ## Add a Task Form @@ -79,8 +79,8 @@ Before selecting the pom.xml in the Package Explorer of Eclipse and performing a Now you go to [Tasklist](http://localhost:8080/operaton/app/tasklist) and start a new process instance for the loan approval process. You will notice that the custom form is displayed. -![Example image](/img/get-started/archive/java-process-app/start-form-embedded.png) +![Example image](../../../assets/get-started/archive/java-process-app/start-form-embedded.png) After starting a new process instance a new task `Approve Loan` is assigned to john. To work on the task, select the task inside the list of tasks and you will also notice that the custom form is displayed. -![Example image](/img/get-started/archive/java-process-app/task-form-embedded.png) +![Example image](../../../assets/get-started/archive/java-process-app/task-form-embedded.png) diff --git a/docs/get-started/archive/java-process-app/model.md b/docs/get-started/archive/java-process-app/model.md index 071bf72..ff86c6b 100644 --- a/docs/get-started/archive/java-process-app/model.md +++ b/docs/get-started/archive/java-process-app/model.md @@ -18,14 +18,14 @@ In this section you learn how to create your first BPMN 2.0 process with the Cam Create a new BPMN diagram by clicking *File > New File > BPMN Diagram*. -![Example image](/img/get-started/archive/java-process-app/modeler-new-bpmn-diagram.png) +![Example image](../../../assets/get-started/archive/java-process-app/modeler-new-bpmn-diagram.png) ## Start with a Simple Process Start by modeling a simple process. -![Example image](/img/get-started/archive/java-process-app/modeler-step1.png) +![Example image](../../../assets/get-started/archive/java-process-app/modeler-step1.png) Double-click on the Start Event. A text box opens. Type "Loan Request Received". @@ -35,17 +35,17 @@ When editing Labels, you can add line breaks by hitting `Shift + Enter`. Click on the start event. From its context menu, select the activity shape (rectangle) and drag it to a good position. Name it *Approve Loan*. Change the activity type to *User Task* by clicking on it and using the wrench button. -![Example image](/img/get-started/archive/java-process-app/modeler-step2.png) +![Example image](../../../assets/get-started/archive/java-process-app/modeler-step2.png) Add an End Event named *Loan Request Approved*. -![Example image](/img/get-started/archive/java-process-app/modeler-step3.png) +![Example image](../../../assets/get-started/archive/java-process-app/modeler-step3.png) ## Configure a User Task -![Example image](/img/get-started/archive/java-process-app/modeler-step4.png) +![Example image](../../../assets/get-started/archive/java-process-app/modeler-step4.png) Next, Open the properties view. If it is not already visible then click on the label on the right hand side of your screen and the properties view will be displayed. @@ -57,7 +57,7 @@ When you are done, save your changes. ## Configure Properties for Execution -![Example image](/img/get-started/archive/java-process-app/modeler-step5.png) +![Example image](../../../assets/get-started/archive/java-process-app/modeler-step5.png) Since we are modeling an executable process, we should give it an ID and set the `isExecutable` property to `true`. On the right hand side of the canvas, you find the properties panel. Click on a free spot of the modeling canvas. This displays the properties of the process itself. diff --git a/docs/get-started/archive/java-process-app/project-setup.md b/docs/get-started/archive/java-process-app/project-setup.md index d74a0a7..80910c1 100644 --- a/docs/get-started/archive/java-process-app/project-setup.md +++ b/docs/get-started/archive/java-process-app/project-setup.md @@ -22,7 +22,7 @@ You don't have to setup the project manually but can also use a Maven Archetype In Eclipse, go to `File / New / Other ...`. This opens the *New Project Wizard*. In the *New Project Wizard* select `Maven / Maven Project`. Click Next. -![Example image](/img/get-started/archive/java-process-app/eclipse-new-project.png) +![Example image](../../../assets/get-started/archive/java-process-app/eclipse-new-project.png) On the first page of the *New Maven Project Wizard* select *Create a simple project (skip archetype selection)*. Click Next. diff --git a/docs/get-started/archive/java-process-app/service-task.md b/docs/get-started/archive/java-process-app/service-task.md index 57a543d..69cc089 100644 --- a/docs/get-started/archive/java-process-app/service-task.md +++ b/docs/get-started/archive/java-process-app/service-task.md @@ -21,8 +21,8 @@ In the last section of this tutorial we learn how to invoke a Java class from a Use the Camunda Modeler to add a service task after the user task. To do so, select the activity shape (rectangle) and drag it onto a sequence flow (see screenshot). Name it *Process Request*. Change the activity type to *Service Task* by clicking on it and using the wrench button. -![Example image](/img/get-started/archive/java-process-app/modeler-service-task1.png) -![Example image](/img/get-started/archive/java-process-app/modeler-service-task2.png) +![Example image](../../../assets/get-started/archive/java-process-app/modeler-service-task1.png) +![Example image](../../../assets/get-started/archive/java-process-app/modeler-service-task2.png) ## Add a JavaDelegate Implementation @@ -52,7 +52,7 @@ public class ProcessRequestDelegate implements JavaDelegate { Use the properties view to reference the service task in the process (see screenshot). You need to provide the fully qualified classname of your class in the *Java Class* property field. In our case this is `org.operaton.bpm.getstarted.loanapproval.ProcessRequestDelegate`. -![Example image](/img/get-started/archive/java-process-app/modeler-service-task3.png) +![Example image](../../../assets/get-started/archive/java-process-app/modeler-service-task3.png) Save the process model and update it in Eclipse. [Build](../deploy/#build-the-web-application-with-maven), [deploy](../deploy/#deploy-to-apache-tomcat) and [execute](../forms/#re-build-and-deploy) the process application. After completing the *Approve Loan* step, check the logfile of the Apache Tomcat server: diff --git a/docs/get-started/archive/javaee7/complete-process.md b/docs/get-started/archive/javaee7/complete-process.md index 2be9d3d..bc04157 100644 --- a/docs/get-started/archive/javaee7/complete-process.md +++ b/docs/get-started/archive/javaee7/complete-process.md @@ -19,7 +19,7 @@ In the last section of this tutorial we learn how to complete the BPMN 2.0 Proce ### Add Prepare Pizza Task Form -![Example image](/img/get-started/archive/javaee7/prepare-pizza.png) +![Example image](../../../assets/get-started/archive/javaee7/prepare-pizza.png) If the user approves the pizza order the pizza has to be prepared. So we add a user task form in which the user can confirm that preparation of the pizza has been completed. @@ -55,7 +55,7 @@ Go back to Eclipse and add a file named `preparepizza.xhtml` to the `src/main/we A new conversation is started again before the view is rendered and the task is completed after the form has been submitted. The form only contains a single button. -![Example image](/img/get-started/archive/javaee7/pizza-order-process-prepare-pizza.png) +![Example image](../../../assets/get-started/archive/javaee7/pizza-order-process-prepare-pizza.png) Open the process with Camunda Modeler. Click on the prepare pizza user task. In the properties view, set the `Form Key` property to `app:preparepizza.jsf`. @@ -96,7 +96,7 @@ public class OrderBusinessLogic { } ``` -![Example image](/img/get-started/archive/javaee7/pizza-order-process-send-rejection-email.png) +![Example image](../../../assets/get-started/archive/javaee7/pizza-order-process-send-rejection-email.png) Open the process with Camunda Modeler. Click on the reject email service task. In the properties view, set the `Expression` property to `${orderBusinessLogic.rejectOrder(execution)}`. diff --git a/docs/get-started/archive/javaee7/model.md b/docs/get-started/archive/javaee7/model.md index d208d9f..7dc5129 100644 --- a/docs/get-started/archive/javaee7/model.md +++ b/docs/get-started/archive/javaee7/model.md @@ -17,13 +17,13 @@ In this section we model our sample process with the Camunda Modeler. ## Create a new BPMN 2.0 Diagram -![Example image](/img/get-started/archive/javaee7/modeler-new-bpmn-diagram.png) +![Example image](../../../assets/get-started/archive/javaee7/modeler-new-bpmn-diagram.png) Open Camunda Modeler and create a new BPMN diagram by Clicking *File > New File > BPMN Diagram*. ### Create the Sample Pizza Order Process -![Example image](/img/get-started/archive/javaee7/pizza-order-process.png) +![Example image](../../../assets/get-started/archive/javaee7/pizza-order-process.png) The sample process models a pizza order approval. In the first service task, the order should be persisted to our database. The next step is the approval of the order by a user. Based on his decision, the pizza will be prepared or a rejection email is sent. @@ -31,9 +31,9 @@ Since we are modeling an executable process, we should give it an ID, a name and ### Configure Placeholder Expressions -![Example image](/img/get-started/archive/javaee7/pizza-order-process-expression.png) +![Example image](../../../assets/get-started/archive/javaee7/pizza-order-process-expression.png) -![Example image](/img/get-started/archive/javaee7/pizza-order-process-condition-expression.png) +![Example image](../../../assets/get-started/archive/javaee7/pizza-order-process-condition-expression.png) Additionally, you have to configure some placeholder expressions for the service tasks and the conditional sequence flows. Otherwise, you wouldn't be able to deploy this process on the process engine. Please set the `Expression` property of both service tasks to `${true}`. Also set the `Condition` property of the sequence flows after the exclusive gateway to `${true}`, respectively `${false}`. diff --git a/docs/get-started/archive/javaee7/project-setup.md b/docs/get-started/archive/javaee7/project-setup.md index 6551a7d..f61dd40 100644 --- a/docs/get-started/archive/javaee7/project-setup.md +++ b/docs/get-started/archive/javaee7/project-setup.md @@ -33,7 +33,7 @@ In the following sections, we go through this process step by step. ### Create a new Maven Project in Eclipse -![Example image](/img/get-started/archive/javaee7/maven-project-settings.png) +![Example image](../../../assets/get-started/archive/javaee7/maven-project-settings.png) In Eclipse, go to `File / New / Other ...`. This opens the *New Project Wizard*. In the *New Project Wizard* select `Maven / Maven Project`. Click Next. diff --git a/docs/get-started/archive/javaee7/service-task.md b/docs/get-started/archive/javaee7/service-task.md index 9799f5e..a7d30a7 100644 --- a/docs/get-started/archive/javaee7/service-task.md +++ b/docs/get-started/archive/javaee7/service-task.md @@ -163,7 +163,7 @@ public class OrderBusinessLogic { ### Configure the EJB in the Process -![Example image](/img/get-started/archive/javaee7/pizza-order-process-service-task-expression.png) +![Example image](../../../assets/get-started/archive/javaee7/pizza-order-process-service-task-expression.png) Use the properties view of the Persist Service Task in the process (see screenshot). You need to enter `${orderBusinessLogic.persistOrder(execution)}` as the `Expression` property. This will call the `persistOrder` method of the named EJB with the current execution as parameter. diff --git a/docs/get-started/archive/javaee7/start-form.md b/docs/get-started/archive/javaee7/start-form.md index 018af22..c70ee51 100644 --- a/docs/get-started/archive/javaee7/start-form.md +++ b/docs/get-started/archive/javaee7/start-form.md @@ -83,7 +83,7 @@ When the form is submitted, the `camundaTaskForm.completeProcessInstanceForm()` ## Configure the Start Form in the Process -![Example image](/img/get-started/archive/javaee7/pizza-order-process-start-form.png) +![Example image](../../../assets/get-started/archive/javaee7/pizza-order-process-start-form.png) Open the process with Camunda Modeler. Click on the start event. In the properties view, set the `Form Key` property to `app:placeorder.jsf`. This means that we want to use an external JSF form and that the form is loaded from the application. diff --git a/docs/get-started/archive/javaee7/task-form.md b/docs/get-started/archive/javaee7/task-form.md index 8e49b6a..3edbd5d 100644 --- a/docs/get-started/archive/javaee7/task-form.md +++ b/docs/get-started/archive/javaee7/task-form.md @@ -14,7 +14,7 @@ menu: Now we add a task form and configure it in the BPMN 2.0 process, then, re-deploy the application and go to the Operaton Tasklist to see the JSF form. -![Example image](/img/get-started/archive/javaee7/approve-order.png) +![Example image](../../../assets/get-started/archive/javaee7/approve-order.png) After the order has been persisted, a user can approve the order. For that, a task form is needed to display the order information and backend logic to fetch and update business objects. @@ -163,14 +163,14 @@ On form submit, the `approveOrderController.submitForm()` method calls the EJB ` ## Configure the Task Form in the Process -![Example image](/img/get-started/archive/javaee7/pizza-order-process-task-form.png) +![Example image](../../../assets/get-started/archive/javaee7/pizza-order-process-task-form.png) Open the process with the modeler. Click on the *Approve Order* user task. In the properties view, set the `Form Key` property to `app:approveorder.jsf`. This means that we want to use an external JSF form and that the form is loaded from the application. ## Configure the Conditional Sequence Flows in the Process -![Example image](/img/get-started/archive/javaee7/pizza-order-process-no.png) +![Example image](../../../assets/get-started/archive/javaee7/pizza-order-process-no.png) Open the process with the modeler. In the properties view, set the `Condition` property of the conditional sequence flows after the exclusive gateway to `${orderBusinessLogic.getOrder(orderId).approved}` respectively `${not orderBusinessLogic.getOrder(orderId).approved}`. diff --git a/docs/get-started/archive/spring/project-setup.md b/docs/get-started/archive/spring/project-setup.md index b8b352f..daff830 100644 --- a/docs/get-started/archive/spring/project-setup.md +++ b/docs/get-started/archive/spring/project-setup.md @@ -30,7 +30,7 @@ In the following sections, we go through this process step by step. First, we set up a new Apache Maven based project in Eclipse. Let's call it *loanapproval-spring*. The screenshot below illustrates the settings we choose. As we are deploying a web application, make sure to select `Packaging: war`. -![Example image](/img/get-started/archive/spring/eclipse-new-project.png) +![Example image](../../../assets/get-started/archive/spring/eclipse-new-project.png) When you are done, click Finish. Eclipse sets up a new Maven project. The project appears in the *Project Explorer* view. @@ -176,7 +176,7 @@ public class LoanApplicationContext { Congratulations, you have completed the project setup. Your project should now look as depicted in the screenshot to the left. -![Example image](/img/get-started/archive/spring/project-layout-after-setup.png) +![Example image](../../../assets/get-started/archive/spring/project-layout-after-setup.png) You can now perform a full Maven build and deploy the project to a vanilla Apache Tomcat server. You should see the following log output: diff --git a/docs/get-started/archive/spring/service-task.md b/docs/get-started/archive/spring/service-task.md index 14638a7..4318d84 100644 --- a/docs/get-started/archive/spring/service-task.md +++ b/docs/get-started/archive/spring/service-task.md @@ -29,7 +29,7 @@ model and interact with the process form inside our Spring beans. In this sectio Start by modeling an executable process using the Camunda Modeler. The process should look as depicted in the screenshot below. -![Example image](/img/get-started/archive/spring/process-model.png) +![Example image](../../../assets/get-started/archive/spring/process-model.png) :::note[Hint] If you are unfamiliar with modeling an executable process, you can read the @@ -108,7 +108,7 @@ public class LoanApplicationContext { ### Invoke a Spring Bean from a BPMN 2.0 Service Task -![Example image](/img/get-started/archive/spring/service-task.png) +![Example image](../../../assets/get-started/archive/spring/service-task.png) Referencing a Spring Bean from a BPMN 2.0 Service Task is simple. As shown in the screenshot above, we have to select the service task in the Camunda Modeler and provide an expression. Set *Implementation Type* to *Delegate Expression* and type `${calculateInterestService}` in the *Delegate Expression* field. Again, save the model and refresh the Eclipse project. diff --git a/docs/get-started/dmn/deploy.md b/docs/get-started/dmn/deploy.md index a6cb411..9108a61 100644 --- a/docs/get-started/dmn/deploy.md +++ b/docs/get-started/dmn/deploy.md @@ -82,18 +82,18 @@ ENGINE-08050 Process application Dinner App DMN successfully deployed Now, use Cockpit to check if the decision table is successfully deployed. Go to [http://localhost:8080/operaton/app/cockpit](http://localhost:8080/operaton/app/cockpit). Log in with *demo / demo*. Go to "Decisions" section. Your decision table *Dish* should be listed as deployed decision definition. -![Example image](/img/get-started/dmn/cockpit-dish-dmn.png) +![Example image](../../assets/get-started/dmn/cockpit-dish-dmn.png) ## Verify the Evaluation with Cockpit Click on the decision *Dish*. This opens a dialog where you see when the decision table was evaluated. -![Example image](/img/get-started/dmn/cockpit-decision-overview-dish-dmn.png) +![Example image](../../assets/get-started/dmn/cockpit-decision-overview-dish-dmn.png) If you click on the id, you can see the historic data of the evaluation. The matched rules are highlighted and the input and output values are listed in the table below. -![Example image](/img/get-started/dmn/cockpit-decision-history-dish-dmn.png) +![Example image](../../assets/get-started/dmn/cockpit-decision-history-dish-dmn.png) Verify that the 5th rule was matched and the output value for the desired dish is "Stew". diff --git a/docs/get-started/dmn/drg.md b/docs/get-started/dmn/drg.md index 18d8a35..2ad568e 100644 --- a/docs/get-started/dmn/drg.md +++ b/docs/get-started/dmn/drg.md @@ -23,24 +23,24 @@ The visual representation of a Decision Requirements Graph (DRG) is called Decis Open the *Dish* decision table from the previous step. Click on the button "View DRD" to see the Decision Requirements Diagram (DRD). It contains a single decision with the name *Dish*. -![Example image](/img/get-started/dmn/modeler-drd-step1.png) +![Example image](../../assets/get-started/dmn/modeler-drd-step1.png) ## Set the Name and the Id of the DRD Click somewhere on the canvas and open the Property Panel on the right. Change the [id](/docs/documentation/reference/dmn/drg/#decision-requirements-graph-id) of the DRD to "dinnerDecisions". Next, change the [name](/docs/documentation/reference/dmn/drg/#decision-requirements-graph-name) of the DRD to "Dinner Decisions". -![Example image](/img/get-started/dmn/modeler-drd-step2.png) +![Example image](../../assets/get-started/dmn/modeler-drd-step2.png) ## Create a new Decision in the DRD Click on the decision icon of the palette to create a new decision. Then, double-click on the decision and type *Beverages* to set the name. Change the type of the decision to *Decision Table* by clicking on the wrench icon next to the "Beverages" decision and selecting "Decision Table". Use the Property Panel on the right side again to set the id to "beverages". -![Example image](/img/get-started/dmn/modeler-drd-step3.png) +![Example image](../../assets/get-started/dmn/modeler-drd-step3.png) Next, connect the *Dish* decision to the *Beverages* decision to indicate that the *Dish* decision is a [required decision](/docs/documentation/reference/dmn/drg/#required-decisions) of the *Beverages* decision. That means that it is used as an input for the decision and the output value "desiredDish" can be accessed there. -![Example image](/img/get-started/dmn/modeler-drd-step4.png) +![Example image](../../assets/get-started/dmn/modeler-drd-step4.png) Click on the top left icon of the *Beverages* decision to open the decision table. @@ -55,7 +55,7 @@ Configure the *Beverages* decision table so that it has: Then, fill the table with the rules. -![Example image](/img/get-started/dmn/modeler-drd-step5.png) +![Example image](../../assets/get-started/dmn/modeler-drd-step5.png) Save your changes and replace the existing DMN file in the `src/main/resources` folder. @@ -128,11 +128,11 @@ ENGINE-08050 Process application Dinner App DMN successfully deployed Now, open [Cockpit](http://localhost:8080/operaton/app/cockpit) and go to the "Decisions" section. -![Example image](/img/get-started/dmn/cockpit-decision-overview-beverages-dmn.png) +![Example image](../../assets/get-started/dmn/cockpit-decision-overview-beverages-dmn.png) Then, click on the decision *Beverages* and select an id to see the historic data of the evaluation. -![Example image](/img/get-started/dmn/cockpit-decision-history-beverages-dmn.png) +![Example image](../../assets/get-started/dmn/cockpit-decision-history-beverages-dmn.png) Verify that both rules were matched and the output value for the beverages is "Guiness" and "Water". diff --git a/docs/get-started/dmn/model.md b/docs/get-started/dmn/model.md index 88c9b3f..b0c1058 100644 --- a/docs/get-started/dmn/model.md +++ b/docs/get-started/dmn/model.md @@ -21,24 +21,24 @@ Now start up the Camunda Modeler. Create a new DMN diagram by clicking *File > New File > DMN Diagram*. -![Example image](/img/get-started/dmn/modeler-new-dmn-table.png) +![Example image](../../assets/get-started/dmn/modeler-new-dmn-table.png) ## Start with the Table Header Start by setting the name and the id of the decision. Select the decision, open the Properties Panel on the right side and change the text to "dish" as the technical [id of the decision](/docs/documentation/reference/dmn/decision-table/#decision-id) which is used to reference the decision inside the process application. -![Example image](/img/get-started/dmn/modeler-step1.png) +![Example image](../../assets/get-started/dmn/modeler-step1.png) Next, click on the field below and set the [name of the decision](/docs/documentation/reference/dmn/decision-table/#decision-name) to "Dish". Now drill down into the decision table of the newly created decision by clicking the table icon on top of the decision. -![Example image](/img/get-started/dmn/modeler-step2a.png) +![Example image](../../assets/get-started/dmn/modeler-step2a.png) To set the [label of the input](/docs/documentation/reference/dmn/decision-table/input/#input-label) double-click on the field under "When" and type "Season" in the uppermost field. Same for the [output label](/docs/documentation/reference/dmn/decision-table/output/#output-label), double-click on the field under "Then" and type "Dish" in the uppermost field. -![Example image](/img/get-started/dmn/modeler-step2b.png) +![Example image](../../assets/get-started/dmn/modeler-step2b.png) ## Configure the Input Expression and the Output Name @@ -46,7 +46,7 @@ Assuming that the input value for "Season" is provided by a variable with name " Double-click on the "Season" field. In the modal menu that pops up, set "season" as expression and close it. -![Example image](/img/get-started/dmn/modeler-step3.png) +![Example image](../../assets/get-started/dmn/modeler-step3.png) Next, double-click on the "Dish" field and set "desiredDish" as [output name](/docs/documentation/reference/dmn/decision-table/output/#output-name). @@ -56,7 +56,7 @@ Assuming that the input value for "Season" is provided as String, the [type of t Double-click on the "Season" column header. Open the "Type" dropdown-menu in the modal menu and select "string". -![Example image](/img/get-started/dmn/modeler-step4.png) +![Example image](../../assets/get-started/dmn/modeler-step4.png) Same for the [output type](/docs/documentation/reference/dmn/decision-table/output/#output-type-definition), double-click on the "Dish" column header and choose "string" as type. @@ -66,7 +66,7 @@ Now, add the first [rule](/docs/documentation/reference/dmn/decision-table/rule/ Click on the "+" button at the bottom of the table or just click anywhere on the last row. In the row that was added, type "Fall" in the input column and "Spareribs" in the output column. -![Example image](/img/get-started/dmn/modeler-step5.png) +![Example image](../../assets/get-started/dmn/modeler-step5.png) "Fall" is the condition (i.e., [input entry](/docs/documentation/reference/dmn/decision-table/rule/#input-entry-condition)) of the rule. It is an expression in [FEEL](/docs/documentation/reference/dmn/feel/) which is applied and then checks if the input value (i.e., the variable "season") is equal to "Fall". @@ -74,7 +74,7 @@ Click on the "+" button at the bottom of the table or just click anywhere on the Next, add a second input "How many guests" with the input expression "guestCount" and type "integer". Fill the table with additional rules for the remaining seasons. -![Example image](/img/get-started/dmn/modeler-step6.png) +![Example image](../../assets/get-started/dmn/modeler-step6.png) ## Configure the Hit Policy @@ -82,7 +82,7 @@ Set the [hit policy](/docs/documentation/reference/dmn/decision-table/hit-policy Click on the "Hit Policy" dropdown and choose the hit policy "UNIQUE". -![Example image](/img/get-started/dmn/modeler-step7.png) +![Example image](../../assets/get-started/dmn/modeler-step7.png) :::note[Default Hit Policy] The default hit policy is "UNIQUE". If your rules are disjunct so only one rule can match then you don't need to change the hit policy. @@ -92,7 +92,7 @@ The default hit policy is "UNIQUE". If your rules are disjunct so only one rule When you are done, save your changes by clicking *File > Save File As..*. In the dialogue that pops up, navigate to the application project directory (by default this is in your Eclipse workspace path). In the project directory, place the model in the `src/main/resources` folder. -![Example image](/img/get-started/dmn/modeler-save-dmn-table.png) +![Example image](../../assets/get-started/dmn/modeler-save-dmn-table.png) Return to Eclipse. Right-click the project folder and click *Refresh*. This synchronizes the new DMN file with Eclipse. diff --git a/docs/get-started/dmn/project-setup.md b/docs/get-started/dmn/project-setup.md index 91dc574..210d965 100644 --- a/docs/get-started/dmn/project-setup.md +++ b/docs/get-started/dmn/project-setup.md @@ -29,7 +29,7 @@ You don't have to setup the project manually but can also use a Maven Archetype In Eclipse, go to `File / New / Other ...`. This opens the *New Project Wizard*. In the *New Project Wizard* select `Maven / Maven Project`. Click Next. -![Example image](/img/get-started/dmn/eclipse-new-project.png) +![Example image](../../assets/get-started/dmn/eclipse-new-project.png) On the first page of the *New Maven Project Wizard* select *Create a simple project (skip archetype selection)*. Click Next. diff --git a/docs/get-started/quick-start/decision-automation.md b/docs/get-started/quick-start/decision-automation.md index 9b85253..059ff99 100644 --- a/docs/get-started/quick-start/decision-automation.md +++ b/docs/get-started/quick-start/decision-automation.md @@ -12,47 +12,47 @@ In this section, you'll learn how to add decision automation to your process by ## Add a Business Rule Task to the Process Use the Camunda Modeler to open the Payment Retrieval process then click on the Approve Payment Task. Change the activity type to *Business Rule Task* in the wrench button menu. -![Example image](/img/get-started/quick-start/modeler-businessrule-task1.png) +![Example image](../../assets/get-started/quick-start/modeler-businessrule-task1.png) Next, link the Business Rule Task to a DMN table by changing `Implementation` to `DMN` and `Decision Ref` to `approve-payment` in the properties panel. In order to retrieve the result of the evaluation and save it automatically as a process instance variable in our process, we also need to change the `Result Variable` to `approved` and use `singleEntry` as the `Map Decision Result` in the properties panel. -![Example image](/img/get-started/quick-start/modeler-businessrule-task2.png) +![Example image](../../assets/get-started/quick-start/modeler-businessrule-task2.png) Save your changes and deploy the updated process using the `Deploy` Button in the Camunda Modeler. ## Create a DMN table using the Camunda Modeler First, create a new DMN diagram by clicking *File > New File > DMN Diagram*. -![Example image](/img/get-started/quick-start/modeler-new-dmn-diagram.png) +![Example image](../../assets/get-started/quick-start/modeler-new-dmn-diagram.png) Now the newly created diagram will already have a decision element added to it. Select it by clicking it and then give it a name of *Approve Payment* and an ID of `approve-payment` (the decision ID must match the the `Decision Ref` in your BPMN process). -![Example image](/img/get-started/quick-start/modeler-new-dmn-diagram-properties.png) +![Example image](../../assets/get-started/quick-start/modeler-new-dmn-diagram-properties.png) Next, create a new DMN table by clicking the table button. -![Example image](/img/get-started/quick-start/modeler-new-dmn-table.png) +![Example image](../../assets/get-started/quick-start/modeler-new-dmn-table.png) ## Specify the DMN table First, specify the input expressions for the DMN table. In this example, we'll decide whether a payment is approved based on the item name. Your rules can also make use of the FEEL Expression Language, JUEL or Script. If you like, you can [read more about Expressions in the DMN Engine](/docs/documentation/user-guide/dmn-engine/expressions-and-scripts/). Double click *Input* to configure the input column. Use `Item` as the *Input Label* and `item` as the *Input Expression*: -![Example image](/img/get-started/quick-start/modeler-dmn2.png) +![Example image](../../assets/get-started/quick-start/modeler-dmn2.png) Next, set up the output column. Use `Approved` as the *Output Label* and `approved` as the *Output Name* for the output column "Approved": -![Example image](/img/get-started/quick-start/modeler-dmn3.png) +![Example image](../../assets/get-started/quick-start/modeler-dmn3.png) Let's create some rules by clicking on the plus icon on the left side of the DMN table. We should also change the Output Column to the Data Type `boolean`: -![Example image](/img/get-started/quick-start/modeler-dmn4.png) +![Example image](../../assets/get-started/quick-start/modeler-dmn4.png) After setup, your DMN table should look like this: -![Example image](/img/get-started/quick-start/modeler-dmn5.png) +![Example image](../../assets/get-started/quick-start/modeler-dmn5.png) ## Deploy the DMN table To deploy the Decision Table, click on the Deploy button in the Camunda Modeler, give it Deployment Name "Payment Retrieval Decision", then hit the Deploy button. -![Example image](/img/get-started/quick-start/modeler-dmn6.png) +![Example image](../../assets/get-started/quick-start/modeler-dmn6.png) ## Verify the Deployment with Cockpit Now, use Cockpit to see if the decision table was successfully deployed. Go to [http://localhost:8080/operaton/app/cockpit/](http://localhost:8080/operaton/app/cockpit/). Log in with the credentials *demo / demo*. Navigate to the "Decisions" section. Your decision table *Approve Payment* should be listed as deployed decision definition. -![Example image](/img/get-started/quick-start/cockpit-approve-payment.png) +![Example image](../../assets/get-started/quick-start/cockpit-approve-payment.png) ## Inspect using Cockpit and Tasklist @@ -61,19 +61,19 @@ To do so, go to [http://localhost:8080/operaton/app/tasklist/](http://localhost: Click on the Start process button to start a process instance and choose the `Payment` process. Use the generic form to add the variables as follows: -![Example image](/img/get-started/quick-start/tasklist-dmn1.png) +![Example image](../../assets/get-started/quick-start/tasklist-dmn1.png) Hit the Start Instance button. Next, click again on the Start process button to start another process instance and choose the `Payment` process. Use the generic form to add the variables as follows: -![Example image](/img/get-started/quick-start/tasklist-dmn2.png) +![Example image](../../assets/get-started/quick-start/tasklist-dmn2.png) You'll see that depending on the input, the worker will either charge or not charge the credit card. You can also verify that the DMN tables were evaluated by using Operaton Cockpit. Go to [http://localhost:8080/operaton/app/cockpit/](http://localhost:8080/operaton/app/cockpit/). Log in with the credentials *demo / demo*. Navigate to the "Decisions" section and click on Approve Payment. Check the different Decision Instances that were evaluated by clicking on the ID in the table. A single DMN table that was executed could look like this in Operaton Cockpit: -![Example image](/img/get-started/quick-start/cockpit-dmn-table.png) +![Example image](../../assets/get-started/quick-start/cockpit-dmn-table.png) :::note[Success!] Congratulations! You've successfully completed the Operaton Platform Quick Start. Ready to continue? We recommend the [Operaton Platform documentation](https://docs.operaton.org/docs/documentation/). diff --git a/docs/get-started/quick-start/deploy.md b/docs/get-started/quick-start/deploy.md index dd73d4a..9ebb2bf 100644 --- a/docs/get-started/quick-start/deploy.md +++ b/docs/get-started/quick-start/deploy.md @@ -17,10 +17,10 @@ BPMN diagrams must be created for the process engine they intend to be deployed In order to deploy the Process, click on the deploy button in the Camunda Modeler, then give it the Deployment Name "Payment Retrieval" and click the Deploy button. From version 3.0.0 on, you will be required to provide an URL for an Endpoint Configuration along with Deployment Details. This can be either the root endpoint to the REST API (e.g. `http://localhost:8080/engine-rest`) or an exact endpoint to the deployment creation method (e.g. `http://localhost:8080/engine-rest/deployment/create`). -![Example image](/img/get-started/quick-start/modeler-deploy1.png) -![Example image](/img/get-started/quick-start/modeler-deploy2.png) +![Example image](../../assets/get-started/quick-start/modeler-deploy1.png) +![Example image](../../assets/get-started/quick-start/modeler-deploy2.png) You should see a success message in the Camunda Modeler: -![Example image](/img/get-started/quick-start/modeler-deploy3.png) +![Example image](../../assets/get-started/quick-start/modeler-deploy3.png) More details regarding the deployment from Camunda Modeler you can find [here](https://blog.camunda.com/post/2019/01/camunda-modeler-3.0.0-0-released/#completely-reworked-deployment-tool). For Camunda Modeler 2.2.4 and earlier, read [this blog post](https://blog.operaton.com/post/2018/03/camunda-modeler-1120-alpha-3-released/). @@ -28,7 +28,7 @@ More details regarding the deployment from Camunda Modeler you can find [here](h Next, use Cockpit to see if the process was successfully deployed. Go to [http://localhost:8080/operaton/app/cockpit/](http://localhost:8080/operaton/app/cockpit/) and log in with the credentials demo / demo. Your process *Payment Retrieval* should be visible on the dashboard. -![Example image](/img/get-started/quick-start/cockpit-payment-retrieval.png) +![Example image](../../assets/get-started/quick-start/cockpit-payment-retrieval.png) ## Start a Process Instance @@ -71,7 +71,7 @@ The JSON Body should look like this: Here's what the request might look like in Postman: -![Example image](/img/get-started/quick-start/postman-start-instance.png) +![Example image](../../assets/get-started/quick-start/postman-start-instance.png) In your worker console (which we started in the previous section), you should now see an output. This means you have successfully started and executed your first simple process. diff --git a/docs/get-started/quick-start/gateway.md b/docs/get-started/quick-start/gateway.md index 7c4cb4d..e75626a 100644 --- a/docs/get-started/quick-start/gateway.md +++ b/docs/get-started/quick-start/gateway.md @@ -16,10 +16,10 @@ We want to modify our process so that it's more dynamic. To do so, open the process in the Camunda Modeler. Next, from the Modeler's left-hand menu, select the gateway shape (diamond) and drag it into position between the Start Event and the Service Task. Use the create space tool again as needed. Move the User Task down and add another Gateway after it. Lastly, adjust the Sequence Flows so that the model looks like this: -![Example image](/img/get-started/quick-start/modeler-gateway1.png) +![Example image](../../assets/get-started/quick-start/modeler-gateway1.png) Now also name the new elements accordingly: -![Example image](/img/get-started/quick-start/modeler-gateway2.png) +![Example image](../../assets/get-started/quick-start/modeler-gateway2.png) ## Configure the Gateways @@ -27,19 +27,19 @@ Next, open the properties panel and select the `<1000 โ‚ฌ` Sequence Flow after t Scroll to the property named `Condition Type` and change it to `Expression`. Then input `${amount<1000}` as the Expression. We are using the [Java Unified Expression Language](https://docs.operaton.org/docs/documentation/user-guide/process-engine/expression-language/) to evaluate the Gateway. -![Example image](/img/get-started/quick-start/modeler-gateway3.png) +![Example image](../../assets/get-started/quick-start/modeler-gateway3.png) Next, change the Expressions for the other Sequence Flows, too. For the `$\geq$1000 โ‚ฌ` Sequence Flow, use the Expression `${amount$\geq$1000}`: -![Example image](/img/get-started/quick-start/modeler-gateway4.png) +![Example image](../../assets/get-started/quick-start/modeler-gateway4.png) For the `Yes` Sequence Flow, use the Expression `${approved}`: -![Example image](/img/get-started/quick-start/modeler-gateway5.png) +![Example image](../../assets/get-started/quick-start/modeler-gateway5.png) For the `No` Sequence Flow, use the Expression `${!approved}`: -![Example image](/img/get-started/quick-start/modeler-gateway6.png) +![Example image](../../assets/get-started/quick-start/modeler-gateway6.png) ## Deploy the Process @@ -51,7 +51,7 @@ Go to Tasklist ([http://localhost:8080/operaton/app/tasklist/](http://localhost: Click on the Start process button to start a process instance for the *Payment Retrieval* Process. Next, set variables for the process instance using the generic form as we learned in the *User Tasks* section. -![Example image](/img/get-started/quick-start/start-form-generic.png) +![Example image](../../assets/get-started/quick-start/start-form-generic.png) Fill in the form as shown in the screenshot and make sure you use an amount that is larger or equal to 1000 in order to see the User Task *Approve Payment*. When you are done, click *Start*. diff --git a/docs/get-started/quick-start/service-task.md b/docs/get-started/quick-start/service-task.md index 35a5ee9..2f789cc 100644 --- a/docs/get-started/quick-start/service-task.md +++ b/docs/get-started/quick-start/service-task.md @@ -13,13 +13,13 @@ In this section, you'll learn how to create your first BPMN 2.0 process with the Create a new BPMN diagram by clicking *File > New File > BPMN Diagram (Operaton Platform)*. -![Example image](/img/get-started/quick-start/modeler-new-bpmn-diagram.png) +![Example image](../../assets/get-started/quick-start/modeler-new-bpmn-diagram.png) ### Start with a Simple Process Start by modeling a simple process. -![Example image](/img/get-started/quick-start/modeler-step1.png) +![Example image](../../assets/get-started/quick-start/modeler-step1.png) Double-click on the Start Event. A text box will open. Name the Start Event "Payment Retrieval Requested". @@ -29,11 +29,11 @@ When editing Labels, you can add line breaks using `Shift + Enter`. Click on the start event. From its context menu, select the activity shape (rounded rectangle). It will be placed automatically on the canvas, and you can drag it to your preferred position. Name it *Charge Credit Card*. Change the activity type to *Service Task* by clicking on the activity shape and using the wrench button. -![Example image](/img/get-started/quick-start/modeler-step2.png) +![Example image](../../assets/get-started/quick-start/modeler-step2.png) Add an End Event named *Payment Received*. -![Example image](/img/get-started/quick-start/modeler-step3.png) +![Example image](../../assets/get-started/quick-start/modeler-step3.png) ### Configure the Service Task @@ -41,11 +41,11 @@ Add an End Event named *Payment Received*. There are different ways to [execute service tasks](https://docs.operaton.org/docs/documentation/reference/bpmn20/tasks/service-task/) using Operaton Platform. In this guide, we'll use the external [task pattern](https://docs.operaton.org/docs/documentation/user-guide/process-engine/external-tasks/). Open the Properties Panel within the Camunda Modeler and click on the Service Task you just created. Change the Implementation to `External` and use `charge-card` as the Topic. -![Example image](/img/get-started/quick-start/modeler-step4.png) +![Example image](../../assets/get-started/quick-start/modeler-step4.png) ### Configure Properties for Execution -![Example image](/img/get-started/quick-start/modeler-step5.png) +![Example image](../../assets/get-started/quick-start/modeler-step5.png) Because we're modeling an executable process, we should give it an *ID* and set the `isExecutable` property to `true`. On the right-hand side of the canvas, you find the properties panel. When you click on empty space on the modeling canvas, the properties panel will display the properties of the process itself. @@ -98,7 +98,7 @@ On the first page of the New Maven Project Wizard, select Create a simple projec On the second page (see screenshot), configure the Maven coordinates for the project. Since we are setting up a JAR Project, make sure to select Packaging: jar. -![Example image](/img/get-started/quick-start/eclipse-new-project.png) +![Example image](../../assets/get-started/quick-start/eclipse-new-project.png) When you're done, click Finish. Eclipse will set up a new Maven project. The project appears in the Project Explorer View. diff --git a/docs/get-started/quick-start/user-task.md b/docs/get-started/quick-start/user-task.md index ebf82c0..aaa5e8a 100644 --- a/docs/get-started/quick-start/user-task.md +++ b/docs/get-started/quick-start/user-task.md @@ -18,10 +18,10 @@ To do so, open the process in the Camunda Modeler. Select the create/remove space tool || from the Modeler's left-hand menu, and use it to create space between the Start Event and the "Charge Credit Card" Service Task (click and drag the cursor to the right). Next, from the Modeler's left-hand menu, select the activity shape (rounded rectangle) and drag it into position between the Start Event and the "Charge Credit Card" Service Task. Name it *Approve Payment*. -![Example image](/img/get-started/quick-start/modeler-usertask1.png) +![Example image](../../assets/get-started/quick-start/modeler-usertask1.png) Change the activity type to *User Task* by clicking on it and using the wrench button menu. -![Example image](/img/get-started/quick-start/modeler-usertask2.png) +![Example image](../../assets/get-started/quick-start/modeler-usertask2.png) ## Configure a User Task @@ -29,7 +29,7 @@ Next, open the properties view. If the properties view is not already visible, c Select the User Task on the canvas. This will update the selection in the properties view. Scroll to the property named `Assignee`. Type *demo* to automatically assign the task to the *demo* user once the process runs. -![Example image](/img/get-started/quick-start/modeler-usertask3.png) +![Example image](../../assets/get-started/quick-start/modeler-usertask3.png) ## Configure a basic form in the User Task This step will also take place in the properties panel. If the panel is not already visible, click on the "Properties Panel" label on the right-hand side of the Modeler canvas. @@ -46,11 +46,11 @@ Set the following fields to link this process to the form you are about to creat * Form Ref: payment-form * Binding: deployment -![Example image](/img/get-started/quick-start/modeler-usertask-add.png) +![Example image](../../assets/get-started/quick-start/modeler-usertask-add.png) Now, create a new form by clicking *File > New File > Form* and add `payment-form` as the `Id` field. -![Example image](/img/get-started/quick-start/modeler-usertask-form.png) +![Example image](../../assets/get-started/quick-start/modeler-usertask-form.png) You can add form fields by dragging and dropping elements from the *FORM ELEMENTS LIBRARY* on the left. Add the following three form fields: @@ -61,7 +61,7 @@ Field 1: * Key: amount * Field Label: Amount -![Example image](/img/get-started/quick-start/modeler-usertask4.png) +![Example image](../../assets/get-started/quick-start/modeler-usertask4.png) Field 2: @@ -69,7 +69,7 @@ Field 2: * Key: item * Field Label: Item -![Example image](/img/get-started/quick-start/modeler-usertask5.png) +![Example image](../../assets/get-started/quick-start/modeler-usertask5.png) Field 3: @@ -77,10 +77,10 @@ Field 3: * Key: approved * Label: Approved? -![Example image](/img/get-started/quick-start/modeler-usertask6.png) +![Example image](../../assets/get-started/quick-start/modeler-usertask6.png) Now, select Operaton Platform as the execution platform in the lower left corner of the modeler and hit *Apply*. -![Example image](/img/get-started/quick-start/modeler-platform-selection.png) +![Example image](../../assets/get-started/quick-start/modeler-platform-selection.png) Finally, save the form as `payment.form`. ## Deploy the Process @@ -90,7 +90,7 @@ Finally, save the form as `payment.form`. 3. In the deployment panel, select the `payment.form` file under *include additional files* 4. Click *Deploy* -![Example image](/img/get-started/quick-start/modeler-deploy-form.png) +![Example image](../../assets/get-started/quick-start/modeler-deploy-form.png) ## Work on the Task @@ -98,7 +98,7 @@ Finally, save the form as `payment.form`. Go to Tasklist ([http://localhost:8080/operaton/app/tasklist/](http://localhost:8080/operaton/app/tasklist/)) and log in with the credentials "demo / demo". Click on the Start process button to start a process instance. This opens a dialog where you can select *Payment Retrieval* from the list. Now you can set variables for the process instance using a generic form. -![Example image](/img/get-started/quick-start/start-form-generic.png) +![Example image](../../assets/get-started/quick-start/start-form-generic.png) The generic form can be used whenever you have not added a dedicated form for a User Task or a Start Event. Click on the *Add a variable* button to create a new row. Fill in the form as shown in the screenshot. When you're done, click *Start*. @@ -109,11 +109,11 @@ If you don't see any tasks in your Tasklist, you might need a filter. Add one by You should now see the *Approve Payment* task in your Tasklist. Select the task and click on the *Diagram* tab. This displays the process diagram highlighting the User Task that's waiting to be worked on. -![Example image](/img/get-started/quick-start/diagram.png) +![Example image](../../assets/get-started/quick-start/diagram.png) To work on the task, select the *Form* tab. Because we defined the variables in the Form Tab in the Camunda Modeler, the Tasklist has automatically generated form fields for us. -![Example image](/img/get-started/quick-start/task-form-generated.png) +![Example image](../../assets/get-started/quick-start/task-form-generated.png) :::note[Next Step] Next, we'll make the process more dynamic and only show a User Task in certain situations. Let's have a look how you can [add Gateways to your Process](/docs/get-started/quick-start/gateway/). diff --git a/docs/get-started/spring-boot/model.md b/docs/get-started/spring-boot/model.md index 0492c9d..d36e248 100644 --- a/docs/get-started/spring-boot/model.md +++ b/docs/get-started/spring-boot/model.md @@ -28,7 +28,7 @@ model and interact with the process from inside our Spring beans. In this sectio Start by modeling an executable process using the Camunda Modeler. The process should look as depicted in the screenshot below. -![Example image](/img/get-started/spring-boot/loanApproval.png) +![Example image](../../assets/get-started/spring-boot/loanApproval.png) :::note[Hint] If you are unfamiliar with modeling an executable process, you can read the @@ -70,4 +70,4 @@ Note that we can easily inject the Operaton engine service via the `@Autowired` If you rebuild and restart the application, you should see the task "Check the request" in Tasklist under the "All tasks" filter: -![Example image](/img/get-started/spring-boot/tasklist.png) \ No newline at end of file +![Example image](../../assets/get-started/spring-boot/tasklist.png) \ No newline at end of file diff --git a/docs/get-started/spring-boot/project-setup.md b/docs/get-started/spring-boot/project-setup.md index e0a330f..66b9612 100644 --- a/docs/get-started/spring-boot/project-setup.md +++ b/docs/get-started/spring-boot/project-setup.md @@ -32,7 +32,7 @@ In the following sections, we go through this process step by step. First, we set up a new Apache Maven based project. Let's call it *loan-approval-spring-boot*. The screenshot below illustrates the settings we choose in Eclipse. -![Example image](/img/get-started/spring-boot/eclipse-new-project.png) +![Example image](../../assets/get-started/spring-boot/eclipse-new-project.png) When you are done, click Finish. Eclipse sets up a new Maven project. The project appears in the *Project Explorer* view. diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 464c1a1..905e38c 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -53,6 +53,20 @@ const config: Config = { { docs: { sidebarPath: './sidebars.ts', + // 1. Set 'current' as the default version + lastVersion: 'current', + + versions: { + current: { + label: 'Next ๐Ÿšง', + path: '', // Serving 'Next' at /docs/ instead of /docs/next/ + }, + '1.0.0': { + label: '1.0.0', + path: '1.0.0', // Serving 1.0.0 at /docs/1.0.0/ + }, + }, + exclude: [ '**/_*.{js,jsx,ts,tsx,md,mdx,bpmn}', 'docs/documentation/introduction/third-party-libraries/camunda-bpm-platform-license-book.md' @@ -60,7 +74,7 @@ const config: Config = { // The BPMN remark plugin remarkPlugins: [remarkBpmnDiagram], - + // Please change this to your repo. // Remove this to remove the "edit this page" links. editUrl: @@ -111,6 +125,11 @@ const config: Config = { src: 'img/operaton-logo.svg', }, items: [ + { + type: 'docsVersionDropdown', + position: 'right', + dropdownActiveClassDisabled: true, + }, { type: 'docSidebar', sidebarId: 'getStarted', diff --git a/package.json b/package.json index 9c43537..f301fac 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,10 @@ "serve": "docusaurus serve", "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", - "typecheck": "tsc" + "typecheck": "tsc", + "check:refs": "node scripts/check-broken-references.js", + "check:refs:verbose": "node scripts/check-broken-references.js --verbose", + "test": "npm run check:refs && npm run build" }, "dependencies": { "@docusaurus/core": "3.9.2", diff --git a/scripts/broken-asset-references.md b/scripts/broken-asset-references.md new file mode 100644 index 0000000..93411a3 --- /dev/null +++ b/scripts/broken-asset-references.md @@ -0,0 +1,14 @@ +# Broken Asset References Report + +**Generated:** 2025-12-21 09:30:05 + +## Summary + +- Markdown files scanned: 410 +- Total asset references: 517 +- Working references: 516 +- External references: 467 +- Skipped (templates): 1 +- **Broken references: 0** + +โœ… **No broken references found!** diff --git a/scripts/check-broken-references.js b/scripts/check-broken-references.js new file mode 100644 index 0000000..bd6eed9 --- /dev/null +++ b/scripts/check-broken-references.js @@ -0,0 +1,405 @@ +#!/usr/bin/env node + +/** + * Broken Asset Reference Checker (Updated for docs/assets) + * + * Scans all markdown files and reports asset references that don't exist. + * Works with both docs/assets/ (relative paths) and static/img/ (absolute paths). + * + * Usage: + * node check-broken-references.js + * node check-broken-references.js --verbose + * node check-broken-references.js --report-only + */ + +const fs = require('fs').promises; +const path = require('path'); + +const CONFIG = { + docsPath: './docs', + staticPath: './static/img', // For legacy /img/ references if any + assetExtensions: [ + '.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.bmp', '.ico', + '.bpmn', '.dmn', '.cmmn', + '.pdf', '.odg', '.odt', + '.js', '.json', '.xml', '.csv', + ], + verbose: process.argv.includes('--verbose'), + reportOnly: process.argv.includes('--report-only') +}; + +const report = { + mdFilesScanned: 0, + totalReferences: 0, + brokenReferences: [], + workingReferences: 0, + externalReferences: 0, + skippedReferences: 0 +}; + +function isAssetFile(filename) { + const ext = path.extname(filename).toLowerCase(); + return CONFIG.assetExtensions.includes(ext); +} + +async function fileExists(filePath) { + try { + await fs.access(filePath); + return true; + } catch { + return false; + } +} + +/** + * Extract asset references from markdown content + */ +function extractAssetReferences(content, filePath) { + const assets = []; + + // Match markdown syntax: ![alt](path) or [text](path) + const mdRegex = /!?\[([^\]]*)\]\(([^)]+)\)/g; + let match; + + while ((match = mdRegex.exec(content)) !== null) { + const isImage = match[0].startsWith('!'); + const assetPath = match[2]; + const lineNumber = content.substring(0, match.index).split('\n').length; + + // Skip external URLs + if (assetPath.startsWith('http://') || assetPath.startsWith('https://')) { + report.externalReferences++; + continue; + } + + // Skip anchors and empty paths + if (assetPath.startsWith('#') || !assetPath.trim()) { + continue; + } + + // Skip mailto links + if (assetPath.startsWith('mailto:')) { + continue; + } + + // Only process if it's an image tag OR has an asset extension + const hasAssetExtension = CONFIG.assetExtensions.some(ext => + assetPath.toLowerCase().includes(ext) + ); + + if (isImage || hasAssetExtension) { + assets.push({ + fullMatch: match[0], + alt: match[1], + path: assetPath, + type: isImage ? 'image' : 'link', + lineNumber: lineNumber + }); + } + } + + // Match HTML img/a tags + const htmlRegex = /<(?:img|a)[^>]+(?:src|href)=["']([^"']+)["'][^>]*>/g; + + while ((match = htmlRegex.exec(content)) !== null) { + const assetPath = match[1]; + const lineNumber = content.substring(0, match.index).split('\n').length; + + if (assetPath.startsWith('http://') || assetPath.startsWith('https://')) { + report.externalReferences++; + continue; + } + + const hasAssetExtension = CONFIG.assetExtensions.some(ext => + assetPath.toLowerCase().includes(ext) + ); + + if (hasAssetExtension) { + assets.push({ + fullMatch: match[0], + path: assetPath, + type: 'html', + lineNumber: lineNumber + }); + } + } + + return assets; +} + +/** + * Resolve asset path to check if it exists + */ +async function checkAssetExists(assetPath, mdFilePath) { + // Absolute path from /img/ (legacy static/img references) + if (assetPath.startsWith('/img/')) { + const fullPath = path.join(CONFIG.staticPath, assetPath.replace('/img/', '')); + return { + exists: await fileExists(fullPath), + resolvedPath: fullPath, + type: 'absolute-static' + }; + } + + // Relative path - resolve relative to markdown file's directory + if (!path.isAbsolute(assetPath)) { + const mdDir = path.dirname(mdFilePath); + const fullPath = path.resolve(mdDir, assetPath); + return { + exists: await fileExists(fullPath), + resolvedPath: fullPath, + type: 'relative' + }; + } + + // Absolute path (other) + return { + exists: await fileExists(assetPath), + resolvedPath: assetPath, + type: 'absolute' + }; +} + +/** + * Find all markdown files + */ +async function findMarkdownFiles(dir) { + const files = []; + + async function search(currentDir) { + try { + const entries = await fs.readdir(currentDir, { withFileTypes: true }); + + for (const entry of entries) { + const fullPath = path.join(currentDir, entry.name); + + if (entry.isDirectory()) { + // Skip hidden, node_modules, and versioned_docs + if (entry.name.startsWith('_') || + entry.name === 'node_modules' || + entry.name === 'versioned_docs') { + continue; + } + await search(fullPath); + } else if (entry.isFile()) { + if (entry.name.startsWith('_')) { + continue; + } + if (entry.name.match(/\.(md|mdx)$/)) { + files.push(fullPath); + } + } + } + } catch (err) { + // Ignore errors + } + } + + await search(dir); + return files; +} + +/** + * Check a single markdown file for broken references + */ +async function checkMarkdownFile(filePath) { + try { + const content = await fs.readFile(filePath, 'utf8'); + const assets = extractAssetReferences(content, filePath); + + report.totalReferences += assets.length; + + for (const asset of assets) { + // Skip template code + if (asset.path.includes('{{') || asset.path.includes('}}')) { + report.skippedReferences++; + continue; + } + + const check = await checkAssetExists(asset.path, filePath); + + if (!check.exists) { + report.brokenReferences.push({ + mdFile: filePath, + assetPath: asset.path, + resolvedPath: check.resolvedPath, + pathType: check.type, + lineNumber: asset.lineNumber, + type: asset.type, + fullMatch: asset.fullMatch + }); + + if (CONFIG.verbose) { + console.log(`โŒ ${path.relative(CONFIG.docsPath, filePath)}:${asset.lineNumber}`); + console.log(` ${asset.path} โ†’ ${check.resolvedPath}`); + } + } else { + report.workingReferences++; + + if (CONFIG.verbose) { + console.log(`โœ“ ${asset.path}`); + } + } + } + } catch (err) { + console.error(`Error checking ${filePath}: ${err.message}`); + } +} + +/** + * Generate markdown report + */ +function generateMarkdownReport() { + let md = '# Broken Asset References Report\n\n'; + md += `**Generated:** ${new Date().toISOString().replace('T', ' ').substring(0, 19)}\n\n`; + + md += '## Summary\n\n'; + md += `- Markdown files scanned: ${report.mdFilesScanned}\n`; + md += `- Total asset references: ${report.totalReferences}\n`; + md += `- Working references: ${report.workingReferences}\n`; + md += `- External references: ${report.externalReferences}\n`; + md += `- Skipped (templates): ${report.skippedReferences}\n`; + md += `- **Broken references: ${report.brokenReferences.length}**\n\n`; + + if (report.brokenReferences.length === 0) { + md += 'โœ… **No broken references found!**\n'; + return md; + } + + md += '## Broken References by File\n\n'; + + // Group by markdown file + const byFile = {}; + report.brokenReferences.forEach(ref => { + if (!byFile[ref.mdFile]) { + byFile[ref.mdFile] = []; + } + byFile[ref.mdFile].push(ref); + }); + + Object.keys(byFile).sort().forEach(mdFile => { + const refs = byFile[mdFile]; + const relativePath = path.relative(CONFIG.docsPath, mdFile); + + md += `### ${relativePath}\n\n`; + md += `**${refs.length} broken reference${refs.length > 1 ? 's' : ''}:**\n\n`; + + refs.forEach(ref => { + md += `- **Line ${ref.lineNumber}:** \`${ref.assetPath}\`\n`; + md += ` - Type: ${ref.type} (${ref.pathType})\n`; + md += ` - Tried to resolve to: \`${ref.resolvedPath}\`\n`; + md += ` - Full reference: \`${ref.fullMatch.substring(0, 80)}${ref.fullMatch.length > 80 ? '...' : ''}\`\n\n`; + }); + }); + + md += '## Quick Fix Guide\n\n'; + md += 'For each broken reference, you can:\n\n'; + md += '1. **Find the missing asset:** Search for it in your project or recreate it\n'; + md += '2. **Fix the path:** Update the markdown to point to the correct location\n'; + md += '3. **Remove the reference:** If the asset is no longer needed\n\n'; + + // Group by missing file + md += '## Missing Assets List\n\n'; + const missingAssets = {}; + report.brokenReferences.forEach(ref => { + const basename = path.basename(ref.assetPath); + if (!missingAssets[basename]) { + missingAssets[basename] = []; + } + missingAssets[basename].push(ref.mdFile); + }); + + Object.keys(missingAssets).sort().forEach(asset => { + const files = missingAssets[asset]; + md += `- **${asset}** - Referenced in ${files.length} file${files.length > 1 ? 's' : ''}\n`; + files.forEach(file => { + md += ` - ${path.relative(CONFIG.docsPath, file)}\n`; + }); + }); + + return md; +} + +/** + * Main execution + */ +async function main() { + if (!CONFIG.reportOnly) { + console.log('๐Ÿ” Scanning for broken asset references...\n'); + } + + // Find all markdown files + if (!CONFIG.reportOnly) { + console.log('Finding markdown files...'); + } + const mdFiles = await findMarkdownFiles(CONFIG.docsPath); + report.mdFilesScanned = mdFiles.length; + + if (!CONFIG.reportOnly) { + console.log(`Found ${mdFiles.length} markdown files\n`); + console.log('Checking asset references...'); + } + + // Check each file + for (const file of mdFiles) { + await checkMarkdownFile(file); + if (!CONFIG.verbose && !CONFIG.reportOnly) { + process.stdout.write('.'); + } + } + + if (!CONFIG.verbose && !CONFIG.reportOnly) { + console.log('\n'); + } + + // Generate report + const markdownReport = generateMarkdownReport(); + const outputFile = './broken-asset-references.md'; + await fs.writeFile(outputFile, markdownReport, 'utf8'); + + // Print summary to console + console.log('='.repeat(70)); + console.log('SUMMARY'); + console.log('='.repeat(70)); + console.log(`Markdown files scanned: ${report.mdFilesScanned}`); + console.log(`Total asset references: ${report.totalReferences}`); + console.log(`Working references: ${report.workingReferences}`); + console.log(`External references: ${report.externalReferences}`); + console.log(`Skipped (templates): ${report.skippedReferences}`); + console.log(`Broken references: ${report.brokenReferences.length}`); + console.log('='.repeat(70) + '\n'); + + if (report.brokenReferences.length > 0) { + console.log('โš ๏ธ Found broken asset references!\n'); + console.log('Most common missing assets:'); + + // Show top 10 missing assets + const missingAssets = {}; + report.brokenReferences.forEach(ref => { + const basename = path.basename(ref.assetPath); + missingAssets[basename] = (missingAssets[basename] || 0) + 1; + }); + + Object.entries(missingAssets) + .sort((a, b) => b[1] - a[1]) + .slice(0, 10) + .forEach(([asset, count]) => { + console.log(` ${asset}: ${count} reference${count > 1 ? 's' : ''}`); + }); + + console.log(`\n๐Ÿ“„ Full report saved to: ${outputFile}\n`); + + // Exit with error code + process.exit(1); + } else { + console.log('โœ… No broken references found!\n'); + + // Exit successfully + process.exit(0); + } +} + +main().catch(err => { + console.error('Fatal error:', err); + process.exit(1); +}); \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/introduction/architecture-overview.png b/versioned_docs/version-1.0.0/assets/documentation/introduction/architecture-overview.png new file mode 100644 index 0000000..a92cc46 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/introduction/architecture-overview.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/introduction/clustered-process-engine.png b/versioned_docs/version-1.0.0/assets/documentation/introduction/clustered-process-engine.png new file mode 100644 index 0000000..1970192 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/introduction/clustered-process-engine.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/introduction/embedded-process-engine.png b/versioned_docs/version-1.0.0/assets/documentation/introduction/embedded-process-engine.png new file mode 100644 index 0000000..640229d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/introduction/embedded-process-engine.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/introduction/process-engine-architecture.png b/versioned_docs/version-1.0.0/assets/documentation/introduction/process-engine-architecture.png new file mode 100644 index 0000000..2b7ec3a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/introduction/process-engine-architecture.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/introduction/shared-process-engine.png b/versioned_docs/version-1.0.0/assets/documentation/introduction/shared-process-engine.png new file mode 100644 index 0000000..7324727 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/introduction/shared-process-engine.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/introduction/standalone-process-engine.png b/versioned_docs/version-1.0.0/assets/documentation/introduction/standalone-process-engine.png new file mode 100644 index 0000000..98c655a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/introduction/standalone-process-engine.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/and_gateway.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/and_gateway.svg new file mode 100644 index 0000000..707e1b2 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/and_gateway.svg @@ -0,0 +1,7 @@ + + + + AND + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/business_rule_task.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/business_rule_task.svg new file mode 100644 index 0000000..51b37c1 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/business_rule_task.svg @@ -0,0 +1,10 @@ + + + + Business Rule + Task + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/call_activity.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/call_activity.svg new file mode 100644 index 0000000..157a4aa --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/call_activity.svg @@ -0,0 +1,8 @@ + + + + + + Call Activity + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/cancel_boundary_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/cancel_boundary_event.svg new file mode 100644 index 0000000..f1e46be --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/cancel_boundary_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/cancel_end_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/cancel_end_event.svg new file mode 100644 index 0000000..bf88869 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/cancel_end_event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/compensation_boundary_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/compensation_boundary_event.svg new file mode 100644 index 0000000..3effe63 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/compensation_boundary_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/compensation_end_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/compensation_end_event.svg new file mode 100644 index 0000000..d695b39 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/compensation_end_event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/compensation_event_subprocess_start_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/compensation_event_subprocess_start_event.svg new file mode 100644 index 0000000..3d58a3e --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/compensation_event_subprocess_start_event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/compensation_intermediate_throw_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/compensation_intermediate_throw_event.svg new file mode 100644 index 0000000..1677317 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/compensation_intermediate_throw_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/complex_gateway.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/complex_gateway.svg new file mode 100644 index 0000000..748f35c --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/complex_gateway.svg @@ -0,0 +1,9 @@ + + + + Complex + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg new file mode 100644 index 0000000..4d4d9f8 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/conditional_intermediate_non_interrupting_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/conditional_intermediate_non_interrupting_event.svg new file mode 100644 index 0000000..457bb0d --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/conditional_intermediate_non_interrupting_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/conditional_start_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/conditional_start_event.svg new file mode 100644 index 0000000..4fa5d82 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/conditional_start_event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/data_object.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/data_object.svg new file mode 100644 index 0000000..e001ea0 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/data_object.svg @@ -0,0 +1,7 @@ + + + + Data + Object + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/data_store.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/data_store.svg new file mode 100644 index 0000000..ce3d3a7 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/data_store.svg @@ -0,0 +1,7 @@ + + + + Data + Store + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/error_boundary_catch_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/error_boundary_catch_event.svg new file mode 100644 index 0000000..eea9652 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/error_boundary_catch_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/error_event_subprocess_start_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/error_event_subprocess_start_event.svg new file mode 100644 index 0000000..a5cffdf --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/error_event_subprocess_start_event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/error_throw_end_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/error_throw_end_event.svg new file mode 100644 index 0000000..4cc340f --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/error_throw_end_event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_boundary_catch_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_boundary_catch_event.svg new file mode 100644 index 0000000..efc158f --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_boundary_catch_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_boundary_catch_non_interrupting_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_boundary_catch_non_interrupting_event.svg new file mode 100644 index 0000000..f17c12d --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_boundary_catch_non_interrupting_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_event_subprocess_non_interrupting_start_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_event_subprocess_non_interrupting_start_event.svg new file mode 100644 index 0000000..83f307c --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_event_subprocess_non_interrupting_start_event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_event_subprocess_start_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_event_subprocess_start_event.svg new file mode 100644 index 0000000..e9e541e --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_event_subprocess_start_event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_intermediate_throw_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_intermediate_throw_event.svg new file mode 100644 index 0000000..74f1994 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_intermediate_throw_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_throw_end_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_throw_end_event.svg new file mode 100644 index 0000000..bae9fec --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/escalation_throw_end_event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_gateway.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_gateway.svg new file mode 100644 index 0000000..6bb4e44 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_gateway.svg @@ -0,0 +1,9 @@ + + + + Event + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess.svg new file mode 100644 index 0000000..b9a474b --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess.svg @@ -0,0 +1,9 @@ + + + + + + Event + Subprocess + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess_conditional_non_interrupting.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess_conditional_non_interrupting.svg new file mode 100644 index 0000000..e035a75 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess_conditional_non_interrupting.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess_message_non_interrupting.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess_message_non_interrupting.svg new file mode 100644 index 0000000..7be6d4b --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess_message_non_interrupting.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess_signal_non_interrupting_start_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess_signal_non_interrupting_start_event.svg new file mode 100644 index 0000000..8b6f0f3 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess_signal_non_interrupting_start_event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess_timer_non_interrupting.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess_timer_non_interrupting.svg new file mode 100644 index 0000000..b148345 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/event_subprocess_timer_non_interrupting.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/events/activityInstanceState.png b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/events/activityInstanceState.png new file mode 100644 index 0000000..e4ed934 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/events/activityInstanceState.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/events/event-conditional.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/events/event-conditional.svg new file mode 100644 index 0000000..04631e6 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/events/event-conditional.svg @@ -0,0 +1,4 @@ + + + +Recieved Application Assign Processor Processor available? Application canceled? Document application Application rejected Application approved Application approved? Application rejected Check Application Process application Waits until the assigned processor is available. Application changed? YesNo \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/group_symbol.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/group_symbol.svg new file mode 100644 index 0000000..9a1691a --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/group_symbol.svg @@ -0,0 +1,6 @@ + + + + Group + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/instantiated_receive_task.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/instantiated_receive_task.svg new file mode 100644 index 0000000..5a835a6 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/instantiated_receive_task.svg @@ -0,0 +1,9 @@ + + + + Receive Task + (instantiated) + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/lane.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/lane.svg new file mode 100644 index 0000000..f78ba58 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/lane.svg @@ -0,0 +1,6 @@ + + + + Lane + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/link_intermediate_catch_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/link_intermediate_catch_event.svg new file mode 100644 index 0000000..b2336c1 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/link_intermediate_catch_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/link_intermediate_throw_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/link_intermediate_throw_event.svg new file mode 100644 index 0000000..572c49e --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/link_intermediate_throw_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/manual_task.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/manual_task.svg new file mode 100644 index 0000000..30eae82 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/manual_task.svg @@ -0,0 +1,7 @@ + + + + Manual Task + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_intermediate_catch_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_intermediate_catch_event.svg new file mode 100644 index 0000000..fd0f3a2 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_intermediate_catch_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_intermediate_non_interrupting_catch_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_intermediate_non_interrupting_catch_event.svg new file mode 100644 index 0000000..ca5d00c --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_intermediate_non_interrupting_catch_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_intermediate_throw_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_intermediate_throw_event.svg new file mode 100644 index 0000000..6eeb1da --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_intermediate_throw_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_start_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_start_event.svg new file mode 100644 index 0000000..25b9f69 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_start_event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_throw_end_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_throw_end_event.svg new file mode 100644 index 0000000..21a1771 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/message_throw_end_event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_boundary_non_interrupting_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_boundary_non_interrupting_event.svg new file mode 100644 index 0000000..f9e5b6d --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_boundary_non_interrupting_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_end_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_end_event.svg new file mode 100644 index 0000000..c6f63de --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_end_event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_event_subprocess_non_interrupting_start_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_event_subprocess_non_interrupting_start_event.svg new file mode 100644 index 0000000..f9ec67d --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_event_subprocess_non_interrupting_start_event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg new file mode 100644 index 0000000..4dfe720 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_intermediate_throw_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_intermediate_throw_event.svg new file mode 100644 index 0000000..05323f8 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_intermediate_throw_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_parallel_catch_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_parallel_catch_event.svg new file mode 100644 index 0000000..1349aaf --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_parallel_catch_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_parallel_intermediate_non_interrupting_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_parallel_intermediate_non_interrupting_event.svg new file mode 100644 index 0000000..4fd88c6 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_parallel_intermediate_non_interrupting_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_parallel_non_interrupting_start_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_parallel_non_interrupting_start_event.svg new file mode 100644 index 0000000..2bb136d --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_parallel_non_interrupting_start_event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_parallel_start_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_parallel_start_event.svg new file mode 100644 index 0000000..633c241 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_parallel_start_event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_start_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_start_event.svg new file mode 100644 index 0000000..46c041d --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/multiple_start_event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/none_end_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/none_end_event.svg new file mode 100644 index 0000000..e531d11 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/none_end_event.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/none_intermediate_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/none_intermediate_event.svg new file mode 100644 index 0000000..66e274b --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/none_intermediate_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/none_start_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/none_start_event.svg new file mode 100644 index 0000000..6d623fc --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/none_start_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/or_gateway.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/or_gateway.svg new file mode 100644 index 0000000..d350e37 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/or_gateway.svg @@ -0,0 +1,7 @@ + + + + OR + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/pool.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/pool.svg new file mode 100644 index 0000000..8ab0b85 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/pool.svg @@ -0,0 +1,6 @@ + + + + Pool + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/receive_task.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/receive_task.svg new file mode 100644 index 0000000..fd38b8d --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/receive_task.svg @@ -0,0 +1,7 @@ + + + + Receive Task + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/script_task.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/script_task.svg new file mode 100644 index 0000000..706609d --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/script_task.svg @@ -0,0 +1,7 @@ + + + + Script Task + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/send_task.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/send_task.svg new file mode 100644 index 0000000..8bcf1c1 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/send_task.svg @@ -0,0 +1,7 @@ + + + + Send Task + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/service_task.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/service_task.svg new file mode 100644 index 0000000..92163f7 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/service_task.svg @@ -0,0 +1,10 @@ + + + + Service Task + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_intermediate_catch_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_intermediate_catch_event.svg new file mode 100644 index 0000000..4473e66 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_intermediate_catch_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_intermediate_non_interrupting_catch_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_intermediate_non_interrupting_catch_event.svg new file mode 100644 index 0000000..52dff88 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_intermediate_non_interrupting_catch_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_intermediate_throw_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_intermediate_throw_event.svg new file mode 100644 index 0000000..65e54bd --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_intermediate_throw_event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_start_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_start_event.svg new file mode 100644 index 0000000..d6c9a12 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_start_event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_throw_end_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_throw_end_event.svg new file mode 100644 index 0000000..a1fa3e5 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/signal_throw_end_event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/subprocess.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/subprocess.svg new file mode 100644 index 0000000..84a7b91 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/subprocess.svg @@ -0,0 +1,8 @@ + + + + + + Subprocess + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/termination_end_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/termination_end_event.svg new file mode 100644 index 0000000..54aef1d --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/termination_end_event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/text_annotation.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/text_annotation.svg new file mode 100644 index 0000000..af1bc79 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/text_annotation.svg @@ -0,0 +1,8 @@ + + + + Text + + Annotation + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/timer_intermediate_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/timer_intermediate_event.svg new file mode 100644 index 0000000..2706ae7 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/timer_intermediate_event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/timer_intermediate_none_interrupting_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/timer_intermediate_none_interrupting_event.svg new file mode 100644 index 0000000..6e60eda --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/timer_intermediate_none_interrupting_event.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/timer_start_event.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/timer_start_event.svg new file mode 100644 index 0000000..b05182f --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/timer_start_event.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/transaction.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/transaction.svg new file mode 100644 index 0000000..abff3f2 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/transaction.svg @@ -0,0 +1,9 @@ + + + + + + + Transaction + + diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/undefined_task.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/undefined_task.svg new file mode 100644 index 0000000..c28d8ec --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/undefined_task.svg @@ -0,0 +1,6 @@ + + + + Undefined Task + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/user_task.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/user_task.svg new file mode 100644 index 0000000..8679108 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/user_task.svg @@ -0,0 +1,11 @@ + + + + User Task + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/xor_gateway.svg b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/xor_gateway.svg new file mode 100644 index 0000000..67bfcda --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/reference/bpmn20/xor_gateway.svg @@ -0,0 +1,7 @@ + + + + XOR + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/CaseInstanceLifecycle.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/CaseInstanceLifecycle.png new file mode 100644 index 0000000..6631221 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/CaseInstanceLifecycle.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/MilestoneLifecycle.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/MilestoneLifecycle.png new file mode 100644 index 0000000..afaf23d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/MilestoneLifecycle.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/TaskStageLifecycle.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/TaskStageLifecycle.png new file mode 100644 index 0000000..d74ddc3 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/TaskStageLifecycle.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/example-lifecycle-case.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/example-lifecycle-case.png new file mode 100644 index 0000000..2732977 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/example-lifecycle-case.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/lifecycle-example-1.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/lifecycle-example-1.png new file mode 100644 index 0000000..a67ad14 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/lifecycle-example-1.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/lifecycle-example-2.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/lifecycle-example-2.png new file mode 100644 index 0000000..fe66495 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/lifecycle-example-2.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/lifecycle-example-3.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/lifecycle-example-3.png new file mode 100644 index 0000000..28df218 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/lifecycle-example-3.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/lifecycle-example-4.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/lifecycle-example-4.png new file mode 100644 index 0000000..1ac4068 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/concepts/lifecycle-example-4.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/repetition-rule-example.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/repetition-rule-example.png new file mode 100644 index 0000000..9b4fb3a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/repetition-rule-example.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-1.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-1.png new file mode 100644 index 0000000..5b938ad Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-1.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-2.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-2.png new file mode 100644 index 0000000..d864e3e Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-2.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-3.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-3.png new file mode 100644 index 0000000..1467760 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-3.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-4.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-4.png new file mode 100644 index 0000000..1010885 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-4.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-5.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-5.png new file mode 100644 index 0000000..d687221 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/markers/state-5.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/variableOnPart.png b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/variableOnPart.png new file mode 100644 index 0000000..58991db Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/cmmn11/variableOnPart.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/decision-id.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/decision-id.png new file mode 100644 index 0000000..a5a9f39 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/decision-id.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/decision-name.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/decision-name.png new file mode 100644 index 0000000..2cab2c8 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/decision-name.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/description.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/description.png new file mode 100644 index 0000000..ba2d088 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/description.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/dish-table.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/dish-table.png new file mode 100644 index 0000000..3aa17a4 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/dish-table.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-any.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-any.png new file mode 100644 index 0000000..0c61806 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-any.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect-count.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect-count.png new file mode 100644 index 0000000..94f7d58 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect-count.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect-max.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect-max.png new file mode 100644 index 0000000..acb2886 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect-max.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect-min.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect-min.png new file mode 100644 index 0000000..b2e9686 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect-min.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect-sum.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect-sum.png new file mode 100644 index 0000000..e485761 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect-sum.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect.png new file mode 100644 index 0000000..9a6ce79 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-collect.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-first.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-first.png new file mode 100644 index 0000000..458f10e Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-first.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-rule-order.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-rule-order.png new file mode 100644 index 0000000..5afc537 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-rule-order.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-unique.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-unique.png new file mode 100644 index 0000000..00d93ae Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy-unique.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy.png new file mode 100644 index 0000000..c845b5e Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/hit-policy.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input-entry.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input-entry.png new file mode 100644 index 0000000..cafbaf5 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input-entry.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input-expression.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input-expression.png new file mode 100644 index 0000000..89da4dd Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input-expression.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input-label.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input-label.png new file mode 100644 index 0000000..4b55c4a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input-label.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input-type-definition.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input-type-definition.png new file mode 100644 index 0000000..1970fee Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input-type-definition.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input.png new file mode 100644 index 0000000..10d7988 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/input.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output-entry.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output-entry.png new file mode 100644 index 0000000..add59d5 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output-entry.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output-label.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output-label.png new file mode 100644 index 0000000..2c26031 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output-label.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output-name.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output-name.png new file mode 100644 index 0000000..f514fbe Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output-name.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output-type-definition.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output-type-definition.png new file mode 100644 index 0000000..9550194 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output-type-definition.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output.png new file mode 100644 index 0000000..c3df7df Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/output.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/rule.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/rule.png new file mode 100644 index 0000000..79e1bdd Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/decision-table/rule.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/decision.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/decision.png new file mode 100644 index 0000000..6da51ac Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/decision.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/drd.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/drd.png new file mode 100644 index 0000000..ab35482 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/drd.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/drg-id.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/drg-id.png new file mode 100644 index 0000000..e152ad0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/drg-id.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/drg-name.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/drg-name.png new file mode 100644 index 0000000..30d66b7 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/drg-name.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/input-data.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/input-data.png new file mode 100644 index 0000000..61aa026 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/input-data.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/knowledge-source.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/knowledge-source.png new file mode 100644 index 0000000..4d7f5f4 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/knowledge-source.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/required-decision.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/required-decision.png new file mode 100644 index 0000000..98b0396 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/drg/required-decision.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/feel/legacy/boolean-type.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/feel/legacy/boolean-type.png new file mode 100644 index 0000000..02c765c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/feel/legacy/boolean-type.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/feel/legacy/date-type.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/feel/legacy/date-type.png new file mode 100644 index 0000000..dfd418f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/feel/legacy/date-type.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/feel/legacy/integer-type.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/feel/legacy/integer-type.png new file mode 100644 index 0000000..23f8c5c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/feel/legacy/integer-type.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/feel/legacy/string-type.png b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/feel/legacy/string-type.png new file mode 100644 index 0000000..b08fb01 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/reference/dmn/feel/legacy/string-type.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/dmn-engine/beverages-dmn.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/dmn-engine/beverages-dmn.png new file mode 100644 index 0000000..964208a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/dmn-engine/beverages-dmn.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/dmn-engine/dish-dmn.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/dmn-engine/dish-dmn.png new file mode 100644 index 0000000..d3d44d9 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/dmn-engine/dish-dmn.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/dmn-engine/drd.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/dmn-engine/drd.png new file mode 100644 index 0000000..d2e3ef3 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/dmn-engine/drd.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-parallel-gateway.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-parallel-gateway.png new file mode 100644 index 0000000..a4ed24d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-parallel-gateway.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-simple-process.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-simple-process.png new file mode 100644 index 0000000..e5f156b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-simple-process.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-00-preferences-maven-archetypes.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-00-preferences-maven-archetypes.png new file mode 100644 index 0000000..84b72b4 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-00-preferences-maven-archetypes.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-01-add-remote-archetype-catalog.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-01-add-remote-archetype-catalog.png new file mode 100644 index 0000000..f942852 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-01-add-remote-archetype-catalog.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-02-create-maven-project.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-02-create-maven-project.png new file mode 100644 index 0000000..f584533 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-02-create-maven-project.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-03-select-maven-project-location.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-03-select-maven-project-location.png new file mode 100644 index 0000000..3297040 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-03-select-maven-project-location.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-04-select-archetype-from-catalog.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-04-select-archetype-from-catalog.png new file mode 100644 index 0000000..3c20185 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-04-select-archetype-from-catalog.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-05-specify-maven-coordinates-and-operaton-version.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-05-specify-maven-coordinates-and-operaton-version.png new file mode 100644 index 0000000..eeaeb00 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-05-specify-maven-coordinates-and-operaton-version.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-06-generated-maven-project.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-06-generated-maven-project.png new file mode 100644 index 0000000..c59608c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/eclipse-06-generated-maven-project.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/process-application-context.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/process-application-context.png new file mode 100644 index 0000000..4a5a1ac Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/process-application-context.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/process-application-deployment.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/process-application-deployment.png new file mode 100644 index 0000000..9aa50f1 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/process-application-deployment.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/process-application-events.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/process-application-events.png new file mode 100644 index 0000000..59cbd22 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/process-application-events.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/process-application-redeployment.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/process-application-redeployment.png new file mode 100644 index 0000000..db3de45 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-applications/process-application-redeployment.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/NotWorkingTimerOnServiceTimeout.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/NotWorkingTimerOnServiceTimeout.png new file mode 100644 index 0000000..bcbf01f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/NotWorkingTimerOnServiceTimeout.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/api.services.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/api.services.png new file mode 100644 index 0000000..9b556dd Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/api.services.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/bpmn.boundary.error.event.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/bpmn.boundary.error.event.png new file mode 100644 index 0000000..e714eb0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/bpmn.boundary.error.event.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/database-schema.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/database-schema.png new file mode 100644 index 0000000..3a83530 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/database-schema.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_bpmn.svg b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_bpmn.svg new file mode 100644 index 0000000..51efd18 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_bpmn.svg @@ -0,0 +1,6896 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_cmmn.svg b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_cmmn.svg new file mode 100644 index 0000000..0212784 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_cmmn.svg @@ -0,0 +1,2344 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_dmn.svg b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_dmn.svg new file mode 100644 index 0000000..1247f75 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_dmn.svg @@ -0,0 +1,4845 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_history.svg b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_history.svg new file mode 100644 index 0000000..e58d821 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_history.svg @@ -0,0 +1,9674 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_identity.svg b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_identity.svg new file mode 100644 index 0000000..d0ee2a1 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/database/erd_722_identity.svg @@ -0,0 +1,6036 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/error-handling-user-task.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/error-handling-user-task.png new file mode 100644 index 0000000..2a3eb03 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/error-handling-user-task.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/error-result-xor.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/error-result-xor.png new file mode 100644 index 0000000..af866c6 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/error-result-xor.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/event-based-gateway.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/event-based-gateway.png new file mode 100644 index 0000000..e90889d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/event-based-gateway.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/exclusive-over-process-hierarchies.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/exclusive-over-process-hierarchies.png new file mode 100644 index 0000000..a270588 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/exclusive-over-process-hierarchies.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/external-task-long-polling.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/external-task-long-polling.png new file mode 100644 index 0000000..63baae9 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/external-task-long-polling.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/external-task-pattern.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/external-task-pattern.png new file mode 100644 index 0000000..0e16fea Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/external-task-pattern.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/heterogeneous-cluster.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/heterogeneous-cluster.png new file mode 100644 index 0000000..ee5ebe4 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/heterogeneous-cluster.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/history/history-cleanup-process-hierarchy.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/history/history-cleanup-process-hierarchy.png new file mode 100644 index 0000000..0faef6b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/history/history-cleanup-process-hierarchy.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/history/process-engine-history-architecture.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/history/process-engine-history-architecture.png new file mode 100644 index 0000000..07b2451 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/history/process-engine-history-architecture.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/homogeneous-cluster.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/homogeneous-cluster.png new file mode 100644 index 0000000..a03a811 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/homogeneous-cluster.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-basic-architecture.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-basic-architecture.png new file mode 100644 index 0000000..93b5e28 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-basic-architecture.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-exclusive-jobs.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-exclusive-jobs.png new file mode 100644 index 0000000..c35d02a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-exclusive-jobs.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-multiple-engines.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-multiple-engines.png new file mode 100644 index 0000000..a1364bc Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-multiple-engines.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-priority-precedence.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-priority-precedence.png new file mode 100644 index 0000000..9dc5ac9 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-priority-precedence.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-single-engine.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-single-engine.png new file mode 100644 index 0000000..76e54b3 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/job-executor-single-engine.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/message-event.svg b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/message-event.svg new file mode 100644 index 0000000..6f7a245 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/message-event.svg @@ -0,0 +1 @@ +Message \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/multi-tenancy-process-engine.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/multi-tenancy-process-engine.png new file mode 100644 index 0000000..fbb363d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/multi-tenancy-process-engine.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/multi-tenancy-tenant-identifiers.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/multi-tenancy-tenant-identifiers.png new file mode 100644 index 0000000..3dcfc7a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/multi-tenancy-tenant-identifiers.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/optimisticLockingParallel.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/optimisticLockingParallel.png new file mode 100644 index 0000000..afee020 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/optimisticLockingParallel.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/optimisticLockingTransactions.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/optimisticLockingTransactions.png new file mode 100644 index 0000000..bf8a21a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/optimisticLockingTransactions.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/parallel-gw.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/parallel-gw.png new file mode 100644 index 0000000..c2f8d28 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/parallel-gw.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/process-diagram-bpmn-js.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/process-diagram-bpmn-js.png new file mode 100644 index 0000000..4255c3e Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/process-diagram-bpmn-js.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/process-engine-activity-execution.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/process-engine-activity-execution.png new file mode 100644 index 0000000..101765f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/process-engine-activity-execution.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/process-engine-async-transactions.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/process-engine-async-transactions.png new file mode 100644 index 0000000..01639e5 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/process-engine-async-transactions.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/process-engine-async.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/process-engine-async.png new file mode 100644 index 0000000..73614eb Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/process-engine-async.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/receive-task.svg b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/receive-task.svg new file mode 100644 index 0000000..0cb809b --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/receive-task.svg @@ -0,0 +1 @@ +Receive Task \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/retry.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/retry.png new file mode 100644 index 0000000..2034a37 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/retry.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/signal-event.svg b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/signal-event.svg new file mode 100644 index 0000000..b320d6e --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/signal-event.svg @@ -0,0 +1 @@ +Signal \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/timer-event.svg b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/timer-event.svg new file mode 100644 index 0000000..2a840c2 --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/timer-event.svg @@ -0,0 +1 @@ +Timer \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/transactions-1.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/transactions-1.png new file mode 100644 index 0000000..a6362c6 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/transactions-1.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/transactions-2.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/transactions-2.png new file mode 100644 index 0000000..3ce0258 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/transactions-2.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/transactions-3.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/transactions-3.png new file mode 100644 index 0000000..5c9d44d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/transactions-3.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/user-task.svg b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/user-task.svg new file mode 100644 index 0000000..86cfcdd --- /dev/null +++ b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/user-task.svg @@ -0,0 +1 @@ +User Task \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-1.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-1.png new file mode 100644 index 0000000..ff600c3 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-1.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-3.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-3.png new file mode 100644 index 0000000..a614bca Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-3.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-4.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-4.png new file mode 100644 index 0000000..3e17854 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-4.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-5.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-5.png new file mode 100644 index 0000000..8ce8db0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-5.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-6.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-6.png new file mode 100644 index 0000000..8df9b12 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/variables-6.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/versioning.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/versioning.png new file mode 100644 index 0000000..5df099b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/process-engine/versioning.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/runtime-container-integration/jboss-jconsole.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/runtime-container-integration/jboss-jconsole.png new file mode 100644 index 0000000..889405b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/runtime-container-integration/jboss-jconsole.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/runtime-container-integration/jboss-service-dependencies.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/runtime-container-integration/jboss-service-dependencies.png new file mode 100644 index 0000000..4ff9755 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/runtime-container-integration/jboss-service-dependencies.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/deploy-form.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/deploy-form.png new file mode 100644 index 0000000..ea5df62 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/deploy-form.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/generated-forms-example.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/generated-forms-example.png new file mode 100644 index 0000000..0acd5da Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/generated-forms-example.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/reference-operaton-form.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/reference-operaton-form.png new file mode 100644 index 0000000..a7e2a28 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/reference-operaton-form.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/start-process-button.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/start-process-button.png new file mode 100644 index 0000000..6b02ae1 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/start-process-button.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/start-task-button.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/start-task-button.png new file mode 100644 index 0000000..3294d7c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/start-task-button.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/startFormExample.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/startFormExample.png new file mode 100644 index 0000000..871e916 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/startFormExample.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/task-form-process.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/task-form-process.png new file mode 100644 index 0000000..6398232 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/task-form-process.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/tasklist-forms-layouted-start.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/tasklist-forms-layouted-start.png new file mode 100644 index 0000000..43a6d09 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/tasklist-forms-layouted-start.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/tasklist-generic-form.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/tasklist-generic-form.png new file mode 100644 index 0000000..c8b2b58 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/tasklist-generic-form.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/variable-mapping-operaton-form.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/variable-mapping-operaton-form.png new file mode 100644 index 0000000..9cc9673 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/variable-mapping-operaton-form.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/variablesTaskFormExample.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/variablesTaskFormExample.png new file mode 100644 index 0000000..5ea2855 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/task-forms/variablesTaskFormExample.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-breakpoint.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-breakpoint.png new file mode 100644 index 0000000..b6760c0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-breakpoint.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-h2-login.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-h2-login.png new file mode 100644 index 0000000..b1f2a2f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-h2-login.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-h2-tables.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-h2-tables.png new file mode 100644 index 0000000..4905290 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-h2-tables.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-start-h2-server-2.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-start-h2-server-2.png new file mode 100644 index 0000000..08c6405 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-start-h2-server-2.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-start-h2-server.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-start-h2-server.png new file mode 100644 index 0000000..590252c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-start-h2-server.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-view.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-view.png new file mode 100644 index 0000000..f22e41f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/api-test-debug-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/test-scopes.png b/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/test-scopes.png new file mode 100644 index 0000000..770c00a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/user-guide/testing/test-scopes.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-access.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-access.png new file mode 100644 index 0000000..1abde2a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-access.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-audit-entity.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-audit-entity.png new file mode 100644 index 0000000..0f2da7b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-audit-entity.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization-application-new-group.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization-application-new-group.png new file mode 100644 index 0000000..9432be5 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization-application-new-group.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization-application-new-user.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization-application-new-user.png new file mode 100644 index 0000000..e5f4054 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization-application-new-user.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization-filter.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization-filter.png new file mode 100644 index 0000000..47b025b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization-filter.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization-users.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization-users.png new file mode 100644 index 0000000..b73196c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization-users.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization.png new file mode 100644 index 0000000..16ff0f8 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-authorization.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-diagnostics.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-diagnostics.png new file mode 100644 index 0000000..a9d0f05 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-diagnostics.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-execution-metrics.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-execution-metrics.png new file mode 100644 index 0000000..1765356 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-execution-metrics.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-groups.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-groups.png new file mode 100644 index 0000000..ca25974 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-groups.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-initial-user-setup.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-initial-user-setup.png new file mode 100644 index 0000000..0749340 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-initial-user-setup.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-start-page-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-start-page-view.png new file mode 100644 index 0000000..9a11fb3 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-start-page-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-system-audit.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-system-audit.png new file mode 100644 index 0000000..7b876f5 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-system-audit.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-system-management.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-system-management.png new file mode 100644 index 0000000..7395e8b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-system-management.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-tenants.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-tenants.png new file mode 100644 index 0000000..ef8de1a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-tenants.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-users.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-users.png new file mode 100644 index 0000000..d72bf0d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin-users.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_auth_edit_full_access.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_auth_edit_full_access.png new file mode 100644 index 0000000..2af7dc6 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_auth_edit_full_access.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_cockpit_access_group.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_cockpit_access_group.png new file mode 100644 index 0000000..d4691bc Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_cockpit_access_group.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_cockpit_proc_inst_id.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_cockpit_proc_inst_id.png new file mode 100644 index 0000000..13c7450 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_cockpit_proc_inst_id.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_filter_acc_read.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_filter_acc_read.png new file mode 100644 index 0000000..f8d1af7 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_filter_acc_read.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_def_acc_read.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_def_acc_read.png new file mode 100644 index 0000000..dd00fb8 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_def_acc_read.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_def_acc_read_create_inst_access.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_def_acc_read_create_inst_access.png new file mode 100644 index 0000000..0daa51c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_def_acc_read_create_inst_access.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_def_group_full_access.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_def_group_full_access.png new file mode 100644 index 0000000..d18ee17 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_def_group_full_access.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_def_group_read_access.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_def_group_read_access.png new file mode 100644 index 0000000..2c2588d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_def_group_read_access.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_inst_acc_create.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_inst_acc_create.png new file mode 100644 index 0000000..7a18dec Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_inst_acc_create.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_inst_id_acc.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_inst_id_acc.png new file mode 100644 index 0000000..5a30b5a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_proc_inst_id_acc.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_task_acc_edit.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_task_acc_edit.png new file mode 100644 index 0000000..4a8319c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_task_acc_edit.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_tasklist_access_group.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_tasklist_access_group.png new file mode 100644 index 0000000..6cb3e1b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/admin/admin_tasklist_access_group.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch-in-operator-modal.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch-in-operator-modal.png new file mode 100644 index 0000000..3f4e8b1 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch-in-operator-modal.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch-in-operator.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch-in-operator.png new file mode 100644 index 0000000..d101a6f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch-in-operator.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch-search.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch-search.png new file mode 100644 index 0000000..e5ee558 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch-search.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch.png new file mode 100644 index 0000000..3556234 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch_operation_confirmation.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch_operation_confirmation.png new file mode 100644 index 0000000..76f2558 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch_operation_confirmation.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch_operation_definition.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch_operation_definition.png new file mode 100644 index 0000000..bf448a4 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch_operation_definition.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch_operation_result.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch_operation_result.png new file mode 100644 index 0000000..ab305b9 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/batch/batch_operation_result.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/accessing_2.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/accessing_2.png new file mode 100644 index 0000000..aeb1c6b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/accessing_2.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/add-filter.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/add-filter.png new file mode 100644 index 0000000..8ac78b0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/add-filter.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/batch-operation.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/batch-operation.png new file mode 100644 index 0000000..d955553 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/batch-operation.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/breadcrumbs.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/breadcrumbs.png new file mode 100644 index 0000000..b72243c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/breadcrumbs.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/business-key.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/business-key.png new file mode 100644 index 0000000..fe21aad Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/business-key.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-activity-instance-tree-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-activity-instance-tree-view.png new file mode 100644 index 0000000..b9e978a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-activity-instance-tree-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-add-variables.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-add-variables.png new file mode 100644 index 0000000..57788b4 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-add-variables.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-detail.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-detail.png new file mode 100644 index 0000000..3707f9f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-detail.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-instance-selection.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-instance-selection.png new file mode 100644 index 0000000..9f4a144 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-instance-selection.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-options.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-options.png new file mode 100644 index 0000000..df061ae Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-options.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-view.png new file mode 100644 index 0000000..c487624 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-bulk-delete.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-bulk-delete.png new file mode 100644 index 0000000..3fed87f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-bulk-delete.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-bulk-retry.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-bulk-retry.png new file mode 100644 index 0000000..aa4bd44 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-bulk-retry.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-call-activity-definition-navigation.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-call-activity-definition-navigation.png new file mode 100644 index 0000000..7e42148 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-call-activity-definition-navigation.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-call-activity-instance-drill-down.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-call-activity-instance-drill-down.png new file mode 100644 index 0000000..f18b0f7 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-call-activity-instance-drill-down.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-cancel-process-instance.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-cancel-process-instance.png new file mode 100644 index 0000000..c3b70f3 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-cancel-process-instance.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-delete-process-definition.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-delete-process-definition.png new file mode 100644 index 0000000..9daed49 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-delete-process-definition.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes-search.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes-search.png new file mode 100644 index 0000000..e067ec5 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes-search.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes.png new file mode 100644 index 0000000..664e82e Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-detailed-information-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-detailed-information-view.png new file mode 100644 index 0000000..1d96ff9 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-detailed-information-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-documentation.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-documentation.png new file mode 100644 index 0000000..d6df10b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-documentation.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-edit-variables.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-edit-variables.png new file mode 100644 index 0000000..de6b665 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-edit-variables.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-export-download-as-csv.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-export-download-as-csv.png new file mode 100644 index 0000000..a628802 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-export-download-as-csv.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-export-modal-dialog.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-export-modal-dialog.png new file mode 100644 index 0000000..875e09d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-export-modal-dialog.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-export-result.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-export-result.png new file mode 100644 index 0000000..655b544 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-export-result.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-export.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-export.png new file mode 100644 index 0000000..c35d825 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-export.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-failed-job-drill-down.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-failed-job-drill-down.png new file mode 100644 index 0000000..185d989 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-failed-job-drill-down.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-heatmap.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-heatmap.png new file mode 100644 index 0000000..73a4edc Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-heatmap.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-definition-history.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-definition-history.png new file mode 100644 index 0000000..248f7e2 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-definition-history.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-instance-history.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-instance-history.png new file mode 100644 index 0000000..b36e1ab Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-instance-history.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-in-operator-modal.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-in-operator-modal.png new file mode 100644 index 0000000..efca526 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-in-operator-modal.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-in-operator.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-in-operator.png new file mode 100644 index 0000000..8fab39c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-in-operator.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-instance-job-retry.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-instance-job-retry.png new file mode 100644 index 0000000..a0e63c1 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-instance-job-retry.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-cancel.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-cancel.png new file mode 100644 index 0000000..5f11256 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-cancel.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-review.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-review.png new file mode 100644 index 0000000..ab6b999 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-review.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-start.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-start.png new file mode 100644 index 0000000..64e0ba8 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-modification-start.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-modification.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-modification.png new file mode 100644 index 0000000..164e5f0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-modification.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-process-definition-state.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-process-definition-state.png new file mode 100644 index 0000000..a2c0602 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-process-definition-state.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-process-definitions-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-process-definitions-view.png new file mode 100644 index 0000000..21f3759 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-process-definitions-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-process-instances-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-process-instances-view.png new file mode 100644 index 0000000..171506d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-process-instances-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-restart-confirm.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-restart-confirm.png new file mode 100644 index 0000000..5c1a7fb Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-restart-confirm.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-restart-instance-selection.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-restart-instance-selection.png new file mode 100644 index 0000000..c684c52 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-restart-instance-selection.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-restart.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-restart.png new file mode 100644 index 0000000..c00b7b2 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-restart.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-search.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-search.png new file mode 100644 index 0000000..433f067 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-search.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-set-job-priority.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-set-job-priority.png new file mode 100644 index 0000000..7fe45c0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/cockpit-set-job-priority.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/diagram-overlay-button.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/diagram-overlay-button.png new file mode 100644 index 0000000..5a82b75 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/diagram-overlay-button.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/history-completed.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/history-completed.png new file mode 100644 index 0000000..dd95337 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/history-completed.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/history-end-date.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/history-end-date.png new file mode 100644 index 0000000..c17f649 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/history-end-date.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/history-running.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/history-running.png new file mode 100644 index 0000000..389fa2b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/history-running.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/migration.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/migration.png new file mode 100644 index 0000000..ebb64ff Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/migration.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/modal-dialog.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/modal-dialog.png new file mode 100644 index 0000000..307332d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/modal-dialog.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/process-action.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/process-action.png new file mode 100644 index 0000000..7112996 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/process-action.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/shape.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/shape.png new file mode 100644 index 0000000..f0d336f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/shape.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/start-date-before-after.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/start-date-before-after.png new file mode 100644 index 0000000..3122354 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/start-date-before-after.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/start-date.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/start-date.png new file mode 100644 index 0000000..d423625 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/start-date.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step1_createMapping.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step1_createMapping.png new file mode 100644 index 0000000..41e2f91 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step1_createMapping.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step1_errorPopover.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step1_errorPopover.png new file mode 100644 index 0000000..9508d4d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step1_errorPopover.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step1_overview.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step1_overview.png new file mode 100644 index 0000000..4ddc40f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step1_overview.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step2.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step2.png new file mode 100644 index 0000000..7be4122 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step2.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step2_edit.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step2_edit.png new file mode 100644 index 0000000..0345c7f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step2_edit.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step2_modal.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step2_modal.png new file mode 100644 index 0000000..baacd59 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step2_modal.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step2_validation.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step2_validation.png new file mode 100644 index 0000000..c9ca73e Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step2_validation.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step3.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step3.png new file mode 100644 index 0000000..f906032 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step3.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step4.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step4.png new file mode 100644 index 0000000..5b44eda Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step4.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step5_batch.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step5_batch.png new file mode 100644 index 0000000..a0e3b6a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step5_batch.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step5_error.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step5_error.png new file mode 100644 index 0000000..0604683 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/step5_error.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/var-boolean.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/var-boolean.png new file mode 100644 index 0000000..5d79ca0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/var-boolean.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/var-numeric.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/var-numeric.png new file mode 100644 index 0000000..a438077 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/var-numeric.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/var-string.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/var-string.png new file mode 100644 index 0000000..6ea3139 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/var-string.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/variable-filter.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/variable-filter.png new file mode 100644 index 0000000..5ed7898 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/bpmn/variable-filter.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/add-variables.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/add-variables.png new file mode 100644 index 0000000..81a4d24 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/add-variables.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/case-dashboard-deployed.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/case-dashboard-deployed.png new file mode 100644 index 0000000..b39e7c1 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/case-dashboard-deployed.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/case-dashboard-search.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/case-dashboard-search.png new file mode 100644 index 0000000..64e07eb Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/case-dashboard-search.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/case-definition-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/case-definition-view.png new file mode 100644 index 0000000..a9def33 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/case-definition-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/case-instance-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/case-instance-view.png new file mode 100644 index 0000000..3944e07 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/case-instance-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/detailed-information-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/detailed-information-view.png new file mode 100644 index 0000000..79d1ef1 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/detailed-information-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/edit-variables.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/edit-variables.png new file mode 100644 index 0000000..249df00 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/edit-variables.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/terminate-case.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/terminate-case.png new file mode 100644 index 0000000..bb57594 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cmmn/terminate-case.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-audit-annotation.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-audit-annotation.png new file mode 100644 index 0000000..8964090 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-audit-annotation.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-audit-timestamp.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-audit-timestamp.png new file mode 100644 index 0000000..af0f71a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-audit-timestamp.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-audit-type.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-audit-type.png new file mode 100644 index 0000000..8f8ca69 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-audit-type.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-cleanup-page.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-cleanup-page.png new file mode 100644 index 0000000..b5434f7 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-cleanup-page.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-cleanup-state-incident.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-cleanup-state-incident.png new file mode 100644 index 0000000..5621b5a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-cleanup-state-incident.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-cleanup-ttl.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-cleanup-ttl.png new file mode 100644 index 0000000..7cdfff3 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-cleanup-ttl.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-deployments-page.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-deployments-page.png new file mode 100644 index 0000000..c04bea9 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-deployments-page.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-multi-engine.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-multi-engine.png new file mode 100644 index 0000000..ad1d78a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-multi-engine.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-operation-log.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-operation-log.png new file mode 100644 index 0000000..aef86fb Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-operation-log.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-user-operation-log.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-user-operation-log.png new file mode 100644 index 0000000..4376c6c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/cockpit-user-operation-log.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dashboard-metrics.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dashboard-metrics.png new file mode 100644 index 0000000..87699c1 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dashboard-metrics.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dashboard.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dashboard.png new file mode 100644 index 0000000..5581153 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dashboard.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-list.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-list.png new file mode 100644 index 0000000..ebf0713 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-list.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-drd-tab.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-drd-tab.png new file mode 100644 index 0000000..5a89e30 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-drd-tab.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instance-instances-tab.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instance-instances-tab.png new file mode 100644 index 0000000..8e6ff72 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instance-instances-tab.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instances-tab.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instances-tab.png new file mode 100644 index 0000000..c648fd4 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instances-tab.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-view.png new file mode 100644 index 0000000..e5f624a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-definition-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-instance-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-instance-view.png new file mode 100644 index 0000000..2dc5a83 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-instance-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-instance-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-instance-view.png new file mode 100644 index 0000000..68ebe06 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-instance-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-view.png new file mode 100644 index 0000000..6ca1223 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-drd-list.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-drd-list.png new file mode 100644 index 0000000..84f8311 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/cockpit-drd-list.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/decision-instance-search.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/decision-instance-search.png new file mode 100644 index 0000000..f31df45 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/dmn/decision-instance-search.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/duration-report.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/duration-report.png new file mode 100644 index 0000000..74066b0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/duration-report.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/cockpit-plugin.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/cockpit-plugin.png new file mode 100644 index 0000000..142140e Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/cockpit-plugin.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-batch-operation.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-batch-operation.png new file mode 100644 index 0000000..51a438b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-batch-operation.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-action.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-action.png new file mode 100644 index 0000000..daaf29a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-action.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-diagram-overlay.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-diagram-overlay.png new file mode 100644 index 0000000..d7c00ed Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-diagram-overlay.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-tab.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-tab.png new file mode 100644 index 0000000..5e44af3 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-definition-tab.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-action.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-action.png new file mode 100644 index 0000000..a00c582 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-action.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-diagram-overlay.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-diagram-overlay.png new file mode 100644 index 0000000..39bcc0f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-diagram-overlay.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-tab.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-tab.png new file mode 100644 index 0000000..5c6c449 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-case-instance-tab.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-cases-dashboard.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-cases-dashboard.png new file mode 100644 index 0000000..0c3fbdd Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-cases-dashboard.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-decisions-dashboard.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-decisions-dashboard.png new file mode 100644 index 0000000..467c870 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-decisions-dashboard.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-definition-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-definition-view.png new file mode 100644 index 0000000..0a89be5 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-definition-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-instance-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-instance-view.png new file mode 100644 index 0000000..fef9d7c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-instance-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-processes-dashboard.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-processes-dashboard.png new file mode 100644 index 0000000..54a946d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-cockpit-processes-dashboard.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-dashboard-custom.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-dashboard-custom.png new file mode 100644 index 0000000..ff00053 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-dashboard-custom.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-dashboard-metrics-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-dashboard-metrics-view.png new file mode 100644 index 0000000..afb9d01 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-dashboard-metrics-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-action.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-action.png new file mode 100644 index 0000000..08234b9 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-action.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-tab.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-tab.png new file mode 100644 index 0000000..3224275 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-tab.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-table.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-table.png new file mode 100644 index 0000000..39dd2bb Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-definition-table.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-action.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-action.png new file mode 100644 index 0000000..69a7995 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-action.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-tab.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-tab.png new file mode 100644 index 0000000..1eda79b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-tab.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-table.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-table.png new file mode 100644 index 0000000..a5f40fa Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-decision-instance-table.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-definition-diagram-overlay.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-definition-diagram-overlay.png new file mode 100644 index 0000000..04c49d9 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-definition-diagram-overlay.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-incident-action.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-incident-action.png new file mode 100644 index 0000000..414641e Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-incident-action.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-instance-diagram-overlay.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-instance-diagram-overlay.png new file mode 100644 index 0000000..ede503f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-instance-diagram-overlay.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-job-definition-action.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-job-definition-action.png new file mode 100644 index 0000000..d5d70dd Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-job-definition-action.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-login-custom.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-login-custom.png new file mode 100644 index 0000000..56196b0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-login-custom.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-navigation.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-navigation.png new file mode 100644 index 0000000..dfccc65 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-navigation.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-process-definition-details.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-process-definition-details.png new file mode 100644 index 0000000..6da796f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-process-definition-details.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-process-definition-runtime-action.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-process-definition-runtime-action.png new file mode 100644 index 0000000..4724883 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-process-definition-runtime-action.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-process-instance-details.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-process-instance-details.png new file mode 100644 index 0000000..7b92f0b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-process-instance-details.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-process-instance-runtime-action.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-process-instance-runtime-action.png new file mode 100644 index 0000000..35b6749 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-process-instance-runtime-action.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-repository-resource-action.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-repository-resource-action.png new file mode 100644 index 0000000..6205dcb Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-repository-resource-action.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-repository-resource-detail.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-repository-resource-detail.png new file mode 100644 index 0000000..f290e02 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-repository-resource-detail.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-task-dashboard.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-task-dashboard.png new file mode 100644 index 0000000..705bb18 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/extend/plugin-point-task-dashboard.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/historic-task-instance-report.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/historic-task-instance-report.png new file mode 100644 index 0000000..2a1755f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/historic-task-instance-report.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/task-dashboard.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/task-dashboard.png new file mode 100644 index 0000000..fa6bf96 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/cockpit/task-dashboard.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-case-insensitive.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-case-insensitive.png new file mode 100644 index 0000000..5aae843 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-case-insensitive.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-create-filter.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-create-filter.png new file mode 100644 index 0000000..d429ae5 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-create-filter.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-dashboard-detail.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-dashboard-detail.png new file mode 100644 index 0000000..b97e5cb Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-dashboard-detail.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-filter-detail.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-filter-detail.png new file mode 100644 index 0000000..15954eb Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-filter-detail.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-filter-results.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-filter-results.png new file mode 100644 index 0000000..e998b4f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-filter-results.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-in-operator-modal.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-in-operator-modal.png new file mode 100644 index 0000000..9e18c76 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-in-operator-modal.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-in-operator.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-in-operator.png new file mode 100644 index 0000000..a97f354 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-in-operator.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-card.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-card.png new file mode 100644 index 0000000..6f0935f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-card.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-list.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-list.png new file mode 100644 index 0000000..71a88cd Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-list.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-navbar-action.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-navbar-action.png new file mode 100644 index 0000000..dec6f29 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-navbar-action.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-task-action.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-task-action.png new file mode 100644 index 0000000..bb6a75b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-task-action.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-task-detail.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-task-detail.png new file mode 100644 index 0000000..96d461e Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-task-detail.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-tasklist-header.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-tasklist-header.png new file mode 100644 index 0000000..af000cf Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-plugin-tasklist-header.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-start-process.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-start-process.png new file mode 100644 index 0000000..f29ae2e Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-start-process.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-start-task.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-start-task.png new file mode 100644 index 0000000..07ce333 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-start-task.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-task-form-modeler.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-task-form-modeler.png new file mode 100644 index 0000000..82bfbad Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-task-form-modeler.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-task-search.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-task-search.png new file mode 100644 index 0000000..df9a253 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-task-search.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-task-view-tabs.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-task-view-tabs.png new file mode 100644 index 0000000..8bfd011 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-task-view-tabs.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-task-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-task-view.png new file mode 100644 index 0000000..698da1b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-task-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-toggle-view.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-toggle-view.png new file mode 100644 index 0000000..6aceb71 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-toggle-view.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-user-task-state-complete.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-user-task-state-complete.png new file mode 100644 index 0000000..d908117 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/tasklist/tasklist-user-task-state-complete.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/welcome/welcome-dashboard-plugin.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/welcome/welcome-dashboard-plugin.png new file mode 100644 index 0000000..4509e22 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/welcome/welcome-dashboard-plugin.png differ diff --git a/versioned_docs/version-1.0.0/assets/documentation/webapps/welcome/welcome-profile-plugin.png b/versioned_docs/version-1.0.0/assets/documentation/webapps/welcome/welcome-profile-plugin.png new file mode 100644 index 0000000..1471081 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/documentation/webapps/welcome/welcome-profile-plugin.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/cockpit-loan-approval.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/cockpit-loan-approval.png new file mode 100644 index 0000000..524abb0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/cockpit-loan-approval.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/create-process-definition-authorization.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/create-process-definition-authorization.png new file mode 100644 index 0000000..8d9a589 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/create-process-definition-authorization.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/create-process-instance-authorization.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/create-process-instance-authorization.png new file mode 100644 index 0000000..3521bfb Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/create-process-instance-authorization.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/diagram.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/diagram.png new file mode 100644 index 0000000..d20ed8c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/diagram.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/eclipse-new-project.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/eclipse-new-project.png new file mode 100644 index 0000000..d01c762 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/eclipse-new-project.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/form-builder-start-form.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/form-builder-start-form.png new file mode 100644 index 0000000..b4bcdb0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/form-builder-start-form.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-new-bpmn-diagram.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-new-bpmn-diagram.png new file mode 100644 index 0000000..54233bd Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-new-bpmn-diagram.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-service-task1.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-service-task1.png new file mode 100644 index 0000000..15e2b92 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-service-task1.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-service-task2.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-service-task2.png new file mode 100644 index 0000000..057348d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-service-task2.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-service-task3.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-service-task3.png new file mode 100644 index 0000000..cbd0435 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-service-task3.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-start-form.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-start-form.png new file mode 100644 index 0000000..6b5b686 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-start-form.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step1.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step1.png new file mode 100644 index 0000000..6e98e83 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step1.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step2.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step2.png new file mode 100644 index 0000000..0fed4f7 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step2.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step3.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step3.png new file mode 100644 index 0000000..6464363 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step3.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step4.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step4.png new file mode 100644 index 0000000..c631cc1 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step4.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step5.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step5.png new file mode 100644 index 0000000..8f11a6e Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/modeler-step5.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/start-form-embedded.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/start-form-embedded.png new file mode 100644 index 0000000..9fa86ab Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/start-form-embedded.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/start-form-generic.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/start-form-generic.png new file mode 100644 index 0000000..59f291b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/start-form-generic.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/task-form-embedded.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/task-form-embedded.png new file mode 100644 index 0000000..a388cd8 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/task-form-embedded.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/task-form-generic.png b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/task-form-generic.png new file mode 100644 index 0000000..2d2fa17 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/java-process-app/task-form-generic.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/approve-order.png b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/approve-order.png new file mode 100644 index 0000000..9d3d5f1 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/approve-order.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/maven-project-settings.png b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/maven-project-settings.png new file mode 100644 index 0000000..78fecdb Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/maven-project-settings.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/modeler-new-bpmn-diagram.png b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/modeler-new-bpmn-diagram.png new file mode 100644 index 0000000..6fd27b0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/modeler-new-bpmn-diagram.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-condition-expression.png b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-condition-expression.png new file mode 100644 index 0000000..3b7a545 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-condition-expression.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-expression.png b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-expression.png new file mode 100644 index 0000000..f655983 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-expression.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-no.png b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-no.png new file mode 100644 index 0000000..1248f49 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-no.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-prepare-pizza.png b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-prepare-pizza.png new file mode 100644 index 0000000..b8128eb Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-prepare-pizza.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-send-rejection-email.png b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-send-rejection-email.png new file mode 100644 index 0000000..6810545 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-send-rejection-email.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-service-task-expression.png b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-service-task-expression.png new file mode 100644 index 0000000..16c4eaa Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-service-task-expression.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-start-form.png b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-start-form.png new file mode 100644 index 0000000..1b5f6b0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-start-form.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-task-form.png b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-task-form.png new file mode 100644 index 0000000..8771252 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process-task-form.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process.png b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process.png new file mode 100644 index 0000000..c1e7184 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/pizza-order-process.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/prepare-pizza.png b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/prepare-pizza.png new file mode 100644 index 0000000..e585276 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/javaee7/prepare-pizza.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/spring/eclipse-new-project.png b/versioned_docs/version-1.0.0/assets/get-started/archive/spring/eclipse-new-project.png new file mode 100644 index 0000000..6c412c0 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/spring/eclipse-new-project.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/spring/process-model.png b/versioned_docs/version-1.0.0/assets/get-started/archive/spring/process-model.png new file mode 100644 index 0000000..1d9dcb2 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/spring/process-model.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/spring/project-layout-after-setup.png b/versioned_docs/version-1.0.0/assets/get-started/archive/spring/project-layout-after-setup.png new file mode 100644 index 0000000..27f106f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/spring/project-layout-after-setup.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/archive/spring/service-task.png b/versioned_docs/version-1.0.0/assets/get-started/archive/spring/service-task.png new file mode 100644 index 0000000..3f3b0b3 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/archive/spring/service-task.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-decision-history-beverages-dmn.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-decision-history-beverages-dmn.png new file mode 100644 index 0000000..6bf4001 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-decision-history-beverages-dmn.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-decision-history-dish-dmn.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-decision-history-dish-dmn.png new file mode 100644 index 0000000..a47889c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-decision-history-dish-dmn.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-decision-overview-beverages-dmn.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-decision-overview-beverages-dmn.png new file mode 100644 index 0000000..4e09ff8 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-decision-overview-beverages-dmn.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-decision-overview-dish-dmn.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-decision-overview-dish-dmn.png new file mode 100644 index 0000000..323b6df Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-decision-overview-dish-dmn.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-dish-dmn.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-dish-dmn.png new file mode 100644 index 0000000..a841817 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/cockpit-dish-dmn.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/eclipse-new-project.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/eclipse-new-project.png new file mode 100644 index 0000000..1211ac8 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/eclipse-new-project.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step1.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step1.png new file mode 100644 index 0000000..038b7ef Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step1.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step2.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step2.png new file mode 100644 index 0000000..f8da917 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step2.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step3.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step3.png new file mode 100644 index 0000000..0584a62 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step3.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step4.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step4.png new file mode 100644 index 0000000..b979149 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step4.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step5.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step5.png new file mode 100644 index 0000000..4de8214 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-drd-step5.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-new-dmn-table.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-new-dmn-table.png new file mode 100644 index 0000000..2b7fb6c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-new-dmn-table.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-save-dmn-table.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-save-dmn-table.png new file mode 100644 index 0000000..7d84b2c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-save-dmn-table.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step1.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step1.png new file mode 100644 index 0000000..a5dd8fc Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step1.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step2a.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step2a.png new file mode 100644 index 0000000..ce2d93f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step2a.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step2b.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step2b.png new file mode 100644 index 0000000..c176b9b Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step2b.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step3.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step3.png new file mode 100644 index 0000000..9636dc3 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step3.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step4.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step4.png new file mode 100644 index 0000000..4745be6 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step4.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step5.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step5.png new file mode 100644 index 0000000..028b9d8 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step5.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step6.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step6.png new file mode 100644 index 0000000..de35b54 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step6.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step7.png b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step7.png new file mode 100644 index 0000000..88a15c4 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/dmn/modeler-step7.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/cockpit-approve-payment.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/cockpit-approve-payment.png new file mode 100644 index 0000000..2605a07 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/cockpit-approve-payment.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/cockpit-dmn-table.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/cockpit-dmn-table.png new file mode 100644 index 0000000..f043647 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/cockpit-dmn-table.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/cockpit-payment-retrieval.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/cockpit-payment-retrieval.png new file mode 100644 index 0000000..48be0cc Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/cockpit-payment-retrieval.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/diagram.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/diagram.png new file mode 100644 index 0000000..4f8a380 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/diagram.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/eclipse-new-project.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/eclipse-new-project.png new file mode 100644 index 0000000..f24539d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/eclipse-new-project.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-businessrule-task1.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-businessrule-task1.png new file mode 100644 index 0000000..175cbd5 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-businessrule-task1.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-businessrule-task2.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-businessrule-task2.png new file mode 100644 index 0000000..853e839 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-businessrule-task2.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-deploy-form.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-deploy-form.png new file mode 100644 index 0000000..b2d3aef Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-deploy-form.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-deploy1.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-deploy1.png new file mode 100644 index 0000000..cadd78f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-deploy1.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-deploy2.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-deploy2.png new file mode 100644 index 0000000..e6310e9 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-deploy2.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-deploy3.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-deploy3.png new file mode 100644 index 0000000..2810bf2 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-deploy3.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn2.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn2.png new file mode 100644 index 0000000..9e9fa38 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn2.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn3.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn3.png new file mode 100644 index 0000000..0e776b6 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn3.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn4.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn4.png new file mode 100644 index 0000000..06d9a82 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn4.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn5.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn5.png new file mode 100644 index 0000000..173f713 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn5.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn6.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn6.png new file mode 100644 index 0000000..0d82247 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-dmn6.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway1.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway1.png new file mode 100644 index 0000000..b7726c1 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway1.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway2.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway2.png new file mode 100644 index 0000000..d578a13 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway2.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway3.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway3.png new file mode 100644 index 0000000..77296c1 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway3.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway4.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway4.png new file mode 100644 index 0000000..61016be Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway4.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway5.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway5.png new file mode 100644 index 0000000..719892d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway5.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway6.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway6.png new file mode 100644 index 0000000..d8eeb6c Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-gateway6.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-new-bpmn-diagram.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-new-bpmn-diagram.png new file mode 100644 index 0000000..f3db045 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-new-bpmn-diagram.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-new-dmn-diagram-properties.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-new-dmn-diagram-properties.png new file mode 100644 index 0000000..cac4fa9 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-new-dmn-diagram-properties.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-new-dmn-diagram.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-new-dmn-diagram.png new file mode 100644 index 0000000..f84e0ef Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-new-dmn-diagram.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-new-dmn-table.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-new-dmn-table.png new file mode 100644 index 0000000..9d09e15 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-new-dmn-table.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-platform-selection.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-platform-selection.png new file mode 100644 index 0000000..dbe8f39 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-platform-selection.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step1.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step1.png new file mode 100644 index 0000000..5f8bd21 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step1.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step2.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step2.png new file mode 100644 index 0000000..b8b27ce Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step2.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step3.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step3.png new file mode 100644 index 0000000..e967274 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step3.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step4.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step4.png new file mode 100644 index 0000000..a40724d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step4.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step5.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step5.png new file mode 100644 index 0000000..741360e Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-step5.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask-add.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask-add.png new file mode 100644 index 0000000..b917ddf Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask-add.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask-form.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask-form.png new file mode 100644 index 0000000..f8ce36f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask-form.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask1.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask1.png new file mode 100644 index 0000000..d2c9dc3 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask1.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask2.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask2.png new file mode 100644 index 0000000..0b6d7a2 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask2.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask3.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask3.png new file mode 100644 index 0000000..0180d62 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask3.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask4.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask4.png new file mode 100644 index 0000000..83abb3a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask4.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask5.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask5.png new file mode 100644 index 0000000..cc7b953 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask5.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask6.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask6.png new file mode 100644 index 0000000..0a12e9f Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/modeler-usertask6.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/postman-start-instance.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/postman-start-instance.png new file mode 100644 index 0000000..dfa9a26 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/postman-start-instance.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/start-form-generic.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/start-form-generic.png new file mode 100644 index 0000000..2c2134a Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/start-form-generic.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/task-form-generated.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/task-form-generated.png new file mode 100644 index 0000000..57f8f5d Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/task-form-generated.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/tasklist-dmn1.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/tasklist-dmn1.png new file mode 100644 index 0000000..c6cac04 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/tasklist-dmn1.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/quick-start/tasklist-dmn2.png b/versioned_docs/version-1.0.0/assets/get-started/quick-start/tasklist-dmn2.png new file mode 100644 index 0000000..8184207 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/quick-start/tasklist-dmn2.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/spring-boot/eclipse-new-project.png b/versioned_docs/version-1.0.0/assets/get-started/spring-boot/eclipse-new-project.png new file mode 100644 index 0000000..84dd001 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/spring-boot/eclipse-new-project.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/spring-boot/loanApproval.png b/versioned_docs/version-1.0.0/assets/get-started/spring-boot/loanApproval.png new file mode 100644 index 0000000..568cbb5 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/spring-boot/loanApproval.png differ diff --git a/versioned_docs/version-1.0.0/assets/get-started/spring-boot/tasklist.png b/versioned_docs/version-1.0.0/assets/get-started/spring-boot/tasklist.png new file mode 100644 index 0000000..b309c15 Binary files /dev/null and b/versioned_docs/version-1.0.0/assets/get-started/spring-boot/tasklist.png differ diff --git a/versioned_docs/version-1.0.0/documentation/examples/index.md b/versioned_docs/version-1.0.0/documentation/examples/index.md new file mode 100644 index 0000000..826ada3 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/examples/index.md @@ -0,0 +1,12 @@ +--- + +sidebar_position: 70 + +--- +# Examples + +Completed the [Getting Started Guides](../../get-started/index.md)? Now discover what you can build with Operaton. + +This page collects links to hands-on examples around Operaton. + +* [Examples](https://github.com/operaton/operaton-bpm-examples) (On Github) diff --git a/versioned_docs/version-1.0.0/documentation/index.md b/versioned_docs/version-1.0.0/documentation/index.md new file mode 100644 index 0000000..56b8f32 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/index.md @@ -0,0 +1,34 @@ +--- +sidebar_position: 1 +--- + +# The Operaton Manual + +Welcome to the Operaton Manual! Operaton is a light-weight, open-source platform for Business Process Management. The Manual introduces key concepts in Operaton, provides installation procedures as well as a comprehensive reference section. + +## Getting Started + +The [**Guide Get started with Operaton**](/docs/get-started/index.md) is the quickest and easiest way to get up and running with Operaton. Alternatives include: + +| | | | | +|--|--|--|--| +| [BPMN 2.0](/docs/get-started/quick-start/) | [DMN 1.3](/docs/get-started/dmn/) | [Spring Boot](/docs/get-started/spring-boot/) | [Apache Maven](/docs/get-started/apache-maven.md) | + +Once you completed a Getting Started Guide, you may find the following topics useful: + +| Introduction | Guide | References | +|--|--|--| +| [Overview](./introduction/) | [Installation](./installation/index.md) | [REST Api](./reference/rest/index.md) | +| [Download](./introduction/downloading-operaton.md) | [User Guide](./user-guide/index.md)| [Javadoc](#) | +| [Architecture](./introduction/architecture.md) | [Modeler](./modeling-bpmn/index.md) | [BPMN 2.0](./reference/bpmn20/index.md) | +| [Supported Environments](./introduction/supported-environments.md) | [Web Applications](./webapps/index.md) |[CMMN 1.1](./reference/cmmn11/index.md) | +| | [Update & Migration](./update/index.md) | [DMN 1.3](./reference/dmn/index.md) | +| | | [HTML Forms](./reference/forms/index.md) | + +## Getting Help + +In case you get stuck on a problem make sure to [ask for Help in the Forums](https://forum.operaton.org). + +## Community Extensions + +A number of Community Extensions enhance Operaton with additional capabilities. Browse the Operaton Community Hub for information on building a Operaton Community Extension, discover new Operaton Community Extension open source projects to contribute to, and more. \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/installation/camunda-modeler.md b/versioned_docs/version-1.0.0/documentation/installation/camunda-modeler.md new file mode 100644 index 0000000..ffee286 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/camunda-modeler.md @@ -0,0 +1,10 @@ +--- + +title: "Camunda Modeler" +sidebar_position: 01 +description: "Install the Camunda Modeler for BPMN 2.0, DMN 1.3 and Operaton Forms" + +--- +# Install the Camunda Modeler + +You can find out how to install the Camunda Desktop Modeler on the Camunda [documentation website](https://docs.camunda.io/docs/components/modeler/camunda-modeler/install-the-modeler/). \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/installation/database-schema.md b/versioned_docs/version-1.0.0/documentation/installation/database-schema.md new file mode 100644 index 0000000..5ec2cfb --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/database-schema.md @@ -0,0 +1,174 @@ +--- + +title: "Database Schema" +sidebar_position: 3 +description: "Install and update the Operaton database schema used by the Process Engine." + +--- +## Install the Database Schema + +This document will guide you through the installation and update of the Operaton [database schema](../user-guide/process-engine/database/database-schema.md) used by the process engine. +Regardless of the [architecture of your application setup](../introduction/architecture.md), the process engine always requires this database schema. +In a production environment, we recommend setting up this schema yourself and reference the prepared database instance in your application configuration. +Consult the installation guide related to your setup to configure the database for a [remote engine](../installation/operaton-bpm-run.md), [shared engine](../installation/full/index.md), or [embedded engine](../installation/spring-boot.md) accordingly. + +This guide will not detail how to set up an instance of your target database or how to create a schema object on it. +Consult the documentation of your target database on how to do that. +Operaton supports a variety of databases that are documented in the [supported environments](../introduction/supported-environments.md#databases). + +Operaton supports the following ways of installing the database schema: + +* Use the database migration tool [Liquibase](https://www.liquibase.org/) with the provided changelog for a semi-automatic installation and update. Liquibase keeps track of database schema changes. This allows you to focus on *when* changes should be applied rather than also on *which* changes are relevant. Starting with version `7.16.0`, Operaton comes with a curated *changelog file* that Liquibase can consume. +* Use the provided SQL scripts with the tools related to your database for a fully manual installation and update. A manual procedure allows you to fully control the SQL statements that are executed on your database instance and to adjust those statements to your needs if necessary. + +:::note[Isolation level] +READ COMMITED is the required isolation level for database systems to run Operaton with. +You may have to change the default setting on your database when installing Operaton. +For more information see the documentation on [isolation levels](../user-guide/process-engine/database/database-configuration.md#isolation-level-configuration). +::: + +## Installation + +You can either install your database schema using Liquibase or using the provided SQL scripts manually. You can switch between those mechanisms when updating your Operaton version at a later stage if desired. +However, this might come with additional preparation work to work reliably. +The [update](#update) paragraph provides more details on this topic. + +### Liquibase installation + +Operaton comes with a maintained changelog file that Liquibase can consume. +This changelog defines which SQL statements to execute on a database. +You can find the changelog and its referenced resources on our [Artifact Repository]. +Select the respective version (`$PLATFORM_VERSION`) and download the resources as a `zip` or `tar.gz` file. +Open the `operaton-sql-scripts-$PLATFORM_VERSION/liquibase` folder to find the changelog. +In case you are using a [pre-packaged distribution], the Liquibase resources already reside in the `sql/liquibase` folder of the distribution. + +The `liquibase` folder contains the following resources: + +* `operaton-changelog.xml` +* `baseline` directory + +Liquibases uses these resources in combination with the scripts in the `upgrade` folder next to the `liquibase` folder to install the schema. + +Perform the following steps to install the database schema on your database instance: + +1. Setup Liquibase, e.g. by [downloading Liquibase CLI](https://www.liquibase.org/download) +1. Run Liquibase's [update command](https://docs.liquibase.com/commands/community/update.html) referencing the `operaton-changelog.xml`. +You can pass on the connection details to your database instance via parameters as described in the Liquibase documentation or [create a properties file](https://docs.liquibase.com/workflows/liquibase-community/creating-config-properties.html). + +Liquibase creates two additional tables to keep track of the changes that have been applied to your database. +The `DATABASECHANGELOG` table keeps track of all applied changes. The `DATABASECHANGELOGLOCK` table prevents conflicts from concurrent updates on your database instance by multiple Liquibase instances. You can read more about it in the [Liquibase guide](https://www.liquibase.org/get-started/how-liquibase-works). + +As you create the tables externally via Liquibase, you have to configure the engine to **not** create tables at startup as well. +Set the `databaseSchemaUpdate` property to `false` (or, in case you are using Oracle, to `noop`). +Consult the [manual installation guide](../installation/full/index.md) of your distribution for further information on how to achieve that. + +:::note[Heads Up!] +Liquibase provides additional commands to preview all changes that will be applied by commands that execute SQL statements on a database. For the `update` command, you can execute the [updateSql](https://docs.liquibase.com/commands/community/updatesql.html) command. This will let you inspect all statements that Liquibase will issue on your database without actually executing them. + +Furthermore, if you have defined a specific prefix for the entities of your database, you will have to manually adjust the `create` scripts in the `liquibase/baseline` directory accordingly so that the tables are created with the prefix. +::: + +### Manual installation + +To install the database schema required for Operaton, we provide a set of scripts with prepared DDL statements. +Those scripts create all required tables and default indices. You can find the provided SQL scripts on our [Artifact Repository]. +Select the respective version (`$PLATFORM_VERSION`) and download the scripts as a `zip` or `tar.gz` file. +Open the `operaton-sql-scripts-$PLATFORM_VERSION/create` folder to find all available scripts. +In case you are using a [pre-packaged distribution], the SQL scripts already reside in the `sql/create` folder of the distribution. + +The `create` folder contains the following SQL scripts: + +* `$DATABASENAME_engine_$PLATFORM_VERSION.sql` +* `$DATABASENAME_identity_$PLATFORM_VERSION.sql` + +There are individual SQL scripts for each supported database (`$DATABASENAME`). +Select the appropriate scripts for your database and run them with your database administration tool (e.g., SqlDeveloper for Oracle). + +As you create the tables manually, you have to configure the engine to **not** create tables at startup as well. +Set the `databaseSchemaUpdate` property to `false` (or, in case you are using Oracle, to `noop`). +Consult the [manual installation guide](../installation/full/index.md) of your distribution for further information on how to achieve that. + +:::note[Heads Up!] +If you have defined a specific prefix for the entities of your database, you will have to manually adjust the `create` scripts accordingly so that the tables are created with the prefix. +::: + +## Update + +Updating to a newer Operaton minor version also requires a database schema update. You can reuse all the options available for a [schema installation](#installation) here as well. +If you are switching from one option to another, you might need to perform additional preparation work to update reliably. +The individual sections on the mechanisms will provide details if necessary. + +In case you are just updating to a newer patch level of your Operaton installation, a schema update might not be necessary. +Section [patch level update](#patch-level-update) provides details on how this can be achieved depending on the mechanism you want to apply. + +### Liquibase update + +This section assumes you are already set up with Liquibase as described in the [installation section](#liquibase-installation). +In case you have not set up Liquibase itself yet and want to update a database that you [manually installed](#manual-installation) and updated until now, please consult the [migration section](#migrate-to-liquibase) first. + +Operaton comes with a maintained changelog file that Liquibase can consume. +This changelog helps Liquibase to keep track of the changes that have been made to your database already. +Based on that changelog and the tracking tables, Liquibase determines which changes it needs to apply when you instruct it to update your schema. + +Perform the following steps to update the database schema on your database instance: + +1. Select the respective version you want to update to (`$Y`) on our [Artifact Repository] and download the resources as a `zip` or `tar.gz` file. +Open the `operaton-sql-scripts-$Y/liquibase` folder to find the changelog file. +In case you are using a [pre-packaged distribution], the Liquibase resources already reside in the `sql/liquibase` folder of the distribution with version `$Y`. +1. Run Liquibase's [update command](https://docs.liquibase.com/commands/community/update.html) referencing the new `operaton-changelog.xml` of version `$Y`. +Liquibase takes care of determining the necessary changes and applying them to your database according to the new changelog. +You can pass on the connection details to your database instance via parameters as described in the Liquibase documentation or [create a properties file](https://docs.liquibase.com/workflows/liquibase-community/creating-config-properties.html). +1. We highly recommend updating to the latest patch version that is within the bounds of the new minor version you are updating to (`$Y`). + +:::note[Do I need to apply every minor version if I missed a few?] +Liquibase takes care of determining which upgrade scripts to apply automatically according to the changelog of your target version (`$Y`). +::: + +:::note[Dry run] +Liquibase provides additional commands to preview all changes applied by commands that execute SQL statements on a database. For the `update` command, you can execute the [updateSql](https://docs.liquibase.com/commands/community/updatesql.html) command to inspect all statements that Liquibase will issue on your database without actually executing them. +::: + +#### Migrate to Liquibase + +Liquibase provides workflows to update databases that were not set up using Liquibase from the very beginning. +For such a scenario to work, you need to populate a tracking table that represents the current state of your database with regards to the changelog file you want to update against. +In other words, you need to let Liquibase know which parts of the changelog your database already contains. + +Perform the following steps to migrate your manual installation to Liquibase: + +1. Setup Liquibase, e.g. by [downloading Liquibase CLI](https://www.liquibase.org/download) +1. Identify your current database schema version. You can extract this information from the `ACT_GE_SCHEMA_LOG` table. +Find the row with the highest value in the `ID_` column and use the value of this row's `VERSION_` column. +1. Run Liquibase's [changelogSyncToTag command](https://docs.liquibase.com/commands/community/changelogsynctotag.html) referencing the `operaton-changelog.xml` and using your current database schema version as the tag. +You can pass on the connection details to your database instance via parameters as described in the Liquibase documentation or [create a properties file](https://docs.liquibase.com/workflows/liquibase-community/creating-config-properties.html). + +Liquibase uses this information to create the tracking tables and mark all changesets until the tag you defined as executed. +Liquibase determines if there are any changes that it needs to apply to your database for any subsequent `update` commands. +You have migrated your manual installation to Liquibase. + +### Manual update + +Updating from your current minor version (`$X`) to its follow-up version (`$Y`) requires updating the database schema as well. +Follow the outlined procedure to perform this update: + +1. Check for [available database patch scripts](#patch-level-update) for your database that are within the bounds of your update path. +You can find the scripts on our [Artifact Repository]. +Select the respective version you want to update to (`$Y`) and download the scripts as a `zip` or `tar.gz` file. +Open the `operaton-sql-scripts-$Y/upgrade` folder to find all available scripts. +In case you are using a [pre-packaged distribution], the SQL scripts already reside in the `sql/upgrade` folder of the distribution with version `$Y`. +We highly recommend executing these patches before updating. +Execute those related to your database type (`$DATABASENAME`) in ascending order by version number. +The naming pattern is `$DATABASENAME_engine_$X_patch_*.sql`. + +1. Execute the corresponding update scripts named `$DATABASENAME_engine_$X_to_$Y.sql`. +The scripts update the database from one minor version to the next and change the underlying database structure. So make sure to backup your database in case there are any failures during the update process. + +1. We highly recommend checking for any existing patch scripts for your database that are within the bounds of the new minor version you are updating to (`$Y`). Execute them in ascending order by version number. The procedure is the same as in step 1, only for the new minor version. + +:::note[Do I need to apply every minor version if I missed a few?] +If you need to apply multiple minor versions, you MUST execute the database alteration scripts in minor version order as they are NOT cumulative. +::: + +### Patch level update + +Patch level updates will be delivered once applicable patches are issued, since no such updates have been needed so far. \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/installation/docker.md b/versioned_docs/version-1.0.0/documentation/installation/docker.md new file mode 100644 index 0000000..abdd32d --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/docker.md @@ -0,0 +1,19 @@ +--- + +title: "Docker" +sidebar_position: 20 +description: "Run the Full Distribution using Docker" + +--- +## Run Operaton using Docker + +The Community Edition docker images can be found on [Docker Hub](https://hub.docker.com/r/operaton/operaton/). + +### Start Operaton using Docker + +To start [Operaton](../user-guide/operaton-bpm-run.md) execute the following commands: + +```shell +docker pull operaton/operaton:latest +docker run -d --name Operaton-p 8080:8080 operaton/operaton:latest +``` diff --git a/versioned_docs/version-1.0.0/documentation/installation/full/index.md b/versioned_docs/version-1.0.0/documentation/installation/full/index.md new file mode 100644 index 0000000..5c3d1bd --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/full/index.md @@ -0,0 +1,18 @@ +--- + +title: "Shared Engine Distribution" +sidebar_position: 10 +description: "Install the Shared Process Engine and Web Applications inside an Application Server like Wildfly or Tomcat." + +--- +# Install the Shared Engine Distribution + +:::note[What is a Shared Engine Distribution?] +If you need a Remote or Shared Engine Distribution depends on your use-case. Check out the [architecture overview](../../introduction/architecture.md) for more information. +::: + +The [Full Distribution][full-distribution] includes a Shared Process engine and (optionally) the Web Applications. + +The distribution is supported on a broad range of containers: + +[full-distribution]: ../../introduction/downloading-operaton.md diff --git a/versioned_docs/version-1.0.0/documentation/installation/full/tomcat/configuration.md b/versioned_docs/version-1.0.0/documentation/installation/full/tomcat/configuration.md new file mode 100644 index 0000000..3184a3a --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/full/tomcat/configuration.md @@ -0,0 +1,287 @@ +--- + +title: 'Configuration' +sidebar_position: 30 +description: "Configure the installation." + +--- +## Configure the Full Distribution for Tomcat + +This page explains how to configure the full distribution for Tomcat Application Server. + +### LDAP + +In order to setup LDAP for the Tomcat distribution, you have to perform the following steps: + + +### Add the LDAP Library + +Make sure the `operaton-identity-ldap-$PLATFORM_VERSION.jar` is present in the +`$TOMCAT_DISTRIBUTION/lib/` folder. + +:::note[Pre packaged distribution] +Note: If you use the pre-packaged distribution, the ldap plugin is already present and you can skip this step. +::: + +### Adjust the Process Engine Configuration + +Edit the file `bpm-platform.xml` located inside the folder `$TOMCAT_HOME/conf` and add the [LDAP Identity Provider Plugin](../../../user-guide/process-engine/identity-service.md#the-ldap-identity-service) and the [Administrator Authorization Plugin](../../../user-guide/process-engine/authorization-service.md#the-administrator-authorization-plugin). + +```xml + + + ... + ... + ... + + + org.operaton.bpm.identity.impl.ldap.plugin.LdapIdentityProviderPlugin + + + ldap://localhost:4334/ + uid=jonny,ou=headquarter,o=operaton,c=org + s3cr3t + + o=operaton,c=org + + + (objectclass=person) + + uid + cn + sn + mail + userpassword + + + (objectclass=groupOfNames) + ou + cn + + member + + + + + org.operaton.bpm.engine.impl.plugin.AdministratorAuthorizationPlugin + + admin + + + + + +``` + +The `administratorUserName` property should contain the user id of the LDAP user you want to grant administrator authorizations to. You can then use this user to log in to the web application and grant authorizations to additional users. + +See our user guide for complete documentation on the [LDAP Identity Provider Plugin](../../../user-guide/process-engine/identity-service.md#the-ldap-identity-service) and the [Administrator Authorization Plugin](../../../user-guide/process-engine/authorization-service.md#the-administrator-authorization-plugin). + + +### HAL Resource Caching + +If you use LDAP as Indentity Provider, you should consider [activating caching](../../../reference/rest/overview/hal.md#caching-of-hal-relations) of +Users and Groups in the Operaton webapplication. In order to activate this, add the following +configuration to the `web.xml` file of Operaton webapplication +(`operaton-webapp-tomcat-$PLATFORM_VERSION.war/WEB-INF/web.xml`): + +```xml + + + + + + + org.operaton.bpm.engine.rest.hal.cache.HalRelationCacheBootstrap + + + + org.operaton.bpm.engine.rest.hal.cache.config + + { + "cacheImplementation": "org.operaton.bpm.engine.rest.hal.cache.DefaultHalResourceCache", + "caches": { + "org.operaton.bpm.engine.rest.hal.user.HalUser": { + "capacity": 100, + "secondsToLive": 900 + }, + "org.operaton.bpm.engine.rest.hal.group.HalGroup": { + "capacity": 100, + "secondsToLive": 900 + } + } + } + + + + + + +``` + +### Session Cookie in Webapps + +To configure the **Session Cookie**, you can adjust the deployment descriptor of the Web applications. +You can find it in the `WEB-INF/web.xml` in the following section: + +```xml +... + + + false + true + + +... +``` + +Please note that security-related configurations for the **Session Cookie** can only be applied with the Deployment Descriptor (`web.xml`) version set to 3.0. + +To customize the `SameSite` attribute of the session cookie, you can adjust the `SessionCookieFilter`. +You can find it in the `WEB-INF/web.xml` as well in the following section: + +```xml +... + + SessionCookieFilter + org.operaton.bpm.webapp.impl.security.filter.SessionCookieFilter + + + SessionCookieFilter + /* + +... +``` + +By default, the `SameSite` flag will be set to `LAX` by the filter. +You can change the default behavior by adding configuration parameters to the servlet filter configuration: + +```xml +... + + SessionCookieFilter + org.operaton.bpm.webapp.impl.security.filter.SessionCookieFilter + + sameSiteCookieValue + Strict + + +... +``` + +Note that the filter only adds the `SameSite` attribute to the cookie if this attribute is not present yet. +It does not alter any existing value that has been set prior to the filter execution. + +The servlet filter accepts several initialization parameters besides the one describes above. +The following list describes all possible parameters you can use for the filter configuration: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionDefault value
enableSecureCookie + If set to true, the cookie flag Secure is enabled for the + Session Cookie.

+ Note: If the Secure flag is set in the cookie by any other means already, this property will not remove it by setting it to false. +
false
enableSameSiteCookie + If set to false, the cookie flag SameSite is disabled. The default value of the SameSite cookie is LAX and it can be changed via same-site-cookie-option configuration property.

+ Note: If the SameSite flag is set in the cookie by any other means already, this property will not adjust or remove it. +
true
sameSiteCookieOption + Can be configured either to STRICT or LAX.

+ Note: +
    +
  • Is ignored when enable-same-site-cookie is set to false
  • +
  • Cannot be set in conjunction with same-site-cookie-value
  • +
  • Will not change the value of the SameSite flag if it is set already by any other means
  • +
+
Not set
sameSiteCookieValue + A custom value for the cookie property.

+ Note: +
    +
  • Is ignored when enable-same-site-cookie is set to false
  • +
  • Cannot be set in conjunction with same-site-cookie-option
  • +
  • Will not change the value of the SameSite flag if it is set already by any other means
  • +
+
Not set
+ +Please also see the detailed overview about the [Cookie Security](../../../webapps/shared-options/cookie-security.md). + +### Security-related HTTP headers in Webapps + +To customize the configuration of security-related HTTP headers in the web applications its deployment descriptor needs +to be adjusted. You can find it under `WEB-INF/web.xml`. + +Please watch out for the following section: +```xml +... + + HttpHeaderSecurity + + org.operaton.bpm.webapp.impl.security.filter.headersec.HttpHeaderSecurityFilter + + + + + HttpHeaderSecurity + /* + REQUEST + +... +``` + +You can change the default behavior by adding configuration parameters to the servlet filter configuration: +```xml +... + + HttpHeaderSecurity + + org.operaton.bpm.webapp.impl.security.filter.headersec.HttpHeaderSecurityFilter + + + + contentSecurityPolicyValue + + base-uri 'self'; + default-src 'self' 'unsafe-inline' + + + + +... +``` + +Please also see the detailed overview about the +[HTTP Header Security configuration settings](../../../webapps/shared-options/header-security.md#how-to-configure). \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/installation/full/tomcat/index.md b/versioned_docs/version-1.0.0/documentation/installation/full/tomcat/index.md new file mode 100644 index 0000000..3c5ba45 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/full/tomcat/index.md @@ -0,0 +1,17 @@ +--- + +title: "Install the Full Distribution for Tomcat" +sidebar_position: 10 + +menu: + main: + name: "Tomcat" + identifier: "installation-guide-full-tomcat" + parent: "installation-guide-full" + description: "Install the Full Distribution for Apache Tomcat." + +--- + +This document describes the installation of the [Full Distribution](../../../introduction/downloading-operaton.md#full-distribution) for [Apache Tomcat Application Server](http://tomcat.apache.org/). + +There are different options for installing the Full Distribution: diff --git a/versioned_docs/version-1.0.0/documentation/installation/full/tomcat/manual.md b/versioned_docs/version-1.0.0/documentation/installation/full/tomcat/manual.md new file mode 100644 index 0000000..36b1541 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/full/tomcat/manual.md @@ -0,0 +1,283 @@ +--- + +title: 'Manual Installation' +sidebar_position: 20 +description: "Manually install and configure the Full Distribution on a vanilla Apache Tomcat Server." + +--- +## Install the Full Distribution on a Tomcat Application Server manually + +This section describes how you can install Operaton and its components on a vanilla [Apache Tomcat](http://tomcat.apache.org/), if you are not able to use the pre-packaged Tomcat distribution. In addition, download a [Tomcat distribution](https://downloads.operaton.cloud/release/operaton-bpm/tomcat/) to fetch the required Operaton modules. + +:::note[Reading the Guide} +Throughout this guide we will use a number of variables to denote common path names and constants: + +* `$TOMCAT_HOME` points to the main directory of the tomcat server. +* `$TOMCAT_VERSION` denotes the version of Tomcat server. +* `$PLATFORM_VERSION` denotes the version of Operaton you want to install or already have installed, e.g. `7.0.0`. +* `$TOMCAT_DISTRIBUTION` represents the downloaded pre-packaged Operaton distribution for Tomcat, e.g. `operaton-bpm-tomcat-$PLATFORM_VERSION.zip` or `operaton-bpm-tomcat-$PLATFORM_VERSION.tar.gz`. + +::: + +:::note[Known Limitations in Tomcat 10] + +**

Weld Class Loading Issues

** + +In deployment scenarios involving one or more process applications with managed beans, classloading issues may occur if the WELD library is directly embedded in the WAR's `/WEB-INF/lib` folder. +To resolve this, move the weld library away from the war and place it into the `$CATALINA_HOME/lib` folder. + +The above workaround is not guaranteed to work for cases with bean references between WAR deployments (WAR A referencing a bean from WAR B). + +The following test scenarios fail on Tomcat 10: + +* [CallActivityContextSwitchTest](https://github.com/operaton/operaton-bpm-platform/blob/f37877b822dabcbf3cee5806bd5833d18cdcb543/qa/integration-tests-engine/src/test/java/org/operaton/bpm/integrationtest/functional/context/CallActivityContextSwitchTest.java) +* [CdiBeanCallActivityResolutionTest](https://github.com/operaton/operaton-bpm-platform/blob/f37877b822dabcbf3cee5806bd5833d18cdcb543/qa/integration-tests-engine/src/test/java/org/operaton/bpm/integrationtest/functional/cdi/CdiBeanCallActivityResolutionTest.java) +::: + + +## Setup + +Before you can install the Operaton components, you need to perform a number of required setup steps. + + +### Create the Database Schema and Tables + +In the default configuration of the distribution, the database schema and all required tables are automatically created in an H2 database when the engine starts up for the first time. If you do not want to use the H2 database, you have to + +* Create a database schema for Operaton yourself. +* Install the database schema to create all required tables and default indices using our [database schema installation guide](../../database-schema.md). + +When you create the tables manually, then you have to configure the engine to **not** create tables at startup by setting the `databaseSchemaUpdate` property to `false` (or, in case you are using Oracle, to `noop`). In Tomcat, this is done in the `bpm-platform.xml`, located in the `$TOMCAT_DISTRIBUTION\server\apache-tomcat-$VERSION\conf\` folder. + + +### Add BPM Bootstrap Server Listener + +Add the entry `org.operaton.bpm.container.impl.tomcat.TomcatBpmPlatformBootstrap` as Listener before the `GlobalResourcesLifecycleListener` in your `$TOMCAT_HOME/conf/server.xml`. This class is responsible for starting and stopping Operaton as Tomcat is started and stopped. + +```xml + + ... + + ... +``` + + +### Configure a JDBC Resource + +To configure a JDBC Resource you have to edit the file `$TOMCAT_HOME/conf/server.xml`. This could look like the following example for an H2 database: + +```xml + + ... + + ... + + + +``` + +For more information on the creation of JDBC datasources have a look at the documentation of your Tomcat version: +[9.0](https://tomcat.apache.org/tomcat-9.0-doc/jndi-datasource-examples-howto.html). + + +### Add Operaton Services + +Copy the following blocks from `${TOMCAT_DISTRIBUTION}/server/apache-tomcat-${TOMCAT_VERSION}/conf/server.xml` + into `${TOMCAT_HOME}/conf/server.xml`: + +```xml + + + +``` + + +### Add Required Libraries + +Copy all libraries from the `$TOMCAT_DISTRIBUTION/lib/` folder to the Tomcat library folder `$TOMCAT_HOME/lib`: + +Furthermore, you have to merge your corresponding JDBC driver into the folder `$TOMCAT_HOME/lib`. + + +### Add bpm-platform.xml + +You have to add the file `bpm-platform.xml` to the folder `$TOMCAT_HOME/conf` or, optionally, you can configure the location through some available mechanisms, see [Configure location of the bpm-platform.xml file](../../../reference/deployment-descriptors/bpm-platform-xml.md#configure-location-of-the-bpm-platformxml-file): + +```xml + + + + + + + + + default + org.operaton.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration + java:jdbc/ProcessEngine + + + full + true + true + true + + + + + +``` + + +### Secure Tomcat + +Follow the Tomcat Security Howto of your Tomcat version: +[9.0](https://tomcat.apache.org/tomcat-9.0-doc/security-howto.html), +[10.1](https://tomcat.apache.org/tomcat-10.1-doc/security-howto.html). + +In particular, go to `${TOMCAT_HOME}/webapps/` and remove the directories +`ROOT`, `docs`, `examples`, `manager` and `host-manager`. + + +## Optional Components + +This section describes how to install optional Operaton dependencies onto a Tomcat server. None of these are required to work with the core platform. + + +### Cockpit, Tasklist and Admin + +The following steps are required to deploy the applications: + +1. Download the Operaton web application that contains both applications from our [Artifact Repository](https://artifacts.camunda.com/artifactory/operaton-bpm/org/operaton/bpm/webapp/operaton-webapp-tomcat/). + * For [Tomcat 10](https://artifacts.camunda.com/ui/native/operaton-bpm/org/operaton/bpm/webapp/operaton-webapp-tomcat-jakarta/), the name of the artifact is `$PLATFORM_VERSION/operaton-webapp-tomcat-jakarta-$PLATFORM_VERSION.war`. + * For [Tomcat 9](https://artifacts.camunda.com/ui/native/operaton-bpm/org/operaton/bpm/webapp/operaton-webapp-tomcat/), the name of the artifact is `$PLATFORM_VERSION/operaton-webapp-tomcat-$PLATFORM_VERSION.war`. +2. Copy the war file to `$TOMCAT_HOME/webapps/operaton.war`. + Optionally you may name it differently or extract it to a folder to deploy it to a different context path. +3. Startup Tomcat. +4. Access Cockpit and Tasklist via `/operaton/app/cockpit` and `/operaton/app/tasklist` or under the context path you configured. + + +### REST API + +The following steps are required to deploy the REST API: + +1. Download the REST API web application archive from our [Artifact Repository](https://artifacts.camunda.com/artifactory/operaton-bpm/org/operaton/bpm/operaton-engine-rest/). + Choose the correct version named `$PLATFORM_VERSION/operaton-engine-rest-$PLATFORM_VERSION-tomcat.war`. + * For [Tomcat 10](https://artifacts.camunda.com/artifactory/public/org/operaton/bpm/operaton-engine-rest-jakarta/), the name of the artifact is `$PLATFORM_VERSION/operaton-engine-rest-jakarta-$PLATFORM_VERSION-tomcat.war`. + * For [Tomcat 9](https://artifacts.camunda.com/artifactory/public/org/operaton/bpm/operaton-engine-rest/), the name of the artifact is `$PLATFORM_VERSION/operaton-engine-rest-$PLATFORM_VERSION-tomcat.war`. +2. Copy the war file to `$TOMCAT_HOME/webapps`. + Optionally you may rename it or extract it to a folder to deploy it to a specific context like `/engine-rest`. +3. Startup Tomcat. +4. Access the REST API on the context you configured. + For example, http://localhost:8080/engine-rest/engine should return the names of all engines of the platform, provided that you deployed the application in the context `/engine-rest`. +5. Enable authentication as described in the [REST API documentation](../../../reference/rest/overview/authentication.md) + + +### Operaton Connect Plugin + +Add the following artifacts (if not existing) from the folder `$TOMCAT_DISTRIBUTION/lib/` to the folder `$TOMCAT_HOME/lib/`: + +* `operaton-engine-plugin-connect-$PLATFORM_VERSION.jar` +* `operaton-commons-utils-$PLATFORM_VERSION.jar` + +In order to activate Operaton Connect functionality for a process engine, a process engine plugin has to be registered in `$TOMCAT_HOME/conf/bpm-platform.xml` as follows: + +```xml + + + + ... + + ... existing plugins ... + + org.operaton.connect.plugin.impl.ConnectProcessEnginePlugin + + + ... + + + +``` + + +### Operaton Spin + +Add the following artifacts (if not existing) from the folder `$TOMCAT_DISTRIBUTION/lib/` to the folder `$TOMCAT_HOME/lib/`: + +* `operaton-spin-dataformat-all-$PLATFORM_VERSION.jar` +* `operaton-spin-core-$PLATFORM_VERSION.jar` +* `operaton-engine-plugin-spin-$PLATFORM_VERSION.jar` +* `operaton-commons-utils-$PLATFORM_VERSION.jar` + +In order to activate Operaton Spin functionality for a process engine, a process engine plugin has to be registered in `$TOMCAT_HOME/conf/bpm-platform.xml` as follows: + +```xml + + + ... + + ... + + ... existing plugins ... + + org.operaton.spin.plugin.impl.SpinProcessEnginePlugin + + + ... + + ... + +``` + + +### Groovy Scripting + +Add the following artifacts (if not existing) from the folder `$TOMCAT_DISTRIBUTION/lib/` to the folder `$TOMCAT_HOME/lib/`: + +* `groovy-$GROOVY_VERSION.jar` +* `groovy-jsr223-$GROOVY_VERSION.jar` +* `groovy-json-$GROOVY_VERSION.jar` +* `groovy-xml-$GROOVY_VERSION.jar` +* `groovy-templates-$GROOVY_VERSION.jar` +* `groovy-dateutil-$GROOVY_VERSION.jar` +* `groovy-datetime-$GROOVY_VERSION.jar` + + +### Freemarker Integration + +Add the following artifacts (if not existing) from the folder `$TOMCAT_DISTRIBUTION/lib/` to the folder `$TOMCAT_HOME/lib/`: + +* `operaton-template-engines-freemarker-$PLATFORM_VERSION.jar` +* `freemarker-2.3.31.jar` +* `operaton-commons-utils-$PLATFORM_VERSION.jar` + +### GraalVM JavaScript Integration + +Add the following artifacts (if not existing) from the folder `$TOMCAT_DISTRIBUTION/lib/` to the folder `$TOMCAT_HOME/lib/`: + +* `graal-sdk-21.1.0.jar` +* `icu4j-68.2.jar` +* `js-21.1.0.jar` +* `js-scriptengine-21.1.0.jar` +* `regex-21.1.0.jar` +* `truffle-api-21.1.0.jar` \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/installation/full/tomcat/pre-packaged.md b/versioned_docs/version-1.0.0/documentation/installation/full/tomcat/pre-packaged.md new file mode 100644 index 0000000..8927b4e --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/full/tomcat/pre-packaged.md @@ -0,0 +1,18 @@ +--- + +title: 'Pre-Packaged Distribution' +sidebar_position: 10 +description: "Download and install Apache Tomcat with the Full Distribution pre-deployed and pre-configured." + +--- +## Install the Pre-Packaged Distribution + +### Installation Procedure + +1. Download the pre-packaged distribution from "Assets" of https://github.com/operaton/operaton/releases/latest + - Operaton Standalone distribution: `operaton-bpm-.tar.gz` (or `.zip`) + - Operaton Tomcat distribution: `operaton-bpm-tomcat-.tar.gz` (or `.zip`) + - Operaton Wildfly distribution: `operaton-bpm-tomcat-.tar.gz` (or `.zip`) +3. Unpack the distro to a directory. +4. Adjust the datasource according to your needs (see [Manual Installation](manual.md)). +5. Startup the server by running the `start.sh` script. diff --git a/versioned_docs/version-1.0.0/documentation/installation/full/wildfly/configuration.md b/versioned_docs/version-1.0.0/documentation/installation/full/wildfly/configuration.md new file mode 100644 index 0000000..081bb15 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/full/wildfly/configuration.md @@ -0,0 +1,200 @@ +--- + +title: 'Configuration' +sidebar_position: 30 +description: "Configure the installation." + +--- +## Configure the Full Distribution for WildFly + +This page explains how to configure the full distribution for the WildFly application server. + + +### LDAP + +In order to setup LDAP for the WildFly Application Server distribution, you have to perform the following steps: + + +### Adjust the Process Engine Configuration + +Edit the file `standalone.xml` (or `domain.xml`) provided by the WildFly Application Server and add the [LDAP Identity Provider Plugin](../../../user-guide/process-engine/identity-service.md#the-ldap-identity-service) and the [Administrator Authorization Plugin](../../../user-guide/process-engine/authorization-service.md#the-administrator-authorization-plugin). + +```xml + + + ... + ... + + + org.operaton.bpm.identity.impl.ldap.plugin.LdapIdentityProviderPlugin + + + ldap://localhost:4334/ + uid=jonny,ou=headquarter,o=operaton,c=org + s3cr3t + + o=operaton,c=org + + ou=employees + (objectclass=person) + + uid + cn + sn + mail + userpassword + + ou=roles + (objectclass=groupOfNames) + ou + cn + + member + + + + + org.operaton.bpm.engine.impl.plugin.AdministratorAuthorizationPlugin + + admin + + + + + ... + +``` + + +The `administratorUserName` property should contain the user id of the LDAP user you want to grant administrator authorizations to. You can then use this user to log in to the web application and grant authorizations to additional users. + +See our user guide for complete documentation on the [LDAP Identity Provider Plugin](../../../user-guide/process-engine/identity-service.md#the-ldap-identity-service) and the [Administrator Authorization Plugin](../../../user-guide/process-engine/authorization-service.md#the-administrator-authorization-plugin). + + +### HAL Resource Caching + +If you use LDAP as Identity Provider, you should consider [activating caching](../../../reference/rest/overview/hal.md#caching-of-hal-relations) of +Users and Groups in the Operaton web application. In order to activate this, add the following +configuration to the `web.xml` file of the Operaton web application +(`operaton-webapp-wildfly-$PLATFORM_VERSION.war/WEB-INF/lib` or `operaton-webapp-jboss-$PLATFORM_VERSION.war/WEB-INF/lib`): + +```xml + + + + + + + org.operaton.bpm.engine.rest.hal.cache.HalRelationCacheBootstrap + + + + org.operaton.bpm.engine.rest.hal.cache.config + + { + "cacheImplementation": "org.operaton.bpm.engine.rest.hal.cache.DefaultHalResourceCache", + "caches": { + "org.operaton.bpm.engine.rest.hal.user.HalUser": { + "capacity": 100, + "secondsToLive": 900 + }, + "org.operaton.bpm.engine.rest.hal.group.HalGroup": { + "capacity": 100, + "secondsToLive": 900 + } + } + } + + + + + + +``` + +### Add Custom Engine Plugins + +1. Add an additional engine plugin as a module to the folder $WILDFLY_HOME/modules/ +2. Add the module dependency to the file `$WILDFLY_HOME/modules/org/operaton/bpm/operaton-engine-plugins/main/module.xml` and set the attribute `export="true"` to make sure that the module is visible in the classpath of Operaton's subsystem + ```xml + + + + + + + ``` + + The `module.xml` file is included in the Operaton distribution. If you install Operaton on a vanilla WildFly container, this file needs to be created manually. +3. [Configure the process engine plugin](../../../user-guide/runtime-container-integration/jboss.md#extend-a-process-engine-using-process-engine-plugins) in the standalone.xml/domain.xml configuration file + +### Session Cookie in Webapps + +The deployment descriptor of the Web applications needs to be adjusted to configure the **Session Cookie**. + +You can find it under `WEB-INF/web.xml`. Please watch out for the following section: +```xml +... + + + false + true + + +... +``` + +Please note that security-related configurations for the **Session Cookie** can only be applied with the Deployment Descriptor (`web.xml`) version set to 3.0. + +To adjust the `SameSite` flag of the session cookie, you can configure a `SameSiteCookieHandler` as described in related the [WildFly documentation](https://www.wildfly.org/news/2020/05/04/WildFly-1910-Released/). +This can be used with WildFly versions $\geq$ 19.1.0. + +### Security-related HTTP headers in Webapps + +To customize the configuration of security-related HTTP headers in the web applications its deployment descriptor needs +to be adjusted. You can find it under `WEB-INF/web.xml`. + +Please watch out for the following section: +```xml +... + + HttpHeaderSecurity + + org.operaton.bpm.webapp.impl.security.filter.headersec.HttpHeaderSecurityFilter + + + + + HttpHeaderSecurity + /* + REQUEST + +... +``` + +You can change the default behavior by adding configuration parameters to the servlet filter configuration: +```xml +... + + HttpHeaderSecurity + + org.operaton.bpm.webapp.impl.security.filter.headersec.HttpHeaderSecurityFilter + + + + contentSecurityPolicyValue + + base-uri 'self'; + default-src 'self' 'unsafe-inline' + + + + +... +``` + +Please also see the detailed overview about the +[HTTP Header Security configuration settings](../../../webapps/shared-options/header-security.md#how-to-configure). \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/installation/full/wildfly/index.md b/versioned_docs/version-1.0.0/documentation/installation/full/wildfly/index.md new file mode 100644 index 0000000..bb22ffe --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/full/wildfly/index.md @@ -0,0 +1,17 @@ +--- + +title: "Install the Full Distribution for WildFly" +sidebar_position: 20 + +menu: + main: + name: "WildFly" + identifier: "installation-guide-full-jboss" + parent: "installation-guide-full" + description: "Install the Full Distribution for WildFly Application Servers." + +--- + +This document describes the installation of the [Full Distribution](../../../introduction/downloading-operaton.md#full-distribution) for [WildFly Application Server](http://www.wildfly.org). + +There are different options for installing the Full Distribution: diff --git a/versioned_docs/version-1.0.0/documentation/installation/full/wildfly/manual.md b/versioned_docs/version-1.0.0/documentation/installation/full/wildfly/manual.md new file mode 100644 index 0000000..e90a9e9 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/full/wildfly/manual.md @@ -0,0 +1,299 @@ +--- + +title: 'Manual Installation' +sidebar_position: 20 +description: "Install and configure the Full Distribution on a vanilla WildFly Application Server." + +--- +## Install the Full Distribution on a WildFly Application Server manually + +This document describes the installation of Operaton and its components on a vanilla [WildFly Application Server](http://www.wildfly.org) or JBoss EAP 7 / 8. + +:::note[Reading this Guide] +This guide uses a number of variables to denote common path names and constants: + +* `$WILDFLY_HOME` points to the WildFly application server main directory. +* `$WILDFLY_VERSION` denotes the version of WildFly application server. +* `$WILDFLY_DISTRIBUTION` represents the downloaded pre-packaged Operaton distribution for WildFly, e.g. `operaton-bpm-wildfly-$PLATFORM_VERSION.zip` or `operaton-bpm-wildfly-$PLATFORM_VERSION.tar.gz`. +* `$PLATFORM_VERSION` denotes the version of Operaton you want to install or already have installed, e.g. `7.0.0`. +::: + +### Setup + +* For WildFly โ‰ฅ27 / JBoss EAP 8, download the [Operaton WildFly distribution](https://downloads.operaton.cloud/release/operaton-bpm/wildfly/). +* For WildFly โ‰ค26 / JBoss EAP 7, download the [`operaton-wildfly26-modules`](https://artifacts.operaton.com/artifactory/operaton-bpm/org/operaton/bpm/wildfly/operaton-wildfly26-modules/). + +### Copy Modules + +Copy the modules from the `modules/` folder of the Operaton distribution, or extract the `operaton-wildfly-modules` archive, to the `$WILDFLY_HOME/modules/` of your WildFly application server. + +:::note[Replace H2 Database] +The WildFly distribution ships a different version of the H2 database than the one that is shipped with WildFly itself. +The version shipped with Operaton is the version that the process engine is tested on and it is strongly recommended to use Operaton's version. +To do so, **make sure to delete the folder** + +``` +$WILDFLY_HOME/modules/system/layers/base/com/h2database +``` + +::: + + +### Adjust the Configuration + +Next, a number of changes need to be performed in the application server's configuration file. +In most cases this is `$WILDFLY_HOME/standalone/configuration/standalone.xml`. + +Add the Operaton subsystem as extension: + +```xml + + + ... + +``` + +Configure the thread pool for the Operaton Job Executor: + +Since Operaton.5, the configuration of the thread pool is done in the Operaton subsystem, not in the JBoss Threads subsystem anymore like it was done before 7.5. +The thread pool creation and shutdown is now controlled through the Operaton subsystem. +You are able to configure it through the following new configuration elements in the `job-executor` element of the subsystem XML configuration. + +Mandatory configuration elements are: + +* ```3``` +* ```5``` +* ```10``` + +Optional configuration elements are: + +* ```10``` (in seconds) +* ```true``` + +Shown values are the default ones. + +The below example also configures the default process engine. + +```xml + + + + java:jboss/datasources/ProcessEngine + full + + default + true + true + true + + + + + 3 + 5 + 10 + + + + 300000 + 5000 + 3 + + + + + +``` + + +### Create the Database Schema + +By default, the database schema is automatically created in an H2 database when the engine starts up for the first time. If you do not want to use the H2 database, you have to + +* Create a database schema for Operaton yourself. +* Install the database schema to create all required tables and default indices using our [database schema installation guide](../../database-schema.md). + +When you create the tables manually, then you can also configure the engine to **not** create tables at startup by setting the `isAutoSchemaUpdate` property to `false` (or, in case you are using Oracle, to `noop`). In WildFly, this is done in the `standalone.xml`, located in the `$WILDFLY_DISTRIBUTION\server\wildfly-$WILDFLY_VERSION\standalone\configuration\` folder. + +### Create a Datasource + +You need to create a datasource named `java:jboss/datasources/ProcessEngine`. +The following datasource shows an example of using the built-in H2 database for this, using a file within the `./` folder, +typically `bin`. + +```xml + + jdbc:h2:./operaton-h2-dbs/process-engine;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE + h2 + + + +``` +Using H2 as a database is ideal for development purposes but is not recommended for usage in a productive environment. +These links point you to resources for other databases: + +* [How to configure an Oracle database](http://www.ironjacamar.org/doc/userguide/1.0/en-US/html_single/#ex_datasources_oracle) +* [How to configure a MySQL database](http://www.ironjacamar.org/doc/userguide/1.0/en-US/html_single/#ex_datasources_mysql) + +### Optional Components + +This section describes how to install optional dependencies. None of these are required to work with the core platform. Before continuing, make sure that Operaton is already installed according to [this step](#setup) for WildFly / JBoss EAP. + + +### Cockpit, Tasklist, and Admin + +The following steps are required to deploy the web application: + +1. Download the Operaton web application that contains the web applications from our Maven Artifactory. + * For [WildFly โ‰ฅ27 / JBoss EAP 8](https://artifacts.operaton.com/artifactory/operaton-bpm/org/operaton/bpm/webapp/operaton-webapp-wildfly/), the name of the artifact is `$PLATFORM_VERSION/operaton-webapp-wildfly-$PLATFORM_VERSION.war`. + * For [WildFly โ‰ค26 / JBoss EAP 7](https://artifacts.operaton.com/artifactory/operaton-bpm/org/operaton/bpm/webapp/operaton-webapp-jboss/), the name of the artifact is `$PLATFORM_VERSION/operaton-webapp-jboss-$PLATFORM_VERSION.war`. +2. Optionally, you may change the context path to which the application will be deployed (default is `/operaton`). + Edit the file `WEB-INF/jboss-web.xml` in the war file and update the `context-root` element accordingly. +3. Copy the war file to `$WILDFLY_HOME/standalone/deployments`. +4. Startup WildFly. +5. Access Cockpit, Tasklist, and Admin via `/operaton/app/cockpit`, `/operaton/app/tasklist` and `/operaton/app/admin`, or under the context path you configured. + + +### REST API + +The following steps are required to deploy the REST API: + +1. Download the REST API web application archive from our Maven Artifactory. + * For [WildFly โ‰ฅ27 / JBoss EAP 8](https://artifacts.operaton.com/artifactory/public/org/operaton/bpm/operaton-engine-rest-jakarta/), the name of the artifact is `$PLATFORM_VERSION/operaton-engine-rest-jakarta-$PLATFORM_VERSION-wildfly.war`. + * For [WildFly โ‰ค26 / JBoss EAP 7](https://artifacts.operaton.com/artifactory/public/org/operaton/bpm/operaton-engine-rest/), the name of the artifact is `$PLATFORM_VERSION/operaton-engine-rest-$PLATFORM_VERSION-wildfly.war`. +2. Optionally, you may change the context path to which the REST API will be deployed (default is `/engine-rest`). + Edit the file `WEB-INF/jboss-web.xml` in the war file and update the `context-root` element accordingly. +3. Copy the war file to `$WILDFLY_HOME/standalone/deployments`. +4. Startup WildFly. +5. Access the REST API on the context path you configured. + For example, http://localhost:8080/engine-rest/engine should return the names of all engines of the platform, + provided that you deployed the application in the context `/engine-rest`. + + +### Operaton Connect Plugin + +Add the following modules (if not existing) from the folder `$WILDFLY_DISTRIBUTION/modules/` to the folder `$WILDFLY_HOME/modules/`: + +* `org/operaton/bpm/operaton-engine-plugin-connect` +* `org/operaton/commons/operaton-commons-utils` + +To activate Operaton Connect functionality for a process engine, a process engine plugin has to be registered in `$WILDFLY_HOME/standalone/configuration/standalone.xml` as follows: + +```xml + + ... + + + ... + + ... existing plugins ... + + org.operaton.connect.plugin.impl.ConnectProcessEnginePlugin + + + ... + + + ... + +``` + + +### Operaton Spin + +You can use the Operaton Spin plugin to extend the engine functionality to de-/serialize object variables from and to JSON and XML. For more information, see the [Spin Reference](../../../reference/spin/index.md). + +#### Setup Spin + +Add the following modules (if not existing) from the folder `$WILDFLY_DISTRIBUTION/modules/` to the folder `$WILDFLY_HOME/modules/`: + +* `org/operaton/spin/operaton-spin-core` +* `org/operaton/spin/operaton-spin-dataformat-json-jackson` +* `org/operaton/spin/operaton-spin-dataformat-xml-dom-jakarta` + * **Heads-up:** add this module only for WildFly โ‰ฅ27 / JBoss EAP 8. +* `org/operaton/spin/operaton-spin-dataformat-xml-dom` + * **Heads-up:** add this module only for WildFly โ‰ค26 / JBoss EAP 7. +* `org/operaton/bpm/operaton-engine-plugin-spin` +* `org/operaton/commons/operaton-commons-utils` +* `com/fasterxml/jackson/core/jackson-core` +* `com/fasterxml/jackson/core/jackson-databind` +* `com/fasterxml/jackson/core/jackson-annotations` +* `com/jayway/jsonpath/json-path` + +In order to activate Operaton Spin functionality for a process engine, a process engine plugin has to be registered in `$WILDFLY_HOME/standalone/configuration/standalone.xml` as follows: + +```xml + + ... + + + ... + + ... existing plugins ... + + org.operaton.spin.plugin.impl.SpinProcessEnginePlugin + + + ... + + + ... + +``` + +#### Problems with Jackson Annotations + +The usage of Jackson annotations on WildFly together with the Operaton Spin JSON serialization can lead to problems. +WildFly implicitly adds the JAX-RS subsystem to each new deployment, if JAX-RS annotations are present (see the WildFly [documentation](https://docs.wildfly.org/23/Developer_Guide.html#Implicit_module_dependencies_for_deployments) for more information). +This JAX-RS subsystem includes the Jackson library, the version of which does not match with the version used by the Operaton SPIN Plugin. +As a result, Jackson annotations will be ignored. Note that this problem does not necessarily have to emerge upon direct usage of Spin. +The Spin plugin also comes into play when JSON variables are set or read by the Operaton Process Engine. + +See one of the following ways to fix this: + +1. Change the Jackson `main` slot to the version which is used by the Operaton Spin Plugin. + * Make sure that Resteasy can work with this Jackson version, as we cannot give any guarantees on this. + +2. Exclude implicitly added JAX-RS dependencies. + * Add a `jboss-deployment-structure.xml` file to you application in the WEB-INF folder. + * Exclude the JAX-RS subsystem and add the Jackson dependencies, with the version which is used by the Operaton Spin Plugin. + * This solution is also shown in the [Jackson Annotation Example for WildFly](https://github.com/operaton/operaton-bpm-examples/blob/master/wildfly/jackson-annotations) in the Operaton example repository. + +See this [Forum Post](https://forum.operaton.org/t/operaton-json-marshalling-and-jsonignore/271/19) for other approaches and information. + +#### Problem With Deployments Using the REST API + +Operaton Spin is not available in scripts if a process definition is deployed via REST API. Because WildFly handles dependencies using its module system and Operaton engine module has no module dependency on the spin module. + +### Groovy Scripting + +Add the following modules (if not existing) from the folder `$WILDFLY_DISTRIBUTION/modules/` to the folder `$WILDFLY_HOME/modules/`: + +* `org/apache/groovy/groovy-all` + + +### Freemarker Integration + +Add the following modules (if not existing) from the folder `$WILDFLY_DISTRIBUTION/modules/` to the folder `$WILDFLY_HOME/modules/`: + +* `org/operaton/template-engines/operaton-template-engines-freemarker` +* `org/freemarker/freemarker` +* `org/operaton/commons/operaton-commons-logging` +* `org/operaton/commons/operaton-commons-utils` + +### GraalVM JavaScript Integration + +Add the following modules (if not existing) from the folder `$WILDFLY_DISTRIBUTION/modules/` to the folder `$WILDFLY_HOME/modules/`: + +* `org/graalvm/js/js` +* `org/graalvm/js/js-scriptengine` +* `org/graalvm/regex/regex` +* `org/graalvm/sdk/graal-sdk` +* `org/graalvm/truffle/truffle-api` +* `com/ibm/icu/icu4j` diff --git a/versioned_docs/version-1.0.0/documentation/installation/full/wildfly/pre-packaged.md b/versioned_docs/version-1.0.0/documentation/installation/full/wildfly/pre-packaged.md new file mode 100644 index 0000000..5c362df --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/full/wildfly/pre-packaged.md @@ -0,0 +1,15 @@ +--- + +title: 'Pre-Packaged Distribution' +sidebar_position: 10 +description: "Download and install WildFly Application Server with the Full Distribution pre-deployed and pre-configured." + +--- +## Install the pre-packaged Distribution + +### Installation Procedure + +1. Download the pre-packaged distribution for [WildFly](https://downloads.camunda.cloud/release/operaton-bpm/wildfly/). +2. Unpack the distro to a directory. +3. Adjust the datasource according to your needs (see [Manual Installation](manual.md)). +4. Startup the server by running `operaton-welcome.bat` or by using the `$WILDFLY_HOME/bin/standalone.{bat/sh}` script. diff --git a/versioned_docs/version-1.0.0/documentation/installation/index.md b/versioned_docs/version-1.0.0/documentation/installation/index.md new file mode 100644 index 0000000..0f6c98c --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/index.md @@ -0,0 +1,15 @@ +--- + +title: "Install Operaton" +sidebar_position: 40 + +--- +# Install Operaton + +These documents contain information about how to install different components and distributions of Operaton. + +:::note[Supported Environments] +Before installing a distribution, first check the list of [Supported Environments](../introduction/supported-environments.md). +::: + +Choose from the following distributions and components: diff --git a/versioned_docs/version-1.0.0/documentation/installation/operaton-bpm-run.md b/versioned_docs/version-1.0.0/documentation/installation/operaton-bpm-run.md new file mode 100644 index 0000000..66091d1 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/operaton-bpm-run.md @@ -0,0 +1,32 @@ +--- + +title: "Remote Engine Distribution" +sidebar_position: 5 +description: "Install Operaton Run, an easy to configure remote engine distribution of Operaton. No Java knowledge necessary." + +--- +## Install Operaton Run + +:::note[What is a Remote Engine Distribution?] +If you need a Remote or Shared Engine Distribution depends on your use-case. Check out the [architecture overview](../introduction/architecture.md) for more information. +::: + +This page describes the steps to execute Operaton Run. + +## Requirements +Please make sure that you have the Java Runtime Environment 17 installed. + +You can verify this by using your terminal, shell, or command line: + +```sh +java -version +``` +If you need to install Java Runtime Environment, you can [find the download from Oracle here](https://www.oracle.com/java/technologies/javase-downloads.html). + +## Installation Procedure +1. Download the pre-packed distribution of [Operaton here](tbd). +1. Unpack the distro to a directory. +1. Configure the distro as described in the [User Guide](../user-guide/operaton-bpm-run.md). +1. Start Operaton Run by executing the start script (start.bat for Windows, start.sh for Linux/Mac). +1. Access the Operaton webapps (Cockpit, Tasklist, Admin) via http://localhost:8080/operaton/app/. +1. Access the [REST API](../reference/rest/overview/index.md) via http://localhost:8080/engine-rest (e.g. http://localhost:8080/engine-rest/engine). diff --git a/versioned_docs/version-1.0.0/documentation/installation/spring-boot.md b/versioned_docs/version-1.0.0/documentation/installation/spring-boot.md new file mode 100644 index 0000000..426f8d1 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/spring-boot.md @@ -0,0 +1,10 @@ +--- + +title: "Spring Boot" +sidebar_position: 24 +description: "Run Operaton with Spring Boot" + +--- +## Run Operaton using Spring Boot + +To learn how to run Operaton with Spring Boot, please consult the [Spring Boot user guide](../user-guide/spring-boot-integration/index.md). diff --git a/versioned_docs/version-1.0.0/documentation/installation/standalone-webapplication.md b/versioned_docs/version-1.0.0/documentation/installation/standalone-webapplication.md new file mode 100644 index 0000000..55ed8d6 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/installation/standalone-webapplication.md @@ -0,0 +1,12 @@ +--- + +title: "Standalone Webapplication (.war)" +sidebar_position: 20 +description: "Install the Standalone Webapplication (bundling an embedded Process Engine) inside an Application Server like Wildfly or Tomcat." + +--- +## Install the Standalone Webapplication (.war) + +Operaton Automation 7.19 is the last release providing support for Standalone Web Application Distribution. + +Please consider migrating to [another supported](../introduction/downloading-operaton.md#download-the-runtime) setup. diff --git a/versioned_docs/version-1.0.0/documentation/introduction/architecture.md b/versioned_docs/version-1.0.0/documentation/introduction/architecture.md new file mode 100644 index 0000000..d804e5a --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/introduction/architecture.md @@ -0,0 +1,112 @@ +--- + +title: 'Architecture Overview' +sidebar_position: 30 + +--- +# Architecture Overview + +Operaton is a Java-based framework. The main components are written in Java and we have a general focus on providing Java developers with the tools they need for designing, implementing and running business processes and workflows on the JVM. Nevertheless, we also want to make the process engine technology available to non-Java developers. This is why Operaton also provides a REST API which allows you to build applications connecting to a remote process engine. + +Operaton can be used both as a standalone process engine server or embedded inside custom Java applications. The embeddability requirement is at the heart of many architectural decisions within Operaton. For instance, we work hard to make the process engine component a lightweight component with as little dependencies on [third-party libraries](./third-party-libraries/index.md) as possible. Furthermore, the embeddability motivates programming model choices such as the capabilities of the process engine to participate in Spring Managed or JTA [transactions and the threading model](../user-guide/process-engine/transactions-in-processes.md). + + +## Process Engine Architecture + +![Process Engine Architecture](../../assets/documentation/introduction/process-engine-architecture.png) + +* [Process Engine Public API](../user-guide/process-engine/process-engine-api.md): Service-oriented API allowing Java applications to interact with the process engine. The different responsibilities of the process engine (i.e., Process Repository, Runtime Process Interaction, Task Management, ...) are separated into individual services. The public API features a [command-style access pattern](http://en.wikipedia.org/wiki/Command_pattern): Threads entering the process engine are routed through a Command Interceptor which is used for setting up Thread Context such as Transactions. +* **BPMN 2.0 Core Engine**: This is the core of the process engine. It features a lightweight execution engine for graph structures (PVM - Process Virtual Machine), a BPMN 2.0 parser which transforms BPMN 2.0 XML files into Java Objects and a set of BPMN Behavior implementations (providing the implementation for BPMN 2.0 constructs such as Gateways or Service Tasks). +* [Job Executor](../user-guide/process-engine/the-job-executor.md): The Job Executor is responsible for processing asynchronous background work such as Timers or asynchronous continuations in a process. +* **The Persistence Layer**: The process engine features a persistence layer responsible for persisting process instance state to a relational database. We use the MyBatis mapping engine for object relational mapping. + + +### Required Third-Party Libraries + +See the section on [third-party libraries](./third-party-libraries/index.md). + + +## Operaton Architecture + +Operaton is a flexible framework which can be deployed in different scenarios. This section provides an overview of the most common deployment scenarios. + + +### Embedded Process Engine + +![Embedded Process Engine](../../assets/documentation/introduction/embedded-process-engine.png) + +In this case, the process engine is added as an application library to a custom application. This way, the process engine can easily be started and stopped with the application lifecycle. It is possible to run multiple embedded process engines on top of a shared database. + + +### Shared, Container-Managed Process Engine + +![Shared Process Engine](../../assets/documentation/introduction/shared-process-engine.png) + +In this case, the process engine is started inside the runtime container (Servlet Container, Application Server, ...). The process engine is provided as a container service and can be shared by all applications deployed inside the container. The concept can be compared to a JMS Message Queue which is provided by the runtime and can be used by all applications. There is a one-to-one mapping between process deployments and applications: the process engine keeps track of the process definitions deployed by an application and delegates execution to the application in question. + + +### Standalone (Remote) Process Engine Server + +![Standalone Process Engine](../../assets/documentation/introduction/standalone-process-engine.png) + +In this case, the process engine is provided as a network service. Different applications running on the network can interact with the process engine through a remote communication channel. The easiest way to make the process engine accessible remotely is to use the built-in REST API. Different communication channels such as SOAP Webservices or JMS are possible but need to be implemented by users. + + +## Clustering Model + +In order to provide scale-up or fail-over capabilities, the process engine can be distributed to different nodes in a cluster. Each process engine instance must then connect to a shared database. + +![Process Engine Cluster](../../assets/documentation/introduction/clustered-process-engine.png) + +The individual process engine instances do not maintain session state across transactions. Whenever the process engine runs a transaction, the complete state is flushed out to the shared database. This makes it possible to route subsequent requests which do work in the same process instance to different cluster nodes. This model is very simple and easy to understand and imposes limited restrictions when it comes to deploying a cluster installation. As far as the process engine is concerned, there is no difference between setups for scale-up and setups for fail-over (as the process engine keeps no session state between transactions). + +### Session State in a Clustered Environment + +Operaton doesn't provide load-balancing capabilities or session replication capabilities out of the box. The load-balancing function would need to be provided by a third-party system, and session replication would need to be provided by the host application server. + +In a clustered setup, if users are going to login to the web applications, an extra step will need to be taken to ensure that users aren't asked to login multiple times. Two options exist: + +1. "Sticky sessions" could be configured and enabled within your load balancing solution. This would ensure that all requests from a given user are directed to the same instance over a configurable period of time. +2. Session sharing can be enabled in your application server such that the application server instances share session state. This would allow users to connect to multiple instances in the cluster without being asked to login multiple times. + +If neither of the above approaches are implemented in a cluster setup, connections to multiple nodes - intentionally or via a load-balancing solution - will result in multiple login requests. + +### The Job Executor in a Clustered Environment + +The process engine [job executor](../user-guide/process-engine/the-job-executor.md) is also clustered and runs on each node. This way, there is no single point of failure as far as the process engine is concerned. The job executor can run in both [homogeneous and heterogeneous clusters](../user-guide/process-engine/the-job-executor.md#cluster-setups). + +:::note[Time zones] +The are some limitations on [time zone usage in a cluster](../user-guide/process-engine/time-zones.md#cluster-setup). +::: + + +## Multi-Tenancy Models + +To serve multiple, independent parties with one Operaton installation, the process engine supports +multi-tenancy. The following multi tenancy models are supported: + +* Table-level data separation by using different database schemas or databases +* Row-level data separation by using a tenant marker + +Users should choose the model which fits their data separation needs. Operaton's APIs provide access +to processes and related data specific to each tenant. +More details can be found in the [multi-tenancy section](../user-guide/process-engine/multi-tenancy.md). + + +## Web Application Architecture + +The Operaton web applications are based on a RESTful architecture. + +Frameworks used: + +* [JAX-RS](https://jax-rs-spec.java.net) based Rest API +* [AngularJS](http://angularjs.org) +* [RequireJS](http://requirejs.org) +* [jQuery](http://jquery.com) +* [Twitter Bootstrap](http://getbootstrap.com) + +Additional custom frameworks developed by Operaton hackers: + +* [operaton-bpmn.js](https://github.com/operaton/operaton-bpmn.js): Operaton BPMN 2.0 JavaScript libraries +* [ngDefine](https://github.com/Nikku/requirejs-angular-define): integration of AngularJS into RequireJS powered applications +* [angular-data-depend](https://github.com/Nikku/angular-data-depend): toolkit for implementing complex, data heavy AngularJS applications diff --git a/versioned_docs/version-1.0.0/documentation/introduction/downloading-operaton.md b/versioned_docs/version-1.0.0/documentation/introduction/downloading-operaton.md new file mode 100644 index 0000000..f0ce854 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/introduction/downloading-operaton.md @@ -0,0 +1,72 @@ +--- + +title: 'Download' +sidebar_position: 10 + +menu: + main: + identifier: "user-guide-introduction-downloading-operaton" + parent: "user-guide-introduction" + +--- + + +## Prerequisites + +Before downloading Operaton, make sure you have a JRE (Java Runtime Environment), or better, a JDK +(Java Development Kit) installed. Please check the supported [Java versions](./supported-environments.md#java). + +[Download JDK][get-jdk] + + +## Download the Runtime + +Operaton is a flexible framework which can be used in different contexts. See [Architecture Overview](./architecture.md) for more details. Based on how you want +to use Operaton, you can choose a different distribution. + + +### Spring Boot and Docker + +It is also possible to run Operaton with [Spring Boot][run-with-spring-boot] and [Docker][run-with-docker]. + + +### Full Distribution + +Download the full distribution if you want to use a [shared process engine][shared-engine] or if you +want to get to know Operaton quickly, without any additional setup or installation steps required. + +The full distribution bundles + +* Process Engine configured as [shared process engine][shared-engine], +* Runtime Web Applications (Tasklist, Cockpit, Admin), +* Rest Api, +* Container / Application Server itself. + +:::note[Server/Container] + If you download the full distribution for an open-source application + server/container, the container itself is included. For example, if you download the Tomcat + distribution, Tomcat itself is included and the Operaton binaries (process engine and + web apps) are pre-installed in the container. This is not true for the the Oracle WebLogic + and IBM WebSphere downloads; these downloads do not include the application servers themselves. +::: + +:::note[Wildfly Application Server] + Wildfly Application Server is provided as part of the archives as a convenience. For a copy of the source code, the full set of attribution notices, and other relevant information please see https://github.com/wildfly/wildfly. We will also provide you with a copy of the source code if you [contact our Open-Source Compliance Team](https://docs.operaton.org/docs/documentation/introduction/licenses/#contact) at any time within three years of you downloading an archive (for which we may charge a nominal sum). Wildfly Application Server is copyright ยฉ JBoss, Home of Professional Open Source, 2010, Red Hat Middleware LLC [..and contributors]. +::: + +See the [Installation Guide][installation-guide-full] for additional details. + + +## Download Camunda Modeler + +Camunda Modeler is a modeling Tool for BPMN 2.0 and DMN 1.3. Camunda Modeler can be downloaded +from the [community download page][community-download-page]. + + + +[get-jdk]: https://www.oracle.com/technetwork/java/javase/downloads/index.html +[community-download-page]: https://camunda.com/download/ +[shared-engine]: ./architecture.md#shared-container-managed-process-engine +[installation-guide-full]: ../installation/index.md +[run-with-spring-boot]: ../user-guide/spring-boot-integration/index.md +[run-with-docker]: ../installation/docker.md diff --git a/versioned_docs/version-1.0.0/documentation/introduction/extensions.md b/versioned_docs/version-1.0.0/documentation/introduction/extensions.md new file mode 100644 index 0000000..c754932 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/introduction/extensions.md @@ -0,0 +1,29 @@ +--- + +title: 'Extensions' +sidebar_position: 50 + +menu: + main: + identifier: "user-guide-introduction-extensions" + parent: "user-guide-introduction" + +--- + +Operaton is developed by Operaton as an open source project in collaboration with the community. This is the basis for the Operaton product provided by Operaton as a commercial offering. + +## Extensions + +Operaton supports the community in its effort to build additional community extensions under the Operaton umbrella. Such community extensions are maintained by the community and are not part of the commercial Operaton product. + +The [Operaton Community Hub](https://github.com/operaton-community-hub) is a GitHub organization that serves as the home of Operaton open source, community-contributed extensions. You can migrate an extension you've built to the Hub, search for existing extensions, or get started with open source by helping community extension maintainers with open issue or pull request triage. + +### Building a Extension + +Do you have a great idea around open source BPM you want to share with the world? Awesome! Operaton will support you in building your own community extension. Have a look at our [process for creating a new community extension](https://github.com/operaton-community-hub/community/blob/main/creating-new-extensions.md) to find out how to propose a community project. + +You can also visit the Operaton Community Hub [community repository](https://github.com/operaton-community-hub/community) to learn more about migrating your community extension into the community hub, benefits to joining the Operaton Community Hub organization, contributing to an extension, and much more. + +The Operaton Community Hub enables developers to have a centralized home for their Operaton community extensions, and aids new contributors to open source software in discovering new projects to work on. + +You can also learn about [contributing code to the core Operaton codebase](https://github.com/operaton/operaton/blob/main/CONTRIBUTING.md). diff --git a/versioned_docs/version-1.0.0/documentation/introduction/implemented-standards.md b/versioned_docs/version-1.0.0/documentation/introduction/implemented-standards.md new file mode 100644 index 0000000..7eb61e4 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/introduction/implemented-standards.md @@ -0,0 +1,61 @@ +--- + +title: 'Implemented Standards' +sidebar_position: 20 + +menu: + main: + identifier: "user-guide-introduction-standards" + parent: "user-guide-introduction" + +--- + +Operaton implements three different standards in the Business Process Management scope: BPMN 2.0, CMMN 1.1 and DMN 1.3. +These three standards are defined by the [Object Management Group][OMG] with active collaboration of Operaton. + +Operaton provides open source implementations of execution and [modeling tools][modelers]. + +## BPMN + +Business Process Model and Notation (BPMN) is a standard for Workflow and Process Automation. +Operaton supports the 2.0 version of BPMN. + +* Getting started implementing BPMN Processes: [Quick Start (Java / JS)] +* Getting to Know BPMN as a Modeling Language: [BPMN Modeling Tutorial] +* Modeling BPMN: [BPMN Modeling Reference] +* Tool for modeling BPMN: [BPMN Modeler][modelers] +* Implementing BPMN Processes: [BPMN Implementation Reference] +* Executing BPMN: [Process Engine] + +## CMMN + +Case Management Model and Notation (CMMN) is a standard for Case Management. +Operaton supports the 1.1 version of CMMN. + +* Implementing CMMN Cases: [CMMN Implementation Reference] +* Executing CMMN: [Process Engine] + +## DMN + +Decision Model and Notation (DMN) is a standard for Business Decision Management. +Operaton supports the 1.1 version of DMN. + +* Getting started implementing DMN decision tables: [DMN Getting Started] +* Getting to Know DMN: [DMN Modeling Tutorial] +* Tool for editing DMN: [DMN Editor][modelers] +* Implementing DMN Decisions: [DMN Implementation Reference] +* Executing DMN: [DMN Engine] + + +[OMG]: http://www.omg.org/ +[modelers]: ../modeling-bpmn/index.md +[BPMN Modeling Tutorial]: https://operaton.org/bpmn/tutorial/ +[BPMN Modeling Reference]: https://operaton.org/bpmn/reference/ +[Quick Start (Java / JS)]: /get-started/quick-start/ +[BPMN Implementation Reference]: ../reference/bpmn20/index.md +[CMMN Implementation Reference]: ../reference/cmmn11/index.md +[DMN Getting Started]: /get-started/dmn/ +[DMN Implementation Reference]: ../reference/dmn/index.md +[DMN Modeling Tutorial]: https://operaton.org/dmn/tutorial/ +[Process Engine]: ../user-guide/process-engine/index.md +[DMN Engine]: ../user-guide/dmn-engine/index.md diff --git a/versioned_docs/version-1.0.0/documentation/introduction/index.md b/versioned_docs/version-1.0.0/documentation/introduction/index.md new file mode 100644 index 0000000..ba20e32 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/introduction/index.md @@ -0,0 +1,40 @@ +--- + +sidebar_position: 1 + +--- +# Introduction + +Welcome to the Operaton Manual! Operaton is a Java-based framework supporting BPMN for workflow and process automation, CMMN for Case Management and DMN for Business Decision Management. Also see: [Implemented Standards](./implemented-standards.md). + +Operaton inherited its source code from the legacy of Camunda, Activiti and their predecessors. Camunda 7 was an important contribution to the open-source BPMN community. Building on this legacy, we aim to create a thriving future for a truly free and open-source BPMN engine. + +:::info +We are in the process of forming a legal foundation, specifically a German eingetragener Verein (Registered Association), that will own the project and its trademark. +::: + +This document contains information about the features provided by Operaton. + +To give you an overview of Operaton, the following illustration shows the most important components along with some typical user roles. + +![Operaton Components and Roles](../../assets/documentation/introduction/architecture-overview.png) + + +## Process Engine & Infrastructure + +* [Process Engine](../user-guide/process-engine/index.md) The process engine is a Java library responsible for executing BPMN 2.0 processes, CMMN 1.1 cases and DMN 1.3 decisions. It has a lightweight POJO core and uses a relational database for persistence. ORM mapping is provided by the MyBatis mapping framework. +* [Spring Framework Integration](../user-guide/spring-framework-integration/index.md) +* [CDI/Java EE Integration](../user-guide/cdi-java-ee-integration/index.md) +* [Runtime Container Integration](../user-guide/runtime-container-integration/index.md) (Integration with application server infrastructure.) + +## Modeler + +* [Camunda Modeler](../modeling-bpmn/index.md): Modeling tool for BPMN 2.0 and CMMN 1.1 diagrams as well as DMN 1.3 decision tables. +* [bpmn.io](http://bpmn.io/): Open-source project for the modeling framework and toolkits. + +## Web Applications + +* [REST API](../reference/rest/index.md) The REST API allows you to use the process engine from a remote application or a JavaScript application. (Note: The documentation of the REST API is factored out into own documents.) +* [Operaton Tasklist](../webapps/tasklist/index.md) A web application for human workflow management and user tasks that allows process participants to inspect their workflow tasks and navigate to task forms in order to work on the tasks and provide data input. +* [Operaton Cockpit](../webapps/cockpit/index.md) A web application for process monitoring and operations that allows you to search for process instances, inspect their state and repair broken instances. +* [Operaton Admin](../webapps/admin/index.md) A web application that allows you to manage users, groups and authorizations. diff --git a/versioned_docs/version-1.0.0/documentation/introduction/licenses.md b/versioned_docs/version-1.0.0/documentation/introduction/licenses.md new file mode 100644 index 0000000..5af1dbc --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/introduction/licenses.md @@ -0,0 +1,61 @@ +--- + +title: 'Licenses' +sidebar_position: 15 + +menu: + main: + identifier: "user-guide-introduction-licenses" + parent: "user-guide-introduction" + +--- + + +## Operaton + +Operaton is a Java-based framework. + +If you are using Operaton, the entire software is provided under various open source licenses (mainly Apache 2.0 and MIT). Which components are published under an open source license is clearly stated in the licensing header of a source file or a LICENSE file present in the root directory of the software source code repository. + + +### Third-Party Libraries + +Operaton includes libraries developed by third parties. See the following resources: + +* [Third-Party Libraries][third-party-libraries]: An overview of the dependencies Operaton distributes. Additionally, this page points out particularly important third-party licenses to be aware of. +* [HTML License Book Operaton](https://github.com/operaton/operaton/blob/main/distro/license-book/src/main/resources/license-book.txt): A list of all dependencies Operaton distributes with the Operaton 7 artifacts, including their licenses and notices. +* [Plain text license book Operaton][license-book]: A plain text version of the license book. + +[third-party-libraries]: ./third-party-libraries/index.md + + + +## GPL Cooperation Commitment + +### Our Commitment + +Before filing or continuing to prosecute any legal proceeding or claim (other than a Defensive Action) arising from termination of a Covered License, Operaton commits to extend to the person or entity (โ€œyouโ€) accused of violating the Covered License the following provisions regarding cure and reinstatement, taken from GPL version 3. As used here, the term โ€˜this Licenseโ€™ refers to the specific Covered License being enforced. + +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + +Operaton intends this Commitment to be irrevocable, and binding and enforceable against Operaton and assignees of or successors to Operatonโ€™s copyrights. + +Operaton may modify this Commitment by publishing a new edition on this page or a successor location. + +### Definitions + +โ€˜Covered Licenseโ€™ means the GNU General Public License, version 2 (GPLv2), the GNU Lesser General Public License, version 2.1 (LGPLv2.1), or the GNU Library General Public License, version 2 (LGPLv2), all as published by the Free Software Foundation. + +โ€˜Defensive Actionโ€™ means a legal proceeding or claim that Operaton brings against you in response to a prior proceeding or claim initiated by you or your affiliate. + +โ€˜Operatonโ€™ means Operaton and its subsidiaries. + +This work is available under a [Creative Commons Attribution-ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/). + +## Contact + +If you have a question specifically about the licensing or distribution of Operatonโ€™s software and it has not been answered by this page, please contact the Open Source Compliance team at [foss@Operaton.org](mailto:foss@Operaton.org). diff --git a/versioned_docs/version-1.0.0/documentation/introduction/public-api.md b/versioned_docs/version-1.0.0/documentation/introduction/public-api.md new file mode 100644 index 0000000..38ecccd --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/introduction/public-api.md @@ -0,0 +1,43 @@ +--- + +title: 'Public API' +sidebar_position: 80 + +menu: + main: + identifier: "user-guide-introduction-public-api" + parent: "user-guide-introduction" + +--- + + +Operaton provides a public API. This section covers the definition of the public API and backwards compatibility for version updates. + + +## Definition of Public API + +The Operaton public API is limited to the following items: + +Java API: + +All non-implementation Java packages (package name does not contain `impl`) of the following modules. + +* `operaton-engine` +* `operaton-engine-spring` +* `operaton-engine-cdi` +* `operaton-engine-dmn` +* `operaton-bpmn-model` +* `operaton-cmmn-model` +* `operaton-dmn-model` +* `operaton-spin-core` +* `operaton-connect-core` +* `operaton-commons-typed-values` + +HTTP API (REST API): + +* `operaton-engine-rest`: HTTP interface (set of HTTP requests accepted by the REST API as documented in [REST API reference](../reference/rest/index.md). Java classes are not part of the public API. + + +## Backwards Compatibility for Public API + +The Operaton versioning scheme follows the MAJOR.MINOR.PATCH pattern put forward by [Semantic Versioning](http://semver.org/). Operaton will maintain public API backwards compatibility for MINOR version updates. Example: Update from version `7.1.x` to `7.2.x` will not break the public API. diff --git a/versioned_docs/version-1.0.0/documentation/introduction/supported-environments.md b/versioned_docs/version-1.0.0/documentation/introduction/supported-environments.md new file mode 100644 index 0000000..811d730 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/introduction/supported-environments.md @@ -0,0 +1,108 @@ +--- + +title: 'Supported Environments' +sidebar_position: 40 + +menu: + main: + identifier: "user-guide-introduction-supported-environments" + parent: "user-guide-introduction" + +--- + + +Run Operaton in every Java-runnable environment. Operaton is supported with our QA infrastructure in the following environments. + +:::note[Supported Environments] + Please note that the environments listed in this section depend on the version of Operaton. Please select the corresponding version of this documentation to see the environment that fits to your version of Operaton. e.g., [supported environments for version 7.15](http://docs.operaton.org/7.15/guides/user-guide/#introduction-supported-environments) +::: + + +## Container/Application Server for Runtime Components + +### Application-Embedded Process Engine + +* All Java application servers +* Operaton Spring Boot Starter: Embedded Tomcat + * [Supported versions](../user-guide/spring-boot-integration/version-compatibility.md) + * [Deployment scenarios](../user-guide/spring-boot-integration/index.md#supported-deployment-scenarios) +* Operaton Engine Quarkus Extension + * [Supported versions](../user-guide/quarkus-integration/version-compatibility.md) + * [Deployment scenarios](../user-guide/quarkus-integration/index.md#supported-deployment-scenarios) + +### Container-Managed Process Engine and Operaton Cockpit, Tasklist, Admin + +* Apache Tomcat 9.0 / 10.1 +* JBoss EAP 7.4 / 8.0 +* WildFly Application Server 23.0 / 26.0 / 33.0 + see [Installation guide](../installation/full/wildfly/index.md)) + +## Databases + +### Supported Database Products + +* MySQL 8.0 +* Oracle 19c / 23ai +* IBM DB2 11.5 (excluding IBM z/OS for all versions) +* PostgreSQL 14 / 15 / 16 +* Amazon Aurora PostgreSQL compatible with PostgreSQL 14 / 15 +* Microsoft SQL Server 2017 / 2019 / 2022 (see [Configuration Note](../user-guide/process-engine/database/mssql-configuration.md)) +* Microsoft Azure SQL with Operaton-supported SQL Server compatibility levels + (see [Configuration Note](../user-guide/process-engine/database/mssql-configuration.md#azure-sql-compatibility-levels-supported-by-operaton)): + * SQL Server on Azure Virtual Machines + * Azure SQL Managed Instance + * Azure SQL Database +* H2 2.3 (not recommended for [Cluster Mode](./architecture.md#clustering-model) - see [Deployment Note](../user-guide/process-engine/deployments.md)) + +### Database Clustering & Replication + +Clustered or replicated databases are supported given the following conditions. The communication between Operaton and the database cluster has to match with the corresponding non-clustered / non-replicated configuration. It is especially important that the configuration of the database cluster guarantees the equivalent behavior of READ-COMMITTED isolation level. + + +## Web Browser + +* Google Chrome latest +* Mozilla Firefox latest +* Microsoft Edge latest + + +## Java + +* Java 11 / 17 / 21 (if supported by your application server/container) + + +## Java Runtime + +* Oracle JDK 11 / 17 / 21 +* OpenJDK 11 / 17 / 21, including builds of the following products: + * Oracle OpenJDK + * Eclipse Temurin JDK + * Amazon Corretto + * Azul Zulu + +## Camunda Modeler + +[Supported environments](https://docs.camunda.io/docs/reference/supported-environments/#camunda-modeler) for Camunda Modeler have moved to [docs.camunda.io](https://docs.camunda.io/). + +## Maintenance Policy + +### Adding Environments + +Whenever a new version of one of the following environments is released, we target support of that new version with the next minor release of Operaton. A new released environment has to be available three months before the next Operaton minor release to be considered. + +* Java Language (LTS) +* Spring Boot +* Wildfly Application Server +* PostgreSQL + +The exact release in which we support a new environment depends on factors such as the release date of the environment and the required implementation effort. + +Version support for other environments is decided case by case, much of which is based on the demand in our user base. + +### Removing Environments + +Whenever a new version of one of the following environments is supported, we usually discontinue support of the oldest version with the same release: + +* Wildfly Application Server + +Note that we may decide to deviate from this policy on a case-by-case basis. diff --git a/versioned_docs/version-1.0.0/documentation/introduction/telemetry.md b/versioned_docs/version-1.0.0/documentation/introduction/telemetry.md new file mode 100644 index 0000000..beced11 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/introduction/telemetry.md @@ -0,0 +1,17 @@ +--- +title: 'Telemetry' +sidebar_position: 45 +menu: + main: + identifier: "user-guide-introduction-telemetry" + parent: "user-guide-introduction" +--- + +The feature has been [removed][telemetry-removed] in Operaton`7.22.0+`. + +Documentation about diagnostics data can be found in the [User Guide](../user-guide/process-engine/diagnostics-data.md). + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/introduction/third-party-libraries/index.md b/versioned_docs/version-1.0.0/documentation/introduction/third-party-libraries/index.md new file mode 100644 index 0000000..bcbbb98 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/introduction/third-party-libraries/index.md @@ -0,0 +1,26 @@ +--- + +title: 'Third-Party Libraries' +sidebar_position: 70 + +menu: + main: + identifier: "user-guide-introduction-third-party-libraries" + parent: "user-guide-introduction" + +--- + +This section covers third party libraries and their use in Operaton. It provides license books (see sub pages) that list the third-party dependencies that Operaton distributes along with its code. Our license books include the library name, version, copyright notices, and licenses under which we use the library. By downloading and using Operaton, you agree to adhere to these licenses. + +For selected third-party libraries that we consider especially noteworthy, this page describes their license terms and use in the Operaton artifacts. + +For legal reference and any other license-related aspects please refer to [Licences](../licenses.md). + + +## Web Applications (Cockpit, Tasklist, Admin) + +### XLTS for AngularJS + +Starting with versions 7.18.0-alpha2, 7.17.2, 7.16.9, 7.15.15, the Operaton web applications use a set of third-party libraries referred to as *XLTS for AngularJS* (technical names: `angular`, `angular-animate`, `angular-cookies`, `angular-loader`, `angular-mocks`, `angular-resource`, `angular-route`, `angular-sanitize`, `angular-touch`). XLTS for AngularJS follows a proprietary license called *EULA for the downstream recipient of XLTS for AngularJS* (short *XLTS for AngularJS โ€“ EULA*) that you can find [here](https://xlts.dev/angularjs/downstream-eula). + +This license imposes restrictions around distributing and reverse-engineering XLTS for AngularJS independently of Operaton artifacts. The license does otherwise not restrict how you can use and distribute the Operaton artifacts that include XLTS for AngularJS. You can find our rationale for using this library in [our blog post on ensuring the long-term maintenance of Operaton](https://camunda.com/blog/2022/02/ensuring-continuous-support-of-angularjs-in-operaton-platform-7-17/). diff --git a/versioned_docs/version-1.0.0/documentation/modeling-bpmn/index.md b/versioned_docs/version-1.0.0/documentation/modeling-bpmn/index.md new file mode 100644 index 0000000..0657742 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/modeling-bpmn/index.md @@ -0,0 +1,10 @@ +--- + +title: 'Modeling BPMN' +sidebar_position: 45 + +--- + +You can continue to model your process models with the Desktop Modeler from Camunda. The processes from this can be imported and processed by Operaton. + +You can find the Camunda Modeler documentation [here](https://docs.camunda.io/docs/components/modeler/about-modeler/). \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/custom-extensions/extension-attributes.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/custom-extensions/extension-attributes.md new file mode 100644 index 0000000..598dc88 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/custom-extensions/extension-attributes.md @@ -0,0 +1,1843 @@ +--- + +title: 'Extension Attributes' +sidebar_position: 20 + +--- + +The following attributes are extension attributes for the `camunda` namespace `http://operaton.org/schema/1.0/bpmn`. + +## assignee + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies a human performer of a User Task. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + The name of a performer as java.lang.String or an expression which evaluates to a java.lang.String e.g., ```${initiator``` +
Default Value
BPMN 2.0 Elements + User Task +
+ +## asyncAfter + + + + + + + + + + + + + + + + + + + + + + +
Description + Specifies an asynchronous continuation after an activity, see Asynchronous Continuations for more information. +
Typejava.lang.Boolean
Possible Values + true, false +
Default Valuefalse
BPMN 2.0 Elements + Start Events, + End Events, + Intermediate Throw Events, + Intermediate Catch Events, + + Task, + Service Task, + Send Task, + User Task, + Business Rule Task, + Script Task, + Receive Task, + Manual Task, + + Embedded Subprocess, + Call Activity, + Transaction Subprocess, + + Parallel Gateway, + Inclusive Gateway, + Exclusive Gateway, + + Multi Instance Loop Characteristics, + + Boundary Event, + Message Boundary Event, + Error Boundary Event, + Timer Boundary Event, + Escalation Boundary Event, + Conditional Boundary Event, + Signal Boundary Event, + Cancel Boundary Event +
+ +## asyncBefore + + + + + + + + + + + + + + + + + + + + + + +
Description + Specifies an asynchronous continuation before an activity, see Asynchronous Continuations for more information. +
Typejava.lang.Boolean
Possible Values + true, false +
Default Valuefalse
BPMN 2.0 Elements + Start Events, + End Events, + Intermediate Throw Events, + Intermediate Catch Events, + + Task, + Service Task, + Send Task, + User Task, + Business Rule Task, + Script Task, + Receive Task, + Manual Task, + + Embedded Subprocess, + Call Activity, + Transaction Subprocess, + + Parallel Gateway, + Event Based Gateway, + Inclusive Gateway, + Exclusive Gateway, + + Multi Instance Loop Characteristics, + + Boundary Event, + Message Boundary Event, + Error Boundary Event, + Timer Boundary Event, + Escalation Boundary Event, + Conditional Boundary Event, + Signal Boundary Event, + Cancel Boundary Event +
+ +## calledElementBinding + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which process definition version of the subprocess the call activity calls. + If the value is version, the attribute operaton:calledElementVersion is required. + If the value is versionTag, the attribute operaton:calledElementVersionTag is required. + See Called Element Binding for more information. +
Typejava.lang.String
Possible Values + latest, deployment, version, versionTag +
Default Valuelatest
BPMN 2.0 Elements + Call Activity +
+ +## calledElementVersion + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which process definition version of the subprocess the call activity calls if the operaton:calledElementBinding + is set to version, see Called Element Binding for more information. +
Typejava.lang.Integer or org.operaton.bpm.engine.delegate.Expression
Possible Values + A concrete version of all deployed version numbers of the subprocess to call as java.lang.Integer or an expression which evaluates to a java.lang.Integer e.g., ```${versionToCall``` +
Default Value
BPMN 2.0 Elements + Call Activity +
+ +## calledElementVersionTag + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which process definition version tag of the subprocess the call activity calls if the operaton:calledElementBinding + is set to versionTag, see Called Element Binding for more information. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + A concrete version tag of all deployed version numbers of the subprocess to call as java.lang.String or an expression which evaluates to a java.lang.String e.g., ```${versionTagToCall``` +
Default Value
BPMN 2.0 Elements + Call Activity +
+ +## calledElementTenantId + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the tenant id of the process definition which is to be resolved by a call activity, see Called Element Tenant Id for more information. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + A concrete tenant id or an expression which evaluates to a java.lang.String e.g., ```${execution.tenantId``` +
Default Value
BPMN 2.0 Elements + Call Activity +
+ +## candidateGroups + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which group(s) will be candidate for performing the User Task. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + Comma separated list of group ids as java.lang.String or expressions that evaluate to a java.lang.String or a java.util.Collection of java.lang.String, e.g., management or management, ```${accountancyGroupId()}``` +
Default Value
BPMN 2.0 Elements + User Task +
+ +## candidateStarterGroups + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which group(s) will be able to start the process. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + Comma separated list of group ids as java.lang.String or expressions that evaluate to a java.lang.String or a java.util.Collection of java.lang.String, e.g., management or management, ```${accountancyGroupId()}``` +
Default Value
BPMN 2.0 Elements + Process +
+ +## candidateStarterUsers + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which user(s) will be able to start the process. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + Comma separated list of user ids as java.lang.String or expressions that evaluate to a java.lang.String or a java.util.Collection of java.lang.String, e.g., kermit, gonzo or ```${ldapService.findAllSales()}``` +
Default Value
BPMN 2.0 Elements + Process +
+ +## candidateUsers + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which user(s) will be candidate for performing the User Task. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + Comma separated list of user ids as java.lang.String or expressions that evaluate to a java.lang.String or a java.util.Collection of java.lang.String, e.g., kermit, gonzo or ```${ldapService.findAllSales()}``` +
Default Value
BPMN 2.0 Elements + User Task +
+ +## caseBinding + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which case definition version of the subcase the call activity calls. + If the value is version, the attribute operaton:caseVersion + is required, see Case Binding for more information. +
Typejava.lang.String
Possible Values + latest, deployment, version +
Default Value
BPMN 2.0 Elements + Call Activity +
+ +## caseRef + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute references a case definition by its key to call. +
Typejava.lang.String
Possible Values
Default Value
BPMN 2.0 Elements + Call Activity +
+ +## caseVersion + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which case definition version of the subcase the call activity calls if the operaton:caseBinding is set to version, see Case Binding for more information. +
Typejava.lang.Integer
Possible Values + All deployed version numbers of the subprocess to call +
Default Value
BPMN 2.0 Elements + Call Activity +
+ +## caseTenantId + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the tenant id of the case definition which is to be resolved by a call activity, see Case Tenant Id for more information. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + A concrete tenant id or an expression which evaluates to a java.lang.String e.g., ```${execution.tenantId``` +
Default Value
BPMN 2.0 Elements + Call Activity +
+ +## class + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which Java class will be executed at runtime. The stated class must implement a Java delegate interface. +
Typejava.lang.String
Possible Values + Fully qualified Java class name of a class which implements a Java Delegate interface, e.g., org.operaton.bpm.MyJavaDelegate +
Default Value
BPMN 2.0 Elements + Service Task, + Business Rule Task, + Send Task, + Message Event Definition of Message Intermediate Throwing Event or Message End Event, + operaton:taskListener, + operaton:executionListner +
+ +## collection + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies a collection, where an instance will be created for each element, see Multiple Instance for more information. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + The name of a java.util.Collection process variable as java.lang.String or an Expression which evaluates to the name of a collection +
Default Value
BPMN 2.0 Elements + Multi Instance Loop Characteristics of Task, + Embedded Subprocess, + Call Activity, + Transaction Subprocess +
+ +## decisionRef + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute references a decision definition to evalute by its key. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + A String or an expression which evalutes to the key of a decision definition which should be evaluated by this task, e.g., myDecisionDefinitionKey or ```${decisionKey``` +
Default Value
BPMN 2.0 Elements + Business Rule Task +
+ +## decisionRefBinding + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which decision definition version the task evaluates. + If the value is version, the attribute operaton:decisionRefVersion + is required. + If the value is versionTag, the attribute operaton:decisionRefVersionTag + is required. +
Typejava.lang.String
Possible Values + latest, deployment, version, versionTag +
Default Valuelatest
BPMN 2.0 Elements + Business Rule Task +
+ +## decisionRefVersion + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which decision definition version the task evaluates if the operaton:decisionRefBinding + is set to version. +
Typejava.lang.Integer or org.operaton.bpm.engine.delegate.Expression
Possible Values + A concrete version of all deployed version numbers of the decision to call as java.lang.Integer or an expression which evaluates to a java.lang.Integer e.g., ```${versionToCall``` +
Default Value
BPMN 2.0 Elements + Business Rule Task +
+ +## decisionRefVersionTag + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which decision definition version tag the task evaluates if the operaton:decisionRefBinding + is set to versionTag. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + A concrete version tag of all deployed version tags of the decision to call as java.lang.String or an expression which evaluates to a java.lang.String e.g., ```${versionTagToCall``` +
Default Value
BPMN 2.0 Elements + Business Rule Task +
+ +## decisionRefTenantId + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the tenant id of the decision definition which is to be resolved by a business rule task, see DecisionRef Tenant Id for more information. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + A concrete tenant id or an expression which evaluates to a java.lang.String e.g., ```${execution.tenantId``` +
Default Value
BPMN 2.0 Elements + Business Rule Task +
+ +## delegateExpression + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute allows specification of an expression which must resolve to an object that implements the corresponding interface (see delegation code). +
Typeorg.operaton.bpm.engine.delegate.Expression
Possible Values + Expression which evaluates to a Java class implementing a delegation interface, e.g., ```${myJavaDelegate``` or ```#{myTaskListener``` +
Default Value
BPMN 2.0 Elements + Service Task, + Business Rule Task, + Send Task, + Message Event Definition of Message Intermediate Throwing Event or Message End Event, + operaton:taskListener, + operaton:executionListner +
+ +## dueDate + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the initial due date of a User Task when it is created. +
Typeorg.operaton.bpm.engine.delegate.Expression
Possible Values + An expression which evaluates to a java.util.Date, java.util.String (ISO 8601 formatted) or null, e.g., ```${dateVariable``` +
Default Value
BPMN 2.0 Elements + User Task +
+ +## elementVariable + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the process variable which will be set on each created instance, containing an element of the specified collection see + Multiple Instance for more information. +
Typejava.lang.String
Possible Values + The name of a process variable as java.lang.String +
Default Value
BPMN 2.0 Elements + Multi Instance Loop Characteristics of Task, + Embedded Subprocess, + Call Activity, + Transaction Subprocess +
+ +## errorMessage + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies a message to give further information about the error. When an error start event or boudary event catches the error the message will be saved as process variable if `errorMessageVariable` is configured. See Error Events for more information. +
Typejava.lang.String
Possible Values + The error message asjava.lang.String +
Default Value
BPMN 2.0 Elements + Error +
+ +## errorCodeVariable + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies a process variable that holds the error code and the errorCodevariable will be set if an error has been received by the error start or boundary event, see Error Events for more information. +
Typejava.lang.String
Possible Values + The name of a process variable as java.lang.String +
Default Value
BPMN 2.0 Elements + Error Events +
+ +## errorMessageVariable + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies a process variable that holds the error message and the errorMessageVariable will be set if an error has been received by the error start or boundary event, see Error Events for more information. +
Typejava.lang.String
Possible Values + The name of a process variable as java.lang.String +
Default Value
BPMN 2.0 Elements + Error Events +
+ +## escalationCodeVariable + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies a process variable which will be set if an escalation has been received by an escalation start or boundary event, see Escalation Events for more information. +
Typejava.lang.String
Possible Values + The name of a process variable as java.lang.String +
Default Value
BPMN 2.0 Elements + Escalation Events +
+ +## exclusive + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies that jobs should be executed exclusively. See Exclusive Jobs for more information. +
Typejava.lang.Boolean
Possible Values + true, false +
Default Valuetrue
BPMN 2.0 Elements + Start Events, + End Events, + Intermediate Throw Events, + Intermediate Catch Events, + + Task, + Service Task, + Send Task, + User Task, + Business Rule Task, + Script Task, + Receive Task, + Manual Task, + + Embedded Subprocess, + Call Activity, + Transaction Subprocess, + + Parallel Gateway, + Event Based Gateway, + Inclusive Gateway, + Exclusive Gateway, + + Multi Instance Loop Characteristics, + + Boundary Event, + Message Boundary Event, + Error Boundary Event, + Timer Boundary Event, + Escalation Boundary Event, + Conditional Boundary Event, + Signal Boundary Event, + Cancel Boundary Event +
+ +## expression + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute defines an expression which will be evaluated at runtime. +
Typeorg.operaton.bpm.engine.delegate.Expression
Possible Values + Expression, e.g., ```${gender == 'male' ? 'Mr.' : 'Mrs.'``` or ```#{printer.printMessage()}``` +
Default Value
BPMN 2.0 Elements + Service Task, + Business Rule Task, + Send Task, + Message Event Definition of Message Intermediate Throwing Event or Message End Event, + operaton:taskListener, + operaton:executionListner +
+ +## followUpDate + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the initial follow-up date of a User Task when it is created. +
Typeorg.operaton.bpm.engine.delegate.Expression
Possible Values + An expression which evaluates to a java.util.Date, java.util.String (ISO 8601 formatted) or null, e.g., ```${dateVariable``` +
Default Value
BPMN 2.0 Elements + User Task +
+ +## formHandlerClass + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the class that will be called during the parsing of the form information of a Start Event or User Task. +
Typejava.lang.String
Possible Values + Fully qualified Java class name of a class which implements the org.operaton.bpm.engine.impl.form.handler.StartFormHandler + or org.operaton.bpm.engine.impl.form.handler.TaskFormHandler interface, e.g., org.operaton.bpm.MyUserTaskFormHandler +
Default Value
BPMN 2.0 Elements + Initial Start Event of a Process, + User Task +
+ +## formKey + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies a form resource. See task forms for more information. +
Typejava.lang.String
Possible Values + A java.lang.String of a form resource which can be evaluated by the Tasklist +
Default Value
BPMN 2.0 Elements + Initial Start Event of a Process, + User Task +
+ +## formRef + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute references a Operaton form definition by its key. See task forms for more information. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + A java.lang.String or a org.operaton.bpm.engine.delegate.Expression which Tasklist can evaluate to display the referenced Operaton Form, e.g., myOperatonFormDefinitionKey or ```${formKey}```. +
Default Value
BPMN 2.0 Elements + Initial Start Event of a Process, + User Task +
+ +## formRefBinding + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which Operaton form definition version the activity references. If the value is version, the attribute operaton:formRefVersion is required. +
Typejava.lang.String
Possible Values + latest, deployment, version +
Default Valuelatest
BPMN 2.0 Elements + Initial Start Event of a Process, + User Task +
+ +## formRefVersion + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which Operaton form definition version the activity references if the operaton:formRefBinding + is set to version. +
Typejava.lang.Integer or org.operaton.bpm.engine.delegate.Expression
Possible Values + A concrete version of all deployed version numbers of the Operaton form definition as java.lang.Integer or an expression which evaluates to a java.lang.Integer e.g., ```${versionToReference``` +
Default Value
BPMN 2.0 Elements + Initial Start Event of a Process, + User Task +
+ +## historyTimeToLive + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the history time to live (in days) for the process definition. It is used within History cleanup. +
Typejava.lang.Integer or java.lang.String
Possible Values + Any non-negative integer number or string containing a time in days defined by the ISO-8601 date format. +
Default Valuenull - means that process definition history won't ever be removed during history cleanup run
BPMN 2.0 Elements + Process +
+ +## initiator + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies a process variable in which the user id of the process initiator is set. +
Typejava.lang.String
Possible Values + A process variable name to save the process initiator +
Default Value
BPMN 2.0 Elements + Start Event of a Process +
+ +## isStartableInTasklist + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies whether the process is startable in Tasklist or not. +
Typejava.lang.Boolean
Possible Valuestrue, false
Default Valuetrue
BPMN 2.0 ElementsProcess
+ +## jobPriority + + + + + + + + + + + + + + + + + + + + + + +
Description + Specifies the priority a job receives that is created in the context of executing the given process element (e.g., a timer event, or in the case of asyncBefore and asyncAfter). See the user guide on Job Prioritization for details. +
TypeA number in the range of a Java long value or org.operaton.bpm.engine.delegate.Expression
Possible Values + An expression must resolve to a valid Java long value. +
Default Valuenone
BPMN 2.0 Elements + Start Events, + End Events, + Intermediate Throw Events, + Intermediate Catch Events, + + Task, + Service Task, + Send Task, + User Task, + Business Rule Task, + Script Task, + Receive Task, + Manual Task, + + Embedded Subprocess, + Call Activity, + Transaction Subprocess, + + Parallel Gateway, + Inclusive Gateway, + Exclusive Gateway, + + Multi Instance Loop Characteristics, + + Process +
+ +## mapDecisionResult + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute references which built-in Decision Result Mapper is used to pass the result of an evaluated decision to a process variable. It should be used in combination with operaton:resultVariable. +
Typejava.lang.String
Possible Values + singleEntry, singleResult, collectEntries, resultList +
Default ValueresultList
BPMN 2.0 Elements + Business Rule Task +
+ +## priority + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the initial priority of a User Task when it is created. +
Typeorg.operaton.bpm.engine.delegate.Expression
Possible Values + An expression which evaluates to a java.lang.Number or a java.lang.String which represents a number or null, e.g., ```${dateVariable``` +
Default Value
BPMN 2.0 Elements + User Task +
+ +## taskPriority + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the initial priority of an External Task when it is created. +
TypeA number in the range of a Java long value or org.operaton.bpm.engine.delegate.Expression
Possible Values + An expression must resolve to a valid Java long value. +
Default Value0
BPMN 2.0 Elements + Service Task, + Message End Event, + Message Intermediate Throwing Event, + Business Rule Task, + Send Task, + Process +
+ +## resource + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies an external resource. The resource can be part of the deployment or + exists in the classpath. To specify the type of resource, a URL scheme like prefix + deployment:// resp. classpath:// can be supplied. If the scheme is + omitted, it is assumed that the resource exists in the classpath. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + The path to a resource or an expression which returns the path. Optional the path can + start with an URL like scheme classpath:// or deployment:// to + specify where to find the resource. If omitted the resource is assumed to exists in the + classpath. +
Default Value
BPMN 2.0 Elements + Script Task +
+ + +## resultVariable + + + + + + + + + + + + + + + + + + + + + + +
Description +

+ The attribute specifies the process variable to save the return value of a operaton:expression. +

+

Note that when you use operaton:resultVariable in a multi-instance construct, for example in a multi-instance subprocess, the result variable is overwritten every time the task completes, unless the variable is a local variable in the scope of the multi-instance construct. This can lead to seemingly random behavior.

+

+ This is a known issue. As a workaround, a local variable can be declared by adding an execution listener to the subprocess' start event that initializes the variable as null. +

+
Typejava.lang.String
Possible Values + The name of a process variable to save the return value +
Default Value
BPMN 2.0 Elements + Service Task, + Business Rule Task, + Script Task, + Send Task, + Message Event Definition of Message Intermediate Throwing Event or Message End Event, +
+ +## versionTag + + + + + + + + + + + + + + + + + + + + + + +
Description +

+ The attribute specifies a version tag for the process definition. +

+
Typejava.lang.String
Possible Values + Any value that has a meaning as version tag for the process definition. + Note: Sorting by versionTag is string based. The version will not be interpreted. As an example, the sorting could return v0.1.0, v0.10.0, v0.2.0. +
Default Value
BPMN 2.0 Elements + Process +
+ +## topic + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the topic of an external task instance. The task is going to be offered to workers polling for that topic. It is only relevant when operaton:type is set to external. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + Any value that has a meaning as a topic identifier as java.lang.String or an expression which evaluates to a java.lang.String, e.g. ```${topicName``` +
Default Value
BPMN 2.0 Elements + Service Task, + Message End Event, + Message Intermediate Throwing Event, + Business Rule Task, + Send Task +
+ + +## type + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which built-in task implementation to use. Currently an email, a shell service, and an external task exists. +
Typejava.lang.String
Possible Values + external, mail, shell +
Default Value
BPMN 2.0 Elements + Service Task, + Message End Event, + Message Intermediate Throwing Event, + Business Rule Task, + Send Task +
+ +## variableMappingClass + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which Java class will be executed at runtime to map the input and output variables for a call activity. + The stated class must implement the Delegate Variable Mapping interface. +
Typejava.lang.String
Possible Values + Fully qualified Java class name of a class which implements the Delegate Variable Mapping interface, e.g., org.operaton.bpm.MyVariableMappingDelegate +
Default Value
BPMN 2.0 Elements + Call Activity +
+ + +## variableMappingDelegateExpression + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute allows specification of an expression which must resolve to an object that implements the corresponding interface Delegate Variable Mapping. +
Typeorg.operaton.bpm.engine.delegate.Expression
Possible Values + Expression which evaluates to a Java class that implements the Delegate Variable Mapping interface, e.g., ```${myVariableMapping```. +
Default Value
BPMN 2.0 Elements + Call Activity +
+ +## variableName + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute allows to specify a variable name on which a condition of a conditional event should be evaluated exclusively. +
Typejava.lang.String
Possible Values + The name of a process variable on which a condition should be evaluated after a change happens. +
Default Value
BPMN 2.0 Elements + Conditional Event +
+ +## variableEvents + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute allows to specify a comma separated list of variable change events. + These events specify the variable change events on which a condition of a conditional event should be evaluated exclusively. +
Typejava.lang.String
Possible Values + A comma separated list of variable change events. Variable change events are: create, update and delete. +
Default Value
BPMN 2.0 Elements + Conditional Event +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/custom-extensions/extension-elements.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/custom-extensions/extension-elements.md new file mode 100644 index 0000000..1b07a7e --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/custom-extensions/extension-elements.md @@ -0,0 +1,1457 @@ +--- + +title: 'Extension Elements' +sidebar_position: 10 + +--- + +The following attributes are extension attributes for the `camunda` namespace `http://operaton.org/schema/1.0/bpmn`. + + +## connector + + + + + + + + + + + + + + + + + + + + + + +
Description + The configuration of a Operaton connector. +
Attributes
Constraints + The + operaton:connectorId child element is required and must identify a connector implementation + known to the process engine +
Parent elements + Service Task, + Business Rule Task, + Send Task, + Message Event Definition of + Message Intermediate Throwing Event or + Message End Event, +
Child elements + operaton:inputOutput, + operaton:connectorId +
+ + +## connectorId + + + + + + + + + + + + + + + + + + + + + + +
Description + The unique identifier of the connector type to instantiate. +
Attributes
Constraints + The connector type has to be known to the process engine +
Parent elements + operaton:connector +
Child elements
+ + +## constraint + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Metadata of an individual validation constraint for a form field (see Form Field Validation). +
Attributesname + The name of the form field constraint type +
config + The configuration of the form field constraint type +
Constraints + The name attribute must be one of the known validators (required, minlength, + maxlength, min, max, readonly or validator) +
Parent elements + operaton:validation +
Child elements + – +
+ + +## entry + + + + + + + + + + + + + + + + + + + + + + + +
Description + A single entry of a map structure. The value can be a constant, expression, script, list or + another map. +
Attributeskey + The key of the entry in the map. Can be a string or an expression. +
Constraints + The key attribute is required +
Parent elements + operaton:map +
Child elements + operaton:list, + operaton:map, + operaton:script +
+ +## errorEventDefinition + + + + + + + + + + + + + + + + + + + + + + + +
Description + Definition of an error event that can be triggered by an expression. + This element extends the + errorEventDefinition + element from the bpmn namespace inheriting all of its attributes: id, errorRef +
Attributesexpression + An expression that will trigger the error if it evaluates to true. +
Constraints + The errorRef attribute is required +
Parent elements + Service Task of type external +
Child elements + – +
+ +## executionListener + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Add an execution listener to an event. +
Attributesevent + The type of the event for which the listener is called +
class + see operaton:class +
expression + see operaton:expression +
delegateExpression + see operaton:delegateExpression +
Constraints + The event attribute is required (except for transitions) and must be one of the task events: start or end +
+ One of the attributes class, expression or delegateExpression is mandatory +
Parent elements + Process, + Task, + Service Task, + Send Task, + User Task, + Business Rule Task, + Script Task, + Receive Task, + Manual Task, + Exclusive Gateway, + Sequence Flow, + Parallel Gateway, + Inclusive Gateway, + Event Based Gateway, + Start Event, + Intermediate Catch Event, + Intermediate Throw Event, + End Events, + Boundary Events, + Embedded Subprocess, + Call Activity, + Event Subprocess, + Transaction Subprocess +
Child elements + operaton:field, + operaton:script +
+ +## expression + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Defines an expression to inject in delegated classes (see Field Injection). +
Attributes + – +
Text Content + The expression to inject +
Constraints + – +
Parent elements + operaton:field +
Child elements + – +
+ +## failedJobRetryTimeCycle + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Defines the custom retry schedule for a failed job (see Failed Jobs). +
Attributes + – +
Text Content + The retry time cycle value or expression +
Constraints + The configuration follows the ISO 8601 standard for repeating time intervals +
Parent elements + Task, + Service Task, + Send Task, + User Task, + Business Rule Task, + Script Task, + Receive Task, + Timer Start Event, + Timer Intermediate Catching Event, + Timer Boundary Event, + Intermediate Signal Throw Event, + Embedded Subprocess, + Call Activity, + Transaction Subprocess, + Multi Instance Loop Characteristics +
Child elements + – +
+ +## field + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Defines the value to inject in delegated classes (see Field Injection). +
Attributesname + The name of the field +
expressionThe value of the field as expression
stringValueThe value of the field as String
Constraints + Only one attribute of stringValue and expression or one of the child elements string and expression can be used +
Parent elements + Service Task, + Business Rule Task, + Send Task, + Message Event Definition of Message Intermediate Throwing Event or Message End Event, + operaton:taskListener, + operaton:executionListner +
Child elements + operaton:expression, + operaton:string +
+ +## formData + + + + + + + + + + + + + + + + + + + + + + +
Description + Metadata to define fields of a form, which are used to generate task forms (see Generated Task Forms). +
Attributes + – +
Constraints + – +
Parent elements + Start Event, + User Task +
Child elements + operaton:formField +
+ +## formField + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Metadata to define a single form field (see Generated Task Forms). +
Attributesid + The id of the form field, corresponding to the name of a process variable +
label + The label to be displayed next to the form field +
type + The type of the form field +
datePattern + The pattern of a date type form field +
defaultValue + The value to be used as a default (pre-selection) for the field +
Constraints + The attribute id may not be empty +
+ The attribute type can be one of the known form field types (string, long, boolean, date or enum) or a custom one +
+ The attribute datePattern can only be used if the type attribute is set to date +
+ The child element operaton:properties is only allowed once +
+ The child element operaton:validation is only allowed once +
+ The child elements operaton:values can only be used if the type attribute is set to enum +
Parent elements + operaton:formData +
Child elements + operaton:properties, + operaton:validation, + operaton:value +
+ +## formProperty + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Metadata to define a form field (Deprecated, use operaton:formData). +
Attributesid + The key used to submit the property through the API +
name + The display label of the property +
type + The type of the property +
required + True if the form field is required (default: false) +
readable + True if the form field is readable and will be displayed (default: true) +
writeable + True if the form field is writeable (default: true) +
variable + Specifies the process variable on which the variable is mapped +
expression + Specifies an expression that maps the property, e.g., ```${street.address}``` +
datePattern + The pattern of a date type form field +
default + The default value or expression of the property +
Constraints + The id attribute is required +
+ The attribute type can be one of the known types (string, long, boolean, date or enum) or a custom one +
+ The attribute datePattern can only be used if the type attribute is set to date +
+ The child elements operaton:values can only be used if the type attribute is set to enum +
Parent elements + Start Event, + User Task +
Child elements + operaton:value +
+ +## in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + The element specifies variables which should be passed to the subprocess, see passing variables for more information. +
Attributessource + A name of a process variable to be passed in +
sourceExpression + An expression to be evaluated and passed in +
variables + Can be set to all to pass all process variables in +
target + Name of the process variable inside the subprocess instance +
local + Can be set to true to only pass local variables of the execution that executes the call activity. +
businessKey + Set the business key of the subprocess process instance +
Constraints + Only one of the attributes source, sourceExpression, variables or businessKey can be used +
+ The attribute target is required if the source or sourceExpression attribute is used +
Parent elements + Call Activity, + Signal Events (in Intermediate and End Throwing Events) +
Child elements + – +
+ + +## inputParameter + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + An single input mapping for the activity. If the element has no child element, the text + content of this element is mapped into the activity. The text content can be a constant + string value or an expression. If no child element or text content exists, the variable + inside the activity is set to the special value null. +
Attributesname + The name of the variable inside the activity. +
Constraints + The name attribute is required. +
+ The element can have one child element, a constant string or an expression as text content. +
Parent elements + operaton:inputOutput +
Child elements + operaton:list, + operaton:map, + operaton:script +
+ + +## inputOutput + + + + + + + + + + + + + + + + + + + + + + +
Description + The element describes an input/output mapping for the activity. +
Attributes + – +
Constraints + – +
Parent elements + All Tasks, + All Events (except Start and Boundary Events), + Call Activity, + Embedded Subprocess, + Transaction Subprocess, + operaton:connector +
Child elements + operaton:inputParameter, + operaton:outputParameter +
+ + +## list + + + + + + + + + + + + + + + + + + + + + + +
Description + A list structure. If the list contains multiple values, they should be added as + text content of child elements. Which child elements are used is arbitrary, e.g.,: +
+ <operaton:list>
+   <operaton:value>one</operaton:value>
+   <operaton:value>two</operaton:value>
+   <operaton:value>three</operaton:value>
+ </operaton:list> +

+ A + operaton:script element can also be used as a list element. The return value of the + script is added to the list. Furthermore, lists can contain nested lists and maps. +
Attributes + – +
Constraints + Multiple values have to be encapsulated in child elements. +
Parent elements + operaton:inputParameter, + operaton:outputParameter, + operaton:list, + operaton:entry +
Child elements + Any child element, + operaton:list, + operaton:map +
+ + +## map + + + + + + + + + + + + + + + + + + + + + + +
Description + A map structure. The entries can be constants, expressions, scripts, nested maps and lists. +
Attributes + – +
Constraints + – +
Parent elements + operaton:inputParameter, + operaton:outputParameter, + operaton:list, + operaton:entry +
Child elements + operaton:entry +
+ + + +## out + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + The element specifies variables which should be passed back from the subprocess, see passing variables for more information. +
Attributessource + A name of a process variable to be passed back +
sourceExpression + An expression to be evaluated and passed back +
variables + Can be set to all to pass all subprocess variables back +
target + Name of the process variable inside the subprocess instance +
local + Can be set to true to pass variables from the called case/process instance to local variables of the execution executing the call activity. +
Constraints + Only one of the attributes source, sourceExpression or variables can be used +
+ The attribute target is required if the source or sourceExpression attribute is used +
Parent elements + Call Activity +
Child elements + – +
+ + +## outputParameter + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + An single output mapping for the activity. If the element has no child element, the text + content of this element is mapped out of the activity. The text content can be a constant + string value or an expression. If no child element or text content exists, the variable + outside of the activity is set to the special value null. +
Attributesname + The name of the variable outside of the activity. +
Constraints + The name attribute is required. +
+ The element can have one child element, a constant string or an expression as text content. +
Parent elements + operaton:inputOutput +
Child elements + operaton:list, + operaton:map, + operaton:script +
+ + +## potentialStarter + + + + + + + + + + + + + + + + + + + + + + +
Description + Defines which users or groups can start the process. +
Attributes + – +
Constraints + – +
Parent elements + Process +
Child elements + resourceAssignmentExpression +
+ +## properties + + + + + + + + + + + + + + + + + + + + + + +
Description + A key value list of properties which be can be interpreted freely. +
Attributes + – +
Constraints + – +
Parent elements + Base Element, + operaton:formField +
Child elements + operaton:property +
+ +## property + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + A key value pair which can be interpreted freely. +
Attributesid + The id of the form field property +
name + The name of the property +
value + The value of the property +
Constraints + If the property belongs to a operaton:formField extension element, only + the attributes id and value are used. +
+ If the parent operaton:properties element is directly added as an extension element, + for example by the Camunda Modeler, only the attributes name and value + are used. +
Parent elements + operaton:properties +
Child elements + – +
+ + +## script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + A script element. The script is executed and the return value is used as mapping value. +
AttributesscriptFormat + The format identifier, normally the language of the script source code +
resource + equivalent to + operaton:resource +
Constraints + The scriptFormat attribute is required +
+ If the resource attribute is used, no source code text content is allowed +
Parent elements + operaton:inputParameter, + operaton:outputParameter, + operaton:entry, + operaton:list, + operaton:executionListener, + operaton:taskListener +
Child elements + – +
+ + +## string + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Defines a String value to inject in delegated classes (see Field Injection). +
Attributes + – +
Text Content + The String value to inject +
Constraints + – +
Parent elements + operaton:field +
Child elements + – +
+ +## taskListener + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Adds a task listener to a task event. +
Attributesevent + The type of the event for which the listener is called +
class + see operaton:class +
expression + see operaton:expression +
delegateExpression + see operaton:delegateExpression +
id + The id of the task listener in the parent scope, only required when event is set to timeout +
Constraints + The event attribute is required and must be one of the task events: + create, assignment, update, + complete, delete or timeout +
+ One of the attributes class, expression or delegateExpression is mandatory +
+ If the attribute event is set to timeout, the attribute id and exactly one child element of type timerEventDefinition are mandatory +
Parent elements + User Task +
Child elements + operaton:field, + operaton:script, + timerEventDefinition +
+ +## validation + + + + + + + + + + + + + + + + + + + + + + +
Description + Metadata to define a list of validation constraints for form fields (see Form Field Validation). +
Attributes + – +
Constraints + – +
Parent elements + operaton:formField +
Child elements + operaton:constraint +
+ +## value + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Possible values of a form field with the type enum. +
Attributesid + The id of the value +
name + The name of the value +
Constraints + – +
Parent elements + operaton:formField, + operaton:formProperty +
Child elements + – +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/custom-extensions/index.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/custom-extensions/index.md new file mode 100644 index 0000000..3b6b928 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/custom-extensions/index.md @@ -0,0 +1,14 @@ +--- + +title: Extension Reference +sidebar_position: 50 + +--- + +# Extension Reference + +Camunda extends BPMN with custom Extension Elements and Attributes. + +* [Extension Elements](./extension-elements.md) Reference of Camunda Extension Attributes for BPMN. + +* [Extension Attributes](./extension-attributes.md) Reference of Camunda Extension Attributes for BPMN. \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn new file mode 100644 index 0000000..9f82d9a --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn @@ -0,0 +1,253 @@ + + + + + + + + + + + SequenceFlow_0ds7vly + SequenceFlow_0bzgh6j + + + SequenceFlow_3 + SequenceFlow_4 + + + SequenceFlow_3 + + + + + SequenceFlow_4 + + + + + + + + SequenceFlow_1dacouk + SequenceFlow_0zqri0n + + + + SequenceFlow_1dacouk + + + + SequenceFlow_1e4ur95 + + + + SequenceFlow_0zqri0n + SequenceFlow_1e4ur95 + SequenceFlow_060gf6i + + + + SequenceFlow_060gf6i + + + Initially catches the error thrown in the Subprocess + + Re-throws the same error + + + + SequenceFlow_0bzgh6j + + + + + SequenceFlow_0ds7vly + + + SequenceFlow_1pi8df1 + + + + SequenceFlow_1pi8df1 + SequenceFlow_1y94pbv + + + SequenceFlow_1y94pbv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn new file mode 100644 index 0000000..79f1020 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn @@ -0,0 +1,322 @@ + + + + + SequenceFlow_0yjktag + SequenceFlow_14769qn + + SequenceFlow_3 + SequenceFlow_5 + + + + SequenceFlow_4 + SequenceFlow_6 + + + + + + SequenceFlow_2 + SequenceFlow_3 + SequenceFlow_4 + + + + + SequenceFlow_2 + + + + SequenceFlow_6 + SequenceFlow_5 + SequenceFlow_16 + + + + SequenceFlow_16 + + + + + + + + + + SequenceFlow_14 + SequenceFlow_9 + + + + + SequenceFlow_9 + SequenceFlow_10 + + + + SequenceFlow_10 + + + SequenceFlow_12 + + + + SequenceFlow_12 + SequenceFlow_14 + + + + + + + + SequenceFlow_14769qn + notValid + SequenceFlow_0bulvjz + + + ${valid == false} + + + notValid + + + + SequenceFlow_0bulvjz + + + + SequenceFlow_0yjktag + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn new file mode 100644 index 0000000..57dbee8 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn @@ -0,0 +1,317 @@ + + + + + + + + + + SequenceFlow_1 + + + + + + + SequenceFlow_2 + SequenceFlow_3 + + + + + + SequenceFlow_6 + + + + + + + + + + + + + + + + SequenceFlow_6 + SequenceFlow_7 + + + + + + + + + + + + + + + + SequenceFlow_7 + SequenceFlow_8 + + + + + + + SequenceFlow_8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SequenceFlow_3 + + + + + + + + + + + + + + + + SequenceFlow_4 + SequenceFlow_5 + + + + + + + SequenceFlow_5 + + + sid-5F53AFCC-070F-4F48-868C-BFBDAC09A7F9 + + + + + + + + SequenceFlow_1 + SequenceFlow_4 + SequenceFlow_2 + + + + + + + sid-5F53AFCC-070F-4F48-868C-BFBDAC09A7F9 + sid-A913B040-9ADF-48C2-B7F0-01859ED3A63B + + + + + + + + sid-A913B040-9ADF-48C2-B7F0-01859ED3A63B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This will not be propagated to the inner sub process if it is not finished yet! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn new file mode 100644 index 0000000..9bdbc9b --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn @@ -0,0 +1,220 @@ + + + + + SequenceFlow_0x5whto + + + + SequenceFlow_0x5whto + SequenceFlow_164h48q + SequenceFlow_0k411nd + + + + SequenceFlow_164h48q + SequenceFlow_03x0iby + + SequenceFlow_04vomil + + + + SequenceFlow_0tx46y1 + + + + SequenceFlow_09y6jte + + ${false} + + + + SequenceFlow_09y6jte + + + + SequenceFlow_04vomil + SequenceFlow_0tx46y1 + + + + + + + SequenceFlow_185j37q + + ${false} + + + + SequenceFlow_185j37q + + + + SequenceFlow_0lhrruj + + + + SequenceFlow_03x0iby + SequenceFlow_1cvvc2d + SequenceFlow_0lhrruj + + + SequenceFlow_0k411nd + SequenceFlow_1cvvc2d + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn new file mode 100644 index 0000000..061e2b0 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn @@ -0,0 +1,147 @@ + + + + + SequenceFlow_1i70l90 + + + SequenceFlow_1i70l90 + SequenceFlow_1bdsgau + + SequenceFlow_1m9pbb3 + + + SequenceFlow_0lsdsmk + SequenceFlow_18mg3kk + + + SequenceFlow_0lsdsmk + + + SequenceFlow_18mg3kk + + + SequenceFlow_1m9pbb3 + + + + + + + + SequenceFlow_1tb7gt4 + + + SequenceFlow_1bdsgau + + + SequenceFlow_1tb7gt4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-boundary-event.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-boundary-event.bpmn new file mode 100644 index 0000000..06ed74e --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-boundary-event.bpmn @@ -0,0 +1,110 @@ + + + + + SequenceFlow_0hh13xs + + + + SequenceFlow_0hh13xs + SequenceFlow_04k15e1 + + + SequenceFlow_0qxmil4 + + + + SequenceFlow_0qxmil4 + SequenceFlow_0r1f04h + + + + SequenceFlow_0r1f04h + + + + SequenceFlow_04k15e1 + SequenceFlow_1cqj42o + + + + SequenceFlow_1cqj42o + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-end-event.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-end-event.bpmn new file mode 100644 index 0000000..10ee59c --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-end-event.bpmn @@ -0,0 +1,113 @@ + + + + + SequenceFlow_1pin3ow + + + SequenceFlow_1pin3ow + SequenceFlow_14bins6 + + + + + SequenceFlow_14bins6 + SequenceFlow_0des752 + SequenceFlow_00n34rm + + + SequenceFlow_0des752 + SequenceFlow_0wi1ago + + + + SequenceFlow_0wi1ago + + + + + SequenceFlow_00n34rm + + + shippable in more than 2 days + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-example.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-example.bpmn new file mode 100644 index 0000000..13f92a5 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-example.bpmn @@ -0,0 +1,276 @@ + + + + + SequenceFlow_03oy9aa + + + SequenceFlow_03oy9aa + SequenceFlow_0efmoz5 + + SequenceFlow_1iqgy2u + + + SequenceFlow_1iqgy2u + SequenceFlow_1s1wm16 + + + + SequenceFlow_1s1wm16 + SequenceFlow_0lhc7hf + SequenceFlow_0aa43g3 + SequenceFlow_0meidkj + + + + SequenceFlow_16gjyqm + SequenceFlow_0meidkj + SequenceFlow_10ee1ef + + + SequenceFlow_10ee1ef + + + + + SequenceFlow_0lhc7hf + SequenceFlow_16gjyqm + + + + + + SequenceFlow_0aa43g3 + + + + + + + SequenceFlow_1ql37m8 + + + + SequenceFlow_1ql37m8 + SequenceFlow_1lqceeh + + + + SequenceFlow_1lqceeh + + + + SequenceFlow_0pca7dl + + + + SequenceFlow_0pca7dl + SequenceFlow_110gw28 + + + + SequenceFlow_110gw28 + + + + SequenceFlow_0efmoz5 + SequenceFlow_161oug6 + + + + SequenceFlow_161oug6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-intermediate-throw-event.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-intermediate-throw-event.bpmn new file mode 100644 index 0000000..f0b0cb1 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-intermediate-throw-event.bpmn @@ -0,0 +1,84 @@ + + + + + SequenceFlow_1ye4dnb + + + SequenceFlow_1ye4dnb + SequenceFlow_1n8fu6n + + + + + + SequenceFlow_0d6ploq + + + + SequenceFlow_1o4xcey + SequenceFlow_0d6ploq + + + SequenceFlow_1n8fu6n + SequenceFlow_1o4xcey + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-start-event.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-start-event.bpmn new file mode 100644 index 0000000..c001762 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/escalation-start-event.bpmn @@ -0,0 +1,174 @@ + + + + + SequenceFlow_1i8kinq + + + SequenceFlow_1i8kinq + SequenceFlow_16ggp30 + + SequenceFlow_1vo2lzi + + + + + SequenceFlow_1sg42uy + + + + SequenceFlow_1sg42uy + SequenceFlow_02lxhga + + + + SequenceFlow_02lxhga + + + + + SequenceFlow_1vo2lzi + SequenceFlow_1j6xekn + + + SequenceFlow_1j6xekn + SequenceFlow_10f8i0k + + + + SequenceFlow_10f8i0k + + + + + + + SequenceFlow_16ggp30 + + + has access to variables inside the subprocess + + + can throw an escalation event + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-conditional-parallel-boundary.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-conditional-parallel-boundary.bpmn new file mode 100644 index 0000000..482c650 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-conditional-parallel-boundary.bpmn @@ -0,0 +1,179 @@ + + + + + SequenceFlow_1err0jl + + + + SequenceFlow_1err0jl + SequenceFlow_1lbj9ki + SequenceFlow_1ghhup4 + + + + SequenceFlow_1lbj9ki + SequenceFlow_12f3sxu + + + + SequenceFlow_12f3sxu + SequenceFlow_0f8recs + SequenceFlow_0hcfyuw + + + + + SequenceFlow_1ghhup4 + SequenceFlow_0f8recs + + + SequenceFlow_0hcfyuw + + + + SequenceFlow_1122lwu + + + + SequenceFlow_0txp3sa + + + + SequenceFlow_1122lwu + + ${variable == 1} + + + + SequenceFlow_0txp3sa + + ${variable == 1} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-conditional.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-conditional.bpmn new file mode 100644 index 0000000..6e64c46 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-conditional.bpmn @@ -0,0 +1,216 @@ + + + + + + SequenceFlow_1wjobn4 + + + + SequenceFlow_1wjobn4 + SequenceFlow_07dyy79 + SequenceFlow_1eysc19 + + + + SequenceFlow_1eysc19 + SequenceFlow_0s9f3bj + + + + + + SequenceFlow_0omn00q + + + + + SequenceFlow_0omn00q + SequenceFlow_0addlx1 + + + + SequenceFlow_0addlx1 + + + + + SequenceFlow_0wx3o0p + + + + SequenceFlow_1hhcy1w + SequenceFlow_0wx3o0p + SequenceFlow_18m9b49 + + + + SequenceFlow_18m9b49 + + + + SequenceFlow_0uwt3om + SequenceFlow_1hhcy1w + + + SequenceFlow_07dyy79 + + + + + SequenceFlow_0s9f3bj + SequenceFlow_0uwt3om + + Waits until the assigned processor is available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-conditional2.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-conditional2.bpmn new file mode 100644 index 0000000..2862c18 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-conditional2.bpmn @@ -0,0 +1,97 @@ + + + + + + SequenceFlow_1wjobn4 + SequenceFlow_1d05h28 + + + + SequenceFlow_0omn00q + + + + + SequenceFlow_0omn00q + SequenceFlow_0addlx1 + + + + SequenceFlow_0addlx1 + + + + SequenceFlow_1wjobn4 + + + SequenceFlow_1d05h28 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-error.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-error.bpmn new file mode 100644 index 0000000..4a54776 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-error.bpmn @@ -0,0 +1,89 @@ + + + + + SequenceFlow_4 + + + SequenceFlow_3 + + + + SequenceFlow_1 + SequenceFlow_4 + + + + SequenceFlow_1 + + + + SequenceFlow_2 + + + + + SequenceFlow_2 + SequenceFlow_3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-link.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-link.bpmn new file mode 100644 index 0000000..8def1c8 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-link.bpmn @@ -0,0 +1,136 @@ + + + + + SequenceFlow_5 + + + + + SequenceFlow_6 + + + SequenceFlow_1 + SequenceFlow_2 + + + + SequenceFlow_3 + SequenceFlow_7 + + + + SequenceFlow_2 + + + + SequenceFlow_7 + + + + SequenceFlow_3 + + + + + SequenceFlow_1 + + + + SequenceFlow_5 + SequenceFlow_6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-message-start-alternative.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-message-start-alternative.bpmn new file mode 100644 index 0000000..37c6958 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-message-start-alternative.bpmn @@ -0,0 +1,106 @@ + + + + + SequenceFlow_1 + + + + + SequenceFlow_2 + SequenceFlow_3 + + + + SequenceFlow_2 + + + + + SequenceFlow_1 + SequenceFlow_3 + SequenceFlow_5 + + + + SequenceFlow_6 + + + SequenceFlow_5 + SequenceFlow_6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-message-throwing.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-message-throwing.bpmn new file mode 100644 index 0000000..3315479 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-message-throwing.bpmn @@ -0,0 +1,173 @@ + + + + + + + + + + SequenceFlow_1 + + + + + + + + sid-0F456E5C-C088-4007-9356-C78AD01272AE + SequenceFlow_3 + + + + + + + + + + + + + + + + + + + SequenceFlow_3 + SequenceFlow_4 + + + + + + + SequenceFlow_4 + + + SequenceFlow_5 + + + + + + + + + + + + + + + + + + SequenceFlow_5 + SequenceFlow_6 + + + + + + + SequenceFlow_6 + + + + + + + SequenceFlow_1 + sid-0F456E5C-C088-4007-9356-C78AD01272AE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-message.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-message.bpmn new file mode 100644 index 0000000..34bb0a9 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-message.bpmn @@ -0,0 +1,116 @@ + + + + + SequenceFlow_1 + + + + + SequenceFlow_2 + SequenceFlow_3 + + + + SequenceFlow_3 + SequenceFlow_4 + + + + + SequenceFlow_5 + + + + SequenceFlow_5 + SequenceFlow_6 + + + + + SequenceFlow_6 + + + SequenceFlow_4 + + + SequenceFlow_1 + SequenceFlow_2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-none-intermediate.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-none-intermediate.bpmn new file mode 100644 index 0000000..9829a03 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-none-intermediate.bpmn @@ -0,0 +1,76 @@ + + + + + SequenceFlow_1 + + + SequenceFlow_1 + SequenceFlow_2 + + + + SequenceFlow_2 + SequenceFlow_3 + + + + SequenceFlow_3 + SequenceFlow_4 + + + + SequenceFlow_4 + + + + Visualize a milestone, often a hook to send events to for KPI monitoring. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-none.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-none.bpmn new file mode 100644 index 0000000..9935644 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-none.bpmn @@ -0,0 +1,44 @@ + + + + + SequenceFlow_2 + + + SequenceFlow_1 + + + + SequenceFlow_1 + SequenceFlow_2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-signal-catching.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-signal-catching.bpmn new file mode 100644 index 0000000..5e59c11 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-signal-catching.bpmn @@ -0,0 +1,107 @@ + + + + + SequenceFlow_1 + + + SequenceFlow_1 + SequenceFlow_6 + SequenceFlow_2 + + + + + SequenceFlow_3 + SequenceFlow_4 + + + SequenceFlow_4 + SequenceFlow_5 + + + + SequenceFlow_5 + + + + SequenceFlow_6 + + + + + SequenceFlow_2 + SequenceFlow_3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-signal-throwing.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-signal-throwing.bpmn new file mode 100644 index 0000000..2fac4f0 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-signal-throwing.bpmn @@ -0,0 +1,102 @@ + + + + + SequenceFlow_1 + + + + SequenceFlow_1 + SequenceFlow_2 + + + + SequenceFlow_2 + SequenceFlow_3 + SequenceFlow_5 + + + + + + SequenceFlow_4 + + + SequenceFlow_5 + + + + SequenceFlow_3 + SequenceFlow_4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative1.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative1.bpmn new file mode 100644 index 0000000..f3ec4e3 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative1.bpmn @@ -0,0 +1,252 @@ + + + + + SequenceFlow_1 + SequenceFlow_12 + + SequenceFlow_2 + + + SequenceFlow_2 + SequenceFlow_3 + SequenceFlow_4 + + + + + + SequenceFlow_3 + SequenceFlow_11 + + + SequenceFlow_4 + SequenceFlow_6 + + + SequenceFlow_6 + SequenceFlow_7 + SequenceFlow_8 + + + + SequenceFlow_7 + + + + SequenceFlow_8 + + + + + + SequenceFlow_10 + + + SequenceFlow_9 + SequenceFlow_10 + + + + SequenceFlow_9 + + + + + + + SequenceFlow_11 + + + + + SequenceFlow_1 + + + + SequenceFlow_12 + + + The error is completely handled by the subprocess. + + + + The task still has access to all variables of the failed subprocess + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative2.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative2.bpmn new file mode 100644 index 0000000..a92d56d --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative2.bpmn @@ -0,0 +1,248 @@ + + + + + SequenceFlow_1 + SequenceFlow_12 + + SequenceFlow_2 + + + SequenceFlow_2 + SequenceFlow_3 + SequenceFlow_4 + + + + + + SequenceFlow_3 + SequenceFlow_11 + + + SequenceFlow_4 + SequenceFlow_6 + + + SequenceFlow_6 + SequenceFlow_7 + SequenceFlow_8 + + + + SequenceFlow_7 + + + + SequenceFlow_8 + + + + + + SequenceFlow_11 + + + + + SequenceFlow_5 + + + + + SequenceFlow_1 + + + + SequenceFlow_5 + SequenceFlow_13 + + + + SequenceFlow_13 + + + SequenceFlow_12 + + + The error is handled by the parent process, the subprocess can be left using different sequence flows + + + + Variables of the subprocess are not available anymore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-terminate.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-terminate.bpmn new file mode 100644 index 0000000..0229a4f --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-terminate.bpmn @@ -0,0 +1,85 @@ + + + + + SequenceFlow_3 + + + + SequenceFlow_5 + + + + SequenceFlow_6 + SequenceFlow_7 + + + + SequenceFlow_7 + + + SequenceFlow_3 + SequenceFlow_5 + SequenceFlow_6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-timer.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-timer.bpmn new file mode 100644 index 0000000..c9583bf --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/bpmn/event-timer.bpmn @@ -0,0 +1,158 @@ + + + + + SequenceFlow_3 + + + + SequenceFlow_3 + SequenceFlow_1 + + + + SequenceFlow_2 + SequenceFlow_7 + + + SequenceFlow_1 + SequenceFlow_2 + + + + + + SequenceFlow_5 + + + + SequenceFlow_5 + SequenceFlow_6 + + + + SequenceFlow_6 + + + + + SequenceFlow_7 + SequenceFlow_8 + + + SequenceFlow_8 + + + + SequenceFlow_9 + + + + SequenceFlow_9 + + + + Note that this event has a dotted line and is non-interrupting + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/cancel-and-compensation-events.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/cancel-and-compensation-events.md new file mode 100644 index 0000000..f7b7c83 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/cancel-and-compensation-events.md @@ -0,0 +1,188 @@ +--- + +title: 'Cancel and Compensation Events' +sidebar_position: 70 + +menu: + main: + identifier: "bpmn-ref-events-cancel-and-compensation-events" + parent: "bpmn-ref-events" + description: "Events throwing / catching compensation and cancel transaction events." + +--- + +## Cancel Events + + +### Cancel End Event + +The cancel end event can only be used in combination with a [transaction subprocess](../subprocesses/transaction-subprocess.md). When the cancel end event is reached, a cancel event is thrown which must be caught by a cancel boundary event. The cancel boundary event then cancels the transaction and triggers compensation. + +### Cancel Boundary Event + +An attached intermediate catching cancel event on the boundary of a transaction subprocess, or, for short, a cancel boundary event, is triggered when a transaction is canceled. When the cancel boundary event is triggered, it first interrupts all active executions in the current scope. Next, it starts compensation of all active compensation boundary events in the scope of the transaction. Compensation is performed synchronously, i.e., the boundary event waits before compensation is completed before leaving the transaction. When compensation is completed, the transaction subprocess is left using the sequence flow(s) running out of the cancel boundary event. + +Note: Only a single cancel boundary event is allowed for a transaction subprocess. + +Note: If the transaction subprocess hosts nested subprocesses, compensation is only triggered for subprocesses that have completed successfully. + +Note: In case a cancel boundary event is placed on a transaction subprocess with multi instance characteristics, if one instance triggers cancellation, the boundary event cancels all instances. + +A cancel boundary event is defined as a typical boundary event: + +```xml + + + +``` + +Since the cancel boundary event is always interrupting, the cancelActivity attribute is not required. + + +## Compensation Events + +### Intermediate Throwing Compensation Event + +An intermediate throwing compensation event can be used to trigger compensation. + +Triggering compensation: Compensation can either be triggered for a designated activity or for the scope that hosts the compensation event. Compensation is performed through execution of the compensation handler associated with an activity. + +* When compensation is thrown for an activity, the associated compensation handler is executed the same amount of times the activity completed successfully. +* If compensation is thrown for the current scope, all activities within the current scope are compensated, which includes activities on concurrent branches. +* Compensation is triggered hierarchically: if an activity to be compensated is a subprocess, compensation is triggered for all activities contained within the subprocess. If the subprocess has nested activities, compensation is thrown recursively. However, compensation is not propagated to the "upper levels" of the process: if compensation is triggered within a subprocess, it is not propagated to activities outside of the subprocess scope. The BPMN specification states that compensation is triggered for activities at "the same level of subprocess". +* Compensation is consumed by compensation event subprocess: if an activity to be compensated is a subprocess and the subprocess contains an event subprocess triggered by a compensation start event, compensation triggers the event subprocess instead of trigger the activities contained within the subprocess. +* Compensation is performed in reverse order of execution. This means that whichever activity completed last is compensated first, etc. +* The intermediate throwing compensation event can be used to compensate transaction subprocesses which completed successfully. + +Note: If compensation is thrown within a scope which contains a subprocess and the subprocess contains activities with compensation handlers, compensation is only propagated to the subprocess if it has completed successfully when compensation is thrown. If some of the activities nested inside the subprocess have completed and have attached compensation handlers, the compensation handlers are not executed if the subprocess containing these activities is not completed yet. Consider the following example: + +
+ +In this process we have two concurrent executions, one executing the embedded subprocess and one executing the "charge credit card" activity. Lets assume both executions are started and the first concurrent execution is waiting for a user to complete the "review bookings" task. The second execution performs the "charge credit card" activity and an error is thrown, which causes the "cancel reservations" event to trigger compensation. At this point the parallel subprocess is not yet completed which means that the compensation event is not propagated to the subprocess and thus the "cancel hotel reservation" compensation handler is not executed. If the user task (and thus the embedded subprocess) completes before the "cancel reservations" is performed, compensation is propagated to the embedded subprocess. + +Note: When compensation is thrown for a multi instance activity, the associated compensation handler is only executed when all instances of this activity have ended. That means, the multi instance activity must be ended before it can be compensated. + +Process variables: When compensating an embedded subprocess, the execution used for executing the compensation handlers has access to the local process variables of the subprocess in the state they were in when the subprocess completed execution. To achieve this, a snapshot of the process variables associated with the scope execution (execution created for executing the subprocess) is taken. From this, a couple of implications follow: + +* The compensation handler does not have access to variables added to concurrent executions created inside the subprocess scope. +* Process variables associated with executions higher up in the hierarchy, e.g., process variables associated with the process instance execution, are not contained in the snapshot: the compensation handler has access to these process variables in the state they are in when compensation is thrown. +* A variable snapshot is only taken for embedded subprocesses, not for other activities. + +Current limitations: + +* `waitForCompletion="false"` is currently unsupported. When compensation is triggered using the intermediate throwing compensation event, the event is only left after compensation completed successfully. +* Compensation itself is currently performed by concurrent executions. The concurrent executions are started in reverse order to which the compensated activities completed. Future versions of Operaton Automation Platform 7 might include an option to perform compensation sequentially. +* Compensation is not propagated to sub process instances spawned by call activities. + +A compensation intermediate event is defined as an intermediate throwing event. The specific type sub-element in this case is a compensateEventDefinition element. + +```xml + + + +``` + +Additionally, the optional argument `activityRef` can be used to trigger compensation of a specific scope / activity: + +```xml + + + +``` + +### Compensation End Event + +A compensation end event triggers compensation and the current path of execution is ended. It has the same behavior and limitations as a compensation intermediate throwing event. + +```xml + + + +``` + +### Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:inputOutput +
Constraints
+ + +### Compensation Boundary Event + +An attached intermediate catching compensation on the boundary of an activity, or, for short, a compensation boundary event, can be used to attach a compensation handler to an activity or an embedded subprocess. + +The compensation boundary event must reference a single compensation handler using a directed association. + +A compensation boundary event has a different activation policy than other boundary events. Other boundary events, such as the signal boundary event are activated when the activity they are attached to is started. When the activity is left, they are deactivated and the corresponding event subscription is canceled. The compensation boundary event is different. The compensation boundary is activated when the activity it is attached to completes successfully. At this point, the corresponding subscription to compensation events is created. The subscription is removed either when a compensation event is triggered or when the corresponding process instance ends. This leads to the following points: + +* When compensation is triggered, the compensation handler associated with the compensation boundary event is invoked the same amount of times that the activity it is attached to completed successfully. +* If a compensation boundary event is attached to an activity with multiple instance characteristics, a compensation event subscription is created for each instance. +* If a compensation boundary event is attached to an activity which is contained inside a loop, a compensation event subscription is created for each time the activity is executed. +* If the process instance ends, the subscriptions to compensation events are canceled. + +A compensation boundary event is defined as a typical boundary event: + +```xml + + + + + + + +``` + +As the compensation boundary event is activated after the activity has completed successfully, the cancelActivity attribute is not supported. + +### Compensation Start Event + +A compensation start event can only be used to trigger an Event Sub-Process - it __cannot__ be used to start a process instance. This kind of event subprocess is called compensation event subprocess. + +When deploying a process definition with a compensation event subprocess, the following considerations apply: + +* The compensation event subprocess is only supported for embedded subprocess and not at process-level, caused by the current limitation that compensation is not propagated to sub process instances spawned by call activities. +* There can be only one compensation event subprocess at the same level of subprocess. +* A subprocess with a compensation event subprocess and an attached compensation boundary event is not supported. Note that the compensation event subprocess and the compensation boundary event have a similar intent, so only one of them should be chosen. + +A compensation event subprocess can be used as a compensation handler for the embedded subprocess. Similar to a compensation boundary event attached to a subprocess, a compensation event subprocess will only be invoked by a thrown compensation event, if the subprocess completed successfully before. In this case, the compensation event subprocess will be invoked the same amount of times that the subprocess was completed. + +Contrary to a compensation boundary event attached to a subprocess, a compensation event subprocess *consumes* a thrown compensation event. That means, activities contained in the subprocess are not compensated by default. Instead, the compensation event subprocess can recursively trigger compensation for activities contained in its parent. + +
+ +The above process contains an embedded subprocess with a compensation event subprocess, triggered by a compensation start event. Note that this compensation handler deviates from default compensation in that it triggers compensation activities in an specific order independent from the order of execution; it also contains an additional activity adding process logic that cannot be derived from the body of the subprocess itself. + +The XML representation of a compensation start event is the normal start event declaration with a compensateEventDefinition child-element: + +```xml + + + + + + +``` + + +### Additional Resources + +* [Transaction subprocess](../subprocesses/transaction-subprocess.md) +* [Compensation Events](http://operaton.org/bpmn/reference.html#events-compensation) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/conditional-events.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/conditional-events.md new file mode 100644 index 0000000..075d6ea --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/conditional-events.md @@ -0,0 +1,269 @@ +--- + +title: 'Conditional Events' +sidebar_position: 70 + +menu: + main: + identifier: "bpmn-ref-events-conditional-events" + parent: "bpmn-ref-events" + description: "Events catching conditional events." + +--- + +The conditional event defines an event which is triggered if a given condition is evaluated to true. +It can be used as start event of an event sub process, as intermediate event and boundary event. +The start and boundary event can be interrupting and non interrupting. + +In Operaton, conditional events are triggered with the help of process variables. +See the [Trigger Conditional Events](#trigger-conditional-events) section for details. + +In the following BPMN model, all supported conditional events are used. + +![Example img](../../../../assets/documentation/reference/bpmn20/events/event-conditional.svg)Conditional Events Overview + +As you can see, an intermediate conditional event is like a wait until the condition is satisfied. In this example, if +the processor becomes available and the condition is, for example, `${processorAvailable == true}`, the condition will be satisfied and the execution process continues to the next activity. + +If the condition of the conditional boundary event, which checks if the application was changed, is satisfied, then the corresponding user task will be interrupted. + +During the entire execution of the process instance, the application can be canceled. If the condition of the conditional start event is +satisfied, the execution of the process instance will be interrupted by the event sub process. +This will cancel the current processing of the application. + +## Condition + +To specify when a conditional event should be triggered, a `condition` element must be specified as a sub-element of `conditionalEventDefinition`. + +```xml + + ${var1 == 1} + +``` + +The specified condition can be an EL expression and has access to the process instance variables. +For information about EL expressions, see the [Expression Language](../../../user-guide/process-engine/expression-language.md) +section. A condition is evaluated every time a variable changes, see the [Trigger Conditional Events](#trigger-conditional-events) section for details. + +To prevent the continuous evaluation of a condition, the evaluation can be restricted to specific variable changes. +For that, the Operaton extension attributes `operaton:variableName` and `operaton:variableEvents` can be used. + +By default, condition evaluation is triggered by any kind of variable change, i.e., create/update/delete of any variable. `variableName` can be used to restrict that to changes of a specific variable. `variableEvents` can be used to restrict the type of change. It is possible to specify more than one variable change event as a comma separated list. +The attributes can be used in combination. + +The `conditionalEventDefinition` can, for example, look like this: + +```xml + + ${var1 == 1} + +``` + +The condition above is only evaluated if the variable `var1` is created or updated. +The attributes are especially useful on non interrupting events, since these events can be triggered more than once! + +## Conditional Boundary Event + +A conditional boundary event acts like an observer which is triggered if a specific condition is satisfied. + +There is a difference between an interrupting and a non interrupting conditional event. The interrupting event is the default. +The non-interrupting event leads to the original activity not being interrupted, the instance remains active. +Instead, an additional path of execution is created, taking the outgoing transition of the event. +A non interrupting conditional event can be triggered more than once as long as the activity it is attached to is active. + +In the XML representation for non interrupting conditional events, the cancelActivity attribute is set to false: +```xml + + + ${var1 == 1} + + +``` + +## Intermediate Conditional Catch Event + +An intermediate conditional event is like a wait until the condition is true. When the execution arrives at the catching event activity, +the condition is evaluated for the first time. If the condition is satisfied, the execution process continues to the next activity. +If the condition is not satisfied, the execution stays in this activity until the condition is satisfied. + +An intermediate conditional event is defined as an intermediate catching event. +The specific sub-element type in this case is a conditionalEventDefinition element. + +```xml + + + ${var1 == 1} + + +``` + +## Conditional Start Event + +A conditional start event can be used to start a process by evaluating some condition. One process can have one or more conditional start events. + +If more than one conditions are fulfilled the respective number of processes will be triggered. + +When deploying a process definition with conditional start events, the following considerations apply: + +* The condition of the conditional start event must be unique across a given process definition, i.e., a process definition must not have multiple conditional start events with the same condition. The engine throws an exception upon deployment of a process definition in case two or more conditional start events contain the same condition. +* Process versioning: Upon deployment of a new version of a process definition, the conditional subscriptions of the previous version are cancelled. +This is also the case for conditional events that are not present in the new version. + +When starting a process instance, a conditional start event can be triggered using the following method on the RuntimeService: + +```java +List instances = runtimeService + .createConditionEvaluation() + .setVariable("temperature", 24) + .evaluateStartConditions(); +// or +List instances = runtimeService + .createConditionEvaluation() + .setVariables(variableMap) + .evaluateStartConditions(); +``` +The provided variables are used to evaluate the conditions. Also they are passed as variables to the newly created process instances. +The XML representation of a conditional start event is the normal start event declaration with a `conditionalEventDefinition` child element. + +Optional: Adding `variableName` attribute to `conditionalEventDefinition` allows to specify a variable name on which a condition of a conditional event should be evaluated exclusively. +```xml + + + ${temperature > 20} + + +``` + +## Conditional Start Event for Event Sub Process + +Similar to conditional boundary events, conditional start events for event sub process can be interrupting and non interrupting. + +Note: An Event Sub-Process must have a single start event. + +The XML representation of a conditional start event is the normal start event declaration with a conditionalEventDefinition child-element: + +```xml + + + + ${var1 == 1} + + + +``` + +## Trigger Conditional Events + +### Triggering on Scope Instantiation + +When a BPMN scope is instantiated, the event conditions which are available in this scope +are evaluated. This behavior is called *triggering on scope instantiation*. + +Consider the following process model: + +
+ +When a process instance is started, i.e., the process definition scope is instantiated, the condition of the sub process is evaluated before the none start +event is executed. If fulfilled, it triggers immediately and the none start event never executes. The same applies to activities with conditional boundary events and intermediate conditional events. + +### Triggering via Variable API + +Besides the triggering on scope instantiation, conditional events can also be triggered when a process variable changes. +That is the case if a variable is created, updated or deleted. + +### Set Variable From Outside + +Variables can be changed from the outside with the help of the [variable API](../../../user-guide/process-engine/variables.md). +See the following example how to set a variable on the variable scope of the process instance: + +```java + //set variable on process instance + runtimeService.setVariable(processInstance.getId(), "variable", 1); +``` + +This statement triggers the evaluation of all applicable conditional events. For details, see the sections on [Top-Down Evaluation](#top-down-evaluation) and [Scoped Evaluation](#scoped-evaluation). + +### Set Variable From Delegation Code + +Variables can not only be set from outside, but also also from within a process instance via [delegation code](../../../user-guide/process-engine/delegation-code.md). + +For example: + +```java +public class SetVariableDelegate implements JavaDelegate { + @Override + public void execute(DelegateExecution execution) throws Exception { + execution.setVariable("variable", 1); + } +} +``` + +When set from delegation code, variable changes do not trigger conditional events immediately, to not interfere with the remaining code execution. Instead, the changes are recorded and collectively dispatched at the end of a phase of the activity instance lifecycle. + +In the following picture the different activity instance phases are displayed. + +![API Services](../../../../assets/documentation/reference/bpmn20/events/activityInstanceState.png) + + * `Starting` corresponds to the starting phase of the activity instance. At this time the input mappings and execution start listeners are called. + * `Execute` corresponds to the executing phase of the activity instance. + * `Ending` corresponds to the ending phase of the activity instance. At this time the output mappings and execution end listeners are called. + +For example, let us assume a variable is set in a start execution listener of an activity. Conditional events are only triggered after *all* start listeners have been executed and the activity instance is ready to enter the `Execute` phase. + +### Top-Down Evaluation + +A variable change causes condition evaluation and event triggering in a *top-down* fashion. +That means the evaluation starts at the the conditional events of the BPMN scope in which the variable was changed. It then step by step descends into the instances of nested BPMN scopes (e.g., embedded sub processes). This is done until a conditional event is triggered that interrupts the current scope instance (thereby cancelling all children) or until there are no more deeper nested scopes. + +For example see the following BPMN process model: + +
+ +If a variable is set in the context of the sub process instance, then the conditional boundary event of the sub process is evaluated first. +If the condition is satisfied, then the execution is interrupted, otherwise the conditional boundary event of `UserTask B` is evaluated and +triggered, if the condition is satisfied. + +### Scoped Evaluation + +Variable changes in the context of a scope instance can only trigger the conditional events to which the variable is *visible*, but do not interfere with unrelated scope instances. +That means if a variable changes, only those conditional events are evaluated that listen in the context of that scope instance or its children. + +See the following BPMN process model: + +
+ +If we have started the process above and `UserTask B` and `UserTask A` are active, then the [activity instance](../../../user-guide/process-engine/process-engine-concepts.md#activity-instances) hierarchy is: + + ProcessInstance + UserTask A + SubProcess + UserTask B + +If a variable is set in the context of the `SubProcess` instance, then only the conditional boundary event of `UserTask B` is evaluated. The boundary event of `UserTask A` cannot trigger as the variable is not *visible* in its context. The user guide section on [variable scopes and variable visibility](../../../user-guide/process-engine/variables.md#variable-scopes-and-variable-visibility) provides details on the general concept. + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:variableName, + operaton:variableEvents, +
Extension Elements + – +
Constraints
+ +## Additional Resources + +* [Conditional Events](http://operaton.org/bpmn/reference.html#events-conditional) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/error-events.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/error-events.md new file mode 100644 index 0000000..0ab4a95 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/error-events.md @@ -0,0 +1,234 @@ +--- + +title: 'Error Events' +sidebar_position: 50 + +menu: + main: + identifier: "bpmn-ref-events-error-events" + parent: "bpmn-ref-events" + description: "Events catching / throwing errors." +--- + +Error events are events which are triggered by a defined error. + +
+ + +## Business Errors vs. Technical Errors + +A BPMN error is meant for business errors - which are different than technical exceptions. So, this is different than Java exceptions - which are, by default, handled in their own way. + +You might also want to check out the basics of [Threading and Transactions](../../../user-guide/process-engine/transactions-in-processes.md#transaction-boundaries) in the [User Guide](../../../user-guide/index.md) first. + + +## Defining an Error + +An error event definition references an error element. The following is an example of an error end event, referencing an error declaration: + +```xml + + + + + + + + + + +``` + +You can trigger this error event either with a throwing error event within your process definition or from Delegation Code, see the +[Throwing BPMN Errors from Delegation Code](../../../user-guide/process-engine/delegation-code.md#throw-bpmn-errors-from-delegation-code) section of the [User Guide](../../../user-guide/index.md) for more information. + +Another possibility to define an error is setting of the type (class name) of any Java Exception as error code. Example: + +```xml + + + + + + + + + + +``` + +The exception type should only be used for business exceptions and not for technical exceptions in the process. + +An error event handler references the same error element to declare that it catches the error. + +It is also possible to define an error message with the `operaton:errorMessage` extension for an error element to give further information about the error. +The referencing error event definition must specify `operaton:errorMessageVariable` to receive the error message. The error message can also contain expressions. + +```xml + + + + + + + + + + +``` +When the error thrown by the error end event is catched a process variable with the name `err` will be created that holds the evaluated message. + +For External Tasks, it is also possible to define error events by using a [operaton:errorEventDefinition](../custom-extensions/extension-elements.md#erroreventdefinition) as shown in the following example. It additionally requires an expression that must evaluate to `true` in order for the BPMN error to be thrown. For further details on how to use those error events, consult the [External Tasks Guide](../../../user-guide/process-engine/external-tasks.md#error-event-definitions). + +```xml + + + + + +``` + +## Error Start Event + +An error start event can only be used to trigger an Event Sub-Process - it __cannot__ be used to start a process instance. The error start event is always interrupting. + +
+ +Three optional attributes can be added to the error start event: errorRef, operaton:errorCodeVariable and operaton:errorMessageVariable: +```xml + + + ... + + ... + > + + + + ... + + ... + + +``` +* If `errorRef` is omitted, the subprocess will start for every error event that occurs. +* The `operaton:errorCodeVariable` will contain the error code that was specified with the error. +* The `operaton:errorMessageVariable` will contain the error message that was specified with the error. + +`operaton:errorCodeVariable` and `operaton:errorMessageVariable` can be retrieved like any other process variable, but only if the attribute was set. + + +## Error End Event + +When process execution arrives at an error end event, the current path of execution is ended and an error is thrown. This error can be caught by a matching intermediate error boundary event. In case no matching error boundary event is found, the execution semantics defaults to the none end event semantics. + +### Operaton Extensions + +### Error Event Definition + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:errorCodeVariable, + operaton:errorMessageVariable, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:inputOutput +
Constraints
+ +### Error Definition + + + + + + + + + + + + + + +
Attributes + operaton:errorMessage +
Extension Elements
Constraints
+ + +## Error Boundary Event + +An intermediate catching error event on the boundary of an activity, or error boundary event for short, catches errors that are thrown within the scope of the activity on which it is defined. + +Defining a error boundary event makes most sense on an embedded subprocess, or a call activity, as a subprocess creates a scope for all activities inside the subprocess. Errors are thrown by error end events. Such an error will propagate its parent scopes upwards until a scope is found on which a error boundary event is defined that matches the error event definition. + +When an error event is caught, the activity on which the boundary event is defined is destroyed, also destroying all current executions therein (e.g., concurrent activities, nested subprocesses, etc.). Process execution continues following the outgoing sequence flow of the boundary event. + +
+ +A error boundary event is defined as a typical boundary event. As with the other error events, the errorRef references an error defined outside of the process element: + +```xml + + + + + + + + + + + + + +``` + +The errorCode is used to match the errors that are caught: + +* If errorRef is omitted, the error boundary event will catch any error event, regardless of the errorCode of the error. +* In case an errorRef is provided and it references an existing error, the boundary event will only catch errors with the defined error code. +* If the errorCodeVariable is set, the error code can be retrieved using this variable. +* If the errorMessageVariable is set, the error message can be retrieved using this variable. + + +## Unhandled BPMN Error + +It can happen that no catching boundary event was defined for an error event. The default behaviour in this case is to log information and end the current execution. +This behaviour can be changed with enableExceptionsAfterUnhandledBpmnError property set to true +(via the process engine configuration or the deployment descriptor) and Process Engine Exception will be thrown if unhandled BPMN Error occurs. + + +## Catch and Re-Throw Pattern + +An error can be handled by the error start event in the event sub process and the same error can be thrown from the event sub process to handle the error on the higher level scope (in the example below, the error thrown from the Event Subprocess is handled by the error boundary event in the Subprocess). + +
+ +### Additional Resources + +* [Error Events](http://operaton.org/bpmn/reference.html#events-error) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) +* [Incidents](../../../user-guide/process-engine/incidents.md) in the [User Guide](../../../user-guide/index.md) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/escalation-events.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/escalation-events.md new file mode 100644 index 0000000..621df6f --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/escalation-events.md @@ -0,0 +1,157 @@ +--- + +title: 'Escalation Events' +sidebar_position: 55 + +menu: + main: + identifier: "bpmn-ref-events-escalation-events" + parent: "bpmn-ref-events" + description: "Events catching / throwing escalations." +--- + +Escalation events are events which reference a named escalation. They are mostly used to communicate from a subprocess to an upper process. Unlike an error, an escalation event is non critical and execution continues at the location of throwing. + +
+ + +## Defining Escalation + +An escalation event definition is declared by using the `escalationEventDefinition` element. The attribute `escalationRef` references an `escalation` element declared as a child element of the definitions root element. The following is an excerpt of a process in which an escalation event is declared and referenced by an escalation intermediate throw event. + +```xml + + + + + + + + + + + +``` + + +## Catching Escalation Events + +### Escalation Start Event + +An escalation start event can only be used to trigger an event sub-process - it __cannot__ be used to start a process instance. + +
+ +An event sub-process with an escalation start event is triggered by an escalation event that occurs in the same scope or in a lower scope (e.g., sub-process or call activity). When the sub-process is triggered by an escalation event from a call activity, then the defined output variables of the call activity are passed to the sub-process. + +Two optional attributes can be added to the escalation start event, escalationRef and escalationCodeVariable: + +```xml + + + + + + +``` + +* If `escalationRef` is omitted or `escalationCode` of referenced escalation is omitted, the event sub-process is triggered by any escalation event, regardless of the escalation code of the escalation. +* In case an `escalationRef` is set, the event sub-process is only triggered by escalation events with the defined escalation code. +* If `escalationCodeVariable` is set, the escalation code of the occurred escalation event can be retrieved using this variable. + +:::note[Current Limitations] +* The escalation code of the start event must be unique across the event sub-processes of the same scope. +* If a start event has no `escalationRef` or `escalationCode` of referenced escalation then another event sub-process with an escalation start event is not supported. +::: + +### Operaton Extensions + +The following extensions are supported for `escalationEventDefinition`. + + + + + + + + + + + + + + +
Attributes + operaton:escalationCodeVariable +
Extension Elements
Constraints
+ +### Escalation Boundary Event + +An intermediate catching escalation event on the boundary of an activity, or escalation boundary event for short, catches escalations that are thrown within the scope of the activity on which it is defined. + +
+ +An escalation boundary event can only attached on an embedded sub-process or a call activity, since an escalation can only be thrown by an escalation intermediate throw event or an escalation end event. When the boundary event is triggered by an escalation event from a call activity, then the defined output variables of the call activity are passed to the scope of the boundary event. + +Two optional attributes can be added to the escalation boundary event, escalationRef and escalationCodeVariable, see [Escalation Start Event](#escalation-start-event). + +```xml + + + +``` + +:::warning[Current Limitations] +* The escalation code of the boundary event must be unique across the boundary events of the attached activity. +* If a boundary event has no `escalationRef` or `escalationCode` of referenced escalation then another escalation boundary event is not supported. +::: + +### Operaton Extensions + +The following extensions are supported for `escalationEventDefinition`. + + + + + + + + + + + + + + +
Attributes + operaton:escalationCodeVariable +
Extension Elements
Constraints
+ + +## Throwing Escalation Events + +### Escalation Intermediate Throw Event + +When process execution arrives at an escalation intermediate throw event, a named escalation is thrown. This escalation can be caught by an escalation boundary event or an event sub-process with an escalation start event which has the same or none escalation code. + +
+ +Like an error event, an escalation event is propagated to upper scopes (e.g., from sub-process or call activity) till it is caught. In case no boundary event or event sub-process caught the event, the execution just continues with normal flow. If the escalation is propagated to an upper scope via call activity then the defined output variables of the call activity are passed to the upper scope. + +```xml + + + +``` + +### Escalation End Event + +When process execution arrives at an escalation end event, the current path of execution is ended and a named escalation is thrown. It has the same behavior as an [escalation intermediate throw event](#escalation-intermediate-throw-event). + +
+ +```xml + + + +``` diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/index.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/index.md new file mode 100644 index 0000000..46815e5 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/index.md @@ -0,0 +1,6 @@ +--- + +title: "Events" +sidebar_position: 30 + +--- diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/link-events.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/link-events.md new file mode 100644 index 0000000..f78eda8 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/link-events.md @@ -0,0 +1,65 @@ +--- + +title: 'Link Events' +sidebar_position: 80 + +menu: + main: + identifier: "bpmn-ref-events-link-events" + parent: "bpmn-ref-events" + description: "Bridge very long sequence flows." + +--- + +Link events are a special case - it has no special execution semantics but serves as a "GoTo" to another point +in the same process model (to be precise: in the same sub process). Hence you can use two matching links as an +alternative to a sequence flow as shown in the following example. + +
+ +Note that you might have the same event source (throwing intermediate link event with the same event definition name) multiple times, but the event target (catching intermediate link event) has to be unique according to the BPMN 2.0 specification. + + +## Link Event Definition + +The name of the link is set by a LinkEventDefinition within the XML. Please note that this should always correspond to the name +of the intermediate event, otherwise this gets really confusing to everybody looking at the diagram (however, the engine just +gives a warning as it is valid BPMN 2.0). + +```xml + + + + + + + + + + +``` + + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:inputOutput +
Constraints
diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/message-events.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/message-events.md new file mode 100644 index 0000000..3b3c8a6 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/message-events.md @@ -0,0 +1,437 @@ +--- + +title: 'Message Events' +sidebar_position: 30 + +menu: + main: + identifier: "bpmn-ref-events-message-events" + parent: "bpmn-ref-events" + description: "Events catching / throwing messages." +--- + +Message events are events which reference a named message. A message has a name and a payload. Unlike a signal, a message event is always directed at a single recipient. + + +## Defining a Message + +A message event definition is declared by using the `messageEventDefinition` element. The attribute `messageRef` references a message element declared as a child element of the definitions root element. The following is an excerpt of a process in which two message events are declared and referenced by a start event and an intermediate catching message event. + +### Example + +```xml + + + + + + + + + + + ... + + + + ... + + +``` + +### Expressions + +You can use expressions for the name in the message event definition (except for the message start event). The name is then resolved as soon as a process reaches the scope of the message. For example when the process instances reaches a Message Intermediate Catching Event, then the expression within the name is resolved. + +By using expressions within the message name, you can influence the message name dynamically based on process variables. An example could look as follows: + +```xml + +``` + +**Note:** It is not allowed to use expressions in the message name of a start event of the process definition. So using an expression in the message definition and then referencing this definition in a message start event of the process entry point will cause an error. However, it is allowed to use expressions in the message start event of a subprocess. Therefore, using an expression in the message definition and then referencing this definition in the message start event within a subprocess will work just fine. + +### Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:inputOutput +
Constraints
+ +## Message Api + +As an embeddable process engine, the Operaton engine is not concerned with the receiving part of the message. This would be environment dependent and entails platform-specific activities such as connecting to a JMS (Java Messaging Service) Queue/Topic or processing a Webservice or REST request. The reception of messages is therefore something you have to implement as part of the application or infrastructure into which the process engine is embedded. + +After you have received a message, you can choose whether you employ the engine's built-in correlation or explicitly deliver the message to start a new process instance or trigger a waiting execution. + +### Using the Runtime Service's Correlation Methods + +The engine offers a basic correlation mechanism that will either signal an execution waiting for a specific message or instantiate a process with a matching message start event. The `RuntimeService` provides a fluent message correlation API: + +The result of the correlation is an object of type `MessageCorrelationResult`. It contains the type of the correlation, which is either `execution` or `processDefinition`. +The first type is set if the message was correlated to an intermediate message catch event. The second is set if the message was correlated to a start event. +If the type is set to `execution`, then the result contains an `Execution` object which can be accessed via the `result.getExecution()` method. If the type is set to +`processDefinition`, the result contains a `ProcessInstance` object which was created through the start event, which is accessible via the `result.getProcessInstance()` method. + +```java +// correlate the message +MessageCorrelationResult result = runtimeService.createMessageCorrelation("messageName") + .processInstanceBusinessKey("AB-123") + .setVariable("payment_type", "creditCard") + .correlateWithResult(); +``` +You can also explicitly query for the subscription and trigger it: + +```java +ProcessInstance pi = runtimeService.startProcessInstanceByKey("processWaitingInReceiveTask"); + +EventSubscription subscription = runtimeService.createEventSubscriptionQuery() + .processInstanceId(pi.getId()).eventType("message").singleResult(); + +runtimeService.messageEventReceived(subscription.getEventName(), subscription.getExecutionId()); +``` +The `messageName` identifies the message as defined in the message name attribute in the process definition xml. + +Correlation is successful if a single matching entity exists among the following: + +* **Process Definition**: A process definition matches if it can be started by a message named `messageName`. +* **Execution (Process Instance)**: An execution matches if it is waiting for a message named `messageName` (if provided) and its process instance matches the given `businessKey` and `correlationKeys` (if provided). The `correlationKeys` map is matched against the process instance variables. If `messageName` is not provided, any execution that matches the other criteria matches the overall correlation. This can be useful when the sending party only knows a dynamic correlation key but not the message name as defined in the process model. + +Alternatively, it is possible to correlate a message to multiple matched executions and to a process definition that can be instantiated by this message in one go. To do so, you can correlate a message by using the message correlation builder as follows: + +```java +List results = runtimeService + .createMessageCorrelation("aMessageName") + .correlateAllWithResult(); +``` +The result will be a list of `MessageCorrelationResult` objects. Each result corresponds to a correlation. + +It is possible to retrieve the process variables on message correlation. By specifying the boolean parameter `shouldDeserializeValues`, you decide whether the variables' values to be serialized or not. Please see the example below: + +```java +MessageCorrelationResultWithVariables result = runtimeService + .createMessageCorrelation("aMessageName") + .setVariable("name", "value") + .correlateWithResultAndVariables(shouldDeserializeValues); +VariableMap processVariables = result.getVariables(); +``` + +Additionally, message correlation builder provides the possibility to correlate the message by local execution variables. + +```java +List results = runtimeService + .createMessageCorrelation("aMessageName") + .localVariableEquals("localVarName", "localVarValue")) + .correlateAllWithResult(); +``` + +In this case the matching execution will be selected based on variables existing in it's scope (ignoring all parent scopes). + +In case of successful correlation, the correlated or newly created process instance is updated with the variables from the `processVariables` map. + + +### Explicitly Triggering a Message + +Alternatively, you can explicitly deliver a message to start a process instance or trigger a waiting execution. + +If the message should trigger the starting of a new process instance then you can use the correlation API: + +```java +ProcessInstance startedProcessInstance = runtimeService + .createMessageCorrelation("messageName") + .processInstanceBusinessKey("businessKey") + .setVariable("name", "value") + .correlateStartMessage(); + +// or + +MessageCorrelationResultWithVariables result = runtimeService + .createMessageCorrelation("aMessageName") + .processInstanceBusinessKey("businessKey") + .startMessageOnly() + .setVariable("name", "value") + .correlateWithResultAndVariables(shouldDeserializeValues); +ProcessInstance startedProcessInstance = result.getProcessInstance(); +VariableMap processVariables = result.getVariables(); +``` + +Or you can use one of the following methods offered by the runtime service: + +```java +ProcessInstance startProcessInstanceByMessage(String messageName); +ProcessInstance startProcessInstanceByMessage(String messageName, Map processVariables); +ProcessInstance startProcessInstanceByMessage(String messageName, String businessKey, Map processVariables); +``` + +These methods allow starting a process instance using the referenced message. + +If the message needs to be received by an existing process instance, you first have to correlate the message to a specific process instance (see the next section) and then trigger continuation of the waiting execution. The runtime service offers the following methods to trigger an execution based on a message event subscription: + +```java +void messageEventReceived(String messageName, String executionId); +void messageEventReceived(String messageName, String executionId, HashMap processVariables); +``` + +For an asynchronous correlation to existing process instances, you can use a [Batch operation](../../../user-guide/process-engine/batch-operations.md#correlate-messages-to-process-instances). + +### Querying for Message Event Subscriptions + +The engine supports message start events and intermediate message events. + +In case of a message start event, the message event subscription is associated with a particular process definition. Such message subscriptions can be queried using a ProcessDefinitionQuery: + +```java +ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() + .messageEventSubscription("newCallCenterBooking") + .singleResult(); +``` + +As there can only be one process definition for a specific message subscription, the query always returns zero or one results. If a process definition is updated, only the newest version of the process definition has a subscription to the message event. + +In case of an intermediate catch message event, the message event subscription is associated with a particular execution. Such message event subscriptions can be queried using an ExecutionQuery: + +```java +Execution execution = runtimeService.createExecutionQuery() + .messageEventSubscriptionName("paymentReceived") + .processVariableValueEquals("orderId", message.getOrderId()) + .singleResult(); +``` + +Such queries are called correlation queries and usually require knowledge about the processes (in this case, there is a maximum of one process instance for a given orderId). + + +## Message Start Event + +A message start event can be used to start a process instance using a named message. This effectively allows us to select the right start event from a set of alternative start events using the message name. + +When deploying a process definition with one or more message start events, the following considerations apply: + +* The name of the message start event must be unique across a given process definition, i.e., a process definition must not have multiple message start events with the same name. The engine throws an exception upon deployment of a process definition in case two or more message start events reference the same message or if two or more message start events reference messages with the same message name. +* The name of the message start event must be unique across all deployed process definitions. The engine throws an exception upon deployment of a process definition in case one or more message start events reference a message with the same name as a message start event already deployed by a different process definition. +* Process versioning: Upon deployment of a new version of a process definition, the message subscriptions of the previous version are canceled. This is also the case for message events that are not present in the new version. + +When starting a process instance, a message start event can be triggered using the following methods on the RuntimeService: + +```java +ProcessInstance startProcessInstanceByMessage(String messageName); +ProcessInstance startProcessInstanceByMessage(String messageName, Map processVariables); +ProcessInstance startProcessInstanceByMessage(String messageName, String businessKey, Map processVariables); +``` + +The messageName is the name given in the name attribute of the message element referenced by the messageRef attribute of the messageEventDefinition. The following considerations apply when starting a process instance: + +* Message start events are only supported in top-level processes. Message start events are not supported in embedded sub processes. +* If a process definition has multiple message start events, `runtimeService.startProcessInstanceByMessage(...)` allows selection of the appropriate start event. +* If a process definition has multiple message start events and a single none start event, `runtimeService.startProcessInstanceByKey(...)` and `runtimeService.startProcessInstanceById(...)` start a process instance using the none start event. +* If a process definition has multiple message start events and no none start event, `runtimeService.startProcessInstanceByKey(...)` and `runtimeService.startProcessInstanceById(...)` throw an exception. +* If a process definition has a single message start event, `runtimeService.startProcessInstanceByKey(...)` and `runtimeService.startProcessInstanceById(...)` start a new process instance using the message start event. +* If a process is started from a call activity, message start event(s) are only supported if + * in addition to the message start event(s), the process has a single none start event + * the process has a single message start event and no other start events. + +The XML representation of a message start event is the normal start event declaration with a messageEventDefinition child-element: + +```xml + + + + + + + + + + ... + + + +``` + +A process can be started using one of two different messages, this is useful if the process needs alternative ways to react to different start events but eventually continues in a uniform way. + +
+ + +## Message Intermediate Catching Event + + +When a token arrives at the message intermediate catching event it will wait there until a message with the proper name arrives. As already described, the message must be handed into the engine via the appropriate API calls. + +The following example shows different message events in a process model: + +
+ +```xml + + + +``` + +Instead of the message intermediate catching event you might want to think about a Receive Task instead, which can serve similar purposes but is able to be used in combination with boundary events. In combination with the message intermediate catching event you might want to use an Event-based Gateway. + + +## Message Boundary Event + +Boundary events are catching events that are attached to an activity. This means that while the activity is running, the message boundary event is listening for named message. When this is caught, two things might happen, depending on the configuration of the boundary event: + +* Interrupting boundary event: The activity is interrupted and the sequence flow going out of the event is followed. +* Non-interrupting boundary event: One token stays in the activity and an additional token is created which follows the sequence flow going out of the event. + + +## Message Intermediate Throwing Event + +A Message Intermediate Throwing event sends a message to an external service. This event has the same behavior as a [Service Task](../tasks/service-task.md). + +
+ +```xml + + + +``` + + +### Operaton Extensions for `messageEventDefinition` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Attributes + operaton:class, + operaton:delegateExpression, + operaton:expression, + operaton:resultVariable, + operaton:topic, + operaton:type, + operaton:taskPriority +
Extension Elements + operaton:field, + operaton:connector +
Constraints + One of the attributes operaton:class, operaton:delegateExpression, operaton:type or operaton:expression is mandatory +
+ The attribute operaton:resultVariable can only be used in combination with the operaton:expression attribute +
+ The attribute operaton:type can only be set to external. +
+ The attribute operaton:topic can only be used when the operaton:type attribute is set to external. +
+ The attribute operaton:taskPriority can only be used when the operaton:type attribute is set to external. +
+ + +## Message End Event + +When process execution arrives at a Message End Event, the current path of execution is ended and a message is sent. The Message End Event has the same behavior as a [Service Task](../tasks/service-task.md). + +```xml + + + +``` + + +### Operaton Extensions for `messageEventDefinition` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Attributes + operaton:class, + operaton:delegateExpression, + operaton:expression, + operaton:resultVariable, + operaton:topic, + operaton:type, + operaton:taskPriority +
Extension Elements + operaton:field, + operaton:connector +
Constraints + One of the attributes operaton:class, operaton:delegateExpression, operaton:type or operaton:expression is mandatory +
+ The attribute operaton:resultVariable can only be used in combination with the operaton:expression attribute +
+ The attribute operaton:type can only be set to external. +
+ The attribute operaton:topic can only be used when the operaton:type attribute is set to external. +
+ The attribute operaton:taskPriority can only be used when the operaton:type attribute is set to external. +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/none-events.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/none-events.md new file mode 100644 index 0000000..df3fee0 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/none-events.md @@ -0,0 +1,78 @@ +--- + +title: 'None Events' +sidebar_position: 20 + +menu: + main: + identifier: "bpmn-ref-events-none-events" + parent: "bpmn-ref-events" + description: "Events without a specified trigger and no specified behavior." +--- + +None events are unspecified events, also called 'blank' events. For instance, a 'none' start event technically means that the trigger for starting the process instance is unspecified. This means that the engine cannot anticipate when the process instance must be started. The none start event is used when the process instance is started through the API by calling one of the `startProcessInstanceBy...` methods. + +```java +ProcessInstance processInstance = runtimeService.startProcessInstanceByKey('invoice'); +``` + +Note: a subprocess must always have a none start event. + +
+ + +## None End Event + +A 'none' end event means that the result thrown when the event is reached is unspecified. As such, the engine will not do anything besides ending the current path of execution. The XML representation of a none end event is the normal end event declaration, without any sub-element (other end event types all have a sub-element declaring the type). + +```xml + +``` + +## Intermediate None Event (throwing) + +The following process diagram shows a simple example of an intermediate none event, which is often used to indicate some state achieved in the process. + +
+ + +This can be a good hook to monitor some KPI's, basically by adding an execution listener + +```xml + + + + + +``` + +You can add some own code to the execution listener to maybe send some event to your BAM tool or DWH. The engine itself doesn't do anything in the event, it just passes through it. + + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:inputOutput +
Constraints + The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/signal-events.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/signal-events.md new file mode 100644 index 0000000..2d2af84 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/signal-events.md @@ -0,0 +1,316 @@ +--- + +title: 'Signal Events' +sidebar_position: 60 + +menu: + main: + identifier: "bpmn-ref-events-signal-events" + parent: "bpmn-ref-events" + description: "Events catching / throwing signals." +--- + + +Signal events are events which reference a named signal. A signal is an event of global scope (broadcast semantics) and is delivered to all active handlers. + +The following is an example of two separate processes communicating using signals. The first process is started if an insurance policy is updated or changed. After the changes have been reviewed by a human participant, a signal event is thrown, signaling that a policy has changed: + +
+ +This event can now be caught by all process instances which are interested. The following is an example of a process subscribing to the event. + +
+ +Note: It is important to understand that a signal event is broadcast to all active handlers. In the example given above this means that all instances of the process catching the signal would receive the event. + + +## Signal Event Definition + +A signal event definition is declared using the signalEventDefinition element. The attribute `signalRef` references a signal element declared as a child element of the definitions root element. The following is an excerpt of a process in which a signal event is thrown and caught by intermediate events. The signalEventDefinitions reference the 'global' signal element. + + +```xml + + + + + + + + + + + + + + + + + +``` + +__Note__: Contrary to other events, such error events, a signal is not consumed if it is caught. If you have two active signal boundary events catching the same signal event, both boundary events are triggered, even if they are part of different process instances. + + +### Expressions + +You can use expressions for the name in the signal event definition. The name is then resolved as soon as a process reaches the scope of the signal. For example when the process instances reaches a Signal Intermediate Catching Event, then the expression within the name is resolved. + +By using expressions within the signal name you can influence the signal name dynamically based on process variables. This could come in handy when for example there is the need to interrupt parallel branches. An example could look like follows: + +```xml + +``` + + +## Signal Api + +### Triggering (Throwing) Signals + +A signal can either be thrown by a process instance using a BPMN construct or programmatically using Java API. The `RuntimeService` provides a fluent API to throw a signal programmatically: + +```java +// broadcast signal +runtimeService + .createSignalEvent("signalName") + .setVariables(variables) + .send(); + +// deliver a signal to a single execution +runtimeService + .createSignalEvent("signalName") + .executionId(executionId) + .setVariables(variables) + .send(); +``` + +Additionally, you can use one of the following methods offered by the `RuntimeService`: + +```java +RuntimeService.signalEventReceived(String signalName); +RuntimeService.signalEventReceived(String signalName, String executionId); +``` + +If an execution id is specified then the signal is only delivered to the specific execution. Otherwise, the signal is thrown globally to all subscribed handlers (broadcast semantics). + +Note: The signal event does not perform any kind of correlation to a specific process instance. On the contrary, it is broadcast to all process instances. If you need to exclusively deliver a signal to a specific process instance, do not use the throwing signal event. Instead, perform the correlation manually using the appropriate query mechanisms and deliver the signal to a specific execution programmatically. + +### Querying for Signal Event Subscriptions + +It is possible to query for all executions which have subscribed to a specific signal event: + +```xml +List executions = runtimeService.createExecutionQuery() + .signalEventSubscriptionName("alert") + .list(); +``` + +You could then use the signal API to deliver the signal to these executions. + +## Catching Signal Events + +### Signal Start Event + +A signal start event can be used to start a process instance using a named signal. + +When deploying a process definition with one or more signal start events, the following considerations apply: + +* The name of the signal start event must be unique across a given process definition, i.e., a process definition must not have multiple signal start events with the same name. The engine throws an exception upon deployment of a process definition in case two or more signal start events reference the same signal or if two or more signal start events reference signals with the same signal name. +* Contrary to message start events, the name of the signal start event does not have to be unique across all deployed process definitions. +* Process versioning: Upon deployment of a new version of a process definition, the signal subscriptions of the previous version are canceled. This is also the case for signal events that are not present in the new version. + +A process instance of a process definition with one or more signal start events will be started, when a signal with the proper name is thrown. The signal can either be thrown by a process instance (i.e., on intermediate throwing signal event or signal end event) or using the following methods on the RuntimeService: + +```java +void signalEventReceived(String signalName); +void signalEventReceived(String signalName, Map processVariables); +``` + +Note: A thrown signal can start multiple process instances when multiple process definitions have a signal start event with the same signal name. + +The XML representation of a signal start event is the normal start event declaration with a signalEventDefinition child-element: + +```xml + + + +``` + +### Signal Intermediate Catching Event + +When a token arrives at the signal intermediate catching event, it will wait there until a signal with the proper name arrives. + +```xml + + + +``` + +### Operaton Extensions + +The following extensions are supported for the Signal Intermediate Catching Event: + + + + + + + + + + + + + + +
Attributes
Extension Elements + operaton:inputOutput +
Constraints
+ +### Signal Boundary Event + +When an execution arrives in the activity to which the signal boundary event is attached, the signal boundary event catches signals with the proper name. + +Note: Contrary to other events, such as the error boundary event, a signal boundary event does not only catch signal events thrown from the scope it is attached to. A signal event has a global scope (broadcast semantics), meaning that the signal can be thrown from any place, even from a different process instance. + +```xml + + + +``` + +## Throwing Signal Events + +### Signal Intermediate Throwing Event + +A signal intermediate throwing event throws a signal event for a defined signal. + +The signal is broadcast to all active handlers (i.e., all catching signal events). Signals can be published synchronously or asynchronously. + +* In the default configuration, the signal is delivered synchronously. This means that the throwing process instance waits until the signal is delivered to all catching process instances. The catching process instances are also notified in the same transaction as the throwing process instance, which means that if one of the notified instances produces a technical error (throws an exception), all involved instances fail. +* A signal can also be delivered asynchronously. In that case it is determined which handlers are active at the time the throwing signal event is reached. For each active handler, an asynchronous notification message (`Job`) is stored and delivered by the `JobExecutor`. + +A signal intermediate event is defined as an intermediate throwing event. In this case, the specific type sub-element is a signalEventDefinition element. + +```xml + + + +``` + +An asynchronous signal event would look like this: + +```xml + + + +``` + +### Signal End Event + +A signal end event throws a signal event for a defined signal and the current path of execution is ended. It has the same behavior as a signal intermediate throwing event. + +```xml + + + +``` + +### Passing Variables + +It is possible to pass process variables from the signal-throwing process instance, to all of the signal-catching process instances. The data is copied into a signal-catching process instance when it is started with a Signal Start Event, or before it leaves the wait-state in a Signal Intermediate Catching Event. + +```xml + + + + + +``` + +The variables declared in the "operaton:in" elements are set in the highest possible variable scope at the signal-catching process instance. + +It is also possible to use expressions and modify the data before it is passed on to the signal-catching process instances. + +```xml + + + + + +``` + +The `Y` process variable at the signal-catching process instances will have the value of `(X + 5)`, where `X` is a process variable of the signal-throwing process instance. + +Moreover, it can be declared that all of the process variable of the signal-throwing process instance be passed to the signal-catching processes. + +```xml + + + + + +``` + +By setting local="true", only the local variables of the execution executing the Throwing Signal Event will be passed to the signal-catching process instances. These are the variables that can be declared as input parameters. + +```xml + + + + + +``` + +It is possible to use multiple of the above-mentioned options at once. For example (below), it can be declared that only the local variables are passed, a higher-scope variable, and an expression including the same, higher-scope variable. + +```xml + + + + + + + +``` + +### Passing a Business Key + +In addition to passing process variables to the signal-catching process instances, it is also possible to pass a Business Key. However, this Business Key passing can only be applied to process instances that use a Signal Start Event. + +```xml + + + + + +``` + +The business key "operaton:in" element can be used in combination with the process variable passing "operaton:in" elements. + +### Operaton Extensions + +The following extensions are supported for the Signal Intermediate and End Throwing Events: + + + + + + + + + + + + + + +
Attributes
Extension Elements + operaton:in, + operaton:failedJobRetryTimeCycle, + operaton:inputOutput +
Constraints
+ +## Additional Resources + +* [Signal Events](http://operaton.org/bpmn/reference.html#events-signal) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/start-events.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/start-events.md new file mode 100644 index 0000000..01e7c7b --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/start-events.md @@ -0,0 +1,90 @@ +--- + +title: 'Start Events' +sidebar_position: 10 + +menu: + main: + identifier: "bpmn-ref-events-start-event" + parent: "bpmn-ref-events" + description: "Start Events define where a Process or Sub Process starts." +--- + + +Start events define where a Process or Sub Process starts. + +The process engine supports different types of start events: + +* [Blank](../events/none-events.md) +* [Timer](../events/timer-events.md) +* [Message](../events/message-events.md) +* [Signal](../events/signal-events.md) +* [Conditional](../events/conditional-events.md) + +The engine requires at least one start event to instantiate a process. There can be a maximum of one blank or timer start event per process definition. There can be multiple message or signal start events. + + +## Asynchronous Instantiation + +A start event may be declared as asynchronous with `operaton:asyncBefore="true"` + +```xml + +``` + +This will ensure that the process engine creates a process instance when the process is instantiated, but the execution of the initial activities is not done synchronously. Instead, a job is created and asynchronously processed by the [job executor](../../../user-guide/process-engine/the-job-executor.md). See the [Asynchronous Continuations](../../../user-guide/process-engine/transactions-in-processes.md#asynchronous-continuations) section of the [User Guide](../../../user-guide/index.md) for some background information. + + +## Operaton Extensions + + + + + + + + + + + + + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:formHandlerClass, + operaton:formKey, + operaton:formRef, + operaton:formRefBinding, + operaton:formRefVersion, + operaton:initiator, + operaton:jobPriority +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:formData, + operaton:formProperty, +
Constraints + The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
+ The attributes operaton:asyncBefore and operaton:initiator are only available for start events of a Process +
+ Only one operaton:formData extension element is allowed +
+ The attributes operaton:formHandlerClass and operaton:formKey + are only available for the intital start event of a Process +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/terminate-event.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/terminate-event.md new file mode 100644 index 0000000..f107ad5 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/terminate-event.md @@ -0,0 +1,64 @@ +--- + +title: 'Terminate Events' +sidebar_position: 90 + +menu: + main: + identifier: "bpmn-ref-events-terminate-event" + parent: "bpmn-ref-events" + description: "End a scope." + +--- + +A terminate event ends the complete scope it is raised in and all contained inner scopes. + +It is useful if you have a parallel token flow in a process and you want to consume all tokens available in the same scope immediately. + +A terminate event on process instance level terminates the complete instance. On subprocess level the current scope and all contained processes instances will be terminated. + +
+ + +## Terminate Event Definition + +A terminate event is modeled as an end event with an additional definition element to mark the termination: + +```xml + + + + + + + +``` + + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:inputOutput +
Constraints
+ +### Additional Resources + +* [Terminate Events](http://operaton.org/bpmn/reference.html#events-termination) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/timer-events.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/timer-events.md new file mode 100644 index 0000000..771f8cf --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/events/timer-events.md @@ -0,0 +1,225 @@ +--- + +title: 'Timer Events' +sidebar_position: 40 + +menu: + main: + identifier: "bpmn-ref-events-timer-events" + parent: "bpmn-ref-events" + description: "Events waiting on a timer condition." +--- + + +Timer events are events which are triggered by a defined timer. They can be used as start event, intermediate event or boundary event. Boundary events can be interrupting or not. + +
+ + +## Configuration + +Timers are only fired when the [Job Executor](../../../user-guide/process-engine/the-job-executor.md) is enabled. + + +## Defining a Timer + +Timers are configured using an [ISO 8601][iso-8601] time format. A timer definition must have exactly one of the following elements. + +### Time Date + +This format specifies a fixed time and date in adhering to the [ISO 8601][iso-8601] format, when the trigger will be fired. + +Example: + +```xml + + 2011-03-11T12:13:14Z + +``` + +### Time Duration + +To specify how long the timer should run before it is fired, a timeDuration can be specified as a sub-element of timerEventDefinition. It is possible to define the duration in two different [ISO 8601 Durations](http://en.wikipedia.org/wiki/ISO_8601#Durations) formats: +
    +
  • PnYnMnDTnHnMnS
  • +
  • PnW
  • +
+ +Example (interval lasting 10 days): + +```xml + + P10D + +``` + +### Time Cycle + +Specifies repeating intervals, which can be useful for starting process periodically, or for sending multiple reminders for overdue user tasks. A time cycle element can be in two formats. One option is the format of recurring [time duration](#time-duration), as specified by the [ISO 8601 Repeating Intervals](http://en.wikipedia.org/wiki/ISO_8601#Repeating_intervals) standard. + +Example (3 repeating intervals, each lasting 10 hours): + +```xml + + R3/PT10H + +``` + +Additionally, you can specify a time cycle using cron expressions, the example below shows a trigger firing every 5 minutes, starting at full hour: + +``` +0 0/5 * * * ? +``` + +Please see the CronTrigger Tutorial for additional information about using cron expressions. + +Note: The first symbol denotes seconds, not minutes as in normal Unix cron. + +The recurring time duration option is better suited for handling relative timers, which are calculated in respect to some particular point in time (e.g., the time when a user task was started), while cron expressions can handle absolute timers - which is particularly useful for timer start events. + +### Modify a Time Cycle +A timer's repeat cycle can be controlled via the REST API or by calling the ManagementService. By setting the due date of a timer, it is possible to change the point in time when a timer is executed. + +```java +managementService.setJobDuedate(String jobId, Date newDuedate) +``` + +Changes to one timer instance do not automatically affect subsequent timer instances. For example, a certain recurring timer produces a timer event every 30 minutes. If the due date of one timer event is changed (e.g. +15minutes), it would be executed 45 minutes after the previous timer. However, the following timer would follow the old pattern and would execute 15 minutes after the changed timer. + +If the desired outcome is to calculate the due dates of all subsequent timers based on the changes made, then it is possible to pass a `cascade` flag (when using the REST API) or use the following Java API method: + +```java +managementService.setJobDuedate(String jobId, Date newDuedate, boolean cascade) +``` + + +### Expressions + +You can use expressions for the timer event definitions. By doing so you can influence the timer definition based on process variables. The process variables must contain the [ISO 8601][iso-8601] (or cron for cycle type) string for the appropriate timer type. + +```xml + + + ${duration} + + +``` + +### Re-evaluate a time cycle + +A timer's repeat cycle can be updated if the defined expression is changed. This is achieved by re-evaluation of the expression next time when a timer is fired. So the new cycle will be effective from the next scheduled timer. + +Let's observe a scenario with the following timer defined where `myBean.getCycle()="R3/PT2H"`: + +```xml + + + #{myBean.getCycle()} + + +``` +Let's assume the timer is meant to fire at 1 p.m., 3 p.m., and 5 p.m. + +At 4 p.m., after the timer has fired two times, we adjust the bean to return `myBean.getCycle()="R2/PT30M"`. In effect, the timer will still be triggered at 5 p.m. (as initially scheduled and calculated by the previous cycle). Afterward, it will fire at 5:30 p.m. and 6 p.m. (based on the new cycle). + +The feature is disabled by default. To enable it, set the `reevaluateTimeCycleWhenDue` property to `true` in the process engine configuration. + +:::note[Heads-up!] +To enforce an immediate re-evaluation of a time cycle, follow the steps: + +1. Change the expression of the time cycle (e.g., Adjust the Spring bean that resolves the cycle). +1. Update the current timer job due date: + * via Java API: javadocref page="org/operaton/bpm/engine/ManagementService.html#setJobDuedate%28java.lang.String,java.util.Date%29" text="ManagementService#setJobDuedate" + * via REST API: page="setJobDuedate" text="Job/operation/setJobDuedate" tag="Job" + * via Cockpit: Navigate to the Job view of the currently running process instance and select "Change due date for this Job" button. + +After this job is executed, the next jobs will be created with adjusted time cycle. +::: +### Handling of Timezones + +The configuration `2022-03-11T12:13:14` does not specify a time zone. At runtime, such a date is interpreted in the local time zone of the JVM executing the process. This can be problematic in various cases, such as when running multiple Operaton nodes in different time zones or when you cannot assume the time zone the platform runs in. Furthermore, there can be glitches with respect to daylight saving time (DST). If in doubt, specify the time in UTC (e.g., `2022-03-11T12:13:14Z`) or with a UTC-relative offset (e.g., `2022-03-11T12:13:14+01`). + +### Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:inputOutput +
Constraints
+ + +## Timer Start Event + +A timer start event is used to create process instance at a given time. It can be used both for processes which should start only once and for processes that should start in specific time intervals. + +Note: A subprocess cannot have a timer start event. + +Note: A timer start event is scheduled as soon as process is deployed. There is no need to call `startProcessInstanceBy...`, although calling start process methods is not restricted and will cause one more start of the process at the time of the `startProcessInstanceBy...` invocation. + +The XML representation of a timer start event is the normal start event declaration, with a timer definition sub-element. The following example process will start 4 times, in 5 minute intervals, starting on 11th of March 2022, at 12:13 (UTC +01, 24 hour clock system): + +```xml + + + R4/2022-03-11T12:13+01/PT5M + + +``` + +and this process will start once, on a selected date, at Greenwich time: + +```xml + + + 2022-03-11T12:13:14Z + + +``` + +## Timer Intermediate Catching Event + +A timer intermediate event acts as a stopwatch. When an execution arrives in catching event activity, a timer is started. When the timer fires (e.g., after a specified interval), the sequence flow going out of the timer intermediate event is followed. + +A timer intermediate event is defined as an intermediate catching event. The specific type sub-element in this case is a timerEventDefinition element. + +```xml + + + PT5M + + +``` + + +## Timer Boundary Event + +A timer boundary event acts as a stopwatch and as an alarm clock. When an execution arrives in the activity to which the boundary event is attached, a timer is started. When the timer fires (e.g., after a specified interval), the activity is interrupted and the sequence flow going out of the timer boundary event are followed. + +There is the difference between an interrupting and a non interrupting timer event. The interrupting event is the default. The non-interrupting event leads to the original activity not being interrupted, the activity stays there. Instead, an additional execution is created and sent over the outgoing transition of the event. In the XML representation, the cancelActivity attribute is set to false: + +```xml + + + PT4H + + +``` + +[iso-8601]: https://en.wikipedia.org/wiki/ISO_8601 diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/event-based-gateway.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/event-based-gateway.bpmn new file mode 100644 index 0000000..f725eb5 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/event-based-gateway.bpmn @@ -0,0 +1,131 @@ + + + + + SequenceFlow_1 + + + SequenceFlow_1 + SequenceFlow_2 + SequenceFlow_3 + + + + + SequenceFlow_2 + SequenceFlow_6 + + + + + SequenceFlow_5 + SequenceFlow_6 + SequenceFlow_7 + + + + + SequenceFlow_3 + SequenceFlow_4 + + + + + SequenceFlow_4 + SequenceFlow_5 + + + + SequenceFlow_7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/exclusive-gateway.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/exclusive-gateway.bpmn new file mode 100644 index 0000000..2311ab6 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/exclusive-gateway.bpmn @@ -0,0 +1,130 @@ + + + + + SequenceFlow_1 + + + + SequenceFlow_5 + + + SequenceFlow_4 + SequenceFlow_5 + + + + SequenceFlow_2 + SequenceFlow_3 + + + + SequenceFlow_1 + SequenceFlow_2 + SequenceFlow_4 + SequenceFlow_else + + + + + SequenceFlow_3 + + + + SequenceFlow_else + SequenceFlow_9 + + + + SequenceFlow_9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive-gateway.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive-gateway.bpmn new file mode 100644 index 0000000..a8cd3e2 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive-gateway.bpmn @@ -0,0 +1,127 @@ + + + + + SequenceFlow_1 + + + + SequenceFlow_7 + + + SequenceFlow_6 + SequenceFlow_7 + + + + SequenceFlow_4 + SequenceFlow_5 + SequenceFlow_6 + + + + SequenceFlow_2 + SequenceFlow_4 + + + + SequenceFlow_3 + SequenceFlow_5 + + + + SequenceFlow_1 + SequenceFlow_2 + SequenceFlow_3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_1.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_1.bpmn new file mode 100644 index 0000000..c3950fa --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_1.bpmn @@ -0,0 +1,133 @@ + + + + + Flow_0w7r0r1 + + + + Flow_0w7r0r1 + Flow_1e23yhj + Flow_1rxqtut + Flow_1jikvil + + + + + + + Flow_11rkp7k + Flow_1gqzf30 + Flow_0xgsxib + + + + + + Flow_0j3fmhm + + + + Flow_155cnar + Flow_0xgsxib + Flow_0j3fmhm + + + Flow_1rxqtut + Flow_11rkp7k + + + Flow_1e23yhj + Flow_1gqzf30 + + + Flow_1jikvil + Flow_155cnar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_2.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_2.bpmn new file mode 100644 index 0000000..7ff618b --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_2.bpmn @@ -0,0 +1,144 @@ + + + + + Flow_0o7lnvh + + + + Flow_0o7lnvh + Flow_0x4ubom + Flow_0i1y12i + + + Flow_0x4ubom + Flow_18s0vi4 + + + + Flow_0i1y12i + Flow_19raqda + + + + + Flow_18s0vi4 + Flow_08polco + Flow_06a054f + + + + Flow_19raqda + Flow_0jrc9g7 + Flow_0ncpwgv + Flow_05jo0o5 + + + Flow_05jo0o5 + + + + Flow_08polco + Flow_0jrc9g7 + + + + + Flow_06a054f + Flow_0ncpwgv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_3.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_3.bpmn new file mode 100644 index 0000000..fa8d967 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_3.bpmn @@ -0,0 +1,113 @@ + + + + + Flow_0prs8qy + + + Flow_1oca50p + Flow_10acatm + Flow_1oo92xx + + + Flow_08mft0l + + + Flow_0prs8qy + Flow_1oca50p + Flow_0i1ko9s + + + Flow_1oo92xx + Flow_0tow7o6 + + + Flow_0i1ko9s + Flow_10acatm + + + + + + + + + + Flow_0tow7o6 + Flow_08mft0l + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_4.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_4.bpmn new file mode 100644 index 0000000..be162f1 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_4.bpmn @@ -0,0 +1,144 @@ + + + + + Flow_1q5l3vt + + + + Flow_1u5ensc + Flow_1vmdlrp + Flow_0b46o2y + + + + + + + ${true} + + + Flow_147pt49 + + + + Flow_1q5l3vt + Flow_1u5ensc + Flow_08amosu + + + Flow_0b46o2y + Flow_1pwvprk + Flow_0x9yhc9 + + + Flow_1pwvprk + Flow_0x9yhc9 + Flow_017qwte + + + ${false} + + + Flow_08amosu + Flow_1vmdlrp + + + + Flow_017qwte + Flow_147pt49 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/parallel-gateway-unbalanced.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/parallel-gateway-unbalanced.bpmn new file mode 100644 index 0000000..9963ec8 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/parallel-gateway-unbalanced.bpmn @@ -0,0 +1,167 @@ + + + + + SequenceFlow_1 + + + SequenceFlow_1 + SequenceFlow_2 + SequenceFlow_5 + SequenceFlow_9 + + + + SequenceFlow_2 + SequenceFlow_4 + + + + + + SequenceFlow_5 + SequenceFlow_6 + + + + SequenceFlow_4 + SequenceFlow_6 + SequenceFlow_7 + + + SequenceFlow_7 + SequenceFlow_8 + + + + + SequenceFlow_8 + SequenceFlow_10 + SequenceFlow_11 + + + + SequenceFlow_9 + SequenceFlow_10 + + + + + SequenceFlow_11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/parallel-gateway.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/parallel-gateway.bpmn new file mode 100644 index 0000000..bd4e3c2 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/parallel-gateway.bpmn @@ -0,0 +1,127 @@ + + + + + SequenceFlow_2 + SequenceFlow_4 + + + + SequenceFlow_1 + SequenceFlow_2 + SequenceFlow_3 + + + + + SequenceFlow_4 + SequenceFlow_5 + SequenceFlow_6 + + + + SequenceFlow_1 + + + + SequenceFlow_7 + + + SequenceFlow_3 + SequenceFlow_5 + + + + SequenceFlow_6 + SequenceFlow_7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/sequence-flow-conditional.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/sequence-flow-conditional.bpmn new file mode 100644 index 0000000..d2f5067 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/sequence-flow-conditional.bpmn @@ -0,0 +1,94 @@ + + + + + SequenceFlow_2 + SequenceFlow_4 + + + SequenceFlow_3 + SequenceFlow_5 + + + SequenceFlow_4 + + + + SequenceFlow_5 + + + + SequenceFlow_1 + SequenceFlow_2 + SequenceFlow_3 + + + xxx + + + y + + + SequenceFlow_1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/sequence-flow-parallel.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/sequence-flow-parallel.bpmn new file mode 100644 index 0000000..b8b95d6 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/bpmn/sequence-flow-parallel.bpmn @@ -0,0 +1,90 @@ + + + + + SequenceFlow_2 + SequenceFlow_4 + + + SequenceFlow_3 + SequenceFlow_5 + + + SequenceFlow_4 + + + + SequenceFlow_5 + + + + SequenceFlow_1 + SequenceFlow_2 + SequenceFlow_3 + + + + + SequenceFlow_1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/event-based-gateway.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/event-based-gateway.md new file mode 100644 index 0000000..d222d36 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/event-based-gateway.md @@ -0,0 +1,98 @@ +--- + +title: 'Event-based Gateway' +sidebar_position: 50 + +menu: + main: + identifier: "bpmn-ref-gateways-event-based" + parent: "bpmn-ref-gateways" + description: "Model decisions based on events." + +--- + +The event-based Gateway allows you to make a decision based on events. Each outgoing sequence flow of the gateway needs to be connected to an intermediate catching event. When process execution reaches an event-based Gateway, the gateway acts like a wait state: execution is suspended. In addition, an event subscription is created for each outgoing sequence flow. + +Note that the sequence flows running out of an event-based Gateway are different than ordinary sequence flows. These sequence flows are never actually "executed". On the contrary, they allow the process engine to determine which events an execution arriving at an event-based Gateway needs to subscribe to. The following restrictions apply: + +* An event-based Gateway must have two or more outgoing sequence flows. +* An event-based Gateway may only be followed by elements of the type intermediateCatchEvent. + (Receive Tasks after an event-based Gateway are not supported by the engine yet.) +* An intermediateCatchEvent connected to an event-based Gateway must have a single incoming sequence flow. + +The following process is an example of a process with an event-based Gateway. When the execution arrives at the event-based Gateway, process execution is suspended. Additionally, the process instance subscribes to the alert signal event and creates a timer which fires after 10 minutes. This effectively causes the process engine to wait for ten minutes for a signal event. If the signal event occurs within 10 minutes, the timer is canceled and execution continues after the signal. If the signal is not fired, execution continues after the timer and the signal subscription is canceled. + +
+ +The corresponding xml looks like this: + +```xml + + + + + + + + + + + + + + + + + + + PT10M + + + + + + + + + + + + + + + + +``` + + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:executionListener +
Constraints + The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore is set to true +
+ + +## Additional Resources + +* [Event-based Gateways](http://operaton.org/bpmn/reference.html#gateways-event-based-gateways) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/exclusive-gateway.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/exclusive-gateway.md new file mode 100644 index 0000000..4ede68d --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/exclusive-gateway.md @@ -0,0 +1,78 @@ +--- + +title: 'Data-based Exclusive Gateway (XOR)' +sidebar_position: 10 + +menu: + main: + identifier: "bpmn-ref-gateways-xor" + parent: "bpmn-ref-gateways" + description: "Model decisions based on data." + +--- + + +An exclusive gateway (also called the XOR gateway or, in more technical terms, the exclusive data-based gateway), is used to model a decision in the process. When the execution arrives at this gateway, all outgoing sequence flows are evaluated in the order in which they have been defined. The sequence flow which condition evaluates to 'true' (or which doesn't have a condition set, conceptually having a 'true' value defined on the sequence flow) is selected for continuing the process. + +Note that only one sequence flow is selected when using the exclusive gateway. In case multiple sequence flow have a condition that evaluates to 'true', the first one defined in the XML is exclusively selected for continuing the process. + +If no sequence flow can be selected (no condition evaluates to 'true') this will result in a runtime exception, unless you have a default flow defined. One default flow can be set on the gateway itself in case no other condition matches - like an 'else' in programming languages. + + +
+ + +Note that a gateway without an icon inside it defaults to an exclusive gateway, even if we recommend to use the X within the gateway if your BPMN tool gives you that option. + +The XML representation of an exclusive gateway is straightforward: one line defining the gateway and condition expressions defined on the outgoing sequence flow. The default flow (optional) is set as attribute on the gateway itself. Note that the name of the flow (used in the diagram, meant for the human being) might be different than the formal expression (used in the engine). + + +```xml + + + + ${x == 1} + + + + ${x == 2} + + + + +``` + + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:executionListener +
Constraints + The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
+ + +## Additional Resources + +* [Conditional and Default Sequence Flows](../gateways/sequence-flow.md) +* [Exclusive Gateways](http://operaton.org/bpmn/reference.html#gateways-data-based-exclusive-gateways) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/inclusive-gateway.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/inclusive-gateway.md new file mode 100644 index 0000000..1c3c250 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/inclusive-gateway.md @@ -0,0 +1,166 @@ +--- + +title: 'Inclusive Gateway' +sidebar_position: 40 + +menu: + main: + identifier: "bpmn-ref-gateways-inclusive" + parent: "bpmn-ref-gateways" + description: "Model conditional fork / join concurrency." + +--- + + +The Inclusive Gateway can be seen as a combination of an exclusive and a parallel gateway. Like an exclusive gateway, you can define conditions on outgoing sequence flows and the inclusive gateway will evaluate them. However, the main difference is that the inclusive gateway can receive more than one sequence flow, like a parallel gateway. + +The functionality of the inclusive gateway is based on the incoming and outgoing sequence flows: + +* __fork__: all outgoing sequence flow conditions are evaluated and for the sequence flow conditions that evaluate to 'true', the flows are followed in parallel, creating one concurrent execution for each sequence flow. +* __join__: all concurrent executions arriving at the inclusive gateway wait at the gateway until an execution has arrived for each of the incoming sequence flows that have a process token. This is an important difference to the parallel gateway. So in other words, the inclusive gateway will only wait for the incoming sequence flows that are executed. After the join, the process continues past the joining inclusive gateway. + +Note that an inclusive gateway can have both _fork_ and _join_ behavior, if there are multiple incoming and outgoing sequence flows for the same inclusive gateway. In that case, the gateway will first join all incoming sequence flows that have a process token, before splitting into multiple concurrent paths of executions for the outgoing sequence flows that have a condition that evaluates to 'true'. + +
+ +Defining an inclusive gateway needs one line of XML: + +```xml + +``` + +The actual behavior (fork, join or both) is defined by the sequence flows connected to the inclusive gateway. For example, the model above comes down to the following XML: + +```xml + + + + + +${paymentReceived == false} + + +${shipOrder == true} + + + + + + + + + + + + + + + +``` + +In the above example, after the process is started, two tasks are created if the process variables paymentReceived == false and shipOrder == true. In case only one of these conditions evaluates to true, only one task will be created. If no condition evaluates to true, an exception is thrown. This can be prevented by specifying a default outgoing sequence flow. In the following example one task will be created, the ship order task: + +```java +HashMap variableMap = new HashMap(); +variableMap.put("receivedPayment", true); +variableMap.put("shipOrder", true); + +ProcessInstance pi = runtimeService.startProcessInstanceByKey("forkJoin"); + +TaskQuery query = taskService.createTaskQuery() + .processInstanceId(pi.getId()) + .orderByTaskName() + .asc(); + +List tasks = query.list(); +assertEquals(1, tasks.size()); + +Task task = tasks.get(0); +assertEquals("Ship Order", task.getName()); +``` + +When this task is completed, the second inclusive gateway joins the two executions and, since there is only one outgoing sequence flow, no concurrent paths of execution are created and only the Archive Order task is active. + +Note that an inclusive gateway does not need to be 'balanced' (i.e., a matching number of incoming/outgoing sequence flows for corresponding inclusive gateways). An inclusive gateway will simply wait for all incoming sequence flows and create a concurrent path of execution for each outgoing sequence flow, not influenced by other constructs in the process model. + + +## Operaton-specific behavior + +Note that in Operaton's implementation of the inclusive gateway, the following holds: + +* If the join waits for a token, but that token takes a different turn in the process + so that it can no longer reach the join (e.g. because of a boundary event interrupting + the flow), then the join will not trigger. +* The join will trigger when: + * it received a number of tokens greater or equal to the number of incoming sequence + flows. The tokens do not necessarily need to reach the gateway through different + sequence flows. + * it received a number of tokens smaller than the number of incoming sequence flows + and there are no more tokens that can arrive at the gateway. + +The following examples show under which conditions an inclusive gateway will trigger a join: + +1. In the following scenario, `Parallel Gateway 1` creates three execution tokens, but + only two sequence flows join in the inclusive gateway. In this scenario, the inclusive + gateway **will trigger** even with only two tokens since the tokens from `Task 1` and `Task 2` + were joined in a single token by `Parallel Gateway 2`. +
+ +1. In this scenario, `Parallel Gateway 1` creates two execution tokens, and + three sequence flows join in the inclusive gateway. In this scenario, the inclusive + gateway **will trigger** with three tokens since `Parallel Gateway 2` splits the single + token from `Task 1` into two separate tokens for `Task 3` and `Task 4`. +
+ +1. In the diagram below, the parallel gateway creates two execution tokens. The first + execution token will wait at `User Task 1`, and the second will reach the + `Inclusive Gateway`. The `Inclusive Gateway` will trigger immediately for the first token, + and a second time, for the second token, as both tokens arrive on the same sequence flow. + As a result, there will be two instances of `User Task 2` that will need to be completed. +
+ +1. In the last scenario, the parallel gateway creates two execution tokens. The first + execution token will wait at `User Task 1`, and the second will reach the + `Inclusive Gateway 2` and wait for the gateway to trigger. However, the + `Inclusive Gateway 2` **will not trigger** a join until `User Task 1` is completed and + the second token arrives at the gateway. As a result, the `Inclusive Gateway 2` will trigger + only once instead of two times. According to the BPMN 2.0 specification, since both tokens pass + the same sequence flow (true), the inclusive gateway should trigger twice. Finally, due to this + behavior, only one instance of `User Task 2` will need to be completed instead of the expected two. + In cases like this one, it is recommended to use an [`Exclusive Gateway`](../gateways/exclusive-gateway.md) + instead of the `Inclusive Gateway 1`. +
+ +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:executionListener +
Constraints + The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
+ + +## Additional Resources + +* [Inclusive Gateways](http://operaton.org/bpmn/reference.html#gateways-data-based-inclusive-gateways) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) +* [Conditional and Default Sequence Flows](../gateways/sequence-flow.md) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/index.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/index.md new file mode 100644 index 0000000..410d231 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/index.md @@ -0,0 +1,8 @@ +--- + +title: 'Gateways' +sidebar_position: 20 + +--- + +Gateways control token flow in a process. They allow modeling _decisions_ based on data and events as well as fork / join _concurrency_. diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/parallel-gateway.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/parallel-gateway.md new file mode 100644 index 0000000..c9a2dba --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/parallel-gateway.md @@ -0,0 +1,121 @@ +--- + +title: 'Parallel Gateway' +sidebar_position: 30 + +menu: + main: + identifier: "bpmn-ref-gateways-parallel" + parent: "bpmn-ref-gateways" + description: "Model fork / join concurrency." + +--- + + +Gateways can also be used to model concurrency in a process. The most straightforward gateway to introduce concurrency in a process model is the Parallel Gateway, which allows forking into multiple paths of execution or joining multiple incoming paths of execution. + +
+ +The functionality of the parallel gateway is based on the incoming and outgoing sequence flow(s): + +* fork: all outgoing sequence flows are followed in parallel, creating one concurrent execution for each sequence flow. +* join: all concurrent executions arriving at the parallel gateway wait at the gateway until an execution has arrived for each of the incoming sequence flows. Then the process continues past the joining gateway. + +:::note[Limitation] + Note that in Operaton's implementation of the parallel gateway, the gateway triggers as soon as the following holds: The number of arrived tokens is equal to the number of incoming sequence flows. It is not required that a token arrives on *every* incoming flow. +::: + +Note that a parallel gateway can have both fork and join behaviors, if there are multiple incoming and outgoing sequence flows for the same parallel gateway. In that case, the gateway will first join all incoming sequence flows, before splitting into multiple concurrent paths of executions. + +An important difference with other gateway types is that the parallel gateway does not evaluate conditions. If conditions are defined on the sequence flow connected with the parallel gateway, they are simply ignored. + +Defining a parallel gateway needs one line of XML: + +```xml + +``` + +The actual behavior (fork, join or both), is defined by the sequence flow connected to the parallel gateway. + +For example, the model above comes down to the following XML: + +```xml + + + + + + + + + + + + + + + + + + + + +``` + +In the above example, after the process is started, two tasks are created: + +```java +ProcessInstance pi = runtimeService.startProcessInstanceByKey("forkJoin"); +TaskQuery query = taskService.createTaskQuery() + .processInstanceId(pi.getId()) + .orderByTaskName() + .asc(); + +List tasks = query.list(); +assertEquals(2, tasks.size()); + +Task task1 = tasks.get(0); +assertEquals("Receive Payment", task1.getName()); +Task task2 = tasks.get(1); +assertEquals("Ship Order", task2.getName()); +``` + +When these two tasks are completed, the second parallel gateway joins the two executions and, as there is only one outgoing sequence flow, no concurrent paths of execution are created and only the Archive Order task is active. + +Note that a parallel gateway does not need to be 'balanced' (i.e., a matching number of incoming/outgoing sequence flows for corresponding parallel gateways). A parallel gateway will simply wait for all incoming sequence flows and create a concurrent path of execution for each outgoing sequence flow, not influenced by other constructs in the process model. So, the following process is legal in BPMN 2.0: + +
+ + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:executionListener +
Constraints + The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
+ + +## Additional Resources + +* [Parallel Gateways](http://operaton.org/bpmn/reference.html#gateways-parallel-gateways) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/sequence-flow.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/sequence-flow.md new file mode 100644 index 0000000..5f66c74 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/gateways/sequence-flow.md @@ -0,0 +1,135 @@ +--- + +title: 'Conditional and Default Sequence Flows' +sidebar_position: 20 + +menu: + main: + identifier: "bpmn-ref-gateways-sequence-flow" + parent: "bpmn-ref-gateways" + description: "Concurrency and decisions without Gateways." + +--- + + +A sequence flow is the connector between two elements of a process. After an element is visited during process execution, all outgoing sequence flows are followed. This means that the default nature of BPMN 2.0 is to be parallel: two outgoing sequence flows will create two separate, parallel paths of execution. + +
+ +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes
Extension Elements + operaton:executionListener +
Constraints
+ + +## Conditional Sequence Flow + +A sequence flow can have a condition defined on it. When a BPMN 2.0 activity is left, the default behavior is to evaluate the conditions on the outgoing sequence flows. When a condition evaluates to 'true', that outgoing sequence flow is selected. When multiple sequence flows are selected that way, multiple executions will be generated and the process is continued in a parallel way. Note: This is different for gateways. Gateways will handle sequence flows with conditions in specific ways, depending on the gateway type. + +
+ +A conditional sequence flow is represented in XML as a regular sequence flow, containing a conditionExpression sub-element. Note that at the moment only tFormalExpressions are supported. Omitting the xsi:type="" definition will simply default to this type of expression. + +```xml + + + 100 && order.price < 250}]]> + + +``` + +Currently, conditionalExpressions can be used with UEL and scripts. The expression or script used +should resolve to a boolean value, otherwise an exception is thrown while evaluating the condition. + +The example below references data of a process variable, in the typical JavaBean style through getters. + +```xml + + 100 && order.price < 250}]]> + +``` + +This example invokes a method that resolves to a boolean value. + +```xml + + + +``` + +In this example a simple groovy script is used to evaluate a process variable `status`. + +```xml + + + +``` + +Similar to a script task, an external script resource can also be specified (see the documentation +on [script source](../../../user-guide/process-engine/scripting.md#script-source) for more information). + +```xml + +``` + + +## Extensions for conditionExpression + + + + + + + + + + + + + + +
Attributes + operaton:resource +
Extension Elements
Constraints
+ + + +## Default Sequence Flow + +All BPMN 2.0 tasks and gateways can have a default sequence flow. This sequence flow is only selected as the outgoing sequence flow for that activity if none of the other sequence flows could be selected. Conditions on a default sequence flow are always ignored. + +A default sequence flow for a certain activity is defined by the default attribute on that activity. The following example shows an exclusive gateway with a default sequence flow. Only when x is neither 1 nor 2 it will be selected as outgoing sequence flow for the gateway. + +
+ +Note the 'slash' marker at the beginning of the default sequence flow. The corresponding XML snippet shows how flow4 is configured as a default sequence flow. + +```xml + + + + ${x == 1} + + + + ${x == 2} + + + + +``` diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/index.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/index.md new file mode 100644 index 0000000..c185c6d --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/index.md @@ -0,0 +1,486 @@ +--- + +title: 'BPMN 2.0' +sidebar_position: 20 + +--- + +This page gives you an overview of the BPMN 2.0 elements and the current coverage of the process engine. + +:::note[BPMN - Business Process Model and Notation] +If you are unfamiliar with BPMN 2.0, you might want to check out the +BPMN Tutorial first. +::: + +## Coverage + +The elements marked in orange are supported. + +### Symbols + + +
+ +
+
+

Participants

+
+
+ ![Pool Symbol](../../../assets/documentation/reference/bpmn20/pool.svg) +
+
+ ![Lane Symbol](../../../assets/documentation/reference/bpmn20/lane.svg) +
+
+
+
+ +
+

Subprocesses

+
+
+ ![Subprocess Symbol](../../../assets/documentation/reference/bpmn20/subprocess.svg) + + + +
+
+ ![CallActivity Symbol](../../../assets/documentation/reference/bpmn20/call_activity.svg) + + + +
+
+ ![Event Subprocess Symbol](../../../assets/documentation/reference/bpmn20/event_subprocess.svg) + + + +
+
+ ![Transaction Symbol](../../../assets/documentation/reference/bpmn20/transaction.svg) + + + +
+
+
+ + +
+

Tasks

+
+ +
+ ![ServiceTask Symbol](../../../assets/documentation/reference/bpmn20/service_task.svg) + + + +
+
+ ![UserTask Symbol](../../../assets/documentation/reference/bpmn20/user_task.svg) + + + +
+
+ ![ScriptTask Symbol](../../../assets/documentation/reference/bpmn20/script_task.svg) + + + +
+
+ ![Business Rule Task Symbol](../../../assets/documentation/reference/bpmn20/business_rule_task.svg) + + + +
+
+ ![Manual Task Symbol](../../../assets/documentation/reference/bpmn20/manual_task.svg) + + + +
+
+ ![Receive Task Symbol](../../../assets/documentation/reference/bpmn20/receive_task.svg) + + + +
+
+ ![Undefined Task Symbol](../../../assets/documentation/reference/bpmn20/undefined_task.svg) +
+
+ ![Send Task Symbol](../../../assets/documentation/reference/bpmn20/send_task.svg) + + + +
+
+ ![Instantiated Receive Task Symbol](../../../assets/documentation/reference/bpmn20/instantiated_receive_task.svg) +
+
+
+ +
+
+

Gateways

+
+
+ ![XOR Gateway Symbol](../../../assets/documentation/reference/bpmn20/xor_gateway.svg) + + + +
+
+ ![OR Gateway Symbol](../../../assets/documentation/reference/bpmn20/or_gateway.svg) + + + +
+
+ ![AND Gateway Symbol](../../../assets/documentation/reference/bpmn20/and_gateway.svg) + + + +
+
+ ![Event Gateway Symbol](../../../assets/documentation/reference/bpmn20/event_gateway.svg) + + + +
+
+ ![Complex Gateway Symbol](../../../assets/documentation/reference/bpmn20/complex_gateway.svg) +
+
+
+
+

Data

+
+ ![Data Object Symbol](../../../assets/documentation/reference/bpmn20/data_object.svg) +
+
+ ![Data Store Symbol](../../../assets/documentation/reference/bpmn20/data_store.svg) +
+
+
+

Artifacts

+
+ ![Text Annotation Symbol](../../../assets/documentation/reference/bpmn20/text_annotation.svg) +
+
+ ![Group Symbol](../../../assets/documentation/reference/bpmn20/group_symbol.svg) +
+
+
+
+ +### Events + +In BPMN there are start events, intermediate events and end events. These three event types can be catching events or throwing events. Intermediate events can be used as boundary events on tasks, in which case they can be interrupting or non-interrupting. This gives you a lot of flexibility to use events in your processes. + +:::note[Understanding BPMN Events] +To help understand the principle behavior of events in BPMN, we recommend to check the +[Events: Basic Concepts](http://operaton.org/bpmn/reference.html#events-basic-concepts) +chapter of the [BPMN Modeling Reference](http://operaton.org/bpmn/reference.html). +::: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeStartIntermediateEnd
NormalEvent Subprocess + Event Subprocess
+ non-interrupt +
catchboundary + boundary
+ non-interrupt +
throw
None + ![Non Start Event Symbol](../../../assets/documentation/reference/bpmn20/none_start_event.svg) + + ![Non Intermediate Event Symbol](../../../assets/documentation/reference/bpmn20/none_intermediate_event.svg) + + ![Non End Event Symbol](../../../assets/documentation/reference/bpmn20/none_end_event.svg) +
Message + ![Message Start Event Symbol](../../../assets/documentation/reference/bpmn20/message_start_event.svg) + + ![Message Start Event Symbol](../../../assets/documentation/reference/bpmn20/message_start_event.svg) + + ![Event Subprocess Message Start Event non-interrupting Symbol](../../../assets/documentation/reference/bpmn20/event_subprocess_message_non_interrupting.svg) + + ![Message Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/message_intermediate_catch_event.svg) + + ![Message Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/message_intermediate_catch_event.svg) + + ![Message Intermediate Non Interrupting Catch Event Symbol](../../../assets/documentation/reference/bpmn20/message_intermediate_non_interrupting_catch_event.svg) + + ![Message Intermediate Throw Event Symbol](../../../assets/documentation/reference/bpmn20/message_intermediate_throw_event.svg) + + ![Message Throw End Event Symbol](../../../assets/documentation/reference/bpmn20/message_throw_end_event.svg) +
Timer + ![Timer Start Event Symbol](../../../assets/documentation/reference/bpmn20/timer_start_event.svg) + + ![Event Subprocess Timer Start Event Symbol](../../../assets/documentation/reference/bpmn20/timer_start_event.svg) + + ![Event Subprocess Timer Start Event Non Interrupting Symbol](../../../assets/documentation/reference/bpmn20/event_subprocess_timer_non_interrupting.svg) + + ![Timer Intermediate Interrupting Event Symbol](../../../assets/documentation/reference/bpmn20/timer_intermediate_event.svg) + + ![Timer Intermediate Interrupting Event Symbol](../../../assets/documentation/reference/bpmn20/timer_intermediate_event.svg) + + ![Timer Intermediate None Interrupting Event Symbol](../../../assets/documentation/reference/bpmn20/timer_intermediate_none_interrupting_event.svg) +
Conditional + ![Conditional Start Event Symbol](../../../assets/documentation/reference/bpmn20/conditional_start_event.svg) + + ![Conditional Start Event Symbol](../../../assets/documentation/reference/bpmn20/conditional_start_event.svg) + + ![Conditional Event Subprocess Non Interrupting Start Event Symbol](../../../assets/documentation/reference/bpmn20/event_subprocess_conditional_non_interrupting.svg) + + ![Conditional Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg) + + ![Conditional Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg) + + ![Conditional Intermediate Non Interrupting Event Symbol](../../../assets/documentation/reference/bpmn20/conditional_intermediate_non_interrupting_event.svg) +
Link + ![Link Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/link_intermediate_catch_event.svg) + + ![Link Intermediate Throw Event Symbol](../../../assets/documentation/reference/bpmn20/link_intermediate_throw_event.svg) +
Signal + ![Signal Event Symbol](../../../assets/documentation/reference/bpmn20/signal_start_event.svg) + + ![Signal Event Symbol](../../../assets/documentation/reference/bpmn20/signal_start_event.svg) + + ![Event Subprocess Signal Non Interrupting Start Event Symbol](../../../assets/documentation/reference/bpmn20/event_subprocess_signal_non_interrupting_start_event.svg) + + ![Signal Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/signal_intermediate_catch_event.svg) + + ![Signal Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/signal_intermediate_catch_event.svg) + + ![Signal Intermediate Non Interrupting Catch Event Symbol](../../../assets/documentation/reference/bpmn20/signal_intermediate_non_interrupting_catch_event.svg) + + ![Signal Intermediate Throw Event Symbol](../../../assets/documentation/reference/bpmn20/signal_intermediate_throw_event.svg) + + ![Signal Throw End Event Symbol](../../../assets/documentation/reference/bpmn20/signal_throw_end_event.svg) +
Error + ![Error EventSubprocess StartEvent Symbol](../../../assets/documentation/reference/bpmn20/error_event_subprocess_start_event.svg) + + ![Error Boundary Catch Event Symbol](../../../assets/documentation/reference/bpmn20/error_boundary_catch_event.svg) + + ![Error Throw End Event Symbol](../../../assets/documentation/reference/bpmn20/error_throw_end_event.svg) +
Escalation + ![Escalation Event Subprocess Start Event Symbol](../../../assets/documentation/reference/bpmn20/escalation_event_subprocess_start_event.svg) + + ![Escalation Event Subprocess Non Interrupting Start Event Symbol](../../../assets/documentation/reference/bpmn20/escalation_event_subprocess_non_interrupting_start_event.svg) + + ![Escalation Boundary Catch Event Symbol](../../../assets/documentation/reference/bpmn20/escalation_boundary_catch_event.svg) + + ![Escalation Boundary Catch Non Interrupting Event Symbol](../../../assets/documentation/reference/bpmn20/escalation_boundary_catch_non_interrupting_event.svg) + + ![Escalation Intermediate Throw Event Symbol](../../../assets/documentation/reference/bpmn20/escalation_intermediate_throw_event.svg) + + ![Escalation Throw End Event Symbol](../../../assets/documentation/reference/bpmn20/escalation_throw_end_event.svg) +
Termination + ![Termination End Event Symbol](../../../assets/documentation/reference/bpmn20/termination_end_event.svg) +
Compensation + ![Compensation Event Subprocess Startevent Symbol](../../../assets/documentation/reference/bpmn20/compensation_event_subprocess_start_event.svg) + + ![Compensation Boundary Interrupting Event Symbol](../../../assets/documentation/reference/bpmn20/compensation_boundary_event.svg) + + ![Compensation Intermediate Throw Event Symbol](../../../assets/documentation/reference/bpmn20/compensation_intermediate_throw_event.svg) + + ![Compensation End Event Symbol](../../../assets/documentation/reference/bpmn20/compensation_end_event.svg) +
Cancel + ![Cancel Boundary Symbol](../../../assets/documentation/reference/bpmn20/cancel_boundary_event.svg) + + ![Cancel End Event Symbol](../../../assets/documentation/reference/bpmn20/cancel_end_event.svg) +
Multiple + ![Multiple Start Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_start_event.svg) + + ![Multiple Start Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_start_event.svg) + + ![Multiple Event Subprocess Non Interrupting Start Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_event_subprocess_non_interrupting_start_event.svg) + + ![Multiple Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg) + + ![Multiple Intermediate Catch Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg) + + ![Multiple Boundary Non Interrupting Catch Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_boundary_non_interrupting_event.svg) + + ![Multiple Intermediate Throw Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_intermediate_throw_event.svg) + + ![Multiple End Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_end_event.svg) +
Multiple Parallel + ![Multiple Parallel Start Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_parallel_start_event.svg) + + ![Multiple Parallel Start Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_parallel_start_event.svg) + + ![Multiple Parallel Start Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_parallel_non_interrupting_start_event.svg) + + ![Multiple Parallel Catch Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_parallel_catch_event.svg) + + ![Multiple Parallel Catch Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_parallel_catch_event.svg) + + ![Multiple Parallel Intermediate Non Interrupting Event Symbol](../../../assets/documentation/reference/bpmn20/multiple_parallel_intermediate_non_interrupting_event.svg) +
\ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/business-transaction.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/business-transaction.bpmn new file mode 100644 index 0000000..da97bfe --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/business-transaction.bpmn @@ -0,0 +1,271 @@ + + + + + + + + + + sid-ED80E55F-AE15-4BFD-9C52-062FEBB13A83 + + + + + + + sid-ED80E55F-AE15-4BFD-9C52-062FEBB13A83 + sid-60E08C65-55A3-4C89-BF10-51C31B7A9740 + + + + + + sid-900712ED-2DD8-4B72-9335-DE40ADFDA937 + + + + + + + + + + + + + + + + sid-900712ED-2DD8-4B72-9335-DE40ADFDA937 + sid-C2EFAAD4-287A-40DD-858D-BD4109ACC689 + + + + + + + + + + + + + + + + sid-C2EFAAD4-287A-40DD-858D-BD4109ACC689 + sid-0CD0557D-AC74-4FDE-A64E-0C7357A76149 + + + + + + + sid-0CD0557D-AC74-4FDE-A64E-0C7357A76149 + + + sid-6046D311-2346-40C7-8522-B5071B2967E0 + + + + + + + + + + + + + + + + + + + + + + + + + + sid-6046D311-2346-40C7-8522-B5071B2967E0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sid-60E08C65-55A3-4C89-BF10-51C31B7A9740 + + + sid-69B5A73E-95E0-4CEE-BDE4-FCCF0B186AD3 + + + + + + + + sid-69B5A73E-95E0-4CEE-BDE4-FCCF0B186AD3 + + + sid-FA20087A-1375-4F59-B41E-EDF931ED720A + + + + + + + + sid-FA20087A-1375-4F59-B41E-EDF931ED720A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/call-activity.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/call-activity.bpmn new file mode 100644 index 0000000..f7e2830 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/call-activity.bpmn @@ -0,0 +1,62 @@ + + + + + SequenceFlow_3 + + + SequenceFlow_1 + + + + SequenceFlow_1 + SequenceFlow_2 + + + + SequenceFlow_2 + SequenceFlow_3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative1.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative1.bpmn new file mode 100644 index 0000000..f3ec4e3 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative1.bpmn @@ -0,0 +1,252 @@ + + + + + SequenceFlow_1 + SequenceFlow_12 + + SequenceFlow_2 + + + SequenceFlow_2 + SequenceFlow_3 + SequenceFlow_4 + + + + + + SequenceFlow_3 + SequenceFlow_11 + + + SequenceFlow_4 + SequenceFlow_6 + + + SequenceFlow_6 + SequenceFlow_7 + SequenceFlow_8 + + + + SequenceFlow_7 + + + + SequenceFlow_8 + + + + + + SequenceFlow_10 + + + SequenceFlow_9 + SequenceFlow_10 + + + + SequenceFlow_9 + + + + + + + SequenceFlow_11 + + + + + SequenceFlow_1 + + + + SequenceFlow_12 + + + The error is completely handled by the subprocess. + + + + The task still has access to all variables of the failed subprocess + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative2.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative2.bpmn new file mode 100644 index 0000000..a92d56d --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative2.bpmn @@ -0,0 +1,248 @@ + + + + + SequenceFlow_1 + SequenceFlow_12 + + SequenceFlow_2 + + + SequenceFlow_2 + SequenceFlow_3 + SequenceFlow_4 + + + + + + SequenceFlow_3 + SequenceFlow_11 + + + SequenceFlow_4 + SequenceFlow_6 + + + SequenceFlow_6 + SequenceFlow_7 + SequenceFlow_8 + + + + SequenceFlow_7 + + + + SequenceFlow_8 + + + + + + SequenceFlow_11 + + + + + SequenceFlow_5 + + + + + SequenceFlow_1 + + + + SequenceFlow_5 + SequenceFlow_13 + + + + SequenceFlow_13 + + + SequenceFlow_12 + + + The error is handled by the parent process, the subprocess can be left using different sequence flows + + + + Variables of the subprocess are not available anymore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess.bpmn new file mode 100644 index 0000000..0f13d2f --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess.bpmn @@ -0,0 +1,133 @@ + + + + + SequenceFlow_1 + SequenceFlow_2 + + + SequenceFlow_1 + + + + + SequenceFlow_2 + SequenceFlow_3 + SequenceFlow_4 + + + + + SequenceFlow_3 + + + + SequenceFlow_4 + + + + + SequenceFlow_5 + + + + + SequenceFlow_6 + + + SequenceFlow_5 + SequenceFlow_6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/subprocess.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/subprocess.bpmn new file mode 100644 index 0000000..c29142d --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/subprocess.bpmn @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + sid-BE7CBA96-330F-40C2-BCE2-38E3E7788384 + sid-1C058DBB-1F66-4E24-8B3C-92ECFD88B098 + sid-0BA73B1B-4D9C-4804-A984-B743D46BFBD3 + sid-2E2072E9-39FE-4D2E-AB3D-9184382BF5DC + + + + + + + + sid-398D7D5F-7A2F-4AAF-9C25-6F37834A1B37 + + + + + + + + + + + + + + + + sid-398D7D5F-7A2F-4AAF-9C25-6F37834A1B37 + sid-10C45F4A-7F57-4688-BC96-E82F3232C982 + + + + + + + sid-10C45F4A-7F57-4688-BC96-E82F3232C982 + sid-95D08CBA-CE52-4DD8-81F5-E24DB6A5654C + + + + + + + sid-95D08CBA-CE52-4DD8-81F5-E24DB6A5654C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_attached.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_attached.bpmn new file mode 100644 index 0000000..89f293d --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_attached.bpmn @@ -0,0 +1,233 @@ + + + + + + + + + sid-48F2CDF8-15AA-409C-9FFF-F7E1DC71A68F + + + + + + + sid-48F2CDF8-15AA-409C-9FFF-F7E1DC71A68F + sid-F2E4324B-AB45-4B00-BF2D-542F5B69FE1E + + + + + + + + + + + + + + + sid-46D6E6F7-B7A7-4725-BAAC-610254C35E31 + sid-D5DA07C4-5B1D-49D4-AC3B-90B5BB543EE4 + + + + + + + sid-46D6E6F7-B7A7-4725-BAAC-610254C35E31 + + + + + + + + + + + + + + + + sid-D5DA07C4-5B1D-49D4-AC3B-90B5BB543EE4 + sid-0EA229EC-6D6F-4AF6-964A-DA63BF02789E + + + + + + + sid-0EA229EC-6D6F-4AF6-964A-DA63BF02789E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sid-F2E4324B-AB45-4B00-BF2D-542F5B69FE1E + sid-BC2CC9EB-BED8-42AC-A8AC-D390F2BFE855 + sid-EADB8798-6D60-4FBC-86F8-490AEA2B80C6 + + + + + + + + + + + + + + + + sid-19B29333-6427-4F75-8FC8-108778B3985C + sid-BC2CC9EB-BED8-42AC-A8AC-D390F2BFE855 + + + sid-19B29333-6427-4F75-8FC8-108778B3985C + + + + + + + + sid-EADB8798-6D60-4FBC-86F8-490AEA2B80C6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_event.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_event.bpmn new file mode 100644 index 0000000..4662f05 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_event.bpmn @@ -0,0 +1,352 @@ + + + + + + + + + + sid-5ED25434-8F00-4E49-9CCD-2FA31E7902F9 + + + + + + + + + + + + + + + + sid-5ED25434-8F00-4E49-9CCD-2FA31E7902F9 + sid-10658C54-5B9B-422E-910B-99974DEC4A42 + + + + + + + sid-10658C54-5B9B-422E-910B-99974DEC4A42 + sid-13E51C31-39C9-47A9-8205-C5A05F0AAE23 + + + + + + + + + + + sid-1AB456AD-78A0-46F6-A8B6-FD2EB40D93D2 + + + + + + + + + + + + + + + + + sid-1AB456AD-78A0-46F6-A8B6-FD2EB40D93D2 + sid-E7121654-6AA6-4CE8-8E7E-F8D12B53330A + + + + + + + sid-E7121654-6AA6-4CE8-8E7E-F8D12B53330A + + + + + + + + + + + + + + + + + + + + + + + sid-319A5E79-B4DF-4D1F-82C0-01F81D4FA20B + + + + + + + + + + + + + + + + + sid-319A5E79-B4DF-4D1F-82C0-01F81D4FA20B + sid-768399AF-F338-4D43-B684-F075D4FEC520 + + + + + + + sid-768399AF-F338-4D43-B684-F075D4FEC520 + + + + + + + + + + + + + + + + + + sid-BCD27077-F592-40E1-BCC0-7C2F085CAEC6 + + + + + + + + + + + + + + + + sid-BCD27077-F592-40E1-BCC0-7C2F085CAEC6 + sid-7F603E69-E723-4211-8E8F-A266758D925C + + + + + + + + + + + + + + + + sid-7F603E69-E723-4211-8E8F-A266758D925C + sid-189DEDCB-DD37-4B9F-A8E9-91A16E3504CF + + + + + + + sid-189DEDCB-DD37-4B9F-A8E9-91A16E3504CF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sid-13E51C31-39C9-47A9-8205-C5A05F0AAE23 + sid-0BE2C10C-C399-455D-9932-EFC5A8817BF3 + + + + + + + sid-0BE2C10C-C399-455D-9932-EFC5A8817BF3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_expanded.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_expanded.bpmn new file mode 100644 index 0000000..4514f09 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_expanded.bpmn @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + sid-89B96C33-6DD4-4415-8B67-3E368E09CE52 + sid-07FF1804-CCF8-429C-AFE3-35787D4B5229 + sid-BBD21B9E-1A9C-4A5D-94A5-BC20B01AE66B + sid-6168214D-0EC6-4F8F-B156-925421E1E2B0 + + + + + + + + sid-68EEF41D-C7BE-451F-95B9-73E4ACBC7F4B + + + + + + + sid-9C3EDA94-5429-4D87-AC04-9239B6C76A50 + + + + + + + + + + + + + + + + sid-68EEF41D-C7BE-451F-95B9-73E4ACBC7F4B + sid-23E3791B-4E63-44C1-AE10-4BFD239D04FA + + + + + + + sid-23E3791B-4E63-44C1-AE10-4BFD239D04FA + sid-9C3EDA94-5429-4D87-AC04-9239B6C76A50 + + + + + + + + + + + + + + + sid-16EA8872-5272-42A2-84FA-1850A4D7FE86 + sid-783D77EA-CC58-496C-8DF1-3D9021AFA3CB + + + + + + + + + + + + + + + + sid-783D77EA-CC58-496C-8DF1-3D9021AFA3CB + sid-58650A09-E9EA-4530-936D-D474FE309325 + + + + + + + sid-16EA8872-5272-42A2-84FA-1850A4D7FE86 + + + + + + + sid-58650A09-E9EA-4530-936D-D474FE309325 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/call-activity.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/call-activity.md new file mode 100644 index 0000000..80dc8ce --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/call-activity.md @@ -0,0 +1,405 @@ +--- + +title: 'Call Activity' +sidebar_position: 20 + +menu: + main: + identifier: "bpmn-subprocess-call-activity" + parent: "bpmn-subprocess" + description: "Call a process from another process." + +--- + +BPMN 2.0 makes a distinction between an embedded subprocess and a call activity. From a conceptual point of view, both will call a subprocess when process execution arrives at the activity. + +The difference is that the call activity references a process that is external to the process definition, whereas the subprocess is embedded within the original process definition. The main use case for the call activity is to have a reusable process definition that can be called from multiple other process definitions. Although not yet part of the BPMN specification, it is also possible to call a CMMN case definition. + +When process execution arrives at the call activity, a new process instance is created, which is used to execute the subprocess, potentially creating parallel child executions as within a regular process. The main process instance waits until the subprocess is completely ended, and continues the original process afterwards. + +
+ +A call activity is visualized the same way as a collapsed embedded subprocess, however with a thick border. Depending on the modeling tool, a call activity can also be expanded, but the default visualization is the collapsed representation. + +A call activity is a regular activity that requires a calledElement which references a process definition by its key. In practice, this means that the id of the process is used in the calledElement: + +```xml + +``` + +Note that the process definition of the subprocess is resolved at runtime. This means that the subprocess can be deployed independently from the calling process, if needed. + + +## CalledElement Binding + +In a call activity the `calledElement` attribute contains the process definition key as reference to the subprocess. This means that the latest process definition version of the subprocess is always called. +To call another version of the subprocess it is possible to define the attributes `calledElementBinding`, `calledElementVersion`, and `calledElementVersionTag` in the call activity. These attributes are optional. + +CalledElementBinding has four different values: + +* latest: always call the latest process definition version (which is also the default behaviour if the attribute isn't defined) +* deployment: if called process definition is part of the same deployment as the calling process definition, use the version from deployment +* version: call a fixed version of the process definition, in this case `calledElementVersion` is required. The version number can either be specified in the BPMN XML or returned by an expression (see [custom extensions](../custom-extensions/extension-attributes.md#calledelementversion)) +* versionTag: call a fixed version tag of the process definition, in this case `calledElementVersionTag` is required. The version tag can either be specified in the BPMN XML or returned by an expression (see [custom extensions](../custom-extensions/extension-attributes.md#calledelementversiontag)) + +```xml + + +``` +or +```xml + + +``` + +## CalledElement Tenant Id + +When the call activity resolves the process definition to be called it must take multi tenancy into account. + +### Default Tenant Resolution +By default, the tenant id of the calling process definition is used to resolve the called process definition. +That is, if the calling process definition has no tenant id, then the call activity resolves a process definition using the provided key, binding and without a tenant id (tenant id = null). +If the calling process definition has a tenant id, a process definition with the provided key and the same tenant id is resolved. + +Note that the tenant id of the calling process instance is not taken into account in the default behavior. + +### Explicit Tenant Resolution + +In some situations it may be useful to override this default behavior and specify the tenant id explicitly. + +The `operaton:calledElementTenantId` attribute allows to explicitly specify a tenant id: + +```xml + + +``` + +If the tenant id is not known at design time, an expression can be used as well: + +```xml + + +``` + +An expression also allows using the tenant id of the calling process instance instead of the calling process definition: + +```xml + + +``` + + +## Passing Variables + +You can pass process variables to the subprocess and vice versa. The data is copied into the subprocess when it is started and copied back into the main process when it ends. + +```xml + + + + + + +``` + +By default, variables declared in `out` elements are set in the highest possible variable scope. + +Furthermore, you can configure the call activity so that all process variables are passed to the subprocess and vice versa. The process variables have the same name in the main process as in the subprocess. + +```xml + + + + + + +``` + +It is possible to use expressions here as well: + +```xml + + + + + + +``` + +So in the end `z = y+5 = x+5+5` holds. + +Source expressions are evaluated in the context of the called process instance. That means, in cases where calling and called process definitions belong to different process applications, context like Java classes, Spring or CDI beans is resolved from the process application the called process definition belongs to. + +### Variable Output on BPMN Error Event + +When a BPMN error event from a called process instance is caught in the calling process instance, the output variable mappings are executed as well. Depending on the BPMN models, this requires output parameters to tolerate `null` values for variables that do not exist in the called instance when the error is propagated. + +### Combination with Input/Output parameters + +Call activities can be combined with [Input/Output parameters](../../../user-guide/process-engine/variables.md#inputoutput-variable-mapping) as well. This allows for an even more flexible mapping of variables into the called process. In order to only map variables that are declared in the `inputOutput` mapping, the attribute `local` can be used. Consider the following XML: + +```xml + + + + + + + + + + + + + + + + +``` + +Setting `local="true"` means that all local variables of the execution executing the call activity are mapped into the called process instance. These are exactly the variables that are declared as input parameters. + +The same can be done with output parameters: + +```xml + + + + + + + + + + + + + + + + +``` + +When the called process instance ends, due to `local="true"` in the `operaton:out` parameter all variables are mapped to local variables of the execution executing the call activity. These variables can be mapped to process instance variables by using an output mapping. Any variable that is not declared by a `operaton:outputParameter` element will not be available anymore after the call activity ends. + + +### Delegation of Variable Mapping + +The mapping of input and output variables can also be delegated. This means the passing of input or/and output variables can be done in Java code. +For this the [Delegate Variable Mapping](../../../user-guide/process-engine/delegation-code.md#delegate-variable-mapping) interface must be implemented. + +There are two possible ways to use delegation for variable mapping. + +### Delegate Variable Mapping via Reference + +The first one is to set the Operaton extension property `variableMappingClass` and reference the implementation of the `DelegateVariableMapping` interface via the whole class name. + + +```xml + + + + + + + + + + + + + + + + + +``` + +### Delegate Variable Mapping via Expression + +The second one is to set the Operaton extension property `variableMappingDelegateExpression` with an expression. +This allows to specify an expression that resolves to an object implementing the `DelegateVariableMapping` interface. + +```xml + + + + + + + + + + + + + + + + + +``` +See [Delegate Variable Mapping](../../../user-guide/process-engine/delegation-code.md#delegate-variable-mapping) for further information of implementing the interface. + +## Passing Business Key + +You can pass the business key to the subprocess. The data is copied into the subprocess when it is started. You can not give back the business key to the parent process because the business key is not changeable. + +```xml + + + + + +``` + + +## Example + +The following process diagram shows a simple handling of an order. Since, for example, the billing could be common to many other processes, it is modeled as a call activity. + +
+ +The XML looks as follows: + +```xml + + + + + + + + + + +``` + +There is nothing special about the process definition of the subprocess. It could also be used without being called from another process. + +## Create a Case Instance + +A call activity can also be used to create a new CMMN case instance as a subordinate of the corresponding process instance. The call activity completes as soon as the created case instance reaches the state `COMPLETED` for the first time. In contrast to calling a BPMN process, the attribute `caseRef` instead of the attribute `calledElement` must be used to reference a case definition by its key. This means that the latest case definition version is always called. + +### Case Binding + +To call another version of a case definition it is possible to define the attributes `caseBinding` and `caseVersion` in the call activity. Both attributes are optional. + +CaseBinding has three different values: + +* latest: always call the latest case definition version (which is also the default behaviour if the attribute isn't defined) +* deployment: if called case definition is part of the same deployment as the calling process definition, use the version from deployment +* version: call a fixed version of the case definition, in this case `caseVersion` is required + +```xml + + +``` + +### Case Tenant Id + +The call activity must take multi tenancy into account when resolving the case definition to be called. + +The [default behavior](#default-tenant-resolution) is the same as when resolving BPMN Process Definitions (i.e., the tenant id of the calling process definition is used to resolve the called case definition.) + +In order to override the default behavior, the tenant id for resolving the called case definition can be specified explicitly using the `operaton:caseTenantId` attribute: + +```xml + + +``` + +If the tenant id is not known at design time, an expression can be used as well: + +```xml + + +``` + +An expression also allows using the tenant id of the calling process instance instead of the calling process definition: + +```xml + + +``` + +## Operaton Extensions + + + + + + + + + + + + + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:calledElementBinding, + operaton:calledElementVersion, + operaton:calledElementVersionTag, + operaton:calledElementTenantId, + operaton:caseBinding, + operaton:caseRef, + operaton:caseVersion, + operaton:caseTenantId, + operaton:exclusive, + operaton:jobPriority, + operaton:variableMappingClass, + operaton:variableMappingDelegateExpression +
Extension Elements + operaton:in, + operaton:out, + operaton:inputOutput, + operaton:failedJobRetryTimeCycle +
Constraints + The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
+ The attribute operaton:calledElementVersion should only be set if + the attribute operaton:calledElementBinding equals version +
+ The attribute calledElement cannot be used in combination + with the attribute operaton:caseRef and vice versa. +
+ The attribute operaton:caseVersion should only be set if + the attribute operaton:caseBinding equals version +
+ +## Additional Resources + +* [Call Activity](http://operaton.org/bpmn/reference.html#activities-call-activity) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/embedded-subprocess.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/embedded-subprocess.md new file mode 100644 index 0000000..7447116 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/embedded-subprocess.md @@ -0,0 +1,82 @@ +--- + +title: 'Embedded Subprocess' +sidebar_position: 10 + +menu: + main: + identifier: "bpmn-subprocess-embedded" + parent: "bpmn-subprocess" + description: "Group a set of flow nodes into a scope." + +--- + +A subprocess is an activity that contains other activities, gateways, events, etc., which itself forms a process that is part of a bigger process. A subprocess is completely defined inside a parent process (that's why it's often called an embedded Subprocess). + +Subprocesses have two major use cases: + +* Subprocesses allow hierarchical modeling. Many modeling tools allow that subprocesses can be collapsed, hiding all the details of the subprocess and displaying a high-level, end-to-end overview of the business process. +* A subprocess creates a new scope for events. Events that are thrown during execution of the subprocess can be caught by a boundary event on the boundary of the subprocess, thus creating a scope for that event, limited to the subprocess. + +Using a subprocess does impose some constraints: + +* A subprocess can only have one none start event, no other start event types are allowed. A subprocess must have at least one end event. Note that the BPMN 2.0 specification allows to omit the start and end events in a subprocess, but the current engine implementation does not support this. +* Sequence flows can not cross subprocess boundaries. + +A subprocess is visualized as a typical activity, i.e., a rounded rectangle. In case the subprocess is collapsed, only the name and a plus-sign are displayed, giving a high-level overview of the process: + +
+ +In case the subprocess is expanded, the steps of the subprocess are displayed within the subprocess boundaries: + +
+ +One of the main reasons to use a subprocess is to define a scope for an event. The following process model shows this: If we are spontaneously invited to dinner, we will cancel our cooking process. However, if we are already eating, we will not react to an invitation anymore. In more technical terms, the scope of the message event is the subprocess, so the message can only be received while the subprocess is active. + +
+ +A subprocess is defined by the subprocess element. All activities, gateways, events, etc. that are part of the subprocess need to be enclosed within this element. + +```xml + + + + + + + +``` + + +### Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:inputOutput +
Constraints + The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
+ + +### Additional Resources + +* [Subprocesses](http://operaton.org/bpmn/reference.html#activities-subprocess) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/event-subprocess.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/event-subprocess.md new file mode 100644 index 0000000..dad72e0 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/event-subprocess.md @@ -0,0 +1,104 @@ +--- + +title: 'Event Subprocess' +sidebar_position: 30 + +menu: + main: + identifier: "bpmn-subprocess-event-subprocess" + parent: "bpmn-subprocess" + description: "Event-driven subprocess." + +--- + +The event subprocess is a subprocess that is triggered by an event. An event subprocess can be added at the process level or at any subprocess level. The event used to trigger an event subprocess is configured using a start event. Therefore, none start events are not supported for event subprocesses. An event subprocess might be triggered using events like message events, error events, signal events, timer events, or compensation events. The subscription to the start event is created when the scope (process instance or subprocess) hosting the event subprocess is created. The subscription is removed when the scope is ended. + +An event subprocess may be interrupting or non-interrupting. An interrupting subprocess cancels any executions in the current scope. A non-interrupting event subprocess spawns a new concurrent execution. While an interrupting event subprocess can only be triggered once for each activation of the scope hosting it, a non-interrupting event subprocess can be triggered multiple times. Whether the subprocess is interrupting or non-interrupting is configured using the start event which triggers the event subprocess. + +An event subprocess may not have any incoming or outgoing sequence flows. As an event subprocess is triggered by an event, an incoming sequence flow makes no sense. When an event subprocess is ended, either the current scope is ended (in case of an interrupting event subprocess), or the concurrent execution spawned for the non-interrupting subprocess is ended. + +The event subprocess is visualized as an embedded subprocess with a dotted outline. + +
+ +It is represented using XML in the same way as an embedded subprocess. Additionally, the attribute triggeredByEvent must have the value `true`: + +```xml + + + +``` + +:::note +
    +
  • Event subprocesses triggered using an Error Start Event, Signal Start Event, Compensation Start Event, Timer Start Event and Message Start Event are supported.
  • +
+::: + + +## Example + +The following is an example of an event subprocess triggered using an Error Start Event. The event subprocess is located at the "process level", i.e., is scoped to the process instance: + +
+ +This is what the event subprocess looks like in XML: + +```xml + + + + + + + +``` + +As already stated, an event subprocess can also be added to an embedded subprocess. If it is added to an embedded subprocess, it becomes an alternative to a boundary event. Consider the two following process diagrams. In both cases the embedded subprocess throws an error event. Both times the error is caught and handled using a user task. + +
+ +as opposed to: + +
+ +In both cases the same tasks are executed. However, there are differences between both modeling options: + +* The embedded subprocess is executed using the same execution which executed the scope it is hosted in. This means that an embedded subprocess has access to the variables local to it's scope. When using a boundary event, the execution created for executing the embedded subprocess is deleted by the sequence flow leaving the boundary event. This means that the variables created by the embedded subprocess are not available anymore. +* When using an event subprocess, the event is completely handled by the subprocess it is added to. When using a boundary event, the event is handled by the parent process. + +These two differences can help you decide whether a boundary event or an embedded subprocess is better suited for solving a particular process modeling / implementation problem. + + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:inputOutput +
Constraints + The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
+ + +## Additional Resources + +* [Event subprocess](http://operaton.org/bpmn/reference.html#activities-event-subprocess) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/index.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/index.md new file mode 100644 index 0000000..d496d27 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/index.md @@ -0,0 +1,13 @@ +--- + +title: "Subprocess" +sidebar_position: 40 + +menu: + main: + identifier: "bpmn-subprocess" + parent: "bpmn-ref" + +--- + +A subprocess in Operaton allows modeling based on reusability and grouping. Below are the different types of subprocesses supported by Operaton. diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/transaction-subprocess.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/transaction-subprocess.md new file mode 100644 index 0000000..bf91984 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/subprocesses/transaction-subprocess.md @@ -0,0 +1,99 @@ +--- + +title: 'Transaction Subprocess' +sidebar_position: 40 + +menu: + main: + identifier: "bpmn-subprocess-transaction-subprocess" + parent: "bpmn-subprocess" + description: "Model Business Transactions." + +--- + + +A transaction subprocess is an embedded subprocess which can be used to group multiple activities to a transaction. A transaction is a logical unit of work which allows grouping of a set of individual activities, so that they either succeed or fail collectively. + +A transaction can have three possible outcomes: + +* A transaction is successful if it is neither canceled nor terminated by a hazard. If a transaction subprocess is successful, it is left using the outgoing sequenceflow(s). A successful transaction might be compensated if a compensation event is thrown later in the process.
+ + Note: just as "ordinary" embedded subprocesses, a transaction subprocess may be compensated after successful completion using an intermediate throwing compensation event. + +* A transaction is canceled if an execution reaches the cancel end event. In that case, all executions are terminated and removed. A single remaining execution is then set to the cancel boundary event, which triggers compensation. After compensation is completed, the transaction subprocess is left, using the outgoing sequence flow(s) of the cancel boundary event. + +* A transaction is ended by a hazard if an error event is thrown which is not caught within the scope of the transaction subprocess. (This also applies if the error is caught on the boundary of the transaction subprocess.) In this case, compensation is not performed. + +The following diagram illustrates the three different outcomes: + +
+ +A transaction subprocess is represented in xml using the transaction element: + +```xml + + + +``` + +:::note[Relation to ACID Transactions] +It is important not to confuse the BPMN transaction subprocess with technical (ACID) transactions. The BPMN transaction subprocess is not a way to scope technical transactions. To understand transaction management in Operaton, read the Transactions in Processes section of the User Guide. +::: + +A BPMN transaction differs from a technical transaction in the following ways: + +* While an ACID transaction is typically short lived, a BPMN transaction may take hours, days or even months to complete. (Consider a case where one of the activities grouped by a transaction is a usertask; typically, people have longer response times than applications. Or, in another situation, a BPMN transaction might wait for some business event to occur, like the fact that a particular order has been fulfilled.) Such operations usually take considerably longer to complete than updating a record in a database or storing a message using a transactional queue. + +* Because it is impossible to scope a technical transaction to the duration of a business activity, a BPMN transaction typically spans multiple ACID transactions. + +* Since a BPMN transaction spans multiple ACID transactions, we lose ACID properties. Consider the example given above. Let's assume the "book hotel" and the "charge credit card" operations are performed in separate ACID transactions. Let's also assume that the "book hotel" activity is successful. Now we have an intermediate inconsistent state because we have performed a hotel booking but have not yet charged the credit card. Now, in an ACID transaction, we would also perform different operations sequentially and therefore also have an intermediate inconsistent state. What is different here is that the inconsistent state is visible outside of the scope of the transaction. For example, if the reservations are made using an external booking service, other parties using the same booking service might already see that the hotel is booked. This means that when implementing business transactions, we completely lose the isolation property (granted, we usually also relax isolation when working with ACID transactions to allow for higher levels of concurrency, but there we have fine grained control and intermediate inconsistencies are only present for very short periods of time). + +* A BPMN business transaction can also not be rolled back in the traditional sense. As it spans multiple ACID transactions, some of these ACID transactions might already be committed at the time the BPMN transaction is canceled. At that point they cannot be rolled back anymore. + + +Since BPMN transactions are long-running in nature, the lack of isolation and a rollback mechanism needs to be dealt with differently. In practice there is usually no better solution than to deal with these problems in a domain specific way: + +* The rollback is performed using compensation. If a cancel event is thrown in the scope of a transaction, the effects of all activities that executed successfully and have a compensation handler are compensated. +* The lack of isolation is also often dealt with by using domain specific solutions. For instance, in the example above, a hotel room might appear to be booked to a second customer before we have actually made sure that the first customer can pay for it. Since this might be undesirable from a business perspective, a booking service might have chosen to allow for a certain amount of overbooking. +* In addition, since the transaction can be aborted in case of a hazard, the booking service has to deal with the situation where a hotel room is booked but payment is never attempted (since the transaction was aborted). In that case, the booking service might choose a strategy where a hotel room is reserved for a maximum period of time and, if payment is not received by then, the booking is canceled. + +To sum it up: while ACID transactions offer a generic solution to such problems (rollback, isolation levels and heuristic outcomes), we need to find domain specific solutions to these problems when implementing business transactions. + +:::warning[Current Limitations] +The BPMN specification requires that the process engine reacts to events issued by the underlying transaction protocol and, in case a transaction is canceled, if a cancel event occurs, in the underlying protocol. As an embeddable engine, the Operaton engine currently does not support this. (For some ramifications of this, see the paragraph on consistency below.) +::: + +Consistency on top of ACID transactions and optimistic concurrency: A BPMN transaction guarantees consistency in the sense that either all activities compete successfully, or, if some activity cannot be performed, the effects of all other successful activities are compensated. So either way, we end up in a consistent state. However, it is important to recognize that in Operaton, the consistency model for BPMN transactions is superposed on top of the consistency model for process execution. The Operaton engine executes processes in a transactional way. Concurrency is addressed using optimistic locking. In the engine BPMN error, cancel and compensation events are built on top of the same ACID transactions and optimistic locking. For example, a cancel end event can only trigger compensation if it is actually reached. It is not reached if some undeclared exception is thrown by a service task before. The effects of a compensation handler can not be committed if some other participant in the underlying ACID transaction sets the transaction to the state rollback-only. Also, when two concurrent executions reach a cancel end event, compensation might be triggered twice and fail with an optimistic locking exception. All of this is to say that when implementing BPMN transactions in the core engine, the same set of rules apply as when implementing "ordinary" processes and subprocesses. So, to effectively guarantee consistency, it is important to implement processes in a way that takes the optimistic, transactional execution model into consideration. For further information, see the documentation on [optimistic locking](../../../user-guide/process-engine/transactions-in-processes.md#optimistic-locking). + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:inputOutput +
Constraints + The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
+ + +## Additional Resources + +* [Transactions in Processes](../../../user-guide/process-engine/transactions-in-processes.md) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/bpmn/compensation-marker.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/bpmn/compensation-marker.bpmn new file mode 100644 index 0000000..5c65d17 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/bpmn/compensation-marker.bpmn @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/bpmn/loop-alternative.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/bpmn/loop-alternative.bpmn new file mode 100644 index 0000000..5f775af --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/bpmn/loop-alternative.bpmn @@ -0,0 +1,81 @@ + + + + + SequenceFlow_2 + SequenceFlow_3 + SequenceFlow_4 + + + + + SequenceFlow_3 + + + SequenceFlow_4 + SequenceFlow_1 + SequenceFlow_2 + + + + SequenceFlow_1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/bpmn/multiple-instance-boundary.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/bpmn/multiple-instance-boundary.bpmn new file mode 100644 index 0000000..0a4f37e --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/bpmn/multiple-instance-boundary.bpmn @@ -0,0 +1,203 @@ + + + + + SequenceFlow_8 + SequenceFlow_7 + + + SequenceFlow_5 + SequenceFlow_6 + + + + SequenceFlow_6 + + + SequenceFlow_1 + SequenceFlow_2 + SequenceFlow_4 + + + + + SequenceFlow_3 + + + SequenceFlow_1 + + + + SequenceFlow_2 + SequenceFlow_3 + + + + SequenceFlow_4 + SequenceFlow_5 + + + + + + SequenceFlow_9 + SequenceFlow_10 + + + + SequenceFlow_10 + + + SequenceFlow_7 + + + SequenceFlow_8 + + + + SequenceFlow_9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/bpmn/multiple-instance.bpmn b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/bpmn/multiple-instance.bpmn new file mode 100644 index 0000000..a151732 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/bpmn/multiple-instance.bpmn @@ -0,0 +1,26 @@ + + + + + assigneeList + + + + + + assigneeList + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/business-rule-task.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/business-rule-task.md new file mode 100644 index 0000000..fc1d0c6 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/business-rule-task.md @@ -0,0 +1,206 @@ +--- + +title: 'Business Rule Task' +sidebar_position: 40 + +menu: + main: + identifier: "bpmn-ref-tasks-business-rule-task" + parent: "bpmn-ref-tasks" + description: "Execute an automated business decision." + +--- + +A Business Rule Task is used to synchronously execute one or more rules. It is also possible to call Java code or providing a work item for an external worker to complete asynchronously or invoking a logic which is implemented in form of webservices. + +## Using Operaton DMN Engine + +You can use the Operaton DMN engine integration to evaluate a DMN decision. You have +to specify the decision key to evaluate as the `operaton:decisionRef` attribute. Additionally, +the `operaton:decisionRefBinding` specifies which version of the decision should be evaluated. +Valid values are: + +* `deployment`, which evaluates the decision version which was deployed with the process +version, +* `latest` which will always evaluate the latest decision version, +* `version` which allows you to specify a specific version to execute with the `operaton:decisionRefVersion` attribute, and +* `versionTag` which allows you to specify a specific version tag to execute with the `operaton:decisionRefVersionTag` attribute. + +```xml + +``` + +The `operaton:decisionRefBinding` attribute defaults to `latest`. + +```xml + +``` + +The attributes `operaton:decisionRef`, `operaton:decisionRefVersion`, and `operaton:decisionRefVersionTag` can be specified as +an expression which will be evaluated on execution of the task. + +```xml + +``` + +The output of the decision, also called decision result, is not saved as process variable automatically. It has to pass into a process variable by using a [predefined](../../../user-guide/process-engine/decisions/bpmn-cmmn.md#predefined-mapping-of-the-decision-result) or a [custom](../../../user-guide/process-engine/decisions/bpmn-cmmn.md#custom-mapping-to-process-variables) mapping of the decision result. + +In case of a predefined mapping, the `operaton:mapDecisionResult` attribute references the mapper to use. The result of the mapping is saved in the variable which is specified by the `operaton:resultVariable` attribute. If no predefined mapper is set then the `resultList` mapper is used by default. + +```xml + +``` + +See the [User Guide](../../../user-guide/process-engine/decisions/bpmn-cmmn.md#the-decision-result) for details about the mapping. + +:::warning[Name of the Result Variable] +The result variable should not have the name `decisionResult`, as the decision result itself is saved in a variable with this name. Otherwise, an exception is thrown while saving the result variable. +::: + +## DecisionRef Tenant Id + +When the Business Rule Task resolves the decision definition to be evaluated it must take multi tenancy into account. + +### Default Tenant Resolution +By default, the tenant id of the calling process definition is used to evaluate the decision definition. +That is, if the calling process definition has no tenant id, then the Business Rule Task evaluates a decision definition using the provided key, binding and without a tenant id (tenant id = null). +If the calling process definition has a tenant id, a decision definition with the provided key and the same tenant id is evaluated. + +Note that the tenant id of the calling process instance is not taken into account in the default behavior. + +### Explicit Tenant Resolution + +In some situations it may be useful to override this default behavior and specify the tenant id explicitly. + +The `operaton:decisionRefTenantId` attribute allows to explicitly specify a tenant id: + +```xml + + +``` + +If the tenant id is not known at design time, an expression can be used as well: + +```xml + + +``` + +An expression also allows using the tenant id of the calling process instance instead of the calling process definition: + +```xml + + +``` + +## Using a Custom Rule Engine + +You can integrate with other rule engines. To do so, you have to plug in your +implementation of the rule task the same way as in a Service Task. + +```xml + +``` + + +## Using Delegate Code + +Alternatively, a Business Rule Task can be implemented using Java Delegation just as a Service Task. For more +information on this please see the [Service Tasks](service-task.md) documentation. + + +## Implementing as an External Task + +In addition to the above, a Business Rule Task can be implemented via the [External Task](../../../user-guide/process-engine/external-tasks.md) mechanism where an external system polls the process engine for work to do. See the section on [Service Tasks](service-task.md#external-tasks) for more information about how to configure an external task. + + +## Operaton Extensions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:class, + operaton:decisionRef, + operaton:decisionRefBinding, + operaton:decisionRefTenantId, + operaton:decisionRefVersion, + operaton:decisionRefVersionTag, + operaton:delegateExpression, + operaton:exclusive, + operaton:expression, + operaton:jobPriority, + operaton:mapDecisionResult, + operaton:resultVariable, + operaton:topic, + operaton:type, + operaton:taskPriority +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:field, + operaton:connector, + operaton:inputOutput +
Constraints + One of the attributes operaton:class, operaton:delegateExpression, operaton:decisionRef, + operaton:type or operaton:expression is mandatory +
+ The attribute operaton:resultVariable can only be used in combination with the + operaton:decisionRef or operaton:expression attribute +
+ The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
+ The attribute operaton:topic can only be used when the operaton:type attribute is set to external. +
+ The attribute operaton:taskPriority can only be used when the operaton:type attribute is set to external. +
+ + +## Additional Resources + +* [Decisions](../../../user-guide/process-engine/decisions/index.md) +* [Service Tasks](./service-task.md) +* [Tasks](http://operaton.org/bpmn/reference.html#activities-task) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) +* [Demo using Drools on the Business Rule Task](https://github.com/operaton/operaton-consulting/tree/master/one-time-examples/order-confirmation-rules) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/index.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/index.md new file mode 100644 index 0000000..bb3b295 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/index.md @@ -0,0 +1,13 @@ +--- + +title: 'Tasks' +sidebar_position: 10 + +menu: + main: + identifier: "bpmn-ref-tasks" + parent: "bpmn-ref" + +--- + +Tasks allow modeling the actual work being performed in the process. Different types of tasks are supported. diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/manual-task.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/manual-task.md new file mode 100644 index 0000000..186b56f --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/manual-task.md @@ -0,0 +1,47 @@ +--- + +title: 'Manual Task' +sidebar_position: 70 + +menu: + main: + identifier: "bpmn-ref-tasks-manual-task" + parent: "bpmn-ref-tasks" + description: "A task which is performed externally." + +--- + +A Manual Task defines a task that is external to the BPM engine. It is used to model work that is done by somebody who the engine does not need to know of and that has no known system or UI interface. For the engine, a manual task is handled as a pass-through activity, automatically continuing the process when the process execution arrives at it. + +```xml + +``` + + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:inputOutput +
Constraints + The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/receive-task.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/receive-task.md new file mode 100644 index 0000000..12a61a7 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/receive-task.md @@ -0,0 +1,99 @@ +--- + +title: 'Receive Task' +sidebar_position: 60 + +menu: + main: + identifier: "bpmn-ref-tasks-receive-task" + parent: "bpmn-ref-tasks" + description: "Wait for a message to arrive." + +--- + +A Receive Task is a simple task that waits for the arrival of a certain message. When the process execution arrives at a Receive Task, the process state is committed to the persistence storage. This means that the process will stay in this wait state until a specific message is received by the engine, which triggers continuation of the process beyond the Receive Task. + +A Receive Task with a message reference can be triggered like an ordinary event: + +```xml + + + + + ... +``` + +You can then either correlate the message: + +```java +// correlate the message +runtimeService.createMessageCorrelation(subscription.getEventName()) + .processInstanceBusinessKey("AB-123") + .correlate(); +``` + +Or explicitly query for the subscription and trigger it: + +```java +ProcessInstance pi = runtimeService.startProcessInstanceByKey("processWaitingInReceiveTask"); + +EventSubscription subscription = runtimeService.createEventSubscriptionQuery() + .processInstanceId(pi.getId()).eventType("message").singleResult(); + +runtimeService.messageEventReceived(subscription.getEventName(), subscription.getExecutionId()); +``` + +:::note +Correlation of a parallel multi instance isn't possible because the subscription can't be identified unambiguously. +::: + +To continue a process instance that is currently waiting at a Receive Task without a message reference, the `runtimeService.signal(executionId)` can be called, using the id of the execution that arrived in the Receive Task. + +```xml + +``` + +The following code snippet shows how this works in practice: + +```java +ProcessInstance pi = runtimeService.startProcessInstanceByKey("receiveTask"); +Execution execution = runtimeService.createExecutionQuery() + .processInstanceId(pi.getId()).activityId("waitState").singleResult(); + +runtimeService.signal(execution.getId()); +``` + + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:inputOutput +
Constraints + The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
+ + +## Additional Resources + +* [Tasks](http://operaton.org/bpmn/reference.html#activities-task) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) +* [Message Receive Events](../events/message-events.md) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/script-task.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/script-task.md new file mode 100644 index 0000000..25eae33 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/script-task.md @@ -0,0 +1,141 @@ +--- + +title: 'Script Task' +sidebar_position: 50 + +menu: + main: + identifier: "bpmn-ref-tasks-script-task" + parent: "bpmn-ref-tasks" + description: "Execute a Script." + +--- + +A Script Task is an automated activity. When a process execution arrives at the Script Task, the corresponding script is executed. + +A Script Task is defined by specifying the script and the scriptFormat. + +```xml + + + +``` + +The value of the scriptFormat attribute must be a name that is compatible with JSR-223 (Scripting +for the Java Platform). If you want to use a (JSR-223 compatible) scripting engine, you need to to +add the corresponding jar to the classpath and use the appropriate name. + +The script source code has to be added as the text content of the `script` child element. +Alternatively, the source code can be specified as an expression or external resource. For more +information on the possible ways of providing the script source code please see the corresponding + [section][script-source] of the [User Guide][user-guide]. + +For general information about scripting in the process engine, please see the [Scripting](../../../user-guide/process-engine/scripting.md) section of the [User Guide][user-guide]. + +:::note[Supported Script Languages] + +Operaton should work with most of the JSR-223 compatible script engine implementations. We test integration for Groovy, JavaScript, JRuby and Jython. See the Third Party Dependencies section of the User Guide for more details. + +::: + +## Variables in Scripts + +All process variables that are accessible through the execution that arrives in the Script Task can be used within the script. In the example below, the script variable `inputArray` is in fact a process variable (an array of integers). + +```xml + +``` + +It's also possible to set process variables in a script. Variables can be set by using the `setVariable(...)` methods provided by the `VariableScope` interface: + + +```xml + +``` + +### Enabling auto-storing of Script Variables + +By setting the property `autoStoreScriptVariables` to `true` in the process engine configuration, the process engine will automatically store all _global_ script variables as process variables. This was the default behavior in Operaton.0 and 7.1 but it only reliably works for the Groovy scripting language (see the [Set autoStoreScriptVariables][autostore-variables] section of the [Migration Guide](../../../update/index.md) for more information). + +To use this feature, you have to + +* set `autoStoreScriptVariables` to `true` in the process engine configuration +* prefix all script variables that should not be stored as script variables using the `def` keyword: `def sum = 0`. In this case the variable `sum` will not be stored as process variable. + +:::note[Groovy-Support only] +The configuration flag autoStoreScriptVariables is only supported for Groovy Script Tasks. If enabled for other script languages, +it is not guaranteed which variables will be exported by the script engine. For +example, Ruby will not export any of the script variables at all. +::: + +Note: the following names are reserved and cannot be used as variable names: +`out`, `out:print`, `lang:import`, `context`, `elcontext`. + + +## Script Results + +The return value of a Script Task can be assigned to a previously existing or to a new process variable by specifying the process variable name as a literal value for the `operaton:resultVariable` attribute of a Script Task definition. Any existing value for a specific process variable will be overwritten by the result value of the script execution. When a result variable name is not specified, the script result value gets ignored. + +```xml + + + +``` + +In the above example, the result of the script execution (the value of the resolved expression `#{echo}`) is set to the process variable named `myVar` after the script completes. + +:::note[Result variables and multi-instance] +Note that when you use operaton:resultVariable in a multi-instance construct, for example in a multi-instance subprocess, the result variable is overwritten every time the task completes, which may appear as random behavior. See operaton:resultVariable for details. +::: + + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority, + operaton:resultVariable, + operaton:resource +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:inputOutput +
Constraints + The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
+ + +[script-source]: ../../../user-guide/process-engine/scripting.md#script-source +[user-guide]: ../../../user-guide/index.md + diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/send-task.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/send-task.md new file mode 100644 index 0000000..b25933d --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/send-task.md @@ -0,0 +1,84 @@ +--- + +title: 'Send Task' +sidebar_position: 20 + +menu: + main: + identifier: "bpmn-ref-tasks-send-task" + parent: "bpmn-ref-tasks" + description: "Send a message." + +--- + +A Send Task is used to send a message. In Operaton this is done by calling Java code. + +The Send Task has the same behavior as a Service Task. + +```xml + +``` + + +## Operaton Extensions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:class, + operaton:delegateExpression, + operaton:exclusive, + operaton:expression, + operaton:jobPriority, + operaton:resultVariable, + operaton:topic, + operaton:type, + operaton:taskPriority +
Extension Elements + operaton:failedJobRetryTimeCycle, + operaton:field, + operaton:connector, + operaton:inputOutput +
Constraints + One of the attributes operaton:class, operaton:delegateExpression, + operaton:type or operaton:expression is mandatory +
+ The attribute operaton:resultVariable can only be used in combination with the + operaton:expression attribute +
+ The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
+ The attribute operaton:topic can only be used when the operaton:type attribute is set to external. +
+ The attribute operaton:taskPriority can only be used when the operaton:type attribute is set to external. +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/service-task.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/service-task.md new file mode 100644 index 0000000..ca29335 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/service-task.md @@ -0,0 +1,167 @@ +--- + +title: 'Service Task' +sidebar_position: 10 + +menu: + main: + identifier: "bpmn-ref-tasks-service-task" + parent: "bpmn-ref-tasks" + description: "Invoke or execute business logic." + +--- + + + +A Service Task is used to invoke services. In Operaton this is done by calling Java code or providing a work item for an external worker to complete asynchronously or invoking a logic which is implemented in form of webservices. + +## Calling Java Code + +There are four ways of declaring how to invoke Java logic: + +* Specifying a class that implements a JavaDelegate or ActivityBehavior +* Evaluating an expression that resolves to a delegation object +* Invoking a method expression +* Evaluating a value expression + +To specify a class that is called during process execution, the fully qualified classname needs to be provided by the `operaton:class` attribute. + +```xml + +``` + +Please refer to the [Java Delegate](../../../user-guide/process-engine/delegation-code.md#java-delegate) section of the [User Guide](../../../user-guide/index.md) for details on how to implement a Java Delegate. + +It is also possible to use an expression that resolves to an object. This object must follow the +same rules as objects that are created when the `operaton:class` attribute is used. + +```xml + +``` + +Or an expression which calls a method or resolves to a value. + +```xml + +``` + +For more information about expression language as delegation code, please see the corresponding +[section](../../../user-guide/process-engine/expression-language.md#delegation-code) +of the [User Guide](../../../user-guide/index.md). + +It is also possible to invoke logic which is implemented in form of webservices. `operaton:connector` is an extension that allows calling REST/SOAP APIs directly from the workflow. For more information about using connectors, please see the corresponding [section](../../../user-guide/process-engine/connectors.md#use-connectors) of the [User Guide](../../../user-guide/index.md) + +### Generic Java Delegates & Field Injection + +You can easily write generic Java Delegate classes which can be configured later on via the BPMN 2.0 XML in the Service Task. Please refer to the [Field Injection](../../../user-guide/process-engine/delegation-code.md#field-injection) section of the [User Guide](../../../user-guide/index.md) for details. + + +### Service Task Results + +The return value of a service execution (for a Service Task exclusively using expressions) can be assigned to an already existing or to a new process variable by specifying the process variable name as a literal value for the `operaton:resultVariable` attribute of a Service Task definition. Any existing value for a specific process variable will be overwritten by the result value of the service execution. When not specifying a result variable name, the service execution result value is ignored. + +```xml + +``` + +In the example above, the result of the service execution (the return value of the `doSomething()` method invocation on object `myService`) is set to the process variable named `myVar` after the service execution completes. + +:::warning[Result variables and multi-instance] +Note that when you use operaton:resultVariable in a multi-instance construct, for example in a multi-instance subprocess, the result variable is overwritten every time the task completes, which may appear as random behavior. See operaton:resultVariable for details. +::: + +## External Tasks + +In contrast to calling Java code, where the process engine synchronously invokes Java logic, it is possible to implement a Service Task outside of the process engine's boundaries in the form of an external task. When a Service Task is declared external, the process engine offers a work item to workers that independently poll the engine for work to do. This decouples the implementation of tasks from the process engine and allows to cross system and technology boundaries. See the [user guide on external tasks](../../../user-guide/process-engine/external-tasks.md) for details on the concept and the relevant API. + +To declare a Service Task to be handled externally, the attribute `operaton:type` can be set to `external` and the attribute `operaton:topic` specifies the external task's topic. For example, the following XML snippet defines an external Service Task with topic `ShipmentProcessing`: + +```xml + +``` + +## Operaton Extensions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Attributes + operaton:asyncBefore, + operaton:asyncAfter, + operaton:class, + operaton:delegateExpression, + operaton:exclusive, + operaton:expression, + operaton:jobPriority, + operaton:resultVariable, + operaton:topic, + operaton:type, + operaton:taskPriority +
Extension Elements + operaton:errorEventDefinition, + operaton:failedJobRetryTimeCycle, + operaton:field, + operaton:connector, + operaton:inputOutput +
Constraints + One of the attributes operaton:class, operaton:delegateExpression, + operaton:type or operaton:expression is mandatory +
+ The attribute operaton:resultVariable can only be used in combination with the + operaton:expression attribute +
+ The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
+ The attribute operaton:topic can only be used when the operaton:type attribute is set to external. +
+ The attribute operaton:taskPriority can only be used when the operaton:type attribute is set to external. +
+ The element operaton:errorEventDefinition can only be used as a child of serviceTask when the operaton:type attribute is set to external. +
+ + +## Additional Resources + +* [Tasks](http://operaton.org/bpmn/reference.html#activities-task) in the [BPMN Modeling Reference](http://operaton.org/bpmn/reference.html) section +* [How to call a Webservice from BPMN](http://www.bpm-guide.de/2010/12/09/how-to-call-a-webservice-from-bpmn/). Please note that this article is outdated. However, it is still valid regarding how you would call a Web Service using the process engine. diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/task-markers.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/task-markers.md new file mode 100644 index 0000000..0e8ab1e --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/task-markers.md @@ -0,0 +1,208 @@ +--- + +title: 'Task Markers' +sidebar_position: 80 + +menu: + main: + identifier: "bpmn-ref-task-markers" + parent: "bpmn-ref-tasks" + description: "Markers control operational aspects like repetition." + +--- + +In addition to the various types of tasks, we can mark tasks as loops, multiple instances or compensations. Markers can be combined with task types. + + +## Multiple Instance + +A multi-instance activity is a way of defining repetition for a certain step in a business process. In programming concepts, a multi-instance matches the `for each` construct: it allows execution of a certain step or even a complete subprocess for each item in a given collection, sequentially or in parallel. + +A multi-instance is a regular activity that has extra properties defined (so-called `multi-instance characteristics`) which will cause the activity to be executed multiple times at runtime. Following activities can become multi-instance activities: + +* Service Task +* Send Task +* User Task +* Business Rule Task +* Script Task +* Receive Task +* Manual Task +* (Embedded) Sub-Process +* Call Activity +* Transaction Subprocess + +A Gateway or Event can not become multi-instance. + +If an activity is multi-instance, this is indicated by three short lines at the bottom of the activity. Three vertical lines indicate that the instances will be executed in parallel, while three horizontal lines indicate **sequential** execution. + +
+ +As required by the specification, each parent execution of the created executions for each instance will have the following variables: + +* **nrOfInstances**: the total number of instances +* **nrOfActiveInstances**: the number of currently active, i.e., not yet finished, instances. For a sequential multi-instance, this will always be 1 +* **nrOfCompletedInstances**: the number of already completed instances + +These values can be retrieved by calling the `execution.getVariable(x)` method. + +Additionally, each of the created executions will have an execution-local variable (i.e., not visible for the other executions and not stored on process instance level) : + +* **loopCounter**: indicates the index in the `for each` loop of that particular instance + +To make an activity multi-instance, the activity xml element must have a `multiInstanceLoopCharacteristics` child element. + +```xml + + ... + +``` + +The isSequential attribute indicates if the instances of that activity are executed sequentially or in parallel. + + +The number of instances are calculated once, when entering the activity. There are a few ways of configuring this. One way is directly specifying a number by using the `loopCardinality` child element. + +```xml + + 5 + +``` + +Expressions that resolve to a positive number are also possible: + +```xml + + ${nrOfOrders-nrOfCancellations} + +``` + +Another way to define the number of instances is to specify the name of a process variable which is a collection using the `loopDataInputRef` child element. For each item in the collection, an instance will be created. Optionally, it is possible to set that specific item of the collection for the instance using the inputDataItem child element. This is shown in the following XML example: + +```xml + + + assigneeList + + + +``` + +Suppose the variable assigneeList contains the values [kermit, gonzo, foziee]. In the snippet above, three user tasks will be created in parallel. Each of the executions will have a process variable named assignee containing one value of the collection, which is used to assign the user task in this example. + +The downside of the `loopDataInputRef` and `inputDataItem` is that 1) the names are pretty hard to remember and 2) due to the BPMN 2.0 schema restrictions they can't contain expressions. We solve this by offering the collection and elementVariable attributes on the multiInstanceCharacteristics: + +```xml + + + + +``` + +A multi-instance activity ends when all instances are finished. However, it is possible to specify an expression that is evaluated every time one instance ends. When this expression evaluates to true, all remaining instances are destroyed and the multi-instance activity ends, continuing the process. Such an expression must be defined in the completionCondition child element. + +```xml + + + ${nrOfCompletedInstances/nrOfInstances $\geq$ 0.6 } + + +``` + +In this example, parallel instances will be created for each element of the assigneeList collection. However, when 60% of the tasks are completed, the other tasks are deleted and the process continues. + + +### Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:collection, + operaton:elementVariable, + operaton:asyncBefore, + operaton:asyncAfter, + operaton:exclusive, + operaton:jobPriority +
Extension Elements
Constraints + The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
+ + +### Boundary Events and Multi-Instance + +Since a multi-instance is a regular activity, it is possible to define a boundary event on its boundary. In case of an interrupting boundary event, when the event is caught, all instances that are still active will be destroyed. For example, take the following multi-instance subprocess: + +
+ +Here all instances of the subprocess will be destroyed when the timer fires, regardless of how many instances there are or which inner activities are currently not completed yet. + + +### Loops + +The loop marker is not natively supported yet by the engine. For Multiple Instance, the number of repetitions is known in advance - which makes it a bad candidate for loops anyway, as it defines a completion condition that may already be sufficient in some cases. + +To get around this limitation, the solution is to explicitly model the loop in your BPMN process: + +
+ +Be assured that we have the loop marker in our backlog to be added to the engine. + +### JSON Collections with Multi-Instance Collections + +JSON Arrays created with [Operaton SPIN](../index.md) can be used as a collection for multi-instance activities. +Consider the following JavaScript example that initializes execution variable `collection`: + +```javascript +var collection = S('{ "collection" : ["System 1", "System 3"] }'); +execution.setVariable("collection", collection); +``` + +This script can be injected in the model in several ways, e.g. using [Script task] (../tasks/script-task.md). + +We can now use `collection` variable in multi-instance activity's `operaton:collection` extension element. + +```xml + +``` + +This uses the SPIN's JSON `.prop()` and `.elements()` to return the JSON array. Set the multi-instance activity's `elementVariable` to a variable name that +will contain the array item. To access the value of the element, you can use `.value()` in your element variable. + +## Compensation + +If an activity is used for compensating the effects of another activity, it can be declared to be a compensation handler. Compensation handlers are not contained in the regular flow and are only executed when a compensation event is thrown. + +
+ +Notice the compensation handler icon in the bottom center area of the "cancel hotel reservation" service task. + +Compensation handlers may not have incoming or outgoing sequence flows. + +A compensation handler must be associated with a compensation boundary event using a directed association. + +To declare an activity to be a compensation handler, we need to set the attribute isForCompensation to true: + +```xml + +``` + + +## Additional Resources + +* [Tasks](http://operaton.org/bpmn/reference.html#activities-task) in the [BPMN 2.0 Modeling Reference](http://operaton.org/bpmn/reference.html) +* [Transaction Subprocess](../subprocesses/transaction-subprocess.md) diff --git a/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/user-task.md b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/user-task.md new file mode 100644 index 0000000..6e0f25f --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/bpmn20/tasks/user-task.md @@ -0,0 +1,443 @@ +--- + +title: 'User Task' +sidebar_position: 30 + +menu: + main: + identifier: "bpmn-ref-tasks-user-task" + parent: "bpmn-ref-tasks" + description: "A task performed by a human participant." + +--- + +A User Task is used to model work that needs to be done by a human actor. When the process execution arrives at such a User Task, a new task is created in the task list of the user(s) or group(s) assigned to that task. + +A User Task is defined in XML as follows. The id attribute is required, while the name attribute is optional. + +```xml + +``` + + +## Description + +A User Task can also have a description. In fact, any BPMN 2.0 element can have a description. A description is defined by adding the documentation element. + +```xml + + + Schedule an engineering meeting for next week with the new hire. + +``` + +The description text can be retrieved from the task in the standard Java way: + +```java +task.getDescription(); +``` + + +## Properties + +### Due Date + +Each task has a field indicating the due date of that task. The Query API can be used to query for tasks that are due on, before or after a certain date. + +There is an activity extension which allows you to specify an expression in your task-definition to set the initial due date of a task when it is created. The expression should always resolve to a java.util.Date, java.util.String ([ISO8601](http://en.wikipedia.org/wiki/ISO_8601) formatted) or null. When using ISO8601 formatted Strings, you may either specify an exact point in time or a time period relative to the time the task is created. For example, you could use a date that was entered in a previous form in the process or calculated in a previous Service Task. + +```xml + +``` + +The due date of a task can also be altered using the TaskService or in TaskListeners using the passed DelegateTask. + +### Follow Up Date + +Each task has a field indicating the follow up date of that task. The Query API can be used to query for tasks that need to be followed up on, before or after a certain date. + +There is an activity extension which allows you to specify an expression in your task-definition to set the initial follow up date of a task when it is created. The expression should always resolve to a java.util.Date, java.util.String ([ISO8601](http://en.wikipedia.org/wiki/ISO_8601) formatted) or null. When using ISO8601 formatted Strings, you may either specify an exact point in time or a time period relative to the time the task is created. For example, you could use a date that was entered in a previous form in the process or calculated in a previous Service Task. + +```xml + +``` + +## User Assignment + +A User Task can be directly assigned to a single user, a list of users or a list of groups. + +### Assignment using BPMN Resource Assignments + +BPMN defines some native assignment concepts which can be used in operaton. +As a more powerful alternative, Operaton also defines a set of custom extension elements (see below). + +### Human Performer + +This is done by defining a humanPerformer sub element. Such a humanPerformer definition needs a resourceAssignmentExpression that actually defines the user. Currently, only formalExpressions are supported. + +```xml + + ... + + + + kermit + + + +``` + +Only one user can be assigned to the task as a human performer. In the engine terminology, this user is called the assignee. Tasks that have an assignee are not visible in the task lists of other users and can be found in the so-called personal task list of the assignee instead. + +Tasks directly assigned to users can be retrieved through the TaskService as follows: + +```java +List tasks = taskService.createTaskQuery().taskAssignee("kermit").list(); +``` + +### Potential Owner + +Tasks can also be put in the so-called candidate task list of people. In that case, the potentialOwner construct must be used. The usage is similar to the humanPerformer construct. Please note that for each element in the formal expression it is required to specifically define if it is a user or a group (the engine cannot guess this). + +```xml + + ... + + + + user(kermit), group(management) + + + +``` + +Tasks defined with the potential owner construct can be retrieved as follows (or a similar TaskQuery, such as for tasks which have an assignee, can be used): + +```java +List tasks = taskService.createTaskQuery().taskCandidateUser("kermit"); +``` + +This will retrieve all tasks where `kermit` is a candidate user, i.e., the formal expression contains the user `kermit`. This will also retrieve all tasks that are assigned to a group of which `kermit` is a member (e.g., `group(management)`, if kermit is a member of that group and the identity component is used). The groups of a user are resolved at runtime and these can be managed through the IdentityService. + +If no specifics are given whether the given text string is a user or a group, the engine defaults to group. So the following two alternatives lead to the same result: + +```xml +accountancy +group(accountancy) +``` + +### User Assignment using Operaton Extensions + +It is clear that user and group assignments are quite cumbersome for use cases where the assignment is more complicated. To avoid these complexities, custom extensions on the User Task are possible. + +### Assignee + +The `assignee` attribute: this custom extension allows direct assignment of a User Task to a given user. + +```xml + +``` +This is exactly the same as using a humanPerformer construct as defined above. + +### Candidate Users + +The `candidateUsers` attribute: this custom extension allows you to make a user a candidate for a task. + +```xml + +``` + +This is exactly the same as using a potentialOwner construct as defined above. Note that it is not required to use the `user(kermit)` declaration as is the case with the potential owner construct, since this attribute can only be used for users. + +### Candidate Groups + +The `candidateGroups` attribute: this custom extension allows you to make a group a candidate for a task. + +```xml + +``` + +This is exactly the same as using a potentialOwner construct as defined above. Note that it is not required to use the `group(management)` declaration as is the case with the potential owner construct, since this attribute can only be used for groups. + +### Combining Candidate Users and Groups + +`candidateUsers` and `candidateGroups` can both be defined for the same User Task. + + +### Assignment based on Data and Service Logic + +In the above examples, constant values such as `kermit` or `management` are used. But what if the exact name of an assignee or a candidate group is not known at design time? And what if the assignee is not a constant value but depends on data such as _"The person who started the process"_? Maybe the assigment logic is also more complex and needs to access an external data source such as LDAP to implement a lookup such as _"The manager of the employee who started the process"_. + +Such things can be implemented using assignment expressions or task listeners. + +### Assignment Expressions + +Assignment expressions allow accessing process variables or calling out to beans and services. + +#### Using Process Variables + +Process variables are useful for assignments based on data which has been collected or calculated up front. + +The following example shows how to assign a User Task to the person who started the process: + +```xml + +... + +... +``` + +First, the `operaton:initiator` extension is used to bind the user id of the person who started (_"initiated"_) the process to the variable `starter`. Then the expression `${ starter }` retrieves that value and uses it as assignee for the task. + +It is possible to use all process variables [visible](../../../user-guide/process-engine/variables.md#variable-scopes-and-variable-visibility) from the User Task in the expression. + +#### Invoking a Service / Bean + +When using Spring or CDI, it is possible to delegate to a bean or service implementation. This way it is possible to call out to complex assignment logic without modeling it as an explicit service task in the process which would then produce a variable used in the assignment. + +In the following example, the assignee will be set by calling the `findManagerOfEmployee()` on the `ldapService` Spring/CDI bean. The `emp` parameter that is passed is a process variable. + +```xml + +``` + +This also works in a similar way for candidate users and groups: + +```xml + +``` + +Note that this will only work if the return type of the invoked methods is String or Collection\ (for candidate users and groups): + +```java +public class FakeLdapService { + + public String findManagerForEmployee(String employee) { + return "Kermit The Frog"; + } + + public List findAllSales() { + return Arrays.asList("kermit", "gonzo", "fozzie"); + } +} +``` + +### Assignments in Listeners + +It is also possible to use [task listeners](../../../user-guide/process-engine/delegation-code.md#task-listener) for handling assignments. The following example demonstrates a task listener on the `create` event: + +```xml + + + + + +``` + +The DelegateTask that is passed to the TaskListener implementation allows you to set the assignee and candidate-users/groups: + +```java +public class MyAssignmentHandler implements TaskListener { + public void notify(DelegateTask delegateTask) { + // Execute custom identity lookups here + // and then for example call following methods: + delegateTask.setAssignee("kermit"); + delegateTask.addCandidateUser("fozzie"); + delegateTask.addCandidateGroup("management"); + ... + } +} +``` + +:::note[Note] +Assigning a task, or setting any other property through a TaskListener, will not result in an +`assignment` or `update` event unless a `TaskService` method is used to perform these actions. This +is intentional, in order to avoid creating event loops. +::: + +### Assignments and Identity Service + +Although the Operaton engine provides an identity management component, which is exposed through the IdentityService, it does not check whether a provided user is known by the identity component. This allows integration of the engine with existing identity management solutions when it is embedded into an application. + +However, note that you can use the identity service in a service / bean or listener to query your user repository if this is useful to you. + +You can query for users with the help of the identity service. See the following example: + +```java +ProcessEngine processEngine = delegateTask.getProcessEngine(); +IdentityService identityService = processEngine.getIdentityService(); + +List managementUsers = identityService.createUserQuery() + .memberOfGroup("management") + .list(); + +User kermit = identityService.createUserQuery() + .userFirstName("kermit") + .singleResult(); +``` + +## Reporting Bpmn Error + +See the documentation for [Error Boundary Events](../events/error-events.md#error-boundary-event). + +To report a business error during user task operation, use `TaskService#handleBpmnError`. It can be invoked only when the task is active. +The `#handleBpmnError` method requires a mandatory argument: `errorCode`. +The error code identifies a predefined error. If the given `errorCode` does not exist or there is no boundary event defined, +the current activity instance simply ends and the error is not handled. + +See the following example: + +```java + +Task task = taskService.createTaskQuery().taskName("Perform check").singleResult(); + +// ... business error appears + +taskService.handleBpmnError( + task.getId(), + "bpmn-error-543", // errorCode + "Thrown BPMN Error during...", // errorMessage + variables); +``` + +A BPMN error with the error code `bpmn-error-543` is propagated. If a boundary event with this error code exists, the BPMN error will be caught and handled. +The error message and variables are optional. They can provide additional information for the error. The variables will be passed to the execution if the BPMN error is caught. + +## Reporting Bpmn Escalation + +See the documentation for [Catching Escalation Events](../events/escalation-events.md#catching-escalation-events). + +Reporting an escalation during user task execution can be achieved via `TaskService#handleEscalation`. The user task should be active to do so. The `escalationCode` is compulsory to invoke the escalation, this code identifies a predefined escalation. If the given `escalationCode` does not exist an Process Engine Exception will be thrown. See the following example: + +```java +taskService.handleEscalation( + taskId, + "escalation-432", // escalationCode + variables); +``` + +Here an escalation is propagated with escalation code `escalation-432`. If a boundary event with this escalation code exists, the escalation will be caught and handled. +The variables are optional. They will be passed to the execution if the escalation is caught. + +## Completion + +Complete is part of the [task lifecycle](../../../webapps/tasklist/task-lifecycle.md) operation along with create, set candidate, assign, etc. (allow available via Java API). Complete a task by passing variables, optionally the process variables can be retrieved:: + +```java +taskService.complete(taskId, variables); + +// or complete and retrieve the process variables +VariableMap processVariables = taskService + .completeWithVariablesInReturn(taskId, variables, shouldDeserializeValues); +``` + +## Forms + +It is possible to provide information to render a User Task form by using the `operaton:formKey` +attribute: + +```xml + + ... + +``` + +The form key is a symbolic value which can be set in the BPMN XML file by using the extension attribute +`formKey` and retrieved at runtime using the process engine API. + +If the User Task form is displayed inside the Operaton Tasklist, the format of the formKey must follow +special rules. [See the corresponding section in the user guide for details](../../../user-guide/task-forms/index.md). + +In custom applications, the value of the form key attribute can be interpreted freely. Based on the specific UI technology used, +it can reference the name of an HTML file, a JSF / Facelets template, a Vaadin / GWT view, ... + +### Retrieving the Form Key using the Form Service. + +```java +String formKey = formService.getTaskFormData(someTaskId).getFormKey(); +``` + +### Retrieving the Form using the Task Service + +When performing a task query, it is possible to retrieve the form key as well. This is most useful +if the form keys need to be retrieved for a complete list of tasks: + +```java +List tasks = TaskService.createTaskQuery() + .assignee("jonny") + .initializeFormKeys() // must be invoked + .list(); + +for(Task task : tasks) { + String formKey = task.getFormKey(); +} +``` + +Note that it is required to call the `.initializeFormKeys()` method on the `TaskQuery` object to +make sure the form keys are initialized. + +### Form submission + +When a form is submitted, it is possible to fetch the process variables in return: + +```java +VariableMap processVariables = formService + .submitTaskFormWithVariablesInReturn(taskId, properties, shouldDeserializeValues); + +// or avoid unnecessary variable access +formService.submitTaskForm(taskId, properties); +``` + +## Operaton Extensions + + + + + + + + + + + + + + + + + + + + + + +
Attributes + operaton:assignee, + operaton:asyncBefore, + operaton:asyncAfter, + operaton:candidateGroups, + operaton:candidateUsers, + operaton:dueDate, + operaton:exclusive, + operaton:formHandlerClass, + operaton:formKey, + operaton:formRef, + operaton:formRefBinding, + operaton:formRefVersion, + operaton:jobPriority, + operaton:priority +
Extension Elements + operaton:formData, + operaton:formProperty, + operaton:taskListener, + operaton:failedJobRetryTimeCycle, + operaton:inputOutput +
Constraints + The attribute operaton:assignee cannot be used simultaneously with the humanPerformer + element +
+ Only one operaton:formData extension element is allowed +
+ The operaton:exclusive attribute is only evaluated if the attribute + operaton:asyncBefore or operaton:asyncAfter is set to true +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/classic-vs-fluent.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/classic-vs-fluent.md new file mode 100644 index 0000000..be4feed --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/classic-vs-fluent.md @@ -0,0 +1,68 @@ +--- + +title: 'Classic vs Fluent API' +sidebar_position: 20 + +menu: + main: + identifier: "cmmn-ref-api" + parent: "cmmn-ref" + +--- + + + +To interact with case instances and executions, the process engine offers the case service. It can be retrieved by `processEngine.getCaseService()`. + +The `CaseService` offers two API variants. One is in the following referred to as the *classic* API, since it is very similar to the API offered by the `RuntimeService` for BPMN processes. The *fluent* API follows a different concept in that it allows composition of case service commands by method chaining. + +## Classic and Fluent API by Example + +As an example, the `CaseService` offers two classic methods to manually start a task: + +```java +caseService.manuallyStartCaseExecution(caseExecutionId); + +Map variables = new HashMap(); +variables.put("aVariableToSet", "aValueToSet"); + +caseService.manuallyStartCaseExecution(caseExecutionId, variables); +``` + +The same can be expressed using the fluent API as follows: + +```java +caseService + .withCaseExecution(caseExecutionId) + .manualStart(); + +Map variables = new HashMap(); +variables.put("aVariableToSet", "aValueToSet"); + +caseService + .withCaseExecution(caseExecutionId) + .setVariables(variables) + .manualStart(); +``` + +In this way, the fluent API is another, fluently readable way of expressing the same functionality. On top, the fluent API, due to its flexibility, allows expression of very specific interactions that the classic API does not offer. For example, the following snippet manually starts a case execution, sets variables and removes another variable in one command (and therefore transaction): + +```java +Map variables = new HashMap(); +variables.put("aVariableToSet", "aValueToSet"); + +caseService + .withCaseExecution(caseExecutionId) + .setVariables(variables) + .removeVariable("aVariableToRemove") + .manualStart(); +``` + + +## Entry Points to the Fluent API + +The fluent API can be used to work with case definitions and case executions. The entry points are as follows: + +* `caseService.withCaseDefinition(caseDefinitionId)`: Offers interactions on the case definition that has the provided id, such as creating a new case instance. +* `caseService.withCaseDefinitionByKey(caseDefinitionKey)`: Offers interactions on the case definition that has the latest version of those that have the provided key. +* `caseService.withCaseExecution(caseExecutionId)`: Offers interactions on case executions, such as starting and completing tasks. diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/concepts/entry-exit-criteria.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/concepts/entry-exit-criteria.md new file mode 100644 index 0000000..cd88c72 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/concepts/entry-exit-criteria.md @@ -0,0 +1,57 @@ +--- + +title: 'Entry and Exit Criteria' +sidebar_position: 30 + +menu: + main: + identifier: "cmmn-ref-concepts-entry-and-exit-criteria" + parent: "cmmn-ref-concepts" + description: "Understand how to define Conditions for Plan Item enabiling and termination." + +--- + +Transitions in a CMMN case can happen in two ways: Either by external interaction or by events occurring and conditions being fulfilled. The former refers to any explicit interaction with a case that is triggered from the outside. For example, a human worker completing a human task would be such an interaction. Completing a task means that the corresponding plan item is completed, depending on the actual case model, the case instance may complete. + +Similar changes in the state of a case instance may be driven by events occurring or conditions getting fulfilled. For example, it is possible to define that when one plan item completes, another is enabled. Similarly, a plan item can terminate when an event triggers. When specifying plan items, this concept is referred to as *entry criteria* and *exit criteria*. These criteria are always defined for individual plan items, not for plan item definitions. For example, the following case model fragment defines an entry criterion for the plan item `PlanItem_HumanTask_1`: + +```xml + + + + + + + + + + + complete + + + + + + + +``` + +Similarly, `PlanItem_HumanTask_1` with an exit criterion looks as follows: + +```xml + + + +``` + +The conditions and events behind entry and exit criteria can be expressed by so-called *sentries*. Refer to the [Sentry][sentry] section on how sentries work and what kind of conditions can be expressed by them. + +When any entry criterion is met, the plan item it is defined for performs the state transition from `AVAILABLE` to `ENABLED`. While the plan item is not in state `AVAILABLE`, entry criteria are not relevant. + +Any exit criteria can only be met when the corresponding plan item is in the `ACTIVE` state. +When any exit criterion is met, a plan item performs a state transition from `ACTIVE` to state `TERMINATED`. + +The details of plan item states and transitions are provided in the [Plan Item Lifecycles][lifecycle] section. + +[sentry]: ../sentry.md +[lifecycle]: ./lifecycle.md diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/concepts/index.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/concepts/index.md new file mode 100644 index 0000000..06bbfad --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/concepts/index.md @@ -0,0 +1,13 @@ +--- + +title: "CMMN Concepts" +sidebar_position: 20 + +menu: + main: + identifier: "cmmn-ref-concepts" + parent: "cmmn-ref" + +--- + +This section introduces the concepts behind CMMN. Understanding these concepts is important when designing and implementing Cases with CMMN. \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/concepts/lifecycle.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/concepts/lifecycle.md new file mode 100644 index 0000000..764526e --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/concepts/lifecycle.md @@ -0,0 +1,212 @@ +--- + +title: 'Plan Item Lifecycles' +sidebar_position: 20 + +menu: + main: + identifier: "cmmn-ref-concepts-lifecycle" + parent: "cmmn-ref-concepts" + description: "Understand the Lifecycle of Plan Items." + +--- + +CMMN case instances and plan items go through a lifecycle of states during their execution. Depending on their state, different actions may be carried out to interact with them. Moreover, state transitions may automatically trigger changes in other plan items. The concrete lifecycle of a plan item depends on its plan item definition. + +The following descriptions cover the CMMN lifecycles as supported by the Operaton engine. This is a subset of states and transitions that the CMMN standard defines. Any state or transition that is currently not supported is marked in grey. + +The descriptions in this section are general for the constructs they describe. Considerations that are specific for individual plan item definitions can be found in the respective sections of this guide. + +## Lifecycles By Example + +To understand the role lifecycles play for CMMN execution, consider the following case: + +![Example img](../../../../assets/documentation/reference/cmmn11/concepts/example-lifecycle-case.png) + +This case contains two human tasks *Task A* and *Task B* that are connected by a sentry. The sentry expresses that Task B can be enacted when Task A finishes. This is formally specified by lifecycles. In our example, the following steps might take place: + +1. A user instantiates the case by `caseService.createCaseInstanceByKey("case");`. A new case instance is created in state `ACTIVE`. +2. Two instances for each human task are automatically created, both in state `AVAILABLE`. +3. Task A does not have a condition to start, so it immediately reaches state `ENABLED`. Note that the steps 1 to 3 all happens synchronously with the `caseService` invocation from step 1. The case is now in the following state: +
+ ![Example img](../../../../assets/documentation/reference/cmmn11/concepts/lifecycle-example-1.png) +
+4. A user manually starts Task A by calling `caseService.manuallyStartCaseExecution(taskAExecutionId);`. As a consequence, Task A reaches state `ACTIVE` and a task instance is added to the assignee's task list. Note that starting a task is only allowed if that task is in state `ENABLED`. Thus, trying to manually start Task B here by `caseService.manuallyStartCaseExecution(taskBExecutionId);` would fail. The state is now: +
+![Example img](../../../../assets/documentation/reference/cmmn11/concepts/lifecycle-example-2.png) +
+5. The assignee completes the task instance by calling `taskService.complete(taskId);`. Task A reaches the state `COMPLETED`. +6. Task A's state transition triggers Task B's sentry. In consequence, Task B becomes `ENABLED`. This happens synchronously in the invocation from step 5. Accordingly, the case's new state is: +
+ ![Example img](../../../../assets/documentation/reference/cmmn11/concepts/lifecycle-example-3.png) +
+7. Similar to Task A, a user may now use the `CaseService` and `TaskService` to start Task B, complete the corresponding task instance, and complete Task B. Ultimately, Task B reaches the state `COMPLETED`. +8. With both tasks in state `COMPLETED`, the case instance automatically reaches the state `COMPLETED` as well. The state has case has reached the following state: +
+ ![Example img](../../../../assets/documentation/reference/cmmn11/concepts/lifecycle-example-4.png) +
+9. A user may close the case instance by invoking `caseService.closeCaseInstance(caseInstanceId);`. The case instance reaches the state `CLOSED`. + +Notice how the lifecycle states define the overall state of the case and restrict the interactions that are possible. For example, the tasks A and B can only be worked on when in state `ACTIVE`. Before, they go through states `AVAILABLE` and `ENABLED`, which represent that conditions for working on the task are not yet met, for example that the task was not manually started or that a sentry is not fulfilled yet. + +This formal lifecycle model is exposed via the `CaseService` API in Operaton. Not only is it possible to trigger state transitions as in the code examples above. By making a case instance or case execution query, the current lifecycles state of a plan items are exposed. For example, the following code gets the state of the plan item for Task A: + +```java +CaseExecution caseExecution = caseService.createCaseExecutionQuery().activityId("taskA").singleResult(); +caseExecution.isAvailable(); +caseExecution.isActive(); +caseExecution.isCompleted(); +... +``` + +Note that a `CaseExecution` object corresponds to a plan item, here the plan item for Task A. + +## Case Instance Lifecycle + +*Case instance* refers to an instance of the case plan model. More specific, it is an instance of the single top-level stage in a case definition. The lifecycle of a case instance is the following: + +![Example img](../../../../assets/documentation/reference/cmmn11/concepts/CaseInstanceLifecycle.png) + +States: + + + + + + + + + + + + + + + + + + + + + + +
StateDescription
+ active + + The state active is the initial state when a case is instantiated via the CaseService API. Subsequently, all plan items defined in the case plan model are created and enter the state available. +
+ completed + + The transition complete automatically triggers when all plan items contained in the case plan model are completed, terminated, or disabled. With automatic completion enabled, only required plan items have to reach theses states. Furthermore, it is possible to manually complete a case instance via the CaseService API if it has no active tasks or stages and all required plan items are either completed, terminated, or disabled. +
+ terminated + + The transition terminate automatically triggers when the case instance's exit criteria are fulfilled. Furthermore, it is possible to manually terminate an active case instance via the CaseService API. +
+ closed + + A case instance can be manually closed at any time via the CaseService API. This removes the case instance from the runtime database. +
+ +## Task/Stage Lifecycle + +The lifecycle of a task or stage plan item is the following: + +![Example img](../../../../assets/documentation/reference/cmmn11/concepts/TaskStageLifecycle.png) + +States: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
StateDescription
+ available + + A task/stage becomes available as soon as the stage it is contained in becomes active. +
+ enabled + + A task or stage becomes enabled as soon as any of its entry criteria is fulfilled. If this is given when a the task/stage becomes available, it immediately becomes enabled or, depending on its manual activation rule, active. +
+ disabled + + A task or stage can be disabled by using the CaseService API. While an enabled task prevents the containing stage from completion, disabling contained tasks is one way of making a stage completable. Similarly, a disabled task/stage can be re-enabled using the CaseService API. +
+ active + + When a task or stage becomes active, its actual work is performed. For a stage, all contained plan items are instantiated. For a task, its actual work is issued, e.g., for a human task, a task instance is created and needs to be worked on by a user. In order for a task or stage to become active, at least one entry criterion has to be fulfilled. Activation can either be performed manually by a human worker using the CaseService API if the manualActivation rule is specified or automatically if not manualActivation rule is specified. +
+ completed + + The complete transition triggers for a task when its actual work is done. For a stage, this transition triggers when all contained tasks/stages are either completed, terminated, or disabled. With automatic completion enabled, only required plan items have to reach theses states. A task/stage in state completed is removed from the runtime database. +
+ terminated + + The exit transition triggers when the task's/stage's exit criteria are met or when the parent (Case instance or a stage) is terminated. Furthermore, it is possible to manually terminate an active stage/task via the CaseService API. A task/stage in state terminated is removed from the runtime database. +
+ +## Milestone Lifecycle + +The lifecycle of a milestone plan item is the following: + +![Example img](../../../../assets/documentation/reference/cmmn11/concepts/MilestoneLifecycle.png) + +States + + + + + + + + + + + + + + + + + + + +
StateDescription
+ available + + A milestone becomes available as soon as the stage it is contained in becomes active. +
+ completed + + The transition occur automatically triggers when all entry criteria of the milestone are fulfilled. +
+ terminated + + It is possible to manually terminate an available milestone via the CaseService API. A task/stage in state terminated is removed from the runtime database. +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/concepts/plan-items.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/concepts/plan-items.md new file mode 100644 index 0000000..836a018 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/concepts/plan-items.md @@ -0,0 +1,37 @@ +--- + +title: 'Plan Items and Item Definitions' +sidebar_position: 10 + +menu: + main: + identifier: "cmmn-ref-concepts-plan-items-and-definitions" + parent: "cmmn-ref-concepts" + description: "Understand how to compose a Case out of different Tasks." + +--- + +CMMN differentiates between *plan items* and *plan item definitions*. While plan items represent actual units of work that are enacted as part of the case, plan item definitions serve as the blueprint for how a plan item has to be enacted. This concept simplifies reuse of plan item definitions and furthermore enables dynamic planning so that additional items can be generated from a definition at runtime. + +As an example, consider the following fragment of a case definition: + +```xml + + + + + + + + + + +``` + +This model contains one plan item definition, namely the `humanTask` element. This definition is referenced by two plan items, `PlanItem_HumanTask_1` and `PlanItem_HumanTask_2`. When a new case of this model is created, there will be two human task instances, one for each plan item. The plan item definition is the single point at which the human task is configured. Thus, the assignee specification by the attribute `operaton:assignee="kermit"` is valid for both plan items. + +Accordingly, a case plan model that contains plan item definitions but no plan items will appear as a case with no tasks at runtime. + +Apart from reuse of configuration, plan item definitions can be instantiated at runtime, typically referred to as *planning*. Planning allows users to create plan items of a well-defined set of plan item definitions dynamically as needed. Note that planning is currently not supported by the Operaton engine. + +This reference describes, if not otherwise noted, the plan item definitions supported by the Operaton engine. Whenever there is a consideration of runtime state, it is assumed that a plan item referencing that definition exists. diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/custom-extensions/index.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/custom-extensions/index.md new file mode 100644 index 0000000..382b21b --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/custom-extensions/index.md @@ -0,0 +1,13 @@ +--- + +title: 'Extension Reference' +sidebar_position: 80 + +menu: + main: + identifier: "cmmn-ref-extensions" + parent: "cmmn-ref" + +--- + +Operaton extends CMMN with custom Extension Elements and Attributes defined in the `http://operaton.org/schema/1.0/cmmn` namespace. diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/custom-extensions/operaton-attributes.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/custom-extensions/operaton-attributes.md new file mode 100644 index 0000000..6889487 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/custom-extensions/operaton-attributes.md @@ -0,0 +1,782 @@ +--- + +title: 'Extension Attributes' +sidebar_position: 20 + +menu: + main: + identifier: "cmmn-ref-extensions-attributes" + parent: "cmmn-ref-extensions" + description: "Reference of Operaton Extension Attributes for CMMN." + +--- + +The following attributes are extension attributes for the `camunda` namespace `http://operaton.org/schema/1.0/cmmn`. + +## assignee + + + + + + + + + + + + + + + + + + + + + + +
Description + This attribute specifies a performer of a Human Task. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + The name of a performer as java.lang.String or an expression which evaluates to a java.lang.String e.g., ```${perfomer``` +
Default Value
CMMN 1.1 Elements + Human Task +
+ + +## candidateGroups + + + + + + + + + + + + + + + + + + + + + + +
Description + This attribute specifies which group(s) will be candidate for performing the Human Task. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + Comma separated list of group ids as java.lang.String or expressions that evaluate to a java.lang.String or a java.util.Collection of java.lang.String, e.g., management or management, ```${accountancyGroupId()}``` +
Default Value
CMMN 1.1 Elements + Human Task +
+ +## candidateUsers + + + + + + + + + + + + + + + + + + + + + + +
Description + This attribute specifies which user(s) will be candidate for performing the Human Task. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + Comma separated list of user ids as java.lang.String or expressions that evaluate to a java.lang.String or a java.util.Collection of java.lang.String, e.g., kermit, gonzo or ```${ldapService.findAllSales()}``` +
Default Value
CMMN 1.1 Elements + Human Task +
+ +## caseBinding + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + This attribute specifies which case definition version should be called inside the case task. +
Typejava.lang.String
Possible Values + latest, deployment, version +
Constraints + If the value is set to version the attribute operaton:caseVersion is required, see Case Binding for more information. +
Default Value
CMMN 1.1 Elements + Case Task +
+ +## caseTenantId + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the tenant id of the case definition which is to be resolved by a case task, see Case Tenant Id for more information. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + A concrete tenant id or an expression which evaluates to a java.lang.String e.g., ```${caseExecution.tenantId``` +
Default Value
CMMN 1.1 Elements + Case Task +
+ +## caseVersion + + + + + + + + + + + + + + + + + + + + + + +
Description + This attribute explicitly defines which case definition version should be called inside the case task. +
Typejava.lang.Integer or org.operaton.bpm.engine.delegate.Expression
Possible Values + All deployed version numbers of the case definition to call or an expression which evaluates to a java.lang.Integer +
Default Value
CMMN 1.1 Elements + Case Task +
+ +## class + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies which Java class will be executed at runtime. The stated class must implement a Java delegate interface. +
Typejava.lang.String
Possible Values + Fully qualified Java class name of a class which implements a Java Delegate interface, e.g., org.operaton.bpm.MyJavaDelegate +
Default Value
CMMN 1.1 Elements + operaton:variableListener, + operaton:caseExecutionListener +
+ +## decisionBinding + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + This attribute specifies which decision definition version should be evaluated inside the decision task. +
Typejava.lang.String
Possible Values + latest, deployment, version +
Constraints + If the value is set to version the attribute operaton:decisionVersion is required. +
Default Valuelatest
CMMN 1.1 Elements + Decision Task +
+ +## decisionTenantId + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the tenant id of the decision definition which is to be evaluated by a decision task, see Decision Tenant Id for more information. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + A concrete tenant id or an expression which evaluates to a java.lang.String e.g., ```${caseExecution.tenantId``` +
Default Value
CMMN 1.1 Elements + Decision Task +
+ +## decisionVersion + + + + + + + + + + + + + + + + + + + + + + +
Description + This attribute explicitly defines which decision definition version should be called inside the decision task. +
Typejava.lang.Integer or org.operaton.bpm.engine.delegate.Expression
Possible Values + All deployed version numbers of the decision definition to call or an expression which evaluates to a java.lang.Integer +
Default Value
CMMN 1.1 Elements + Decision Task +
+ +## delegateExpression + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute allows specification of an expression which must resolve to an object that implements the corresponding interface (see delegation code). +
Typeorg.operaton.bpm.engine.delegate.Expression
Possible Values + Expression which evaluates to a Java class implementing a delegation interface, e.g., ```${myVariableListener```. +
Default Value
CMMN 1.1 Elements + operaton:variableListener, + operaton:caseExecutionListener +
+ + +## dueDate + + + + + + + + + + + + + + + + + + + + + + +
Description + This attribute specifies the initial due date of a Human Task when it is created. +
Typeorg.operaton.bpm.engine.delegate.Expression
Possible Values + An expression which evaluates to a java.util.Date, java.util.String (ISO 8601 formatted) or null, e.g., ```${dueDate``` +
Default Value
CMMN 1.1 Elements + Human Task +
+ + +## expression + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute defines an expression which will be evaluated at runtime. +
Typeorg.operaton.bpm.engine.delegate.Expression
Possible Values + Expression, e.g., ```${gender == 'male' ? 'Mr.' : 'Mrs.'``` or ```#{printer.printMessage()}``` +
Default Value
CMMN 1.1 Elements + operaton:variableListener, + operaton:caseExecutionListener +
+ +## formKey + + + + + + + + + + + + + + + + + + + + + + +
Description + This attribute specifies a form resource. See task forms for more information. +
Typejava.lang.String
Possible Values + A java.lang.String of a form resource which can be evaluated by the Tasklist +
Default Value
CMMN 1.1 Elements + Human Task +
+ +## historyTimeToLive + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the history time to live (in days) for the case definition. It is used within History cleanup. +
Typejava.lang.Integer or java.lang.String
Possible Values + Any non-negative integer number or string containing a time in days defined by the ISO-8601 date format. +
Default Valuenull - means that case definition history won't ever be removed during history cleanup run
CMMN 1.1 Elements + Case +
+ +## mapDecisionResult + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute references which built-in Decision Result Mapper is used to pass the result of an evaluated decision to a case variable. It should be used in combination with operaton:resultVariable. +
Typejava.lang.String
Possible Values + singleEntry, singleResult, collectEntries, resultList +
Default ValueresultList
CMMN 1.1 Elements + Decision Task +
+ +## priority + + + + + + + + + + + + + + + + + + + + + + +
Description + This attribute specifies the initial priority of a Human Task when it is created. +
Typeorg.operaton.bpm.engine.delegate.Expression
Possible Values + An expression which evaluates to a java.lang.Number or a java.lang.String which represents a number or null, e.g., ```${priority``` +
Default Value
CMMN 1.1 Elements + Human Task +
+ +## processBinding + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + This attribute specifies which process definition version should be called inside the process task. +
Typejava.lang.String
Possible Values + latest, deployment, version +
Constraints + If the value is set to version the attribute operaton:processVersion is required, see Process Binding for more information. +
Default Value
CMMN 1.1 Elements + Process Task +
+ +## processTenantId + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the tenant id of the process definition which is to be resolved by a process task, see Process Tenant Id for more information. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + A concrete tenant id or an expression which evaluates to a java.lang.String e.g., ```${caseExecution.tenantId``` +
Default Value
CMMN 1.1 Elements + Process Task +
+ +## processVersion + + + + + + + + + + + + + + + + + + + + + + +
Description + This attribute explicitly defines which process definition version should be called inside the process task. +
Typejava.lang.Integer or org.operaton.bpm.engine.delegate.Expression
Possible Values + All deployed version numbers of the process definition to call or an expression which evaluates to a java.lang.Integer +
Default Value
CMMN 1.1 Elements + Process Task +
+ +## repeatOnStandardEvent + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies a transition in which the repetition rule of a stage or task is evaluated. +
+
+ Note that this attribute is omitted when the stage or task to repeat has at least one entry criterion. +
Typejava.lang.String
Possible Values + create, enable, disable, reenable, manualStart, start, complete, exit +
Default Valuecomplete
CMMN 1.1 Elements + Repetition Rule +
+ +## resource + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies an external resource. The resource can be part of the deployment or + exists in the classpath. To specify the type of resource, a URL scheme like prefix + deployment:// resp. classpath:// can be supplied. If the scheme is + omitted, it is assumed that the resource exists in the classpath. +
Typejava.lang.String or org.operaton.bpm.engine.delegate.Expression
Possible Values + The path to a resource or an expression which returns the path. Optional the path can + start with an URL like scheme classpath:// or deployment:// to + specify where to find the resource. If omitted the resource is assumed to exists in the + classpath. +
Default Value
CMMN 1.1 Elements + operaton:variableListener, + operaton:caseExecutionListener +
+ +## resultVariable + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the case variable in which the returned decision result is saved. It can be used in combination with operaton:mapDecisionResult to define a decision result mapping. +
Typejava.lang.String
Possible Values + The name of a case variable to save the return value +
Default Value
CMMN 1.1 Elements + Decision Task +
+ +## variableName + + + + + + + + + + + + + + +
Description + The variable name that is attached to element operaton:variableOnPart for which the sentry listens. Sentry is evaluated when the variable event transition occurs. +
Typejava.lang.String
Operaton extension element + operaton:variableOnPart +
\ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/custom-extensions/operaton-elements.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/custom-extensions/operaton-elements.md new file mode 100644 index 0000000..4a70d3e --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/custom-extensions/operaton-elements.md @@ -0,0 +1,600 @@ +--- + +title: 'Extension Elements' +sidebar_position: 10 + +menu: + main: + identifier: "cmmn-ref-extensions-elements" + parent: "cmmn-ref-extensions" + description: "Reference of Operaton Extension Elements for CMMN." + +--- + + +The following elements are extension elements for the `camunda` namespace `http://operaton.org/schema/1.0/cmmn`. + +## caseExecutionListener + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Add an execution listener to an event in the lifecycle of a case item. +
Attributesevent + The type of the lifecycle event for which the listener is called +
class + see operaton:class +
expression + see operaton:expression +
delegateExpression + see operaton:delegateExpression +
Constraints + The event attribute is required and must be one of the lifecycle events that are valid for the plan item it is defined on. For regular tasks, these are: create, enable, disable, reenable, start, manualStart, complete, reactivate, terminate, exit, parentTerminate, suspend, resume, parentSuspend, parentSuspend, close, occur +
+ One of the attributes class, expression or delegateExpression is mandatory +
Parent elements + Case, + Human Task, + Process Task, + Case Task, + Stage, + Milestone, +
Child elements + operaton:field, + operaton:script +
+ +## expression + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Defines an expression to inject in delegated classes (see Field Injection). +
Attributes + – +
Text Content + The expression to inject +
Constraints + – +
Parent elements + operaton:field +
Child elements + – +
+ +## field + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Defines the value to inject in delegated classes (see Field Injection). +
Attributesname + The name of the field +
expressionThe value of the field as expression
stringValueThe value of the field as String
Constraints + Only one attribute of stringValue and expression or one of the child elements string and expression can be used +
Parent elements + operaton:variableListener, + operaton:caseExecutionListener +
Child elements + operaton:expression, + operaton:string +
+ +## in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + This element specifies variables which should be passed to the sub instance (process instance or case instance), see passing variables to called process or passing variables to called case for more information. +
Attributessource + A name of a variable to be passed in +
sourceExpression + An expression to be evaluated and passed in +
variables + Can be set to all to pass all variables in +
target + Name of the variable inside the sub instance +
local + Can be set to true to only pass local variables of the case execution that executes this case/process task instance. +
businessKey + Set the business key of the sub instance +
Constraints + Only one of the attributes source, sourceExpression, variables or businessKey can be used +
+ The attribute target is required if the source or sourceExpression attribute is used +
Parent elements + Process Task, + Case Task +
Child elements + – +
+ + +## out + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + This element specifies variables which should be passed back from the sub instance (process instance or case instance), see passing variables to called process or passing variables to called case for more information. +
Attributessource + A name of a variable to be passed back +
sourceExpression + An expression to be evaluated and passed back +
variables + Can be set to all to pass all sub instance variables back +
target + Name of the variable inside the calling case instance +
Constraints + Only one of the attributes source, sourceExpression or variables can be used +
+ The attribute target is required if the source or sourceExpression attribute is used +
Parent elements + Process Task, + Case Task +
Child elements + – +
+ +## script + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + A script element. The script is executed and the return value is used as mapping value. +
AttributesscriptFormat + The format identifier, normally the language of the script source code +
resource + equivalent to + operaton:resource +
Constraints + The scriptFormat attribute is required +
+ If the resource attribute is used, no source code text content is allowed +
Parent elements + operaton:variableListener, + operaton:caseExecutionListener +
Child elements + – +
+ + +## string + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Defines a String value to inject in delegated classes (see Field Injection). +
Attributes + – +
Text Content + The String value to inject +
Constraints + – +
Parent elements + operaton:field +
Child elements + – +
+ +## taskListener + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Add a task listener to a task event. +
Attributesevent + The type of the event for which the listener is called +
class + see operaton:class +
expression + see operaton:expression +
delegateExpression + see operaton:delegateExpression +
Constraints + The event attribute is required and must be one of the task events: create, assignment, complete or delete +
+ One of the attributes class, expression or delegateExpression is mandatory +
Parent elements + Human Task +
Child elements + operaton:field, + operaton:script +
+ +## variableListener + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description + Adds custom code to listen to variable events such as the creation, update or deletion of a variable. A listener defined on a model scope (like the case plan model, a human task, etc.) is notified for all variable events that occur in this scope or any of its subordinate scopes. +
Attributesevent + The type of the event for which the listener is called +
class + see operaton:class +
expression + see operaton:expression +
delegateExpression + see operaton:delegateExpression +
Constraints + Valid values for the event attribute are create, update and delete. This attribute is optional and if left out, the listener is notified for all kinds of events. +
+ Either one of the attributes class, expression or delegateExpression, or a operaton:script child element is mandatory. +
Parent elements + Case Plan Model, + Stage, + Human Task, + Process Task, + Case Task +
Child elements + operaton:field, + operaton:script +
+ +## variableOnPart + + + + + + + + + + + + + + + + + + + + + + + +
Description + Add variableOnPart to sentry. see variableOnPart. +
AttributesvariableName + see operaton:variableName +
Constraints + variableEvent element and variableName attribute are mandatory fields when the variableOnPart is defined in a sentry. +
Parent element + Sentries +
Child element + operaton:variableEvent +
+ +## variableEvent + + + + + + + + + + + + + + +
Description + Add variableEvent to a VariableOnPart. A sentry is evaluated when the variableEvent transition occurs. +
Value + Valid values are create,update or delete +
Parent element + VariableOnPart +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/grouping-tasks/index.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/grouping-tasks/index.md new file mode 100644 index 0000000..8dca1ad --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/grouping-tasks/index.md @@ -0,0 +1,4 @@ +--- + +title: 'Grouping Tasks' +sidebar_position: 40 \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/grouping-tasks/stage.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/grouping-tasks/stage.md new file mode 100644 index 0000000..6d40317 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/grouping-tasks/stage.md @@ -0,0 +1,75 @@ +--- + +title: 'Stage' +sidebar_position: 10 + +menu: + main: + identifier: "cmmn-ref-grouping-stage" + parent: "cmmn-ref-grouping" + +--- + +A *stage* can contain other plan items like a human task, a process task, a case task or another stage. Stages may be considered 'episodes' of a case. However, stages are not necessarily planned sequentially but can also be active in parallel. + +If a stage is collapsed, only its name and a plus sign are displayed: + + + +If a stage is expanded, its plan items are displayed within its boundaries: + + + +A stage is defined in XML as follows: + +```xml + + + + + + +``` + +Furthermore, a case always refers to one stage as its *case plan model*. The case plan model defines the *outermost* stage of the case. This outermost stage also contains all plan item definitions that are used in the case. + +```xml + + + + + + + + + + + + + + + + +``` + +Note: The listed plan item definitions inside the `casePlanModel` are referenced by plan items in the case plan model itself (i.e., stage), as well as by plan items in nested stages. Plan item definitions must not be contained by any other stage than the case plan model. + +A stage in state `ENABLED` can be started manually using the `CaseService` as follows: + +```java +caseService.manuallyStartCaseExecution("aCaseExecutionId"); +``` + +When the stage becomes `ACTIVE`, the contained plan items are instantiated and reach the state `AVAILABLE`. A stage in this state always contains at least one stage or task instance in the state `AVAILABLE`, `ENABLED`, or `ACTIVE`. In other words, a stage completes automatically if a user has no option to do further work on its contained plan items. This means that if a contained plan item completes or is disabled, the stage is notified about that state transition and checks if it is able to complete. A stage instance can only complete if there are no contained plan items in the state `ACTIVE`, and all are either in state `DISABLED` or `COMPLETED`. In case the check succeeds, the stage instance completes. + +## Operaton Extensions + + + + + + +
Extension Elements + operaton:caseExecutionListener, + operaton:variableListener +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/index.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/index.md new file mode 100644 index 0000000..4e8b531 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/index.md @@ -0,0 +1,271 @@ +--- + +title: 'CMMN 1.1' +sidebar_position: 40 +layout: "single" + +--- + +This page provides an overview of the CMMN 1.1 elements and the current coverage of the process engine. + +The CMMN editor is disabled using a flag per default in the latest version (4.5) of the Camunda Modeler. But you have full power to modify the flags and therefore you can still enable it if you wish! + +In order to do that, you need to set a โ€œflagโ€. You can choose between two options to do that: + +#### Option 1. Pass the `--no-disable-cmmn` flag via the Comand Line Interface + +When starting the Modeler, you need to pass the `--no-disable-cmmn` via the Command Line. +So for example on linux, you run a command: + +```$ ./camunda-modeler --no-disable-cmmn``` + +Likewise for example on Windows, you could start the .exe over the commandLine with the flag, or you could create a shortcut to the camunda-modeler.exe and append `--no-disable-cmmn` to the `target` of the shortcut. + +#### Option 2. Define a flags.json file + +You can locally create a file called `flags.json`, which defines the flags which the Camunda-Modeler should pick up when starting. In the file you would need to save the following text content: + +``` +{ + "disable-cmmn": false +} +``` + +The `flags.json` file needs to be saved either in your user-data-directory or application-data-directory. + +There are more flags and therefore more options how to customize the Camunda Modeler to your specific use-case with flags. Please refer to the [flags documentation](https://docs.camunda.io/docs/components/modeler/desktop-modeler/flags/) to find out more. + +> Thx Max for this detailed information, which comes from this [forum post](https://forum.camunda.io/t/how-to-access-cmmn-in-the-modeler/25127/4). + +# Coverage + +The elements marked in orange are supported. + +## Definitions + +
+
+
+

Grouping

+
+ + +
+
+ + +
+
+ +
+
+
+
+
+

Tasks

+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ +
+
+
+
+
+

Event-Triggered Elements

+
+ + +
+
+ +
+
+ +
+
+ +
+
+
+

CaseFileItem

+
+ +
+
+
+
+ +## Markers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeMarker
+ Planning Table + + + Entry Criterion + + + Exit Criterion + + + AutoComplete + + + Manual Activation + + + Required + + + Repetition + +
Case Plan Model + + + + + + +
Stage + + + + + + + + + + + + + +
Task + + + + + + + + + + + +
Milestone + + + + + +
EventListener
CaseFileItem
PlanFragment
diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/auto-complete.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/auto-complete.md new file mode 100644 index 0000000..09a4a30 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/auto-complete.md @@ -0,0 +1,49 @@ +--- + +title: 'Auto Complete' +sidebar_position: 30 + +menu: + main: + identifier: "cmmn-ref-markers-auto-complete" + parent: "cmmn-ref-markers" + description: "Controls whether a Stage auto completes." + +--- + +**Can be used with**: [Stage](../grouping-tasks/stage.md), CasePlanModel + + + +The attribute `autoComplete` controls the completion of a stage instance. The following table describes the completion criteria of a stage instance based on the `autoComplete` property. + +* `autoComplete = true`: There are no children in the `ACTIVE` state, and all required (see Required Rule) children are `COMPLETED`, `DISABLED` or `TERMINATED`. +* `autoComplete = false`: There are no children in the `ACTIVE` state, and + * all children are `COMPLETED`, `DISABLED` or `TERMINATED`, or + * on manual completion using `CaseService#completeCaseExecution`, all required (see Required Rule) children are `COMPLETED`, `DISABLED` or `TERMINATED`. + +For a CasePlanModel the property `autoComplete` can be set as follows: + +```xml + + + + ... + + + +``` + +For a Stage, the following XML can be used: + +```xml + + + + + + + + + +``` diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/index.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/index.md new file mode 100644 index 0000000..4c2cd41 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/index.md @@ -0,0 +1,6 @@ +--- + +title: 'Markers' +sidebar_position: 70 + +--- \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/manual-activation-rule.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/manual-activation-rule.md new file mode 100644 index 0000000..80b7fb4 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/manual-activation-rule.md @@ -0,0 +1,71 @@ +--- + +title: 'Manual Activation Rule' +sidebar_position: 10 + +menu: + main: + identifier: "cmmn-ref-markers-manual-activation" + parent: "cmmn-ref-markers" + description: "Controls whether a Task must be manually activated by a user." + +--- + +**Can be used with**: [Task](../tasks/index.md), [Stage](../grouping-tasks/stage.md) + + + +Whether the actual work of a task or stage can be performed depends on its [entry criteria](../concepts/entry-exit-criteria.md). Given that an entry criterion is fulfilled, there are two ways to activate a task: + +* By manual activation +* By automatic activation + +Automatic activation is the default behavior in which it is not required that a user manually activates a task. In operaton, manual activation can be done by using the `CaseService` API with `caseService.manuallyStartCaseExecution(caseExecutionId)`. By specifying a *manual activation rule*, it is possible to omit this step or make it depend on case variable payload. With manual activation, a user can decide to activate a task or instead disable it. A task that is automatically activated *must* be carried out. + +In XML, a manual activation rule can be specified for an individual plan item or for a plan item definition. For a plan item it looks as follows: + +```xml + + + + ${true} + + + + + + + +``` + +The specified expression `${true}` evaluates to the boolean value `true` and means that the plan item should become active in only through the human intervention. + +For a plan item definition, the following XML can be used: + +```xml + + + + + + ${true} + + + +``` + +The rule specified in the `humanTask` element is valid for all plan items that reference it, here `PlanItem_HumanTask_1`. + +:::warning[Tricky Specification] +Automatic activation is the default behavior. Thus, by specifying the element `manualActivationRule` you can express exceptions from that default for cases in which a task `does` need a manual activation. +::: + +As with any expression, you can use case variables to determine the result of a manual activation rule. The following snippet expresses that manual activation is required when a variable `var` has a value greater than 100: + +```xml + + ${var > 100} + +``` + +In terms of the [task/stage lifecycle](../concepts/lifecycle.md), manual activation corresponds to the transition from `AVAILABLE` to `ENABLED` when an entry criterion occurs, and from `ENABLED` to `ACTIVE` when the task is manually activated. In contrast, automatic activation corresponds to the direct transition from `AVAILABLE` to `ACTIVE` that fires immediately when an entry criterion occurs. diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/repetition-rule.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/repetition-rule.md new file mode 100644 index 0000000..6ebc92f --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/repetition-rule.md @@ -0,0 +1,214 @@ +--- + +title: 'Repetition Rule' +sidebar_position: 40 + +menu: + main: + identifier: "cmmn-ref-markers-repetition-rule" + parent: "cmmn-ref-markers" + description: "Controls whether a Task, Stage or Milestone can have repetitions." + +--- + +**Can be used with**: [Task](../tasks/index.md), [Stage](../grouping-tasks/stage.md), [Milestone](../milestone.md) + + + +Under which conditions a plan item is *repeatable* can be specified by a *repetition rule*. + +In XML, a repetition rule can be specified for an individual plan item or for a plan item definition. For a plan item it looks as follows: + +```xml + + + + + + + + + +``` + +For a plan item definition, the following XML can be used: + +```xml + + + + + + + + + +``` + +The rule specified in the `humanTask` element is valid for all plan items that reference it, here `PlanItem_HumanTask_1`. + +The behavior of the repetition relies on the presence of entry criteria. If there is no entry criterion defined, then the repetition rule is evaluated by default in the transition into the `COMPLETED` state. Otherwise the repetition rule is only evaluated, when an entry criterion is satisfied and the plan item instance transitions away from the state `AVAILABLE` into the next state. + + +## Repetition on completion + +To repeat a task or stage when it gets completed a repetition rule must be defined and the task or stage must not have any entry criteria. Whenever a task or stage instance transitions into the `COMPLETED` state, the repetition rule is evaluated and if it evaluates to `true` a new instance of the task or stage is created. The new instance transitions into the `AVAILABLE` state. + +:::note[Heads Up!] +It is not advisable to define a repetition rule without entry criteria on a milestone. Since a milestone without entry criteria gets fulfilled upon its instantiation, this would lead to an infinite loop. +::: + +Consider the following excerpt of a CMMN case definition: + +![Example img](../../../../assets/documentation/reference/cmmn11/markers/repetition-rule-example.png) + +The corresponding XML representation could look like this: + +```xml + + + + + + + + + + + + + + + + + +``` + +This case contains a human task *A*. Task *A* has a repetition rule indicating that the task is repeatable as long as the variable `score` is less than `50`. + +In our example, the following steps might take place: + +1. A user instantiates the case and sets the variable `score` to the value `10`. +2. An instance *A* for the human task is created. The instance *A* transitions into state `ENABLED`. +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-1.png) +3. A user manually starts task *A* and the instance reaches the state `ACTIVE`. +4. A user completes task *A*. During the transition into state `COMPLETED`, the repetition rule is evaluated. As a consequence that the variable `score` is less than `50`, a new instance `A'` of the corresponding task is created. The new instance moves into state `ENABLED`. +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-2.png) +5. Once again, a user manually starts and completes task *A'*. Since the variable `score` is still less than `50`, the repetition rule evaluates to `true` when *A'* transitions into state `COMPLETED`. As a result, a new instance *A''* is created. +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-3.png) +6. A user changes the value of the variable `score` to `55`. +7. A user manually starts and completes task *A''* and the instance reaches the state `COMPLETED`. Since the variable `score` has been set to `55` the repetition rule evaluates to `false` and a new instance is not created. +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-4.png) +8. From now on, no more repetitions of *A* can occur. + +The transition in which the repetition rule is evaluated can be changed by a Operaton extension attribute named `operaton:repeatOnStandardEvent`. For a task it looks as follows: + +```xml + + + + + + + + + + + + + + + + + +``` + +This means that the repetition rule is evaluated in the transition `disable`. So, whenever an instance of the defined human task gets disabled, the repetition rule is evaluated and if this rule evaluates to `true`, a new instance is created. As a consequence, the repetition rule is not evaluated when an instance transitions in state `COMPLETED` anymore. + +## Repetition triggered by entry criteria + +A trigger for a repetition of a milestone, stage or task is a satisfied [sentry](../sentry.md), that is referenced as [entry criterion](../concepts/entry-exit-criteria.md). Whenever an entry criterion is satisfied, the repetition rule is evaluated and if it evaluates to `true`, a new instance of the milestone, stage or task is created. The new instance transitions into the `AVAILABLE` state. The *previous* instance, in case of a milestone instance, transitions in state `COMPLETED` and, in case of a stage or task instance, into the `ACTIVE` or `ENABLED` state (depending on the [manual activation rule](../markers/manual-activation-rule.md)) because the entry criterion is satisfied. + +Consider the following excerpt of a CMMN case definition, where the repetition of the tasks depends on the occurrence of an entry criterion: + +![Example img](../../../../assets/documentation/reference/cmmn11/markers/repetition-rule-example.png) + +The corresponding XML representation could look like this: + +```xml + + + + + + + + + + + + + + ... + + + + + complete + + + + + + + + + + + + + + +``` + +This case contains two human tasks *A* and *B* that are connected by a sentry. Task *B* gets `ENABLED` if any conditions are fulfilled and task *A* gets `ENABLED` if an instance of `B` completes. Furthermore both tasks are repeatable as long as the variable `score` is less than `50`. + +In our example, the following steps might take place: + +1. A user instantiates the case and sets the variable `score` to the value `10`. +2. Two instances for each human task are automatically created and both transition in state `AVAILABLE`. +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-1.png) +1. When the entry criterion (*Sentry_1*) of instance *B* is satisfied, the task *B* reaches the state `ENABLED`. During the transition to the state `ENABLED`, the repetition rule is evaluated. As a consequence that the variable `score` is less than `50`, a new instance *B'* of the corresponding task is created. The instance *B'* moves into state `AVAILABLE`. +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-2.png) +1. A user manually starts and completes task *B* and the instance reaches the state `COMPLETED`. +2. The completion of instance *B* satisfies the entry criterion (*Sentry_2*) of *A*. In consequence, task *A* becomes `ENABLED` and a new instance *A'* is created, because the evaluation of the repetition rule during the transition returns `true`. +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-3.png) +1. A user changes the value of the variable `score` to `55`. +2. The entry criterion (*Sentry_1*) of instance *B'* is satisfied (once again). The instance *B'* reaches the state `ENABLED`. As a consequence that the variable `score` has been set to `55`, the repetition rule evaluates to `false`. So, a new instance is not created. +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-4.png) +1. A user manually starts and completes task *B'* and the instance reaches the state `COMPLETED`. +2. The completion of instance *B'* satisfies the entry criterion (*Sentry_2*) of *A'*. So that *A'* becomes `ENABLED` and a new instance of the corresponding task is not created, because the repetition rule evaluates to `false`. +![Example img](../../../../assets/documentation/reference/cmmn11/markers/state-5.png) +1. From now on, no more repetitions of *A* or *B* can occur. + + +## Operaton Extensions + + + + + + + + + + +
Attributes + operaton:repeatOnStandardEvent +
Note + The attribute operaton:repeatOnStandardEvent is ignored when a milestone, stage or task has at least one entry criterion. +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/required-rule.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/required-rule.md new file mode 100644 index 0000000..a033769 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/markers/required-rule.md @@ -0,0 +1,60 @@ +--- + +title: 'Required Rule' +sidebar_position: 20 + +menu: + main: + identifier: "cmmn-ref-markers-required" + parent: "cmmn-ref-markers" + description: "Controls whether a Task, Stage or Milestone is required to be performed." + +--- + +**Can be used with**: [Task](../tasks/index.md), [Stage](../grouping-tasks/stage.md) and [Milestone](../milestone.md) + + + +A plan item may be *required*, meaning that it has to reach an end-like state before the containing stage can complete. Whether a plan item is required can be specified by a *required rule*. + +This rule is evaluated when the milestone, stage or task is instantiated and transitions to the state `AVAILABLE`, and its result value of type `boolean` is maintained throughout the remainder of the case instance. If this rule evaluates to `true`, the plan item's parent stage instance must not transition to `COMPLETED` state unless the plan item is in the `COMPLETED`, `TERMINATED` or `DISABLED` state. For example, a task that has not yet been worked on, i.e., is in state `ENABLED`, prevents its containing stage to complete. If the rule is not present, then it is considered to be `false`. + +```xml + + + + ${true} + + + + + + + +``` + +The specified expression `${true}` evaluates to the boolean value `true` and means that the plan item is required. + +For a plan item definition, the following XML can be used: + +```xml + + + + + + ${true} + + + +``` + +The rule specified in the `humanTask` element is valid and individually evaluated for all plan items that reference it, here `PlanItem_HumanTask_1`. + +As with any expression, you can use case variables to determine the result of a required rule. The following snippet expresses that the plan item is required when a variable `var` has a value greater than 100: + +```xml + + ${var > 100} + +``` diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/migration/10-to-11.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/migration/10-to-11.md new file mode 100644 index 0000000..f94c894 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/migration/10-to-11.md @@ -0,0 +1,118 @@ +--- + +title: "1.0 to 1.1" +sidebar_position: 10 + +menu: + main: + identifier: "cmmn-10-to-11" + parent: "cmmn-migration-between-specification-version" + +--- + +In order to update existing CMMN 1.0 XMLs to valid CMMN 1.1 the following adjustments must be done. + +* The namespace must be updated as follows: + + + + + + + + + + + + + +
Affected ElementsDefinitions
CMMN 1.0<definitions xmlns="http://www.omg.org/spec/CMMN/20131201/MODEL">
CMMN 1.1<definitions xmlns="http://www.omg.org/spec/CMMN/20151109/MODEL">
+ +* The `` element from expressions must be removed: + + + + + + + + + + + + + +
Affected ElementsCondition
CMMN 1.0 + <condition> +
   + ```<body>${any-expression}<body>``` +
+ </condition> +
CMMN 1.1 + ```<condition>${any-expression}</condition>``` +
+This is relevant for all elements containing a condition like `IfPart`, `ManualActivationRule` and `RequiredRule` + +* The attributes `entryCriteriaRefs` and `exitCriteriaRefs` are dropped, so that the following adjustments must be done: + + + + + + + + + + + + + +
Affected ElementsPlanItem, CasePlanModel
CMMN 1.0 + <planItem id="A_PLAN_ITEM_ID" +
       + entryCriteriaRefs="Sentry_1 Sentry_2" +
       + exitCriteriaRefs="Sentry_3 Sentry4" /> +
CMMN 1.1 + <planItem id="A_PLAN_ITEM_ID"> +
   + <entryCriterion sentryRef="Sentry_1" /> +
   + <entryCriterion sentryRef="Sentry_2" /> +
   + <exitCriterion sentryRef="Sentry_3" /> +
   + <exitCriterion sentryRef="Sentry_4" /> +
+ </planItem> +
+ +* The attribute `description` is not available anymore. Instead of the `description` attribute use the `` element: + + + + + + + + + + + + + +
Affected ElementsAny CMMN element
CMMN 1.0 + <planItem id="A_PLAN_ITEM_ID" +
       + description="This is a description of the plan item..." /> +
CMMN 1.1 + <planItem id="A_PLAN_ITEM_ID"> +
   + <documentation> +
       + This is a description of the plan item... +
   + </documentation> +
+ </planItem> +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/migration/index.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/migration/index.md new file mode 100644 index 0000000..f3887fa --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/migration/index.md @@ -0,0 +1,4 @@ +--- + +title: 'Migration between Specification Versions' +sidebar_position: 90 \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/milestone.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/milestone.md new file mode 100644 index 0000000..5235b03 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/milestone.md @@ -0,0 +1,81 @@ +--- + +title: "Milestones" +sidebar_position: 50 + +menu: + main: + identifier: "cmmn-ref-milestones" + parent: "cmmn-ref" + +--- + +A *milestone* is used to represent achievable targets within the case. It is not associated with any work but rather marks that certain conditions have been reached within the case. As a milestone is a regular plan item definition, a milestone's completion may be used as entry criteria for other tasks and stages. This way, a milestone can be used to bring logical stages within a case into order. + + + +In XML, a milestone is defined as follows: + +```xml + +``` + +When referenced in a case plan, a milestone gets completed as soon as its entry criteria are fulfilled. This requires no human interaction. A more complete example of a milestone depending on the completion of a human task is the following: + +```xml + + + + + + + + + + + complete + + + + + + + + +``` + +In this case, the milestone will complete as soon as as the human task completes. + +A milestone cannot have exit criteria. + +
+

Always define Milestones with Entry Criteria

+

+ A milestone without entry criteria is fulfilled as soon as the stage it is contained in becomes active. For example, a milestone item that is defined on the case definition level is completed as soon as the case is instantiated. It is therefore advisable to define at least one entry criterion for a milestone plan item. +

+
+ +## Checking Milestones + +In order to check whether a milestone has occurred, the history service can be used. The following checks the state of a milestone instance: + +```java +HistoricCaseActivityInstance milestoneInstance = historyService + .createHistoricCaseActivityInstanceQuery() + .caseInstanceId("aCaseInstanceId") + .caseActivityId("theMilestone") + .singleResult(); + +milestoneInstance.isCompleted(); // true if milestone occurred +``` + +## Operaton Extensions + + + + + + +
Extension Elements + operaton:caseExecutionListener +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/sentry.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/sentry.md new file mode 100644 index 0000000..98a12f3 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/sentry.md @@ -0,0 +1,141 @@ +--- + +title: 'Sentries' +sidebar_position: 60 + +menu: + main: + identifier: "cmmn-ref-sentries" + parent: "cmmn-ref" + +--- + +A *sentry* captures the occurrence of a certain event occurring or a condition being fulfilled within a case. Sentries are used as [entry and exit criteria](../cmmn11/concepts/entry-exit-criteria.md). Note that the black and white diamonds represent the criteria. A sentry itself has no graphical representation. + + + + + +In XML, a sentry can be specified as follows: + +```xml + + + + + + + + complete + + + ${myVar > 100} + + + + +``` + +The above example defines a sentry that is fulfilled when the plan item `PlanItem_HumanTask_1` performs the state transition `complete` (note the `planItemOnPart` element) and a variable named `myVar` has a value greater than 100 (note the `ifPart` element). Furthermore, it serves as an [entry criterion](../cmmn11/concepts/entry-exit-criteria.md) for the plan item `PlanItem_HumanTask_2` that becomes `ENABLED` as soon as the sentry is fulfilled (note the `entryCriterion` child element of the element `PlanItem_HumanTask_2`). + +As conditions or event triggers, sentries may define the following elements: + +* **OnPart**: A trigger that occurs when a certain transition in the lifecycle of a plan item or a case file item is performed. +* **IfPart**: A condition that is checked when all OnParts are fulfilled. This condition is defined on case data. + +## OnPart + +OnParts are defined on lifecycle transitions for plan items or case file items. As the Operaton engine does not currently support case file items, it is only possible to use *plan item OnParts*. A sentry with an OnPart can be defined as follows: + +```xml + + + complete + + +``` + + +A `planItemOnPart` must always reference a plan item by the attribute `sourceRef`. This plan item must be contained by the same stage the sentry is defined in. The child element `standardEvent` can the identifier of any lifecycle transition from that plan item's lifecycle and that is supported by the Operaton engine. Note that different plan item definitions define different lifecycles. For details on valid lifecycle transitions, see the [Lifecycles](../cmmn11/concepts/lifecycle.md) section. + +As an alternative to `sourceRef`, the CMMN specification allows to define an attribute `sentryRef` responsible for referencing another sentry such that the onPart is fulfilled when the plan item that sentry references performs the *exit* state transition. This attribute is currently not supported by the Operaton engine. + +Note that it is possible to have any number of OnParts which allows to combine multiple events. All OnParts must be fulfilled for a sentry to occur, i.e., specifying multiple OnParts is a conjunction of multiple events. An OnPart is fulfilled as soon as the element it is defined on performs the specified lifecycle transition. It is irrelevant whether this element performs any other subsequent lifecycle transitions. + +## IfPart + +An IfPart defines an additional condition that is checked when all OnParts of the sentry are fulfilled. Only if the IfPart evaluates to `true`, the sentry is fulfilled. In Operaton, a sentry with an IfPart looks as follows: + +```xml + + + ${myVar > 100} + + +``` + +A sentry can have at most one IfPart and that IfPart can have at most one `condition` element. In the `condition` element, expression language must be used. In such an expression, case variables can be accessed by their name. The above example defines a condition that evaluates to `true` if there is a variable named `myVar` and that variable's value is greater than 100. + +In addition to variable names, the identifier `caseExecution` can be used to access the execution object for the stage that the sentry is defined in. The below example explicitly accesses a local variable of that execution: + +```xml + + + ${caseExecution.getVariableLocal("myVar") > 100} + + +``` +The CMMN specification allows to reference a case file item by the sentry attribute `contextRef`. This attribute is not supported by the Operaton engine and therefore ignored. + +The engine evaluates IfParts at every lifecycle transition of a plan item contained in the sentry's stage. That means, if an IfPart is not satisfied immediately when all OnParts have occurred, the sentry may still occur at any later lifecycle transition. + +## Operaton Extensions + +## VariableOnPart + +VariableOnParts are defined on lifecycle transitions of a variable. Sentry with VariableOnPart is evaluated when the variable undergoes a transition (create or delete or update). +A sentry can have more than one variableOnPart and can have at most one `variable event` each. +In Operaton, a sentry with a variableOnPart looks as follows + +``` + + + + create + + + +``` +In the above example, sentry is evaluated when the `create` event on the variable `variable_1` occurs. + +## VariableOnPart Evaluation + +Variable event that occurs in the scope of the execution triggers the sentry with variableOnParts in the following conditions: + +* `variableName` and `variableEvent` defined in the variableOnPart of the sentry matches the occurred variable event and the associated variable name. +* There exists no variable of the same name in the ancestory path of the sentry between the execution scope of the sentry and the execution scope of the variable event occurrence (the scope of the variable definition) + +Consider the below example in which there are two human tasks. `HumanTask1` is defined inside the case model and the `HumanTask_2` is defined inside the stage. +Each human task is attached with a entry criterion sentry and both the sentries are evaluated when the update event for the variable `foo` occurs. + +![Example img](../../../assets/documentation/reference/cmmn11/variableOnPart.png) + +Scenario 1: + +When a variable `foo` is set and updated in the scope of the case model, then both the sentries are evaluated and results in the transition of `HumanTask1` and `HumanTask_2` from available state to enabled state. + +Scenario 2: + +When there exists two variables of the same name `foo`, one defined in the scope of the case model and the other defined in the scope of stage. Then, sentries are triggered based on the scope of the update event. + +* When the variable `foo` is updated in the scope of the case model, then only the `HumanTask1` gets enabled. +* When the variable `foo` is updated in the scope of the stage, then only the `HumanTask_2` gets enabled. + +## Combining OnParts, IfParts and VariableOnParts + +Sentries allow a flexible definition of event occurrences and data-based conditions to be fulfilled. The following rules apply for combining OnParts, IfParts and VariableOnParts. + +* A valid sentry must have at least one of the sentry parts (OnPart or IfPart or VariableOnPart). +* A sentry without OnParts is fulfilled when the IfPart evaluates to `true` and all the VariableOnParts have occurred. +* A sentry without an IfPart is fulfilled when all OnParts and all the VariableOnParts have occurred. +* A sentry without variableOnPart is fullfilled when all the OnParts and IfPart are fulfilled. \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/case-task.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/case-task.md new file mode 100644 index 0000000..17a6d9c --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/case-task.md @@ -0,0 +1,224 @@ +--- + +title: 'Case Task' +sidebar_position: 30 + +menu: + main: + identifier: "cmmn-ref-tasks-case" + parent: "cmmn-ref-tasks" + description: "Allows invoking another CMMN Case." + +--- + +A *case task* can be used to call another CMMN case. + + + +A case task is a regular task that requires a `caseRef` attribute that references a case definition by its key. Such a case task can be defined as follows: + +```xml + +``` + +The referenced case definition is resolved at runtime. This means that the referenced case can be deployed independently from the calling case, if needed. + +A case task in state `ENABLED` can be started manually using the `CaseService` as follows: + +```java +caseService.manuallyStartCaseExecution("aCaseExecutionId"); +``` + +When the case task instance becomes `ACTIVE`, a new case instance will be launched. In the above example a new case instance of the case `checkCreditCase` will be created. + +If a case task is *blocking* (the attribute `isBlocking` is set to `true`), the case task remains `ACTIVE` until the case instance associated with the case task is completed. When the called case instance reaches the state `COMPLETED` for the first time, the corresponding case task completes automatically. It is not possible to complete a blocking case task manually. + +In case of a *non-blocking* (the attribute `isBlocking` is set to `false`) task, the case task does not wait for the case instance to complete, and completes immediately upon its activation and after calling its associated case. + +Note: The default value for the attribute `isBlocking` is `true`. To define a non-blocking case task the attribute `isBlocking` must be set to `false` as follows: + +```xml + +``` + +## Transactional Behavior + +The activation of the case task as well as the creation and execution of the case instance are performed in the same transaction. + +## Case Binding + +By default, the case task always creates a new case instance of the latest case definition with the specified key. To specify a different version of a case, it is possible to define a binding with the Operaton custom attribute `caseBinding`. The following values are allowed for the attribute `caseBinding`: + +* `latest`: use the latest case definition version (which is also the default behavior if the attribute is not defined) +* `deployment`: use the case definition version that is part of the calling case definition's deployment (note: this requires that a case with the specified key is deployed along with the calling case definition) +* `version`: use a fixed version of the case definition, in this case the attribute `caseVersion` is required + +The following is an example of a case task that calls the `checkCreditCase` case with version 3. + + +```xml + + +``` + +Note: It is also possible to use an expression for the attribute `caseVersion` that must resolve to an integer at runtime. + +## Case Tenant Id + +When the case task resolves the case definition to be called it must take into account multi tenancy. + +### Default Tenant Resolution +By default, the tenant id of the calling case definition is used to resolve the called case definition. +That is, if the calling case definition has no tenant id, then the case task resolves a case definition using the provided key, binding and without a tenant id (tenant id = null). +If the calling case definition has a tenant id, a case definition with the provided key and the same tenant id is resolved. + +Note that the tenant id of the calling case instance is not taken into account in the default behavior. + +### Explicit Tenant Resolution + +In some situations it may be useful to override this default behavior and specify the tenant id explicitly. + +The `operaton:caseTenantId` attribute allows to explicitly specify a tenant id: + +```xml + + +``` + +If the tenant id is not known at design time, an expression can be used as well: + +```xml + + +``` + +An expression also allows using the tenant id of the calling case instance instead of the calling case definition: + +```xml + + +``` + +## Exchange Variables + +The Operaton custom extensions elements `in` and `out` allow to exchange variables between the case task (in a case instance) and the case instance that it creates: `in` elements of a case task map variables of the calling case to input variables of the launched case instance and `out` mappings of a case task map output variables of the called case instance to variables of the calling case, e.g.,: + +```xml + + + + + + +``` + +In the above example, the value of the input variable `aCaseVariable` is passed to the newly created case instance. Inside the case instance, the value of the input variable `aCaseVariable` is available as `aSubCaseVariable`. After successful completion of the called case instance, the value of the output variable `aSubCaseVariable` is passed back to the calling case task where it can be accessed by the name `anotherCaseVariable`. + +In addition, it is also possible to use expressions: + +```xml + + + + + + +``` + +Assuming `y` is not updated by the called case instance, the following holds after the case task completes: `z = y+5 = x+5+5`. + +Source expressions are evaluated in the context of the called case instance. That means, in cases where calling and called case definitions belong to different process applications, context like Java classes, Spring or CDI beans are resolved from the process application the called case definition belongs to. + +Furthermore, the case task can be configured to pass all variables to the called case instance, and to pass all variables of the case instance back to the associated case task: + +```xml + + + + + + +``` + +Note: The variables keeps their names. + +It is possible, at runtime, to decide which variables are mapped into the called case instance. This can be declared with the `local` attribute on the `operaton:in` element as follows: + +```xml + + + + + +``` + +With this setting, only local variables are going to be mapped. These can be set via the `CaseService` before starting the case instance. Consider the following code to manually start a case task: + +``` +caseService + .withCaseExecution(caseTaskExecutionId) + .setVariable("var1", "abc") + .setVariableLocal("var2", "def") + .manualStart(); +``` + +With `local="true"` for the `in` mapping, only `var2` is mapped into the called case instance. + + +## Pass Business Key + +In addition to [exchanging variables](#exchange-variables), it is possible to pass a business key to the called case instance as well. Since a business key is immutable, this is one way mapping. It is not possible to have output mapping for a business key. + +The following example shows how the business key of the calling case instance can be passed to the called case instance. In this case, the calling case instance and the called case instance end up with the same business key. + +```xml + + + + + +``` + +If the business key of the called case instance should be different from the business key of the calling case instance, it is possible to use an expression that, for example, references a variable: + +```xml + + + + + +``` + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:caseBinding, + operaton:caseTenantId, + operaton:caseVersion +
Extension Elements + operaton:in, + operaton:out, + operaton:caseExecutionListener, + operaton:variableListener +
Constraints + The attribute operaton:caseVersion should only be set if + the attribute operaton:caseBinding equals version +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/decision-task.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/decision-task.md new file mode 100644 index 0000000..32254fd --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/decision-task.md @@ -0,0 +1,170 @@ +--- + +title: 'Decision Task' +sidebar_position: 40 + +menu: + main: + identifier: "cmmn-ref-tasks-decision" + parent: "cmmn-ref-tasks" + description: "Allows invoking a DMN 1.3 Decision." + +--- + +A *decision task* can be used to invoke a [DMN 1.3] decision from a case. + + + +A decision task is a regular task that requires a `decisionRef` attribute that references a +decision definition by its key. Such a decision task can be defined as follows: + +```xml + +``` +Instead of the `decisionRef` attribute it is also possible to use an expression which must evaluate +to a key of a decision definition at runtime. + +```xml + + ${resolveToCheckCreditDecision} + +``` + +One of the attributes `decisionRef` or `decisionRefExpression` must be present. + +The referenced decision definition is resolved at runtime. This means that the referenced decision can be deployed independently from the calling case, if needed. + +A decision task in state `ENABLED` can be started manually using the `CaseService` as follows: + +```java +caseService.manuallyStartCaseExecution("aCaseExecutionId"); +``` + +When the decision task instance becomes `ACTIVE`, the referenced decision is evaluated synchronously. As a consequence, the decision task is always executed as `blocking`, because the engine does not distinguish between a `blocking` and a `non-blocking` decision task. + + +## Transactional Behavior + +The activation of the decision task as well as the evaluation of the decision are performed in the same transaction. + + +## Decision Binding + +By default, the decision task always evaluates the latest decision definition with the specified key. To specify a different version of a decision, it is possible to define a binding with the Operaton custom attribute `decisionBinding`. The following values are allowed for the attribute `decisionBinding`: + +* `latest`: use the latest decision definition version (which is also the default behavior if the attribute is not defined) +* `deployment`: use the decision definition version that is part of the calling case definition's deployment (note: this requires that a decision with the specified key is deployed along with the calling case definition) +* `version`: use a fixed version of the decision definition, in this case the attribute `decisionVersion` is required + +The following is an example of a decision task that calls the `checkCreditDecision` decision with version 3. + + +```xml + + +``` + +Note: It is also possible to use an expression for the attribute `decisionVersion` that must resolve to an integer at runtime. + +## Decision Tenant Id + +When the decision task resolves the decision definition to be evaluated it must take into account multi tenancy. + +### Default Tenant Resolution +By default, the tenant id of the calling case definition is used to evaluate the decision definition. +That is, if the calling case definition has no tenant id, then the decision task evaluate a decision definition using the provided key, binding and without a tenant id (tenant id = null). +If the calling case definition has a tenant id, a decision definition with the provided key and the same tenant id is evaluated. + +Note that the tenant id of the calling case instance is not taken into account in the default behavior. + +### Explicit Tenant Resolution + +In some situations it may be useful to override this default behavior and specify the tenant id explicitly. + +The `operaton:decisionTenantId` attribute allows to explicitly specify a tenant id: + +```xml + + +``` + +If the tenant id is not known at design time, an expression can be used as well: + +```xml + + +``` + +An expression also allows using the tenant id of the calling case instance instead of the calling case definition: + +```xml + + +``` + +## Decision Result + +The output of the decision, also called decision result, is not saved as case variable automatically. It has to pass into a case variable by using a [predefined](../../../user-guide/process-engine/decisions/bpmn-cmmn.md#predefined-mapping-of-the-decision-result) or a [custom](../../../user-guide/process-engine/decisions/bpmn-cmmn.md#custom-mapping-to-case-variables) mapping of the decision result. + +In case of a predefined mapping, the `operaton:mapDecisionResult` attribute references the mapper to use. The result of the mapping is saved in the variable which is specified by the `operaton:resultVariable` attribute. If no predefined mapper is set then the `resultList` mapper is used by default. + +The following example calls the latest version of the `checkCreditDecision` and +maps the `singleEntry` of the decision result into the case variable `result`. +The mapper `singleEntry` assumes that the decision result only contains one +entry or none at all. + +```xml + +``` + +See the [User Guide](../../../user-guide/process-engine/decisions/bpmn-cmmn.md#the-decision-result) for details about the mapping. + +:::warning[Name of the Result Variable] +The result variable should not have the name `decisionResult` since the decision result itself is saved in a variable with this name. Otherwise an exception is thrown while saving the result variable. +::: + + +## Limitations of the Decision Task + +To evaluate a referenced decision, the integration of the Operaton DMN engine is used. As a result, only [DMN 1.3] decisions can be evaluated with a decision task. There is no option to integrate with other rule engines. + + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:decisionBinding, + operaton:decisionTenantId, + operaton:decisionVersion, + operaton:mapDecisionResult, + operaton:resultVariable +
Extension Elements + operaton:caseExecutionListener, + operaton:variableListener +
Constraints + The attribute operaton:decisionVersion should only be set if + the attribute operaton:decisionBinding equals version +
+ +[DMN 1.3]: ../../dmn/index.md diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/human-task.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/human-task.md new file mode 100644 index 0000000..387d835 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/human-task.md @@ -0,0 +1,199 @@ +--- + +title: 'Human Task' +sidebar_position: 10 + +menu: + main: + identifier: "cmmn-ref-tasks-human" + parent: "cmmn-ref-tasks" + description: "Work being done by a human user." + +--- + + +A *human task* is used to model work that needs to be done by a human actor. + + + +A human task is defined in XML as follows: + +```xml + +``` + +A human task in state `ENABLED` can be started manually using the `CaseService` as follows: + +```java +caseService.manuallyStartCaseExecution("aCaseExecutionId"); +``` + +When the human task becomes `ACTIVE`, a new task is created in the task list of the user(s) or group(s) assigned to that task. + +If the work associated with the human task is done, it is possible to complete the human task manually using the `CaseService` as follows: + +```java +caseService.completeCaseExecution("aCaseExecutionId"); +``` + +This completes the created task as well. + +Instead of using the `CaseService` it is also possible to use the `TaskService` to complete a human task: + +```java +taskService.complete("aTaskId"); +``` + +## Properties + +In that case the associated human task is completed as well. + +### Description + +A human task can have a description. In fact, any CMMN 1.1 element can have a description. A description is defined by adding the `description` attribute. + +```xml + +``` + +The description text can be retrieved from the task in the standard Java way: + +```java +task.getDescription(); +``` + +### Due Date + +Each task has a field indicating the due date of that task. The Query API can be used to query for tasks that are due on, before or after a certain date. + +There is an extension attribute that allows to specify an expression in a task definition to set the initial due date of a task when it is created. The expression should always resolve to a `java.util.Date`, `java.util.String` ([ISO8601](http://en.wikipedia.org/wiki/ISO_8601) formatted) or `null`. When using ISO8601 formatted Strings, you may either specify an exact point in time or a time period relative to the time the task is created. + +```xml + +``` + +The due date of a task can also be altered using the task service or in task listeners using the passed delegate task. + +### Follow Up Date + +Each task has a field indicating the follow up date of that task. The Query API can be used to query for tasks that need to be followed up on, before or after a certain date. + +There is an extension attribute that allows you to specify an expression in a task definition to set the initial follow up date of a task when it is created. The expression should always resolve to a `java.util.Date`, `java.util.String` ([ISO8601](http://en.wikipedia.org/wiki/ISO_8601) formatted) or `null`. When using ISO8601 formatted Strings, you may either specify an exact point in time or a time period relative to the time the task is created. + +```xml + +``` + +## User Assignment + +A human task can be directly assigned to a single user, a list of users or a list of groups. + +### Assignment using CMMN Case Role + +CMMN defines some native assignment concepts which can be used in Operaton. +As a more powerful alternative, Operaton also defines a set of custom extension elements (see below). + +The CMMN concept of `performerRef` can be used to assign a task to a single user. The `performerRef` attribute references an existing role. Such a role definition needs a name that defines the user. + +```xml + + ... + + + + +``` + +Only one user can be assigned to the task as a performer. This user is called the assignee. Tasks that have an assignee are not visible in the task lists of other users and can only be found in the personal task list of the assignee. + +Tasks directly assigned to users can be retrieved through the task service as follows: + +```java +List tasks = taskService.createTaskQuery().taskAssignee("kermit").list(); +``` + +### User Assignment using Operaton Extensions + +When strictly following the CMMN standard, user and group assignments can be quite cumbersome for use cases where the assignment is more complicated. To avoid these complexities, custom extensions on the human task element can be set. + +The CMMN Human task supports the same assignment extensions and concepts as the BPMN User Task. +You can read up on these extensions in the [BPMN User Task Section](../../bpmn20/tasks/user-task.md#user-assignment-using-operaton-extensions). Same as for the BPMN User task, [assignment based on data and service logic](../../bpmn20/tasks/user-task.md#assignment-based-on-data-and-service-logic) is supported for the CMMN Human Task as well. + +## Forms + +It is possible to provide information to render a human task form by using the `operaton:formKey` +attribute: + +```xml + + ... + +``` + +The form key is a symbolic value which can be set in the CMMN XML file by using the extension +attribute `formKey` and retrieved at runtime using the process engine API. + +If the user task form is displayed inside the Operaton Tasklist, the format of the formKey must follow +special rules. [See the corresponding section in the user guide for details](../../../user-guide/task-forms/index.md). + +In custom applications, the value of the form key can be chosen freely. In a custom application the +value of the form key attribute can be interpreted freely. Based on the specific UI technology used, +it can reference the name of an HTML file, a JSF / Facelets template, a Vaadin / GWT view, ... + +### Retrieving the form key using the form service. + +```java +String formKey = formService.getTaskFormData(someTaskId).getFormKey(); +``` + +### Retrieving the form using the task service + +When performing a task query, it is possible to retrieve the form key as well. This is most useful +if the form keys need to be retrieved for a complete list of tasks: + +```java +List tasks = TaskService.createTaskQuery() + .assignee("jonny") + .initializeFormKeys() // must be invoked + .list(); + +for(Task task : tasks) { + String formKey = task.getFormKey(); +} +``` + +Note that it is required to call the `.initializeFormKeys()` method on the `TaskQuery` object to +make sure the form keys are initialized. + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:assignee, + operaton:candidateGroups, + operaton:candidateUsers, + operaton:dueDate, + operaton:formKey, + operaton:priority +
Extension Elements + operaton:in, + operaton:out, + operaton:caseExecutionListener, + operaton:taskListener, + operaton:variableListener +
Constraints + The attribute operaton:assignee cannot be used simultaneously with the perfomerRef + attribute on a human task element. +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/index.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/index.md new file mode 100644 index 0000000..57f867c --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/index.md @@ -0,0 +1,13 @@ +--- + +title: 'Tasks' +sidebar_position: 30 + +menu: + main: + identifier: "cmmn-ref-tasks-index" + parent: "cmmn-ref-tasks" + description: "Tasks Index" + +--- + diff --git a/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/process-task.md b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/process-task.md new file mode 100644 index 0000000..eed7344 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/cmmn11/tasks/process-task.md @@ -0,0 +1,222 @@ +--- + +title: 'Process Task' +sidebar_position: 20 + +menu: + main: + identifier: "cmmn-ref-tasks-process" + parent: "cmmn-ref-tasks" + description: "Allows invoking a BPMN 2.0 Process." + +--- + +A *process task* can be used to invoke a BPMN 2.0 process from a case. + + + +A process task is a regular task that requires an attribute `processRef` which references a process definition by its key. Such a process task can be defined as follows: + +```xml + +``` + +The referenced process definition is resolved at runtime. This means that the process can be deployed independently from the calling case, if needed. + +A process task in state `ENABLED` can be started manually using the `CaseService` as follows: + +```java +caseService.manuallyStartCaseExecution("aCaseExecutionId"); +``` + +When the process task instance becomes `ACTIVE`, a new process instance is launched. In the above example a new process instance of the process `checkCreditProcess` is created. + +If a process task is *blocking* (i.e., the attribute `isBlocking` is set to `true`), the process task remains `ACTIVE` until the process instance associated with the process task is completed. After a successful completion of the called process instance, the corresponding process task completes automatically. It is not possible to complete a blocking process task manually. + +In case of a *non-blocking* (the attribute `isBlocking` is set to `false`) task, the process task is not waiting for the process instance to complete and completes immediately after its activation and calling its associated process. + +Note: The default value for the attribute `isBlocking` is `true`. To define a `non-blocking` process task the attribute `isBlocking` must be set to `false` as follows: + +```xml + +``` + +## Transactional Behavior + +The activation of the process task as well as the creation and execution of the process instance are performed in the same transaction. The transaction is executed until a wait state or an asynchronous continuation is reached inside the called process instance (for further details read the [Transactions in Processes](../../../user-guide/process-engine/transactions-in-processes.md) section of the user guide). To launch a process instance asynchronously it is possible to declare the process' start event as asynchronous with the XML attribute `asyncBefore="true"` (see [Asynchronous Instantiation](../../bpmn20/events/start-events.md)). + +## Process Binding + +By default, the process task creates a new process instance of the latest process definition with the specified key. To specify a different version of a process, it is possible to define a binding with the Operaton custom attribute `processBinding`. The following values are allowed for the attribute `processBinding`: + +* `latest`: use the latest process definition version (which is also the default behavior if the attribute is not defined) +* `deployment`: use the process definition version that is part of the calling case definition's deployment (note: this requires that a process with the specified key is deployed along with the case definition) +* `version`: use a fixed version of the process definition, in this case the attribute `processVersion` is required + +The following is an example of a process task that calls the `checkCreditProcess` process with version 3. + +```xml + + +``` + +Note: It is also possible to use an expression for the attribute `processVersion` that must resolve to an integer when the task is executed. + +## Process Tenant Id + +When the process task resolves the process definition to be called it must take into account multi tenancy. + +### Default Tenant Resolution +By default, the tenant id of the calling case definition is used to resolve the called process definition. +That is, if the calling case definition has no tenant id, then the process task resolves a process definition using the provided key, binding and without a tenant id (tenant id = null). +If the calling case definition has a tenant id, a process definition with the provided key and the same tenant id is resolved. + +Note that the tenant id of the calling case instance is not taken into account in the default behavior. + +### Explicit Tenant Resolution + +In some situations it may be useful to override this default behavior and specify the tenant id explicitly. + +The `operaton:processTenantId` attribute allows to explicitly specify a tenant id: + +```xml + + +``` + +If the tenant id is not known at design time, an expression can be used as well: + +```xml + + +``` + +An expression also allows using the tenant id of the calling case instance instead of the calling case definition: + +```xml + + +``` + +## Exchange Variables + +The Operaton custom extensions elements `in` and `out` allow to exchange variables between the process task (in a case instance) and the process instance that it creates: `in` elements of a process task map case variables to input variables of the launched process instance and `out` mappings of a process task map output variables of the process instance to case variables, e.g.,: + +```xml + + + + + + +``` + +In the above example, the value of the input variable `aCaseVariable` is passed to the newly created process instance. Inside the process instance, the value of the input variable `aCaseVariable` is available as `aProcessVariable`. After successful completion of the called process instance, the value of the output variable `aProcessVariable` is passed back to the calling process task where it can be accessed by the name `anotherCaseVariable`. + +In addition, it is possible to use expressions: + +```xml + + + + + + +``` + +Assuming `y` is not updated by the process instance, the following holds after the process task completes: `z = y+5 = x+5+5`. + +Source expressions are evaluated in the context of the called process instance. That means, in cases where calling and called case/process definitions belong to different process applications, context like Java classes, Spring or CDI beans are resolved from the process application the called process definition belongs to. + +Furthermore, the process task can be configured to pass all variables to the called process instance and to pass all variables of the process instance back to the associated process task: + +```xml + + + + + + +``` + +Note: The variables keep their names. + +It is possible to decide at runtime which variables are mapped into the called process instance. This can be declared with the `local` attribute on the `operaton:in` element as follows: + +```xml + + + + + +``` + +With this setting, only local variables are going to be mapped. These can be set via the `CaseService` before starting the process instance. Consider the following code to manually start a process task: + +``` +caseService + .withCaseExecution(processTaskExecutionId) + .setVariable("var1", "abc") + .setVariableLocal("var2", "def") + .manualStart(); +``` + +With `local="true"` for the `in` mapping, only `var2` is mapped into the called process instance. + +## Pass a Business Key + +In addition to [exchanging variables](../../cmmn11/tasks/process-task.md#exchange-variables), it is possible to pass a business key to the called process instance. Since a business key is immutable, this is one way mapping. It is not possible to have output mapping for a business key. + +The following example shows how the business key of the calling case instance can be passed to the called process instance. In this case, the calling case instance and the called process instance end up with the same business key. + +```xml + + + + + +``` + +If the business key of the called process instance should be different than the business key of the calling case instance, it is possible to use an expression that, for example, references a variable: + +```xml + + + + + +``` + +## Operaton Extensions + + + + + + + + + + + + + + +
Attributes + operaton:processBinding, + operaton:processTenantId, + operaton:processVersion +
Extension Elements + operaton:in, + operaton:out, + operaton:caseExecutionListener, + operaton:variableListener +
Constraints + The attribute operaton:processVersion should only be set if + the attribute operaton:processBinding is equal to version +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/connect/extending-connect.md b/versioned_docs/version-1.0.0/documentation/reference/connect/extending-connect.md new file mode 100644 index 0000000..11ac144 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/connect/extending-connect.md @@ -0,0 +1,52 @@ +--- + +title: 'Extending Connect' +sidebar_position: 30 + +menu: + main: + identifier: "connect-ref-configuration" + parent: "connect-ref" + +--- + +## Configuring Connectors + +The connectors available to Connect may not always suit your needs. Sometimes, +it is necessary to provide configuration. + +To configure a connector detected by Spin, the SPI +`org.operaton.connect.spi.ConnectorConfigurator` can be implemented. A +configurator specifies which classes it can configure. Connect discovers a +configurator by employing Java's service loader mechanism and will then provide +it with all connectors that match the specified class (or are a subclass +thereof). The concrete configuration options depend on the actual connector. +For example, the HTTP based connector can modify the Apache HTTP client +that the connector uses. + +To provide a custom configurator, you have to + +* Provide a custom implementation of `org.operaton.connect.spi.ConnectorConfigurator` +* Add the configurator's fully qualified classname to a file named `META-INF/services/org.operaton.connect.spi.ConnectorConfigurator` +* Ensure that the artifact containing the configurator is reachable from Connect's classloader + + +## Custom Connector + +A connector is an implementation of the interface +`org.operaton.connect.spi.Connector`. An implementation of this interface can be +registered by implementing the SPI `org.operaton.connect.spi.ConnectorProvider`. +Connect uses the Java platform's service loader mechanism to lookup provider +implementations at runtime. + +To provide a custom connector, you have to + +* Provide a custom implementation of `org.operaton.connect.spi.Connector` +* Provide a custom implementation of `org.operaton.connect.spi.ConnectorProvider` +* Add the provider's fully qualified classname to a file named `META-INF/services/org.operaton.connect.spi.ConnectorProvider` +* Ensure that the artifact containing the provider is reachable from Connect's classloader + +If you now call `org.operaton.connect.Connectors.getAvailableConnectors()`, then +the custom connector is returned along with the built-in connectors. +Furthermore, `org.operaton.connect.Connectors.getConnector(String connectorId)` +can be used to explicity retrieve the connector by a specific provider. diff --git a/versioned_docs/version-1.0.0/documentation/reference/connect/http-connector.md b/versioned_docs/version-1.0.0/documentation/reference/connect/http-connector.md new file mode 100644 index 0000000..ff71ce2 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/connect/http-connector.md @@ -0,0 +1,210 @@ +--- + +title: 'HTTP Connector' +sidebar_position: 10 + +menu: + main: + identifier: "connect-ref-http-connector" + parent: "connect-ref" + +--- + +In Operaton Connect a `Connectors` class exists which automatically detects +every connector in the classpath. It can be used to get the HTTP connector +instance by its connector ID, which is `http-connector`. + +```java +HttpConnector http = Connectors.getConnector(HttpConnector.ID); +``` + + +## Configure Apache HTTP Client + +Operaton Connect HTTP client uses the Apache HTTP client to make HTTP requests. Accordingly, it supports the same configuration options. + +### Default Configuration + +By default, the HTTP client uses Apache's default configuration and respects the [system properties that are supported by HTTP client](https://hc.apache.org/httpcomponents-client-4.5.x/current/httpclient/apidocs/org/apache/http/impl/client/HttpClientBuilder.html). +### Custom Configuration + +If you want to reconfigure the client going beyond the default configuration options, e.g. you want to configure another connection manager, the easiest way is to register +a new connector configurator. + +```java +package org.operaton.connect.example; + +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.operaton.connect.httpclient.impl.AbstractHttpConnector; +import org.operaton.connect.spi.ConnectorConfigurator; + +public class HttpConnectorConfigurator implements ConnectorConfigurator { + + public Class getConnectorClass() { + return HttpConnector.class; + } + + public void configure(HttpConnector connector) { + CloseableHttpClient client = HttpClients.custom() + .setMaxConnPerRoute(10) + .setMaxConnTotal(200) + .build(); + ((AbstractHttpConnector) connector).setHttpClient(client); + } + +} +``` + +To enable auto detection of your new configurator please add a file called +`org.operaton.connect.spi.ConnectorConfigurator` to your +`resources/META-INF/services` directory with class name as content. For more +information see the [extending Connect](./extending-connect.md) section. + +``` +org.operaton.connect.example.HttpConnectorConfigurator +``` + +## Requests + +### Create a Simple HTTP Request + +The HTTP connector can be used to create a new request, set a HTTP method, URL, +content type and payload. + +A simple GET request: + +```java +http.createRequest() + .get() + .url("http://operaton.org") + .execute(); +``` + +A POST request with a content type and payload set: + +```java +http.createRequest() + .post() + .url("http://operaton.org") + .contentType("text/plain") + .payload("Hello World!") + .execute(); +``` + +The HTTP methods PUT, DELETE, PATCH, HEAD, OPTIONS, TRACE +are also available. + + +### Adding HTTP Headers to a Request + +To add own headers to the HTTP request the method `header` is +available. + +```java +HttpResponse response = http.createRequest() + .get() + .header("Accept", "application/json") + .url("http://operaton.org") + .execute(); +``` + +### Enabling HTTP Response Error Handling + +By default, the HTTP connector does not seamlessly handle 4XX and 5XX related response errors during HTTP call. +To activate the handling of these errors without additional scripting, set the `throw-http-error` property to `TRUE` via the `configOption` method. Once enabled, the client will throw an exception in case of http response errors (status code 400-599). + +```java +HttpResponse response = http.createRequest() + .get() + .configOption("throw-http-error", "TRUE") + .url("http://operaton.org") + .execute(); +``` + +### Using the Generic API + +Besides the configuration methods also a generic API exists to +set parameters of a request. The following parameters are +available: + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescription
methodSets the HTTP method of the request
urlSets the URL of the request
headersContains a map of the configured HTTP headers of the request
payloadSets the payload of the request
+ +This can be used as follows: + +```java +HttpRequest request = http.createRequest(); +request.setRequestParameter("method", "GET"); +request.setRequestParameter("url", "http://operaton.org"); +request.setRequestParameter("payload", "hello world!"); +``` + +## Response + +A response contains the status code, response headers and body. + +```java +Integer statusCode = response.getStatusCode(); +String contentTypeHeader = response.getHeader("Content-Type"); +String body = response.getResponse(); +``` + +After the response was processed it should be closed. + +```java +response.close() +``` + +### Using the Generic API + +Besides the response methods a generic API is provided +to gather the response parameters. The following parameters +are available: + + + + + + + + + + + + + + + + + + +
ParameterDescription
statusCodeContains the status code of the response
headersContains a map with the HTTP headers of the response
responseContains the response body
+ +This can be used as follows: + +```java +response.getResponseParameter("statusCode"); +response.getResponseParameter("headers"); +response.getResponseParameter("response"); +``` diff --git a/versioned_docs/version-1.0.0/documentation/reference/connect/index.md b/versioned_docs/version-1.0.0/documentation/reference/connect/index.md new file mode 100644 index 0000000..edc62ee --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/connect/index.md @@ -0,0 +1,7 @@ +--- + +title: 'Connectors' +sidebar_position: 70 +layout: "single" + +--- \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/connect/soap-connector.md b/versioned_docs/version-1.0.0/documentation/reference/connect/soap-connector.md new file mode 100644 index 0000000..b01ad95 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/connect/soap-connector.md @@ -0,0 +1,142 @@ +--- + +title: 'SOAP Connector' +sidebar_position: 20 + +menu: + main: + identifier: "connect-ref-soap-connector" + parent: "connect-ref" + +--- + +In Operaton Connect a `Connectors` class exists which automatically detects +every connector in the classpath. It can be used to get the SOAP connector +instance by its connector ID, which is `soap-http-connector`. + +```java +SoapHttpConnector soap = Connectors.getConnector(SoapHttpConnector.ID); +``` + +The SOAP connector extends the Operaton Connect HTTP connector which uses +the Apache HTTP client in the default implementation. To read about default and custom client configuration, +please see the corresponding section in the [HTTP connector docs](./http-connector.md). + + +## Request + +### Creating a Request + +The SOAP HTTP connector can be used to create a new request, set a URL, content type +and payload. + +```java +connector.createRequest() + .url("http://operaton.org/soap") + .soapAction("doIt") + .contentType("application/soap+xml") + .payload(soap_envelope) + .execute(); +``` + +### Adding HTTP Headers to a Request + +To add own headers to the HTTP request the method `header` is +available. + +```java +connector.createRequest() + .url("http://operaton.org/soap") + .soapAction("doIt") + .contentType("application/soap+xml") + .header("Accept", "application/xml") + .payload(soap_envelope) + .execute(); +``` + +### Using the Generic API + +Besides the configuration methods also a generic API exists to +set parameters of a request. The following parameters are +available: + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescription
methodSets the HTTP method of the request
urlSets the URL of the request
headersContains a map of the configured HTTP headers of the request
payloadSets the payload of the request
+ +This can be used as follows: + +```java +HttpRequest request = http.createRequest(); +request.setRequestParameter("method", "GET"); +request.setRequestParameter("url", "http://operaton.org"); +request.setRequestParameter("payload", "hello world!"); +``` + +## Response + +A response contains the status code, response headers and body. + +```java +Integer statusCode = response.getStatusCode(); +String contentTypeHeader = response.getHeader("Content-Type"); +String body = response.getResponse(); +``` + +After the response was processed it should be closed. + +```java +response.close() +``` + +### Using the Generic API + +Besides the response methods a generic API is provided +to gather the response parameters. The following parameters +are available: + + + + + + + + + + + + + + + + + + +
ParameterDescription
statusCodeContains the status code of the response
headersContains a map with the HTTP headers of the response
responseContains the response body
+ +This can be used as follows: + +```java +response.getResponseParameter("statusCode"); +response.getResponseParameter("headers"); +response.getResponseParameter("response"); +``` diff --git a/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/bpm-platform-xml.md b/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/bpm-platform-xml.md new file mode 100644 index 0000000..4944180 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/bpm-platform-xml.md @@ -0,0 +1,127 @@ +--- + +title: 'bpm-platform.xml' +sidebar_position: 10 + +menu: + main: + identifier: "descriptor-ref-bpm-platform" + parent: "descriptor-ref" + description: "Configure a Shared Process Engine and the Job Executor." + +--- + +The `bpm-platform.xml` file is part of the Operaton distribution and can be used for configuration of process engines and the job executor. +It is used to configure Operaton in the following distributions: + +* [Apache Tomcat](../../installation/full/tomcat/index.md) + +:::warning[Wildfly] +The bpm-platform.xml file is not used in the Operaton distribution for Wildfly. There, the configuration is added to the central application server configuration file (standalone.xml or domain.xml). The XML schema is the same (i.e., the same elements and properties can be used). See the The Operaton Wildfly Subsystem section of the User Guide for more details. +::: + + +## Xml Schema Namespace + +The namespace for the `bpm-platform.xml` file is `http://www.operaton.org/schema/1.0/BpmPlatform`. The XSD file can be found in the `operaton-engine.jar` file. + + +### Example + +```xml + + + + + + + + + default + org.operaton.bpm.engine.impl.cfg.JtaProcessEngineConfiguration + jdbc/ProcessEngine + + + full + true + java:appserver/TransactionManager + true + + + + + +``` + +## Syntax Reference + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tag name Parent tag nameRequired?Description
<bpm-platform>None.trueRoot element of the bpm-platform.xml file.
<job-executor><bpm-platform>trueSee job-executor Reference
<process-engine><bpm-platform>falseSee process-engine Reference
+ + +## Configure Location of the bpm-platform.xml File + +You can configure the location of the `bpm-platform.xml`, so the file can be stored externally to allow an easy update path of operaton-bpm-platform.ear. This negates the work of unpacking / repackaging the ear when you need to change the configuration. + +This feature is available for: + +* [Apache Tomcat](../../installation/full/tomcat/index.md) + +It is not available for the Wildfly subsystem implementation, because the subsystem implementation uses the JBoss specific `standalone.xml` to configure the platform. + +To specify the location, you have to provide an absolute path or an http/https url pointing to the `bpm-platform.xml` file, e.g., `/home/operaton/.operaton/bpm-platform.xml` or `http://operaton.org/bpm-platform.xml`. + +During startup of the operaton-bpm-platform, it tries to discover the location of the `bpm-platform.xml` file from the following sources, in the listed order: + +1. JNDI entry is available at `java:/comp/env/bpm-platform-xml` +2. Environment variable `BPM_PLATFORM_XML` is set +3. System property `bpm.platform.xml` is set, e.g., when starting the server JVM it is appended as `-Dbpm.platform.xml` on the command line +4. `META-INF/bpm-platform.xml` exists on the classpath +5. (For Tomcat only): checks if there is a `bpm-platform.xml` inside the folder specified by `${CATALINA_BASE} || ```${CATALINA_HOME} + /conf/` + +The discovery stops when one of the above mentioned sources is found or, in case none is found, it falls back to the `bpm-platform.xml` on the classpath, respectively `${CATALINA_BASE} || ```${CATALINA_HOME} + /conf/` for Tomcat. We ship a default `bpm-platform.xml` file inside the operaton-bpm-platform.ear, except when you use the Tomcat or Wildfly version of the platform. + + +## Using System Properties + +To externalize environment specific parts of the configuration, it is possible to reference system properties using Ant-style expressions (i.e., `${PROPERTY_KEY}`). Expression resolution is supported within the `property` elements only. System properties may be set via command line (`-D`option) or in an implementation specific manner (Apache Tomcat's `catalina.properties` for example). +Complex operations are not supported, but you may combine more than one expression in a single `property` element (e.g., `${ldap.host}:${ldap.port}`). + +### Example + +```xml + + + org.operaton.bpm.engine.impl.plugin.AdministratorAuthorizationPlugin + + ${camunda.administratorUserName} + + + +``` diff --git a/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/index.md b/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/index.md new file mode 100644 index 0000000..077d83b --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/index.md @@ -0,0 +1,7 @@ +--- + +title: 'Deployment Descriptors' +sidebar_position: 80 +layout: "single" + +--- \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/processes-xml.md b/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/processes-xml.md new file mode 100644 index 0000000..dc352a6 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/processes-xml.md @@ -0,0 +1,76 @@ +--- + +title: 'processes.xml' +sidebar_position: 20 + +menu: + main: + identifier: "descriptor-ref-processes-xml" + parent: "descriptor-ref" + description: "Configure a deployment." + +--- + + +The `processes.xml` file is deployed as part of a process application and is used for configuration of the deployment of BPMN 2.0 resource files. Additionally, it can be used to configure process engines which are started / stopped with the deployment of the application. + +See the [processes.xml](../../user-guide/process-applications/the-processes-xml-deployment-descriptor.md) section of the User Guide for more details.. + + +## Xml Schema Namespace + +The namespace for the processes.xml file is `http://www.operaton.org/schema/1.0/ProcessApplication`. The XSD file can be found in the `operaton-engine.jar` file. + + +## Empty processes.xml + +The `processes.xml` may be left blank (can be empty). In this case, default values are used. See the [Empty processes.xml](../../user-guide/process-applications/the-processes-xml-deployment-descriptor.md#empty-processesxml) section of the [User Guide](../../user-guide/index.md) for more details. + + +## Example + +```xml + + + + default + + false + true + + + + +``` + + +## Syntax Reference + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tag nameParent tag nameRequired?Description
<process-application>None.trueRoot element of the processes.xml file.
<process-engine><process-application>falseSee process-engine Reference
<process-archive><process-application>falseSee process-archive Reference
diff --git a/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/tags/index.md b/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/tags/index.md new file mode 100644 index 0000000..06bb8b4 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/tags/index.md @@ -0,0 +1,6 @@ +--- + +title: 'Tags' +sidebar_position: 30 + +--- \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/tags/job-executor.md b/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/tags/job-executor.md new file mode 100644 index 0000000..48704bb --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/tags/job-executor.md @@ -0,0 +1,259 @@ +--- + +title: '' +sidebar_position: 30 + +--- + +The job executor tag is used to configure the job executor and can be placed in the [bpm-platform.xml](../bpm-platform-xml.md) file. + + +## Example + +The following example shows a job executor XML snippet: + +```xml + + + + 5 + 8000 + 400000 + + + + + 3 + 5 + 10 + 0 + + +``` + + +## Syntax Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tag name Parent tag nameRequired?Description
<job-executor><bpm-platform>true + Container element for the configuration of a job executor. +

+ Attributes: + None. +

+

+ Text Content: + None. +

+
<job-acquisition><job-executor>true + Specifies a job acquisition thread. +

+ Attributes: +

    +
  • name: Defines the name of the job acquisition thread.
  • +
+

+

+ Text Content: + None. +

+
<job-executor-class><job-acquisition>false + Specifies the fully qualified classname of the job executor. +

+ Attributes: + None. +

+

+ Text Content: + None. +

+

+ Example: + <job-executor-class>org.operaton.bpm.example.MyJobExecutor</job-executor-class> +

+
<properties><job-acquisition> or <job-executor>false + Container element for providing a set of thread configuration properties. +

+ Attributes: + None. +

+

+ Text Content: + None. +

+
<property><properties>false + Set value for job acquisition configuration property. +

+ Attributes: +

    +
  • name: The name of the property.
  • +
+

+

+ Text Content: + The value of the property to be set. +

+
+ + +## Job-Executor Configuration Properties + +The following is a list with the available job acquisition thread configuration properties, along with some explanations. The properties can be used in the `bar` tag, where `foo` is the name of the property and `bar` is the value of the property. + +:::warning[Limitation:] +These properties only take effect in a Tomcat environment. +::: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Property nameTypeDescription
queueSizeInteger + Sets the size of the queue which is used for holding tasks to be executed. +

Default Value: 3

+
corePoolSizeInteger + Sets the size of the core pool in the thread pool. This number of threads will always be present and wait to execute tasks. +

Default Value: 3

+
maxPoolSizeInteger + Sets the maximum number of threads that can be present in the thread pool. +

Default Value: 10

+
keepAliveTimeLong + Specify the time in milliseconds threads will be kept alive when there are no tasks present before threads are terminated until the core pool size is reached. +

Default Value: 0

+
+ + +## Job-Acquisition Configuration Properties + +The following is a list with the available job acquisition thread configuration properties, along with some explanations. The properties can be used in the `bar` tag, where `foo` is the name of the property and `bar` is the value of the property. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Property nameTypeDescription
maxJobsPerAcquisitionInteger + Sets the maximal number of jobs to be acquired at once. +

Default Value: 3

+
lockTimeInMillisInteger + Specifies the time in milliseconds an acquired job is locked for execution. During that time, no other job executor can acquire the job. +

Default Value: 300000

+
waitTimeInMillisInteger + Specifies the wait time of the job acquisition thread in milliseconds in case there are less jobs available for execution than requested during acquisition. If this is repeatedly the case, the wait time is increased exponentially by the factor waitIncreaseFactor. The wait time is capped by maxWait. +

Default Value: 5000

+
maxWaitLong + Specifies the maximum wait time of the job acquisition thread in milliseconds in case there are less jobs available for execution than requested during acquisition. +

Default Value: 60000

+
backoffTimeInMillisInteger + Specifies the wait time of the job acquisition thread in milliseconds in case jobs were acquired but could not be locked. This condition indicates that there are other job acquisition threads acquiring jobs in parallel. If this is repeatedly the case, the backoff time is increased exponentially by the factor waitIncreaseFactor. The time is capped by maxBackoff. With every increase in backoff time, the number of jobs acquired increases by waitIncreaseFactor as well. +

Default Value: 0

+
maxBackoffLong + Specifies the maximum wait time of the job acquisition thread in milliseconds in case jobs were acquired but could not be locked. +

Default Value: 0

+
backoffDecreaseThresholdInteger + Specifies the number of successful job acquisition cycles without a job locking failure before the backoff time is decreased again. In that case, the backoff time is reduced by waitIncreaseFactor. +

Default Value: 100

+
waitIncreaseFactorFloat + Specifies the factor by which wait and backoff time are increased in case their activation conditions are repeatedly met. +

Default Value: 2

+
diff --git a/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/tags/process-archive.md b/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/tags/process-archive.md new file mode 100644 index 0000000..fb0aff4 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/tags/process-archive.md @@ -0,0 +1,266 @@ +--- + +title: '' +sidebar_position: 40 + +--- + + +The process archive tag allows configuration of a process engine deployment and can be used in the [processes.xml](../processes-xml.md) file. + +See the [processes.xml](../../../user-guide/process-applications/the-processes-xml-deployment-descriptor.md) section of the [User Guide](../../../user-guide/index.md) for more details. + + +## Example + +The following example shows a process-archive XML snippet: + +```xml + + my-engine + bpmn/invoice.bpmn + bpmn/order-resource.bpmn + + false + true + groovy,py + + +``` + + +## Syntax Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tag name Parent tag nameRequired?Description
<process-archive><process-application>true + Container element for the configuration of a process archive (deployment). +

+ Attributes: +

    +
  • name: Allows you to define the name of the process archive. The name will be used for the + process engine deployment.
  • +
  • tenantId: Allows you to define the tenant-id of the process archive. If a tenant-id is set then all containing resources will be deployed for the given tenant-id. See the User Guide for details about Multi-Tenancy.
  • +
+

+

+ Text Content: + None. +

+
<process-engine><process-archive>false + Specifies the name of the process engine to which the deployment is performed. If the element is not provided, the default process engine is used. +

+ Attributes: + None. +

+

+ Text Content: + The name of the process engine to which the deployment should be performed. +

+
<resource><process-archive>false + Can be used to explicitly list the paths to resources that are part of this deployment. These + can be process or case definitions but also additional files like script files. +

+ Attributes: + None. +

+

+ Text Content: + The path to the resource that is part of this deployment. The resource is loaded with the classloader of the process application and therefore must be relative to the process application classloader root(s). +

+
<properties><process-engine>, <plugin>false + Container element for providing a set of process archive configuration properties. +

+ Attributes: + None. +

+

+ Text Content: + None. +

+
<property><properties>false + Set value for process archive configuration property +

+ Attributes: +

    +
  • name: The name of the property.
  • +
+

+

+ Text Content: + The value of the property to be set. +

+
+ + +## Configuration Properties + +The following is a list of all supported configuration properties. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Property nameTypeDescription
isDeleteUponUndeployboolean + If true, the process engine deployment will be deleted (cascade = true) when the process application is undeployed. +

+ Default value: + false. +

+
isScanForProcessDefinitionsboolean +

If true, the process application will be scanned for deployable resources (.bpmn20.xml, .bpmn, .cmmn11.xml, .cmmn, .dmn11.xml or .dmn files). Resources matching the additionalResourceSuffixes parameter are also included in the scan.

+

+ Scanning is performed recursively based on the filesystem directory to which the resource root resolves (see property resourceRootPath). + This may not cover the entire classpath. + For example, scanning for resources in a WAR file does not consider processes of a JAR that is contained within that WAR. +

+

+ Default value: + true. +

+
isResumePreviousVersionsboolean + If true, previous versions of the deployment are automatically resumed. See the Process Application Deployment section of the User Guide for more details. +

+ Default value: + true. +

+
resumePreviousBystring + The mode to resume previous deployments of the process application. See the Process Application Deployment section of the User Guide for more details. +

+ Default value: + process-definition-key +

+

+ Options: + process-definition-key,deployment-name +

+
isDeployChangedOnlyboolean + If true, only resources that have changed become part of the deployment. This check is performed against previous deployments of the same name. Every resource contained in the process archive is compared to the most recent resource of the same name that is part of one of the previous deployments. Activating this setting does not automatically resume previous versions of the deployment. +

+ Default value: + false. +

+
+

+ Note: +

+

It is not advised to use this setting when process elements are bound against resources of the same deployment. A binding is required when resources like a process definition from a call activity or an external script are referenced (see the BPMN implementation reference). For example, if a call activity uses the binding deployment and a certain process definition key, whether the process can be resolved depends on if it was deployed. Thus, it is recommended to use the binding latest or version when activating this setting.

+
+
resourceRootPathstring + The resource root of the process archive. This property is used when scanning for process definitions + (if isScanForProcessDefinitions is set to true). +

+ The path is interpreted as +

    + +
  • + local to the root of the classpath. + By default or if the prefix classpath: is used, the path is interpreted as relative to the root + of the classloader. Example: path/to/my/processes or classpath:path/to/my/processes +
  • + +
  • + relative to the parent folder of the process archive's deployment descriptor file (processes.xml). + If the prefix pa: is used, the path is interpreted as relative to the deployment descriptor defining the + process archive. Consider the situation of a process application packaged as a WAR file: + + The deployment structure could look like this: +
    +                    |-- My-Application.war
    +                        |-- WEB-INF
    +                            |-- lib/
    +                                |-- Sales-Processes.jar
    +                                    |-- META-INF/processes.xml  (1)
    +                                    |-- opps/openOpportunity.bpmn
    +                                    |-- leads/openLead.bpmn
    +
    +                                |-- Invoice-Processes.jar
    +                                    |-- META-INF/processes.xml  (2)
    +                 
    + If the process archive(s) defined in (1) uses a path prefixed with pa:, like for instance pa:opps/, + only the opps/-folder of sales-processes.jar is scanned. More precisely, a "pa-local path", is resolved + relative to the the parent directory of the META-INF-directory containing the defining processes.xml file. + This implies that when using a pa-local path in (1), no processes from (2) are visible. +
  • +
+

+
additionalResourceSuffixescomma-seperated list + Specifies a list of additional suffixes which are considered as deployment resource if the + isScanForProcessDefinitions property is set to true. It can be used + to deploy additional resources beside process and case definitions, for example to add a + script to the deployment and reference it as an external source (see the documentation about + script source for more information). To specify multiple suffixes, a comma is + used as seperator, i.e., py,groovy,rb. +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/tags/process-engine.mdx b/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/tags/process-engine.mdx new file mode 100644 index 0000000..d03db0f --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/deployment-descriptors/tags/process-engine.mdx @@ -0,0 +1,1403 @@ +--- + +title: '' +sidebar_position: 50 + +--- + + +The process engine configuration can be placed in both [processes.xml](../processes-xml.md) and the [bpm-platform.xml](../bpm-platform-xml.md) files. If the process engine is configured in either or both of those files, it will be bootstrapped by the Operaton infrastructure and be made available through `BpmPlatform.getProcessEngineService().getProcessEngine("name of process engine")`. + + +## Example + +The following example shows an XML snippet which can be placed in both [processes.xml](../processes-xml.md) and/or [bpm-platform.xml](../bpm-platform-xml.md). + +```xml + + default + org.operaton.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration + java:jdbc/ProcessEngine + + + full + true + true + + + +``` + + +## Syntax Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tag name Parent tag nameRequired?Description
<process-engine><process-application> or <bpm-platform>true + Container element for the configuration of a process engine. +

+ Attributes: +

    +
  • name: allows you to define the name of the process engine (Required).
  • +
+

+

+ Text Content: + None. +

+
<job-acquisition><process-engine>true + Assign the process engine to a job acquisition. +

+ Attributes: + None. +

+

+ Text Content: + The name of the job acquisition to be used for this process engine. Job acquisitions are configured in the bpm-platform.xml file. +

+

+ Example: + <job-acquisition>default</job-acquisition> +

+
<configuration><process-engine>false + Provide the name of the process engine configuration class. +

+ Attributes: + None. +

+

+ Text Content: + The fully qualified classname of the Process Engine Configuration class to be used for this process engine. The class must be a subclass of ProcessEngineConfigurationImpl. +

+

+ Default Value: + StandaloneProcessEngineConfiguration +

+

+ Example:
+ <configuration>
+   my.custom.ProcessEngineConfiguration
+ </configuration>
+

+
<datasource><process-engine>false + Provide the JDBC name of the datasource to use for the process engine. +

+ Attributes: + None. +

+

+ Text Content: + JDBC name of the datasource to use for this process engine. +

+

+ Default Value: + null. +

+

+ Example: + <datasource>java:jdbc/ProcessEngine</datasource> +

+
<properties><process-engine>, <plugin>false + Container element for providing a set of process engine configuration (or plugin) properties. +

+ Attributes: + None. +

+

+ Text Content: + None. +

+
<property><properties>false + Set value for process engine configuration property or of a process engine plugin. +

+ Attributes: +

    +
  • name: The name of the property to be set (Required). The process engine configuration (or plugin) class must provide a setter method setXXX() for the property name.
  • +
+

+

+ Text Content: + The value of the property to be set. Property values are converted into String, Integer or Boolean values, depending on the type of the setter in the process engine configuration (or plugin) class. +

+

+ Example:
+ true +

+
<plugins><process-engine>false + Container element for providing a set of process engine plugin configurations. +

+ Attributes: + None. +

+

+ Text Content: + None. +

+
<plugin><plugins>false + Container element for providing an individual process engine plugin configuration. +

+ Attributes: + None. +

+

+ Text Content: + None. +

+
<class><plugin>false + Sets the classname of a process engine plugin. +

+ Attributes: + None. +

+

+ Text Content: + The fully qualified classname of a process engine plugin. Must be an implementation of ProcessEnginePlugin +

+
+ + +## Configuration Properties + +The following is a list with the most commonly used process engine configuration properties, along with some explanations. The properties can be used in the `bar` tag, where `foo` is the name of the property and `bar` is the value of the property. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Property nameTypeDescription
authorizationEnabledBooleanActivates authorization checks.
autoStoreScriptVariablesBoolean + Controls whether all global script variables should be automatically stored as process variables or not. + Default value is false. +

+ Values: true, false (Boolean). +

+
cmmnEnabledBoolean + When set to false, the following behavior changes: +
    +
  • The automated schema maintenance (creating and dropping tables, see property databaseSchemaUpdate) + does not cover the tables required for CMMN execution.
  • +
  • CMMN resources are not deployed as case definitions to the engine.
  • +
  • Tasks from CMMN cases are not returned by the task query.
  • +
+ Default value is true. +

+ Values: true, false (Boolean). +

+
databaseSchemaUpdateString + Sets the value for process engine database schema creation. +

+ Values: false, create-drop, true. +

+
databaseTablePrefixString + Specifies a prefix for any table name included in SQL statements made by the process engine. Can be used to point the engine to a specific schema by setting the value to MY_SCHEMA. or tables with a naming pattern by setting the value to MY_TABLE_PREFIX_PATTERN_. +
defaultNumberOfRetriesInteger + Specifies how many times a job will be executed before an incident is raised. Default value: 3 +
defaultUserPermissionNameForTaskString + Set the default permisson to work on a task. Allowed values are UPDATE or TASK_WORK. Default value: UPDATE. +
disabledPermissionsListDefine a list of Permissions' names. These permissions will be not taken into account whenever authorization check is performed.
dmnEnabledBoolean + When set to false, the following behavior changes: +
    +
  • The automated schema maintenance (creating and dropping tables, see property databaseSchemaUpdate) + does not cover the tables required for DMN execution.
  • +
  • DMN resources are not deployed as decision definitions or + decision requirements definitions to the engine.
  • +
+ Default value is true. +

+ Values: true, false (Boolean). +

+
enableExceptionsAfterUnhandledBpmnErrorBoolean + If set to true, Process Engine Exception is thrown when unhandled BPMN Error occurs. Default value: false +

+ Values: true, false (Boolean). +

+
enableExpressionsInAdhocQueriesBoolean + If set to true, expressions can be used when creating and executing adhoc queries. For details, see the section on security considerations for custom code in the user guide. + Default value is false. +

+ Values: true, false (Boolean). +

+
enableExpressionsInStoredQueriesBoolean + If set to true, expressions can be used when creating and executing stored queries. For details, see the section on security considerations for custom code in the user guide. + Default value is true. +

+ Values: true, false (Boolean). +

+
enableFetchProcessDefinitionDescriptionBoolean + If set to false, Bpmn Model Instance is not fetched and cached whenever a process definition query is performed and thus the returned process definition does not contain the description. + Default value is true. +

+ Values: true, false (Boolean). +

+
enableXxeProcessingBoolean + If set to true, enables XML eXternal Entity (XXE) Processing. When disabled, it provides protection against XXE Processing attacks. + Default value is false. +

+ Values: true, false (Boolean). +

+
enableScriptCompilationBoolean + Controls whether the process engine should attempt to compile script sources and cache the compilation result or not. Default value is true. +

+ Values: true, false (Boolean). +

+
forceCloseMybatisConnectionPoolBoolean + Controls whether a Mybatis-managed database connection pool is force closed when the process engine is closed. Closing the pool closes all active and idle database connections. +

+ Values: true (default), false. +

+
failedJobRetryTimeCycleString + Sets how often a job is retried after a fail and how long the engine should wait until it tries to execute a job again. See the user guide + for more details on this setting. +
ensureJobDueDateNotNullBoolean + Ensures that each job has it's DueDate property set. If the Job DueDate property hasn't been explicitly set, the current time is added. Default value is false. +

+ Values: true, false (Boolean). +

+
enableHistoricInstancePermissionsBoolean + If the value of this flag is set to true, + Historic Instance Permissions + are enabled. Default value is false. +

+ Values: true, false (Boolean). +

+
enforceSpecificVariablePermissionBoolean + If the value of this flag is set to true, the default permissions to see/read variables are: +
    +
  • READ_INSTANCE_VARIABLE, READ_HISTORY_VARIABLE, and READ_TASK_VARIABLE on Process Definition resource, and READ_VARIABLE on Task resource
  • +
  • READ_VARIABLE on Historic Task resource
  • +
+ + Default value is false. +

+ Values: true, false (Boolean). +

+
historyString + Sets the level of the process engine history. +

+ Values: none, activity, audit, full. +

+
enableDefaultDbHistoryEventHandlerBoolean + If the value of this flag is true, an instance of the default + DbHistoryEventHandler class is included in the collection of History Events + Handlers. This flag should be used in conjunction with the + customHistoryEventHandlers List property when defining custom History Event + Handlers. The default value is true. +

+ Values: true, false (Boolean). +

+
historyRemovalTimeStrategyString + Controls if and when the removal time of an historic instance is set. + The default value is end.
+ Please also see the historyCleanupStrategy + configuration parameter.

+ Values: start, end, none (String). +
hostnameString + Sets the name of the host on which the Process Engine will run. The hostname property is also + used as the Metrics Reporter identifier. +

+ A custom hostname can be generated by providing an implementation of the + HostnameProvider + interface and and setting the engine property hostnameProvider to an instance of that class. +

+
jdbcDriverString + Sets the fully qualified classname of the JDBC driver to use. +

+ This is usually used if the process engine is NOT configured using a <datasource> (see above) but using the built-in mybatis connection pool instead. +

+
jdbcPasswordString + Sets the password of the JDBC connection. +

+ This is usually used if the process engine is NOT configured using a <datasource> (see above) but using the built-in mybatis connection pool instead. +

+
jdbcUrlString + Sets the JDBC url for the database connection. +

+ This is usually used if the process engine is NOT configured using a <datasource> (see above) but using the built-in mybatis connection pool instead. +

+
jdbcUsernameString + Sets the username of the JDBC connection. +

+ This is usually used if the process engine is NOT configured using a <datasource> (see above) but using the built-in mybatis connection pool instead. +

+
skipIsolationLevelCheckBoolean + If the value of this flag is set to false, a ProcessEngineException will be thrown if the transaction isolation level set for the database is different from the recommended one. + If set to true, no exception will be thrown but a warning message will be logged. +

+ The default value is false. +

+

+ Note: The recommended transaction isolation level that ensures the correct behaviour of the engine is READ_COMMITTED. +

+ Values: true, false (Boolean). +
jdbcBatchProcessingBoolean + Controls if the engine executes the jdbc statements as Batch or not. +

+ Default is true, but this has to be disabled for some databases. See the user guide for further details. +

+
jobExecutorAcquireByDueDateBoolean + Controls whether the job executor acquires the next jobs to execute ordered by due date. Default value is false. See the + user guide + for more details on this setting. +

+ Values: true, false (Boolean). +

+
jobExecutorAcquireByPriorityBoolean + Controls whether the job executor acquires the next jobs to execute ordered by job priority. Default value is false. See the + user guide + for more details on this setting. +

+ Values: true, false (Boolean). +

+
jobExecutorActivateBoolean + Controls whether the process engine starts with an active job executor or not. For a shared process engine configuration, the default value is true. For an embedded process engine configuration, the default value is false. See the + user guide + for more details on this setting. +

+ Values: true, false (Boolean). +

+
jobExecutorDeploymentAwareBoolean + Controls whether the job executor is deployment aware or not. +

+ Values: true, false (Boolean). +

+
jobExecutorPreferTimerJobsBoolean + Controls whether the job executor prefers due timer jobs over other job types. Default value is false. See the + user guide + for more details on this setting. +

+ Values: true, false (Boolean). +

+
jobExecutorPriorityRangeMinLong + When set, the job executor will only acquire jobs that have a priority equal to or higher than the specified threshold. + You can combine this property with jobExecutorPriorityRangeMax to specify a job priority range for the job executor. + Note, that you can configure the priority of batch jobs and history cleanup jobs via the batchJobPriority and historyCleanupJobPriority properties. Both default to 0. +

+ Default value: -263 (Long.MIN_VALUE) +

+
jobExecutorPriorityRangeMaxLong + When set, the job executor will only acquire jobs that have a priority equal to or lower than the specified threshold. + You can combine this property with jobExecutorPriorityRangeMin to specify a job priority range for the job executor. + Note, that you can configure the priority of batch jobs and history cleanup jobs via the batchJobPriority and historyCleanupJobPriority properties. Both default to 0. +

+ Default value: 263-1 (Long.MAX_VALUE) +

+
jobExecutorAcquireExclusiveOverProcessHierarchiesBoolean +

+ When set to false, the job executor's acquisition & execution of jobs related to subprocesses will not + be exclusive. +

+

+ When set to true, the acquisition & execution of the aforementioned jobs will be performed exclusively. +

+

+ See the user guide for more details. +

+

+ Default value: false
+ Values: true, false (Boolean). +

+
skipHistoryOptimisticLockingExceptionsBoolean + Controls if the engine will throw OptimisticLockingExceptions on UPDATE or DELETE operations for historical data or not. + The default is true. To preserve the previous behavior (โ‰ค 7.9), the flag must be set to false.

+ Values: true, false (Boolean). +
standaloneTasksEnabledBoolean + When set to false, the following behavior changes: +
    +
  • Standalone tasks can no longer be created via API.
  • +
  • Standalone tasks are not returned by the TaskQuery.
  • +
+ Default value is true. +

+ Values: true, false (Boolean). +

+
tenantCheckEnabledBoolean + Controls whether the process engine performs tenant checks to ensure that an authenticated user can only access data that belongs to one of his tenants. Default value is true. + See the user guide for more details. +

+ Values: true, false (Boolean). +

+
batchJobsPerSeedInteger + Sets the number of batch execution jobs created per batch seed job + invocation. + See the + user guide for more information on batch execution. + Default value: 100 +
invocationsPerBatchJobInteger + Sets the number of invocations a single batch execution job executes. + See the + user guide for more information on batch execution. + Default value: 1 +
invocationsPerBatchJobByBatchTypeMap + Defines the invocations per batch job for each individual + batch type. Unless specified in this map, the value of + 'invocationsPerBatchJob' is used for batch operations.

+ Read more in the + User Guide. +
batchPollTimeInteger + Sets the poll interval of the batch monitor job to check for batch + completion in seconds. + See the + user guide for more information on batch execution. + Default value: 30 +
batchJobPriorityInteger + Sets the default batch job priority. + See the + user guide for more information on job prioritization. + Default value: 0 +
deploymentLockUsedBoolean + Sets if the process engine must acquire an exclusive lock when creating a deployment. + Default value: true +
compositeIncidentHandlersEnabledBoolean + Sets if the incidents can be handled by multiple handlers for the same incident type. +

+ Default value is false. +

+

+ Values: true, false (Boolean). +

+
deploymentSynchronizedBoolean + Sets if processing of the deployment must be synchronized. When true several deployments will be processed sequentially on one process engine node. + When false, they may be processed in parallel, though depending of value of deploymentLockUsed they may still be synchronized + using database pessimistic lock. + Default value: true +
javaSerializationFormatEnabledBoolean + Sets if Java serialization format can be used, when setting variables by their serialized representation. Default value: false +
deserializationTypeValidationEnabledBoolean + Sets if validation of types should be performed before JSON and XML deserialization. See Security Instructions for further information. Default value: false +
deserializationAllowedPackagesString + Sets the allowed package names of types that are analyzed before JSON and XML deserialization if deserializationTypeValidationEnabled is set to true. With the default validator, this can be a comma-separated list of allowed package names. Only the defined packages and their sub-packages will be allowed in conjunction with the deserializationAllowedClasses. Also, the default validator always allows types within the package "java.lang" and all sub-packages. See Security Instructions for further information. Default value: null +
deserializationAllowedClassesString + Sets the allowed class names of types that are analyzed before JSON and XML deserialization if deserializationTypeValidationEnabled is set to true. With the default validator, this can be a comma-separated list of class names. Only the defined class names will be allowed in conjunction with the deserializationAllowedPackages. Also, the default validator always allows the following types: java.util.ArrayList, java.util.Arrays$ArrayList, java.util.HashMap, java.util.HashSet, java.util.LinkedHashMap, java.util.LinkedHashSet, java.util.LinkedList, java.util.Properties, java.util.TreeMap, java.util.TreeSet. See Security Instructions for further information. Default value: null +
enablePasswordPolicyBoolean + Set to true, to enable a password policy for users that are managed by the engine. If a custom password policy is configured, it will be enabled. Otherwise the built-in password policy is activated. +
enableCmdExceptionLoggingBoolean + Set to false, to disable logging of unhandled exceptions that occur during command execution. The default setting for this flag is true. Note: There might be duplicate log entries for command exceptions (e.g. when a job fails). +
enableReducedJobExceptionLoggingBoolean + Set to true, to suppress logging of exceptions that occur during the execution of a job that has retries left. If the job does not have any retries left an exception will still be logged. +
webappsAuthenticationLoggingEnabledBoolean + Set to true to enable authentication logging in the Operaton web apps (Cockpit, Tasklist, and Admin). When enabled, the Operaton web apps will produce log statements in the application log for each user initiated log in and log out event. The name of the logger is org.operaton.bpm.webapp. +
queryMaxResultsLimitInteger + When defining a limit of maximum results, an authenticated user cannot perform a query + with an unbounded number of results or a paginated query that exceeds the limit. + Read more about it in the + User Guide. +

+ Note: To gain the full feature set of the Webapps, and not suffer any UX degradation due to unavailable data, the queryMaxResultsLimit must be set to 2000. If you use Optimize it is recommended to set the value to 10 000, so the import of the data to Optimize works out of the box.

+ The default value is 231-1. +
dmnFeelEnableLegacyBehaviorBoolean + Set to true to restore the legacy FEEL configuration of the DMN Engine. This + will result in the usage of the old, Java-based FEEL Engine, as well as the usage of JUEL + in DMN input expressions, output entries and literal expressions. When set to + false, the new, Scala-based FEEL Engine is used, and FEEL is used as the + default language for DMN input expressions, input and output entries, and literal expressions. + Default value: false +
dmnFeelCustomFunctionProvidersList + Define a list of instances of FeelCustomFunctionProvider.

+ Read more about it in the User Guide. +
dmnReturnBlankTableOutputAsNullBoolean + Controls whether blank DMN table outputs are swallowed or returned as null.

+ Default value: false +
skipOutputMappingOnCanceledActivitiesBoolean +

For activities that were canceled (e.g. due to throwing and catching an error) this flag controls if the engine + should still perform output mapping. When set to true, output mapping will not be done for any + activity that was canceled. This might be helpful when it is not certain which variables will be available when + the activity is canceled (e.g. when an external task does not return an expected variable).

+

This flag is often used together with operaton:errorEventDefinition extension elements on external service tasks.

+

Default value: false

+
configureScriptEngineHostAccessBoolean + Specifies whether host language resources like classes and their methods are accessible or not. +

+ GraalVM JavaScript: +
+ If enabled, polyglot.js.allowHostAccess and polyglot.js.allowHostClassLookup + are set to true. +
+ Note: These flags might not be available in every version of GraalVM JavaScript. +

+

+ Default value is true. +

+

+ Values: true, false (Boolean). +

+
enableScriptEngineLoadExternalResourcesBoolean + Specifies whether external resources can be loaded from file system or not. +

+ GraalVM JavaScript: +
+ If enabled, polyglot.js.allowIO is set to true. +
+ Note: This flag might not be available in every version of GraalVM JavaScript. +

+

+ Default value is false. +

+

+ Values: true, false (Boolean). +

+
enableScriptEngineNashornCompatibilityBoolean + Specifies whether Nashorn compatibility mode is enabled or not. +

+ GraalVM JavaScript: +
+ If enabled, polyglot.js.nashorn-compat is set to true. +
+ Note: This flag might not be available in every version of GraalVM JavaScript. +

+

+ Default value is false. +

+

+ Values: true, false (Boolean). +

+
disableExceptionCodeBoolean + Disables the entire exception error code feature. No exception error codes are assigned. +

+ Default value is false. +

+

+ Values: true, false (Boolean). +

+
disableBuiltinExceptionCodeProviderBoolean + Disables the default implementation of ExceptionCodeProvider which allows overriding the reserved exception codes. +

+ Default value is false. +

+

+ Values: true, false (Boolean). +

+
customExceptionCodeProviderExceptionCodeProvider + Allows registering a custom implementation of the exception code provider allowing to provide custom exception codes. +

+ Default value is null. +

+

+ Read more in the User Guide. +

+
implicitVariableUpdateDetectionEnabledBoolean + Enables detection of implicit updates to process variables of type object. +

+ Default value is true. +

+

+ Values: true, false (Boolean). +

+
logEntriesPerSyncOperationLimitlong + Controls how many user operation log entries are produced for a synchronous API call. +
    +
  • 1: Regardless of the amount of affected entities, only one operation log entry is generated containing a summary of the operation affecting multiple entities.
  • +
  • -1: Disables any limits for user operation logs for synchronous APIs. Unlimited amounts of operation log entries are written.
  • +
  • 1<x≤Long.MAX_VALUE Setting a value greater than 1 will instruct the process engine to complete only API calls that involve no more messages than the configured limit. + If the limit is exceeded, the API call fails, and a ProcessEngineException is thrown. For successful API calls, the engine produces one operation log entry per affected entity, + meaning the number of new operation log entries from one API call can never exceed logEntriesPerSyncOperationLimit.
  • +
+

+ Default value is 1L. +
+ More information about security aspects of this configuration can be found in the security guide. +

+

+ Currently supported operations: +

    +
  • Correlate message
  • +
+

+

+ Values:-1, 1≤x≤Long.MAX_VALUE (long). +

+
+ +### History cleanup configuration parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
historyCleanupStrategyString + Controls which History cleanup strategy is used. + The default value is removalTimeBased.
+ Please also see the historyRemovalTimeStrategy configuration parameter.

+ Values: removalTimeBased, endTimeBased. +
historyCleanupDefaultNumberOfRetriesIntegerSpecifies how often a cleanup job will be executed before an incident is raised. This property overrides the global defaultNumberOfRetries property which has a default value of 3.
historyCleanupBatchWindowStartTimeStringHistory cleanup batch window start time in the format HH:mmZ (Z is for RFC 822 time zone) or HH:mm. E.g., 20:00+0100 or 20:00. In case of null, no batch window is considered to be configured + and history cleanup can only be called manually.
historyCleanupBatchWindowEndTimeStringHistory cleanup batch window end time in the format HH:mmZ (Z is for RFC 822 time zone) or HH:mm. E.g., 23:00-0300 or 23:00. In case batchWindowEndTime exceeds batchWindowStartTime it is considered + to be on the same date (e.g., cleanup runs each day between 20:00 and 23:00). Otherwise it is considered to be on the next calendar day (e.g., cleanup starts each + day at 20:00 and finishes the next day at 01:00). Default value is 00:00.
mondayHistoryCleanupBatchWindowStartTimeString + History cleanup batch window start time for Mondays. Requires the same format as historyCleanupBatchWindowStartTime. + In case it is not configured, batch window configured with historyCleanupBatchWindowStartTime and historyCleanupBatchWindowEndTime will be used for this day of week. +
mondayHistoryCleanupBatchWindowEndTimeString + History cleanup batch window end time for Mondays. Requires the same format and follows the same logic + as historyCleanupBatchWindowEndTime. +
tuesdayHistoryCleanupBatchWindowStartTimeStringSimilar to mondayHistoryCleanupBatchWindowStartTime, but for Tuesdays.
tuesdayHistoryCleanupBatchWindowEndTimeStringSimilar to mondayHistoryCleanupBatchWindowEndTime, but for Tuesdays.
wednesdayHistoryCleanupBatchWindowStartTimeStringSimilar to mondayHistoryCleanupBatchWindowStartTime, but for Wednesdays.
wednesdayHistoryCleanupBatchWindowEndTimeStringSimilar to mondayHistoryCleanupBatchWindowEndTime, but for Wednesdays.
thursdayHistoryCleanupBatchWindowStartTimeStringSimilar to mondayHistoryCleanupBatchWindowStartTime, but for Thursdays.
thursdayHistoryCleanupBatchWindowEndTimeStringSimilar to mondayHistoryCleanupBatchWindowEndTime, but for Thursdays.
fridayHistoryCleanupBatchWindowStartTimeStringSimilar to mondayHistoryCleanupBatchWindowStartTime, but for Fridays.
fridayHistoryCleanupBatchWindowEndTimeStringSimilar to mondayHistoryCleanupBatchWindowEndTime, but for Fridays.
saturdayHistoryCleanupBatchWindowStartTimeStringSimilar to mondayHistoryCleanupBatchWindowStartTime, but for Saturdays.
saturdayHistoryCleanupBatchWindowEndTimeStringSimilar to mondayHistoryCleanupBatchWindowEndTime, but for Saturdays.
sundayHistoryCleanupBatchWindowStartTimeStringSimilar to mondayHistoryCleanupBatchWindowStartTime, but for Sundays.
sundayHistoryCleanupBatchWindowEndTimeStringSimilar to mondayHistoryCleanupBatchWindowEndTime, but for Sundays.
historyCleanupBatchSizeIntegerDefines the amount of top-level objects (e.g., historic process instances) to be removed at once. Default and maximum value is 500.
historyCleanupBatchThresholdInteger + Defines the minimum amount of top-level objects required for data to be removed. Default value is 10. Hint: if the value is too small and the process + engine continues to be used during history cleanup, it can happen that real SQL delete statements are called very frequently for small amounts of data.

+ Note: This property cannot be used in conjunction with historyCleanupStrategy set to removalTimeBased. +
historyCleanupDegreeOfParallelismIntegerDefines the level of parallelism for history cleanup. Default value is 1 (no parallelism). Maximum allowed value is 8.
historyCleanupMetricsEnabledBoolean + Activates metrics for history cleanup. Default value is true. +

+ Note that history cleanup metrics are collected only when + general metrics collection is not disabled. +
historyCleanupEnabledBoolean + Configures whether the engine participates in history cleanup or not. The default value is true. + For more details, please see Cleanup Execution Participation per Node + in the User Guide. +
historyTimeToLiveString + Defines history time to live for process definitions and decision definitions if no other value is defined. +The history time to live defines the number of days using a time specified by the ISO-8601 date format. The function only accepts the notation to define a number of days. +
enforceHistoryTimeToLiveBoolean + Feature flag that prevents the deployment or redeployment of any model resource (BPMN, DMN, CMMN) that contains a historyTimeToLive of null by throwing a ProcessEngineException. Default value: true. +
batchOperationHistoryTimeToLiveString + Defines history time to live for historic batch operations. +The history time to live defines the number of days using a time specified by the ISO-8601 date format. The function only accepts the notation to define a number of days. +
batchOperationsForHistoryCleanupMap + Defines history time to live for each specific historic batch operation. +The history time to live defines the number of days using a time specified by the ISO-8601 date format. The function only accepts the notation to define a number of days. +
historyCleanupJobLogTimeToLiveString + Defines history time to live for history job log entries produced by history cleanup jobs. This works with the removalTimeBased history cleanup strategy. + The history time to live defines the number of days using a time specified by the ISO-8601 date format. The function only accepts the notation to define a number of days. +
taskMetricsTimeToLiveString + Defines time to live for task metrics entries produced by user task assignments. + The history time to live defines the number of days using a time specified by the ISO-8601 date format. The function only accepts the notation to define a number of days. +
+ +### Login parameters + + + + + + + + + + + + + + + + + + + + + + +
loginMaxAttemptsIntegerDefines the maximum number of attempts a user can try to login before this user is locked. Default value: 10
loginDelayMaxTimeIntegerDefines the maximum amount of time (in seconds) for which a user must wait until they are able to try to login again. Default value: 60 seconds
loginDelayFactorIntegerDefines the factor by which the delay is calculated after an unsuccessful login attempt. Default value: 2
loginDelayBaseIntegerDefines the base by which the delay is calculated after an unsuccessful login attempt. Default value: 3
+ +### Resource whitelist pattern parameters + + + + + + + + + + + + + + + + + + + + + + +
generalResourceWhitelistPatternString + Defines acceptable values for the User, Group and Tenant IDs. Can be defined by using the standard Java Regular Expression syntax. Default value: [a-zA-Z0-9]+|operaton-admin +
userResourceWhitelistPatternString + Defines acceptable values for the User IDs. Can be defined by using the standard Java Regular Expression syntax. Default value: a custom general whitelist pattern or the default [a-zA-Z0-9]+|operaton-admin (if nothing is defined) +
groupResourceWhitelistPatternStringDefines acceptable values for the Group IDs. Can be defined by using the standard Java Regular Expression syntax. Default value: a custom general whitelist pattern or the default [a-zA-Z0-9]+|operaton-admin (if nothing is defined)
tenantResourceWhitelistPatternStringDefines acceptable values for the Tenant IDs. Can be defined by using the standard Java Regular Expression syntax. Default value: a custom general whitelist pattern or the default [a-zA-Z0-9]+|operaton-admin (if nothing is defined)
+ +### Logging context parameters + +These parameters define the keys at which the specified data can be retrieved from the Mapped Diagnostic Context (MDC). See [Logging](../../../user-guide/logging.md#process-data-context) for details. +The specified data will only be put into the MDC if a key is defined. All parameters can be set to null or the empty String in order to disable their logging in the MDC. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
loggingContextActivityIdStringDefines the key for the current activity id. Default value: activityId
loggingContextActivityNameStringDefines the key for the current activity name. Default value: activityName
loggingContextApplicationNameStringDefines the key for the current process application name. Default value: applicationName
loggingContextBusinessKeyString + Defines the key for the current business key. Default value: null (disabled by default since a lookup into the database might be necessary + in case the business key needs to be fetched from the process instance) +
loggingContextProcessDefinitionIdStringDefines the key for the current process definition id. Default value: processDefinitionId
loggingContextProcessDefinitionKeyString + Defines the key for the current process definition key. Default value: null (disabled by default since a lookup into the database might be necessary + in case the process definition key needs to be fetched from the process instance) +
loggingContextProcessInstanceIdStringDefines the key for the current process instance id. Default value: processInstanceId
loggingContextTenantIdStringDefines the key for the current tenant id. Default value: tenantId
loggingContextEngineNameStringDefines the key for the current process engine name. Default value: engineName
+ +:::warning[External Properties] +Any properties set by the user that match the configured Logging context parameters will be preserved after the processing of the engine. +::: + +### Logging level parameters + +These parameters define the log level for the specified log entries. + + + + + + + +
logLevelBpmnStackTraceString + Defines the log level for the bpmn stack traces. Default value: DEBUG.
+ Possible values are: ERROR, WARN, INFO, DEBUG, TRACE. +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/custom-extensions/index.md b/versioned_docs/version-1.0.0/documentation/reference/dmn/custom-extensions/index.md new file mode 100644 index 0000000..3955a8d --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/custom-extensions/index.md @@ -0,0 +1,6 @@ +--- + +title: "Extension Reference" +sidebar_position: 50 + +--- \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/custom-extensions/operaton-attributes.md b/versioned_docs/version-1.0.0/documentation/reference/dmn/custom-extensions/operaton-attributes.md new file mode 100644 index 0000000..982c7fc --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/custom-extensions/operaton-attributes.md @@ -0,0 +1,112 @@ +--- + +title: 'Extension Attributes' +sidebar_position: 20 + +menu: + main: + identifier: "dmn-ref-extensions-attributes" + parent: "dmn-ref-extensions" + description: "Reference of Operaton Extension Attributes for DMN." + +aliases: [reference/dmn/custom-extensions/operaton-attributes/] +--- + +The following attributes are extension attributes for the `camunda` namespace `http://operaton.org/schema/1.0/dmn`. + +## historyTimeToLive + + + + + + + + + + + + + + + + + + + + + + +
Description + The attribute specifies the history time to live (in days) for the decision definition. It is used within History cleanup. +
Typejava.lang.Integer or java.lang.String
Possible Values + Any non-negative integer number or string containing a time in days defined by the ISO-8601 date format. +
Default Valuenull - means that decision definition history won't ever be removed during history cleanup run
DMN 1.3 Elements + Decision +
+ +## inputVariable + + + + + + + + + + + + + + + + + + + + + + +
Description + This attribute specifies the variable name which can be used to access the result + of the input expression in an input entry expression. +
Typejava.lang.String
Possible Values + The name of the variable as java.lang.String. +
Default ValuecellInput
DMN 1.3 Elements + Input +
+ +## versionTag + + + + + + + + + + + + + + + + + + + + + + +
Description +

+ The attribute specifies a version tag for the decision definition. +

+
Typejava.lang.String
Possible Values + Any value that has a meaning as version tag for the decision definition. + Note: Sorting by versionTag is string based. The version will not be interpreted. As an example, the sorting could return v0.1.0, v0.10.0, v0.2.0. +
Default Value
DMN 1.3 Elements + Decision +
diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn new file mode 100644 index 0000000..ccf1c6d --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn @@ -0,0 +1,11 @@ + + + + + + + + calendar.getSeason(date) + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-literal-expression/index.md b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-literal-expression/index.md new file mode 100644 index 0000000..cc9529c --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-literal-expression/index.md @@ -0,0 +1,8 @@ +--- + +title: "Decision Literal Expression" +sidebar_position: 20 + +--- + +# DMN Decision Literal Expression diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/hit-policy.md b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/hit-policy.md new file mode 100644 index 0000000..e2bbb1c --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/hit-policy.md @@ -0,0 +1,213 @@ +--- + +title: 'DMN Hit Policy' +sidebar_position: 40 + +menu: + main: + name: "Hit Policy" + identifier: "dmn-ref-decision-table-hp" + parent: "dmn-ref-decision-table" + description: "Specify what is part of the result of a Decision Table Evaluation" + +aliases: [reference/dmn/decision-table/hit-policy/] +--- + +![Hit Policy](../../../../assets/documentation/reference/dmn/decision-table/hit-policy.png) + +A decision table has a hit policy that specifies what the +results of the evaluation of a decision table consist of. + +The hit policy is set in the `hitPolicy` attribute on the `decisionTable` XML +element. If no hit policy is set, then the default hit policy `UNIQUE` is used. + +```xml + + + + + + + +``` + +The following hit policies are +supported by the Operaton DMN engine: + + + + + + + + + + + + + + + + + + + + + + + + + + +
Hit PolicyXML representation
UniqueUNIQUE
AnyANY
FirstFIRST
Rule orderRULE ORDER
CollectCOLLECT
+ +## The Role of a Hit Policy + +A hit policy specifies how many rules of a decision table can be satisfied and +which of the satisfied rules are included in the [decision table result]. The +hit policies [Unique], [Any] and [First] will always return a maximum of one +satisfied rule. The hit policies [Rule Order] and [Collect] can return +multiple satisfied rules. + +### Unique Hit Policy + +Only a single rule can be satisfied or no rule at all. The decision table result contains the +output entries of the satisfied rule. + +If more than one rule is satisfied, the Unique hit policy is violated. + +See the following decision table. +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-unique.png)Hit Policy Unique" class="no-lightbox +Depending on the current season the dish should be chosen. +Only one dish can be chosen, since only one season can exist at the same time. + +### Any Hit Policy + +Multiple rules can be satisfied. However, all satisfied rules must generate the same +output. The decision table result contains only the output of one of the +satisfied rules. + +If multiple rules are satisfied which generate different outputs, the hit policy +is violated. + +See the following example: +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-any.png)Hit Policy Any" class="no-lightbox +This is a decision table for the leave application. If the applier +has no vacation days left or is currently in the probation period, the application will be refused. +Otherwise the application is applied. + +### First Hit Policy + +Multiple rules can be satisfied. The decision table result contains only +the output of the first satisfied rule. + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-first.png)Hit Policy First" class="no-lightbox +See the above decistion table for advertisement. Regarding the current age of the user, which +advertisement should be shown is decided. For example, the user is 19 years old. All the rules will match, but since +the hit policy is set to first only, the advertisement for Cars is used. + +### Rule Order Hit Policy + +Multiple rules can be satisfied. The decision table result contains the output +of all satisfied rules in the order of the rules in the decision table. + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-rule-order.png)Hit Policy Rule Order" class="no-lightbox +Again, see the advertisement example with the rule order policy. Say we have a user at the age of 19 again. +All rules are satisfied so all outputs are given, ordered by the rule ordering. +It can perhaps be used to indicate the priority of the displayed advertisements. + +### Collect Hit Policy + +Multiple rules can be satisfied. The decision table result contains the output +of all satisfied rules in an arbitrary order as a list. + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-collect.png)Hit Policy Collect" class="no-lightbox +With this hit policy, the output list has no ordering. So the advertisement will be arbitrary +if, for example, the age is 19. + +Additionally, an aggregator can be specified for the Collect hit policy. If an +aggregator is specified, the decision table result will only contain a single +output entry. The aggregator will generate the output entry from all satisfied +rules. **Note** if the Collect hit policy is used with an aggregator, the +decision table can only have one output. + +The aggregator is set as the `aggregation` attribute of the `decisionTable` +XML element. + +```xml + + + +``` + +### Aggregators for Collect Hit Policy + +In the visual representation of the decision table an aggregator can be selected in addition to the `COLLECT` hit policy. The following aggregators are supported by +the Operaton DMN engine: + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Visual representationXML representationResult of the aggregation
Collect (Sum)SUMthe sum of all output values
Collect (Min)MINthe smallest value of all output values
Collect (Max)MAXthe largest value of all output values
Collect (Count)COUNTthe number of output values
+ +#### SUM aggregator +The SUM aggregator sums up all outputs from the satisfied rules. +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-collect-sum.png)Hit Policy Collect SUM" class="no-lightbox +The showed decision table can be used to sum up the salary bonus for an employee. For example, the employee has been working in the company for +3.5 years. So the first, second and third rule will match and the result of the decision table is 600, since the output is summed up. + +#### MIN aggregator +The MIN aggregator can be used to return the smallest output value of all satisfied rules. +See the following example of a car insurance. After years without a car crash the insurance fee will be reduced. +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-collect-min.png)Hit Policy Collect MIN" class="no-lightbox +For example, if the input for the decision table is 3.5 years, the result will be 98.83, since the first three rules match +but the third rule has the minimal output. + +#### MAX aggregator +The MAX aggregator can be used to return the largest output value of all satisfied rules. + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-collect-max.png)Hit Policy Collect MAX" class="no-lightbox + +This decision table represents the decision for the amount of pocket money for a child. +Depending of the age, the amount grows. For example, an input of 9 will satisfy the first and second rules. +The output of the second rule is larger then the output of the first rule, so the output +will be 5. A child at the age of 9 will get 5 as pocket money. + +#### COUNT aggregator +The COUNT aggregator can be use to return the count of satisfied rules. + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/hit-policy-collect-count.png)Hit Policy Collect COUNT" class="no-lightbox + +For example, see the salary bonus decision table again, this time with the COUNT aggregator. +With an input of 4, the first three rules will be satisfied. Therefore, the result from the decision table will be 3, which means +that after 4 years the result of the decision table is 3 salary bonuses. + +[decision table result]: ../../../user-guide/dmn-engine/evaluate-decisions.md#interpret-the-decision-result +[Unique]: #unique-hit-policy +[Any]: #any-hit-policy +[First]: #first-hit-policy +[Rule Order]: #rule-order-hit-policy +[Collect]: #collect-hit-policy diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/img/map.js b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/img/map.js new file mode 100644 index 0000000..9f0945e --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/img/map.js @@ -0,0 +1,169 @@ +/* Use this as helper to determine the overlay % / regions +const img = document.querySelector(".no-lightbox img"); + +function offset(element) { + const rect = element.getBoundingClientRect(), + const left = window.pageXOffset || document.documentElement.scrollLeft, + const top = window.pageYOffset || document.documentElement.scrollTop; + return { top: rect.top + top, left: rect.left + left } +} + +img.addEventListener("click", (e) => { + console.log(`top: ```${(e.pageY - offset(img).top) / img.height * 100}`); + console.log(`left: ```${(e.pageX - offset(img).left) / img.width * 100}`); +}); */ + + +(function () { +'use strict'; +var keys = Object.keys; + +function eachKeys(obj, ite) { + keys(obj).forEach(function (key) { + ite(key, obj[key]); + }); +} + +function query(sel, ctx) { + ctx = ctx || document; + return ctx.querySelector(sel); +} + +function mkEl(tagName, attrs) { + attrs = attrs || {}; + var el = document.createElement(tagName); + eachKeys(attrs, function (key, val) { + el.setAttribute(key, val); + }); + return el; +} + +var regions = { + name: { + title: 'Decision Name', + href: '#decision-name', + coords: [ + { + top: 0, + left: 0.5, + width: 13.5, + height: 5.5 + }, + { + top: 7, + left: 0.7, + width: 12, + height: 14.5 + } + ] + }, + + hitPolicy: { + title: 'Hit policy', + href: 'hit-policy/', + coords: [ + { + top: 3.6, + left: 19, + width: 8, + height: 5 + }, + { + top: 10, + left: 13, + width: 20, + height: 9.5 + } + ] + }, + + rule: { + title: 'Rule', + href: 'rule', + coords: [ + { + top: 95, + left: 30, + width: 4, + height: 5.5 + }, + { + top: 52, + left: 0, + width: 100, + height: 7.5 + } + ] + }, + + conditions: { + title: 'Input Entry (Condition)', + href: 'rule/#input-entry-condition', + coords: [ + { + top: 95, + left: 6, + width: 20.5, + height: 5.5 + }, + { + top: 65, + left: 6, + width: 18, + height: 7.5 + } + ] + }, + + conclusions: { + title: 'Output Entry (Conclusion)', + href: 'rule/#output-entry-conclusion', + coords: [ + { + top: 95, + left: 41.5, + width: 23, + height: 5.5 + }, + { + top: 66, + left: 43, + width: 19.0, + height: 6.5 + } + ] + } +}; + +var fig = query('figure.no-lightbox'); +var img = query('img', fig); + +var wrapper = mkEl('div', { + style: 'transition:all 0.218s linear;position:absolute;' + + 'top:0;left:0;' + + 'width:100%;' + + 'height:100%;' +}); + +var holder = img.parentNode; +holder.appendChild(wrapper); +holder.style.position = 'relative'; + +keys(regions).forEach(function (name) { + regions[name].coords.forEach(function (coords/*, c*/) { + var el = mkEl('a', { + href: regions[name].href, + title: regions[name].title, + style: 'position:absolute;' + + 'display:block;' + + // 'background-color:rgba('+ (c ? '0,122' : '122,0') +',0,0.5);' + + 'cursor:pointer;' + + 'top:' + coords.top + '%;' + + 'left:' + coords.left + '%;' + + 'width:' + coords.width + '%;' + + 'height:' + coords.height + '%;' + }); + wrapper.appendChild(el); + }); +}); +})(); diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/index.md b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/index.md new file mode 100644 index 0000000..5912059 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/index.md @@ -0,0 +1,70 @@ +--- + +title: "Decision Table" +sidebar_position: 10 + +--- + +![Dish table](../../../../assets/documentation/reference/dmn/decision-table/dish-table.png) + + +A decision table represents decision logic which can be depicted as a table in +DMN 1.3. It consists of [inputs], [outputs] and [rules]. + +A decision table is represented by a `decisionTable` element inside a +`decision` XML element. + +```xml + + + + + + + +``` + +## Decision Name + +![Decision Name](../../../../assets/documentation/reference/dmn/decision-table/decision-name.png) + +The name describes the decision for which the decision table provides the +decision logic. It is set as the `name` attribute on the `decision` element. +It can be changed via the Properties Panel after selecting the respective +"Decision" in the [Decision Requirements Diagram] view. + +```xml + + + + + +``` + +## Decision Id + +![Decision Id](../../../../assets/documentation/reference/dmn/decision-table/decision-id.png) + +The id is the technical identifier of the decision. It is set in the `id` +attribute on the `decision` element. +Just as the `name`, the `id` can be changed via the Properties Panel after selecting +the respective "Decision" in the [Decision Requirements Diagram] view. + +Each decision should have an unique id when it is [deployed] to Operaton. +The engine uses the id as the decision key of the deployed +`DecisionDefinition`. + +```xml + + + + + +``` + + +[inputs]:../../../reference/dmn/decision-table/input.md +[outputs]:../../../reference/dmn/decision-table/output.md +[rules]:../../../reference/dmn/decision-table/rule.md +[deployed]:../../../user-guide/process-engine/decisions/repository.md +[Decision Requirements Diagram]:../../../reference/dmn/drg/index.md \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/input.md b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/input.md new file mode 100644 index 0000000..0e20dd2 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/input.md @@ -0,0 +1,182 @@ +--- + +title: 'DMN Decision Table Input' +sidebar_position: 10 + +menu: + main: + name: "Input" + identifier: "dmn-ref-decision-table-input" + parent: "dmn-ref-decision-table" + description: "Specify the Inputs of Decision Tables" + +aliases: [reference/dmn/decision-table/input/] +--- + +![Input](../../../../assets/documentation/reference/dmn/decision-table/input.png) + +A decision table can have one or more inputs, also called input clauses. An +input clause defines the id, label, expression and type of a decision table +input. + +An input can be edited by double-clicking on the +respective colum header in the decision table. + +An input clause is represented by an `input` element inside a `decisionTable` +XML element. + +```xml + + + + + + season + + + + + + +``` + +## Input Id + +The input id is a unique identifier of the decision table input. It is used by +Operaton to reference the input in the history of evaluated +decisions. Therefore, it is required by the Operaton DMN engine. It is set as +the `id` attribute of the `input` XML element. + +```xml + + + season + + +``` + +## Input Label + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/input-label.png)Input Label" class="no-lightbox + +An input label is a short description of the input. It is set on the `input` +XML element in the `label` attribute. Note that the label is not required but +recommended, since it helps to understand the decision. + +```xml + + + season + + +``` + +## Input Expression + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/input-expression.png)Input Expression" class="no-lightbox + +An input expression specifies how the value of the input clause is generated. +It is an expression which will be evaluated by the DMN engine. It is usually +simple and references a variable which is available during the evaluation. The +expression is set inside a `text` element that is a child of the +`inputExpression` XML element. + +```xml + + + season + + +``` + +## Input Type Definition + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/input-type-definition.png)Input Type Definition" class="no-lightbox + +The type of the input clause can be specified by the `typeRef` attribute on the +`inputExpression` XML element. After the input expression is evaluated by the +DMN engine, it converts the result to the specified type. The supported types +are listed in the [User Guide][supported DT]. + +```xml + + + season + + +``` + +Note that the type is not required but recommended, since it helps to understand +the possible input values and provides a type safety to be aware of unexpected +input values. + +## Input Expression Language + +The expression language of the input expression can be specified by the +`expressionLanguage` attribute on the `inputExpression` XML element. The +supported expression languages are listed in the [User Guide][supported EL]. + +```xml + + + season + + +``` + +If no expression language is set then the global expression +language, which is set on the `definitions` XML element, is used. + +```xml + + + +``` + +In case no global expression language is set, the default expression language +is used instead. The default expression language for input expressions is FEEL. +Please refer to the [User Guide][default EL] to read more about expression +languages. + +## Input Variable Name + +When the input expression is evaluated then the return value is stored in a variable. +The name of the variable can be specified by the `operaton:inputVariable` +[extension attribute][inputVariable] on the `input` element. By default, the +name is `cellInput`. + +To use the attribute you have to define the Operaton DMN namespace +`xmlns:operaton="http://operaton.org/schema/1.0/dmn` in the XML. + +```xml + + + + + + + + + + +``` + +The variable can be used in an expression of an [input entry]. For example, the +FEEL expression `currentSeason != "Fall"` checks if the season input is not +`"Fall"`. + +[supported EL]: ../../../user-guide/dmn-engine/expressions-and-scripts.md#supported-expression-languages +[default EL]: ../../../user-guide/dmn-engine/expressions-and-scripts.md#default-expression-languages +[supported DT]: ../../../user-guide/dmn-engine/data-types.md#supported-data-types +[inputVariable]: ../custom-extensions/operaton-attributes.md#inputvariable +[input entry]: ./rule.md#input-entry-condition diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/output.md b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/output.md new file mode 100644 index 0000000..e9241f2 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/output.md @@ -0,0 +1,99 @@ +--- + +title: 'DMN Decision Table Output' +sidebar_position: 20 + +menu: + main: + name: "Output" + identifier: "dmn-ref-decision-table-output" + parent: "dmn-ref-decision-table" + description: "Specify the Output of Decision Tables" + +aliases: [reference/dmn/decision-table/output/] +--- + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/output.png)Output" class="no-lightbox + +A decision table can have one or more outputs, also called output clauses. An +output clause defines the id, label, name and type of a decision table output. + +An output clause is represented by an `output` element inside a `decisionTable` +XML element. + +```xml + + + + + + + + + + +``` + +## Output Id + +The output id is a unique identifier of the decision table output. It is used +by Operaton to reference the output in the history of +evaluated decisions. Therefore, it is required by the Operaton DMN engine. It is +set as the `id` attribute of the `output` XML element. + +```xml + +``` + +## Output Label + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/output-label.png)Output Label" class="no-lightbox + +An output label is a short description of the output. It is set on the `output` +XML element in the `label` attribute. Note that the label is not required but +recommended, since it helps to understand the decision. + +```xml + +``` + +## Output Name + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/output-name.png)Output Name" class="no-lightbox + +The name of the output is used to reference the value of the output in the +[decision table result]. It is specified by the `name` attribute on the +`output` XML element. + +If the decision table has more than one output, then all outputs must have a +unique name. + +```xml + +``` + +## Output Type Definition + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/output-type-definition.png)Output Type Definition" class="no-lightbox + +The type of the output clause can be specified by the `typeRef` attribute on the +`output` XML element. After an [output entry] is evaluated by the +DMN engine, it converts the result to the specified type. The supported types +are listed in the [User Guide][supported DT]. + +```xml + +``` + +Note that the type is not required but recommended, since it provides a type +safety of the output values. + +Additionally, the type can be used to transform the output value into another +type. For example, transform the output value `80%` of type String into a +Double using a [custom data type](../../../user-guide/dmn-engine/data-types.md#implement-a-custom-data-type). + + +[decision table result]: ../../../user-guide/dmn-engine/evaluate-decisions.md#interpret-the-decision-result +[supported DT]: ../../../user-guide/dmn-engine/data-types.md#supported-data-types +[output entry]: ./rule.md#output-entry-conclusion +[custom data type]: ../../../user-guide/dmn-engine/data-types.md#implement-a-custom-data-type diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/rule.md b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/rule.md new file mode 100644 index 0000000..f07ba45 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/decision-table/rule.md @@ -0,0 +1,191 @@ +--- + +title: 'DMN Decision Table Rule' +sidebar_position: 30 + +menu: + main: + name: "Rule" + identifier: "dmn-ref-decision-table-rules" + parent: "dmn-ref-decision-table" + description: "Specify Conditions and Conclusions" + +aliases: [reference/dmn/decision-table/rule/] +--- + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/rule.png)Rule" class="no-lightbox + +A decision table can have one or more rules. Each rule contains input and +output entries. The input entries are the condition and the output entries the +conclusion of the rule. If each input entry (condition) is satisfied, then the +rule is satisfied and the decision result contains the output entries +(conclusion) of this rule. + +A rule is represented by a `rule` element inside a `decisionTable` XML element. + +```xml + + + + + + + + "Winter" + + + + + + "Roastbeef" + + + + + + +``` + +## Input Entry (Condition) + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/input-entry.png)Input Entry" class="no-lightbox + +A rule can have one or more input entries, which are the conditions of the rule. +Each input entry contains an expression in a `text` element as child of an +`inputEntry` XML element. + +The input entry is satisfied when the evaluated expression returns `true`. + +```xml + + "Spring" + +``` + +### Expression Language of an Input Entry + +The expression language of the input entry can be specified by the +`expressionLanguage` attribute on the `inputEntry` XML element. The supported +expression languages are listed in the [User Guide][supported EL]. + +```xml + + cellInput == "Spring" + +``` + +If no expression language is set then the global expression +language, which is set on the `definitions` XML element, is used. + +```xml + + + +``` + +In case no global expression language is set, the default expression language +is used instead. The default expression language for input entries is [FEEL]. +Please refer to the [User Guide][default EL] to read more about expression +languages. + + +## Output Entry (Conclusion) + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/output-entry.png)Output Entry" class="no-lightbox + +A rule can have one or more output entries, which are the conclusions of the +rule. Each output entry contains an expression in a `text` element as child of +an `outputEntry` XML element. + +```xml + + "Steak" + +``` + +### Expression Language of an Output Entry + +The expression language of the expression can be specified by the +`expressionLanguage` attribute on the `outputEntry` XML element. The supported +expression languages are listed in the [User Guide][supported EL]. + +```xml + + "Steak" + +``` + +If no expression language is set then the global expression +language, which is set on the `definitions` XML element, is used. + +```xml + + + +``` + +In case no global expression language is set, the default expression language +is used instead. The default expression language for output entries is JUEL. +Please refer to the [User Guide][default EL] to read more about expression +languages. + +## Empty Entries + +### Empty Input Entry + +In case an input entry is irrelevant for a rule, the expression is empty, which +is always satisfied. + +```xml + + + +``` + +If FEEL is used as expression language, then an empty input entry is represented +by a `-`. Otherwise, the expression is empty. + +### Empty Output Entry + +If the output entry is empty, then the output is ignored and not part of the +decision table result. + +```xml + + + +``` + +### Both Entries Empty + +In case of a rule has an empty input and output entry, the outcome of evaluation +will be determined with precedence of the empty input outcome. + +## Description + +![Example img](../../../../assets/documentation/reference/dmn/decision-table/description.png)Description" class="no-lightbox + +A rule can be annotated with a description that provides additional +information. The description text is set inside the `description` XML element. + +```xml + + Save money + + +``` + + +[supported EL]: ../../../user-guide/dmn-engine/expressions-and-scripts.md#supported-expression-languages +[default EL]: ../../../user-guide/dmn-engine/expressions-and-scripts.md#default-expression-languages +[FEEL]: ../feel/index.md diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/drg/img/drg.dmn b/versioned_docs/version-1.0.0/documentation/reference/dmn/drg/img/drg.dmn new file mode 100644 index 0000000..d64da3b --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/drg/img/drg.dmn @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/drg/index.md b/versioned_docs/version-1.0.0/documentation/reference/dmn/drg/index.md new file mode 100644 index 0000000..fd0421a --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/drg/index.md @@ -0,0 +1,151 @@ +--- + +title: "Decision Requirements Graph" +sidebar_position: 30 + +--- + +![Decision Requirements Graph](../../../../assets/documentation/reference/dmn/drg/drd.png) + +A Decision Requirements Graph (DRG) models a domain of decision-making, showing the most important elements involved in it and the dependencies +between them. The elements modeled are [decisions], [input data], and [knowledge sources]. + +The visual representation of a DRG is called Decision Requirements Diagram (DRD). + +In the XML a DRG is represented by the `definitions` element. + +```xml + + + + + + + + +``` + +## Decision Requirements Graph Name + +![Decision Requirements Graph Name](../../../../assets/documentation/reference/dmn/drg/drg-name.png) + +The name describes the DRG. It is set as the `name` attribute on the `definitions` element. + +```xml + + + +``` + +## Decision Requirements Graph Id + +![Decision Requirements Graph Id](../../../../assets/documentation/reference/dmn/drg/drg-id.png) + +The id is the technical identifier of the DRG. It is set in the `id` attribute on the `definitions` element. + +Each DRG should have an unique id when it is [deployed] to Operaton. +The engine uses the id as the decision requirements definition key of the deployed +`DecisionRequirementsDefinition`. + +```xml + + + +``` + +## Decision + +![Decision](../../../../assets/documentation/reference/dmn/drg/decision.png) + +A decision requirements graph can have one or more decisions. A decision has a [name] which is shown in the DRD and an [id]. The decision logic inside the decision must be either a [decision table] or a [decision literal expression]. + +A decision is represented by a `decision` element inside the `definitions` XML element. + +```xml + + + + + + + +``` + +### Required Decisions + +![Required Decision](../../../../assets/documentation/reference/dmn/drg/required-decision.png) + +A decision can have one or more required decisions which it depends on. + +A required decision is represented by a `requiredDecision` element inside an `informationRequirement` XML element. +It has a `href` attribute and the value starts with `#` followed by the [decision id](../../../reference/dmn/decision-table/#decision-id) of the required decision. + +```xml + + + + + + +``` + +## Input Data + +![Input Data](../../../../assets/documentation/reference/dmn/drg/input-data.png) + +An input data denotes information used as an input by one or more decisions. + +It is represented by an `inputData` element inside the `definitions` element. + +```xml + + + + + + + + + +``` + +Note that an input data has no execution semantics and is ignored by the Operaton DMN engine. + +## Knowledge Source + +![Knowledge Source](../../../../assets/documentation/reference/dmn/drg/knowledge-source.png) + +A knowledge source denotes an authority for a Decision. + +It is represented by a `knowledgeSource` element inside the `definitions` element. + +```xml + + + + + + + + + +``` + +Note that a knowledge source has no execution semantics and is ignored by the Operaton DMN engine. + + + +[decisions]:#decision +[input data]:#input-data +[knowledge sources]:#knowledge-source +[decision table]:../../../reference/dmn/decision-table/index.md +[deployed]:../../../user-guide/process-engine/decisions/repository.md#deploying-a-decision +[decision literal expression]:../../../reference/dmn/decision-literal-expression/index.md +[id]:../../../reference/dmn/decision-table/index.md#decision-id +[name]:../../../reference/dmn/decision-table/index.md#decision-name \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/feel/index.md b/versioned_docs/version-1.0.0/documentation/reference/dmn/feel/index.md new file mode 100644 index 0000000..5e1ee50 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/feel/index.md @@ -0,0 +1,17 @@ +--- + +title: "Feel" +sidebar_position: 40 + +--- + +# Friendly Enough Expression Language (FEEL) + +Decision Model and Notation (DMN) defines a Friendly Enough Expression Language (FEEL). It can be used to evaluate expressions in a decision table. + +Operaton relies on an independently maintained project to provide FEEL support. You can find the documentation about the FEEL Language Reference in the [FEEL Scala Engine Documentation](https://camunda.github.io/feel-scala/) (link to external documentation). + +Please also check out the [User Guide](../../../user-guide/dmn-engine/feel/index.md) to learn more about the integration of the FEEL Scala Engine in Operaton. + +[Legacy FEEL Reference](./legacy/index.md) + diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/feel/legacy/data-types.md b/versioned_docs/version-1.0.0/documentation/reference/dmn/feel/legacy/data-types.md new file mode 100644 index 0000000..b9837b6 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/feel/legacy/data-types.md @@ -0,0 +1,60 @@ +--- + +title: 'FEEL Data Types' +sidebar_position: 20 + +--- + +:::note[Heads Up!] +This page provides information on the legacy FEEL Engine, that was used before the +current Scala-based FEEL Engine +was integrated into Operaton. +::: + +The Operaton DMN engine supports the following FEEL data types. + +## String + +![Example img](../../../../../assets/documentation/reference/dmn/feel/legacy/string-type.png)String" class="no-lightbox + +FEEL supports Strings. They must be encapsulated in double quotes. They +support only the equal [comparison] operator. + +## Numeric Types + +![Example img](../../../../../assets/documentation/reference/dmn/feel/legacy/integer-type.png)Integer" class="no-lightbox + +FEEL supports numeric types like integer. In the Operaton DMN engine the +following numeric types are available: + +- integer +- long +- double + +Numeric types support all [comparison] operators and [ranges]. + +## Boolean + +![Example img](../../../../../assets/documentation/reference/dmn/feel/legacy/boolean-type.png)Boolean" class="no-lightbox + +FEEL supports the boolean value `true` and `false`. The boolean type only +supports the equal [comparison] operator. + +## Date + +![Example img](../../../../../assets/documentation/reference/dmn/feel/legacy/date-type.png)Date" class="no-lightbox + +FEEL supports date types. In the Operaton DMN engine the following date types +are available: + +- date and time + +To create a date and time value, the function `date and time` has to be used +with a single String parameter. The parameter specifies the date and time in +the format `yyyy-MM-dd'T'HH:mm:ss`. + +Date types support all [comparison] operators and [ranges]. + + +[comparison]: ./language-elements.md#comparison +[ranges]: ./language-elements.md#range \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/feel/legacy/index.md b/versioned_docs/version-1.0.0/documentation/reference/dmn/feel/legacy/index.md new file mode 100644 index 0000000..2599f4d --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/feel/legacy/index.md @@ -0,0 +1,6 @@ +--- + +title: "Legacy FEEL Reference" +sidebar_position: 10 + +--- \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/feel/legacy/language-elements.md b/versioned_docs/version-1.0.0/documentation/reference/dmn/feel/legacy/language-elements.md new file mode 100644 index 0000000..2454567 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/feel/legacy/language-elements.md @@ -0,0 +1,195 @@ +--- + +title: 'FEEL Language Elements' +sidebar_position: 20 + +menu: + main: + name: "Language Elements" + identifier: "dmn-ref-feel-language-elements" + parent: "dmn-ref-feel-legacy" + description: "Supported FEEL Language Elements" + +aliases: [reference/dmn/feel/legacy/language-elements/] +--- + +:::note[Heads Up!] +This page provides information on the legacy FEEL Engine, that was used before the +current Scala-based FEEL Engine +was integrated into Operaton. +::: + +The Operaton DMN engine supports FEEL for [input entries]. The FEEL term for +expression in input entries are simple unary tests. These simple unary tests +test an input value against an expression and return either `true` if the test +is satisfied or `false` otherwise. The expression can contain different +elements which are described in this sections. + +## Comparison + +FEEL simple unary tests support the following comparison operators. Please +note that the equals operator is empty and *not* `=`. Also, a non equal operator such as `!=` +does *not* exist. To express this, [negation] has to be used. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameOperatorExampleDescription
Equal"Steak"Test that the input value is equal to the given value.
Less<< 10Test that the input value is less than the given value.
Less or Equal$\leq$$\leq$ 10Test that the input value is less than or equal to the given value.
Greater>> 10Test that the input value is greater than the given value.
Greater or Equal$\geq$$\geq$ 10Test that the input value is greater than or equal to the given value.
+ +## Range + +Some [FEEL data types], such as numeric types and date types, can be tested against +a range of values. These ranges consist of a start value and an end value. The +range specifies if the start and end value is included in the range. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
StartEndExampleDescription
includeinclude[1..10] + Test that the input value is greater than or equal to the start value and + less than or equal to the end value. +
excludeinclude]1..10] or (1..10] + Test that the input value is greater than the start value and less than + or equal to the end value. +
includeexclude[1..10[ or [1..10) + Test that the input value is greater than or equal to the start value and + less than the end value. +
excludeexclude]1..10[ or (1..10) + Test that the input value is greater than the start value and less than + the end value. +
+ +## Disjunction + +A FEEL simple unary test can be specified as conjunction of expressions. These +expressions have to either have [comparisons] or [ranges]. The test is `true` if +at least one of conjunct expressions is `true`. + +Examples: + +- `3,5,7`: Test if the input is either 3, 5 or 7 +- `<2,>10`: Test if the input is either less than 2 or greater than 10 +- `10,[20..30]`: Test if the input is either 10 or between 20 and 30 +- `"Spareribs","Steak","Stew"`: Test if the input is either the String + Spareribs, Steak or Stew +- `date and time("2015-11-30T12:00:00"),date and time("2015-12-01T12:00:00")`: + Test if the input is either the date November 30th, 2015 at 12:00:00 o'clock or + December 1st, 2015 at 12:00:00 o'clock +- `>customer.age,>21`: Test if the input is either greater than the `age` + property of the variable `customer` or greater than 21 + +## Negation + +A FEEL simple unary test can be negated with the `not` function. This means if +the containing expression returns `true`, the test will return `false`. Please +*note* that only one negation as first operator is allowed but it can contain +a [disjunction]. + +Examples: + +- `not("Steak")`: Test if the input is not the String Steak +- `not(>10)`: Test if the input is not greater than 10, which means it is less + than or equal to 10 +- `not(3,5,7)`: Test if the input is neither 3, 5 nor 7 +- `not([20..30])`: Test if the input is not between 20 and 30 + +## Qualified Names + +FEEL simple unary tests can access variables and object properties by +qualified names. + +Examples: + +- `x`: Test if the input is equal to the variable `x` +- `$\geq$ x`: Test if the input is greater than or equal to the variable `x` +- `< customer.age`: Test if the input is less than the `age` property of the + variable `customer` + +## Date Functions + +FEEL simple unary tests provide functions to create [date types]. The Operaton +DMN engine supports the following date functions: + +- `date and time("...")`: Creates a date and time value from a String with the + format `yyyy-MM-dd'T'HH:mm:ss` + +Examples: + +- `date and time("2015-11-30T12:00:00")`: Test if the input is the date + November 30th, 2015 at 12:00:00 o'clock +- `[date and time("2015-11-30T12:00:00")..date and + time("2015-12-01T12:00:00")]`: Test if the input is between the date + November 30th, 2015 at 12:00:00 o'clock and December 1st, 2015 at 12:00:00 + o'clock + + + +[comparisons]: #comparison +[ranges]: #range +[disjunction]: #disjunction +[negation]: #negation +[FEEL data types]: ./data-types.md +[date types]: ./data-types.md#date +[input entries]: ../../decision-table/rule.md#input-entry-condition diff --git a/versioned_docs/version-1.0.0/documentation/reference/dmn/index.md b/versioned_docs/version-1.0.0/documentation/reference/dmn/index.md new file mode 100644 index 0000000..c7e8290 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/dmn/index.md @@ -0,0 +1,7 @@ +--- + +title: 'DMN 1.3' +sidebar_position: 30 +layout: "single" + +--- \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/boolean-inputs.md b/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/boolean-inputs.md new file mode 100644 index 0000000..cff2908 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/boolean-inputs.md @@ -0,0 +1,71 @@ +--- + +title: 'Boolean Inputs' +sidebar_position: 40 + +menu: + main: + identifier: "embedded-forms-ref-controls-boolean-inputs" + parent: "embedded-forms-ref-controls" + +--- + +## Checkbox + +Checkboxes are HTML `` controls. Checkbox controls can be used for boolean +variable types. + +### Binding a Checkbox to a Process Variable + +A checkbox input can be bound to a process variable using the `cam-variable-type` and `cam-variable-name` directives: + +```html + +``` + +In the example above, the checkbox is bound to the variable named `IS_VIP_CUSTOMER` of type +`Boolean`. + +### Supported Variable Types for Checkboxes + +The checkbox input field only supports boolean variable types. A checked checkbox corresponds to +the value `true`, an unchecked checkbox corresponds to the value `false`. + + +## Boolean Select Box + +To bind a ` + + + +``` + + +## Boolean text Input + +To bind a text input field to a Java `Boolean` variable, the directive +`cam-variable-type="Boolean"` must be used. + +Text input fields of type `Boolean` accept the following string values: + +* `true` +* `false` + +Meaning that the user has to type the words "true" or "false" into the text input field. + +Example: + +```html + +``` diff --git a/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/bpmn-buttons.md b/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/bpmn-buttons.md new file mode 100644 index 0000000..a4eb2d3 --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/bpmn-buttons.md @@ -0,0 +1,33 @@ +--- + +title: 'BPMN Event Buttons' +sidebar_position: 90 + +menu: + main: + identifier: "embedded-forms-ref-controls-bpmn-event-button" + parent: "embedded-forms-ref-controls" + +--- + +These buttons can be used to trigger error and escalation events in user tasks. They will submit all entered values and activate the corresponding boundary event. To learn more about error and escalation events, see our section about [events](https://docs.operaton.org/docs/documentation/reference/bpmn20/events/). + +## Error + +An Error Button can be bound to an error code and error message using the `cam-error-code` and `cam-error-message` directive. +Providing an error message is optional. + +```html + +
+

+``` + +In addition to the HTML markup, the following JavaScript must be included in the form file +(see [Custom JavaScript](../javascript/index.md)): + +```html + +``` + +The attributes of the datepicker component are explained below: + +Additional attributes of the input element: + +* `uib-datepicker-popup="yyyy-MM-dd'T'HH:mm:ss"`: This attribute sets the format of the date which +is returned by the datepicker. It must be the ISO Date Format. +* `is-open="dateFieldOpened"`: This attribute contains the name of the variable, which +indicates the open status of the datepicker. It must be the same variable, which is set to +true in the `open` function in the JavaScript snippet. If a form contains multiple +datepickers, they must have different values for this attribute. + +Attributes of the datepicker button: + +* `ng-click="open($event)"`: This attribute contains the name of the function which is called +when the datepicker button is clicked. It must be the function name of the JavaScript snippet +which sets the `is-open` variable to true. If a form contains multiple date pickers, they +must have different function names, or the name of the `is-open` variable must be passed to +the function. diff --git a/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/files.md b/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/files.md new file mode 100644 index 0000000..626a0bc --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/files.md @@ -0,0 +1,66 @@ +--- + +title: 'File Upload and Download' +sidebar_position: 70 + +menu: + main: + identifier: "embedded-forms-ref-files" + parent: "embedded-forms-ref-controls" + +--- + +## Uploading Files + +File input elements are HTML controls in the form of + +```html + +``` + +They allow users to upload files, which will be stored as a process instance variable of the type Bytes. Larger files will take longer to process and may crash the browser, so there is a soft file size limit of 5MB. You can overwrite this limit using the `cam-max-filesize` directive. To upload larger files without freezing the browser, see the [custom javascript section](../javascript/examples.md#upload-large-files). + +Files can be uploaded using the `cam-variable-name` and `cam-variable-type` directives: + +```html + +``` + +In the example above, the user can upload a document with a maximum filesize of 10MB. The uploaded file will be stored as process instance variable with the name `INVOICE_DOCUMENT`. + +Besides uploading a file, it is also possible to present the user with a download link or displaying files as images. + + +## Downloading Files + +The `cam-file-download` directive turns a link into a file download link. + +```html + +``` + +The above link will allow the user to download the file stored in the variable `INVOICE_DOCUMENT`. + +If the link has no text content, the filename of the file will be set as text content. + + +## Displaying an Uploaded Image + +If the user uploaded an image, it can be displayed using an `` tag. There is no special directive for this yet. +However, you can make sure that the corresponding variable is fetched (either using javascript or an hidden input field) and then +use the generated link as value for the `src` attribute. + +```html + + + + + +``` + +:::note +**Note**: the above example uses the angular js integration. +::: diff --git a/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/hidden.md b/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/hidden.md new file mode 100644 index 0000000..de87f8c --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/hidden.md @@ -0,0 +1,38 @@ +--- + +title: 'Hidden Input Fields' +sidebar_position: 60 + +menu: + main: + identifier: "embedded-forms-ref-controls-hidden" + parent: "embedded-forms-ref-controls" + +--- + +Hidden input elements are HTML controls in the form of + +```html + +``` + +They are not displayed in the form, but can be used to retrieve values to be used in the context of the form (e.g., using Angular bindings). + + +## Binding a Hidden Element to a Process Variable + +A hidden input can be bound to a process variable using the `cam-variable-type` and `cam-variable-name` directives: + +```html + +``` + +In the example above, the hidden input field is bound to the variable named `CUSTOMER_ID` of type `String` and contains the value `testuser`. + + +## Supported Variable Types for Hidden Elements + +The hidden input field supports the same variable types as the single line text input ``. See the section on [Supported Variable Types](../controls/inputs.md#supported-variable-types-for-text-inputs) for details. diff --git a/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/index.md b/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/index.md new file mode 100644 index 0000000..bdf6c2a --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/index.md @@ -0,0 +1 @@ +# Controls \ No newline at end of file diff --git a/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/inputs.md b/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/inputs.md new file mode 100644 index 0000000..d8562ff --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/inputs.md @@ -0,0 +1,110 @@ +--- + +title: 'Text Inputs' +sidebar_position: 10 + +menu: + main: + identifier: "embedded-forms-ref-controls-text-input" + parent: "embedded-forms-ref-controls" + +--- + +Single line text inputs are `` controls. Single line text inputs are the most +common input field and allow the user to provide values for different data types. + + +## Binding Text Input to a Process Variable + +A text input can be bound to a process variable using the `cam-variable-type` and +`cam-variable-name` directives: + +```html + +``` + +In the example above, the text input field is bound to the variable named `CUSTOMER_ID` of type +`String`. + + +## Supported Variable Types for Text Inputs + +A text input field supports multiple variable types. + +::;note +*Binding to existing variables*: Note that if you bind the input field to an existing variable, +the type of the variable is provided by the process engine and the `cam-variable-type` directive +is not required. +::: + +### String + +To bind the input field to a `String` variable, the directive `cam-variable-type="String"` +must be used. + +Example: + +```html + +``` + +:::note +*Trimming*: Note that the value of the String variable is trimmed before it is submitted to the +process engine: leading and trailing whitespace is removed. +::: + +### Integer + +To bind the input field to a Java `Integer` variable, the directive +`cam-variable-type="Integer"` must be used. + +Example: + +```html + +``` + +### Long + +To bind the input field to a Java `Long` variable, the directive +`cam-variable-type="Long"` must be used. + +Example: + +```html + +``` + +### Short + +To bind the input field to a Java `Short` variable, the directive +`cam-variable-type="Short"` must be used. + +Example: + +```html + +``` + +### Double + +To bind the input field to a Java `Double` variable, the directive +`cam-variable-type="Double"` must be used. + +Example: + +```html + +``` diff --git a/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/select.md b/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/select.md new file mode 100644 index 0000000..3888f4f --- /dev/null +++ b/versioned_docs/version-1.0.0/documentation/reference/forms/embedded-forms/controls/select.md @@ -0,0 +1,70 @@ +--- + +title: 'Selects' +sidebar_position: 50 + +menu: + main: + identifier: "embedded-forms-ref-controls-selects" + parent: "embedded-forms-ref-controls" + +--- + +Select boxes are HTML controls of the form of + +```html + +``` + + +## Binding to a Process Variable + +A select box can be bound to a process variable using the `cam-variable-name` directive: + +```html + +``` + + +## Supported Variable Types + +The select box supports the same value types as ``. + + +## Populating the Options from a Variable + +The `