diff --git a/docs/documentation/introduction/architecture.md b/docs/documentation/introduction/architecture.md index d8eac61..f728dc4 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/process-engine-architecture.png) +![Process Engine Architecture](/img/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/embedded-process-engine.png) +![Embedded Process Engine](/img/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/shared-process-engine.png) +![Shared Process Engine](/img/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/standalone-process-engine.png) +![Standalone Process Engine](/img/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/clustered-process-engine.png) +![Process Engine Cluster](/img/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 f9bcffc..07f190e 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/architecture-overview.png) +![Operaton Components and Roles](/img/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 083c76c..605ce1c 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](./bpmn/event-conditional.svg)Conditional Events Overview +![Example img](/img/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/activityInstanceState.png) +![API Services](/img/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 80a70ac..0d83cc3 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/symbols/pool.svg) + ![Pool Symbol](/img/documentation/reference/bpmn20/pool.svg)
- ![Lane Symbol](./img/symbols/lane.svg) + ![Lane Symbol](/img/documentation/reference/bpmn20/lane.svg)
@@ -39,25 +39,25 @@ The elements marked in orang

Subprocesses

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

Gateways

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

Data

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

Artifacts

- ![Text Annotation Symbol](./img/symbols/text_annotation.svg) + ![Text Annotation Symbol](/img/documentation/reference/bpmn20/text_annotation.svg)
- ![Group Symbol](./img/symbols/group_symbol.svg) + ![Group Symbol](/img/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/symbols/events/none_start_event.svg) + ![Non Start Event Symbol](/img/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/symbols/events/none_intermediate_event.svg) + ![Non Intermediate Event Symbol](/img/documentation/reference/bpmn20/none_intermediate_event.svg) - ![Non End Event Symbol](./img/symbols/events/none_end_event.svg) + ![Non End Event Symbol](/img/documentation/reference/bpmn20/none_end_event.svg) Message - ![Message Start Event Symbol](./img/symbols/events/message_start_event.svg) + ![Message Start Event Symbol](/img/documentation/reference/bpmn20/message_start_event.svg) - ![Message Start Event Symbol](./img/symbols/events/message_start_event.svg) + ![Message Start Event Symbol](/img/documentation/reference/bpmn20/message_start_event.svg) - ![Event Subprocess Message Start Event non-interrupting Symbol](./img/symbols/events/event_subprocess_message_non_interrupting.svg) + ![Event Subprocess Message Start Event non-interrupting Symbol](/img/documentation/reference/bpmn20/event_subprocess_message_non_interrupting.svg) - ![Message Intermediate Catch Event Symbol](./img/symbols/events/message_intermediate_catch_event.svg) + ![Message Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/message_intermediate_catch_event.svg) - ![Message Intermediate Catch Event Symbol](./img/symbols/events/message_intermediate_catch_event.svg) + ![Message Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/message_intermediate_catch_event.svg) - ![Message Intermediate Non Interrupting Catch Event Symbol](./img/symbols/events/message_intermediate_non_interrupting_catch_event.svg) + ![Message Intermediate Non Interrupting Catch Event Symbol](/img/documentation/reference/bpmn20/message_intermediate_non_interrupting_catch_event.svg) - ![Message Intermediate Throw Event Symbol](./img/symbols/events/message_intermediate_throw_event.svg) + ![Message Intermediate Throw Event Symbol](/img/documentation/reference/bpmn20/message_intermediate_throw_event.svg) - ![Message Throw End Event Symbol](./img/symbols/events/message_throw_end_event.svg) + ![Message Throw End Event Symbol](/img/documentation/reference/bpmn20/message_throw_end_event.svg) Timer - ![Timer Start Event Symbol](./img/symbols/events/timer_start_event.svg) + ![Timer Start Event Symbol](/img/documentation/reference/bpmn20/timer_start_event.svg) - ![Event Subprocess Timer Start Event Symbol](./img/symbols/events/timer_start_event.svg) + ![Event Subprocess Timer Start Event Symbol](/img/documentation/reference/bpmn20/timer_start_event.svg) - ![Event Subprocess Timer Start Event Non Interrupting Symbol](./img/symbols/events/event_subprocess_timer_non_interrupting.svg) + ![Event Subprocess Timer Start Event Non Interrupting Symbol](/img/documentation/reference/bpmn20/event_subprocess_timer_non_interrupting.svg) - ![Timer Intermediate Interrupting Event Symbol](./img/symbols/events/timer_intermediate_event.svg) + ![Timer Intermediate Interrupting Event Symbol](/img/documentation/reference/bpmn20/timer_intermediate_event.svg) - ![Timer Intermediate Interrupting Event Symbol](./img/symbols/events/timer_intermediate_event.svg) + ![Timer Intermediate Interrupting Event Symbol](/img/documentation/reference/bpmn20/timer_intermediate_event.svg) - ![Timer Intermediate None Interrupting Event Symbol](./img/symbols/events/timer_intermediate_none_interrupting_event.svg) + ![Timer Intermediate None Interrupting Event Symbol](/img/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/symbols/events/conditional_start_event.svg) + ![Conditional Start Event Symbol](/img/documentation/reference/bpmn20/conditional_start_event.svg) - ![Conditional Start Event Symbol](./img/symbols/events/conditional_start_event.svg) + ![Conditional Start Event Symbol](/img/documentation/reference/bpmn20/conditional_start_event.svg) - ![Conditional Event Subprocess Non Interrupting Start Event Symbol](./img/symbols/events/event_subprocess_conditional_non_interrupting.svg) + ![Conditional Event Subprocess Non Interrupting Start Event Symbol](/img/documentation/reference/bpmn20/event_subprocess_conditional_non_interrupting.svg) - ![Conditional Intermediate Catch Event Symbol](./img/symbols/events/conditional_intermediate_catch_event.svg) + ![Conditional Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg) - ![Conditional Intermediate Catch Event Symbol](./img/symbols/events/conditional_intermediate_catch_event.svg) + ![Conditional Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg) - ![Conditional Intermediate Non Interrupting Event Symbol](./img/symbols/events/conditional_intermediate_non_interrupting_event.svg) + ![Conditional Intermediate Non Interrupting Event Symbol](/img/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/symbols/events/link_intermediate_catch_event.svg) + ![Link Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/link_intermediate_catch_event.svg) - ![Link Intermediate Throw Event Symbol](./img/symbols/events/link_intermediate_throw_event.svg) + ![Link Intermediate Throw Event Symbol](/img/documentation/reference/bpmn20/link_intermediate_throw_event.svg) Signal - ![Signal Event Symbol](./img/symbols/events/signal_start_event.svg) + ![Signal Event Symbol](/img/documentation/reference/bpmn20/signal_start_event.svg) - ![Signal Event Symbol](./img/symbols/events/signal_start_event.svg) + ![Signal Event Symbol](/img/documentation/reference/bpmn20/signal_start_event.svg) - ![Event Subprocess Signal Non Interrupting Start Event Symbol](./img/symbols/events/event_subprocess_signal_non_interrupting_start_event.svg) + ![Event Subprocess Signal Non Interrupting Start Event Symbol](/img/documentation/reference/bpmn20/event_subprocess_signal_non_interrupting_start_event.svg) - ![Signal Intermediate Catch Event Symbol](./img/symbols/events/signal_intermediate_catch_event.svg) + ![Signal Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/signal_intermediate_catch_event.svg) - ![Signal Intermediate Catch Event Symbol](./img/symbols/events/signal_intermediate_catch_event.svg) + ![Signal Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/signal_intermediate_catch_event.svg) - ![Signal Intermediate Non Interrupting Catch Event Symbol](./img/symbols/events/signal_intermediate_non_interrupting_catch_event.svg) + ![Signal Intermediate Non Interrupting Catch Event Symbol](/img/documentation/reference/bpmn20/signal_intermediate_non_interrupting_catch_event.svg) - ![Signal Intermediate Throw Event Symbol](./img/symbols/events/signal_intermediate_throw_event.svg) + ![Signal Intermediate Throw Event Symbol](/img/documentation/reference/bpmn20/signal_intermediate_throw_event.svg) - ![Signal Throw End Event Symbol](./img/symbols/events/signal_throw_end_event.svg) + ![Signal Throw End Event Symbol](/img/documentation/reference/bpmn20/signal_throw_end_event.svg) Error - ![Error EventSubprocess StartEvent Symbol](./img/symbols/events/error_event_subprocess_start_event.svg) + ![Error EventSubprocess StartEvent Symbol](/img/documentation/reference/bpmn20/error_event_subprocess_start_event.svg) - ![Error Boundary Catch Event Symbol](./img/symbols/events/error_boundary_catch_event.svg) + ![Error Boundary Catch Event Symbol](/img/documentation/reference/bpmn20/error_boundary_catch_event.svg) - ![Error Throw End Event Symbol](./img/symbols/events/error_throw_end_event.svg) + ![Error Throw End Event Symbol](/img/documentation/reference/bpmn20/error_throw_end_event.svg) Escalation - ![Escalation Event Subprocess Start Event Symbol](./img/symbols/events/escalation_event_subprocess_start_event.svg) + ![Escalation Event Subprocess Start Event Symbol](/img/documentation/reference/bpmn20/escalation_event_subprocess_start_event.svg) - ![Escalation Event Subprocess Non Interrupting Start Event Symbol](./img/symbols/events/escalation_event_subprocess_non_interrupting_start_event.svg) + ![Escalation Event Subprocess Non Interrupting Start Event Symbol](/img/documentation/reference/bpmn20/escalation_event_subprocess_non_interrupting_start_event.svg) - ![Escalation Boundary Catch Event Symbol](./img/symbols/events/escalation_boundary_catch_event.svg) + ![Escalation Boundary Catch Event Symbol](/img/documentation/reference/bpmn20/escalation_boundary_catch_event.svg) - ![Escalation Boundary Catch Non Interrupting Event Symbol](./img/symbols/events/escalation_boundary_catch_non_interrupting_event.svg) + ![Escalation Boundary Catch Non Interrupting Event Symbol](/img/documentation/reference/bpmn20/escalation_boundary_catch_non_interrupting_event.svg) - ![Escalation Intermediate Throw Event Symbol](./img/symbols/events/escalation_intermediate_throw_event.svg) + ![Escalation Intermediate Throw Event Symbol](/img/documentation/reference/bpmn20/escalation_intermediate_throw_event.svg) - ![Escalation Throw End Event Symbol](./img/symbols/events/escalation_throw_end_event.svg) + ![Escalation Throw End Event Symbol](/img/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/symbols/events/termination_end_event.svg) + ![Termination End Event Symbol](/img/documentation/reference/bpmn20/termination_end_event.svg) Compensation - ![Compensation Event Subprocess Startevent Symbol](./img/symbols/events/compensation_event_subprocess_start_event.svg) + ![Compensation Event Subprocess Startevent Symbol](/img/documentation/reference/bpmn20/compensation_event_subprocess_start_event.svg) - ![Compensation Boundary Interrupting Event Symbol](./img/symbols/events/compensation_boundary_event.svg) + ![Compensation Boundary Interrupting Event Symbol](/img/documentation/reference/bpmn20/compensation_boundary_event.svg) - ![Compensation Intermediate Throw Event Symbol](./img/symbols/events/compensation_intermediate_throw_event.svg) + ![Compensation Intermediate Throw Event Symbol](/img/documentation/reference/bpmn20/compensation_intermediate_throw_event.svg) - ![Compensation End Event Symbol](./img/symbols/events/compensation_end_event.svg) + ![Compensation End Event Symbol](/img/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/symbols/events/cancel_boundary_event.svg) + ![Cancel Boundary Symbol](/img/documentation/reference/bpmn20/cancel_boundary_event.svg) - ![Cancel End Event Symbol](./img/symbols/events/cancel_end_event.svg) + ![Cancel End Event Symbol](/img/documentation/reference/bpmn20/cancel_end_event.svg) Multiple - ![Multiple Start Event Symbol](./img/symbols/events/multiple_start_event.svg) + ![Multiple Start Event Symbol](/img/documentation/reference/bpmn20/multiple_start_event.svg) - ![Multiple Start Event Symbol](./img/symbols/events/multiple_start_event.svg) + ![Multiple Start Event Symbol](/img/documentation/reference/bpmn20/multiple_start_event.svg) - ![Multiple Event Subprocess Non Interrupting Start Event Symbol](./img/symbols/events/multiple_event_subprocess_non_interrupting_start_event.svg) + ![Multiple Event Subprocess Non Interrupting Start Event Symbol](/img/documentation/reference/bpmn20/multiple_event_subprocess_non_interrupting_start_event.svg) - ![Multiple Intermediate Catch Event Symbol](./img/symbols/events/multiple_intermediate_catch_event.svg) + ![Multiple Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg) - ![Multiple Intermediate Catch Event Symbol](./img/symbols/events/multiple_intermediate_catch_event.svg) + ![Multiple Intermediate Catch Event Symbol](/img/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg) - ![Multiple Boundary Non Interrupting Catch Event Symbol](./img/symbols/events/multiple_boundary_non_interrupting_event.svg) + ![Multiple Boundary Non Interrupting Catch Event Symbol](/img/documentation/reference/bpmn20/multiple_boundary_non_interrupting_event.svg) - ![Multiple Intermediate Throw Event Symbol](./img/symbols/events/multiple_intermediate_throw_event.svg) + ![Multiple Intermediate Throw Event Symbol](/img/documentation/reference/bpmn20/multiple_intermediate_throw_event.svg) - ![Multiple End Event Symbol](./img/symbols/events/multiple_end_event.svg) + ![Multiple End Event Symbol](/img/documentation/reference/bpmn20/multiple_end_event.svg) Multiple Parallel - ![Multiple Parallel Start Event Symbol](./img/symbols/events/multiple_parallel_start_event.svg) + ![Multiple Parallel Start Event Symbol](/img/documentation/reference/bpmn20/multiple_parallel_start_event.svg) - ![Multiple Parallel Start Event Symbol](./img/symbols/events/multiple_parallel_start_event.svg) + ![Multiple Parallel Start Event Symbol](/img/documentation/reference/bpmn20/multiple_parallel_start_event.svg) - ![Multiple Parallel Start Event Symbol](./img/symbols/events/multiple_parallel_non_interrupting_start_event.svg) + ![Multiple Parallel Start Event Symbol](/img/documentation/reference/bpmn20/multiple_parallel_non_interrupting_start_event.svg) - ![Multiple Parallel Catch Event Symbol](./img/symbols/events/multiple_parallel_catch_event.svg) + ![Multiple Parallel Catch Event Symbol](/img/documentation/reference/bpmn20/multiple_parallel_catch_event.svg) - ![Multiple Parallel Catch Event Symbol](./img/symbols/events/multiple_parallel_catch_event.svg) + ![Multiple Parallel Catch Event Symbol](/img/documentation/reference/bpmn20/multiple_parallel_catch_event.svg) - ![Multiple Parallel Intermediate Non Interrupting Event Symbol](./img/symbols/events/multiple_parallel_intermediate_non_interrupting_event.svg) + ![Multiple Parallel Intermediate Non Interrupting Event Symbol](/img/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 c50fcdc..91035d4 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/example-lifecycle-case.png) +![Example img](/img/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/lifecycle-example-1.png) + ![Example img](/img/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/lifecycle-example-2.png) +![Example img](/img/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/lifecycle-example-3.png) + ![Example img](/img/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/lifecycle-example-4.png) + ![Example img](/img/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/CaseInstanceLifecycle.png) +![Example img](/img/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/TaskStageLifecycle.png) +![Example img](/img/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/MilestoneLifecycle.png) +![Example img](/img/documentation/reference/cmmn11/concepts/MilestoneLifecycle.png) States diff --git a/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/repetition-rule-example.png b/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/repetition-rule-example.png deleted file mode 100644 index b927782..0000000 Binary files a/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/repetition-rule-example.png and /dev/null differ diff --git a/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/state-1.png b/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/state-1.png deleted file mode 100644 index fe1f00b..0000000 Binary files a/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/state-1.png and /dev/null differ diff --git a/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/state-2.png b/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/state-2.png deleted file mode 100644 index 503d10d..0000000 Binary files a/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/state-2.png and /dev/null differ diff --git a/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/state-3.png b/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/state-3.png deleted file mode 100644 index ce54390..0000000 Binary files a/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/state-3.png and /dev/null differ diff --git a/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/state-4.png b/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/state-4.png deleted file mode 100644 index c5be66e..0000000 Binary files a/docs/documentation/reference/cmmn11/markers/img/repetition-on-completion/state-4.png and /dev/null differ diff --git a/docs/documentation/reference/cmmn11/markers/repetition-rule.md b/docs/documentation/reference/cmmn11/markers/repetition-rule.md index 216f03d..32a8983 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/repetition-on-completion/repetition-rule-example.png) +![Example img](/img/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/repetition-on-completion/state-1.png) +![Example img](/img/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/repetition-on-completion/state-2.png) +![Example img](/img/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/repetition-on-completion/state-3.png) +![Example img](/img/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/repetition-on-completion/state-4.png) +![Example img](/img/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/repetition-by-entry-criteria/repetition-rule-example.png) +![Example img](/img/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/repetition-by-entry-criteria/state-1.png) +![Example img](/img/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/repetition-by-entry-criteria/state-2.png) +![Example img](/img/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/repetition-by-entry-criteria/state-3.png) +![Example img](/img/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/repetition-by-entry-criteria/state-4.png) +![Example img](/img/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/repetition-by-entry-criteria/state-5.png) +![Example img](/img/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 18dba68..2dcbcd6 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/variableOnPart.png) +![Example img](/img/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 0b510bf..b9898b6 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/hit-policy.png) +![Hit Policy](/img/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/hit-policy-unique.png)Hit Policy Unique" class="no-lightbox +![Example img](/img/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/hit-policy-any.png)Hit Policy Any" class="no-lightbox +![Example img](/img/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/hit-policy-first.png)Hit Policy First" class="no-lightbox +![Example img](/img/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/hit-policy-rule-order.png)Hit Policy Rule Order" class="no-lightbox +![Example img](/img/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/hit-policy-collect.png)Hit Policy Collect" class="no-lightbox +![Example img](/img/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/hit-policy-collect-sum.png)Hit Policy Collect SUM" class="no-lightbox +![Example img](/img/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/hit-policy-collect-min.png)Hit Policy Collect MIN" class="no-lightbox +![Example img](/img/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/hit-policy-collect-max.png)Hit Policy Collect MAX" class="no-lightbox +![Example img](/img/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/hit-policy-collect-count.png)Hit Policy Collect COUNT" class="no-lightbox +![Example img](/img/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 6bef45d..28ac37a 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/dish-table.png) +![Dish table](/img/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/decision-name.png) +![Decision Name](/img/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/decision-id.png) +![Decision Id](/img/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 2523d70..cfcecbe 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/input.png) +![Input](/img/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/input-label.png)Input Label" class="no-lightbox +![Example img](/img/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/input-expression.png)Input Expression" class="no-lightbox +![Example img](/img/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/input-type-definition.png)Input Type Definition" class="no-lightbox +![Example img](/img/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 35c132c..5629733 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/output.png)Output" class="no-lightbox +![Example img](/img/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/output-label.png)Output Label" class="no-lightbox +![Example img](/img/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/output-name.png)Output Name" class="no-lightbox +![Example img](/img/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/output-type-definition.png)Output Type Definition" class="no-lightbox +![Example img](/img/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 adb6bf3..9882b01 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/rule.png)Rule" class="no-lightbox +![Example img](/img/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/input-entry.png)Input Entry" class="no-lightbox +![Example img](/img/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/output-entry.png)Output Entry" class="no-lightbox +![Example img](/img/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/description.png)Description" class="no-lightbox +![Example img](/img/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 debd75e..d4d3727 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/drd.png) +![Decision Requirements Graph](/img/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/drg-name.png) +![Decision Requirements Graph Name](/img/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/drg-id.png) +![Decision Requirements Graph Id](/img/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/decision.png) +![Decision](/img/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/required-decision.png) +![Required Decision](/img/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/input-data.png) +![Input Data](/img/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/knowledge-source.png) +![Knowledge Source](/img/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 aa2f4fd..4b47867 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/string-type.png)String" class="no-lightbox +![Example img](/img/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/integer-type.png)Integer" class="no-lightbox +![Example img](/img/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/boolean-type.png)Boolean" class="no-lightbox +![Example img](/img/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/date-type.png)Date" class="no-lightbox +![Example img](/img/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 3a7b0bf..0978706 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/dish-dmn.png)Select Dish +![Example img](/img/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/beverages-dmn.png)Beverages Decision +![Example img](/img/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/drd.png)Select beverages +![Example img](/img/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 21d75b0..09b832a 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/bpmn-model-api-simple-process.png)Single User Task Example +![Example img](/img/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/bpmn-model-api-parallel-gateway.png)Parallel Task Example +![Example img](/img/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 6772bbe..22447fc 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/eclipse-00-preferences-maven-archetypes.png)Eclipse Preferences: Maven Archetypes +![Example img](/img/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/eclipse-01-add-remote-archetype-catalog.png)Eclipse Preferences: Add Maven Archetype Catalog +![Example img](/img/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/eclipse-02-create-maven-project.png)Create new Maven project +![Example img](/img/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/eclipse-03-select-maven-project-location.png)Eclipse: Select Maven project location +![Example img](/img/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/eclipse-04-select-archetype-from-catalog.png)Eclipse: Select Maven archetype from catalog +![Example img](/img/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/eclipse-05-specify-maven-coordinates-and-operaton-version.png)Eclipse: Specify Maven coordinates and Operaton version +![Example img](/img/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/eclipse-06-generated-maven-project.png)Generated Maven Project in Eclipse +![Example img](/img/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 86eb33d..824e8cd 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/process-application-events.png)Process Application Events +![Example img](/img/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 eab1107..315e2f9 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/process-application-context.png)Process Application Context +![Example img](/img/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 cb0a7ba..b2556c3 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/process-application-deployment.png)Process Application Deployment +![Example img](/img/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/process-application-redeployment.png)Process Application Redeployment +![Example img](/img/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 8290660..f75226e 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/database-schema.png)Database Schema +![Example img](/img/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/erd_722_bpmn.svg)BPMN Tables +![Example img](/img/documentation/user-guide/process-engine/database/erd_722_bpmn.svg)BPMN Tables ## Engine DMN -![Example img](./../img/erd_722_dmn.svg)DMN Tables +![Example img](/img/documentation/user-guide/process-engine/database/erd_722_dmn.svg)DMN Tables ## Engine CMMN -![Example img](./../img/erd_722_cmmn.svg)CMMN Tables +![Example img](/img/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/erd_722_history.svg)History Tables +![Example img](/img/documentation/user-guide/process-engine/database/erd_722_history.svg)History Tables ## Identity -![Example img](./../img/erd_722_identity.svg)Identity Tables \ No newline at end of file +![Example img](/img/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 09e2af6..c7c5f17 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/error-result-xor.png)Error Result XOR +![Example img](/img/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/bpmn.boundary.error.event.png)Error Boundary Event +![Example img](/img/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/retry.png)Retry Mechanism +![Example img](/img/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/error-handling-user-task.png)User Task Error Handling +![Example img](/img/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 3336007..58f894f 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/external-task-pattern.png)External Task Pattern +![Example img](/img/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. -![Example img](./img/external-task-long-polling.png" alt="Long polling to fetch and lock external tasks +![Long polling to fetch and lock external tasks](/img/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 0546f54..ed5a6ca 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/process-engine-history-architecture.png)History Architecture +![Example img](/img/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 6614526..e2ff2c6 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/history-cleanup-process-hierarchy.png)History Cleanup +![Example img](/img/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 383ad00..545f036 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/multi-tenancy-tenant-identifiers.png)One Process Engine with Tenant-Identifiers Architecture +![Example img](/img/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](./../../introduction/img/multi-tenancy-process-engine.png)One Process Engine per Tenant Architecture +![Example img](/img/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 982d383..dd5cceb 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/process-diagram-bpmn-js.png)Process Diagram Rendering +![Example img](/img/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 e9c8ed2..4528d3b 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/api.services.png)API Services +![Example img](/img/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 caadb8f..372510b 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/parallel-gw.png)Parallel Gateway +![Example img](/img/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 4799f23..a3ce755 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/variables-3.png)Running Process Instance +![Example img](/img/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 0a23f11..6a07c18 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/versioning.png)Versioning +![Example img](/img/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 fc05323..b446bc0 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/job-executor-basic-architecture.png)Basic Architecture +![Example img](/img/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/job-executor-priority-precedence.png)^Priority Precedence +![Example img](/img/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/job-executor-exclusive-jobs.png)Exclusive Jobs +![Example img](/img/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/exclusive-over-process-hierarchies.png)Single Engine +![Example img](/img/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/job-executor-single-engine.png)Single Engine +![Example img](/img/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/job-executor-multiple-engines.png)Multiple Engines +![Example img](/img/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/homogeneous-cluster.png)Homogeneous Cluster +![Example img](/img/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/heterogeneous-cluster.png)Heterogenous Cluster +![Example img](/img/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 b9622b5..2242676 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,15 @@ 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/bpmn-elements/receive-task.svg)](../../reference/bpmn20/tasks/receive-task.md) -[![](./img/bpmn-elements/user-task.svg)](../../reference/bpmn20/tasks/user-task.md) -[![](./img/bpmn-elements/message-event.svg) Message Event](../../reference/bpmn20/events/message-events.md) -[![](./img/bpmn-elements/timer-event.svg) Timer Event](../../reference/bpmn20/events/timer-events.md) -[![](./img/bpmn-elements/signal-event.svg) Signal Event](../../reference/bpmn20/events/signal-events.md) +[![](/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) The [Event Based Gateway](../../reference/bpmn20/gateways/event-based-gateway.md): - +
@@ -38,7 +38,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/transactions-1.png)Transaction Boundaries +![Example img](/img/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 +52,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/transactions-2.png)Asynchronous Continuations +![Example img](/img/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 +114,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/process-engine-activity-execution.png)Asynchronous Continuations +![Example img](/img/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 +129,7 @@ executed: Asynchronous Continuations allow putting break points between the execution of the sequence flows and the execution of the activity: -![Example img](./img/process-engine-async.png) +![Example img](/img/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 +143,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/process-engine-async-transactions.png) +![Example img](/img/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 +153,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/transactions-3.png)Rollback +![Example img](/img/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 +173,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/NotWorkingTimerOnServiceTimeout.png)Not Working Timeout +![Example img](/img/documentation/user-guide/process-engine/NotWorkingTimerOnServiceTimeout.png)Not Working Timeout ## Transaction Integration @@ -322,7 +322,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/optimisticLockingTransactions.png)Transactions with Optimistic Locking +![Example img](/img/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 +384,7 @@ For example The following model shows a parallel gateway, on which the `OptimisticLockingException` can occur. -![Example img](./img/optimisticLockingParallel.png)Optimistic Locking in parallel gateway +![Example img](/img/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 5bf19f8..14d2397 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/variables-3.png)Variables +![Example img](/img/documentation/user-guide/process-engine/variables-3.png)Variables The runtime structure of this process is as follows: -![Example img](./img/variables-4.png)Variables +![Example img](/img/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/variables-5.png)Variables +![Example img](/img/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/variables-6.png)Variables +![Example img](/img/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/variables-1.png)Variables +![Example img](/img/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 bf57e60..b45b0f7 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/jboss-jconsole.png)JConsole +![Example img](/img/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/jboss-service-dependencies.png)JBoss Service Dependencies +![Example img](/img/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 3abdd12..bce6217 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/reference-operaton-form.png)Provide Form Key for Operaton Forms +![Example img](/img/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/variable-mapping-operaton-form.png)User Input/Output Mappings for default values for form fields +![Example img](/img/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/deploy-form.png)Deploy your Operaton Form file +![Example img](/img/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/tasklist-generic-form.png)Generic Start Form +![Example img](/img/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/generated-forms-example.png)Generated Form +![Example img](/img/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 3c96b5c..dc2136a 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/task-form-process.png)Task Form Process +![Example img](/img/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/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](/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 * 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/variablesTaskFormExample.png)Varibales Task Form Example +![Example img](/img/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/startFormExample.png)Start Form Example +![Example img](/img/documentation/user-guide/task-forms/startFormExample.png)Start Form Example -If the user clicks on "Start a process instance" ![Example img](./img/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](/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: * 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/tasklist-forms-layouted-start.png)Tasklist Start Forms layouted +![Example img](/img/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 6e2c437..6c35cda 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) 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) 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) 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) 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) 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) ## 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) Three test scopes are defined: diff --git a/docs/documentation/webapps/admin/auditing.md b/docs/documentation/webapps/admin/auditing.md index d675e4d..44dc560 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/admin-system-audit.png)Operation Log +![Example img](/img/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/admin-audit-entity.png)Filter by Type +![Example img](/img/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 4bc6c86..9d5a5bf 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/admin-authorization.png)Authorizations +![Example img](/img/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/admin-authorization-application-new-group.png)New Group +![Example img](/img/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/admin-authorization-application-new-user.png)Authorization Application New User +![Example img](/img/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/admin-access.png)Admin Access +![Example img](/img/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/admin-authorization-filter.png)Authorization Application New User +![Example img](/img/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/admin-authorization-users.png)Users Authorization +![Example img](/img/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/admin_cockpit_access_group.png)Authorization Application New User +![Example img](/img/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/admin_proc_def_group_read_access.png)Authorization Application New User +![Example img](/img/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/admin_proc_def_group_full_access.png)Process Definition Authorization +![Example img](/img/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/admin_auth_edit_full_access.png)Edit Access +![Example img](/img/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/admin_tasklist_access_group.png)Access Group +![Example img](/img/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/admin_proc_def_acc_read_create_inst_access.png)Instance Access +![Example img](/img/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/admin_proc_inst_acc_create.png)Create Access +![Example img](/img/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/admin_proc_def_acc_read.png)Definition Access +![Example img](/img/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/admin_cockpit_proc_inst_id.png)Running Instances +![Example img](/img/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/admin_proc_inst_id_acc.png)Instance Access +![Example img](/img/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/admin_filter_acc_read.png)Read Permissions +![Example img](/img/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/admin_task_acc_edit.png)Edit Access +![Example img](/img/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 5972d5e..bbbc552 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/admin-groups.png)Groups Menu +![Example img](/img/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 9f55bee..e75d193 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/admin-start-page-view.png)Dashboard +![Example img](/img/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 b815210..8c35337 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/admin-system-management.png)System Management +![Example img](/img/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/admin-diagnostics.png)Diagnostics +![Example img](/img/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/admin-execution-metrics.png)Execution Metrics +![Example img](/img/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 048243c..7bb3396 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/admin-tenants.png)Tenants Menu +![Example img](/img/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 6925cf3..e95270a 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/admin-users.png)User Menu +![Example img](/img/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/admin-initial-user-setup.png)Initial User Setup +![Example img](/img/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 4b6d275..5e60094 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/cockpit-operation-log.png)Operation Log +![Example img](/img/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/cockpit-audit-timestamp.png)Filter by Timestamp +![Example img](/img/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/cockpit-audit-type.png)Filter by Type +![Example img](/img/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/cockpit-audit-annotation.png)Annotation edit +![Example img](/img/documentation/webapps/cockpit/cockpit-audit-annotation.png)Annotation edit ## User Operation Log per Process -![Example img](./img/cockpit-user-operation-log.png)Batch View Page +![Example img](/img/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 a9646bf..4efa147 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/batch/batch_operation_definition.png) +![Example img](/img/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/batch/batch-in-operator.png)IN Operator +![Example img](/img/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/batch/batch-in-operator-modal.png)IN Operator Modal +![Example img](/img/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 -![Example img](./../img/batch/batch_operation_confirmation.png" alt="Batch Operation Confirmation" caption=" +![Batch Operation Confirmation](/img/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 -![Example img](./../img/batch/batch_operation_result.png" alt="Batch Operation Result" caption=" +![Batch Operation Result](/img/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 9b515eb..954a5a2 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/batch.png)Batch View Page +![Example img](/img/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/batch-search.png)Batch Search +![Example img](/img/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 92851a3..7d6030d 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. -![Example img](./../img/correlate-message/batch-operation.png" alt="Correlate Message Batch Operation" caption=" +![Correlate Message Batch Operation](/img/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. -![Example img](./../img/correlate-message/process-action.png" alt="Process action to correlate a message" caption="Process action to correlate a message +![Process action to correlate a message](/img/documentation/webapps/cockpit/bpmn/process-action.png) If you click this button, a modal dialog opens: -![Example img](./../img/correlate-message/modal-dialog.png" alt="Modal dialog to correlate a message" caption="Modal dialog to correlate a message +![Modal dialog to correlate a message](/img/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. -![Example img](./../img/correlate-message/diagram-overlay-button.png" alt="Diagram overlay button" caption="Diagram overlay button +![Diagram overlay button](/img/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 98d5289..8455656 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/cockpit-process-definition-state.png)Deployed Processes +![Example img](/img/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/cockpit-deployed-processes-search.png)cockpit Search +![Example img](/img/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/cockpit-deployed-processes.png)Rendered Process Preview +![Example img](/img/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/cockpit-search.png)cockpit Search +![Example img](/img/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/cockpit-export.png)CSV Export for Process Instances +![Example img](/img/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/cockpit-export-modal-dialog.png)CSV Export for Process Instances: Modal Dialog +![Example img](/img/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/cockpit-export-download-as-csv.png)CSV Export for Process Instances: Modal Dialog – Download as CSV +![Example img](/img/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/cockpit-export-result.png)CSV Export for Process Instances: Export Result +![Example img](/img/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/cockpit-in-operator.png)IN Operator +![Example img](/img/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/cockpit-in-operator-modal.png)IN Operator Modal +![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-in-operator-modal.png)IN Operator Modal ## Delete process definitions -![Example img](./../img/cockpit-delete-process-definition.png)Delete Process Definition +![Example img](/img/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 a73aec8..9b80101 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/drilldown/shape.png) +![A Collapsed Subprocess Shape with a drilldown Action](/img/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/drilldown/breadcrumbs.png) +![Breadcrumb links showing the process hirarchy](/img/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/drilldown/migration.png) +![Migration view for collapsed subprocesses](/img/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 c794ec2..2f7eeff 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/cockpit-failed-job-drill-down.png)Failed Job Drill Down +![Example img](/img/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/cockpit-instance-job-retry.png)Process instance job retry +![Example img](/img/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/cockpit-bulk-retry.png)Batch Retry +![Example img](/img/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 099ecc1..3c88ec2 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/cockpit-process-definitions-view.png)Process Definition View +![Example img](/img/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/filter-examples/add-filter.png)Filter Example +![Example img](/img/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/filter-examples/business-key.png)Filter Example +![Example img](/img/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/filter-examples/start-date.png)Filter Example +![Example img](/img/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/filter-examples/start-date-before-after.png)Filter Example +![Example img](/img/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/filter-examples/var-string.png)Filter Example +![Example img](/img/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/filter-examples/var-boolean.png)Filter Example +![Example img](/img/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/filter-examples/var-numeric.png)Filter Example +![Example img](/img/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/filter-examples/history-completed.png)Filter Example -![Example img](./../img/filter-examples/history-running.png)Filter Example +![Example img](/img/documentation/webapps/cockpit/bpmn/history-completed.png)Filter Example +![Example img](/img/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/filter-examples/history-end-date.png)Filter Example +![Example img](/img/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/cockpit-bulk-delete.png)Batch Delete Running Process Instances +![Example img](/img/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/cockpit-documentation.png)Set Job Priority +![Example img](/img/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/cockpit-set-job-priority.png)Set Job Priority +![Example img](/img/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/cockpit-call-activity-definition-navigation.png)Navigate to called processes definition +![Example img](/img/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-history-views.md b/docs/documentation/webapps/cockpit/bpmn/process-history-views.md index 3678fa3..d5a0b77 100644 --- a/docs/documentation/webapps/cockpit/bpmn/process-history-views.md +++ b/docs/documentation/webapps/cockpit/bpmn/process-history-views.md @@ -18,7 +18,7 @@ At the top of the process definition view and the process instance view, you can ## Process Definition History View -![Example img](./../img/cockpit-history-view-process-definition-history.png)Process Definition History +![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-definition-history.png)Process Definition History In the history view of the process definition you see an overview of all of the running and completed process instances. On the bottom of the screen, a [filter][process-definition-view-filter] can be applied and you have the option of selecting to only see process instances in a specific state. Running and completed instances can be selected. @@ -30,7 +30,7 @@ Furthermore, you can maximize the diagram view or the detailed information panel ### Heatmap -![Example img](./../img/cockpit-heatmap.png)Process Definition Heatmap +![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-heatmap.png)Process Definition Heatmap The history view of a process definition contains a `Heat` button in the top-right corner of the process diagram. Clicking this button activates the heatmap view. In this view, a heatmap is overlayed on the BPMN diagram showing which nodes and sequence flows have the most activity. Activity is measured by the number of tokens which have been processed by the node or sequence flow. @@ -39,7 +39,7 @@ It is still possible to interact with the diagram while the heatmap is shown (e. ## Process Instance History View -![Example img](./../img/cockpit-history-view-process-instance-history.png)Process Instance History +![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-instance-history.png)Process Instance History In the history view of the process instance you see instance-specific information. On the left side of the screen, a [filter][process-definition-view-filter] can be applied and you have the option of selecting to only see process instances in specific states. Running, completed and canceled process instances can be viewed as well as task-specific activity states. diff --git a/docs/documentation/webapps/cockpit/bpmn/process-instance-migration.md b/docs/documentation/webapps/cockpit/bpmn/process-instance-migration.md index 67c4c61..c9d2ac6 100644 --- a/docs/documentation/webapps/cockpit/bpmn/process-instance-migration.md +++ b/docs/documentation/webapps/cockpit/bpmn/process-instance-migration.md @@ -13,11 +13,11 @@ menu: --- -![Example img](./../img/migration/step1_overview.png)Process Instance Migration +![Example img](/img/documentation/webapps/cockpit/bpmn/step1_overview.png)Process Instance Migration You can migrate running process instances from their current process definition version to another version of that definition or another process definition altogether. You can access the migration page by navigating to the process definition or instance view of a process with multiple versions. -![Example img](./../img/migration/accessing_2.png)Link to Process Instance Migration Page from Process Definition Page +![Example img](/img/documentation/webapps/cockpit/bpmn/accessing_2.png)Link to Process Instance Migration Page from Process Definition Page Performing a migration consists of four steps: @@ -35,7 +35,7 @@ Activities that have running instances, but are not mapped to a target activity, ### Create a new mapping -![Example img](./../img/migration/step1_createMapping.png)Creating a new mapping +![Example img](/img/documentation/webapps/cockpit/bpmn/step1_createMapping.png)Creating a new mapping To create a mapping for an activity, hover over the activity and click on the arrow button in the lower right corner of the activity. This enters the mapping mode. An arrow following your mouse movements is created and possible target activities are highlighted. Clicking on one of the highlighted activities in the target diagram creates a mapping from the source activity to the selected target activity. Clicking anywhere else or pressing ESC exits the edit mode. @@ -54,7 +54,7 @@ Checking the link diagrams navigation checkbox causes view changes of one diagra ### Check incorrect mappings -![Example img](./../img/migration/step1_errorPopover.png)Report for an incorrect mapping +![Example img](/img/documentation/webapps/cockpit/bpmn/step1_errorPopover.png)Report for an incorrect mapping If you create a mapping that is incorrect, a red error indicator is displayed in the top right corner of the source and target activity of the faulty mapping. Clicking on the error indicator opens a tooltip showing details of the error. @@ -78,26 +78,26 @@ You can also click on an activity to show a green arrow pointing from the source After finishing defining the flow-node mapping, click on the **Set Variables** button to proceed. -![Example img](./../img/migration/step2.png)Set variables for migration +![Example img](/img/documentation/webapps/cockpit/bpmn/step2.png)Set variables for migration The next step allows you to set variables into the process instances’ scope. -![Example img](./../img/migration/step2_modal.png)Set variables for migration – add variable +![Example img](/img/documentation/webapps/cockpit/bpmn/step2_modal.png)Set variables for migration – add variable When you click on the **Add Variable** button, a modal dialog opens where you can define the variable name, type, and value. -![Example img](./../img/migration/step2_validation.png)Set variables for migration – variable validation +![Example img](/img/documentation/webapps/cockpit/bpmn/step2_validation.png)Set variables for migration – variable validation The Engine validates the variable against the migration plan validation rules and Cockpit displays the result for each variable in the **Valid** column of the table. If a variable invalidates the migration plan, Cockpit opens a popover with the respective validation errors. -![Example img](./../img/migration/step2_edit.png)Set variables for migration – edit variable +![Example img](/img/documentation/webapps/cockpit/bpmn/step2_edit.png)Set variables for migration – edit variable You can still edit the variables you have just added. For instance, if a variable invalidates the migration plan, you can easily correct it to proceed with the process instance migration. ## Select instances -![Example img](./../img/migration/step3.png)Select instances for migration +![Example img](/img/documentation/webapps/cockpit/bpmn/step3.png)Select instances for migration After finishing the **Set Variables** step, click **Select Instances** to proceed to instance selection. @@ -116,7 +116,7 @@ If you do not explicitly select any instances, all instances of the source proce ## Confirm Migration -![Example img](./../img/migration/step4.png)Confirm Migration +![Example img](/img/documentation/webapps/cockpit/bpmn/step4.png)Confirm Migration In the next step, you see an overview of the migration that you are about to execute. This page displays the exact id of the source and target process definition as well as the number of process instances you are about to migrate. It also contains a tabular display of the migration plan. You can configure options for the migration such as whether the migration should be performed asynchronously as a batch and whether custom listeners and IO mappings should be skipped. @@ -125,13 +125,13 @@ 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/cockpit-add-variables.png)Add Variables +![Example img](/img/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/cockpit-edit-variables.png)Edit Variables +![Example img](/img/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/cockpit-cancel-process-instance.png)Cancel Instances +![Example img](/img/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 9f9703e..a71c20c 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/cockpit-cleanup-page.png)Cockpit Cleanup View +![Example img](/img/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/cockpit-cleanup-state-incident.png)Cockpit Cleanup Job Incident +![Example img](/img/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/cockpit-cleanup-ttl.png)Cockpit History Time To Live Modification in Cleanup Page +![Example img](/img/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 b905de3..fc504e5 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/cmmn/case-definition-view.png)Case Definition View +![Example img](/img/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 6d4995f..24d93c3 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/cmmn/case-instance-view.png)Case Instance View +![Example img](/img/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/cmmn/detailed-information-view.png)Detailed Information Panel +![Example img](/img/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/cmmn/add-variables.png)Add Variables +![Example img](/img/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/cmmn/edit-variables.png)Edit Variables +![Example img](/img/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/cmmn/terminate-case.png)Terminate Case Instance +![Example img](/img/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 2d9f309..e74400a 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/cmmn/case-dashboard-search.png)Case Instance Search +![Example img](/img/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/cmmn/case-dashboard-deployed.png)Deployed Case Definitions +![Example img](/img/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 da3c450..2defb2b 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/dashboard.png)Cockpit Dashboard +![Example img](/img/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/dashboard-metrics.png)Cockpit Dashboard Metrics +![Example img](/img/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/cockpit-multi-engine.png)Multiple Engines +![Example img](/img/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 505048e..883d0e9 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/cockpit-deployments-page.png)Cockpit Deployment View +![Example img](/img/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 e1a8151..c9c7e06 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/cockpit-decision-definition-list.png)Deployed Decision Definitions +![Example img](/img/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/cockpit-drd-list.png)Deployed Decision Definitions +![Example img](/img/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/dmn/decision-instance-search.png)Decision Instance Search +![Example img](/img/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 297bfc9..76c1e4a 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/cockpit-decision-definition-view.png)Decision Definition View +![Example img](/img/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 15cd19a..74c69d2 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/cockpit-decision-instance-view.png)Decision Instance View +![Example img](/img/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 82dbfb4..54c4670 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/cockpit-decision-requirements-definition-view.png)Decision Requirements Definition View +![Example img](/img/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/cockpit-decision-definition-requirement-decision-instances-tab.png)Decision Instances Tab +![Example img](/img/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/cockpit-decision-definition-requirement-decision-drd-tab.png)Decision Requirements Definition Instances Tab +![Example img](/img/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 1a85e36..3a456d3 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/cockpit-decision-requirements-definition-instance-view.png)Decision Requirements Definition View +![Example img](/img/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/cockpit-decision-definition-requirement-decision-instance-instances-tab.png)Decision Instances Tab +![Example img](/img/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 eb85954..2d3ac2f 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/cockpit-plugin.png)Cockpit Plugin +![Example img](/img/documentation/webapps/cockpit/extend/cockpit-plugin.png)Cockpit Plugin ## The Nature of a Cockpit Plugin @@ -198,7 +198,7 @@ properties: { ### Navigation -![Example img](./../img/plugin-points/plugin-point-navigation.png)Navigation +![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-navigation.png)Navigation **Name:** `cockpit.navigation` @@ -216,7 +216,7 @@ properties: { **Name:** `cockpit.login` -![Example img](./../img/plugin-points/plugin-point-login-custom.png)Login +![Example img](/img/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/plugin-points/plugin-point-dashboard-custom.png)Dashboard +![Example img](/img/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/plugin-points/plugin-point-dashboard-metrics-view.png)Dashboard +![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-dashboard-metrics-view.png)Dashboard ### Processes Dashboard **Name:** `cockpit.processes.dashboard` -![Example img](./../img/plugin-points/plugin-point-cockpit-processes-dashboard.png)Dashboard +![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-processes-dashboard.png)Dashboard ### Decisions Dashboard **Name:** `cockpit.decisions.dashboard` -![Example img](./../img/plugin-points/plugin-point-cockpit-decisions-dashboard.png)Dashboard +![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-decisions-dashboard.png)Dashboard ### Cases Dashboard **Name:** `cockpit.cases.dashboard` -![Example img](./../img/plugin-points/plugin-point-cockpit-cases-dashboard.png)Dashboard +![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-cases-dashboard.png)Dashboard ### Process Definition Runtime Tab **Name:** `cockpit.processDefinition.runtime.tab` -![Example img](./../img/plugin-points/plugin-point-process-definition-details.png)Process Definition Runtime Tab +![Example img](/img/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/plugin-points/plugin-point-process-instance-details.png)Process Instance Runtime Tab +![Example img](/img/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/plugin-points/plugin-point-process-definition-runtime-action.png)Process Definition Runtime Action +![Example img](/img/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/plugin-points/plugin-point-process-instance-runtime-action.png)Process Instance Runtime Action +![Example img](/img/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/plugin-points/plugin-point-cockpit-process-definition-view.png)Process Definition View +![Example img](/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-definition-view.png)Process Definition View ### Process Instance View **Name:** `cockpit.processInstance.view` -![Example img](./../img/plugin-points/plugin-point-cockpit-process-instance-view.png)Process Instance View +![Example img](/img/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/plugin-points/plugin-point-definition-diagram-overlay.png)Definition Diagram Overlay +![Example img](/img/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/plugin-points/plugin-point-instance-diagram-overlay.png)Instance Diagram Overlay +![Example img](/img/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/plugin-points/plugin-point-job-definition-action.png)Job Definition Action +![Example img](/img/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/plugin-points/plugin-point-decision-definition-tab.png)Decision Definition Tab +![Example img](/img/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/plugin-points/plugin-point-decision-definition-action.png)Decision Definition Action +![Example img](/img/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/plugin-points/plugin-point-decision-definition-table.png)Decision Definition Table +![Example img](/img/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/plugin-points/plugin-point-decision-instance-tab.png)Decision Instance Tab +![Example img](/img/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/plugin-points/plugin-point-decision-instance-action.png)Decision Instance Action +![Example img](/img/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/plugin-points/plugin-point-decision-instance-table.png)Decision Instance Table +![Example img](/img/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/plugin-points/plugin-point-case-definition-tab.png)Case Definition Tab +![Example img](/img/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/plugin-points/plugin-point-case-definition-action.png)Case Definition Action +![Example img](/img/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/plugin-points/plugin-point-case-definition-diagram-overlay.png)Case Definition Diagram Overlay +![Example img](/img/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/plugin-points/plugin-point-case-definition-diagram-overlay.png)Case Definition Diagram Overlay +![Example img](/img/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/plugin-points/plugin-point-case-instance-tab.png)Case Instance Tab +![Example img](/img/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/plugin-points/plugin-point-case-instance-action.png)Case Instance Action +![Example img](/img/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/plugin-points/plugin-point-case-instance-diagram-overlay.png)Case Instance Diagram Overlay +![Example img](/img/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/plugin-points/plugin-point-case-instance-diagram-overlay.png)Case Instance Diagram Overlay +![Example img](/img/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/plugin-points/plugin-point-repository-resource-action.png)Repository Resource Action +![Example img](/img/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/plugin-points/plugin-point-repository-resource-detail.png)Repository Resource Detail +![Example img](/img/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/plugin-points/plugin-point-task-dashboard.png)Open Task Dashboard +![Example img](/img/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/plugin-points/plugin-point-batch-operation.png)Custom Plugin +![Example img](/img/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/plugin-points/plugin-point-incident-action.png)Incident Action +![Example img](/img/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 dc2e126..ab005c8 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/duration-report.png)Process Instance Duration Report +![Example img](/img/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/historic-task-instance-report.png)Historic Task Instance Report +![Example img](/img/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 9b3c0e2..1d9d3af 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/task-dashboard.png)Open Task Dashboard +![Example img](/img/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 c87b322..b112d71 100644 --- a/docs/documentation/webapps/tasklist/dashboard.md +++ b/docs/documentation/webapps/tasklist/dashboard.md @@ -10,21 +10,21 @@ menu: --- -![Example img](./img/tasklist-dashboard-detail.png)Tasklist Dashboard +![Example img](/img/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/tasklist-toggle-view.png)Tasklist View +![Example img](/img/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/tasklist-start-process.png)Start Process +![Example img](/img/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/tasklist-start-task.png)Standalone Tasks +![Example img](/img/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/tasklist-filter-results.png)Filter Results +![Example img](/img/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/tasklist-task-search.png)Task Search +![Example img](/img/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/tasklist-case-insensitive.png)Task Search +![Example img](/img/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/tasklist-in-operator.png)IN Operator +![Example img](/img/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/tasklist-in-operator-modal.png)IN Operator Modal +![Example img](/img/documentation/webapps/tasklist/tasklist-in-operator-modal.png)IN Operator Modal ## Task view -![Example img](./img/tasklist-task-view.png)Task Detail View +![Example img](/img/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/tasklist-task-view-tabs.png)Detail Tabs +![Example img](/img/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 af3c63c..cecc018 100644 --- a/docs/documentation/webapps/tasklist/filters.md +++ b/docs/documentation/webapps/tasklist/filters.md @@ -11,7 +11,7 @@ menu: --- -![Example img](./img/tasklist-create-filter.png)Create Filter +![Example img](/img/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/tasklist-filter-detail.png)Filter Details +![Example img](/img/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 717e9c6..f7a933f 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/tasklist-user-task-state-complete.png)User Task States +![Example img](/img/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 399e138..1e66dc4 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/plugin-points/tasklist-plugin-navbar-action.png)Plugin Point +![Example img](/img/documentation/webapps/tasklist/tasklist-plugin-navbar-action.png)Plugin Point --- **Name:** `tasklist.task.action`. -![Example img](./img/plugin-points/tasklist-plugin-task-action.png)Plugin Point +![Example img](/img/documentation/webapps/tasklist/tasklist-plugin-task-action.png)Plugin Point --- **Name:** `tasklist.header`. -![Example img](./img/plugin-points/tasklist-plugin-tasklist-header.png)Plugin Point +![Example img](/img/documentation/webapps/tasklist/tasklist-plugin-tasklist-header.png)Plugin Point --- **Name:** `tasklist.task.detail`. -![Example img](./img/plugin-points/tasklist-plugin-task-detail.png)Plugin Point +![Example img](/img/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/plugin-points/tasklist-plugin-list.png)Plugin Point +![Example img](/img/documentation/webapps/tasklist/tasklist-plugin-list.png)Plugin Point --- **Name:** `tasklist.card`. -![Example img](./img/plugin-points/tasklist-plugin-card.png)Plugin Point +![Example img](/img/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 4f2a86d..df9a347 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/tasklist-task-form-modeler.png)User Task Assignment +![Example img](/img/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 bf3dcf3..a4bbdb5 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/welcome-dashboard-plugin.png)Plugin Point +![Example img](/img/documentation/webapps/welcome/welcome-dashboard-plugin.png)Plugin Point **Name:** `welcome.profile`. -![Example img](./img/welcome-profile-plugin.png)Plugin Point +![Example img](/img/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 747c8ad..ecd5086 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/cockpit-loan-approval.png) +![Example image](/img/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/start-form-generic.png) +![Example image](/img/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/create-process-definition-authorization.png) +![Example image](/img/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/create-process-instance-authorization.png) +![Example image](/img/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/diagram.png) +![Example image](/img/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/task-form-generic.png) +![Example image](/img/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 5f5ab39..390c79e 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/form-builder-start-form.png) +.![Example image](/img/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/modeler-start-form.png) +![Example image](/img/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/start-form-embedded.png) +![Example image](/img/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/task-form-embedded.png) +![Example image](/img/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 fea7918..071bf72 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/modeler-new-bpmn-diagram.png) +![Example image](/img/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/modeler-step1.png) +![Example image](/img/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/modeler-step2.png) +![Example image](/img/get-started/archive/java-process-app/modeler-step2.png) Add an End Event named *Loan Request Approved*. -![Example image](./img/modeler-step3.png) +![Example image](/img/get-started/archive/java-process-app/modeler-step3.png) ## Configure a User Task -![Example image](./img/modeler-step4.png) +![Example image](/img/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/modeler-step5.png) +![Example image](/img/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 5d76e05..d74a0a7 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/eclipse-new-project.png) +![Example image](/img/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 cac2305..57a543d 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/modeler-service-task1.png) -![Example image](./img/modeler-service-task2.png) +![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) ## 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/modeler-service-task3.png) +![Example image](/img/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 fce52f6..2be9d3d 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/prepare-pizza.png) +![Example image](/img/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/pizza-order-process-prepare-pizza.png) +![Example image](/img/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/pizza-order-process-send-rejection-email.png) +![Example image](/img/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 5c29313..d208d9f 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/modeler-new-bpmn-diagram.png) +![Example image](/img/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/pizza-order-process.png) +![Example image](/img/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/pizza-order-process-expression.png) +![Example image](/img/get-started/archive/javaee7/pizza-order-process-expression.png) -![Example image](./img/pizza-order-process-condition-expression.png) +![Example image](/img/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 bf7b469..6551a7d 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/maven-project-settings.png) +![Example image](/img/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 dc9076b..9799f5e 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/pizza-order-process-service-task-expression.png) +![Example image](/img/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 76bd9b6..018af22 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/pizza-order-process-start-form.png) +![Example image](/img/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 c133e80..8e49b6a 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/approve-order.png) +![Example image](/img/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/pizza-order-process-task-form.png) +![Example image](/img/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/pizza-order-process-no.png) +![Example image](/img/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 c2fe483..b8b352f 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/eclipse-new-project.png) +![Example image](/img/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/project-layout-after-setup.png) +![Example image](/img/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 f80ae6c..14638a7 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/process-model.png) +![Example image](/img/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/service-task.png) +![Example image](/img/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 c269815..a6cb411 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/cockpit-dish-dmn.png) +![Example image](/img/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/cockpit-decision-overview-dish-dmn.png) +![Example image](/img/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/cockpit-decision-history-dish-dmn.png) +![Example image](/img/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 a619d71..18d8a35 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/modeler-drd-step1.png) +![Example image](/img/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/modeler-drd-step2.png) +![Example image](/img/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/modeler-drd-step3.png) +![Example image](/img/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/modeler-drd-step4.png) +![Example image](/img/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/modeler-drd-step5.png) +![Example image](/img/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/cockpit-decision-overview-beverages-dmn.png) +![Example image](/img/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/cockpit-decision-history-beverages-dmn.png) +![Example image](/img/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 9a347fa..88c9b3f 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/modeler-new-dmn-table.png) +![Example image](/img/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/modeler-step1.png) +![Example image](/img/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/modeler-step2a.png) +![Example image](/img/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/modeler-step2b.png) +![Example image](/img/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/modeler-step3.png) +![Example image](/img/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/modeler-step4.png) +![Example image](/img/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/modeler-step5.png) +![Example image](/img/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/modeler-step6.png) +![Example image](/img/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/modeler-step7.png) +![Example image](/img/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/modeler-save-dmn-table.png) +![Example image](/img/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 33c0a1c..91dc574 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/eclipse-new-project.png) +![Example image](/img/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 5e84439..9b85253 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/modeler-businessrule-task1.png) +![Example image](/img/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/modeler-businessrule-task2.png) +![Example image](/img/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/modeler-new-dmn-diagram.png) +![Example image](/img/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/modeler-new-dmn-diagram-properties.png) +![Example image](/img/get-started/quick-start/modeler-new-dmn-diagram-properties.png) Next, create a new DMN table by clicking the table button. -![Example image](./img/modeler-new-dmn-table.png) +![Example image](/img/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/modeler-dmn2.png) +![Example image](/img/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/modeler-dmn3.png) +![Example image](/img/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/modeler-dmn4.png) +![Example image](/img/get-started/quick-start/modeler-dmn4.png) After setup, your DMN table should look like this: -![Example image](./img/modeler-dmn5.png) +![Example image](/img/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/modeler-dmn6.png) +![Example image](/img/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/cockpit-approve-payment.png) +![Example image](/img/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/tasklist-dmn1.png) +![Example image](/img/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/tasklist-dmn2.png) +![Example image](/img/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/cockpit-dmn-table.png) +![Example image](/img/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 68e22ca..dd73d4a 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/modeler-deploy1.png) -![Example image](./img/modeler-deploy2.png) +![Example image](/img/get-started/quick-start/modeler-deploy1.png) +![Example image](/img/get-started/quick-start/modeler-deploy2.png) You should see a success message in the Camunda Modeler: -![Example image](./img/modeler-deploy3.png) +![Example image](/img/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/cockpit-payment-retrieval.png) +![Example image](/img/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/postman-start-instance.png) +![Example image](/img/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 d1c59e6..7c4cb4d 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/modeler-gateway1.png) +![Example image](/img/get-started/quick-start/modeler-gateway1.png) Now also name the new elements accordingly: -![Example image](./img/modeler-gateway2.png) +![Example image](/img/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/modeler-gateway3.png) +![Example image](/img/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/modeler-gateway4.png) +![Example image](/img/get-started/quick-start/modeler-gateway4.png) For the `Yes` Sequence Flow, use the Expression `${approved}`: -![Example image](./img/modeler-gateway5.png) +![Example image](/img/get-started/quick-start/modeler-gateway5.png) For the `No` Sequence Flow, use the Expression `${!approved}`: -![Example image](./img/modeler-gateway6.png) +![Example image](/img/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/start-form-generic.png) +![Example image](/img/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 c78b85c..35a5ee9 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/modeler-new-bpmn-diagram.png) +![Example image](/img/get-started/quick-start/modeler-new-bpmn-diagram.png) ### Start with a Simple Process Start by modeling a simple process. -![Example image](./img/modeler-step1.png) +![Example image](/img/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/modeler-step2.png) +![Example image](/img/get-started/quick-start/modeler-step2.png) Add an End Event named *Payment Received*. -![Example image](./img/modeler-step3.png) +![Example image](/img/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/modeler-step4.png) +![Example image](/img/get-started/quick-start/modeler-step4.png) ### Configure Properties for Execution -![Example image](./img/modeler-step5.png) +![Example image](/img/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/eclipse-new-project.png) +![Example image](/img/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 5eaa8ef..ebf82c0 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/modeler-usertask1.png) +![Example image](/img/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/modeler-usertask2.png) +![Example image](/img/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/modeler-usertask3.png) +![Example image](/img/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/modeler-usertask-add.png) +![Example image](/img/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/modeler-usertask-form.png) +![Example image](/img/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/modeler-usertask4.png) +![Example image](/img/get-started/quick-start/modeler-usertask4.png) Field 2: @@ -69,7 +69,7 @@ Field 2: * Key: item * Field Label: Item -![Example image](./img/modeler-usertask5.png) +![Example image](/img/get-started/quick-start/modeler-usertask5.png) Field 3: @@ -77,10 +77,10 @@ Field 3: * Key: approved * Label: Approved? -![Example image](./img/modeler-usertask6.png) +![Example image](/img/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/modeler-platform-selection.png) +![Example image](/img/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/modeler-deploy-form.png) +![Example image](/img/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/start-form-generic.png) +![Example image](/img/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/diagram.png) +![Example image](/img/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/task-form-generated.png) +![Example image](/img/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 582c4f0..0492c9d 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/loanApproval.png) +![Example image](/img/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/tasklist.png) \ No newline at end of file +![Example image](/img/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 1577029..e0a330f 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/eclipse-new-project.png) +![Example image](/img/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/docs/documentation/img/docsVersionDropdown.png b/static/img/documentation/examples/img/docsVersionDropdown.png similarity index 100% rename from docs/documentation/img/docsVersionDropdown.png rename to static/img/documentation/examples/img/docsVersionDropdown.png diff --git a/docs/documentation/img/localeDropdown.png b/static/img/documentation/examples/img/localeDropdown.png similarity index 100% rename from docs/documentation/img/localeDropdown.png rename to static/img/documentation/examples/img/localeDropdown.png diff --git a/docs/documentation/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/escalation-boundary-event.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-boundary-event.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/escalation-boundary-event.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-boundary-event.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/escalation-end-event.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-end-event.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/escalation-end-event.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-end-event.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/escalation-example.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-example.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/escalation-example.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-example.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/escalation-intermediate-throw-event.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-intermediate-throw-event.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/escalation-intermediate-throw-event.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-intermediate-throw-event.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/escalation-start-event.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-start-event.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/escalation-start-event.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-start-event.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-conditional-parallel-boundary.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-conditional-parallel-boundary.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-conditional-parallel-boundary.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-conditional-parallel-boundary.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-conditional.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-conditional.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-conditional.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-conditional.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-conditional2.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-conditional2.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-conditional2.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-conditional2.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-error.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-error.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-error.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-error.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-link.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-link.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-link.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-link.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-message-start-alternative.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-message-start-alternative.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-message-start-alternative.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-message-start-alternative.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-message-throwing.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-message-throwing.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-message-throwing.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-message-throwing.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-message.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-message.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-message.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-message.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-none-intermediate.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-none-intermediate.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-none-intermediate.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-none-intermediate.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-none.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-none.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-none.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-none.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-signal-catching.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-signal-catching.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-signal-catching.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-signal-catching.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-signal-throwing.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-signal-throwing.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-signal-throwing.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-signal-throwing.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative1.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-subprocess-alternative1.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative1.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-subprocess-alternative1.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative2.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-subprocess-alternative2.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative2.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-subprocess-alternative2.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-terminate.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-terminate.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-terminate.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-terminate.bpmn diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-timer.bpmn b/static/img/documentation/examples/reference/bpmn20/events/bpmn/event-timer.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-timer.bpmn rename to static/img/documentation/examples/reference/bpmn20/events/bpmn/event-timer.bpmn diff --git a/docs/documentation/reference/bpmn20/gateways/bpmn/event-based-gateway.bpmn b/static/img/documentation/examples/reference/bpmn20/gateways/bpmn/event-based-gateway.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/gateways/bpmn/event-based-gateway.bpmn rename to static/img/documentation/examples/reference/bpmn20/gateways/bpmn/event-based-gateway.bpmn diff --git a/docs/documentation/reference/bpmn20/gateways/bpmn/exclusive-gateway.bpmn b/static/img/documentation/examples/reference/bpmn20/gateways/bpmn/exclusive-gateway.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/gateways/bpmn/exclusive-gateway.bpmn rename to static/img/documentation/examples/reference/bpmn20/gateways/bpmn/exclusive-gateway.bpmn diff --git a/docs/documentation/reference/bpmn20/gateways/bpmn/inclusive-gateway.bpmn b/static/img/documentation/examples/reference/bpmn20/gateways/bpmn/inclusive-gateway.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/gateways/bpmn/inclusive-gateway.bpmn rename to static/img/documentation/examples/reference/bpmn20/gateways/bpmn/inclusive-gateway.bpmn diff --git a/docs/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_1.bpmn b/static/img/documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_1.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_1.bpmn rename to static/img/documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_1.bpmn diff --git a/docs/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_2.bpmn b/static/img/documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_2.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_2.bpmn rename to static/img/documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_2.bpmn diff --git a/docs/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_3.bpmn b/static/img/documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_3.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_3.bpmn rename to static/img/documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_3.bpmn diff --git a/docs/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_4.bpmn b/static/img/documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_4.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_4.bpmn rename to static/img/documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_4.bpmn diff --git a/docs/documentation/reference/bpmn20/gateways/bpmn/parallel-gateway-unbalanced.bpmn b/static/img/documentation/examples/reference/bpmn20/gateways/bpmn/parallel-gateway-unbalanced.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/gateways/bpmn/parallel-gateway-unbalanced.bpmn rename to static/img/documentation/examples/reference/bpmn20/gateways/bpmn/parallel-gateway-unbalanced.bpmn diff --git a/docs/documentation/reference/bpmn20/gateways/bpmn/parallel-gateway.bpmn b/static/img/documentation/examples/reference/bpmn20/gateways/bpmn/parallel-gateway.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/gateways/bpmn/parallel-gateway.bpmn rename to static/img/documentation/examples/reference/bpmn20/gateways/bpmn/parallel-gateway.bpmn diff --git a/docs/documentation/reference/bpmn20/gateways/bpmn/sequence-flow-conditional.bpmn b/static/img/documentation/examples/reference/bpmn20/gateways/bpmn/sequence-flow-conditional.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/gateways/bpmn/sequence-flow-conditional.bpmn rename to static/img/documentation/examples/reference/bpmn20/gateways/bpmn/sequence-flow-conditional.bpmn diff --git a/docs/documentation/reference/bpmn20/gateways/bpmn/sequence-flow-parallel.bpmn b/static/img/documentation/examples/reference/bpmn20/gateways/bpmn/sequence-flow-parallel.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/gateways/bpmn/sequence-flow-parallel.bpmn rename to static/img/documentation/examples/reference/bpmn20/gateways/bpmn/sequence-flow-parallel.bpmn diff --git a/docs/documentation/reference/bpmn20/subprocesses/bpmn/business-transaction.bpmn b/static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/business-transaction.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/subprocesses/bpmn/business-transaction.bpmn rename to static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/business-transaction.bpmn diff --git a/docs/documentation/reference/bpmn20/subprocesses/bpmn/call-activity.bpmn b/static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/call-activity.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/subprocesses/bpmn/call-activity.bpmn rename to static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/call-activity.bpmn diff --git a/docs/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative1.bpmn b/static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative1.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative1.bpmn rename to static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative1.bpmn diff --git a/docs/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative2.bpmn b/static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative2.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative2.bpmn rename to static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative2.bpmn diff --git a/docs/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess.bpmn b/static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/event-subprocess.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess.bpmn rename to static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/event-subprocess.bpmn diff --git a/docs/documentation/reference/bpmn20/subprocesses/bpmn/subprocess.bpmn b/static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/subprocesses/bpmn/subprocess.bpmn rename to static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess.bpmn diff --git a/docs/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_attached.bpmn b/static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess_attached.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_attached.bpmn rename to static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess_attached.bpmn diff --git a/docs/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_event.bpmn b/static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess_event.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_event.bpmn rename to static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess_event.bpmn diff --git a/docs/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_expanded.bpmn b/static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess_expanded.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/subprocesses/bpmn/subprocess_expanded.bpmn rename to static/img/documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess_expanded.bpmn diff --git a/docs/documentation/reference/bpmn20/tasks/bpmn/compensation-marker.bpmn b/static/img/documentation/examples/reference/bpmn20/tasks/bpmn/compensation-marker.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/tasks/bpmn/compensation-marker.bpmn rename to static/img/documentation/examples/reference/bpmn20/tasks/bpmn/compensation-marker.bpmn diff --git a/docs/documentation/reference/bpmn20/tasks/bpmn/loop-alternative.bpmn b/static/img/documentation/examples/reference/bpmn20/tasks/bpmn/loop-alternative.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/tasks/bpmn/loop-alternative.bpmn rename to static/img/documentation/examples/reference/bpmn20/tasks/bpmn/loop-alternative.bpmn diff --git a/docs/documentation/reference/bpmn20/tasks/bpmn/multiple-instance-boundary.bpmn b/static/img/documentation/examples/reference/bpmn20/tasks/bpmn/multiple-instance-boundary.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/tasks/bpmn/multiple-instance-boundary.bpmn rename to static/img/documentation/examples/reference/bpmn20/tasks/bpmn/multiple-instance-boundary.bpmn diff --git a/docs/documentation/reference/bpmn20/tasks/bpmn/multiple-instance.bpmn b/static/img/documentation/examples/reference/bpmn20/tasks/bpmn/multiple-instance.bpmn similarity index 100% rename from docs/documentation/reference/bpmn20/tasks/bpmn/multiple-instance.bpmn rename to static/img/documentation/examples/reference/bpmn20/tasks/bpmn/multiple-instance.bpmn diff --git a/docs/documentation/reference/dmn/decision-literal-expression/img/decision-id.png b/static/img/documentation/examples/reference/dmn/decision-literal-expression/img/decision-id.png similarity index 100% rename from docs/documentation/reference/dmn/decision-literal-expression/img/decision-id.png rename to static/img/documentation/examples/reference/dmn/decision-literal-expression/img/decision-id.png diff --git a/docs/documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn b/static/img/documentation/examples/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn similarity index 100% rename from docs/documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn rename to static/img/documentation/examples/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn diff --git a/docs/documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.png b/static/img/documentation/examples/reference/dmn/decision-literal-expression/img/decision-literal-expression.png similarity index 100% rename from docs/documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.png rename to static/img/documentation/examples/reference/dmn/decision-literal-expression/img/decision-literal-expression.png diff --git a/docs/documentation/reference/dmn/decision-literal-expression/img/decision-name.png b/static/img/documentation/examples/reference/dmn/decision-literal-expression/img/decision-name.png similarity index 100% rename from docs/documentation/reference/dmn/decision-literal-expression/img/decision-name.png rename to static/img/documentation/examples/reference/dmn/decision-literal-expression/img/decision-name.png diff --git a/docs/documentation/reference/dmn/decision-table/img/dish-table.svg b/static/img/documentation/examples/reference/dmn/decision-table/img/dish-table.svg similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/dish-table.svg rename to static/img/documentation/examples/reference/dmn/decision-table/img/dish-table.svg diff --git a/docs/documentation/reference/dmn/decision-table/img/map.js b/static/img/documentation/examples/reference/dmn/decision-table/img/map.js similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/map.js rename to static/img/documentation/examples/reference/dmn/decision-table/img/map.js diff --git a/docs/documentation/reference/dmn/drg/img/drg.dmn b/static/img/documentation/examples/reference/dmn/drg/img/drg.dmn similarity index 100% rename from docs/documentation/reference/dmn/drg/img/drg.dmn rename to static/img/documentation/examples/reference/dmn/drg/img/drg.dmn diff --git a/docs/documentation/user-guide/ext-client/img/externalTaskCient.png b/static/img/documentation/examples/user-guide/ext-client/img/externalTaskCient.png similarity index 100% rename from docs/documentation/user-guide/ext-client/img/externalTaskCient.png rename to static/img/documentation/examples/user-guide/ext-client/img/externalTaskCient.png diff --git a/docs/documentation/user-guide/process-engine/bpmn/example1.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/example1.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/example1.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/example1.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/example2.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/example2.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/example2.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/example2.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/example3.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/example3.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/example3.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/example3.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/example4.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/example4.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/example4.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/example4.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/example5.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/example5.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/example5.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/example5.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer1.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer1.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer1.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer1.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer2.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer2.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer2.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer2.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation1.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation1.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation1.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation1.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation2.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation2.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation2.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation2.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation3.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation3.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation3.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation3.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation4.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation4.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation4.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation4.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation5.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation5.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation5.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation5.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation6.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation6.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation6.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation6.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example1.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example1.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example1.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example1.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example2.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example2.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/process-instance-migration/example2.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example2.bpmn diff --git a/docs/documentation/user-guide/process-engine/bpmn/x_event-based-gateway.bpmn b/static/img/documentation/examples/user-guide/process-engine/bpmn/x_event-based-gateway.bpmn similarity index 100% rename from docs/documentation/user-guide/process-engine/bpmn/x_event-based-gateway.bpmn rename to static/img/documentation/examples/user-guide/process-engine/bpmn/x_event-based-gateway.bpmn diff --git a/docs/documentation/user-guide/process-engine/img/api.services.odg b/static/img/documentation/examples/user-guide/process-engine/img/api.services.odg similarity index 100% rename from docs/documentation/user-guide/process-engine/img/api.services.odg rename to static/img/documentation/examples/user-guide/process-engine/img/api.services.odg diff --git a/docs/documentation/user-guide/process-engine/img/process-engine-history.png b/static/img/documentation/examples/user-guide/process-engine/img/process-engine-history.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/process-engine-history.png rename to static/img/documentation/examples/user-guide/process-engine/img/process-engine-history.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-edit-dmn-dialog.png b/static/img/documentation/examples/webapps/cockpit/img/cockpit-edit-dmn-dialog.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-edit-dmn-dialog.png rename to static/img/documentation/examples/webapps/cockpit/img/cockpit-edit-dmn-dialog.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-plugins/architecture.png b/static/img/documentation/examples/webapps/cockpit/img/cockpit-plugins/architecture.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-plugins/architecture.png rename to static/img/documentation/examples/webapps/cockpit/img/cockpit-plugins/architecture.png diff --git a/docs/documentation/webapps/cockpit/img/migration/step4_error.png b/static/img/documentation/examples/webapps/cockpit/img/migration/step4_error.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/migration/step4_error.png rename to static/img/documentation/examples/webapps/cockpit/img/migration/step4_error.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-dashboard.png b/static/img/documentation/examples/webapps/tasklist/img/tasklist-dashboard.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-dashboard.png rename to static/img/documentation/examples/webapps/tasklist/img/tasklist-dashboard.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-generic-form.png b/static/img/documentation/examples/webapps/tasklist/img/tasklist-generic-form.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-generic-form.png rename to static/img/documentation/examples/webapps/tasklist/img/tasklist-generic-form.png diff --git a/docs/documentation/webapps/welcome/img/welcome-start-page-view.png b/static/img/documentation/examples/webapps/welcome/img/welcome-start-page-view.png similarity index 100% rename from docs/documentation/webapps/welcome/img/welcome-start-page-view.png rename to static/img/documentation/examples/webapps/welcome/img/welcome-start-page-view.png diff --git a/docs/documentation/introduction/img/architecture-overview.png b/static/img/documentation/introduction/architecture-overview.png similarity index 100% rename from docs/documentation/introduction/img/architecture-overview.png rename to static/img/documentation/introduction/architecture-overview.png diff --git a/docs/documentation/introduction/img/clustered-process-engine.png b/static/img/documentation/introduction/clustered-process-engine.png similarity index 100% rename from docs/documentation/introduction/img/clustered-process-engine.png rename to static/img/documentation/introduction/clustered-process-engine.png diff --git a/docs/documentation/introduction/img/embedded-process-engine.png b/static/img/documentation/introduction/embedded-process-engine.png similarity index 100% rename from docs/documentation/introduction/img/embedded-process-engine.png rename to static/img/documentation/introduction/embedded-process-engine.png diff --git a/docs/documentation/introduction/img/process-engine-architecture.png b/static/img/documentation/introduction/process-engine-architecture.png similarity index 100% rename from docs/documentation/introduction/img/process-engine-architecture.png rename to static/img/documentation/introduction/process-engine-architecture.png diff --git a/docs/documentation/introduction/img/shared-process-engine.png b/static/img/documentation/introduction/shared-process-engine.png similarity index 100% rename from docs/documentation/introduction/img/shared-process-engine.png rename to static/img/documentation/introduction/shared-process-engine.png diff --git a/docs/documentation/introduction/img/standalone-process-engine.png b/static/img/documentation/introduction/standalone-process-engine.png similarity index 100% rename from docs/documentation/introduction/img/standalone-process-engine.png rename to static/img/documentation/introduction/standalone-process-engine.png diff --git a/docs/documentation/reference/bpmn20/img/symbols/and_gateway.svg b/static/img/documentation/reference/bpmn20/and_gateway.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/and_gateway.svg rename to static/img/documentation/reference/bpmn20/and_gateway.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/business_rule_task.svg b/static/img/documentation/reference/bpmn20/business_rule_task.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/business_rule_task.svg rename to static/img/documentation/reference/bpmn20/business_rule_task.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/call_activity.svg b/static/img/documentation/reference/bpmn20/call_activity.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/call_activity.svg rename to static/img/documentation/reference/bpmn20/call_activity.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/cancel_boundary_event.svg b/static/img/documentation/reference/bpmn20/cancel_boundary_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/cancel_boundary_event.svg rename to static/img/documentation/reference/bpmn20/cancel_boundary_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/cancel_end_event.svg b/static/img/documentation/reference/bpmn20/cancel_end_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/cancel_end_event.svg rename to static/img/documentation/reference/bpmn20/cancel_end_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/compensation_boundary_event.svg b/static/img/documentation/reference/bpmn20/compensation_boundary_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/compensation_boundary_event.svg rename to static/img/documentation/reference/bpmn20/compensation_boundary_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/compensation_end_event.svg b/static/img/documentation/reference/bpmn20/compensation_end_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/compensation_end_event.svg rename to static/img/documentation/reference/bpmn20/compensation_end_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/compensation_event_subprocess_start_event.svg b/static/img/documentation/reference/bpmn20/compensation_event_subprocess_start_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/compensation_event_subprocess_start_event.svg rename to static/img/documentation/reference/bpmn20/compensation_event_subprocess_start_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/compensation_intermediate_throw_event.svg b/static/img/documentation/reference/bpmn20/compensation_intermediate_throw_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/compensation_intermediate_throw_event.svg rename to static/img/documentation/reference/bpmn20/compensation_intermediate_throw_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/complex_gateway.svg b/static/img/documentation/reference/bpmn20/complex_gateway.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/complex_gateway.svg rename to static/img/documentation/reference/bpmn20/complex_gateway.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/conditional_intermediate_catch_event.svg b/static/img/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/conditional_intermediate_catch_event.svg rename to static/img/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/conditional_intermediate_non_interrupting_event.svg b/static/img/documentation/reference/bpmn20/conditional_intermediate_non_interrupting_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/conditional_intermediate_non_interrupting_event.svg rename to static/img/documentation/reference/bpmn20/conditional_intermediate_non_interrupting_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/conditional_start_event.svg b/static/img/documentation/reference/bpmn20/conditional_start_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/conditional_start_event.svg rename to static/img/documentation/reference/bpmn20/conditional_start_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/data_object.svg b/static/img/documentation/reference/bpmn20/data_object.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/data_object.svg rename to static/img/documentation/reference/bpmn20/data_object.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/data_store.svg b/static/img/documentation/reference/bpmn20/data_store.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/data_store.svg rename to static/img/documentation/reference/bpmn20/data_store.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/error_boundary_catch_event.svg b/static/img/documentation/reference/bpmn20/error_boundary_catch_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/error_boundary_catch_event.svg rename to static/img/documentation/reference/bpmn20/error_boundary_catch_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/error_event_subprocess_start_event.svg b/static/img/documentation/reference/bpmn20/error_event_subprocess_start_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/error_event_subprocess_start_event.svg rename to static/img/documentation/reference/bpmn20/error_event_subprocess_start_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/error_throw_end_event.svg b/static/img/documentation/reference/bpmn20/error_throw_end_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/error_throw_end_event.svg rename to static/img/documentation/reference/bpmn20/error_throw_end_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/escalation_boundary_catch_event.svg b/static/img/documentation/reference/bpmn20/escalation_boundary_catch_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/escalation_boundary_catch_event.svg rename to static/img/documentation/reference/bpmn20/escalation_boundary_catch_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/escalation_boundary_catch_non_interrupting_event.svg b/static/img/documentation/reference/bpmn20/escalation_boundary_catch_non_interrupting_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/escalation_boundary_catch_non_interrupting_event.svg rename to static/img/documentation/reference/bpmn20/escalation_boundary_catch_non_interrupting_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/escalation_event_subprocess_non_interrupting_start_event.svg b/static/img/documentation/reference/bpmn20/escalation_event_subprocess_non_interrupting_start_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/escalation_event_subprocess_non_interrupting_start_event.svg rename to static/img/documentation/reference/bpmn20/escalation_event_subprocess_non_interrupting_start_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/escalation_event_subprocess_start_event.svg b/static/img/documentation/reference/bpmn20/escalation_event_subprocess_start_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/escalation_event_subprocess_start_event.svg rename to static/img/documentation/reference/bpmn20/escalation_event_subprocess_start_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/escalation_intermediate_throw_event.svg b/static/img/documentation/reference/bpmn20/escalation_intermediate_throw_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/escalation_intermediate_throw_event.svg rename to static/img/documentation/reference/bpmn20/escalation_intermediate_throw_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/escalation_throw_end_event.svg b/static/img/documentation/reference/bpmn20/escalation_throw_end_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/escalation_throw_end_event.svg rename to static/img/documentation/reference/bpmn20/escalation_throw_end_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/event_gateway.svg b/static/img/documentation/reference/bpmn20/event_gateway.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/event_gateway.svg rename to static/img/documentation/reference/bpmn20/event_gateway.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/event_subprocess.svg b/static/img/documentation/reference/bpmn20/event_subprocess.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/event_subprocess.svg rename to static/img/documentation/reference/bpmn20/event_subprocess.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/event_subprocess_conditional_non_interrupting.svg b/static/img/documentation/reference/bpmn20/event_subprocess_conditional_non_interrupting.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/event_subprocess_conditional_non_interrupting.svg rename to static/img/documentation/reference/bpmn20/event_subprocess_conditional_non_interrupting.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/event_subprocess_message_non_interrupting.svg b/static/img/documentation/reference/bpmn20/event_subprocess_message_non_interrupting.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/event_subprocess_message_non_interrupting.svg rename to static/img/documentation/reference/bpmn20/event_subprocess_message_non_interrupting.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/event_subprocess_signal_non_interrupting_start_event.svg b/static/img/documentation/reference/bpmn20/event_subprocess_signal_non_interrupting_start_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/event_subprocess_signal_non_interrupting_start_event.svg rename to static/img/documentation/reference/bpmn20/event_subprocess_signal_non_interrupting_start_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/event_subprocess_timer_non_interrupting.svg b/static/img/documentation/reference/bpmn20/event_subprocess_timer_non_interrupting.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/event_subprocess_timer_non_interrupting.svg rename to static/img/documentation/reference/bpmn20/event_subprocess_timer_non_interrupting.svg diff --git a/docs/documentation/reference/bpmn20/events/img/activityInstanceState.png b/static/img/documentation/reference/bpmn20/events/activityInstanceState.png similarity index 100% rename from docs/documentation/reference/bpmn20/events/img/activityInstanceState.png rename to static/img/documentation/reference/bpmn20/events/activityInstanceState.png diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-conditional.svg b/static/img/documentation/reference/bpmn20/events/event-conditional.svg similarity index 100% rename from docs/documentation/reference/bpmn20/events/bpmn/event-conditional.svg rename to static/img/documentation/reference/bpmn20/events/event-conditional.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/group_symbol.svg b/static/img/documentation/reference/bpmn20/group_symbol.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/group_symbol.svg rename to static/img/documentation/reference/bpmn20/group_symbol.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/instantiated_receive_task.svg b/static/img/documentation/reference/bpmn20/instantiated_receive_task.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/instantiated_receive_task.svg rename to static/img/documentation/reference/bpmn20/instantiated_receive_task.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/lane.svg b/static/img/documentation/reference/bpmn20/lane.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/lane.svg rename to static/img/documentation/reference/bpmn20/lane.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/link_intermediate_catch_event.svg b/static/img/documentation/reference/bpmn20/link_intermediate_catch_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/link_intermediate_catch_event.svg rename to static/img/documentation/reference/bpmn20/link_intermediate_catch_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/link_intermediate_throw_event.svg b/static/img/documentation/reference/bpmn20/link_intermediate_throw_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/link_intermediate_throw_event.svg rename to static/img/documentation/reference/bpmn20/link_intermediate_throw_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/manual_task.svg b/static/img/documentation/reference/bpmn20/manual_task.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/manual_task.svg rename to static/img/documentation/reference/bpmn20/manual_task.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/message_intermediate_catch_event.svg b/static/img/documentation/reference/bpmn20/message_intermediate_catch_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/message_intermediate_catch_event.svg rename to static/img/documentation/reference/bpmn20/message_intermediate_catch_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/message_intermediate_non_interrupting_catch_event.svg b/static/img/documentation/reference/bpmn20/message_intermediate_non_interrupting_catch_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/message_intermediate_non_interrupting_catch_event.svg rename to static/img/documentation/reference/bpmn20/message_intermediate_non_interrupting_catch_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/message_intermediate_throw_event.svg b/static/img/documentation/reference/bpmn20/message_intermediate_throw_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/message_intermediate_throw_event.svg rename to static/img/documentation/reference/bpmn20/message_intermediate_throw_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/message_start_event.svg b/static/img/documentation/reference/bpmn20/message_start_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/message_start_event.svg rename to static/img/documentation/reference/bpmn20/message_start_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/message_throw_end_event.svg b/static/img/documentation/reference/bpmn20/message_throw_end_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/message_throw_end_event.svg rename to static/img/documentation/reference/bpmn20/message_throw_end_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/multiple_boundary_non_interrupting_event.svg b/static/img/documentation/reference/bpmn20/multiple_boundary_non_interrupting_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/multiple_boundary_non_interrupting_event.svg rename to static/img/documentation/reference/bpmn20/multiple_boundary_non_interrupting_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/multiple_end_event.svg b/static/img/documentation/reference/bpmn20/multiple_end_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/multiple_end_event.svg rename to static/img/documentation/reference/bpmn20/multiple_end_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/multiple_event_subprocess_non_interrupting_start_event.svg b/static/img/documentation/reference/bpmn20/multiple_event_subprocess_non_interrupting_start_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/multiple_event_subprocess_non_interrupting_start_event.svg rename to static/img/documentation/reference/bpmn20/multiple_event_subprocess_non_interrupting_start_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/multiple_intermediate_catch_event.svg b/static/img/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/multiple_intermediate_catch_event.svg rename to static/img/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/multiple_intermediate_throw_event.svg b/static/img/documentation/reference/bpmn20/multiple_intermediate_throw_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/multiple_intermediate_throw_event.svg rename to static/img/documentation/reference/bpmn20/multiple_intermediate_throw_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/multiple_parallel_catch_event.svg b/static/img/documentation/reference/bpmn20/multiple_parallel_catch_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/multiple_parallel_catch_event.svg rename to static/img/documentation/reference/bpmn20/multiple_parallel_catch_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/multiple_parallel_intermediate_non_interrupting_event.svg b/static/img/documentation/reference/bpmn20/multiple_parallel_intermediate_non_interrupting_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/multiple_parallel_intermediate_non_interrupting_event.svg rename to static/img/documentation/reference/bpmn20/multiple_parallel_intermediate_non_interrupting_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/multiple_parallel_non_interrupting_start_event.svg b/static/img/documentation/reference/bpmn20/multiple_parallel_non_interrupting_start_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/multiple_parallel_non_interrupting_start_event.svg rename to static/img/documentation/reference/bpmn20/multiple_parallel_non_interrupting_start_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/multiple_parallel_start_event.svg b/static/img/documentation/reference/bpmn20/multiple_parallel_start_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/multiple_parallel_start_event.svg rename to static/img/documentation/reference/bpmn20/multiple_parallel_start_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/multiple_start_event.svg b/static/img/documentation/reference/bpmn20/multiple_start_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/multiple_start_event.svg rename to static/img/documentation/reference/bpmn20/multiple_start_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/none_end_event.svg b/static/img/documentation/reference/bpmn20/none_end_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/none_end_event.svg rename to static/img/documentation/reference/bpmn20/none_end_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/none_intermediate_event.svg b/static/img/documentation/reference/bpmn20/none_intermediate_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/none_intermediate_event.svg rename to static/img/documentation/reference/bpmn20/none_intermediate_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/none_start_event.svg b/static/img/documentation/reference/bpmn20/none_start_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/none_start_event.svg rename to static/img/documentation/reference/bpmn20/none_start_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/or_gateway.svg b/static/img/documentation/reference/bpmn20/or_gateway.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/or_gateway.svg rename to static/img/documentation/reference/bpmn20/or_gateway.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/pool.svg b/static/img/documentation/reference/bpmn20/pool.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/pool.svg rename to static/img/documentation/reference/bpmn20/pool.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/receive_task.svg b/static/img/documentation/reference/bpmn20/receive_task.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/receive_task.svg rename to static/img/documentation/reference/bpmn20/receive_task.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/script_task.svg b/static/img/documentation/reference/bpmn20/script_task.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/script_task.svg rename to static/img/documentation/reference/bpmn20/script_task.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/send_task.svg b/static/img/documentation/reference/bpmn20/send_task.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/send_task.svg rename to static/img/documentation/reference/bpmn20/send_task.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/service_task.svg b/static/img/documentation/reference/bpmn20/service_task.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/service_task.svg rename to static/img/documentation/reference/bpmn20/service_task.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/signal_intermediate_catch_event.svg b/static/img/documentation/reference/bpmn20/signal_intermediate_catch_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/signal_intermediate_catch_event.svg rename to static/img/documentation/reference/bpmn20/signal_intermediate_catch_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/signal_intermediate_non_interrupting_catch_event.svg b/static/img/documentation/reference/bpmn20/signal_intermediate_non_interrupting_catch_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/signal_intermediate_non_interrupting_catch_event.svg rename to static/img/documentation/reference/bpmn20/signal_intermediate_non_interrupting_catch_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/signal_intermediate_throw_event.svg b/static/img/documentation/reference/bpmn20/signal_intermediate_throw_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/signal_intermediate_throw_event.svg rename to static/img/documentation/reference/bpmn20/signal_intermediate_throw_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/signal_start_event.svg b/static/img/documentation/reference/bpmn20/signal_start_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/signal_start_event.svg rename to static/img/documentation/reference/bpmn20/signal_start_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/signal_throw_end_event.svg b/static/img/documentation/reference/bpmn20/signal_throw_end_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/signal_throw_end_event.svg rename to static/img/documentation/reference/bpmn20/signal_throw_end_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/subprocess.svg b/static/img/documentation/reference/bpmn20/subprocess.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/subprocess.svg rename to static/img/documentation/reference/bpmn20/subprocess.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/termination_end_event.svg b/static/img/documentation/reference/bpmn20/termination_end_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/termination_end_event.svg rename to static/img/documentation/reference/bpmn20/termination_end_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/text_annotation.svg b/static/img/documentation/reference/bpmn20/text_annotation.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/text_annotation.svg rename to static/img/documentation/reference/bpmn20/text_annotation.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/timer_intermediate_event.svg b/static/img/documentation/reference/bpmn20/timer_intermediate_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/timer_intermediate_event.svg rename to static/img/documentation/reference/bpmn20/timer_intermediate_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/timer_intermediate_none_interrupting_event.svg b/static/img/documentation/reference/bpmn20/timer_intermediate_none_interrupting_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/timer_intermediate_none_interrupting_event.svg rename to static/img/documentation/reference/bpmn20/timer_intermediate_none_interrupting_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/events/timer_start_event.svg b/static/img/documentation/reference/bpmn20/timer_start_event.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/events/timer_start_event.svg rename to static/img/documentation/reference/bpmn20/timer_start_event.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/transaction.svg b/static/img/documentation/reference/bpmn20/transaction.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/transaction.svg rename to static/img/documentation/reference/bpmn20/transaction.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/undefined_task.svg b/static/img/documentation/reference/bpmn20/undefined_task.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/undefined_task.svg rename to static/img/documentation/reference/bpmn20/undefined_task.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/user_task.svg b/static/img/documentation/reference/bpmn20/user_task.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/user_task.svg rename to static/img/documentation/reference/bpmn20/user_task.svg diff --git a/docs/documentation/reference/bpmn20/img/symbols/xor_gateway.svg b/static/img/documentation/reference/bpmn20/xor_gateway.svg similarity index 100% rename from docs/documentation/reference/bpmn20/img/symbols/xor_gateway.svg rename to static/img/documentation/reference/bpmn20/xor_gateway.svg diff --git a/docs/documentation/reference/cmmn11/concepts/img/CaseInstanceLifecycle.png b/static/img/documentation/reference/cmmn11/concepts/CaseInstanceLifecycle.png similarity index 100% rename from docs/documentation/reference/cmmn11/concepts/img/CaseInstanceLifecycle.png rename to static/img/documentation/reference/cmmn11/concepts/CaseInstanceLifecycle.png diff --git a/docs/documentation/reference/cmmn11/concepts/img/MilestoneLifecycle.png b/static/img/documentation/reference/cmmn11/concepts/MilestoneLifecycle.png similarity index 100% rename from docs/documentation/reference/cmmn11/concepts/img/MilestoneLifecycle.png rename to static/img/documentation/reference/cmmn11/concepts/MilestoneLifecycle.png diff --git a/docs/documentation/reference/cmmn11/concepts/img/TaskStageLifecycle.png b/static/img/documentation/reference/cmmn11/concepts/TaskStageLifecycle.png similarity index 100% rename from docs/documentation/reference/cmmn11/concepts/img/TaskStageLifecycle.png rename to static/img/documentation/reference/cmmn11/concepts/TaskStageLifecycle.png diff --git a/docs/documentation/reference/cmmn11/concepts/img/example-lifecycle-case.png b/static/img/documentation/reference/cmmn11/concepts/example-lifecycle-case.png similarity index 100% rename from docs/documentation/reference/cmmn11/concepts/img/example-lifecycle-case.png rename to static/img/documentation/reference/cmmn11/concepts/example-lifecycle-case.png diff --git a/docs/documentation/reference/cmmn11/concepts/img/lifecycle-example-1.png b/static/img/documentation/reference/cmmn11/concepts/lifecycle-example-1.png similarity index 100% rename from docs/documentation/reference/cmmn11/concepts/img/lifecycle-example-1.png rename to static/img/documentation/reference/cmmn11/concepts/lifecycle-example-1.png diff --git a/docs/documentation/reference/cmmn11/concepts/img/lifecycle-example-2.png b/static/img/documentation/reference/cmmn11/concepts/lifecycle-example-2.png similarity index 100% rename from docs/documentation/reference/cmmn11/concepts/img/lifecycle-example-2.png rename to static/img/documentation/reference/cmmn11/concepts/lifecycle-example-2.png diff --git a/docs/documentation/reference/cmmn11/concepts/img/lifecycle-example-3.png b/static/img/documentation/reference/cmmn11/concepts/lifecycle-example-3.png similarity index 100% rename from docs/documentation/reference/cmmn11/concepts/img/lifecycle-example-3.png rename to static/img/documentation/reference/cmmn11/concepts/lifecycle-example-3.png diff --git a/docs/documentation/reference/cmmn11/concepts/img/lifecycle-example-4.png b/static/img/documentation/reference/cmmn11/concepts/lifecycle-example-4.png similarity index 100% rename from docs/documentation/reference/cmmn11/concepts/img/lifecycle-example-4.png rename to static/img/documentation/reference/cmmn11/concepts/lifecycle-example-4.png diff --git a/docs/documentation/reference/cmmn11/markers/img/repetition-by-entry-criteria/repetition-rule-example.png b/static/img/documentation/reference/cmmn11/markers/repetition-rule-example.png similarity index 100% rename from docs/documentation/reference/cmmn11/markers/img/repetition-by-entry-criteria/repetition-rule-example.png rename to static/img/documentation/reference/cmmn11/markers/repetition-rule-example.png diff --git a/docs/documentation/reference/cmmn11/markers/img/repetition-by-entry-criteria/state-1.png b/static/img/documentation/reference/cmmn11/markers/state-1.png similarity index 100% rename from docs/documentation/reference/cmmn11/markers/img/repetition-by-entry-criteria/state-1.png rename to static/img/documentation/reference/cmmn11/markers/state-1.png diff --git a/docs/documentation/reference/cmmn11/markers/img/repetition-by-entry-criteria/state-2.png b/static/img/documentation/reference/cmmn11/markers/state-2.png similarity index 100% rename from docs/documentation/reference/cmmn11/markers/img/repetition-by-entry-criteria/state-2.png rename to static/img/documentation/reference/cmmn11/markers/state-2.png diff --git a/docs/documentation/reference/cmmn11/markers/img/repetition-by-entry-criteria/state-3.png b/static/img/documentation/reference/cmmn11/markers/state-3.png similarity index 100% rename from docs/documentation/reference/cmmn11/markers/img/repetition-by-entry-criteria/state-3.png rename to static/img/documentation/reference/cmmn11/markers/state-3.png diff --git a/docs/documentation/reference/cmmn11/markers/img/repetition-by-entry-criteria/state-4.png b/static/img/documentation/reference/cmmn11/markers/state-4.png similarity index 100% rename from docs/documentation/reference/cmmn11/markers/img/repetition-by-entry-criteria/state-4.png rename to static/img/documentation/reference/cmmn11/markers/state-4.png diff --git a/docs/documentation/reference/cmmn11/markers/img/repetition-by-entry-criteria/state-5.png b/static/img/documentation/reference/cmmn11/markers/state-5.png similarity index 100% rename from docs/documentation/reference/cmmn11/markers/img/repetition-by-entry-criteria/state-5.png rename to static/img/documentation/reference/cmmn11/markers/state-5.png diff --git a/docs/documentation/reference/cmmn11/img/variableOnPart.png b/static/img/documentation/reference/cmmn11/variableOnPart.png similarity index 100% rename from docs/documentation/reference/cmmn11/img/variableOnPart.png rename to static/img/documentation/reference/cmmn11/variableOnPart.png diff --git a/docs/documentation/reference/dmn/decision-table/img/decision-id.png b/static/img/documentation/reference/dmn/decision-table/decision-id.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/decision-id.png rename to static/img/documentation/reference/dmn/decision-table/decision-id.png diff --git a/docs/documentation/reference/dmn/decision-table/img/decision-name.png b/static/img/documentation/reference/dmn/decision-table/decision-name.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/decision-name.png rename to static/img/documentation/reference/dmn/decision-table/decision-name.png diff --git a/docs/documentation/reference/dmn/decision-table/img/description.png b/static/img/documentation/reference/dmn/decision-table/description.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/description.png rename to static/img/documentation/reference/dmn/decision-table/description.png diff --git a/docs/documentation/reference/dmn/decision-table/img/dish-table.png b/static/img/documentation/reference/dmn/decision-table/dish-table.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/dish-table.png rename to static/img/documentation/reference/dmn/decision-table/dish-table.png diff --git a/docs/documentation/reference/dmn/decision-table/img/hit-policy-any.png b/static/img/documentation/reference/dmn/decision-table/hit-policy-any.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/hit-policy-any.png rename to static/img/documentation/reference/dmn/decision-table/hit-policy-any.png diff --git a/docs/documentation/reference/dmn/decision-table/img/hit-policy-collect-count.png b/static/img/documentation/reference/dmn/decision-table/hit-policy-collect-count.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/hit-policy-collect-count.png rename to static/img/documentation/reference/dmn/decision-table/hit-policy-collect-count.png diff --git a/docs/documentation/reference/dmn/decision-table/img/hit-policy-collect-max.png b/static/img/documentation/reference/dmn/decision-table/hit-policy-collect-max.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/hit-policy-collect-max.png rename to static/img/documentation/reference/dmn/decision-table/hit-policy-collect-max.png diff --git a/docs/documentation/reference/dmn/decision-table/img/hit-policy-collect-min.png b/static/img/documentation/reference/dmn/decision-table/hit-policy-collect-min.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/hit-policy-collect-min.png rename to static/img/documentation/reference/dmn/decision-table/hit-policy-collect-min.png diff --git a/docs/documentation/reference/dmn/decision-table/img/hit-policy-collect-sum.png b/static/img/documentation/reference/dmn/decision-table/hit-policy-collect-sum.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/hit-policy-collect-sum.png rename to static/img/documentation/reference/dmn/decision-table/hit-policy-collect-sum.png diff --git a/docs/documentation/reference/dmn/decision-table/img/hit-policy-collect.png b/static/img/documentation/reference/dmn/decision-table/hit-policy-collect.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/hit-policy-collect.png rename to static/img/documentation/reference/dmn/decision-table/hit-policy-collect.png diff --git a/docs/documentation/reference/dmn/decision-table/img/hit-policy-first.png b/static/img/documentation/reference/dmn/decision-table/hit-policy-first.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/hit-policy-first.png rename to static/img/documentation/reference/dmn/decision-table/hit-policy-first.png diff --git a/docs/documentation/reference/dmn/decision-table/img/hit-policy-rule-order.png b/static/img/documentation/reference/dmn/decision-table/hit-policy-rule-order.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/hit-policy-rule-order.png rename to static/img/documentation/reference/dmn/decision-table/hit-policy-rule-order.png diff --git a/docs/documentation/reference/dmn/decision-table/img/hit-policy-unique.png b/static/img/documentation/reference/dmn/decision-table/hit-policy-unique.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/hit-policy-unique.png rename to static/img/documentation/reference/dmn/decision-table/hit-policy-unique.png diff --git a/docs/documentation/reference/dmn/decision-table/img/hit-policy.png b/static/img/documentation/reference/dmn/decision-table/hit-policy.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/hit-policy.png rename to static/img/documentation/reference/dmn/decision-table/hit-policy.png diff --git a/docs/documentation/reference/dmn/decision-table/img/input-entry.png b/static/img/documentation/reference/dmn/decision-table/input-entry.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/input-entry.png rename to static/img/documentation/reference/dmn/decision-table/input-entry.png diff --git a/docs/documentation/reference/dmn/decision-table/img/input-expression.png b/static/img/documentation/reference/dmn/decision-table/input-expression.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/input-expression.png rename to static/img/documentation/reference/dmn/decision-table/input-expression.png diff --git a/docs/documentation/reference/dmn/decision-table/img/input-label.png b/static/img/documentation/reference/dmn/decision-table/input-label.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/input-label.png rename to static/img/documentation/reference/dmn/decision-table/input-label.png diff --git a/docs/documentation/reference/dmn/decision-table/img/input-type-definition.png b/static/img/documentation/reference/dmn/decision-table/input-type-definition.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/input-type-definition.png rename to static/img/documentation/reference/dmn/decision-table/input-type-definition.png diff --git a/docs/documentation/reference/dmn/decision-table/img/input.png b/static/img/documentation/reference/dmn/decision-table/input.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/input.png rename to static/img/documentation/reference/dmn/decision-table/input.png diff --git a/docs/documentation/reference/dmn/decision-table/img/output-entry.png b/static/img/documentation/reference/dmn/decision-table/output-entry.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/output-entry.png rename to static/img/documentation/reference/dmn/decision-table/output-entry.png diff --git a/docs/documentation/reference/dmn/decision-table/img/output-label.png b/static/img/documentation/reference/dmn/decision-table/output-label.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/output-label.png rename to static/img/documentation/reference/dmn/decision-table/output-label.png diff --git a/docs/documentation/reference/dmn/decision-table/img/output-name.png b/static/img/documentation/reference/dmn/decision-table/output-name.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/output-name.png rename to static/img/documentation/reference/dmn/decision-table/output-name.png diff --git a/docs/documentation/reference/dmn/decision-table/img/output-type-definition.png b/static/img/documentation/reference/dmn/decision-table/output-type-definition.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/output-type-definition.png rename to static/img/documentation/reference/dmn/decision-table/output-type-definition.png diff --git a/docs/documentation/reference/dmn/decision-table/img/output.png b/static/img/documentation/reference/dmn/decision-table/output.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/output.png rename to static/img/documentation/reference/dmn/decision-table/output.png diff --git a/docs/documentation/reference/dmn/decision-table/img/rule.png b/static/img/documentation/reference/dmn/decision-table/rule.png similarity index 100% rename from docs/documentation/reference/dmn/decision-table/img/rule.png rename to static/img/documentation/reference/dmn/decision-table/rule.png diff --git a/docs/documentation/reference/dmn/drg/img/decision.png b/static/img/documentation/reference/dmn/drg/decision.png similarity index 100% rename from docs/documentation/reference/dmn/drg/img/decision.png rename to static/img/documentation/reference/dmn/drg/decision.png diff --git a/docs/documentation/reference/dmn/drg/img/drd.png b/static/img/documentation/reference/dmn/drg/drd.png similarity index 100% rename from docs/documentation/reference/dmn/drg/img/drd.png rename to static/img/documentation/reference/dmn/drg/drd.png diff --git a/docs/documentation/reference/dmn/drg/img/drg-id.png b/static/img/documentation/reference/dmn/drg/drg-id.png similarity index 100% rename from docs/documentation/reference/dmn/drg/img/drg-id.png rename to static/img/documentation/reference/dmn/drg/drg-id.png diff --git a/docs/documentation/reference/dmn/drg/img/drg-name.png b/static/img/documentation/reference/dmn/drg/drg-name.png similarity index 100% rename from docs/documentation/reference/dmn/drg/img/drg-name.png rename to static/img/documentation/reference/dmn/drg/drg-name.png diff --git a/docs/documentation/reference/dmn/drg/img/input-data.png b/static/img/documentation/reference/dmn/drg/input-data.png similarity index 100% rename from docs/documentation/reference/dmn/drg/img/input-data.png rename to static/img/documentation/reference/dmn/drg/input-data.png diff --git a/docs/documentation/reference/dmn/drg/img/knowledge-source.png b/static/img/documentation/reference/dmn/drg/knowledge-source.png similarity index 100% rename from docs/documentation/reference/dmn/drg/img/knowledge-source.png rename to static/img/documentation/reference/dmn/drg/knowledge-source.png diff --git a/docs/documentation/reference/dmn/drg/img/required-decision.png b/static/img/documentation/reference/dmn/drg/required-decision.png similarity index 100% rename from docs/documentation/reference/dmn/drg/img/required-decision.png rename to static/img/documentation/reference/dmn/drg/required-decision.png diff --git a/docs/documentation/reference/dmn/feel/img/boolean-type.png b/static/img/documentation/reference/dmn/feel/legacy/boolean-type.png similarity index 100% rename from docs/documentation/reference/dmn/feel/img/boolean-type.png rename to static/img/documentation/reference/dmn/feel/legacy/boolean-type.png diff --git a/docs/documentation/reference/dmn/feel/img/date-type.png b/static/img/documentation/reference/dmn/feel/legacy/date-type.png similarity index 100% rename from docs/documentation/reference/dmn/feel/img/date-type.png rename to static/img/documentation/reference/dmn/feel/legacy/date-type.png diff --git a/docs/documentation/reference/dmn/feel/img/integer-type.png b/static/img/documentation/reference/dmn/feel/legacy/integer-type.png similarity index 100% rename from docs/documentation/reference/dmn/feel/img/integer-type.png rename to static/img/documentation/reference/dmn/feel/legacy/integer-type.png diff --git a/docs/documentation/reference/dmn/feel/img/string-type.png b/static/img/documentation/reference/dmn/feel/legacy/string-type.png similarity index 100% rename from docs/documentation/reference/dmn/feel/img/string-type.png rename to static/img/documentation/reference/dmn/feel/legacy/string-type.png diff --git a/docs/documentation/user-guide/dmn-engine/img/beverages-dmn.png b/static/img/documentation/user-guide/dmn-engine/beverages-dmn.png similarity index 100% rename from docs/documentation/user-guide/dmn-engine/img/beverages-dmn.png rename to static/img/documentation/user-guide/dmn-engine/beverages-dmn.png diff --git a/docs/documentation/user-guide/dmn-engine/img/dish-dmn.png b/static/img/documentation/user-guide/dmn-engine/dish-dmn.png similarity index 100% rename from docs/documentation/user-guide/dmn-engine/img/dish-dmn.png rename to static/img/documentation/user-guide/dmn-engine/dish-dmn.png diff --git a/docs/documentation/user-guide/dmn-engine/img/drd.png b/static/img/documentation/user-guide/dmn-engine/drd.png similarity index 100% rename from docs/documentation/user-guide/dmn-engine/img/drd.png rename to static/img/documentation/user-guide/dmn-engine/drd.png diff --git a/docs/documentation/user-guide/model-api/bpmn-model-api/img/bpmn-model-api-parallel-gateway.png b/static/img/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-parallel-gateway.png similarity index 100% rename from docs/documentation/user-guide/model-api/bpmn-model-api/img/bpmn-model-api-parallel-gateway.png rename to static/img/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-parallel-gateway.png diff --git a/docs/documentation/user-guide/model-api/bpmn-model-api/img/bpmn-model-api-simple-process.png b/static/img/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-simple-process.png similarity index 100% rename from docs/documentation/user-guide/model-api/bpmn-model-api/img/bpmn-model-api-simple-process.png rename to static/img/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-simple-process.png diff --git a/docs/documentation/user-guide/process-applications/img/eclipse-00-preferences-maven-archetypes.png b/static/img/documentation/user-guide/process-applications/eclipse-00-preferences-maven-archetypes.png similarity index 100% rename from docs/documentation/user-guide/process-applications/img/eclipse-00-preferences-maven-archetypes.png rename to static/img/documentation/user-guide/process-applications/eclipse-00-preferences-maven-archetypes.png diff --git a/docs/documentation/user-guide/process-applications/img/eclipse-01-add-remote-archetype-catalog.png b/static/img/documentation/user-guide/process-applications/eclipse-01-add-remote-archetype-catalog.png similarity index 100% rename from docs/documentation/user-guide/process-applications/img/eclipse-01-add-remote-archetype-catalog.png rename to static/img/documentation/user-guide/process-applications/eclipse-01-add-remote-archetype-catalog.png diff --git a/docs/documentation/user-guide/process-applications/img/eclipse-02-create-maven-project.png b/static/img/documentation/user-guide/process-applications/eclipse-02-create-maven-project.png similarity index 100% rename from docs/documentation/user-guide/process-applications/img/eclipse-02-create-maven-project.png rename to static/img/documentation/user-guide/process-applications/eclipse-02-create-maven-project.png diff --git a/docs/documentation/user-guide/process-applications/img/eclipse-03-select-maven-project-location.png b/static/img/documentation/user-guide/process-applications/eclipse-03-select-maven-project-location.png similarity index 100% rename from docs/documentation/user-guide/process-applications/img/eclipse-03-select-maven-project-location.png rename to static/img/documentation/user-guide/process-applications/eclipse-03-select-maven-project-location.png diff --git a/docs/documentation/user-guide/process-applications/img/eclipse-04-select-archetype-from-catalog.png b/static/img/documentation/user-guide/process-applications/eclipse-04-select-archetype-from-catalog.png similarity index 100% rename from docs/documentation/user-guide/process-applications/img/eclipse-04-select-archetype-from-catalog.png rename to static/img/documentation/user-guide/process-applications/eclipse-04-select-archetype-from-catalog.png diff --git a/docs/documentation/user-guide/process-applications/img/eclipse-05-specify-maven-coordinates-and-operaton-version.png b/static/img/documentation/user-guide/process-applications/eclipse-05-specify-maven-coordinates-and-operaton-version.png similarity index 100% rename from docs/documentation/user-guide/process-applications/img/eclipse-05-specify-maven-coordinates-and-operaton-version.png rename to static/img/documentation/user-guide/process-applications/eclipse-05-specify-maven-coordinates-and-operaton-version.png diff --git a/docs/documentation/user-guide/process-applications/img/eclipse-06-generated-maven-project.png b/static/img/documentation/user-guide/process-applications/eclipse-06-generated-maven-project.png similarity index 100% rename from docs/documentation/user-guide/process-applications/img/eclipse-06-generated-maven-project.png rename to static/img/documentation/user-guide/process-applications/eclipse-06-generated-maven-project.png diff --git a/docs/documentation/user-guide/process-applications/img/process-application-context.png b/static/img/documentation/user-guide/process-applications/process-application-context.png similarity index 100% rename from docs/documentation/user-guide/process-applications/img/process-application-context.png rename to static/img/documentation/user-guide/process-applications/process-application-context.png diff --git a/docs/documentation/user-guide/process-applications/img/process-application-deployment.png b/static/img/documentation/user-guide/process-applications/process-application-deployment.png similarity index 100% rename from docs/documentation/user-guide/process-applications/img/process-application-deployment.png rename to static/img/documentation/user-guide/process-applications/process-application-deployment.png diff --git a/docs/documentation/user-guide/process-applications/img/process-application-events.png b/static/img/documentation/user-guide/process-applications/process-application-events.png similarity index 100% rename from docs/documentation/user-guide/process-applications/img/process-application-events.png rename to static/img/documentation/user-guide/process-applications/process-application-events.png diff --git a/docs/documentation/user-guide/process-applications/img/process-application-redeployment.png b/static/img/documentation/user-guide/process-applications/process-application-redeployment.png similarity index 100% rename from docs/documentation/user-guide/process-applications/img/process-application-redeployment.png rename to static/img/documentation/user-guide/process-applications/process-application-redeployment.png diff --git a/docs/documentation/user-guide/process-engine/img/NotWorkingTimerOnServiceTimeout.png b/static/img/documentation/user-guide/process-engine/NotWorkingTimerOnServiceTimeout.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/NotWorkingTimerOnServiceTimeout.png rename to static/img/documentation/user-guide/process-engine/NotWorkingTimerOnServiceTimeout.png diff --git a/docs/documentation/user-guide/process-engine/img/api.services.png b/static/img/documentation/user-guide/process-engine/api.services.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/api.services.png rename to static/img/documentation/user-guide/process-engine/api.services.png diff --git a/docs/documentation/user-guide/process-engine/img/bpmn.boundary.error.event.png b/static/img/documentation/user-guide/process-engine/bpmn.boundary.error.event.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/bpmn.boundary.error.event.png rename to static/img/documentation/user-guide/process-engine/bpmn.boundary.error.event.png diff --git a/docs/documentation/user-guide/process-engine/img/database-schema.png b/static/img/documentation/user-guide/process-engine/database/database-schema.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/database-schema.png rename to static/img/documentation/user-guide/process-engine/database/database-schema.png diff --git a/docs/documentation/user-guide/process-engine/img/erd_722_bpmn.svg b/static/img/documentation/user-guide/process-engine/database/erd_722_bpmn.svg similarity index 100% rename from docs/documentation/user-guide/process-engine/img/erd_722_bpmn.svg rename to static/img/documentation/user-guide/process-engine/database/erd_722_bpmn.svg diff --git a/docs/documentation/user-guide/process-engine/img/erd_722_cmmn.svg b/static/img/documentation/user-guide/process-engine/database/erd_722_cmmn.svg similarity index 100% rename from docs/documentation/user-guide/process-engine/img/erd_722_cmmn.svg rename to static/img/documentation/user-guide/process-engine/database/erd_722_cmmn.svg diff --git a/docs/documentation/user-guide/process-engine/img/erd_722_dmn.svg b/static/img/documentation/user-guide/process-engine/database/erd_722_dmn.svg similarity index 100% rename from docs/documentation/user-guide/process-engine/img/erd_722_dmn.svg rename to static/img/documentation/user-guide/process-engine/database/erd_722_dmn.svg diff --git a/docs/documentation/user-guide/process-engine/img/erd_722_history.svg b/static/img/documentation/user-guide/process-engine/database/erd_722_history.svg similarity index 100% rename from docs/documentation/user-guide/process-engine/img/erd_722_history.svg rename to static/img/documentation/user-guide/process-engine/database/erd_722_history.svg diff --git a/docs/documentation/user-guide/process-engine/img/erd_722_identity.svg b/static/img/documentation/user-guide/process-engine/database/erd_722_identity.svg similarity index 100% rename from docs/documentation/user-guide/process-engine/img/erd_722_identity.svg rename to static/img/documentation/user-guide/process-engine/database/erd_722_identity.svg diff --git a/docs/documentation/user-guide/process-engine/img/error-handling-user-task.png b/static/img/documentation/user-guide/process-engine/error-handling-user-task.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/error-handling-user-task.png rename to static/img/documentation/user-guide/process-engine/error-handling-user-task.png diff --git a/docs/documentation/user-guide/process-engine/img/error-result-xor.png b/static/img/documentation/user-guide/process-engine/error-result-xor.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/error-result-xor.png rename to static/img/documentation/user-guide/process-engine/error-result-xor.png diff --git a/static/img/event-based-gateway.png b/static/img/documentation/user-guide/process-engine/event-based-gateway.png similarity index 100% rename from static/img/event-based-gateway.png rename to static/img/documentation/user-guide/process-engine/event-based-gateway.png diff --git a/docs/documentation/user-guide/process-engine/img/exclusive-over-process-hierarchies.png b/static/img/documentation/user-guide/process-engine/exclusive-over-process-hierarchies.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/exclusive-over-process-hierarchies.png rename to static/img/documentation/user-guide/process-engine/exclusive-over-process-hierarchies.png diff --git a/docs/documentation/user-guide/process-engine/img/external-task-long-polling.png b/static/img/documentation/user-guide/process-engine/external-task-long-polling.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/external-task-long-polling.png rename to static/img/documentation/user-guide/process-engine/external-task-long-polling.png diff --git a/docs/documentation/user-guide/process-engine/img/external-task-pattern.png b/static/img/documentation/user-guide/process-engine/external-task-pattern.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/external-task-pattern.png rename to static/img/documentation/user-guide/process-engine/external-task-pattern.png diff --git a/docs/documentation/user-guide/process-engine/img/heterogeneous-cluster.png b/static/img/documentation/user-guide/process-engine/heterogeneous-cluster.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/heterogeneous-cluster.png rename to static/img/documentation/user-guide/process-engine/heterogeneous-cluster.png diff --git a/docs/documentation/user-guide/process-engine/img/history-cleanup-process-hierarchy.png b/static/img/documentation/user-guide/process-engine/history/history-cleanup-process-hierarchy.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/history-cleanup-process-hierarchy.png rename to static/img/documentation/user-guide/process-engine/history/history-cleanup-process-hierarchy.png diff --git a/docs/documentation/user-guide/process-engine/img/process-engine-history-architecture.png b/static/img/documentation/user-guide/process-engine/history/process-engine-history-architecture.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/process-engine-history-architecture.png rename to static/img/documentation/user-guide/process-engine/history/process-engine-history-architecture.png diff --git a/docs/documentation/user-guide/process-engine/img/homogeneous-cluster.png b/static/img/documentation/user-guide/process-engine/homogeneous-cluster.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/homogeneous-cluster.png rename to static/img/documentation/user-guide/process-engine/homogeneous-cluster.png diff --git a/docs/documentation/user-guide/process-engine/img/job-executor-basic-architecture.png b/static/img/documentation/user-guide/process-engine/job-executor-basic-architecture.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/job-executor-basic-architecture.png rename to static/img/documentation/user-guide/process-engine/job-executor-basic-architecture.png diff --git a/docs/documentation/user-guide/process-engine/img/job-executor-exclusive-jobs.png b/static/img/documentation/user-guide/process-engine/job-executor-exclusive-jobs.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/job-executor-exclusive-jobs.png rename to static/img/documentation/user-guide/process-engine/job-executor-exclusive-jobs.png diff --git a/docs/documentation/user-guide/process-engine/img/job-executor-multiple-engines.png b/static/img/documentation/user-guide/process-engine/job-executor-multiple-engines.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/job-executor-multiple-engines.png rename to static/img/documentation/user-guide/process-engine/job-executor-multiple-engines.png diff --git a/docs/documentation/user-guide/process-engine/img/job-executor-priority-precedence.png b/static/img/documentation/user-guide/process-engine/job-executor-priority-precedence.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/job-executor-priority-precedence.png rename to static/img/documentation/user-guide/process-engine/job-executor-priority-precedence.png diff --git a/docs/documentation/user-guide/process-engine/img/job-executor-single-engine.png b/static/img/documentation/user-guide/process-engine/job-executor-single-engine.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/job-executor-single-engine.png rename to static/img/documentation/user-guide/process-engine/job-executor-single-engine.png diff --git a/docs/documentation/user-guide/process-engine/img/bpmn-elements/message-event.svg b/static/img/documentation/user-guide/process-engine/message-event.svg similarity index 100% rename from docs/documentation/user-guide/process-engine/img/bpmn-elements/message-event.svg rename to static/img/documentation/user-guide/process-engine/message-event.svg diff --git a/docs/documentation/introduction/img/multi-tenancy-process-engine.png b/static/img/documentation/user-guide/process-engine/multi-tenancy-process-engine.png similarity index 100% rename from docs/documentation/introduction/img/multi-tenancy-process-engine.png rename to static/img/documentation/user-guide/process-engine/multi-tenancy-process-engine.png diff --git a/docs/documentation/user-guide/process-engine/img/multi-tenancy-tenant-identifiers.png b/static/img/documentation/user-guide/process-engine/multi-tenancy-tenant-identifiers.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/multi-tenancy-tenant-identifiers.png rename to static/img/documentation/user-guide/process-engine/multi-tenancy-tenant-identifiers.png diff --git a/docs/documentation/user-guide/process-engine/img/optimisticLockingParallel.png b/static/img/documentation/user-guide/process-engine/optimisticLockingParallel.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/optimisticLockingParallel.png rename to static/img/documentation/user-guide/process-engine/optimisticLockingParallel.png diff --git a/docs/documentation/user-guide/process-engine/img/optimisticLockingTransactions.png b/static/img/documentation/user-guide/process-engine/optimisticLockingTransactions.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/optimisticLockingTransactions.png rename to static/img/documentation/user-guide/process-engine/optimisticLockingTransactions.png diff --git a/docs/documentation/user-guide/process-engine/img/parallel-gw.png b/static/img/documentation/user-guide/process-engine/parallel-gw.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/parallel-gw.png rename to static/img/documentation/user-guide/process-engine/parallel-gw.png diff --git a/docs/documentation/user-guide/process-engine/img/process-diagram-bpmn-js.png b/static/img/documentation/user-guide/process-engine/process-diagram-bpmn-js.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/process-diagram-bpmn-js.png rename to static/img/documentation/user-guide/process-engine/process-diagram-bpmn-js.png diff --git a/docs/documentation/user-guide/process-engine/img/process-engine-activity-execution.png b/static/img/documentation/user-guide/process-engine/process-engine-activity-execution.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/process-engine-activity-execution.png rename to static/img/documentation/user-guide/process-engine/process-engine-activity-execution.png diff --git a/docs/documentation/user-guide/process-engine/img/process-engine-async-transactions.png b/static/img/documentation/user-guide/process-engine/process-engine-async-transactions.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/process-engine-async-transactions.png rename to static/img/documentation/user-guide/process-engine/process-engine-async-transactions.png diff --git a/docs/documentation/user-guide/process-engine/img/process-engine-async.png b/static/img/documentation/user-guide/process-engine/process-engine-async.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/process-engine-async.png rename to static/img/documentation/user-guide/process-engine/process-engine-async.png diff --git a/docs/documentation/user-guide/process-engine/img/bpmn-elements/receive-task.svg b/static/img/documentation/user-guide/process-engine/receive-task.svg similarity index 100% rename from docs/documentation/user-guide/process-engine/img/bpmn-elements/receive-task.svg rename to static/img/documentation/user-guide/process-engine/receive-task.svg diff --git a/docs/documentation/user-guide/process-engine/img/retry.png b/static/img/documentation/user-guide/process-engine/retry.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/retry.png rename to static/img/documentation/user-guide/process-engine/retry.png diff --git a/docs/documentation/user-guide/process-engine/img/bpmn-elements/signal-event.svg b/static/img/documentation/user-guide/process-engine/signal-event.svg similarity index 100% rename from docs/documentation/user-guide/process-engine/img/bpmn-elements/signal-event.svg rename to static/img/documentation/user-guide/process-engine/signal-event.svg diff --git a/docs/documentation/user-guide/process-engine/img/bpmn-elements/timer-event.svg b/static/img/documentation/user-guide/process-engine/timer-event.svg similarity index 100% rename from docs/documentation/user-guide/process-engine/img/bpmn-elements/timer-event.svg rename to static/img/documentation/user-guide/process-engine/timer-event.svg diff --git a/docs/documentation/user-guide/process-engine/img/transactions-1.png b/static/img/documentation/user-guide/process-engine/transactions-1.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/transactions-1.png rename to static/img/documentation/user-guide/process-engine/transactions-1.png diff --git a/docs/documentation/user-guide/process-engine/img/transactions-2.png b/static/img/documentation/user-guide/process-engine/transactions-2.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/transactions-2.png rename to static/img/documentation/user-guide/process-engine/transactions-2.png diff --git a/docs/documentation/user-guide/process-engine/img/transactions-3.png b/static/img/documentation/user-guide/process-engine/transactions-3.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/transactions-3.png rename to static/img/documentation/user-guide/process-engine/transactions-3.png diff --git a/docs/documentation/user-guide/process-engine/img/bpmn-elements/user-task.svg b/static/img/documentation/user-guide/process-engine/user-task.svg similarity index 100% rename from docs/documentation/user-guide/process-engine/img/bpmn-elements/user-task.svg rename to static/img/documentation/user-guide/process-engine/user-task.svg diff --git a/docs/documentation/user-guide/process-engine/img/variables-1.png b/static/img/documentation/user-guide/process-engine/variables-1.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/variables-1.png rename to static/img/documentation/user-guide/process-engine/variables-1.png diff --git a/docs/documentation/user-guide/process-engine/img/variables-3.png b/static/img/documentation/user-guide/process-engine/variables-3.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/variables-3.png rename to static/img/documentation/user-guide/process-engine/variables-3.png diff --git a/docs/documentation/user-guide/process-engine/img/variables-4.png b/static/img/documentation/user-guide/process-engine/variables-4.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/variables-4.png rename to static/img/documentation/user-guide/process-engine/variables-4.png diff --git a/docs/documentation/user-guide/process-engine/img/variables-5.png b/static/img/documentation/user-guide/process-engine/variables-5.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/variables-5.png rename to static/img/documentation/user-guide/process-engine/variables-5.png diff --git a/docs/documentation/user-guide/process-engine/img/variables-6.png b/static/img/documentation/user-guide/process-engine/variables-6.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/variables-6.png rename to static/img/documentation/user-guide/process-engine/variables-6.png diff --git a/docs/documentation/user-guide/process-engine/img/versioning.png b/static/img/documentation/user-guide/process-engine/versioning.png similarity index 100% rename from docs/documentation/user-guide/process-engine/img/versioning.png rename to static/img/documentation/user-guide/process-engine/versioning.png diff --git a/docs/documentation/user-guide/runtime-container-integration/img/jboss-jconsole.png b/static/img/documentation/user-guide/runtime-container-integration/jboss-jconsole.png similarity index 100% rename from docs/documentation/user-guide/runtime-container-integration/img/jboss-jconsole.png rename to static/img/documentation/user-guide/runtime-container-integration/jboss-jconsole.png diff --git a/docs/documentation/user-guide/runtime-container-integration/img/jboss-service-dependencies.png b/static/img/documentation/user-guide/runtime-container-integration/jboss-service-dependencies.png similarity index 100% rename from docs/documentation/user-guide/runtime-container-integration/img/jboss-service-dependencies.png rename to static/img/documentation/user-guide/runtime-container-integration/jboss-service-dependencies.png diff --git a/docs/documentation/user-guide/task-forms/img/deploy-form.png b/static/img/documentation/user-guide/task-forms/deploy-form.png similarity index 100% rename from docs/documentation/user-guide/task-forms/img/deploy-form.png rename to static/img/documentation/user-guide/task-forms/deploy-form.png diff --git a/docs/documentation/user-guide/task-forms/img/generated-forms-example.png b/static/img/documentation/user-guide/task-forms/generated-forms-example.png similarity index 100% rename from docs/documentation/user-guide/task-forms/img/generated-forms-example.png rename to static/img/documentation/user-guide/task-forms/generated-forms-example.png diff --git a/docs/documentation/user-guide/task-forms/img/reference-operaton-form.png b/static/img/documentation/user-guide/task-forms/reference-operaton-form.png similarity index 100% rename from docs/documentation/user-guide/task-forms/img/reference-operaton-form.png rename to static/img/documentation/user-guide/task-forms/reference-operaton-form.png diff --git a/docs/documentation/user-guide/task-forms/img/start-process-button.png b/static/img/documentation/user-guide/task-forms/start-process-button.png similarity index 100% rename from docs/documentation/user-guide/task-forms/img/start-process-button.png rename to static/img/documentation/user-guide/task-forms/start-process-button.png diff --git a/docs/documentation/user-guide/task-forms/img/start-task-button.png b/static/img/documentation/user-guide/task-forms/start-task-button.png similarity index 100% rename from docs/documentation/user-guide/task-forms/img/start-task-button.png rename to static/img/documentation/user-guide/task-forms/start-task-button.png diff --git a/docs/documentation/user-guide/task-forms/img/startFormExample.png b/static/img/documentation/user-guide/task-forms/startFormExample.png similarity index 100% rename from docs/documentation/user-guide/task-forms/img/startFormExample.png rename to static/img/documentation/user-guide/task-forms/startFormExample.png diff --git a/docs/documentation/user-guide/task-forms/img/task-form-process.png b/static/img/documentation/user-guide/task-forms/task-form-process.png similarity index 100% rename from docs/documentation/user-guide/task-forms/img/task-form-process.png rename to static/img/documentation/user-guide/task-forms/task-form-process.png diff --git a/docs/documentation/user-guide/task-forms/img/tasklist-forms-layouted-start.png b/static/img/documentation/user-guide/task-forms/tasklist-forms-layouted-start.png similarity index 100% rename from docs/documentation/user-guide/task-forms/img/tasklist-forms-layouted-start.png rename to static/img/documentation/user-guide/task-forms/tasklist-forms-layouted-start.png diff --git a/docs/documentation/user-guide/task-forms/img/tasklist-generic-form.png b/static/img/documentation/user-guide/task-forms/tasklist-generic-form.png similarity index 100% rename from docs/documentation/user-guide/task-forms/img/tasklist-generic-form.png rename to static/img/documentation/user-guide/task-forms/tasklist-generic-form.png diff --git a/docs/documentation/user-guide/task-forms/img/variable-mapping-operaton-form.png b/static/img/documentation/user-guide/task-forms/variable-mapping-operaton-form.png similarity index 100% rename from docs/documentation/user-guide/task-forms/img/variable-mapping-operaton-form.png rename to static/img/documentation/user-guide/task-forms/variable-mapping-operaton-form.png diff --git a/docs/documentation/user-guide/task-forms/img/variablesTaskFormExample.png b/static/img/documentation/user-guide/task-forms/variablesTaskFormExample.png similarity index 100% rename from docs/documentation/user-guide/task-forms/img/variablesTaskFormExample.png rename to static/img/documentation/user-guide/task-forms/variablesTaskFormExample.png diff --git a/docs/documentation/user-guide/testing/img/api-test-debug-breakpoint.png b/static/img/documentation/user-guide/testing/api-test-debug-breakpoint.png similarity index 100% rename from docs/documentation/user-guide/testing/img/api-test-debug-breakpoint.png rename to static/img/documentation/user-guide/testing/api-test-debug-breakpoint.png diff --git a/docs/documentation/user-guide/testing/img/api-test-debug-h2-login.png b/static/img/documentation/user-guide/testing/api-test-debug-h2-login.png similarity index 100% rename from docs/documentation/user-guide/testing/img/api-test-debug-h2-login.png rename to static/img/documentation/user-guide/testing/api-test-debug-h2-login.png diff --git a/docs/documentation/user-guide/testing/img/api-test-debug-h2-tables.png b/static/img/documentation/user-guide/testing/api-test-debug-h2-tables.png similarity index 100% rename from docs/documentation/user-guide/testing/img/api-test-debug-h2-tables.png rename to static/img/documentation/user-guide/testing/api-test-debug-h2-tables.png diff --git a/docs/documentation/user-guide/testing/img/api-test-debug-start-h2-server-2.png b/static/img/documentation/user-guide/testing/api-test-debug-start-h2-server-2.png similarity index 100% rename from docs/documentation/user-guide/testing/img/api-test-debug-start-h2-server-2.png rename to static/img/documentation/user-guide/testing/api-test-debug-start-h2-server-2.png diff --git a/docs/documentation/user-guide/testing/img/api-test-debug-start-h2-server.png b/static/img/documentation/user-guide/testing/api-test-debug-start-h2-server.png similarity index 100% rename from docs/documentation/user-guide/testing/img/api-test-debug-start-h2-server.png rename to static/img/documentation/user-guide/testing/api-test-debug-start-h2-server.png diff --git a/docs/documentation/user-guide/testing/img/api-test-debug-view.png b/static/img/documentation/user-guide/testing/api-test-debug-view.png similarity index 100% rename from docs/documentation/user-guide/testing/img/api-test-debug-view.png rename to static/img/documentation/user-guide/testing/api-test-debug-view.png diff --git a/docs/documentation/user-guide/testing/img/test-scopes.png b/static/img/documentation/user-guide/testing/test-scopes.png similarity index 100% rename from docs/documentation/user-guide/testing/img/test-scopes.png rename to static/img/documentation/user-guide/testing/test-scopes.png diff --git a/docs/documentation/webapps/admin/img/admin-access.png b/static/img/documentation/webapps/admin/admin-access.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-access.png rename to static/img/documentation/webapps/admin/admin-access.png diff --git a/docs/documentation/webapps/admin/img/admin-audit-entity.png b/static/img/documentation/webapps/admin/admin-audit-entity.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-audit-entity.png rename to static/img/documentation/webapps/admin/admin-audit-entity.png diff --git a/docs/documentation/webapps/admin/img/admin-authorization-application-new-group.png b/static/img/documentation/webapps/admin/admin-authorization-application-new-group.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-authorization-application-new-group.png rename to static/img/documentation/webapps/admin/admin-authorization-application-new-group.png diff --git a/docs/documentation/webapps/admin/img/admin-authorization-application-new-user.png b/static/img/documentation/webapps/admin/admin-authorization-application-new-user.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-authorization-application-new-user.png rename to static/img/documentation/webapps/admin/admin-authorization-application-new-user.png diff --git a/docs/documentation/webapps/admin/img/admin-authorization-filter.png b/static/img/documentation/webapps/admin/admin-authorization-filter.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-authorization-filter.png rename to static/img/documentation/webapps/admin/admin-authorization-filter.png diff --git a/docs/documentation/webapps/admin/img/admin-authorization-users.png b/static/img/documentation/webapps/admin/admin-authorization-users.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-authorization-users.png rename to static/img/documentation/webapps/admin/admin-authorization-users.png diff --git a/docs/documentation/webapps/admin/img/admin-authorization.png b/static/img/documentation/webapps/admin/admin-authorization.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-authorization.png rename to static/img/documentation/webapps/admin/admin-authorization.png diff --git a/docs/documentation/webapps/admin/img/admin-diagnostics.png b/static/img/documentation/webapps/admin/admin-diagnostics.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-diagnostics.png rename to static/img/documentation/webapps/admin/admin-diagnostics.png diff --git a/docs/documentation/webapps/admin/img/admin-execution-metrics.png b/static/img/documentation/webapps/admin/admin-execution-metrics.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-execution-metrics.png rename to static/img/documentation/webapps/admin/admin-execution-metrics.png diff --git a/docs/documentation/webapps/admin/img/admin-groups.png b/static/img/documentation/webapps/admin/admin-groups.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-groups.png rename to static/img/documentation/webapps/admin/admin-groups.png diff --git a/docs/documentation/webapps/admin/img/admin-initial-user-setup.png b/static/img/documentation/webapps/admin/admin-initial-user-setup.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-initial-user-setup.png rename to static/img/documentation/webapps/admin/admin-initial-user-setup.png diff --git a/docs/documentation/webapps/admin/img/admin-start-page-view.png b/static/img/documentation/webapps/admin/admin-start-page-view.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-start-page-view.png rename to static/img/documentation/webapps/admin/admin-start-page-view.png diff --git a/docs/documentation/webapps/admin/img/admin-system-audit.png b/static/img/documentation/webapps/admin/admin-system-audit.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-system-audit.png rename to static/img/documentation/webapps/admin/admin-system-audit.png diff --git a/docs/documentation/webapps/admin/img/admin-system-management.png b/static/img/documentation/webapps/admin/admin-system-management.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-system-management.png rename to static/img/documentation/webapps/admin/admin-system-management.png diff --git a/docs/documentation/webapps/admin/img/admin-tenants.png b/static/img/documentation/webapps/admin/admin-tenants.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-tenants.png rename to static/img/documentation/webapps/admin/admin-tenants.png diff --git a/docs/documentation/webapps/admin/img/admin-users.png b/static/img/documentation/webapps/admin/admin-users.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin-users.png rename to static/img/documentation/webapps/admin/admin-users.png diff --git a/docs/documentation/webapps/admin/img/admin_auth_edit_full_access.png b/static/img/documentation/webapps/admin/admin_auth_edit_full_access.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin_auth_edit_full_access.png rename to static/img/documentation/webapps/admin/admin_auth_edit_full_access.png diff --git a/docs/documentation/webapps/admin/img/admin_cockpit_access_group.png b/static/img/documentation/webapps/admin/admin_cockpit_access_group.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin_cockpit_access_group.png rename to static/img/documentation/webapps/admin/admin_cockpit_access_group.png diff --git a/docs/documentation/webapps/admin/img/admin_cockpit_proc_inst_id.png b/static/img/documentation/webapps/admin/admin_cockpit_proc_inst_id.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin_cockpit_proc_inst_id.png rename to static/img/documentation/webapps/admin/admin_cockpit_proc_inst_id.png diff --git a/docs/documentation/webapps/admin/img/admin_filter_acc_read.png b/static/img/documentation/webapps/admin/admin_filter_acc_read.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin_filter_acc_read.png rename to static/img/documentation/webapps/admin/admin_filter_acc_read.png diff --git a/docs/documentation/webapps/admin/img/admin_proc_def_acc_read.png b/static/img/documentation/webapps/admin/admin_proc_def_acc_read.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin_proc_def_acc_read.png rename to static/img/documentation/webapps/admin/admin_proc_def_acc_read.png diff --git a/docs/documentation/webapps/admin/img/admin_proc_def_acc_read_create_inst_access.png b/static/img/documentation/webapps/admin/admin_proc_def_acc_read_create_inst_access.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin_proc_def_acc_read_create_inst_access.png rename to static/img/documentation/webapps/admin/admin_proc_def_acc_read_create_inst_access.png diff --git a/docs/documentation/webapps/admin/img/admin_proc_def_group_full_access.png b/static/img/documentation/webapps/admin/admin_proc_def_group_full_access.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin_proc_def_group_full_access.png rename to static/img/documentation/webapps/admin/admin_proc_def_group_full_access.png diff --git a/docs/documentation/webapps/admin/img/admin_proc_def_group_read_access.png b/static/img/documentation/webapps/admin/admin_proc_def_group_read_access.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin_proc_def_group_read_access.png rename to static/img/documentation/webapps/admin/admin_proc_def_group_read_access.png diff --git a/docs/documentation/webapps/admin/img/admin_proc_inst_acc_create.png b/static/img/documentation/webapps/admin/admin_proc_inst_acc_create.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin_proc_inst_acc_create.png rename to static/img/documentation/webapps/admin/admin_proc_inst_acc_create.png diff --git a/docs/documentation/webapps/admin/img/admin_proc_inst_id_acc.png b/static/img/documentation/webapps/admin/admin_proc_inst_id_acc.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin_proc_inst_id_acc.png rename to static/img/documentation/webapps/admin/admin_proc_inst_id_acc.png diff --git a/docs/documentation/webapps/admin/img/admin_task_acc_edit.png b/static/img/documentation/webapps/admin/admin_task_acc_edit.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin_task_acc_edit.png rename to static/img/documentation/webapps/admin/admin_task_acc_edit.png diff --git a/docs/documentation/webapps/admin/img/admin_tasklist_access_group.png b/static/img/documentation/webapps/admin/admin_tasklist_access_group.png similarity index 100% rename from docs/documentation/webapps/admin/img/admin_tasklist_access_group.png rename to static/img/documentation/webapps/admin/admin_tasklist_access_group.png diff --git a/docs/documentation/webapps/cockpit/img/batch/batch-in-operator-modal.png b/static/img/documentation/webapps/cockpit/batch/batch-in-operator-modal.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/batch/batch-in-operator-modal.png rename to static/img/documentation/webapps/cockpit/batch/batch-in-operator-modal.png diff --git a/docs/documentation/webapps/cockpit/img/batch/batch-in-operator.png b/static/img/documentation/webapps/cockpit/batch/batch-in-operator.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/batch/batch-in-operator.png rename to static/img/documentation/webapps/cockpit/batch/batch-in-operator.png diff --git a/docs/documentation/webapps/cockpit/img/batch-search.png b/static/img/documentation/webapps/cockpit/batch/batch-search.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/batch-search.png rename to static/img/documentation/webapps/cockpit/batch/batch-search.png diff --git a/docs/documentation/webapps/cockpit/img/batch.png b/static/img/documentation/webapps/cockpit/batch/batch.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/batch.png rename to static/img/documentation/webapps/cockpit/batch/batch.png diff --git a/docs/documentation/webapps/cockpit/img/batch/batch_operation_confirmation.png b/static/img/documentation/webapps/cockpit/batch/batch_operation_confirmation.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/batch/batch_operation_confirmation.png rename to static/img/documentation/webapps/cockpit/batch/batch_operation_confirmation.png diff --git a/docs/documentation/webapps/cockpit/img/batch/batch_operation_definition.png b/static/img/documentation/webapps/cockpit/batch/batch_operation_definition.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/batch/batch_operation_definition.png rename to static/img/documentation/webapps/cockpit/batch/batch_operation_definition.png diff --git a/docs/documentation/webapps/cockpit/img/batch/batch_operation_result.png b/static/img/documentation/webapps/cockpit/batch/batch_operation_result.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/batch/batch_operation_result.png rename to static/img/documentation/webapps/cockpit/batch/batch_operation_result.png diff --git a/docs/documentation/webapps/cockpit/img/migration/accessing_2.png b/static/img/documentation/webapps/cockpit/bpmn/accessing_2.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/migration/accessing_2.png rename to static/img/documentation/webapps/cockpit/bpmn/accessing_2.png diff --git a/docs/documentation/webapps/cockpit/img/filter-examples/add-filter.png b/static/img/documentation/webapps/cockpit/bpmn/add-filter.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/filter-examples/add-filter.png rename to static/img/documentation/webapps/cockpit/bpmn/add-filter.png diff --git a/docs/documentation/webapps/cockpit/img/correlate-message/batch-operation.png b/static/img/documentation/webapps/cockpit/bpmn/batch-operation.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/correlate-message/batch-operation.png rename to static/img/documentation/webapps/cockpit/bpmn/batch-operation.png diff --git a/docs/documentation/webapps/cockpit/img/drilldown/breadcrumbs.png b/static/img/documentation/webapps/cockpit/bpmn/breadcrumbs.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/drilldown/breadcrumbs.png rename to static/img/documentation/webapps/cockpit/bpmn/breadcrumbs.png diff --git a/docs/documentation/webapps/cockpit/img/filter-examples/business-key.png b/static/img/documentation/webapps/cockpit/bpmn/business-key.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/filter-examples/business-key.png rename to static/img/documentation/webapps/cockpit/bpmn/business-key.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-activity-instance-tree-view.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-activity-instance-tree-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-activity-instance-tree-view.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-activity-instance-tree-view.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-add-variables.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-add-variables.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-add-variables.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-add-variables.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-batch-modification-detail.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-detail.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-batch-modification-detail.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-detail.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-batch-modification-instance-selection.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-instance-selection.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-batch-modification-instance-selection.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-instance-selection.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-batch-modification-options.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-options.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-batch-modification-options.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-options.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-batch-modification-view.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-batch-modification-view.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-batch-modification-view.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-bulk-delete.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-bulk-delete.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-bulk-delete.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-bulk-delete.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-bulk-retry.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-bulk-retry.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-bulk-retry.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-bulk-retry.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-call-activity-definition-navigation.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-call-activity-definition-navigation.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-call-activity-definition-navigation.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-call-activity-definition-navigation.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-call-activity-instance-drill-down.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-call-activity-instance-drill-down.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-call-activity-instance-drill-down.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-call-activity-instance-drill-down.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-cancel-process-instance.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-cancel-process-instance.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-cancel-process-instance.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-cancel-process-instance.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-delete-process-definition.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-delete-process-definition.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-delete-process-definition.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-delete-process-definition.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-deployed-processes-search.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes-search.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-deployed-processes-search.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes-search.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-deployed-processes.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-deployed-processes.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-detailed-information-view.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-detailed-information-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-detailed-information-view.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-detailed-information-view.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-documentation.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-documentation.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-documentation.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-documentation.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-edit-variables.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-edit-variables.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-edit-variables.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-edit-variables.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-export-download-as-csv.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-export-download-as-csv.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-export-download-as-csv.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-export-download-as-csv.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-export-modal-dialog.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-export-modal-dialog.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-export-modal-dialog.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-export-modal-dialog.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-export-result.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-export-result.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-export-result.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-export-result.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-export.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-export.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-export.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-export.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-failed-job-drill-down.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-failed-job-drill-down.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-failed-job-drill-down.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-failed-job-drill-down.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-heatmap.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-heatmap.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-heatmap.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-heatmap.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-history-view-process-definition-history.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-definition-history.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-history-view-process-definition-history.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-definition-history.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-history-view-process-instance-history.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-instance-history.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-history-view-process-instance-history.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-instance-history.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-in-operator-modal.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-in-operator-modal.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-in-operator-modal.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-in-operator-modal.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-in-operator.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-in-operator.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-in-operator.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-in-operator.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-instance-job-retry.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-instance-job-retry.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-instance-job-retry.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-instance-job-retry.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-modification-cancel.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-modification-cancel.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-modification-cancel.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-modification-cancel.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-modification-review.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-modification-review.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-modification-review.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-modification-review.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-modification-start.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-modification-start.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-modification-start.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-modification-start.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-modification.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-modification.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-modification.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-modification.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-process-definition-state.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-process-definition-state.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-process-definition-state.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-process-definition-state.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-process-definitions-view.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-process-definitions-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-process-definitions-view.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-process-definitions-view.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-process-instances-view.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-process-instances-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-process-instances-view.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-process-instances-view.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-restart-confirm.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-restart-confirm.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-restart-confirm.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-restart-confirm.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-restart-instance-selection.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-restart-instance-selection.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-restart-instance-selection.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-restart-instance-selection.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-restart.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-restart.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-restart.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-restart.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-search.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-search.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-search.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-search.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-set-job-priority.png b/static/img/documentation/webapps/cockpit/bpmn/cockpit-set-job-priority.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-set-job-priority.png rename to static/img/documentation/webapps/cockpit/bpmn/cockpit-set-job-priority.png diff --git a/docs/documentation/webapps/cockpit/img/correlate-message/diagram-overlay-button.png b/static/img/documentation/webapps/cockpit/bpmn/diagram-overlay-button.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/correlate-message/diagram-overlay-button.png rename to static/img/documentation/webapps/cockpit/bpmn/diagram-overlay-button.png diff --git a/docs/documentation/webapps/cockpit/img/filter-examples/history-completed.png b/static/img/documentation/webapps/cockpit/bpmn/history-completed.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/filter-examples/history-completed.png rename to static/img/documentation/webapps/cockpit/bpmn/history-completed.png diff --git a/docs/documentation/webapps/cockpit/img/filter-examples/history-end-date.png b/static/img/documentation/webapps/cockpit/bpmn/history-end-date.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/filter-examples/history-end-date.png rename to static/img/documentation/webapps/cockpit/bpmn/history-end-date.png diff --git a/docs/documentation/webapps/cockpit/img/filter-examples/history-running.png b/static/img/documentation/webapps/cockpit/bpmn/history-running.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/filter-examples/history-running.png rename to static/img/documentation/webapps/cockpit/bpmn/history-running.png diff --git a/docs/documentation/webapps/cockpit/img/drilldown/migration.png b/static/img/documentation/webapps/cockpit/bpmn/migration.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/drilldown/migration.png rename to static/img/documentation/webapps/cockpit/bpmn/migration.png diff --git a/docs/documentation/webapps/cockpit/img/correlate-message/modal-dialog.png b/static/img/documentation/webapps/cockpit/bpmn/modal-dialog.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/correlate-message/modal-dialog.png rename to static/img/documentation/webapps/cockpit/bpmn/modal-dialog.png diff --git a/docs/documentation/webapps/cockpit/img/correlate-message/process-action.png b/static/img/documentation/webapps/cockpit/bpmn/process-action.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/correlate-message/process-action.png rename to static/img/documentation/webapps/cockpit/bpmn/process-action.png diff --git a/docs/documentation/webapps/cockpit/img/drilldown/shape.png b/static/img/documentation/webapps/cockpit/bpmn/shape.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/drilldown/shape.png rename to static/img/documentation/webapps/cockpit/bpmn/shape.png diff --git a/docs/documentation/webapps/cockpit/img/filter-examples/start-date-before-after.png b/static/img/documentation/webapps/cockpit/bpmn/start-date-before-after.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/filter-examples/start-date-before-after.png rename to static/img/documentation/webapps/cockpit/bpmn/start-date-before-after.png diff --git a/docs/documentation/webapps/cockpit/img/filter-examples/start-date.png b/static/img/documentation/webapps/cockpit/bpmn/start-date.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/filter-examples/start-date.png rename to static/img/documentation/webapps/cockpit/bpmn/start-date.png diff --git a/docs/documentation/webapps/cockpit/img/migration/step1_createMapping.png b/static/img/documentation/webapps/cockpit/bpmn/step1_createMapping.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/migration/step1_createMapping.png rename to static/img/documentation/webapps/cockpit/bpmn/step1_createMapping.png diff --git a/docs/documentation/webapps/cockpit/img/migration/step1_errorPopover.png b/static/img/documentation/webapps/cockpit/bpmn/step1_errorPopover.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/migration/step1_errorPopover.png rename to static/img/documentation/webapps/cockpit/bpmn/step1_errorPopover.png diff --git a/docs/documentation/webapps/cockpit/img/migration/step1_overview.png b/static/img/documentation/webapps/cockpit/bpmn/step1_overview.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/migration/step1_overview.png rename to static/img/documentation/webapps/cockpit/bpmn/step1_overview.png diff --git a/docs/documentation/webapps/cockpit/img/migration/step2.png b/static/img/documentation/webapps/cockpit/bpmn/step2.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/migration/step2.png rename to static/img/documentation/webapps/cockpit/bpmn/step2.png diff --git a/docs/documentation/webapps/cockpit/img/migration/step2_edit.png b/static/img/documentation/webapps/cockpit/bpmn/step2_edit.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/migration/step2_edit.png rename to static/img/documentation/webapps/cockpit/bpmn/step2_edit.png diff --git a/docs/documentation/webapps/cockpit/img/migration/step2_modal.png b/static/img/documentation/webapps/cockpit/bpmn/step2_modal.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/migration/step2_modal.png rename to static/img/documentation/webapps/cockpit/bpmn/step2_modal.png diff --git a/docs/documentation/webapps/cockpit/img/migration/step2_validation.png b/static/img/documentation/webapps/cockpit/bpmn/step2_validation.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/migration/step2_validation.png rename to static/img/documentation/webapps/cockpit/bpmn/step2_validation.png diff --git a/docs/documentation/webapps/cockpit/img/migration/step3.png b/static/img/documentation/webapps/cockpit/bpmn/step3.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/migration/step3.png rename to static/img/documentation/webapps/cockpit/bpmn/step3.png diff --git a/docs/documentation/webapps/cockpit/img/migration/step4.png b/static/img/documentation/webapps/cockpit/bpmn/step4.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/migration/step4.png rename to static/img/documentation/webapps/cockpit/bpmn/step4.png diff --git a/docs/documentation/webapps/cockpit/img/migration/step5_batch.png b/static/img/documentation/webapps/cockpit/bpmn/step5_batch.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/migration/step5_batch.png rename to static/img/documentation/webapps/cockpit/bpmn/step5_batch.png diff --git a/docs/documentation/webapps/cockpit/img/migration/step5_error.png b/static/img/documentation/webapps/cockpit/bpmn/step5_error.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/migration/step5_error.png rename to static/img/documentation/webapps/cockpit/bpmn/step5_error.png diff --git a/docs/documentation/webapps/cockpit/img/filter-examples/var-boolean.png b/static/img/documentation/webapps/cockpit/bpmn/var-boolean.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/filter-examples/var-boolean.png rename to static/img/documentation/webapps/cockpit/bpmn/var-boolean.png diff --git a/docs/documentation/webapps/cockpit/img/filter-examples/var-numeric.png b/static/img/documentation/webapps/cockpit/bpmn/var-numeric.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/filter-examples/var-numeric.png rename to static/img/documentation/webapps/cockpit/bpmn/var-numeric.png diff --git a/docs/documentation/webapps/cockpit/img/filter-examples/var-string.png b/static/img/documentation/webapps/cockpit/bpmn/var-string.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/filter-examples/var-string.png rename to static/img/documentation/webapps/cockpit/bpmn/var-string.png diff --git a/docs/documentation/webapps/cockpit/img/variable-filter.png b/static/img/documentation/webapps/cockpit/bpmn/variable-filter.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/variable-filter.png rename to static/img/documentation/webapps/cockpit/bpmn/variable-filter.png diff --git a/docs/documentation/webapps/cockpit/img/cmmn/add-variables.png b/static/img/documentation/webapps/cockpit/cmmn/add-variables.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cmmn/add-variables.png rename to static/img/documentation/webapps/cockpit/cmmn/add-variables.png diff --git a/docs/documentation/webapps/cockpit/img/cmmn/case-dashboard-deployed.png b/static/img/documentation/webapps/cockpit/cmmn/case-dashboard-deployed.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cmmn/case-dashboard-deployed.png rename to static/img/documentation/webapps/cockpit/cmmn/case-dashboard-deployed.png diff --git a/docs/documentation/webapps/cockpit/img/cmmn/case-dashboard-search.png b/static/img/documentation/webapps/cockpit/cmmn/case-dashboard-search.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cmmn/case-dashboard-search.png rename to static/img/documentation/webapps/cockpit/cmmn/case-dashboard-search.png diff --git a/docs/documentation/webapps/cockpit/img/cmmn/case-definition-view.png b/static/img/documentation/webapps/cockpit/cmmn/case-definition-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cmmn/case-definition-view.png rename to static/img/documentation/webapps/cockpit/cmmn/case-definition-view.png diff --git a/docs/documentation/webapps/cockpit/img/cmmn/case-instance-view.png b/static/img/documentation/webapps/cockpit/cmmn/case-instance-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cmmn/case-instance-view.png rename to static/img/documentation/webapps/cockpit/cmmn/case-instance-view.png diff --git a/docs/documentation/webapps/cockpit/img/cmmn/detailed-information-view.png b/static/img/documentation/webapps/cockpit/cmmn/detailed-information-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cmmn/detailed-information-view.png rename to static/img/documentation/webapps/cockpit/cmmn/detailed-information-view.png diff --git a/docs/documentation/webapps/cockpit/img/cmmn/edit-variables.png b/static/img/documentation/webapps/cockpit/cmmn/edit-variables.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cmmn/edit-variables.png rename to static/img/documentation/webapps/cockpit/cmmn/edit-variables.png diff --git a/docs/documentation/webapps/cockpit/img/cmmn/terminate-case.png b/static/img/documentation/webapps/cockpit/cmmn/terminate-case.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cmmn/terminate-case.png rename to static/img/documentation/webapps/cockpit/cmmn/terminate-case.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-audit-annotation.png b/static/img/documentation/webapps/cockpit/cockpit-audit-annotation.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-audit-annotation.png rename to static/img/documentation/webapps/cockpit/cockpit-audit-annotation.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-audit-timestamp.png b/static/img/documentation/webapps/cockpit/cockpit-audit-timestamp.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-audit-timestamp.png rename to static/img/documentation/webapps/cockpit/cockpit-audit-timestamp.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-audit-type.png b/static/img/documentation/webapps/cockpit/cockpit-audit-type.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-audit-type.png rename to static/img/documentation/webapps/cockpit/cockpit-audit-type.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-cleanup-page.png b/static/img/documentation/webapps/cockpit/cockpit-cleanup-page.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-cleanup-page.png rename to static/img/documentation/webapps/cockpit/cockpit-cleanup-page.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-cleanup-state-incident.png b/static/img/documentation/webapps/cockpit/cockpit-cleanup-state-incident.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-cleanup-state-incident.png rename to static/img/documentation/webapps/cockpit/cockpit-cleanup-state-incident.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-cleanup-ttl.png b/static/img/documentation/webapps/cockpit/cockpit-cleanup-ttl.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-cleanup-ttl.png rename to static/img/documentation/webapps/cockpit/cockpit-cleanup-ttl.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-deployments-page.png b/static/img/documentation/webapps/cockpit/cockpit-deployments-page.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-deployments-page.png rename to static/img/documentation/webapps/cockpit/cockpit-deployments-page.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-multi-engine.png b/static/img/documentation/webapps/cockpit/cockpit-multi-engine.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-multi-engine.png rename to static/img/documentation/webapps/cockpit/cockpit-multi-engine.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-operation-log.png b/static/img/documentation/webapps/cockpit/cockpit-operation-log.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-operation-log.png rename to static/img/documentation/webapps/cockpit/cockpit-operation-log.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-user-operation-log.png b/static/img/documentation/webapps/cockpit/cockpit-user-operation-log.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-user-operation-log.png rename to static/img/documentation/webapps/cockpit/cockpit-user-operation-log.png diff --git a/docs/documentation/webapps/cockpit/img/dashboard-metrics.png b/static/img/documentation/webapps/cockpit/dashboard-metrics.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/dashboard-metrics.png rename to static/img/documentation/webapps/cockpit/dashboard-metrics.png diff --git a/docs/documentation/webapps/cockpit/img/dashboard.png b/static/img/documentation/webapps/cockpit/dashboard.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/dashboard.png rename to static/img/documentation/webapps/cockpit/dashboard.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-decision-definition-list.png b/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-list.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-decision-definition-list.png rename to static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-list.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-decision-definition-requirement-decision-drd-tab.png b/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-drd-tab.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-decision-definition-requirement-decision-drd-tab.png rename to static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-drd-tab.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-decision-definition-requirement-decision-instance-instances-tab.png b/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instance-instances-tab.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-decision-definition-requirement-decision-instance-instances-tab.png rename to static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instance-instances-tab.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-decision-definition-requirement-decision-instances-tab.png b/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instances-tab.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-decision-definition-requirement-decision-instances-tab.png rename to static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instances-tab.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-decision-definition-view.png b/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-decision-definition-view.png rename to static/img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-view.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-decision-instance-view.png b/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-instance-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-decision-instance-view.png rename to static/img/documentation/webapps/cockpit/dmn/cockpit-decision-instance-view.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-decision-requirements-definition-instance-view.png b/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-instance-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-decision-requirements-definition-instance-view.png rename to static/img/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-instance-view.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-decision-requirements-definition-view.png b/static/img/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-decision-requirements-definition-view.png rename to static/img/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-view.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-drd-list.png b/static/img/documentation/webapps/cockpit/dmn/cockpit-drd-list.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-drd-list.png rename to static/img/documentation/webapps/cockpit/dmn/cockpit-drd-list.png diff --git a/docs/documentation/webapps/cockpit/img/dmn/decision-instance-search.png b/static/img/documentation/webapps/cockpit/dmn/decision-instance-search.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/dmn/decision-instance-search.png rename to static/img/documentation/webapps/cockpit/dmn/decision-instance-search.png diff --git a/docs/documentation/webapps/cockpit/img/duration-report.png b/static/img/documentation/webapps/cockpit/duration-report.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/duration-report.png rename to static/img/documentation/webapps/cockpit/duration-report.png diff --git a/docs/documentation/webapps/cockpit/img/cockpit-plugin.png b/static/img/documentation/webapps/cockpit/extend/cockpit-plugin.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/cockpit-plugin.png rename to static/img/documentation/webapps/cockpit/extend/cockpit-plugin.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-batch-operation.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-batch-operation.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-batch-operation.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-batch-operation.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-case-definition-action.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-action.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-case-definition-action.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-action.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-case-definition-diagram-overlay.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-diagram-overlay.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-case-definition-diagram-overlay.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-diagram-overlay.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-case-definition-tab.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-tab.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-case-definition-tab.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-tab.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-case-instance-action.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-action.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-case-instance-action.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-action.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-case-instance-diagram-overlay.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-diagram-overlay.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-case-instance-diagram-overlay.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-diagram-overlay.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-case-instance-tab.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-tab.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-case-instance-tab.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-tab.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-cockpit-cases-dashboard.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-cases-dashboard.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-cockpit-cases-dashboard.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-cases-dashboard.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-cockpit-decisions-dashboard.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-decisions-dashboard.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-cockpit-decisions-dashboard.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-decisions-dashboard.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-cockpit-process-definition-view.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-definition-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-cockpit-process-definition-view.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-definition-view.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-cockpit-process-instance-view.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-instance-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-cockpit-process-instance-view.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-process-instance-view.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-cockpit-processes-dashboard.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-processes-dashboard.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-cockpit-processes-dashboard.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-cockpit-processes-dashboard.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-dashboard-custom.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-dashboard-custom.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-dashboard-custom.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-dashboard-custom.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-dashboard-metrics-view.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-dashboard-metrics-view.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-dashboard-metrics-view.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-dashboard-metrics-view.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-decision-definition-action.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-action.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-decision-definition-action.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-action.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-decision-definition-tab.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-tab.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-decision-definition-tab.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-tab.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-decision-definition-table.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-table.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-decision-definition-table.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-decision-definition-table.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-decision-instance-action.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-action.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-decision-instance-action.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-action.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-decision-instance-tab.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-tab.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-decision-instance-tab.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-tab.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-decision-instance-table.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-table.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-decision-instance-table.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-decision-instance-table.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-definition-diagram-overlay.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-definition-diagram-overlay.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-definition-diagram-overlay.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-definition-diagram-overlay.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-incident-action.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-incident-action.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-incident-action.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-incident-action.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-instance-diagram-overlay.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-instance-diagram-overlay.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-instance-diagram-overlay.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-instance-diagram-overlay.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-job-definition-action.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-job-definition-action.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-job-definition-action.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-job-definition-action.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-login-custom.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-login-custom.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-login-custom.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-login-custom.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-navigation.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-navigation.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-navigation.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-navigation.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-process-definition-details.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-process-definition-details.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-process-definition-details.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-process-definition-details.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-process-definition-runtime-action.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-process-definition-runtime-action.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-process-definition-runtime-action.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-process-definition-runtime-action.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-process-instance-details.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-process-instance-details.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-process-instance-details.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-process-instance-details.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-process-instance-runtime-action.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-process-instance-runtime-action.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-process-instance-runtime-action.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-process-instance-runtime-action.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-repository-resource-action.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-repository-resource-action.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-repository-resource-action.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-repository-resource-action.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-repository-resource-detail.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-repository-resource-detail.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-repository-resource-detail.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-repository-resource-detail.png diff --git a/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-task-dashboard.png b/static/img/documentation/webapps/cockpit/extend/plugin-point-task-dashboard.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-task-dashboard.png rename to static/img/documentation/webapps/cockpit/extend/plugin-point-task-dashboard.png diff --git a/docs/documentation/webapps/cockpit/img/historic-task-instance-report.png b/static/img/documentation/webapps/cockpit/historic-task-instance-report.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/historic-task-instance-report.png rename to static/img/documentation/webapps/cockpit/historic-task-instance-report.png diff --git a/docs/documentation/webapps/cockpit/img/task-dashboard.png b/static/img/documentation/webapps/cockpit/task-dashboard.png similarity index 100% rename from docs/documentation/webapps/cockpit/img/task-dashboard.png rename to static/img/documentation/webapps/cockpit/task-dashboard.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-case-insensitive.png b/static/img/documentation/webapps/tasklist/tasklist-case-insensitive.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-case-insensitive.png rename to static/img/documentation/webapps/tasklist/tasklist-case-insensitive.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-create-filter.png b/static/img/documentation/webapps/tasklist/tasklist-create-filter.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-create-filter.png rename to static/img/documentation/webapps/tasklist/tasklist-create-filter.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-dashboard-detail.png b/static/img/documentation/webapps/tasklist/tasklist-dashboard-detail.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-dashboard-detail.png rename to static/img/documentation/webapps/tasklist/tasklist-dashboard-detail.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-filter-detail.png b/static/img/documentation/webapps/tasklist/tasklist-filter-detail.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-filter-detail.png rename to static/img/documentation/webapps/tasklist/tasklist-filter-detail.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-filter-results.png b/static/img/documentation/webapps/tasklist/tasklist-filter-results.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-filter-results.png rename to static/img/documentation/webapps/tasklist/tasklist-filter-results.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-in-operator-modal.png b/static/img/documentation/webapps/tasklist/tasklist-in-operator-modal.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-in-operator-modal.png rename to static/img/documentation/webapps/tasklist/tasklist-in-operator-modal.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-in-operator.png b/static/img/documentation/webapps/tasklist/tasklist-in-operator.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-in-operator.png rename to static/img/documentation/webapps/tasklist/tasklist-in-operator.png diff --git a/docs/documentation/webapps/tasklist/img/plugin-points/tasklist-plugin-card.png b/static/img/documentation/webapps/tasklist/tasklist-plugin-card.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/plugin-points/tasklist-plugin-card.png rename to static/img/documentation/webapps/tasklist/tasklist-plugin-card.png diff --git a/docs/documentation/webapps/tasklist/img/plugin-points/tasklist-plugin-list.png b/static/img/documentation/webapps/tasklist/tasklist-plugin-list.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/plugin-points/tasklist-plugin-list.png rename to static/img/documentation/webapps/tasklist/tasklist-plugin-list.png diff --git a/docs/documentation/webapps/tasklist/img/plugin-points/tasklist-plugin-navbar-action.png b/static/img/documentation/webapps/tasklist/tasklist-plugin-navbar-action.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/plugin-points/tasklist-plugin-navbar-action.png rename to static/img/documentation/webapps/tasklist/tasklist-plugin-navbar-action.png diff --git a/docs/documentation/webapps/tasklist/img/plugin-points/tasklist-plugin-task-action.png b/static/img/documentation/webapps/tasklist/tasklist-plugin-task-action.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/plugin-points/tasklist-plugin-task-action.png rename to static/img/documentation/webapps/tasklist/tasklist-plugin-task-action.png diff --git a/docs/documentation/webapps/tasklist/img/plugin-points/tasklist-plugin-task-detail.png b/static/img/documentation/webapps/tasklist/tasklist-plugin-task-detail.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/plugin-points/tasklist-plugin-task-detail.png rename to static/img/documentation/webapps/tasklist/tasklist-plugin-task-detail.png diff --git a/docs/documentation/webapps/tasklist/img/plugin-points/tasklist-plugin-tasklist-header.png b/static/img/documentation/webapps/tasklist/tasklist-plugin-tasklist-header.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/plugin-points/tasklist-plugin-tasklist-header.png rename to static/img/documentation/webapps/tasklist/tasklist-plugin-tasklist-header.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-start-process.png b/static/img/documentation/webapps/tasklist/tasklist-start-process.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-start-process.png rename to static/img/documentation/webapps/tasklist/tasklist-start-process.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-start-task.png b/static/img/documentation/webapps/tasklist/tasklist-start-task.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-start-task.png rename to static/img/documentation/webapps/tasklist/tasklist-start-task.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-task-form-modeler.png b/static/img/documentation/webapps/tasklist/tasklist-task-form-modeler.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-task-form-modeler.png rename to static/img/documentation/webapps/tasklist/tasklist-task-form-modeler.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-task-search.png b/static/img/documentation/webapps/tasklist/tasklist-task-search.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-task-search.png rename to static/img/documentation/webapps/tasklist/tasklist-task-search.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-task-view-tabs.png b/static/img/documentation/webapps/tasklist/tasklist-task-view-tabs.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-task-view-tabs.png rename to static/img/documentation/webapps/tasklist/tasklist-task-view-tabs.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-task-view.png b/static/img/documentation/webapps/tasklist/tasklist-task-view.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-task-view.png rename to static/img/documentation/webapps/tasklist/tasklist-task-view.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-toggle-view.png b/static/img/documentation/webapps/tasklist/tasklist-toggle-view.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-toggle-view.png rename to static/img/documentation/webapps/tasklist/tasklist-toggle-view.png diff --git a/docs/documentation/webapps/tasklist/img/tasklist-user-task-state-complete.png b/static/img/documentation/webapps/tasklist/tasklist-user-task-state-complete.png similarity index 100% rename from docs/documentation/webapps/tasklist/img/tasklist-user-task-state-complete.png rename to static/img/documentation/webapps/tasklist/tasklist-user-task-state-complete.png diff --git a/docs/documentation/webapps/welcome/img/welcome-dashboard-plugin.png b/static/img/documentation/webapps/welcome/welcome-dashboard-plugin.png similarity index 100% rename from docs/documentation/webapps/welcome/img/welcome-dashboard-plugin.png rename to static/img/documentation/webapps/welcome/welcome-dashboard-plugin.png diff --git a/docs/documentation/webapps/welcome/img/welcome-profile-plugin.png b/static/img/documentation/webapps/welcome/welcome-profile-plugin.png similarity index 100% rename from docs/documentation/webapps/welcome/img/welcome-profile-plugin.png rename to static/img/documentation/webapps/welcome/welcome-profile-plugin.png diff --git a/docs/get-started/archive/java-process-app/img/cockpit-loan-approval.png b/static/img/get-started/archive/java-process-app/cockpit-loan-approval.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/cockpit-loan-approval.png rename to static/img/get-started/archive/java-process-app/cockpit-loan-approval.png diff --git a/docs/get-started/archive/java-process-app/img/create-process-definition-authorization.png b/static/img/get-started/archive/java-process-app/create-process-definition-authorization.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/create-process-definition-authorization.png rename to static/img/get-started/archive/java-process-app/create-process-definition-authorization.png diff --git a/docs/get-started/archive/java-process-app/img/create-process-instance-authorization.png b/static/img/get-started/archive/java-process-app/create-process-instance-authorization.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/create-process-instance-authorization.png rename to static/img/get-started/archive/java-process-app/create-process-instance-authorization.png diff --git a/docs/get-started/archive/java-process-app/img/diagram.png b/static/img/get-started/archive/java-process-app/diagram.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/diagram.png rename to static/img/get-started/archive/java-process-app/diagram.png diff --git a/docs/get-started/archive/java-process-app/img/eclipse-new-project.png b/static/img/get-started/archive/java-process-app/eclipse-new-project.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/eclipse-new-project.png rename to static/img/get-started/archive/java-process-app/eclipse-new-project.png diff --git a/docs/get-started/archive/java-process-app/img/form-builder-start-form.png b/static/img/get-started/archive/java-process-app/form-builder-start-form.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/form-builder-start-form.png rename to static/img/get-started/archive/java-process-app/form-builder-start-form.png diff --git a/docs/get-started/archive/java-process-app/img/modeler-new-bpmn-diagram.png b/static/img/get-started/archive/java-process-app/modeler-new-bpmn-diagram.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/modeler-new-bpmn-diagram.png rename to static/img/get-started/archive/java-process-app/modeler-new-bpmn-diagram.png diff --git a/docs/get-started/archive/java-process-app/img/modeler-service-task1.png b/static/img/get-started/archive/java-process-app/modeler-service-task1.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/modeler-service-task1.png rename to static/img/get-started/archive/java-process-app/modeler-service-task1.png diff --git a/docs/get-started/archive/java-process-app/img/modeler-service-task2.png b/static/img/get-started/archive/java-process-app/modeler-service-task2.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/modeler-service-task2.png rename to static/img/get-started/archive/java-process-app/modeler-service-task2.png diff --git a/docs/get-started/archive/java-process-app/img/modeler-service-task3.png b/static/img/get-started/archive/java-process-app/modeler-service-task3.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/modeler-service-task3.png rename to static/img/get-started/archive/java-process-app/modeler-service-task3.png diff --git a/docs/get-started/archive/java-process-app/img/modeler-start-form.png b/static/img/get-started/archive/java-process-app/modeler-start-form.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/modeler-start-form.png rename to static/img/get-started/archive/java-process-app/modeler-start-form.png diff --git a/docs/get-started/archive/java-process-app/img/modeler-step1.png b/static/img/get-started/archive/java-process-app/modeler-step1.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/modeler-step1.png rename to static/img/get-started/archive/java-process-app/modeler-step1.png diff --git a/docs/get-started/archive/java-process-app/img/modeler-step2.png b/static/img/get-started/archive/java-process-app/modeler-step2.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/modeler-step2.png rename to static/img/get-started/archive/java-process-app/modeler-step2.png diff --git a/docs/get-started/archive/java-process-app/img/modeler-step3.png b/static/img/get-started/archive/java-process-app/modeler-step3.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/modeler-step3.png rename to static/img/get-started/archive/java-process-app/modeler-step3.png diff --git a/docs/get-started/archive/java-process-app/img/modeler-step4.png b/static/img/get-started/archive/java-process-app/modeler-step4.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/modeler-step4.png rename to static/img/get-started/archive/java-process-app/modeler-step4.png diff --git a/docs/get-started/archive/java-process-app/img/modeler-step5.png b/static/img/get-started/archive/java-process-app/modeler-step5.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/modeler-step5.png rename to static/img/get-started/archive/java-process-app/modeler-step5.png diff --git a/docs/get-started/archive/java-process-app/img/start-form-embedded.png b/static/img/get-started/archive/java-process-app/start-form-embedded.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/start-form-embedded.png rename to static/img/get-started/archive/java-process-app/start-form-embedded.png diff --git a/docs/get-started/archive/java-process-app/img/start-form-generic.png b/static/img/get-started/archive/java-process-app/start-form-generic.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/start-form-generic.png rename to static/img/get-started/archive/java-process-app/start-form-generic.png diff --git a/docs/get-started/archive/java-process-app/img/task-form-embedded.png b/static/img/get-started/archive/java-process-app/task-form-embedded.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/task-form-embedded.png rename to static/img/get-started/archive/java-process-app/task-form-embedded.png diff --git a/docs/get-started/archive/java-process-app/img/task-form-generic.png b/static/img/get-started/archive/java-process-app/task-form-generic.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/task-form-generic.png rename to static/img/get-started/archive/java-process-app/task-form-generic.png diff --git a/docs/get-started/archive/javaee7/img/approve-order.png b/static/img/get-started/archive/javaee7/approve-order.png similarity index 100% rename from docs/get-started/archive/javaee7/img/approve-order.png rename to static/img/get-started/archive/javaee7/approve-order.png diff --git a/docs/get-started/archive/javaee7/img/maven-project-settings.png b/static/img/get-started/archive/javaee7/maven-project-settings.png similarity index 100% rename from docs/get-started/archive/javaee7/img/maven-project-settings.png rename to static/img/get-started/archive/javaee7/maven-project-settings.png diff --git a/docs/get-started/archive/javaee7/img/modeler-new-bpmn-diagram.png b/static/img/get-started/archive/javaee7/modeler-new-bpmn-diagram.png similarity index 100% rename from docs/get-started/archive/javaee7/img/modeler-new-bpmn-diagram.png rename to static/img/get-started/archive/javaee7/modeler-new-bpmn-diagram.png diff --git a/docs/get-started/archive/javaee7/img/pizza-order-process-condition-expression.png b/static/img/get-started/archive/javaee7/pizza-order-process-condition-expression.png similarity index 100% rename from docs/get-started/archive/javaee7/img/pizza-order-process-condition-expression.png rename to static/img/get-started/archive/javaee7/pizza-order-process-condition-expression.png diff --git a/docs/get-started/archive/javaee7/img/pizza-order-process-expression.png b/static/img/get-started/archive/javaee7/pizza-order-process-expression.png similarity index 100% rename from docs/get-started/archive/javaee7/img/pizza-order-process-expression.png rename to static/img/get-started/archive/javaee7/pizza-order-process-expression.png diff --git a/docs/get-started/archive/javaee7/img/pizza-order-process-no.png b/static/img/get-started/archive/javaee7/pizza-order-process-no.png similarity index 100% rename from docs/get-started/archive/javaee7/img/pizza-order-process-no.png rename to static/img/get-started/archive/javaee7/pizza-order-process-no.png diff --git a/docs/get-started/archive/javaee7/img/pizza-order-process-prepare-pizza.png b/static/img/get-started/archive/javaee7/pizza-order-process-prepare-pizza.png similarity index 100% rename from docs/get-started/archive/javaee7/img/pizza-order-process-prepare-pizza.png rename to static/img/get-started/archive/javaee7/pizza-order-process-prepare-pizza.png diff --git a/docs/get-started/archive/javaee7/img/pizza-order-process-send-rejection-email.png b/static/img/get-started/archive/javaee7/pizza-order-process-send-rejection-email.png similarity index 100% rename from docs/get-started/archive/javaee7/img/pizza-order-process-send-rejection-email.png rename to static/img/get-started/archive/javaee7/pizza-order-process-send-rejection-email.png diff --git a/docs/get-started/archive/javaee7/img/pizza-order-process-service-task-expression.png b/static/img/get-started/archive/javaee7/pizza-order-process-service-task-expression.png similarity index 100% rename from docs/get-started/archive/javaee7/img/pizza-order-process-service-task-expression.png rename to static/img/get-started/archive/javaee7/pizza-order-process-service-task-expression.png diff --git a/docs/get-started/archive/javaee7/img/pizza-order-process-start-form.png b/static/img/get-started/archive/javaee7/pizza-order-process-start-form.png similarity index 100% rename from docs/get-started/archive/javaee7/img/pizza-order-process-start-form.png rename to static/img/get-started/archive/javaee7/pizza-order-process-start-form.png diff --git a/docs/get-started/archive/javaee7/img/pizza-order-process-task-form.png b/static/img/get-started/archive/javaee7/pizza-order-process-task-form.png similarity index 100% rename from docs/get-started/archive/javaee7/img/pizza-order-process-task-form.png rename to static/img/get-started/archive/javaee7/pizza-order-process-task-form.png diff --git a/docs/get-started/archive/javaee7/img/pizza-order-process.png b/static/img/get-started/archive/javaee7/pizza-order-process.png similarity index 100% rename from docs/get-started/archive/javaee7/img/pizza-order-process.png rename to static/img/get-started/archive/javaee7/pizza-order-process.png diff --git a/docs/get-started/archive/javaee7/img/prepare-pizza.png b/static/img/get-started/archive/javaee7/prepare-pizza.png similarity index 100% rename from docs/get-started/archive/javaee7/img/prepare-pizza.png rename to static/img/get-started/archive/javaee7/prepare-pizza.png diff --git a/docs/get-started/archive/spring/img/eclipse-new-project.png b/static/img/get-started/archive/spring/eclipse-new-project.png similarity index 100% rename from docs/get-started/archive/spring/img/eclipse-new-project.png rename to static/img/get-started/archive/spring/eclipse-new-project.png diff --git a/docs/get-started/archive/spring/img/process-model.png b/static/img/get-started/archive/spring/process-model.png similarity index 100% rename from docs/get-started/archive/spring/img/process-model.png rename to static/img/get-started/archive/spring/process-model.png diff --git a/docs/get-started/archive/spring/img/project-layout-after-setup.png b/static/img/get-started/archive/spring/project-layout-after-setup.png similarity index 100% rename from docs/get-started/archive/spring/img/project-layout-after-setup.png rename to static/img/get-started/archive/spring/project-layout-after-setup.png diff --git a/docs/get-started/archive/spring/img/service-task.png b/static/img/get-started/archive/spring/service-task.png similarity index 100% rename from docs/get-started/archive/spring/img/service-task.png rename to static/img/get-started/archive/spring/service-task.png diff --git a/docs/get-started/dmn/img/cockpit-decision-history-beverages-dmn.png b/static/img/get-started/dmn/cockpit-decision-history-beverages-dmn.png similarity index 100% rename from docs/get-started/dmn/img/cockpit-decision-history-beverages-dmn.png rename to static/img/get-started/dmn/cockpit-decision-history-beverages-dmn.png diff --git a/docs/get-started/dmn/img/cockpit-decision-history-dish-dmn.png b/static/img/get-started/dmn/cockpit-decision-history-dish-dmn.png similarity index 100% rename from docs/get-started/dmn/img/cockpit-decision-history-dish-dmn.png rename to static/img/get-started/dmn/cockpit-decision-history-dish-dmn.png diff --git a/docs/get-started/dmn/img/cockpit-decision-overview-beverages-dmn.png b/static/img/get-started/dmn/cockpit-decision-overview-beverages-dmn.png similarity index 100% rename from docs/get-started/dmn/img/cockpit-decision-overview-beverages-dmn.png rename to static/img/get-started/dmn/cockpit-decision-overview-beverages-dmn.png diff --git a/docs/get-started/dmn/img/cockpit-decision-overview-dish-dmn.png b/static/img/get-started/dmn/cockpit-decision-overview-dish-dmn.png similarity index 100% rename from docs/get-started/dmn/img/cockpit-decision-overview-dish-dmn.png rename to static/img/get-started/dmn/cockpit-decision-overview-dish-dmn.png diff --git a/docs/get-started/dmn/img/cockpit-dish-dmn.png b/static/img/get-started/dmn/cockpit-dish-dmn.png similarity index 100% rename from docs/get-started/dmn/img/cockpit-dish-dmn.png rename to static/img/get-started/dmn/cockpit-dish-dmn.png diff --git a/docs/get-started/dmn/img/eclipse-new-project.png b/static/img/get-started/dmn/eclipse-new-project.png similarity index 100% rename from docs/get-started/dmn/img/eclipse-new-project.png rename to static/img/get-started/dmn/eclipse-new-project.png diff --git a/docs/get-started/dmn/img/modeler-drd-step1.png b/static/img/get-started/dmn/modeler-drd-step1.png similarity index 100% rename from docs/get-started/dmn/img/modeler-drd-step1.png rename to static/img/get-started/dmn/modeler-drd-step1.png diff --git a/docs/get-started/dmn/img/modeler-drd-step2.png b/static/img/get-started/dmn/modeler-drd-step2.png similarity index 100% rename from docs/get-started/dmn/img/modeler-drd-step2.png rename to static/img/get-started/dmn/modeler-drd-step2.png diff --git a/docs/get-started/dmn/img/modeler-drd-step3.png b/static/img/get-started/dmn/modeler-drd-step3.png similarity index 100% rename from docs/get-started/dmn/img/modeler-drd-step3.png rename to static/img/get-started/dmn/modeler-drd-step3.png diff --git a/docs/get-started/dmn/img/modeler-drd-step4.png b/static/img/get-started/dmn/modeler-drd-step4.png similarity index 100% rename from docs/get-started/dmn/img/modeler-drd-step4.png rename to static/img/get-started/dmn/modeler-drd-step4.png diff --git a/docs/get-started/dmn/img/modeler-drd-step5.png b/static/img/get-started/dmn/modeler-drd-step5.png similarity index 100% rename from docs/get-started/dmn/img/modeler-drd-step5.png rename to static/img/get-started/dmn/modeler-drd-step5.png diff --git a/docs/get-started/dmn/img/modeler-new-dmn-table.png b/static/img/get-started/dmn/modeler-new-dmn-table.png similarity index 100% rename from docs/get-started/dmn/img/modeler-new-dmn-table.png rename to static/img/get-started/dmn/modeler-new-dmn-table.png diff --git a/docs/get-started/dmn/img/modeler-save-dmn-table.png b/static/img/get-started/dmn/modeler-save-dmn-table.png similarity index 100% rename from docs/get-started/dmn/img/modeler-save-dmn-table.png rename to static/img/get-started/dmn/modeler-save-dmn-table.png diff --git a/docs/get-started/dmn/img/modeler-step1.png b/static/img/get-started/dmn/modeler-step1.png similarity index 100% rename from docs/get-started/dmn/img/modeler-step1.png rename to static/img/get-started/dmn/modeler-step1.png diff --git a/docs/get-started/dmn/img/modeler-step2a.png b/static/img/get-started/dmn/modeler-step2a.png similarity index 100% rename from docs/get-started/dmn/img/modeler-step2a.png rename to static/img/get-started/dmn/modeler-step2a.png diff --git a/docs/get-started/dmn/img/modeler-step2b.png b/static/img/get-started/dmn/modeler-step2b.png similarity index 100% rename from docs/get-started/dmn/img/modeler-step2b.png rename to static/img/get-started/dmn/modeler-step2b.png diff --git a/docs/get-started/dmn/img/modeler-step3.png b/static/img/get-started/dmn/modeler-step3.png similarity index 100% rename from docs/get-started/dmn/img/modeler-step3.png rename to static/img/get-started/dmn/modeler-step3.png diff --git a/docs/get-started/dmn/img/modeler-step4.png b/static/img/get-started/dmn/modeler-step4.png similarity index 100% rename from docs/get-started/dmn/img/modeler-step4.png rename to static/img/get-started/dmn/modeler-step4.png diff --git a/docs/get-started/dmn/img/modeler-step5.png b/static/img/get-started/dmn/modeler-step5.png similarity index 100% rename from docs/get-started/dmn/img/modeler-step5.png rename to static/img/get-started/dmn/modeler-step5.png diff --git a/docs/get-started/dmn/img/modeler-step6.png b/static/img/get-started/dmn/modeler-step6.png similarity index 100% rename from docs/get-started/dmn/img/modeler-step6.png rename to static/img/get-started/dmn/modeler-step6.png diff --git a/docs/get-started/dmn/img/modeler-step7.png b/static/img/get-started/dmn/modeler-step7.png similarity index 100% rename from docs/get-started/dmn/img/modeler-step7.png rename to static/img/get-started/dmn/modeler-step7.png diff --git a/docs/get-started/archive/java-process-app/img/modeler-save-diagram.png b/static/img/get-started/examples/archive/java-process-app/img/modeler-save-diagram.png similarity index 100% rename from docs/get-started/archive/java-process-app/img/modeler-save-diagram.png rename to static/img/get-started/examples/archive/java-process-app/img/modeler-save-diagram.png diff --git a/docs/get-started/archive/javaee7/img/javaee.png b/static/img/get-started/examples/archive/javaee7/img/javaee.png similarity index 100% rename from docs/get-started/archive/javaee7/img/javaee.png rename to static/img/get-started/examples/archive/javaee7/img/javaee.png diff --git a/docs/get-started/archive/javaee7/img/start-form.png b/static/img/get-started/examples/archive/javaee7/img/start-form.png similarity index 100% rename from docs/get-started/archive/javaee7/img/start-form.png rename to static/img/get-started/examples/archive/javaee7/img/start-form.png diff --git a/docs/get-started/archive/spring/img/Spring_Logo.png b/static/img/get-started/examples/archive/spring/img/Spring_Logo.png similarity index 100% rename from docs/get-started/archive/spring/img/Spring_Logo.png rename to static/img/get-started/examples/archive/spring/img/Spring_Logo.png diff --git a/docs/get-started/quick-start/img/modeler-dmn1.png b/static/img/get-started/examples/quick-start/img/modeler-dmn1.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-dmn1.png rename to static/img/get-started/examples/quick-start/img/modeler-dmn1.png diff --git a/docs/get-started/quick-start/img/niall-says-congrats.png b/static/img/get-started/examples/quick-start/img/niall-says-congrats.png similarity index 100% rename from docs/get-started/quick-start/img/niall-says-congrats.png rename to static/img/get-started/examples/quick-start/img/niall-says-congrats.png diff --git a/docs/get-started/quick-start/img/cockpit-approve-payment.png b/static/img/get-started/quick-start/cockpit-approve-payment.png similarity index 100% rename from docs/get-started/quick-start/img/cockpit-approve-payment.png rename to static/img/get-started/quick-start/cockpit-approve-payment.png diff --git a/docs/get-started/quick-start/img/cockpit-dmn-table.png b/static/img/get-started/quick-start/cockpit-dmn-table.png similarity index 100% rename from docs/get-started/quick-start/img/cockpit-dmn-table.png rename to static/img/get-started/quick-start/cockpit-dmn-table.png diff --git a/docs/get-started/quick-start/img/cockpit-payment-retrieval.png b/static/img/get-started/quick-start/cockpit-payment-retrieval.png similarity index 100% rename from docs/get-started/quick-start/img/cockpit-payment-retrieval.png rename to static/img/get-started/quick-start/cockpit-payment-retrieval.png diff --git a/docs/get-started/quick-start/img/diagram.png b/static/img/get-started/quick-start/diagram.png similarity index 100% rename from docs/get-started/quick-start/img/diagram.png rename to static/img/get-started/quick-start/diagram.png diff --git a/docs/get-started/quick-start/img/eclipse-new-project.png b/static/img/get-started/quick-start/eclipse-new-project.png similarity index 100% rename from docs/get-started/quick-start/img/eclipse-new-project.png rename to static/img/get-started/quick-start/eclipse-new-project.png diff --git a/docs/get-started/quick-start/img/modeler-businessrule-task1.png b/static/img/get-started/quick-start/modeler-businessrule-task1.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-businessrule-task1.png rename to static/img/get-started/quick-start/modeler-businessrule-task1.png diff --git a/docs/get-started/quick-start/img/modeler-businessrule-task2.png b/static/img/get-started/quick-start/modeler-businessrule-task2.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-businessrule-task2.png rename to static/img/get-started/quick-start/modeler-businessrule-task2.png diff --git a/docs/get-started/quick-start/img/modeler-deploy-form.png b/static/img/get-started/quick-start/modeler-deploy-form.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-deploy-form.png rename to static/img/get-started/quick-start/modeler-deploy-form.png diff --git a/docs/get-started/quick-start/img/modeler-deploy1.png b/static/img/get-started/quick-start/modeler-deploy1.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-deploy1.png rename to static/img/get-started/quick-start/modeler-deploy1.png diff --git a/docs/get-started/quick-start/img/modeler-deploy2.png b/static/img/get-started/quick-start/modeler-deploy2.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-deploy2.png rename to static/img/get-started/quick-start/modeler-deploy2.png diff --git a/docs/get-started/quick-start/img/modeler-deploy3.png b/static/img/get-started/quick-start/modeler-deploy3.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-deploy3.png rename to static/img/get-started/quick-start/modeler-deploy3.png diff --git a/docs/get-started/quick-start/img/modeler-dmn2.png b/static/img/get-started/quick-start/modeler-dmn2.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-dmn2.png rename to static/img/get-started/quick-start/modeler-dmn2.png diff --git a/docs/get-started/quick-start/img/modeler-dmn3.png b/static/img/get-started/quick-start/modeler-dmn3.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-dmn3.png rename to static/img/get-started/quick-start/modeler-dmn3.png diff --git a/docs/get-started/quick-start/img/modeler-dmn4.png b/static/img/get-started/quick-start/modeler-dmn4.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-dmn4.png rename to static/img/get-started/quick-start/modeler-dmn4.png diff --git a/docs/get-started/quick-start/img/modeler-dmn5.png b/static/img/get-started/quick-start/modeler-dmn5.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-dmn5.png rename to static/img/get-started/quick-start/modeler-dmn5.png diff --git a/docs/get-started/quick-start/img/modeler-dmn6.png b/static/img/get-started/quick-start/modeler-dmn6.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-dmn6.png rename to static/img/get-started/quick-start/modeler-dmn6.png diff --git a/docs/get-started/quick-start/img/modeler-gateway1.png b/static/img/get-started/quick-start/modeler-gateway1.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-gateway1.png rename to static/img/get-started/quick-start/modeler-gateway1.png diff --git a/docs/get-started/quick-start/img/modeler-gateway2.png b/static/img/get-started/quick-start/modeler-gateway2.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-gateway2.png rename to static/img/get-started/quick-start/modeler-gateway2.png diff --git a/docs/get-started/quick-start/img/modeler-gateway3.png b/static/img/get-started/quick-start/modeler-gateway3.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-gateway3.png rename to static/img/get-started/quick-start/modeler-gateway3.png diff --git a/docs/get-started/quick-start/img/modeler-gateway4.png b/static/img/get-started/quick-start/modeler-gateway4.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-gateway4.png rename to static/img/get-started/quick-start/modeler-gateway4.png diff --git a/docs/get-started/quick-start/img/modeler-gateway5.png b/static/img/get-started/quick-start/modeler-gateway5.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-gateway5.png rename to static/img/get-started/quick-start/modeler-gateway5.png diff --git a/docs/get-started/quick-start/img/modeler-gateway6.png b/static/img/get-started/quick-start/modeler-gateway6.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-gateway6.png rename to static/img/get-started/quick-start/modeler-gateway6.png diff --git a/docs/get-started/quick-start/img/modeler-new-bpmn-diagram.png b/static/img/get-started/quick-start/modeler-new-bpmn-diagram.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-new-bpmn-diagram.png rename to static/img/get-started/quick-start/modeler-new-bpmn-diagram.png diff --git a/docs/get-started/quick-start/img/modeler-new-dmn-diagram-properties.png b/static/img/get-started/quick-start/modeler-new-dmn-diagram-properties.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-new-dmn-diagram-properties.png rename to static/img/get-started/quick-start/modeler-new-dmn-diagram-properties.png diff --git a/docs/get-started/quick-start/img/modeler-new-dmn-diagram.png b/static/img/get-started/quick-start/modeler-new-dmn-diagram.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-new-dmn-diagram.png rename to static/img/get-started/quick-start/modeler-new-dmn-diagram.png diff --git a/docs/get-started/quick-start/img/modeler-new-dmn-table.png b/static/img/get-started/quick-start/modeler-new-dmn-table.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-new-dmn-table.png rename to static/img/get-started/quick-start/modeler-new-dmn-table.png diff --git a/docs/get-started/quick-start/img/modeler-platform-selection.png b/static/img/get-started/quick-start/modeler-platform-selection.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-platform-selection.png rename to static/img/get-started/quick-start/modeler-platform-selection.png diff --git a/docs/get-started/quick-start/img/modeler-step1.png b/static/img/get-started/quick-start/modeler-step1.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-step1.png rename to static/img/get-started/quick-start/modeler-step1.png diff --git a/docs/get-started/quick-start/img/modeler-step2.png b/static/img/get-started/quick-start/modeler-step2.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-step2.png rename to static/img/get-started/quick-start/modeler-step2.png diff --git a/docs/get-started/quick-start/img/modeler-step3.png b/static/img/get-started/quick-start/modeler-step3.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-step3.png rename to static/img/get-started/quick-start/modeler-step3.png diff --git a/docs/get-started/quick-start/img/modeler-step4.png b/static/img/get-started/quick-start/modeler-step4.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-step4.png rename to static/img/get-started/quick-start/modeler-step4.png diff --git a/docs/get-started/quick-start/img/modeler-step5.png b/static/img/get-started/quick-start/modeler-step5.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-step5.png rename to static/img/get-started/quick-start/modeler-step5.png diff --git a/docs/get-started/quick-start/img/modeler-usertask-add.png b/static/img/get-started/quick-start/modeler-usertask-add.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-usertask-add.png rename to static/img/get-started/quick-start/modeler-usertask-add.png diff --git a/docs/get-started/quick-start/img/modeler-usertask-form.png b/static/img/get-started/quick-start/modeler-usertask-form.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-usertask-form.png rename to static/img/get-started/quick-start/modeler-usertask-form.png diff --git a/docs/get-started/quick-start/img/modeler-usertask1.png b/static/img/get-started/quick-start/modeler-usertask1.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-usertask1.png rename to static/img/get-started/quick-start/modeler-usertask1.png diff --git a/docs/get-started/quick-start/img/modeler-usertask2.png b/static/img/get-started/quick-start/modeler-usertask2.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-usertask2.png rename to static/img/get-started/quick-start/modeler-usertask2.png diff --git a/docs/get-started/quick-start/img/modeler-usertask3.png b/static/img/get-started/quick-start/modeler-usertask3.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-usertask3.png rename to static/img/get-started/quick-start/modeler-usertask3.png diff --git a/docs/get-started/quick-start/img/modeler-usertask4.png b/static/img/get-started/quick-start/modeler-usertask4.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-usertask4.png rename to static/img/get-started/quick-start/modeler-usertask4.png diff --git a/docs/get-started/quick-start/img/modeler-usertask5.png b/static/img/get-started/quick-start/modeler-usertask5.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-usertask5.png rename to static/img/get-started/quick-start/modeler-usertask5.png diff --git a/docs/get-started/quick-start/img/modeler-usertask6.png b/static/img/get-started/quick-start/modeler-usertask6.png similarity index 100% rename from docs/get-started/quick-start/img/modeler-usertask6.png rename to static/img/get-started/quick-start/modeler-usertask6.png diff --git a/docs/get-started/quick-start/img/postman-start-instance.png b/static/img/get-started/quick-start/postman-start-instance.png similarity index 100% rename from docs/get-started/quick-start/img/postman-start-instance.png rename to static/img/get-started/quick-start/postman-start-instance.png diff --git a/docs/get-started/quick-start/img/start-form-generic.png b/static/img/get-started/quick-start/start-form-generic.png similarity index 100% rename from docs/get-started/quick-start/img/start-form-generic.png rename to static/img/get-started/quick-start/start-form-generic.png diff --git a/docs/get-started/quick-start/img/task-form-generated.png b/static/img/get-started/quick-start/task-form-generated.png similarity index 100% rename from docs/get-started/quick-start/img/task-form-generated.png rename to static/img/get-started/quick-start/task-form-generated.png diff --git a/docs/get-started/quick-start/img/tasklist-dmn1.png b/static/img/get-started/quick-start/tasklist-dmn1.png similarity index 100% rename from docs/get-started/quick-start/img/tasklist-dmn1.png rename to static/img/get-started/quick-start/tasklist-dmn1.png diff --git a/docs/get-started/quick-start/img/tasklist-dmn2.png b/static/img/get-started/quick-start/tasklist-dmn2.png similarity index 100% rename from docs/get-started/quick-start/img/tasklist-dmn2.png rename to static/img/get-started/quick-start/tasklist-dmn2.png diff --git a/docs/get-started/spring-boot/img/eclipse-new-project.png b/static/img/get-started/spring-boot/eclipse-new-project.png similarity index 100% rename from docs/get-started/spring-boot/img/eclipse-new-project.png rename to static/img/get-started/spring-boot/eclipse-new-project.png diff --git a/docs/get-started/spring-boot/img/loanApproval.png b/static/img/get-started/spring-boot/loanApproval.png similarity index 100% rename from docs/get-started/spring-boot/img/loanApproval.png rename to static/img/get-started/spring-boot/loanApproval.png diff --git a/docs/get-started/spring-boot/img/tasklist.png b/static/img/get-started/spring-boot/tasklist.png similarity index 100% rename from docs/get-started/spring-boot/img/tasklist.png rename to static/img/get-started/spring-boot/tasklist.png diff --git a/toolkit/analyze-orphaned-assets.js b/toolkit/analyze-orphaned-assets.js new file mode 100644 index 0000000..e82dc8c --- /dev/null +++ b/toolkit/analyze-orphaned-assets.js @@ -0,0 +1,284 @@ +#!/usr/bin/env node + +/** + * Orphaned Assets Analyzer + * + * Reviews the 91 orphaned assets and provides recommendations + */ + +const fs = require('fs').promises; +const path = require('path'); + +const orphanedAssets = { + bpmn: [ + 'documentation/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn', + 'documentation/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn', + 'documentation/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn', + 'documentation/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn', + 'documentation/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn', + 'documentation/reference/bpmn20/events/bpmn/escalation-boundary-event.bpmn', + 'documentation/reference/bpmn20/events/bpmn/escalation-end-event.bpmn', + 'documentation/reference/bpmn20/events/bpmn/escalation-example.bpmn', + 'documentation/reference/bpmn20/events/bpmn/escalation-intermediate-throw-event.bpmn', + 'documentation/reference/bpmn20/events/bpmn/escalation-start-event.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-conditional-parallel-boundary.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-conditional.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-conditional2.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-error.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-link.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-message-start-alternative.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-message-throwing.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-message.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-none-intermediate.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-none.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-signal-catching.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-signal-throwing.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative1.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative2.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-terminate.bpmn', + 'documentation/reference/bpmn20/events/bpmn/event-timer.bpmn', + 'documentation/reference/bpmn20/gateways/bpmn/event-based-gateway.bpmn', + 'documentation/reference/bpmn20/gateways/bpmn/exclusive-gateway.bpmn', + 'documentation/reference/bpmn20/gateways/bpmn/inclusive-gateway.bpmn', + 'documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_1.bpmn', + 'documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_2.bpmn', + 'documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_3.bpmn', + 'documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_4.bpmn', + 'documentation/reference/bpmn20/gateways/bpmn/parallel-gateway-unbalanced.bpmn', + 'documentation/reference/bpmn20/gateways/bpmn/parallel-gateway.bpmn', + 'documentation/reference/bpmn20/gateways/bpmn/sequence-flow-conditional.bpmn', + 'documentation/reference/bpmn20/gateways/bpmn/sequence-flow-parallel.bpmn', + 'documentation/reference/bpmn20/subprocesses/bpmn/business-transaction.bpmn', + 'documentation/reference/bpmn20/subprocesses/bpmn/call-activity.bpmn', + 'documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative1.bpmn', + 'documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative2.bpmn', + 'documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess.bpmn', + 'documentation/reference/bpmn20/subprocesses/bpmn/subprocess.bpmn', + 'documentation/reference/bpmn20/subprocesses/bpmn/subprocess_attached.bpmn', + 'documentation/reference/bpmn20/subprocesses/bpmn/subprocess_event.bpmn', + 'documentation/reference/bpmn20/subprocesses/bpmn/subprocess_expanded.bpmn', + 'documentation/reference/bpmn20/tasks/bpmn/compensation-marker.bpmn', + 'documentation/reference/bpmn20/tasks/bpmn/loop-alternative.bpmn', + 'documentation/reference/bpmn20/tasks/bpmn/multiple-instance-boundary.bpmn', + 'documentation/reference/bpmn20/tasks/bpmn/multiple-instance.bpmn', + 'documentation/user-guide/process-engine/bpmn/example1.bpmn', + 'documentation/user-guide/process-engine/bpmn/example2.bpmn', + 'documentation/user-guide/process-engine/bpmn/example3.bpmn', + 'documentation/user-guide/process-engine/bpmn/example4.bpmn', + 'documentation/user-guide/process-engine/bpmn/example5.bpmn', + 'documentation/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer1.bpmn', + 'documentation/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer2.bpmn', + 'documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation1.bpmn', + 'documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation2.bpmn', + 'documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation3.bpmn', + 'documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation4.bpmn', + 'documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation5.bpmn', + 'documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation6.bpmn', + 'documentation/user-guide/process-engine/bpmn/process-instance-migration/example1.bpmn', + 'documentation/user-guide/process-engine/bpmn/process-instance-migration/example2.bpmn', + 'documentation/user-guide/process-engine/bpmn/x_event-based-gateway.bpmn' + ], + + images: [ + 'documentation/img/docsVersionDropdown.png', + 'documentation/img/localeDropdown.png', + 'documentation/reference/dmn/decision-literal-expression/img/decision-id.png', + 'documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.png', + 'documentation/reference/dmn/decision-literal-expression/img/decision-name.png', + 'documentation/user-guide/ext-client/img/externalTaskCient.png', + 'documentation/user-guide/process-engine/img/process-engine-history.png', + 'documentation/webapps/cockpit/img/cockpit-edit-dmn-dialog.png', + 'documentation/webapps/cockpit/img/cockpit-plugins/architecture.png', + 'documentation/webapps/cockpit/img/migration/step4_error.png', + 'documentation/webapps/tasklist/img/tasklist-dashboard.png', + 'documentation/webapps/tasklist/img/tasklist-generic-form.png', + 'documentation/webapps/welcome/img/welcome-start-page-view.png', + 'get-started/archive/java-process-app/img/modeler-save-diagram.png', + 'get-started/archive/javaee7/img/javaee.png', + 'get-started/archive/javaee7/img/start-form.png', + 'get-started/archive/spring/img/Spring_Logo.png', + 'get-started/quick-start/img/modeler-dmn1.png', + 'get-started/quick-start/img/niall-says-congrats.png' + ], + + special: [ + 'documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn', + 'documentation/reference/dmn/drg/img/drg.dmn', + 'documentation/reference/dmn/decision-table/img/dish-table.svg', + 'documentation/reference/dmn/decision-table/img/map.js', + 'documentation/user-guide/process-engine/img/api.services.odg', + 'versions.json' + ] +}; + +async function fileExists(filePath) { + try { + await fs.access(path.join('docs', filePath)); + return true; + } catch { + return false; + } +} + +async function analyzeOrphanedAssets() { + console.log('🔍 Analyzing Orphaned Assets\n'); + console.log('=' .repeat(70)); + + // Analyze BPMN files + console.log('\n1️⃣ BPMN FILES (66 files)'); + console.log('-'.repeat(70)); + console.log('These appear to be example/reference BPMN diagrams.\n'); + + const bpmnCategories = { + events: orphanedAssets.bpmn.filter(f => f.includes('/events/')), + gateways: orphanedAssets.bpmn.filter(f => f.includes('/gateways/')), + subprocesses: orphanedAssets.bpmn.filter(f => f.includes('/subprocesses/')), + tasks: orphanedAssets.bpmn.filter(f => f.includes('/tasks/')), + migration: orphanedAssets.bpmn.filter(f => f.includes('/process-instance-migration/')), + other: orphanedAssets.bpmn.filter(f => + !f.includes('/events/') && + !f.includes('/gateways/') && + !f.includes('/subprocesses/') && + !f.includes('/tasks/') && + !f.includes('/process-instance-migration/') + ) + }; + + Object.entries(bpmnCategories).forEach(([category, files]) => { + if (files.length > 0) { + console.log(`\n ${category.toUpperCase()} (${files.length} files):`); + console.log(` Location: ${path.dirname(files[0]).replace('documentation/', '')}`); + console.log(` Examples: ${files.slice(0, 2).map(f => path.basename(f)).join(', ')}`); + } + }); + + console.log('\n 📋 RECOMMENDATION:'); + console.log(' ✅ KEEP these files - they are reference examples for BPMN documentation'); + console.log(' 📂 Move to: static/img/documentation/reference/bpmn20/examples/'); + console.log(' 📝 Consider adding download links in relevant documentation pages'); + + // Analyze images + console.log('\n\n2️⃣ IMAGE FILES (19 files)'); + console.log('-'.repeat(70)); + + const imageCategories = { + docusaurus: orphanedAssets.images.filter(f => f.includes('docsVersionDropdown') || f.includes('localeDropdown')), + dmn: orphanedAssets.images.filter(f => f.includes('/dmn/')), + webapps: orphanedAssets.images.filter(f => f.includes('/webapps/')), + getStarted: orphanedAssets.images.filter(f => f.includes('/get-started/')), + other: orphanedAssets.images.filter(f => + !f.includes('docsVersionDropdown') && + !f.includes('localeDropdown') && + !f.includes('/dmn/') && + !f.includes('/webapps/') && + !f.includes('/get-started/') + ) + }; + + Object.entries(imageCategories).forEach(([category, files]) => { + if (files.length > 0) { + console.log(`\n ${category.toUpperCase()} (${files.length} files):`); + files.forEach(f => { + console.log(` - ${f}`); + }); + } + }); + + console.log('\n 📋 RECOMMENDATION:'); + console.log(' ⚠️ REVIEW NEEDED:'); + console.log(' • Docusaurus UI images: Likely unused (old UI screenshots)'); + console.log(' • DMN images: May be alternate versions or deprecated'); + console.log(' • Webapp images: Could be old screenshots or deprecated features'); + console.log(' • Get-started images: Archive/legacy tutorial images'); + console.log(' ❓ Decision: Delete or move to archive?'); + + // Analyze special files + console.log('\n\n3️⃣ SPECIAL FILES (6 files)'); + console.log('-'.repeat(70)); + + for (const file of orphanedAssets.special) { + const ext = path.extname(file); + const basename = path.basename(file); + console.log(`\n ${basename} (${ext})`); + console.log(` Location: ${path.dirname(file)}`); + + if (basename === 'versions.json') { + console.log(' ⚠️ CRITICAL: This may be a Docusaurus versioning config file!'); + console.log(' 📋 RECOMMENDATION: EXCLUDE from migration or verify it\'s not needed'); + } else if (ext === '.dmn') { + console.log(' ℹ️ DMN decision model file (example/reference)'); + console.log(' 📋 RECOMMENDATION: Keep with BPMN examples'); + } else if (ext === '.odg') { + console.log(' ℹ️ OpenDocument Graphics (source file for diagrams)'); + console.log(' 📋 RECOMMENDATION: Keep as source file, or move to separate /src directory'); + } else if (ext === '.svg') { + console.log(' ℹ️ SVG image (might be generated from source)'); + console.log(' 📋 RECOMMENDATION: Keep if used in documentation'); + } else if (ext === '.js') { + console.log(' ℹ️ JavaScript utility file'); + console.log(' 📋 RECOMMENDATION: Review purpose, might be DMN table configuration'); + } + } + + // Summary and action items + console.log('\n\n' + '='.repeat(70)); + console.log('📊 SUMMARY & ACTION ITEMS'); + console.log('='.repeat(70)); + + console.log('\n✅ KEEP (Move to proper location):'); + console.log(' • 66 BPMN files → static/img/documentation/reference/examples/bpmn/'); + console.log(' • 2 DMN files → static/img/documentation/reference/examples/dmn/'); + console.log(' • 1 ODG file → static/img/documentation/sources/ (or keep with examples)'); + + console.log('\n❓ REVIEW & DECIDE:'); + console.log(' • 19 PNG files → Likely old/unused screenshots'); + console.log(' • 1 SVG file (dish-table.svg) → Check if referenced indirectly'); + console.log(' • 1 JS file (map.js) → Check if used by DMN documentation'); + + console.log('\n🚫 EXCLUDE FROM MIGRATION:'); + console.log(' • versions.json → Keep in docs/ root (verify first)'); + + console.log('\n\n💡 RECOMMENDED SCRIPT MODIFICATIONS:'); + console.log('─'.repeat(70)); + console.log('1. Exclude versions.json from migration'); + console.log('2. Change orphaned directory from "orphaned" to "examples"'); + console.log('3. Consider separate "sources" directory for .odg files'); + + console.log('\n\n📝 NEXT STEPS:'); + console.log('─'.repeat(70)); + console.log('1. Verify versions.json is not needed (check if file exists)'); + console.log('2. Review the 19 PNG files manually to confirm they can be archived/deleted'); + console.log('3. Update migration script with exclusions'); + console.log('4. Create post-migration script to move examples to better locations'); + console.log('5. Run migration with updated settings'); + + console.log('\n' + '='.repeat(70) + '\n'); +} + +// Check if versions.json exists +async function checkVersionsJson() { + console.log('\n🔍 Checking for versions.json...\n'); + + const locations = [ + 'docs/versions.json', + './versions.json', + 'versions.json' + ]; + + for (const loc of locations) { + const exists = await fileExists(loc); + console.log(` ${exists ? '✅' : '❌'} ${loc}`); + } + + console.log('\n'); +} + +async function main() { + await checkVersionsJson(); + await analyzeOrphanedAssets(); +} + +main().catch(err => { + console.error('Error:', err); + process.exit(1); +}); diff --git a/toolkit/check-broken-references.js b/toolkit/check-broken-references.js new file mode 100644 index 0000000..1cecc57 --- /dev/null +++ b/toolkit/check-broken-references.js @@ -0,0 +1,349 @@ +#!/usr/bin/env node + +/** + * Broken Asset Reference Checker + * + * Scans all markdown files and reports asset references that don't exist + */ + +const fs = require('fs').promises; +const path = require('path'); + +const CONFIG = { + docsPath: './docs', + staticPath: './static/img', + assetExtensions: [ + '.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.bmp', '.ico', + '.bpmn', '.dmn', '.cmmn', + '.pdf', '.odg', '.odt', + '.js', '.json', '.xml', '.csv', + ] +}; + +const report = { + mdFilesScanned: 0, + totalReferences: 0, + brokenReferences: [], + workingReferences: 0, + externalReferences: 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://')) { + continue; + } + + // Skip anchors and empty paths + if (assetPath.startsWith('#') || !assetPath.trim()) { + 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://')) { + 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/ + if (assetPath.startsWith('/img/')) { + const fullPath = path.join(CONFIG.staticPath, assetPath.replace('/img/', '')); + return { + exists: await fileExists(fullPath), + resolvedPath: fullPath + }; + } + + // 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 + }; + } + + return { + exists: await fileExists(assetPath), + resolvedPath: assetPath + }; +} + +/** + * 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()) { + if (entry.name.startsWith('_') || entry.name === 'node_modules') { + 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('}}')) { + continue; + } + + const check = await checkAssetExists(asset.path, filePath); + + if (!check.exists) { + report.brokenReferences.push({ + mdFile: filePath, + assetPath: asset.path, + resolvedPath: check.resolvedPath, + lineNumber: asset.lineNumber, + type: asset.type, + fullMatch: asset.fullMatch + }); + } else { + report.workingReferences++; + } + } + } 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 += `- **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}\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() { + console.log('🔍 Scanning for broken asset references...\n'); + + // Find all markdown files + console.log('Finding markdown files...'); + const mdFiles = await findMarkdownFiles(CONFIG.docsPath); + report.mdFilesScanned = mdFiles.length; + console.log(`Found ${mdFiles.length} markdown files\n`); + + // Check each file + console.log('Checking asset references...'); + for (const file of mdFiles) { + await checkMarkdownFile(file); + process.stdout.write('.'); + } + 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(`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`); + } else { + console.log('✅ No broken references found!\n'); + } +} + +main().catch(err => { + console.error('Fatal error:', err); + process.exit(1); +}); diff --git a/toolkit/count-files.js b/toolkit/count-files.js new file mode 100644 index 0000000..fa82cff --- /dev/null +++ b/toolkit/count-files.js @@ -0,0 +1,264 @@ +#!/usr/bin/env node + +/** + * File Counter Script (Files Only) + * + * Counts actual files by extension in specified directories + * Generates before/after comparison for migration verification + */ + +const fs = require('fs').promises; +const path = require('path'); + +const CONFIG = { + searchPaths: { + docs: './docs', + static: './static/img' + }, + outputFile: './toolkit/file-count.md', + // File extensions to track + extensions: [ + '.bpmn', '.dmn', '.cmmn', + '.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.bmp', '.ico', + '.pdf', '.odg', '.odt', + '.js', '.json', '.xml', '.csv', + '.md', '.mdx' + ] +}; + +/** + * Recursively count files with given extension in directory + */ +async function countFilesInDirectory(dir, ext) { + let count = 0; + const fileList = []; + + 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 node_modules and hidden directories + if (entry.name === 'node_modules' || entry.name.startsWith('.')) { + continue; + } + await search(fullPath); + } else if (entry.isFile() && entry.name.endsWith(ext)) { + count++; + fileList.push(fullPath); + } + } + } catch (err) { + // Ignore directory read errors + } + } + + try { + await fs.access(dir); + await search(dir); + } catch (err) { + // Directory doesn't exist + } + + return { count, fileList }; +} + +/** + * Generate markdown table + */ +function generateMarkdownTable(docsData, staticData, timestamp) { + let markdown = `# File Count Report\n\n`; + markdown += `**Generated:** ${timestamp}\n\n`; + + markdown += `## Summary\n\n`; + markdown += `| File Type | docs/ | static/img/ | Total |\n`; + markdown += `|-----------|-------|-------------|-------|\n`; + + // Collect all extensions that have files + const allExtensions = new Set([ + ...Object.keys(docsData), + ...Object.keys(staticData) + ]); + + const sortedExtensions = Array.from(allExtensions).sort((a, b) => { + const aTotal = (docsData[a]?.count || 0) + (staticData[a]?.count || 0); + const bTotal = (docsData[b]?.count || 0) + (staticData[b]?.count || 0); + return bTotal - aTotal; + }); + + let totalDocs = 0; + let totalStatic = 0; + + for (const ext of sortedExtensions) { + const docsCount = docsData[ext]?.count || 0; + const staticCount = staticData[ext]?.count || 0; + const total = docsCount + staticCount; + + totalDocs += docsCount; + totalStatic += staticCount; + + if (total > 0) { + markdown += `| ${ext} | ${docsCount} | ${staticCount} | ${total} |\n`; + } + } + + markdown += `| **TOTAL** | **${totalDocs}** | **${totalStatic}** | **${totalDocs + totalStatic}** |\n`; + + markdown += `\n## Details\n\n`; + + for (const ext of sortedExtensions) { + const docsFiles = docsData[ext]?.fileList || []; + const staticFiles = staticData[ext]?.fileList || []; + + if (docsFiles.length > 0 || staticFiles.length > 0) { + markdown += `### ${ext}\n\n`; + + if (docsFiles.length > 0) { + markdown += `**In docs/ (${docsFiles.length} files):**\n\n`; + + if (docsFiles.length <= 20) { + docsFiles.forEach(f => markdown += `- ${f}\n`); + } else { + docsFiles.slice(0, 10).forEach(f => markdown += `- ${f}\n`); + markdown += `- ... (${docsFiles.length - 20} more files)\n`; + docsFiles.slice(-10).forEach(f => markdown += `- ${f}\n`); + } + markdown += `\n`; + } + + if (staticFiles.length > 0) { + markdown += `**In static/img/ (${staticFiles.length} files):**\n\n`; + + if (staticFiles.length <= 20) { + staticFiles.forEach(f => markdown += `- ${f}\n`); + } else { + staticFiles.slice(0, 10).forEach(f => markdown += `- ${f}\n`); + markdown += `- ... (${staticFiles.length - 20} more files)\n`; + staticFiles.slice(-10).forEach(f => markdown += `- ${f}\n`); + } + markdown += `\n`; + } + } + } + + return markdown; +} + +/** + * Main execution + */ +async function main() { + console.log('📊 Counting files in codebase...\n'); + + const timestamp = new Date().toISOString().replace('T', ' ').substring(0, 19); + + const docsData = {}; + const staticData = {}; + + console.log('Searching in docs/...'); + for (const ext of CONFIG.extensions) { + process.stdout.write(` ${ext}... `); + const result = await countFilesInDirectory(CONFIG.searchPaths.docs, ext); + docsData[ext] = result; + console.log(`${result.count} files`); + } + + console.log('\nSearching in static/img/...'); + for (const ext of CONFIG.extensions) { + process.stdout.write(` ${ext}... `); + const result = await countFilesInDirectory(CONFIG.searchPaths.static, ext); + staticData[ext] = result; + console.log(`${result.count} files`); + } + + // Generate markdown + const markdown = generateMarkdownTable(docsData, staticData, timestamp); + + // Ensure output directory exists + const outputDir = path.dirname(CONFIG.outputFile); + try { + await fs.mkdir(outputDir, { recursive: true }); + } catch (err) { + // Directory might already exist + } + + // Write to file + await fs.writeFile(CONFIG.outputFile, markdown, 'utf8'); + + console.log('\n✅ Report generated!'); + console.log(`📄 Saved to: ${CONFIG.outputFile}\n`); + + // Print summary to console + console.log('='.repeat(70)); + console.log('SUMMARY'); + console.log('='.repeat(70)); + console.log('\nFile Type docs/ static/img/ Total'); + console.log('-'.repeat(55)); + + // Calculate totals + let totalDocs = 0; + let totalStatic = 0; + + const allExtensions = new Set([ + ...Object.keys(docsData), + ...Object.keys(staticData) + ]); + + const sortedExtensions = Array.from(allExtensions).sort((a, b) => { + const aTotal = (docsData[a]?.count || 0) + (staticData[a]?.count || 0); + const bTotal = (docsData[b]?.count || 0) + (staticData[b]?.count || 0); + return bTotal - aTotal; + }); + + sortedExtensions.forEach(ext => { + const docsCount = docsData[ext]?.count || 0; + const staticCount = staticData[ext]?.count || 0; + const total = docsCount + staticCount; + + totalDocs += docsCount; + totalStatic += staticCount; + + if (total > 0) { + const extStr = ext.padEnd(15); + const docsStr = docsCount.toString().padStart(8); + const staticStr = staticCount.toString().padStart(13); + const totalStr = total.toString().padStart(9); + console.log(`${extStr} ${docsStr} ${staticStr} ${totalStr}`); + } + }); + + console.log('-'.repeat(55)); + const docsStr = totalDocs.toString().padStart(8); + const staticStr = totalStatic.toString().padStart(13); + const totalStr = (totalDocs + totalStatic).toString().padStart(9); + console.log(`${'TOTAL'.padEnd(15)} ${docsStr} ${staticStr} ${totalStr}`); + + console.log('='.repeat(70) + '\n'); + + // Migration status check + const assetExtensions = ['.bpmn', '.dmn', '.png', '.svg', '.jpg', '.jpeg', '.gif', '.odg', '.js']; + const assetsInDocs = assetExtensions.reduce((sum, ext) => sum + (docsData[ext]?.count || 0), 0); + const assetsInStatic = assetExtensions.reduce((sum, ext) => sum + (staticData[ext]?.count || 0), 0); + + if (assetsInDocs > 0 && assetsInStatic === 0) { + console.log('📋 Status: BEFORE migration'); + console.log(` ${assetsInDocs} asset files in docs/ (ready to migrate)\n`); + } else if (assetsInDocs === 0 && assetsInStatic > 0) { + console.log('✅ Status: AFTER migration'); + console.log(` ${assetsInStatic} asset files in static/img/ (migration complete)\n`); + } else if (assetsInDocs > 0 && assetsInStatic > 0) { + console.log('⚠️ Status: PARTIAL migration'); + console.log(` ${assetsInDocs} assets still in docs/`); + console.log(` ${assetsInStatic} assets in static/img/\n`); + } else { + console.log('ℹ️ Status: No asset files found\n'); + } +} + +main().catch(err => { + console.error('Fatal error:', err); + process.exit(1); +}); diff --git a/toolkit/fix-scripts/fix-final-2.js b/toolkit/fix-scripts/fix-final-2.js new file mode 100644 index 0000000..141a82c --- /dev/null +++ b/toolkit/fix-scripts/fix-final-2.js @@ -0,0 +1,71 @@ +#!/usr/bin/env node + +/** + * Fix Last 2 References - Plugin Overlay Images + * + * Files are in .../extend/ directory, not .../plugin-points/ + */ + +const fs = require('fs').promises; + +async function fixLastTwo() { + const file = 'docs/documentation/webapps/cockpit/extend/plugins.md'; + + console.log('🔧 Fixing last 2 broken references...\n'); + console.log(`📝 File: ${file}\n`); + + try { + let content = await fs.readFile(file, 'utf8'); + let changes = 0; + + // Fix 1: case-definition + const oldPath1 = '/img/documentation/webapps/cockpit/plugin-points/plugin-point-case-definition-diagram-overlay.png'; + const newPath1 = '/img/documentation/webapps/cockpit/extend/plugin-point-case-definition-diagram-overlay.png'; + + if (content.includes(oldPath1)) { + content = content.replace( + new RegExp(oldPath1.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), + newPath1 + ); + changes++; + console.log('✅ Fixed: plugin-point-case-definition-diagram-overlay.png'); + console.log(` Old: .../plugin-points/...`); + console.log(` New: .../extend/...\n`); + } + + // Fix 2: case-instance + const oldPath2 = '/img/documentation/webapps/cockpit/plugin-points/plugin-point-case-instance-diagram-overlay.png'; + const newPath2 = '/img/documentation/webapps/cockpit/extend/plugin-point-case-instance-diagram-overlay.png'; + + if (content.includes(oldPath2)) { + content = content.replace( + new RegExp(oldPath2.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), + newPath2 + ); + changes++; + console.log('✅ Fixed: plugin-point-case-instance-diagram-overlay.png'); + console.log(` Old: .../plugin-points/...`); + console.log(` New: .../extend/...\n`); + } + + if (changes > 0) { + await fs.writeFile(file, content, 'utf8'); + console.log('=' .repeat(70)); + console.log(`✅ SUCCESS! Fixed ${changes} reference(s)`); + console.log('=' .repeat(70)); + console.log('\nNext steps:'); + console.log('1. Run: node check-broken-references.js'); + console.log('2. Should show: Broken references: 0 ✅'); + console.log('3. Test: npm start'); + console.log('4. Should build with 0 errors! 🎉\n'); + } else { + console.log('⚠️ No changes needed - references may already be fixed\n'); + } + + } catch (err) { + console.error(`❌ Error: ${err.message}`); + process.exit(1); + } +} + +fixLastTwo(); diff --git a/toolkit/fix-scripts/fix-malformed-images.js b/toolkit/fix-scripts/fix-malformed-images.js new file mode 100644 index 0000000..2e797f2 --- /dev/null +++ b/toolkit/fix-scripts/fix-malformed-images.js @@ -0,0 +1,199 @@ +#!/usr/bin/env node + +/** + * Fix Malformed Image References + * + * This script fixes various malformed image references found in the documentation: + * 1. Images with trailing quotes and extra attributes + * 2. HTML img tags that should be markdown + * 3. Missing closing parentheses + */ + +const fs = require('fs').promises; + +const fixes = [ + { + file: 'docs/documentation/reference/forms/embedded-forms/javascript/examples.md', + description: 'Angular template - leave as-is (not a real image reference)', + action: 'skip' // This is actually Angular template syntax, not a broken image + }, + { + file: 'docs/documentation/user-guide/process-engine/external-tasks.md', + description: 'Fix unclosed markdown image with extra quote', + find: '![Example img](./img/external-task-long-polling.png" alt="Long polling to fetch and lock external tasks', + replace: '![Long polling to fetch and lock external tasks](./img/external-task-long-polling.png)' + }, + { + file: 'docs/documentation/user-guide/process-engine/transactions-in-processes.md', + description: 'Convert HTML img to markdown (already handled by migration script)', + action: 'skip' // Migration script handles this correctly + }, + { + file: 'docs/documentation/user-guide/spring-framework-integration/transactions.md', + description: 'Code example - leave as-is (not an image reference)', + action: 'skip' // This is Java code, not an image reference + }, + { + file: 'docs/documentation/user-guide/testing/index.md', + description: 'Convert HTML img tags to markdown', + fixes: [ + { + find: '', + replace: '![API Test Debugging](img/api-test-debug-breakpoint.png)' + }, + { + find: '', + replace: '![API Test Debugging](img/api-test-debug-view.png)' + }, + { + find: '', + replace: '![API Test Debugging](img/api-test-debug-start-h2-server.png)' + }, + { + find: '', + replace: '![API Test Debugging](img/api-test-debug-start-h2-server-2.png)' + }, + { + find: '', + replace: '![API Test Debugging](img/api-test-debug-h2-login.png)' + }, + { + find: '', + replace: '![API Test Debugging](img/api-test-debug-h2-tables.png)' + }, + { + find: '', + replace: '![Testing Scopes](img/test-scopes.png)' + } + ] + }, + { + file: 'docs/documentation/webapps/cockpit/batch/batch-operation.md', + description: 'Fix markdown images with extra quotes and attributes', + fixes: [ + { + find: '![Example img](./../img/batch/batch_operation_confirmation.png" alt="Batch Operation Confirmation" caption="', + replace: '![Batch Operation Confirmation](./../img/batch/batch_operation_confirmation.png)' + }, + { + find: '![Example img](./../img/batch/batch_operation_result.png" alt="Batch Operation Result" caption="', + replace: '![Batch Operation Result](./../img/batch/batch_operation_result.png)' + } + ] + }, + { + file: 'docs/documentation/webapps/cockpit/bpmn/correlate-message.md', + description: 'Fix markdown images with extra quotes and attributes', + fixes: [ + { + find: '![Example img](./../img/correlate-message/batch-operation.png" alt="Correlate Message Batch Operation" caption="', + replace: '![Correlate Message Batch Operation](./../img/correlate-message/batch-operation.png)' + }, + { + find: '![Example img](./../img/correlate-message/process-action.png" alt="Process action to correlate a message" caption="Process action to correlate a message', + replace: '![Process action to correlate a message](./../img/correlate-message/process-action.png)' + }, + { + find: '![Example img](./../img/correlate-message/modal-dialog.png" alt="Modal dialog to correlate a message" caption="Modal dialog to correlate a message', + replace: '![Modal dialog to correlate a message](./../img/correlate-message/modal-dialog.png)' + }, + { + find: '![Example img](./../img/correlate-message/diagram-overlay-button.png" alt="Diagram overlay button" caption="Diagram overlay button', + replace: '![Diagram overlay button](./../img/correlate-message/diagram-overlay-button.png)' + } + ] + } +]; + +async function fixFile(fix) { + if (fix.action === 'skip') { + console.log(`⊘ Skipping ${fix.file}: ${fix.description}`); + return { skipped: true }; + } + + try { + let content = await fs.readFile(fix.file, 'utf8'); + let modified = false; + let changesCount = 0; + + if (fix.fixes) { + // Multiple fixes in one file + for (const subFix of fix.fixes) { + if (content.includes(subFix.find)) { + content = content.replace(subFix.find, subFix.replace); + modified = true; + changesCount++; + } + } + } else if (fix.find && fix.replace) { + // Single fix + if (content.includes(fix.find)) { + content = content.replace(fix.find, fix.replace); + modified = true; + changesCount = 1; + } + } + + if (modified) { + await fs.writeFile(fix.file, content, 'utf8'); + console.log(`✓ Fixed ${fix.file}: ${fix.description} (${changesCount} changes)`); + return { fixed: true, changes: changesCount }; + } else { + console.log(`⚠ No changes needed for ${fix.file}: pattern not found`); + return { unchanged: true }; + } + } catch (err) { + console.error(`✗ Error processing ${fix.file}: ${err.message}`); + return { error: true, message: err.message }; + } +} + +async function main() { + console.log('🔧 Fixing malformed image references...\n'); + + const results = { + fixed: 0, + skipped: 0, + unchanged: 0, + errors: 0, + totalChanges: 0 + }; + + for (const fix of fixes) { + const result = await fixFile(fix); + + if (result.fixed) { + results.fixed++; + results.totalChanges += result.changes; + } else if (result.skipped) { + results.skipped++; + } else if (result.unchanged) { + results.unchanged++; + } else if (result.error) { + results.errors++; + } + } + + console.log('\n' + '='.repeat(60)); + console.log('SUMMARY'); + console.log('='.repeat(60)); + console.log(`Files fixed: ${results.fixed}`); + console.log(`Files skipped: ${results.skipped}`); + console.log(`Files unchanged: ${results.unchanged}`); + console.log(`Errors: ${results.errors}`); + console.log(`Total changes made: ${results.totalChanges}`); + console.log('='.repeat(60) + '\n'); + + if (results.fixed > 0) { + console.log('✅ Image references have been fixed!'); + console.log('Next steps:'); + console.log('1. Review the changes with git diff'); + console.log('2. Run the migration script again in dry-run mode'); + console.log('3. If everything looks good, run the actual migration\n'); + } +} + +main().catch(err => { + console.error('Fatal error:', err); + process.exit(1); +}); diff --git a/toolkit/fix-scripts/fix-svg-paths.js b/toolkit/fix-scripts/fix-svg-paths.js new file mode 100644 index 0000000..9a03aae --- /dev/null +++ b/toolkit/fix-scripts/fix-svg-paths.js @@ -0,0 +1,193 @@ +#!/usr/bin/env node + +/** + * Fix Broken References - Correct Paths Edition + * + * Updates markdown references to match where files actually are after migration. + * Files were moved to static/img/documentation/reference/bpmn20/ (without symbols/events subdirs) + */ + +const fs = require('fs').promises; + +const fixes = [ + // Fix 1: variables-3.png + { + file: 'docs/documentation/user-guide/process-engine/variables.md', + description: 'Fix variables-3.png reference', + replacements: [ + { + find: './img/variables-3.png', + replace: '/img/documentation/user-guide/process-engine/variables-3.png' + } + ] + }, + + // Fix 2-3: Plugin overlay images + { + file: 'docs/documentation/webapps/cockpit/extend/plugins.md', + description: 'Fix plugin-point overlay image references', + replacements: [ + { + find: './../img/plugin-points/plugin-point-case-definition-diagram-overlay.png', + replace: '/img/documentation/webapps/cockpit/plugin-points/plugin-point-case-definition-diagram-overlay.png' + }, + { + find: './../img/plugin-points/plugin-point-case-instance-diagram-overlay.png', + replace: '/img/documentation/webapps/cockpit/plugin-points/plugin-point-case-instance-diagram-overlay.png' + } + ] + }, + + // Fix 4: start-form-generic.png + { + file: 'docs/get-started/quick-start/user-task.md', + description: 'Fix start-form-generic.png reference', + replacements: [ + { + find: './img/start-form-generic.png', + replace: '/img/get-started/quick-start/start-form-generic.png' + } + ] + }, + + // Fix 5-16: All 12 event symbol SVGs - NOTE: NO symbols/events/ in path! + { + file: 'docs/documentation/reference/bpmn20/index.md', + description: 'Fix 12 event symbol SVG references (files are at bpmn20/ root, not in symbols/events/)', + replacements: [ + { + find: './img/symbols/events/message_start_event.svg', + replace: '/img/documentation/reference/bpmn20/message_start_event.svg' + }, + { + find: './img/symbols/events/message_intermediate_catch_event.svg', + replace: '/img/documentation/reference/bpmn20/message_intermediate_catch_event.svg' + }, + { + find: './img/symbols/events/timer_start_event.svg', + replace: '/img/documentation/reference/bpmn20/timer_start_event.svg' + }, + { + find: './img/symbols/events/timer_intermediate_event.svg', + replace: '/img/documentation/reference/bpmn20/timer_intermediate_event.svg' + }, + { + find: './img/symbols/events/conditional_start_event.svg', + replace: '/img/documentation/reference/bpmn20/conditional_start_event.svg' + }, + { + find: './img/symbols/events/conditional_intermediate_catch_event.svg', + replace: '/img/documentation/reference/bpmn20/conditional_intermediate_catch_event.svg' + }, + { + find: './img/symbols/events/signal_start_event.svg', + replace: '/img/documentation/reference/bpmn20/signal_start_event.svg' + }, + { + find: './img/symbols/events/signal_intermediate_catch_event.svg', + replace: '/img/documentation/reference/bpmn20/signal_intermediate_catch_event.svg' + }, + { + find: './img/symbols/events/multiple_start_event.svg', + replace: '/img/documentation/reference/bpmn20/multiple_start_event.svg' + }, + { + find: './img/symbols/events/multiple_intermediate_catch_event.svg', + replace: '/img/documentation/reference/bpmn20/multiple_intermediate_catch_event.svg' + }, + { + find: './img/symbols/events/multiple_parallel_start_event.svg', + replace: '/img/documentation/reference/bpmn20/multiple_parallel_start_event.svg' + }, + { + find: './img/symbols/events/multiple_parallel_catch_event.svg', + replace: '/img/documentation/reference/bpmn20/multiple_parallel_catch_event.svg' + } + ] + } +]; + +async function fixFile(fix) { + try { + console.log(`\n📝 Processing: ${fix.file}`); + console.log(` ${fix.description}`); + + let content = await fs.readFile(fix.file, 'utf8'); + let modified = false; + let changesCount = 0; + + for (const replacement of fix.replacements) { + const findRegex = new RegExp( + replacement.find.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), + 'g' + ); + + if (content.includes(replacement.find)) { + content = content.replace(findRegex, replacement.replace); + modified = true; + changesCount++; + console.log(` ✅ ${replacement.find.substring(0, 40)}...`); + } + } + + if (modified) { + await fs.writeFile(fix.file, content, 'utf8'); + console.log(` ✨ Saved ${changesCount} change(s)`); + return { fixed: true, changes: changesCount }; + } else { + console.log(` ⚠️ No changes needed`); + return { unchanged: true }; + } + } catch (err) { + console.error(` ❌ Error: ${err.message}`); + return { error: true, message: err.message }; + } +} + +async function main() { + console.log('🔧 Fix Broken References - Correct Paths'); + console.log('=' .repeat(70)); + console.log('Updating markdown to match actual file locations...\n'); + + const results = { + fixed: 0, + unchanged: 0, + errors: 0, + totalChanges: 0 + }; + + for (const fix of fixes) { + const result = await fixFile(fix); + + if (result.fixed) { + results.fixed++; + results.totalChanges += result.changes; + } else if (result.unchanged) { + results.unchanged++; + } else if (result.error) { + results.errors++; + } + } + + console.log('\n' + '='.repeat(70)); + console.log('SUMMARY'); + console.log('='.repeat(70)); + console.log(`Files fixed: ${results.fixed}`); + console.log(`Files unchanged: ${results.unchanged}`); + console.log(`Errors: ${results.errors}`); + console.log(`Total changes: ${results.totalChanges}`); + console.log('='.repeat(70)); + + if (results.fixed > 0) { + console.log('\n✅ All references fixed!'); + console.log('\nNext steps:'); + console.log('1. Run: node check-broken-references.js'); + console.log('2. Test: npm start'); + console.log('3. Should build with 0 errors!\n'); + } +} + +main().catch(err => { + console.error('Fatal error:', err); + process.exit(1); +}); diff --git a/toolkit/migrate-assets-enhanced-UPDATED.js b/toolkit/migrate-assets-enhanced-UPDATED.js new file mode 100644 index 0000000..df47761 --- /dev/null +++ b/toolkit/migrate-assets-enhanced-UPDATED.js @@ -0,0 +1,730 @@ +#!/usr/bin/env node + +/** + * Enhanced Docusaurus Asset Migration Script + * + * This script migrates ALL assets in two passes: + * 1. REFERENCED assets: Found via markdown/HTML references + * 2. ORPHANED assets: Found in img/bpmn directories but not referenced + * + * CRITICAL: This moves files (not copies), so original directories become empty + */ + +const fs = require('fs').promises; +const path = require('path'); + +// Configuration +const CONFIG = { + docsPath: './docs', + staticPath: './static/img', + backupPath: './backup-assets', + dryRun: false, // ALWAYS start with dry run! + + // All file extensions to migrate + assetExtensions: [ + // Images + '.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.bmp', '.ico', + // BPMN & Process files + '.bpmn', '.dmn', '.cmmn', + // Documents (not markdown - those stay in docs/) + '.pdf', '.odg', '.odt', + // Scripts & Data + '.js', '.json', '.xml', '.csv', + // Note: .md and .mdx are intentionally excluded + ], + + // Directories that commonly contain assets + assetDirectoryNames: ['img', 'bpmn', 'images', 'assets'], + + // Sidebar sections for organization + sidebarSections: { + 'get-started': ['docs/get-started'], + 'documentation': ['docs/documentation'], + 'security': ['docs/security'] + } +}; + +// Track all changes for reporting +const report = { + filesScanned: 0, + + // Pass 1: Referenced assets + referencedAssetsFound: 0, + referencedAssetsMoved: 0, + + // Pass 2: Orphaned assets + orphanedAssetsFound: 0, + orphanedAssetsMoved: 0, + + filesUpdated: 0, + errors: [], + warnings: [], + assetsByType: {}, + + // Detailed lists + referencedAssets: [], + orphanedAssets: [] +}; + +/** + * Check if file is an asset we should migrate + */ +function isAssetFile(filename) { + const ext = path.extname(filename).toLowerCase(); + const basename = path.basename(filename); + + // Exclude Docusaurus configuration files + if (basename === 'versions.json') { + return false; + } + + return CONFIG.assetExtensions.includes(ext); +} + +/** + * Check if directory name suggests it contains assets + */ +function isAssetDirectory(dirname) { + return CONFIG.assetDirectoryNames.includes(dirname.toLowerCase()); +} + +/** + * Determine which sidebar section a file belongs to + */ +function getSidebarSection(filePath) { + const normalizedPath = filePath.replace(/\\/g, '/'); + + if (normalizedPath.includes('docs/get-started')) { + return 'get-started'; + } + if (normalizedPath.includes('docs/documentation')) { + return 'documentation'; + } + if (normalizedPath.includes('docs/security')) { + return 'security'; + } + + return 'shared'; +} + +/** + * Extract all 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]; + + // Skip external URLs + if (assetPath.startsWith('http://') || assetPath.startsWith('https://')) { + continue; + } + + // Skip anchors and empty paths + if (assetPath.startsWith('#') || !assetPath.trim()) { + 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: 'markdown' + }); + } + } + + // Match HTML img/a tags + const htmlRegex = /<(?:img|a)[^>]+(?:src|href)=["']([^"']+)["'][^>]*>/g; + + while ((match = htmlRegex.exec(content)) !== null) { + const assetPath = match[1]; + + if (assetPath.startsWith('http://') || assetPath.startsWith('https://')) { + continue; + } + + const hasAssetExtension = CONFIG.assetExtensions.some(ext => + assetPath.toLowerCase().includes(ext) + ); + + if (hasAssetExtension) { + assets.push({ + fullMatch: match[0], + path: assetPath, + type: 'html' + }); + } + } + + // Match imports + const importRegex = /import\s+(\w+)\s+from\s+['"]([^'"]+)['"];?/g; + + while ((match = importRegex.exec(content)) !== null) { + const assetPath = match[2]; + + if (isAssetFile(assetPath)) { + assets.push({ + fullMatch: match[0], + importName: match[1], + path: assetPath, + type: 'import' + }); + } + } + + return assets; +} + +/** + * Resolve asset path to absolute filesystem path + */ +function resolveAssetPath(assetPath, mdFilePath) { + // Already absolute path from /img/ + if (assetPath.startsWith('/img/')) { + return path.join(CONFIG.staticPath, assetPath.replace('/img/', '')); + } + + // Relative path + if (!path.isAbsolute(assetPath)) { + const mdDir = path.dirname(mdFilePath); + return path.resolve(mdDir, assetPath); + } + + return assetPath; +} + +/** + * Generate new organized path for an asset + */ +function getNewAssetPath(oldPath, sidebarSection, mdFilePath) { + const ext = path.extname(oldPath); + const basename = path.basename(oldPath, ext); + + // Create subfolder structure based on doc's location within section + const normalizedMdPath = mdFilePath.replace(/\\/g, '/'); + + let subPath = ''; + if (sidebarSection !== 'shared') { + const sectionPrefix = `docs/${sidebarSection}/`; + const sectionIndex = normalizedMdPath.indexOf(sectionPrefix); + + if (sectionIndex !== -1) { + const pathAfterSection = normalizedMdPath.substring(sectionIndex + sectionPrefix.length); + const docParts = path.dirname(pathAfterSection).split('/').filter(p => p && p !== '.'); + subPath = docParts.join('/'); + } + } + + // Build new path + let newPath; + if (subPath) { + newPath = path.join(CONFIG.staticPath, sidebarSection, subPath, `${basename}${ext}`); + } else { + newPath = path.join(CONFIG.staticPath, sidebarSection, `${basename}${ext}`); + } + + return newPath; +} + +/** + * Generate path for orphaned asset (no markdown reference) + */ +function getOrphanedAssetPath(oldPath) { + const normalizedPath = oldPath.replace(/\\/g, '/'); + const sidebarSection = getSidebarSection(normalizedPath); + + // Extract the relative path from the section root + let relativePath = ''; + + if (normalizedPath.includes('docs/get-started')) { + relativePath = normalizedPath.split('docs/get-started/')[1]; + } else if (normalizedPath.includes('docs/documentation')) { + relativePath = normalizedPath.split('docs/documentation/')[1]; + } else if (normalizedPath.includes('docs/security')) { + relativePath = normalizedPath.split('docs/security/')[1]; + } else { + relativePath = path.basename(oldPath); + } + + // Build new path maintaining directory structure + // Use 'examples' instead of 'orphaned' for BPMN/DMN reference files + return path.join(CONFIG.staticPath, sidebarSection, 'examples', relativePath); +} + +/** + * Convert absolute filesystem path to docusaurus /img/ reference + */ +function getDocusaurusPath(absolutePath) { + const relativePath = path.relative(CONFIG.staticPath, absolutePath); + return '/img/' + relativePath.replace(/\\/g, '/'); +} + +/** + * Check if file exists + */ +async function fileExists(filePath) { + try { + await fs.access(filePath); + return true; + } catch { + return false; + } +} + +/** + * Ensure directory exists + */ +async function ensureDir(dirPath) { + try { + await fs.mkdir(dirPath, { recursive: true }); + } catch (err) { + if (err.code !== 'EEXIST') throw err; + } +} + +/** + * Recursively find all markdown files + */ +async function findMarkdownFiles(dir) { + const files = []; + + try { + const entries = await fs.readdir(dir, { withFileTypes: true }); + + for (const entry of entries) { + const fullPath = path.join(dir, entry.name); + + if (entry.isDirectory()) { + if (entry.name.startsWith('_') || entry.name === 'node_modules') { + continue; + } + files.push(...await findMarkdownFiles(fullPath)); + } else if (entry.isFile()) { + if (entry.name.startsWith('_')) { + continue; + } + if (entry.name.match(/\.(md|mdx)$/)) { + files.push(fullPath); + } + } + } + } catch (err) { + report.errors.push(`Error reading directory ${dir}: ${err.message}`); + } + + return files; +} + +/** + * Recursively find all asset files in docs/ + */ +async function findAllAssets(dir, foundAssets = new Set()) { + const assets = []; + + try { + const entries = await fs.readdir(dir, { withFileTypes: true }); + + for (const entry of entries) { + const fullPath = path.join(dir, entry.name); + + if (entry.isDirectory()) { + if (entry.name.startsWith('_') || entry.name === 'node_modules') { + continue; + } + assets.push(...await findAllAssets(fullPath, foundAssets)); + } else if (entry.isFile() && isAssetFile(entry.name)) { + // Normalize path for comparison (absolute path with forward slashes) + const normalizedPath = path.resolve(fullPath).replace(/\\/g, '/'); + + // Only add if not already found in pass 1 + if (!foundAssets.has(normalizedPath)) { + assets.push(fullPath); + } + } + } + } catch (err) { + report.errors.push(`Error scanning directory ${dir}: ${err.message}`); + } + + return assets; +} + +/** + * Move file from source to destination (copy then delete source) + */ +async function moveFile(sourcePath, destPath) { + try { + await ensureDir(path.dirname(destPath)); + + if (CONFIG.dryRun) { + return await fileExists(sourcePath); + } + + // Copy the file + await fs.copyFile(sourcePath, destPath); + + // Delete the source file (this completes the "move") + await fs.unlink(sourcePath); + + return true; + } catch (err) { + report.errors.push(`Failed to move ${sourcePath} to ${destPath}: ${err.message}`); + return false; + } +} + +/** + * PASS 1: Process referenced assets in markdown files + */ +async function processMarkdownFile(filePath, referencedAssets) { + try { + const content = await fs.readFile(filePath, 'utf8'); + const assets = extractAssetReferences(content, filePath); + + if (assets.length === 0) { + return { updated: false }; + } + + report.referencedAssetsFound += assets.length; + + const sidebarSection = getSidebarSection(filePath); + let updatedContent = content; + const assetChanges = []; + + for (const asset of assets) { + const oldAbsolutePath = resolveAssetPath(asset.path, filePath); + + // Track this asset as referenced (use absolute path with forward slashes) + const normalizedPath = path.resolve(oldAbsolutePath).replace(/\\/g, '/'); + referencedAssets.add(normalizedPath); + + // Check if asset file exists + if (!await fileExists(oldAbsolutePath)) { + if (asset.path.includes('{{') || asset.path.includes('}}')) { + continue; + } + report.warnings.push(`Asset not found: ${asset.path} (referenced in ${filePath})`); + continue; + } + + // Track asset types + const ext = path.extname(oldAbsolutePath); + report.assetsByType[ext] = (report.assetsByType[ext] || 0) + 1; + + // Generate new organized path + const newAbsolutePath = getNewAssetPath(oldAbsolutePath, sidebarSection, filePath); + + // Skip if already in correct location + if (oldAbsolutePath === newAbsolutePath) { + continue; + } + + // Move asset file + const moved = await moveFile(oldAbsolutePath, newAbsolutePath); + if (moved) { + report.referencedAssetsMoved++; + report.referencedAssets.push({ + old: oldAbsolutePath, + new: newAbsolutePath, + referencedBy: filePath + }); + } + + // Update reference in content + const newDocusaurusPath = getDocusaurusPath(newAbsolutePath); + + if (asset.type === 'markdown') { + const newReference = asset.fullMatch.replace(asset.path, newDocusaurusPath); + updatedContent = updatedContent.replace(asset.fullMatch, newReference); + } else if (asset.type === 'html') { + const newReference = asset.fullMatch.replace(asset.path, newDocusaurusPath); + updatedContent = updatedContent.replace(asset.fullMatch, newReference); + } else if (asset.type === 'import') { + const relativeNewPath = path.relative(path.dirname(filePath), newAbsolutePath); + const newImport = `import ${asset.importName} from '${relativeNewPath.replace(/\\/g, '/')}';`; + updatedContent = updatedContent.replace(asset.fullMatch, newImport); + } + + assetChanges.push({ + old: asset.path, + new: newDocusaurusPath + }); + } + + // Write updated content + if (updatedContent !== content && !CONFIG.dryRun) { + await fs.writeFile(filePath, updatedContent, 'utf8'); + report.filesUpdated++; + } + + return { + updated: updatedContent !== content, + changes: assetChanges + }; + + } catch (err) { + report.errors.push(`Error processing ${filePath}: ${err.message}`); + return { updated: false }; + } +} + +/** + * PASS 2: Process orphaned assets (not referenced in any markdown) + */ +async function processOrphanedAssets(referencedAssets) { + console.log('\n=== PASS 2: Scanning for orphaned assets ===\n'); + + const allAssets = await findAllAssets(CONFIG.docsPath, referencedAssets); + report.orphanedAssetsFound = allAssets.length; + + if (allAssets.length === 0) { + console.log('✓ No orphaned assets found - all assets are referenced!'); + return; + } + + console.log(`Found ${allAssets.length} orphaned assets (not referenced in markdown):`); + + for (const assetPath of allAssets) { + const ext = path.extname(assetPath); + const relativePath = path.relative(CONFIG.docsPath, assetPath); + + // Generate destination path + const newPath = getOrphanedAssetPath(assetPath); + + // Move the file + const moved = await moveFile(assetPath, newPath); + if (moved) { + report.orphanedAssetsMoved++; + report.orphanedAssets.push({ + old: assetPath, + new: newPath, + type: ext + }); + console.log(` ${relativePath} → ${path.relative(CONFIG.staticPath, newPath)}`); + } + } +} + +/** + * Create backup + */ +async function createBackup() { + if (CONFIG.dryRun) return; + + try { + console.log('Creating backup...'); + await ensureDir(CONFIG.backupPath); + + if (await fileExists(CONFIG.staticPath)) { + const cpCommand = require('child_process').execSync; + cpCommand(`cp -r "${CONFIG.staticPath}" "${CONFIG.backupPath}/"`); + console.log(`✓ Backup created at ${CONFIG.backupPath}`); + } + } catch (err) { + console.error('Warning: Could not create backup:', err.message); + } +} + +/** + * Print final report + */ +function printReport() { + console.log('\n' + '='.repeat(70)); + console.log('MIGRATION REPORT'); + console.log('='.repeat(70)); + console.log(`Mode: ${CONFIG.dryRun ? 'DRY RUN (no changes made)' : 'LIVE'}`); + console.log(`\nMarkdown files scanned: ${report.filesScanned}`); + + console.log('\n--- PASS 1: Referenced Assets ---'); + console.log(`Assets found in markdown: ${report.referencedAssetsFound}`); + console.log(`Assets moved: ${report.referencedAssetsMoved}`); + + console.log('\n--- PASS 2: Orphaned Assets ---'); + console.log(`Orphaned assets found: ${report.orphanedAssetsFound}`); + console.log(`Orphaned assets moved: ${report.orphanedAssetsMoved}`); + + console.log('\n--- TOTALS ---'); + const totalFound = report.referencedAssetsFound + report.orphanedAssetsFound; + const totalMoved = report.referencedAssetsMoved + report.orphanedAssetsMoved; + console.log(`Total assets found: ${totalFound}`); + console.log(`Total assets moved: ${totalMoved}`); + console.log(`Markdown files updated: ${report.filesUpdated}`); + + if (Object.keys(report.assetsByType).length > 0) { + console.log('\nAssets by type:'); + Object.entries(report.assetsByType) + .sort((a, b) => b[1] - a[1]) + .forEach(([type, count]) => { + console.log(` ${type}: ${count}`); + }); + } + + if (report.orphanedAssets.length > 0) { + console.log(`\n⚠️ Orphaned Assets (${report.orphanedAssets.length}):`); + console.log('These assets were not referenced in any markdown file.'); + console.log('They have been moved to static/img/*/examples/ directories.'); + console.log('\nRecommendations:'); + console.log('1. Review the orphaned assets list below'); + console.log('2. Determine if they are still needed'); + console.log('3. Either reference them in docs or delete them'); + console.log('4. Consider creating a cleanup task\n'); + + // Group by type + const byType = {}; + report.orphanedAssets.forEach(asset => { + if (!byType[asset.type]) byType[asset.type] = []; + byType[asset.type].push(asset); + }); + + Object.entries(byType).forEach(([type, assets]) => { + console.log(`\n ${type} files (${assets.length}):`); + assets.slice(0, 5).forEach(a => { + console.log(` - ${path.relative(CONFIG.docsPath, a.old)}`); + }); + if (assets.length > 5) { + console.log(` ... and ${assets.length - 5} more`); + } + }); + } + + if (report.warnings.length > 0) { + console.log(`\n⚠️ Warnings: ${report.warnings.length}`); + report.warnings.slice(0, 5).forEach(w => console.log(` - ${w}`)); + if (report.warnings.length > 5) { + console.log(` ... and ${report.warnings.length - 5} more`); + } + } + + if (report.errors.length > 0) { + console.log(`\n❌ Errors: ${report.errors.length}`); + report.errors.forEach(e => console.log(` - ${e}`)); + } + + console.log('='.repeat(70) + '\n'); +} + +/** + * Clean up empty directories + */ +async function cleanupEmptyDirs(dir) { + if (CONFIG.dryRun) return; + + try { + const entries = await fs.readdir(dir, { withFileTypes: true }); + + for (const entry of entries) { + if (entry.isDirectory()) { + const fullPath = path.join(dir, entry.name); + await cleanupEmptyDirs(fullPath); + } + } + + const remainingEntries = await fs.readdir(dir); + if (remainingEntries.length === 0) { + await fs.rmdir(dir); + console.log(`✓ Removed empty directory: ${dir}`); + } + } catch (err) { + // Ignore errors in cleanup + } +} + +/** + * Main execution + */ +async function main() { + console.log('🚀 Starting Enhanced Docusaurus Asset Migration...\n'); + console.log('This migration runs in TWO passes:'); + console.log(' PASS 1: Migrate assets referenced in markdown files'); + console.log(' PASS 2: Migrate orphaned assets (not referenced anywhere)\n'); + + // Validate paths exist + try { + await fs.access(CONFIG.docsPath); + } catch (err) { + console.error('Error: Could not find docs directory'); + console.error('Please run this script from your Docusaurus project root'); + process.exit(1); + } + + // Create backup + if (!CONFIG.dryRun) { + await createBackup(); + } + + // Track which assets are referenced + const referencedAssets = new Set(); + + // PASS 1: Process markdown files and referenced assets + console.log('=== PASS 1: Processing markdown files ===\n'); + console.log('Scanning for markdown files...'); + const mdFiles = await findMarkdownFiles(CONFIG.docsPath); + console.log(`Found ${mdFiles.length} markdown files\n`); + + report.filesScanned = mdFiles.length; + + console.log('Processing files...'); + for (const file of mdFiles) { + const result = await processMarkdownFile(file, referencedAssets); + if (result.updated) { + console.log(`✓ Updated: ${path.relative(CONFIG.docsPath, file)}`); + if (result.changes.length > 0 && result.changes.length <= 3) { + result.changes.forEach(c => { + console.log(` ${c.old} → ${c.new}`); + }); + } else if (result.changes.length > 3) { + console.log(` (${result.changes.length} assets updated)`); + } + } + } + + // PASS 2: Find and process orphaned assets + console.log(`\nPass 1 tracked ${referencedAssets.size} unique asset paths as referenced`); + await processOrphanedAssets(referencedAssets); + + // Clean up empty directories + if (!CONFIG.dryRun) { + console.log('\nCleaning up empty directories...'); + await cleanupEmptyDirs(CONFIG.docsPath); + } + + // Print final report + printReport(); + + if (CONFIG.dryRun) { + console.log('💡 This was a dry run. To apply changes, set dryRun: false in the script.\n'); + console.log('Recommended next steps:'); + console.log('1. Review the orphaned assets list above'); + console.log('2. Decide which orphaned assets to keep vs. delete'); + console.log('3. Set dryRun: false and run the migration'); + console.log('4. Test your documentation (npm start)'); + console.log('5. Verify all assets display correctly\n'); + } else { + console.log('✅ Migration complete!\n'); + console.log('Next steps:'); + console.log('1. Test your documentation locally (npm start)'); + console.log('2. Verify all assets display correctly'); + console.log('3. Review orphaned assets in static/img/*/orphaned/'); + console.log('4. Clean up orphaned assets if not needed'); + console.log(`5. Backup is available at ${CONFIG.backupPath}\n`); + } +} + +// Run the script +main().catch(err => { + console.error('Fatal error:', err); + process.exit(1); +}); diff --git a/toolkit/migration-logs/broken-asset-references-after-migration-fix-final-2.md b/toolkit/migration-logs/broken-asset-references-after-migration-fix-final-2.md new file mode 100644 index 0000000..f3c038e --- /dev/null +++ b/toolkit/migration-logs/broken-asset-references-after-migration-fix-final-2.md @@ -0,0 +1,12 @@ +# Broken Asset References Report + +**Generated:** 2025-11-27 15:01:19 + +## Summary + +- Markdown files scanned: 413 +- Total asset references: 541 +- Working references: 540 +- **Broken references: 0** + +✅ **No broken references found!** diff --git a/toolkit/migration-logs/broken-asset-references-after-migration-fix-svg-paths.md b/toolkit/migration-logs/broken-asset-references-after-migration-fix-svg-paths.md new file mode 100644 index 0000000..e4ef4ea --- /dev/null +++ b/toolkit/migration-logs/broken-asset-references-after-migration-fix-svg-paths.md @@ -0,0 +1,41 @@ +# Broken Asset References Report + +**Generated:** 2025-11-27 14:55:47 + +## Summary + +- Markdown files scanned: 413 +- Total asset references: 541 +- Working references: 538 +- **Broken references: 2** + +## Broken References by File + +### documentation/webapps/cockpit/extend/plugins.md + +**2 broken references:** + +- **Line 503:** `/img/documentation/webapps/cockpit/plugin-points/plugin-point-case-definition-diagram-overlay.png` + - Type: image + - Tried to resolve to: `static/img/documentation/webapps/cockpit/plugin-points/plugin-point-case-definition-diagram-overlay.png` + - Full reference: `![Example img](/img/documentation/webapps/cockpit/plugin-points/plugin-point-cas...` + +- **Line 550:** `/img/documentation/webapps/cockpit/plugin-points/plugin-point-case-instance-diagram-overlay.png` + - Type: image + - Tried to resolve to: `static/img/documentation/webapps/cockpit/plugin-points/plugin-point-case-instance-diagram-overlay.png` + - Full reference: `![Example img](/img/documentation/webapps/cockpit/plugin-points/plugin-point-cas...` + +## Quick Fix Guide + +For each broken reference, you can: + +1. **Find the missing asset:** Search for it in your project or recreate it +2. **Fix the path:** Update the markdown to point to the correct location +3. **Remove the reference:** If the asset is no longer needed + +## Missing Assets List + +- **plugin-point-case-definition-diagram-overlay.png** - Referenced in 1 file + - documentation/webapps/cockpit/extend/plugins.md +- **plugin-point-case-instance-diagram-overlay.png** - Referenced in 1 file + - documentation/webapps/cockpit/extend/plugins.md diff --git a/toolkit/migration-logs/broken-asset-references-after-migration.md b/toolkit/migration-logs/broken-asset-references-after-migration.md new file mode 100644 index 0000000..47db010 --- /dev/null +++ b/toolkit/migration-logs/broken-asset-references-after-migration.md @@ -0,0 +1,151 @@ +# Broken Asset References Report + +**Generated:** 2025-11-27 14:38:58 + +## Summary + +- Markdown files scanned: 413 +- Total asset references: 541 +- Working references: 524 +- **Broken references: 16** + +## Broken References by File + +### documentation/reference/bpmn20/index.md + +**12 broken references:** + +- **Line 238:** `./img/symbols/events/message_start_event.svg` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/reference/bpmn20/img/symbols/events/message_start_event.svg` + - Full reference: `![Message Start Event Symbol](./img/symbols/events/message_start_event.svg)` + +- **Line 247:** `./img/symbols/events/message_intermediate_catch_event.svg` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/reference/bpmn20/img/symbols/events/message_intermediate_catch_event.svg` + - Full reference: `![Message Intermediate Catch Event Symbol](./img/symbols/events/message_intermed...` + +- **Line 265:** `./img/symbols/events/timer_start_event.svg` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/reference/bpmn20/img/symbols/events/timer_start_event.svg` + - Full reference: `![Event Subprocess Timer Start Event Symbol](./img/symbols/events/timer_start_ev...` + +- **Line 274:** `./img/symbols/events/timer_intermediate_event.svg` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/reference/bpmn20/img/symbols/events/timer_intermediate_event.svg` + - Full reference: `![Timer Intermediate Interrupting Event Symbol](./img/symbols/events/timer_inter...` + +- **Line 288:** `./img/symbols/events/conditional_start_event.svg` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/reference/bpmn20/img/symbols/events/conditional_start_event.svg` + - Full reference: `![Conditional Start Event Symbol](./img/symbols/events/conditional_start_event.s...` + +- **Line 297:** `./img/symbols/events/conditional_intermediate_catch_event.svg` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/reference/bpmn20/img/symbols/events/conditional_intermediate_catch_event.svg` + - Full reference: `![Conditional Intermediate Catch Event Symbol](./img/symbols/events/conditional_...` + +- **Line 326:** `./img/symbols/events/signal_start_event.svg` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/reference/bpmn20/img/symbols/events/signal_start_event.svg` + - Full reference: `![Signal Event Symbol](./img/symbols/events/signal_start_event.svg)` + +- **Line 335:** `./img/symbols/events/signal_intermediate_catch_event.svg` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/reference/bpmn20/img/symbols/events/signal_intermediate_catch_event.svg` + - Full reference: `![Signal Intermediate Catch Event Symbol](./img/symbols/events/signal_intermedia...` + +- **Line 440:** `./img/symbols/events/multiple_start_event.svg` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/reference/bpmn20/img/symbols/events/multiple_start_event.svg` + - Full reference: `![Multiple Start Event Symbol](./img/symbols/events/multiple_start_event.svg)` + +- **Line 449:** `./img/symbols/events/multiple_intermediate_catch_event.svg` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/reference/bpmn20/img/symbols/events/multiple_intermediate_catch_event.svg` + - Full reference: `![Multiple Intermediate Catch Event Symbol](./img/symbols/events/multiple_interm...` + +- **Line 468:** `./img/symbols/events/multiple_parallel_start_event.svg` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/reference/bpmn20/img/symbols/events/multiple_parallel_start_event.svg` + - Full reference: `![Multiple Parallel Start Event Symbol](./img/symbols/events/multiple_parallel_s...` + +- **Line 477:** `./img/symbols/events/multiple_parallel_catch_event.svg` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/reference/bpmn20/img/symbols/events/multiple_parallel_catch_event.svg` + - Full reference: `![Multiple Parallel Catch Event Symbol](./img/symbols/events/multiple_parallel_c...` + +### documentation/user-guide/process-engine/variables.md + +**1 broken reference:** + +- **Line 21:** `./img/variables-3.png` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/user-guide/process-engine/img/variables-3.png` + - Full reference: `![Example img](./img/variables-3.png)` + +### documentation/webapps/cockpit/extend/plugins.md + +**2 broken references:** + +- **Line 503:** `./../img/plugin-points/plugin-point-case-definition-diagram-overlay.png` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-case-definition-diagram-overlay.png` + - Full reference: `![Example img](./../img/plugin-points/plugin-point-case-definition-diagram-overl...` + +- **Line 550:** `./../img/plugin-points/plugin-point-case-instance-diagram-overlay.png` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/documentation/webapps/cockpit/img/plugin-points/plugin-point-case-instance-diagram-overlay.png` + - Full reference: `![Example img](./../img/plugin-points/plugin-point-case-instance-diagram-overlay...` + +### get-started/quick-start/user-task.md + +**1 broken reference:** + +- **Line 101:** `./img/start-form-generic.png` + - Type: image + - Tried to resolve to: `/home/steven/Development/documentation/docs/get-started/quick-start/img/start-form-generic.png` + - Full reference: `![Example image](./img/start-form-generic.png)` + +## Quick Fix Guide + +For each broken reference, you can: + +1. **Find the missing asset:** Search for it in your project or recreate it +2. **Fix the path:** Update the markdown to point to the correct location +3. **Remove the reference:** If the asset is no longer needed + +## Missing Assets List + +- **conditional_intermediate_catch_event.svg** - Referenced in 1 file + - documentation/reference/bpmn20/index.md +- **conditional_start_event.svg** - Referenced in 1 file + - documentation/reference/bpmn20/index.md +- **message_intermediate_catch_event.svg** - Referenced in 1 file + - documentation/reference/bpmn20/index.md +- **message_start_event.svg** - Referenced in 1 file + - documentation/reference/bpmn20/index.md +- **multiple_intermediate_catch_event.svg** - Referenced in 1 file + - documentation/reference/bpmn20/index.md +- **multiple_parallel_catch_event.svg** - Referenced in 1 file + - documentation/reference/bpmn20/index.md +- **multiple_parallel_start_event.svg** - Referenced in 1 file + - documentation/reference/bpmn20/index.md +- **multiple_start_event.svg** - Referenced in 1 file + - documentation/reference/bpmn20/index.md +- **plugin-point-case-definition-diagram-overlay.png** - Referenced in 1 file + - documentation/webapps/cockpit/extend/plugins.md +- **plugin-point-case-instance-diagram-overlay.png** - Referenced in 1 file + - documentation/webapps/cockpit/extend/plugins.md +- **signal_intermediate_catch_event.svg** - Referenced in 1 file + - documentation/reference/bpmn20/index.md +- **signal_start_event.svg** - Referenced in 1 file + - documentation/reference/bpmn20/index.md +- **start-form-generic.png** - Referenced in 1 file + - get-started/quick-start/user-task.md +- **timer_intermediate_event.svg** - Referenced in 1 file + - documentation/reference/bpmn20/index.md +- **timer_start_event.svg** - Referenced in 1 file + - documentation/reference/bpmn20/index.md +- **variables-3.png** - Referenced in 1 file + - documentation/user-guide/process-engine/variables.md diff --git a/toolkit/migration-logs/broken-asset-references-before-migration.md b/toolkit/migration-logs/broken-asset-references-before-migration.md new file mode 100644 index 0000000..383bcca --- /dev/null +++ b/toolkit/migration-logs/broken-asset-references-before-migration.md @@ -0,0 +1,12 @@ +# Broken Asset References Report + +**Generated:** 2025-11-27 12:40:39 + +## Summary + +- Markdown files scanned: 413 +- Total asset references: 541 +- Working references: 540 +- **Broken references: 0** + +✅ **No broken references found!** diff --git a/toolkit/migration-logs/file-count.md b/toolkit/migration-logs/file-count.md new file mode 100644 index 0000000..1038be4 --- /dev/null +++ b/toolkit/migration-logs/file-count.md @@ -0,0 +1,165 @@ +# File Count Report + +**Generated:** 2025-11-27 14:35:02 + +## Summary + +| File Type | docs/ | static/img/ | Total | +|-----------|-------|-------------|-------| +| .png | 0 | 460 | 460 | +| .md | 410 | 0 | 410 | +| .svg | 0 | 91 | 91 | +| .bpmn | 0 | 66 | 66 | +| .mdx | 3 | 0 | 3 | +| .dmn | 0 | 2 | 2 | +| .jpg | 0 | 1 | 1 | +| .odg | 0 | 1 | 1 | +| .js | 0 | 1 | 1 | +| .json | 1 | 0 | 1 | +| **TOTAL** | **414** | **622** | **1036** | + +## Details + +### .png + +**In static/img/ (460 files):** + +- static/img/documentation/examples/img/docsVersionDropdown.png +- static/img/documentation/examples/img/localeDropdown.png +- static/img/documentation/examples/reference/dmn/decision-literal-expression/img/decision-id.png +- static/img/documentation/examples/reference/dmn/decision-literal-expression/img/decision-literal-expression.png +- static/img/documentation/examples/reference/dmn/decision-literal-expression/img/decision-name.png +- static/img/documentation/examples/user-guide/ext-client/img/externalTaskCient.png +- static/img/documentation/examples/user-guide/process-engine/img/process-engine-history.png +- static/img/documentation/examples/webapps/cockpit/img/cockpit-edit-dmn-dialog.png +- static/img/documentation/examples/webapps/cockpit/img/cockpit-plugins/architecture.png +- static/img/documentation/examples/webapps/cockpit/img/migration/step4_error.png +- ... (440 more files) +- static/img/get-started/quick-start/tasklist-dmn2.png +- static/img/get-started/spring-boot/eclipse-new-project.png +- static/img/get-started/spring-boot/loanApproval.png +- static/img/get-started/spring-boot/tasklist.png +- static/img/operaton_docs_icon.png +- static/img/operaton_docs_icon_comp.png +- static/img/operaton_docs_start_icon.png +- static/img/operaton_docs_start_icon_comp.png +- static/img/operaton_powered_by_java_icon.png +- static/img/operaton_powered_by_java_icon_comp.png + +### .md + +**In docs/ (410 files):** + +- docs/documentation/examples/index.md +- docs/documentation/index.md +- docs/documentation/installation/camunda-modeler.md +- docs/documentation/installation/database-schema.md +- docs/documentation/installation/docker.md +- docs/documentation/installation/full/index.md +- docs/documentation/installation/full/tomcat/configuration.md +- docs/documentation/installation/full/tomcat/index.md +- docs/documentation/installation/full/tomcat/manual.md +- docs/documentation/installation/full/tomcat/pre-packaged.md +- ... (390 more files) +- docs/get-started/quick-start/service-task.md +- docs/get-started/quick-start/user-task.md +- docs/get-started/spring-boot/configuration.md +- docs/get-started/spring-boot/index.md +- docs/get-started/spring-boot/model.md +- docs/get-started/spring-boot/project-setup.md +- docs/intro.md +- docs/security/index.md +- docs/security/operations.md +- docs/security/report-vulnerability.md + +### .svg + +**In static/img/ (91 files):** + +- static/img/documentation/examples/reference/dmn/decision-table/img/dish-table.svg +- static/img/documentation/reference/bpmn20/and_gateway.svg +- static/img/documentation/reference/bpmn20/business_rule_task.svg +- static/img/documentation/reference/bpmn20/call_activity.svg +- static/img/documentation/reference/bpmn20/cancel_boundary_event.svg +- static/img/documentation/reference/bpmn20/cancel_end_event.svg +- static/img/documentation/reference/bpmn20/compensation_boundary_event.svg +- static/img/documentation/reference/bpmn20/compensation_end_event.svg +- static/img/documentation/reference/bpmn20/compensation_event_subprocess_start_event.svg +- static/img/documentation/reference/bpmn20/compensation_intermediate_throw_event.svg +- ... (71 more files) +- static/img/documentation/user-guide/process-engine/database/erd_722_identity.svg +- static/img/documentation/user-guide/process-engine/message-event.svg +- static/img/documentation/user-guide/process-engine/receive-task.svg +- static/img/documentation/user-guide/process-engine/signal-event.svg +- static/img/documentation/user-guide/process-engine/timer-event.svg +- static/img/documentation/user-guide/process-engine/user-task.svg +- static/img/operaton-logo.svg +- static/img/undraw_docusaurus_mountain.svg +- static/img/undraw_docusaurus_react.svg +- static/img/undraw_docusaurus_tree.svg + +### .bpmn + +**In static/img/ (66 files):** + +- static/img/documentation/examples/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn +- static/img/documentation/examples/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn +- static/img/documentation/examples/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn +- static/img/documentation/examples/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn +- static/img/documentation/examples/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn +- static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-boundary-event.bpmn +- static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-end-event.bpmn +- static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-example.bpmn +- static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-intermediate-throw-event.bpmn +- static/img/documentation/examples/reference/bpmn20/events/bpmn/escalation-start-event.bpmn +- ... (46 more files) +- static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer2.bpmn +- static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation1.bpmn +- static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation2.bpmn +- static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation3.bpmn +- static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation4.bpmn +- static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation5.bpmn +- static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation6.bpmn +- static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example1.bpmn +- static/img/documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example2.bpmn +- static/img/documentation/examples/user-guide/process-engine/bpmn/x_event-based-gateway.bpmn + +### .mdx + +**In docs/ (3 files):** + +- docs/documentation/reference/deployment-descriptors/tags/process-engine.mdx +- docs/documentation/reference/javadoc.mdx +- docs/documentation/user-guide/spring-boot-integration/configuration.mdx + +### .dmn + +**In static/img/ (2 files):** + +- static/img/documentation/examples/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn +- static/img/documentation/examples/reference/dmn/drg/img/drg.dmn + +### .jpg + +**In static/img/ (1 files):** + +- static/img/docusaurus-social-card.jpg + +### .odg + +**In static/img/ (1 files):** + +- static/img/documentation/examples/user-guide/process-engine/img/api.services.odg + +### .js + +**In static/img/ (1 files):** + +- static/img/documentation/examples/reference/dmn/decision-table/img/map.js + +### .json + +**In docs/ (1 files):** + +- docs/versions.json + diff --git a/toolkit/migration-logs/migrate-assets-enhanced-dry-run.txt b/toolkit/migration-logs/migrate-assets-enhanced-dry-run.txt new file mode 100644 index 0000000..780982d --- /dev/null +++ b/toolkit/migration-logs/migrate-assets-enhanced-dry-run.txt @@ -0,0 +1,434 @@ +🚀 Starting Enhanced Docusaurus Asset Migration... + +This migration runs in TWO passes: + PASS 1: Migrate assets referenced in markdown files + PASS 2: Migrate orphaned assets (not referenced anywhere) + +=== PASS 1: Processing markdown files === + +Scanning for markdown files... +Found 413 markdown files + +Processing files... +✓ Updated: documentation/introduction/architecture.md + (5 assets updated) +✓ Updated: documentation/introduction/index.md + ./img/architecture-overview.png → /img/documentation/introduction/architecture-overview.png +✓ Updated: documentation/reference/bpmn20/events/conditional-events.md + ./bpmn/event-conditional.svg → /img/documentation/reference/bpmn20/events/event-conditional.svg + ./img/activityInstanceState.png → /img/documentation/reference/bpmn20/events/activityInstanceState.png +✓ Updated: documentation/reference/bpmn20/index.md + (87 assets updated) +✓ Updated: documentation/reference/cmmn11/concepts/lifecycle.md + (8 assets updated) +✓ Updated: documentation/reference/cmmn11/markers/repetition-rule.md + (11 assets updated) +✓ Updated: documentation/reference/cmmn11/sentry.md + ./img/variableOnPart.png → /img/documentation/reference/cmmn11/variableOnPart.png +✓ Updated: documentation/reference/dmn/decision-table/hit-policy.md + (10 assets updated) +✓ Updated: documentation/reference/dmn/decision-table/index.md + img/dish-table.png → /img/documentation/reference/dmn/decision-table/dish-table.png + img/decision-name.png → /img/documentation/reference/dmn/decision-table/decision-name.png + img/decision-id.png → /img/documentation/reference/dmn/decision-table/decision-id.png +✓ Updated: documentation/reference/dmn/decision-table/input.md + (4 assets updated) +✓ Updated: documentation/reference/dmn/decision-table/output.md + (4 assets updated) +✓ Updated: documentation/reference/dmn/decision-table/rule.md + (4 assets updated) +✓ Updated: documentation/reference/dmn/drg/index.md + (7 assets updated) +✓ Updated: documentation/reference/dmn/feel/legacy/data-types.md + (4 assets updated) +✓ Updated: documentation/user-guide/dmn-engine/evaluate-decisions.md + ./img/dish-dmn.png → /img/documentation/user-guide/dmn-engine/dish-dmn.png + ./img/beverages-dmn.png → /img/documentation/user-guide/dmn-engine/beverages-dmn.png + ./img/drd.png → /img/documentation/user-guide/dmn-engine/drd.png +✓ Updated: documentation/user-guide/model-api/bpmn-model-api/create-a-model.md + ./img/bpmn-model-api-simple-process.png → /img/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-simple-process.png + ./img/bpmn-model-api-parallel-gateway.png → /img/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-parallel-gateway.png +✓ Updated: documentation/user-guide/process-applications/maven-archetypes.md + (7 assets updated) +✓ Updated: documentation/user-guide/process-applications/process-application-event-listeners.md + ./img/process-application-events.png → /img/documentation/user-guide/process-applications/process-application-events.png +✓ Updated: documentation/user-guide/process-applications/process-application-resources.md + ./img/process-application-context.png → /img/documentation/user-guide/process-applications/process-application-context.png +✓ Updated: documentation/user-guide/process-applications/the-processes-xml-deployment-descriptor.md + ./img/process-application-deployment.png → /img/documentation/user-guide/process-applications/process-application-deployment.png + ./img/process-application-redeployment.png → /img/documentation/user-guide/process-applications/process-application-redeployment.png +✓ Updated: documentation/user-guide/process-engine/database/database-schema.md + (6 assets updated) +✓ Updated: documentation/user-guide/process-engine/error-handling.md + (4 assets updated) +✓ Updated: documentation/user-guide/process-engine/external-tasks.md + ./img/external-task-pattern.png → /img/documentation/user-guide/process-engine/external-task-pattern.png + ./img/external-task-long-polling.png → /img/documentation/user-guide/process-engine/external-task-long-polling.png +✓ Updated: documentation/user-guide/process-engine/history/custom-implementation.md + ./../img/process-engine-history-architecture.png → /img/documentation/user-guide/process-engine/history/process-engine-history-architecture.png +✓ Updated: documentation/user-guide/process-engine/history/history-cleanup.md + ./../img/history-cleanup-process-hierarchy.png → /img/documentation/user-guide/process-engine/history/history-cleanup-process-hierarchy.png +✓ Updated: documentation/user-guide/process-engine/multi-tenancy.md + ./img/multi-tenancy-tenant-identifiers.png → /img/documentation/user-guide/process-engine/multi-tenancy-tenant-identifiers.png + ./../../introduction/img/multi-tenancy-process-engine.png → /img/documentation/user-guide/process-engine/multi-tenancy-process-engine.png +✓ Updated: documentation/user-guide/process-engine/process-diagram-api.md + ./img/process-diagram-bpmn-js.png → /img/documentation/user-guide/process-engine/process-diagram-bpmn-js.png +✓ Updated: documentation/user-guide/process-engine/process-engine-api.md + ./img/api.services.png → /img/documentation/user-guide/process-engine/api.services.png +✓ Updated: documentation/user-guide/process-engine/process-engine-concepts.md + ./img/parallel-gw.png → /img/documentation/user-guide/process-engine/parallel-gw.png +✓ Updated: documentation/user-guide/process-engine/process-instance-restart.md + ./img/variables-3.png → /img/documentation/user-guide/process-engine/variables-3.png +✓ Updated: documentation/user-guide/process-engine/process-versioning.md + ./img/versioning.png → /img/documentation/user-guide/process-engine/versioning.png +✓ Updated: documentation/user-guide/process-engine/the-job-executor.md + (8 assets updated) +✓ Updated: documentation/user-guide/process-engine/transactions-in-processes.md + (15 assets updated) +✓ Updated: documentation/user-guide/process-engine/variables.md + (5 assets updated) +✓ Updated: documentation/user-guide/runtime-container-integration/jboss.md + ./img/jboss-jconsole.png → /img/documentation/user-guide/runtime-container-integration/jboss-jconsole.png + ./img/jboss-service-dependencies.png → /img/documentation/user-guide/runtime-container-integration/jboss-service-dependencies.png +✓ Updated: documentation/user-guide/task-forms/index.md + (5 assets updated) +✓ Updated: documentation/user-guide/task-forms/jsf-task-forms.md + (6 assets updated) +✓ Updated: documentation/user-guide/testing/index.md + (7 assets updated) +✓ Updated: documentation/webapps/admin/auditing.md + ./img/admin-system-audit.png → /img/documentation/webapps/admin/admin-system-audit.png + ./img/admin-audit-entity.png → /img/documentation/webapps/admin/admin-audit-entity.png +✓ Updated: documentation/webapps/admin/authorization-management.md + (18 assets updated) +✓ Updated: documentation/webapps/admin/group-management.md + ./img/admin-groups.png → /img/documentation/webapps/admin/admin-groups.png +✓ Updated: documentation/webapps/admin/plugins.md + ./img/admin-start-page-view.png → /img/documentation/webapps/admin/admin-start-page-view.png +✓ Updated: documentation/webapps/admin/system-management.md + ./img/admin-system-management.png → /img/documentation/webapps/admin/admin-system-management.png + ./img/admin-diagnostics.png → /img/documentation/webapps/admin/admin-diagnostics.png + ./img/admin-execution-metrics.png → /img/documentation/webapps/admin/admin-execution-metrics.png +✓ Updated: documentation/webapps/admin/tenant-management.md + ./img/admin-tenants.png → /img/documentation/webapps/admin/admin-tenants.png +✓ Updated: documentation/webapps/admin/user-management.md + ./img/admin-users.png → /img/documentation/webapps/admin/admin-users.png + ./img/admin-initial-user-setup.png → /img/documentation/webapps/admin/admin-initial-user-setup.png +✓ Updated: documentation/webapps/cockpit/auditing.md + (5 assets updated) +✓ Updated: documentation/webapps/cockpit/batch/batch-operation.md + (5 assets updated) +✓ Updated: documentation/webapps/cockpit/batch/monitoring.md + ./../img/batch.png → /img/documentation/webapps/cockpit/batch/batch.png + ./../img/batch-search.png → /img/documentation/webapps/cockpit/batch/batch-search.png +✓ Updated: documentation/webapps/cockpit/bpmn/correlate-message.md + (4 assets updated) +✓ Updated: documentation/webapps/cockpit/bpmn/dashboard.md + (11 assets updated) +✓ Updated: documentation/webapps/cockpit/bpmn/drilldown.md + ./../img/drilldown/shape.png → /img/documentation/webapps/cockpit/bpmn/shape.png + ./../img/drilldown/breadcrumbs.png → /img/documentation/webapps/cockpit/bpmn/breadcrumbs.png + ./../img/drilldown/migration.png → /img/documentation/webapps/cockpit/bpmn/migration.png +✓ Updated: documentation/webapps/cockpit/bpmn/failed-jobs.md + ./../img/cockpit-failed-job-drill-down.png → /img/documentation/webapps/cockpit/bpmn/cockpit-failed-job-drill-down.png + ./../img/cockpit-instance-job-retry.png → /img/documentation/webapps/cockpit/bpmn/cockpit-instance-job-retry.png + ./../img/cockpit-bulk-retry.png → /img/documentation/webapps/cockpit/bpmn/cockpit-bulk-retry.png +✓ Updated: documentation/webapps/cockpit/bpmn/process-definition-view.md + (15 assets updated) +✓ Updated: documentation/webapps/cockpit/bpmn/process-history-views.md + ./../img/cockpit-history-view-process-definition-history.png → /img/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-definition-history.png + ./../img/cockpit-heatmap.png → /img/documentation/webapps/cockpit/bpmn/cockpit-heatmap.png + ./../img/cockpit-history-view-process-instance-history.png → /img/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-instance-history.png +✓ Updated: documentation/webapps/cockpit/bpmn/process-instance-migration.md + (12 assets updated) +✓ Updated: documentation/webapps/cockpit/bpmn/process-instance-modification.md + (8 assets updated) +✓ Updated: documentation/webapps/cockpit/bpmn/process-instance-restart.md + ./../img/cockpit-restart.png → /img/documentation/webapps/cockpit/bpmn/cockpit-restart.png + ./../img/cockpit-restart-instance-selection.png → /img/documentation/webapps/cockpit/bpmn/cockpit-restart-instance-selection.png + ./../img/cockpit-restart-confirm.png → /img/documentation/webapps/cockpit/bpmn/cockpit-restart-confirm.png +✓ Updated: documentation/webapps/cockpit/bpmn/process-instance-view.md + (8 assets updated) +✓ Updated: documentation/webapps/cockpit/cleanup.md + ./img/cockpit-cleanup-page.png → /img/documentation/webapps/cockpit/cockpit-cleanup-page.png + ./img/cockpit-cleanup-state-incident.png → /img/documentation/webapps/cockpit/cockpit-cleanup-state-incident.png + ./img/cockpit-cleanup-ttl.png → /img/documentation/webapps/cockpit/cockpit-cleanup-ttl.png +✓ Updated: documentation/webapps/cockpit/cmmn/case-definition-view.md + ./../img/cmmn/case-definition-view.png → /img/documentation/webapps/cockpit/cmmn/case-definition-view.png +✓ Updated: documentation/webapps/cockpit/cmmn/case-instance-view.md + (5 assets updated) +✓ Updated: documentation/webapps/cockpit/cmmn/dashboard.md + ./../img/cmmn/case-dashboard-search.png → /img/documentation/webapps/cockpit/cmmn/case-dashboard-search.png + ./../img/cmmn/case-dashboard-deployed.png → /img/documentation/webapps/cockpit/cmmn/case-dashboard-deployed.png +✓ Updated: documentation/webapps/cockpit/dashboard.md + ./img/dashboard.png → /img/documentation/webapps/cockpit/dashboard.png + ./img/dashboard-metrics.png → /img/documentation/webapps/cockpit/dashboard-metrics.png + ./img/cockpit-multi-engine.png → /img/documentation/webapps/cockpit/cockpit-multi-engine.png +✓ Updated: documentation/webapps/cockpit/deployment-view.md + ./img/cockpit-deployments-page.png → /img/documentation/webapps/cockpit/cockpit-deployments-page.png +✓ Updated: documentation/webapps/cockpit/dmn/dashboard.md + ./../img/cockpit-decision-definition-list.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-list.png + ./../img/cockpit-drd-list.png → /img/documentation/webapps/cockpit/dmn/cockpit-drd-list.png + ./../img/dmn/decision-instance-search.png → /img/documentation/webapps/cockpit/dmn/decision-instance-search.png +✓ Updated: documentation/webapps/cockpit/dmn/decision-definition-view.md + ./../img/cockpit-decision-definition-view.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-view.png +✓ Updated: documentation/webapps/cockpit/dmn/decision-instance-view.md + ./../img/cockpit-decision-instance-view.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-instance-view.png +✓ Updated: documentation/webapps/cockpit/dmn/decision-requirements-definition-view.md + ./../img/cockpit-decision-requirements-definition-view.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-view.png + ./../img/cockpit-decision-definition-requirement-decision-instances-tab.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instances-tab.png + ./../img/cockpit-decision-definition-requirement-decision-drd-tab.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-drd-tab.png +✓ Updated: documentation/webapps/cockpit/dmn/decision-requirements-instance-view.md + ./../img/cockpit-decision-requirements-definition-instance-view.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-instance-view.png + ./../img/cockpit-decision-definition-requirement-decision-instance-instances-tab.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instance-instances-tab.png +✓ Updated: documentation/webapps/cockpit/extend/plugins.md + (36 assets updated) +✓ Updated: documentation/webapps/cockpit/reporting.md + ./img/duration-report.png → /img/documentation/webapps/cockpit/duration-report.png + ./img/historic-task-instance-report.png → /img/documentation/webapps/cockpit/historic-task-instance-report.png +✓ Updated: documentation/webapps/cockpit/tasks-dashboard.md + ./img/task-dashboard.png → /img/documentation/webapps/cockpit/task-dashboard.png +✓ Updated: documentation/webapps/tasklist/dashboard.md + (11 assets updated) +✓ Updated: documentation/webapps/tasklist/filters.md + ./img/tasklist-create-filter.png → /img/documentation/webapps/tasklist/tasklist-create-filter.png + ./img/tasklist-filter-detail.png → /img/documentation/webapps/tasklist/tasklist-filter-detail.png +✓ Updated: documentation/webapps/tasklist/task-lifecycle.md + ./img/tasklist-user-task-state-complete.png → /img/documentation/webapps/tasklist/tasklist-user-task-state-complete.png +✓ Updated: documentation/webapps/tasklist/tasklist-plugins.md + (6 assets updated) +✓ Updated: documentation/webapps/tasklist/user-assignment.md + ./img/tasklist-task-form-modeler.png → /img/documentation/webapps/tasklist/tasklist-task-form-modeler.png +✓ Updated: documentation/webapps/welcome/welcome-plugins.md + ./img/welcome-dashboard-plugin.png → /img/documentation/webapps/welcome/welcome-dashboard-plugin.png + ./img/welcome-profile-plugin.png → /img/documentation/webapps/welcome/welcome-profile-plugin.png +✓ Updated: get-started/archive/java-process-app/deploy.md + (6 assets updated) +✓ Updated: get-started/archive/java-process-app/forms.md + (4 assets updated) +✓ Updated: get-started/archive/java-process-app/model.md + (6 assets updated) +✓ Updated: get-started/archive/java-process-app/project-setup.md + ./img/eclipse-new-project.png → /img/get-started/archive/java-process-app/eclipse-new-project.png +✓ Updated: get-started/archive/java-process-app/service-task.md + ./img/modeler-service-task1.png → /img/get-started/archive/java-process-app/modeler-service-task1.png + ./img/modeler-service-task2.png → /img/get-started/archive/java-process-app/modeler-service-task2.png + ./img/modeler-service-task3.png → /img/get-started/archive/java-process-app/modeler-service-task3.png +✓ Updated: get-started/archive/javaee7/complete-process.md + ./img/prepare-pizza.png → /img/get-started/archive/javaee7/prepare-pizza.png + ./img/pizza-order-process-prepare-pizza.png → /img/get-started/archive/javaee7/pizza-order-process-prepare-pizza.png + ./img/pizza-order-process-send-rejection-email.png → /img/get-started/archive/javaee7/pizza-order-process-send-rejection-email.png +✓ Updated: get-started/archive/javaee7/model.md + (4 assets updated) +✓ Updated: get-started/archive/javaee7/project-setup.md + ./img/maven-project-settings.png → /img/get-started/archive/javaee7/maven-project-settings.png +✓ Updated: get-started/archive/javaee7/service-task.md + ./img/pizza-order-process-service-task-expression.png → /img/get-started/archive/javaee7/pizza-order-process-service-task-expression.png +✓ Updated: get-started/archive/javaee7/start-form.md + ./img/pizza-order-process-start-form.png → /img/get-started/archive/javaee7/pizza-order-process-start-form.png +✓ Updated: get-started/archive/javaee7/task-form.md + ./img/approve-order.png → /img/get-started/archive/javaee7/approve-order.png + ./img/pizza-order-process-task-form.png → /img/get-started/archive/javaee7/pizza-order-process-task-form.png + ./img/pizza-order-process-no.png → /img/get-started/archive/javaee7/pizza-order-process-no.png +✓ Updated: get-started/archive/spring/project-setup.md + ./img/eclipse-new-project.png → /img/get-started/archive/spring/eclipse-new-project.png + ./img/project-layout-after-setup.png → /img/get-started/archive/spring/project-layout-after-setup.png +✓ Updated: get-started/archive/spring/service-task.md + ./img/process-model.png → /img/get-started/archive/spring/process-model.png + ./img/service-task.png → /img/get-started/archive/spring/service-task.png +✓ Updated: get-started/dmn/deploy.md + ./img/cockpit-dish-dmn.png → /img/get-started/dmn/cockpit-dish-dmn.png + ./img/cockpit-decision-overview-dish-dmn.png → /img/get-started/dmn/cockpit-decision-overview-dish-dmn.png + ./img/cockpit-decision-history-dish-dmn.png → /img/get-started/dmn/cockpit-decision-history-dish-dmn.png +✓ Updated: get-started/dmn/drg.md + (7 assets updated) +✓ Updated: get-started/dmn/model.md + (10 assets updated) +✓ Updated: get-started/dmn/project-setup.md + ./img/eclipse-new-project.png → /img/get-started/dmn/eclipse-new-project.png +✓ Updated: get-started/quick-start/decision-automation.md + (14 assets updated) +✓ Updated: get-started/quick-start/deploy.md + (5 assets updated) +✓ Updated: get-started/quick-start/gateway.md + (7 assets updated) +✓ Updated: get-started/quick-start/service-task.md + (7 assets updated) +✓ Updated: get-started/quick-start/user-task.md + (13 assets updated) +✓ Updated: get-started/spring-boot/model.md + ./img/loanApproval.png → /img/get-started/spring-boot/loanApproval.png + ./img/tasklist.png → /img/get-started/spring-boot/tasklist.png +✓ Updated: get-started/spring-boot/project-setup.md + ./img/eclipse-new-project.png → /img/get-started/spring-boot/eclipse-new-project.png + +Pass 1 tracked 525 unique asset paths as referenced + +=== PASS 2: Scanning for orphaned assets === + +Found 90 orphaned assets (not referenced in markdown): + documentation/img/docsVersionDropdown.png → documentation/examples/img/docsVersionDropdown.png + documentation/img/localeDropdown.png → documentation/examples/img/localeDropdown.png + documentation/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn → documentation/examples/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn + documentation/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn → documentation/examples/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn + documentation/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn → documentation/examples/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn + documentation/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn → documentation/examples/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn + documentation/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn → documentation/examples/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn + documentation/reference/bpmn20/events/bpmn/escalation-boundary-event.bpmn → documentation/examples/reference/bpmn20/events/bpmn/escalation-boundary-event.bpmn + documentation/reference/bpmn20/events/bpmn/escalation-end-event.bpmn → documentation/examples/reference/bpmn20/events/bpmn/escalation-end-event.bpmn + documentation/reference/bpmn20/events/bpmn/escalation-example.bpmn → documentation/examples/reference/bpmn20/events/bpmn/escalation-example.bpmn + documentation/reference/bpmn20/events/bpmn/escalation-intermediate-throw-event.bpmn → documentation/examples/reference/bpmn20/events/bpmn/escalation-intermediate-throw-event.bpmn + documentation/reference/bpmn20/events/bpmn/escalation-start-event.bpmn → documentation/examples/reference/bpmn20/events/bpmn/escalation-start-event.bpmn + documentation/reference/bpmn20/events/bpmn/event-conditional-parallel-boundary.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-conditional-parallel-boundary.bpmn + documentation/reference/bpmn20/events/bpmn/event-conditional.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-conditional.bpmn + documentation/reference/bpmn20/events/bpmn/event-conditional2.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-conditional2.bpmn + documentation/reference/bpmn20/events/bpmn/event-error.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-error.bpmn + documentation/reference/bpmn20/events/bpmn/event-link.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-link.bpmn + documentation/reference/bpmn20/events/bpmn/event-message-start-alternative.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-message-start-alternative.bpmn + documentation/reference/bpmn20/events/bpmn/event-message-throwing.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-message-throwing.bpmn + documentation/reference/bpmn20/events/bpmn/event-message.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-message.bpmn + documentation/reference/bpmn20/events/bpmn/event-none-intermediate.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-none-intermediate.bpmn + documentation/reference/bpmn20/events/bpmn/event-none.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-none.bpmn + documentation/reference/bpmn20/events/bpmn/event-signal-catching.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-signal-catching.bpmn + documentation/reference/bpmn20/events/bpmn/event-signal-throwing.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-signal-throwing.bpmn + documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative1.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-subprocess-alternative1.bpmn + documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative2.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-subprocess-alternative2.bpmn + documentation/reference/bpmn20/events/bpmn/event-terminate.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-terminate.bpmn + documentation/reference/bpmn20/events/bpmn/event-timer.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-timer.bpmn + documentation/reference/bpmn20/gateways/bpmn/event-based-gateway.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/event-based-gateway.bpmn + documentation/reference/bpmn20/gateways/bpmn/exclusive-gateway.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/exclusive-gateway.bpmn + documentation/reference/bpmn20/gateways/bpmn/inclusive-gateway.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/inclusive-gateway.bpmn + documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_1.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_1.bpmn + documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_2.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_2.bpmn + documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_3.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_3.bpmn + documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_4.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_4.bpmn + documentation/reference/bpmn20/gateways/bpmn/parallel-gateway-unbalanced.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/parallel-gateway-unbalanced.bpmn + documentation/reference/bpmn20/gateways/bpmn/parallel-gateway.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/parallel-gateway.bpmn + documentation/reference/bpmn20/gateways/bpmn/sequence-flow-conditional.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/sequence-flow-conditional.bpmn + documentation/reference/bpmn20/gateways/bpmn/sequence-flow-parallel.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/sequence-flow-parallel.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/business-transaction.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/business-transaction.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/call-activity.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/call-activity.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative1.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative1.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative2.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative2.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/event-subprocess.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/subprocess.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/subprocess_attached.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess_attached.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/subprocess_event.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess_event.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/subprocess_expanded.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess_expanded.bpmn + documentation/reference/bpmn20/tasks/bpmn/compensation-marker.bpmn → documentation/examples/reference/bpmn20/tasks/bpmn/compensation-marker.bpmn + documentation/reference/bpmn20/tasks/bpmn/loop-alternative.bpmn → documentation/examples/reference/bpmn20/tasks/bpmn/loop-alternative.bpmn + documentation/reference/bpmn20/tasks/bpmn/multiple-instance-boundary.bpmn → documentation/examples/reference/bpmn20/tasks/bpmn/multiple-instance-boundary.bpmn + documentation/reference/bpmn20/tasks/bpmn/multiple-instance.bpmn → documentation/examples/reference/bpmn20/tasks/bpmn/multiple-instance.bpmn + documentation/reference/dmn/decision-literal-expression/img/decision-id.png → documentation/examples/reference/dmn/decision-literal-expression/img/decision-id.png + documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn → documentation/examples/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn + documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.png → documentation/examples/reference/dmn/decision-literal-expression/img/decision-literal-expression.png + documentation/reference/dmn/decision-literal-expression/img/decision-name.png → documentation/examples/reference/dmn/decision-literal-expression/img/decision-name.png + documentation/reference/dmn/decision-table/img/dish-table.svg → documentation/examples/reference/dmn/decision-table/img/dish-table.svg + documentation/reference/dmn/decision-table/img/map.js → documentation/examples/reference/dmn/decision-table/img/map.js + documentation/reference/dmn/drg/img/drg.dmn → documentation/examples/reference/dmn/drg/img/drg.dmn + documentation/user-guide/ext-client/img/externalTaskCient.png → documentation/examples/user-guide/ext-client/img/externalTaskCient.png + documentation/user-guide/process-engine/bpmn/example1.bpmn → documentation/examples/user-guide/process-engine/bpmn/example1.bpmn + documentation/user-guide/process-engine/bpmn/example2.bpmn → documentation/examples/user-guide/process-engine/bpmn/example2.bpmn + documentation/user-guide/process-engine/bpmn/example3.bpmn → documentation/examples/user-guide/process-engine/bpmn/example3.bpmn + documentation/user-guide/process-engine/bpmn/example4.bpmn → documentation/examples/user-guide/process-engine/bpmn/example4.bpmn + documentation/user-guide/process-engine/bpmn/example5.bpmn → documentation/examples/user-guide/process-engine/bpmn/example5.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer1.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer1.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer2.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer2.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation1.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation1.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation2.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation2.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation3.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation3.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation4.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation4.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation5.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation5.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation6.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation6.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example1.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example1.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example2.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example2.bpmn + documentation/user-guide/process-engine/bpmn/x_event-based-gateway.bpmn → documentation/examples/user-guide/process-engine/bpmn/x_event-based-gateway.bpmn + documentation/user-guide/process-engine/img/api.services.odg → documentation/examples/user-guide/process-engine/img/api.services.odg + documentation/user-guide/process-engine/img/process-engine-history.png → documentation/examples/user-guide/process-engine/img/process-engine-history.png + documentation/webapps/cockpit/img/cockpit-edit-dmn-dialog.png → documentation/examples/webapps/cockpit/img/cockpit-edit-dmn-dialog.png + documentation/webapps/cockpit/img/cockpit-plugins/architecture.png → documentation/examples/webapps/cockpit/img/cockpit-plugins/architecture.png + documentation/webapps/cockpit/img/migration/step4_error.png → documentation/examples/webapps/cockpit/img/migration/step4_error.png + documentation/webapps/tasklist/img/tasklist-dashboard.png → documentation/examples/webapps/tasklist/img/tasklist-dashboard.png + documentation/webapps/tasklist/img/tasklist-generic-form.png → documentation/examples/webapps/tasklist/img/tasklist-generic-form.png + documentation/webapps/welcome/img/welcome-start-page-view.png → documentation/examples/webapps/welcome/img/welcome-start-page-view.png + get-started/archive/java-process-app/img/modeler-save-diagram.png → get-started/examples/archive/java-process-app/img/modeler-save-diagram.png + get-started/archive/javaee7/img/javaee.png → get-started/examples/archive/javaee7/img/javaee.png + get-started/archive/javaee7/img/start-form.png → get-started/examples/archive/javaee7/img/start-form.png + get-started/archive/spring/img/Spring_Logo.png → get-started/examples/archive/spring/img/Spring_Logo.png + get-started/quick-start/img/modeler-dmn1.png → get-started/examples/quick-start/img/modeler-dmn1.png + get-started/quick-start/img/niall-says-congrats.png → get-started/examples/quick-start/img/niall-says-congrats.png + +====================================================================== +MIGRATION REPORT +====================================================================== +Mode: DRY RUN (no changes made) + +Markdown files scanned: 413 + +--- PASS 1: Referenced Assets --- +Assets found in markdown: 541 +Assets moved: 540 + +--- PASS 2: Orphaned Assets --- +Orphaned assets found: 90 +Orphaned assets moved: 90 + +--- TOTALS --- +Total assets found: 631 +Total assets moved: 630 +Markdown files updated: 0 + +Assets by type: + .png: 442 + .svg: 98 + +⚠️ Orphaned Assets (90): +These assets were not referenced in any markdown file. +They have been moved to static/img/*/examples/ directories. + +Recommendations: +1. Review the orphaned assets list below +2. Determine if they are still needed +3. Either reference them in docs or delete them +4. Consider creating a cleanup task + + + .png files (19): + - documentation/img/docsVersionDropdown.png + - documentation/img/localeDropdown.png + - documentation/reference/dmn/decision-literal-expression/img/decision-id.png + - documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.png + - documentation/reference/dmn/decision-literal-expression/img/decision-name.png + ... and 14 more + + .bpmn files (66): + - documentation/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn + - documentation/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn + - documentation/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn + - documentation/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn + - documentation/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn + ... and 61 more + + .dmn files (2): + - documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn + - documentation/reference/dmn/drg/img/drg.dmn + + .svg files (1): + - documentation/reference/dmn/decision-table/img/dish-table.svg + + .js files (1): + - documentation/reference/dmn/decision-table/img/map.js + + .odg files (1): + - documentation/user-guide/process-engine/img/api.services.odg +====================================================================== + +💡 This was a dry run. To apply changes, set dryRun: false in the script. + +Recommended next steps: +1. Review the orphaned assets list above +2. Decide which orphaned assets to keep vs. delete +3. Set dryRun: false and run the migration +4. Test your documentation (npm start) +5. Verify all assets display correctly + diff --git a/toolkit/migration-logs/migrate-assets-enhanced-live-run.txt b/toolkit/migration-logs/migrate-assets-enhanced-live-run.txt new file mode 100644 index 0000000..61f3ba3 --- /dev/null +++ b/toolkit/migration-logs/migrate-assets-enhanced-live-run.txt @@ -0,0 +1,496 @@ +🚀 Starting Enhanced Docusaurus Asset Migration... + +This migration runs in TWO passes: + PASS 1: Migrate assets referenced in markdown files + PASS 2: Migrate orphaned assets (not referenced anywhere) + +Creating backup... +✓ Backup created at ./backup-assets +=== PASS 1: Processing markdown files === + +Scanning for markdown files... +Found 413 markdown files + +Processing files... +✓ Updated: documentation/introduction/architecture.md + (5 assets updated) +✓ Updated: documentation/introduction/index.md + ./img/architecture-overview.png → /img/documentation/introduction/architecture-overview.png +✓ Updated: documentation/reference/bpmn20/events/conditional-events.md + ./bpmn/event-conditional.svg → /img/documentation/reference/bpmn20/events/event-conditional.svg + ./img/activityInstanceState.png → /img/documentation/reference/bpmn20/events/activityInstanceState.png +✓ Updated: documentation/reference/bpmn20/index.md + (75 assets updated) +✓ Updated: documentation/reference/cmmn11/concepts/lifecycle.md + (8 assets updated) +✓ Updated: documentation/reference/cmmn11/markers/repetition-rule.md + (11 assets updated) +✓ Updated: documentation/reference/cmmn11/sentry.md + ./img/variableOnPart.png → /img/documentation/reference/cmmn11/variableOnPart.png +✓ Updated: documentation/reference/dmn/decision-table/hit-policy.md + (10 assets updated) +✓ Updated: documentation/reference/dmn/decision-table/index.md + img/dish-table.png → /img/documentation/reference/dmn/decision-table/dish-table.png + img/decision-name.png → /img/documentation/reference/dmn/decision-table/decision-name.png + img/decision-id.png → /img/documentation/reference/dmn/decision-table/decision-id.png +✓ Updated: documentation/reference/dmn/decision-table/input.md + (4 assets updated) +✓ Updated: documentation/reference/dmn/decision-table/output.md + (4 assets updated) +✓ Updated: documentation/reference/dmn/decision-table/rule.md + (4 assets updated) +✓ Updated: documentation/reference/dmn/drg/index.md + (7 assets updated) +✓ Updated: documentation/reference/dmn/feel/legacy/data-types.md + (4 assets updated) +✓ Updated: documentation/user-guide/dmn-engine/evaluate-decisions.md + ./img/dish-dmn.png → /img/documentation/user-guide/dmn-engine/dish-dmn.png + ./img/beverages-dmn.png → /img/documentation/user-guide/dmn-engine/beverages-dmn.png + ./img/drd.png → /img/documentation/user-guide/dmn-engine/drd.png +✓ Updated: documentation/user-guide/model-api/bpmn-model-api/create-a-model.md + ./img/bpmn-model-api-simple-process.png → /img/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-simple-process.png + ./img/bpmn-model-api-parallel-gateway.png → /img/documentation/user-guide/model-api/bpmn-model-api/bpmn-model-api-parallel-gateway.png +✓ Updated: documentation/user-guide/process-applications/maven-archetypes.md + (7 assets updated) +✓ Updated: documentation/user-guide/process-applications/process-application-event-listeners.md + ./img/process-application-events.png → /img/documentation/user-guide/process-applications/process-application-events.png +✓ Updated: documentation/user-guide/process-applications/process-application-resources.md + ./img/process-application-context.png → /img/documentation/user-guide/process-applications/process-application-context.png +✓ Updated: documentation/user-guide/process-applications/the-processes-xml-deployment-descriptor.md + ./img/process-application-deployment.png → /img/documentation/user-guide/process-applications/process-application-deployment.png + ./img/process-application-redeployment.png → /img/documentation/user-guide/process-applications/process-application-redeployment.png +✓ Updated: documentation/user-guide/process-engine/database/database-schema.md + (6 assets updated) +✓ Updated: documentation/user-guide/process-engine/error-handling.md + (4 assets updated) +✓ Updated: documentation/user-guide/process-engine/external-tasks.md + ./img/external-task-pattern.png → /img/documentation/user-guide/process-engine/external-task-pattern.png + ./img/external-task-long-polling.png → /img/documentation/user-guide/process-engine/external-task-long-polling.png +✓ Updated: documentation/user-guide/process-engine/history/custom-implementation.md + ./../img/process-engine-history-architecture.png → /img/documentation/user-guide/process-engine/history/process-engine-history-architecture.png +✓ Updated: documentation/user-guide/process-engine/history/history-cleanup.md + ./../img/history-cleanup-process-hierarchy.png → /img/documentation/user-guide/process-engine/history/history-cleanup-process-hierarchy.png +✓ Updated: documentation/user-guide/process-engine/multi-tenancy.md + ./img/multi-tenancy-tenant-identifiers.png → /img/documentation/user-guide/process-engine/multi-tenancy-tenant-identifiers.png + ./../../introduction/img/multi-tenancy-process-engine.png → /img/documentation/user-guide/process-engine/multi-tenancy-process-engine.png +✓ Updated: documentation/user-guide/process-engine/process-diagram-api.md + ./img/process-diagram-bpmn-js.png → /img/documentation/user-guide/process-engine/process-diagram-bpmn-js.png +✓ Updated: documentation/user-guide/process-engine/process-engine-api.md + ./img/api.services.png → /img/documentation/user-guide/process-engine/api.services.png +✓ Updated: documentation/user-guide/process-engine/process-engine-concepts.md + ./img/parallel-gw.png → /img/documentation/user-guide/process-engine/parallel-gw.png +✓ Updated: documentation/user-guide/process-engine/process-instance-restart.md + ./img/variables-3.png → /img/documentation/user-guide/process-engine/variables-3.png +✓ Updated: documentation/user-guide/process-engine/process-versioning.md + ./img/versioning.png → /img/documentation/user-guide/process-engine/versioning.png +✓ Updated: documentation/user-guide/process-engine/the-job-executor.md + (8 assets updated) +✓ Updated: documentation/user-guide/process-engine/transactions-in-processes.md + (15 assets updated) +✓ Updated: documentation/user-guide/process-engine/variables.md + (4 assets updated) +✓ Updated: documentation/user-guide/runtime-container-integration/jboss.md + ./img/jboss-jconsole.png → /img/documentation/user-guide/runtime-container-integration/jboss-jconsole.png + ./img/jboss-service-dependencies.png → /img/documentation/user-guide/runtime-container-integration/jboss-service-dependencies.png +✓ Updated: documentation/user-guide/task-forms/index.md + (5 assets updated) +✓ Updated: documentation/user-guide/task-forms/jsf-task-forms.md + (6 assets updated) +✓ Updated: documentation/user-guide/testing/index.md + (7 assets updated) +✓ Updated: documentation/webapps/admin/auditing.md + ./img/admin-system-audit.png → /img/documentation/webapps/admin/admin-system-audit.png + ./img/admin-audit-entity.png → /img/documentation/webapps/admin/admin-audit-entity.png +✓ Updated: documentation/webapps/admin/authorization-management.md + (18 assets updated) +✓ Updated: documentation/webapps/admin/group-management.md + ./img/admin-groups.png → /img/documentation/webapps/admin/admin-groups.png +✓ Updated: documentation/webapps/admin/plugins.md + ./img/admin-start-page-view.png → /img/documentation/webapps/admin/admin-start-page-view.png +✓ Updated: documentation/webapps/admin/system-management.md + ./img/admin-system-management.png → /img/documentation/webapps/admin/admin-system-management.png + ./img/admin-diagnostics.png → /img/documentation/webapps/admin/admin-diagnostics.png + ./img/admin-execution-metrics.png → /img/documentation/webapps/admin/admin-execution-metrics.png +✓ Updated: documentation/webapps/admin/tenant-management.md + ./img/admin-tenants.png → /img/documentation/webapps/admin/admin-tenants.png +✓ Updated: documentation/webapps/admin/user-management.md + ./img/admin-users.png → /img/documentation/webapps/admin/admin-users.png + ./img/admin-initial-user-setup.png → /img/documentation/webapps/admin/admin-initial-user-setup.png +✓ Updated: documentation/webapps/cockpit/auditing.md + (5 assets updated) +✓ Updated: documentation/webapps/cockpit/batch/batch-operation.md + (5 assets updated) +✓ Updated: documentation/webapps/cockpit/batch/monitoring.md + ./../img/batch.png → /img/documentation/webapps/cockpit/batch/batch.png + ./../img/batch-search.png → /img/documentation/webapps/cockpit/batch/batch-search.png +✓ Updated: documentation/webapps/cockpit/bpmn/correlate-message.md + (4 assets updated) +✓ Updated: documentation/webapps/cockpit/bpmn/dashboard.md + (11 assets updated) +✓ Updated: documentation/webapps/cockpit/bpmn/drilldown.md + ./../img/drilldown/shape.png → /img/documentation/webapps/cockpit/bpmn/shape.png + ./../img/drilldown/breadcrumbs.png → /img/documentation/webapps/cockpit/bpmn/breadcrumbs.png + ./../img/drilldown/migration.png → /img/documentation/webapps/cockpit/bpmn/migration.png +✓ Updated: documentation/webapps/cockpit/bpmn/failed-jobs.md + ./../img/cockpit-failed-job-drill-down.png → /img/documentation/webapps/cockpit/bpmn/cockpit-failed-job-drill-down.png + ./../img/cockpit-instance-job-retry.png → /img/documentation/webapps/cockpit/bpmn/cockpit-instance-job-retry.png + ./../img/cockpit-bulk-retry.png → /img/documentation/webapps/cockpit/bpmn/cockpit-bulk-retry.png +✓ Updated: documentation/webapps/cockpit/bpmn/process-definition-view.md + (15 assets updated) +✓ Updated: documentation/webapps/cockpit/bpmn/process-history-views.md + ./../img/cockpit-history-view-process-definition-history.png → /img/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-definition-history.png + ./../img/cockpit-heatmap.png → /img/documentation/webapps/cockpit/bpmn/cockpit-heatmap.png + ./../img/cockpit-history-view-process-instance-history.png → /img/documentation/webapps/cockpit/bpmn/cockpit-history-view-process-instance-history.png +✓ Updated: documentation/webapps/cockpit/bpmn/process-instance-migration.md + (12 assets updated) +✓ Updated: documentation/webapps/cockpit/bpmn/process-instance-modification.md + (8 assets updated) +✓ Updated: documentation/webapps/cockpit/bpmn/process-instance-restart.md + ./../img/cockpit-restart.png → /img/documentation/webapps/cockpit/bpmn/cockpit-restart.png + ./../img/cockpit-restart-instance-selection.png → /img/documentation/webapps/cockpit/bpmn/cockpit-restart-instance-selection.png + ./../img/cockpit-restart-confirm.png → /img/documentation/webapps/cockpit/bpmn/cockpit-restart-confirm.png +✓ Updated: documentation/webapps/cockpit/bpmn/process-instance-view.md + (8 assets updated) +✓ Updated: documentation/webapps/cockpit/cleanup.md + ./img/cockpit-cleanup-page.png → /img/documentation/webapps/cockpit/cockpit-cleanup-page.png + ./img/cockpit-cleanup-state-incident.png → /img/documentation/webapps/cockpit/cockpit-cleanup-state-incident.png + ./img/cockpit-cleanup-ttl.png → /img/documentation/webapps/cockpit/cockpit-cleanup-ttl.png +✓ Updated: documentation/webapps/cockpit/cmmn/case-definition-view.md + ./../img/cmmn/case-definition-view.png → /img/documentation/webapps/cockpit/cmmn/case-definition-view.png +✓ Updated: documentation/webapps/cockpit/cmmn/case-instance-view.md + (5 assets updated) +✓ Updated: documentation/webapps/cockpit/cmmn/dashboard.md + ./../img/cmmn/case-dashboard-search.png → /img/documentation/webapps/cockpit/cmmn/case-dashboard-search.png + ./../img/cmmn/case-dashboard-deployed.png → /img/documentation/webapps/cockpit/cmmn/case-dashboard-deployed.png +✓ Updated: documentation/webapps/cockpit/dashboard.md + ./img/dashboard.png → /img/documentation/webapps/cockpit/dashboard.png + ./img/dashboard-metrics.png → /img/documentation/webapps/cockpit/dashboard-metrics.png + ./img/cockpit-multi-engine.png → /img/documentation/webapps/cockpit/cockpit-multi-engine.png +✓ Updated: documentation/webapps/cockpit/deployment-view.md + ./img/cockpit-deployments-page.png → /img/documentation/webapps/cockpit/cockpit-deployments-page.png +✓ Updated: documentation/webapps/cockpit/dmn/dashboard.md + ./../img/cockpit-decision-definition-list.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-list.png + ./../img/cockpit-drd-list.png → /img/documentation/webapps/cockpit/dmn/cockpit-drd-list.png + ./../img/dmn/decision-instance-search.png → /img/documentation/webapps/cockpit/dmn/decision-instance-search.png +✓ Updated: documentation/webapps/cockpit/dmn/decision-definition-view.md + ./../img/cockpit-decision-definition-view.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-view.png +✓ Updated: documentation/webapps/cockpit/dmn/decision-instance-view.md + ./../img/cockpit-decision-instance-view.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-instance-view.png +✓ Updated: documentation/webapps/cockpit/dmn/decision-requirements-definition-view.md + ./../img/cockpit-decision-requirements-definition-view.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-view.png + ./../img/cockpit-decision-definition-requirement-decision-instances-tab.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instances-tab.png + ./../img/cockpit-decision-definition-requirement-decision-drd-tab.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-drd-tab.png +✓ Updated: documentation/webapps/cockpit/dmn/decision-requirements-instance-view.md + ./../img/cockpit-decision-requirements-definition-instance-view.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-requirements-definition-instance-view.png + ./../img/cockpit-decision-definition-requirement-decision-instance-instances-tab.png → /img/documentation/webapps/cockpit/dmn/cockpit-decision-definition-requirement-decision-instance-instances-tab.png +✓ Updated: documentation/webapps/cockpit/extend/plugins.md + (34 assets updated) +✓ Updated: documentation/webapps/cockpit/reporting.md + ./img/duration-report.png → /img/documentation/webapps/cockpit/duration-report.png + ./img/historic-task-instance-report.png → /img/documentation/webapps/cockpit/historic-task-instance-report.png +✓ Updated: documentation/webapps/cockpit/tasks-dashboard.md + ./img/task-dashboard.png → /img/documentation/webapps/cockpit/task-dashboard.png +✓ Updated: documentation/webapps/tasklist/dashboard.md + (11 assets updated) +✓ Updated: documentation/webapps/tasklist/filters.md + ./img/tasklist-create-filter.png → /img/documentation/webapps/tasklist/tasklist-create-filter.png + ./img/tasklist-filter-detail.png → /img/documentation/webapps/tasklist/tasklist-filter-detail.png +✓ Updated: documentation/webapps/tasklist/task-lifecycle.md + ./img/tasklist-user-task-state-complete.png → /img/documentation/webapps/tasklist/tasklist-user-task-state-complete.png +✓ Updated: documentation/webapps/tasklist/tasklist-plugins.md + (6 assets updated) +✓ Updated: documentation/webapps/tasklist/user-assignment.md + ./img/tasklist-task-form-modeler.png → /img/documentation/webapps/tasklist/tasklist-task-form-modeler.png +✓ Updated: documentation/webapps/welcome/welcome-plugins.md + ./img/welcome-dashboard-plugin.png → /img/documentation/webapps/welcome/welcome-dashboard-plugin.png + ./img/welcome-profile-plugin.png → /img/documentation/webapps/welcome/welcome-profile-plugin.png +✓ Updated: get-started/archive/java-process-app/deploy.md + (6 assets updated) +✓ Updated: get-started/archive/java-process-app/forms.md + (4 assets updated) +✓ Updated: get-started/archive/java-process-app/model.md + (6 assets updated) +✓ Updated: get-started/archive/java-process-app/project-setup.md + ./img/eclipse-new-project.png → /img/get-started/archive/java-process-app/eclipse-new-project.png +✓ Updated: get-started/archive/java-process-app/service-task.md + ./img/modeler-service-task1.png → /img/get-started/archive/java-process-app/modeler-service-task1.png + ./img/modeler-service-task2.png → /img/get-started/archive/java-process-app/modeler-service-task2.png + ./img/modeler-service-task3.png → /img/get-started/archive/java-process-app/modeler-service-task3.png +✓ Updated: get-started/archive/javaee7/complete-process.md + ./img/prepare-pizza.png → /img/get-started/archive/javaee7/prepare-pizza.png + ./img/pizza-order-process-prepare-pizza.png → /img/get-started/archive/javaee7/pizza-order-process-prepare-pizza.png + ./img/pizza-order-process-send-rejection-email.png → /img/get-started/archive/javaee7/pizza-order-process-send-rejection-email.png +✓ Updated: get-started/archive/javaee7/model.md + (4 assets updated) +✓ Updated: get-started/archive/javaee7/project-setup.md + ./img/maven-project-settings.png → /img/get-started/archive/javaee7/maven-project-settings.png +✓ Updated: get-started/archive/javaee7/service-task.md + ./img/pizza-order-process-service-task-expression.png → /img/get-started/archive/javaee7/pizza-order-process-service-task-expression.png +✓ Updated: get-started/archive/javaee7/start-form.md + ./img/pizza-order-process-start-form.png → /img/get-started/archive/javaee7/pizza-order-process-start-form.png +✓ Updated: get-started/archive/javaee7/task-form.md + ./img/approve-order.png → /img/get-started/archive/javaee7/approve-order.png + ./img/pizza-order-process-task-form.png → /img/get-started/archive/javaee7/pizza-order-process-task-form.png + ./img/pizza-order-process-no.png → /img/get-started/archive/javaee7/pizza-order-process-no.png +✓ Updated: get-started/archive/spring/project-setup.md + ./img/eclipse-new-project.png → /img/get-started/archive/spring/eclipse-new-project.png + ./img/project-layout-after-setup.png → /img/get-started/archive/spring/project-layout-after-setup.png +✓ Updated: get-started/archive/spring/service-task.md + ./img/process-model.png → /img/get-started/archive/spring/process-model.png + ./img/service-task.png → /img/get-started/archive/spring/service-task.png +✓ Updated: get-started/dmn/deploy.md + ./img/cockpit-dish-dmn.png → /img/get-started/dmn/cockpit-dish-dmn.png + ./img/cockpit-decision-overview-dish-dmn.png → /img/get-started/dmn/cockpit-decision-overview-dish-dmn.png + ./img/cockpit-decision-history-dish-dmn.png → /img/get-started/dmn/cockpit-decision-history-dish-dmn.png +✓ Updated: get-started/dmn/drg.md + (7 assets updated) +✓ Updated: get-started/dmn/model.md + (10 assets updated) +✓ Updated: get-started/dmn/project-setup.md + ./img/eclipse-new-project.png → /img/get-started/dmn/eclipse-new-project.png +✓ Updated: get-started/quick-start/decision-automation.md + (14 assets updated) +✓ Updated: get-started/quick-start/deploy.md + (5 assets updated) +✓ Updated: get-started/quick-start/gateway.md + (7 assets updated) +✓ Updated: get-started/quick-start/service-task.md + (7 assets updated) +✓ Updated: get-started/quick-start/user-task.md + (12 assets updated) +✓ Updated: get-started/spring-boot/model.md + ./img/loanApproval.png → /img/get-started/spring-boot/loanApproval.png + ./img/tasklist.png → /img/get-started/spring-boot/tasklist.png +✓ Updated: get-started/spring-boot/project-setup.md + ./img/eclipse-new-project.png → /img/get-started/spring-boot/eclipse-new-project.png + +Pass 1 tracked 525 unique asset paths as referenced + +=== PASS 2: Scanning for orphaned assets === + +Found 90 orphaned assets (not referenced in markdown): + documentation/img/docsVersionDropdown.png → documentation/examples/img/docsVersionDropdown.png + documentation/img/localeDropdown.png → documentation/examples/img/localeDropdown.png + documentation/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn → documentation/examples/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn + documentation/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn → documentation/examples/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn + documentation/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn → documentation/examples/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn + documentation/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn → documentation/examples/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn + documentation/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn → documentation/examples/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn + documentation/reference/bpmn20/events/bpmn/escalation-boundary-event.bpmn → documentation/examples/reference/bpmn20/events/bpmn/escalation-boundary-event.bpmn + documentation/reference/bpmn20/events/bpmn/escalation-end-event.bpmn → documentation/examples/reference/bpmn20/events/bpmn/escalation-end-event.bpmn + documentation/reference/bpmn20/events/bpmn/escalation-example.bpmn → documentation/examples/reference/bpmn20/events/bpmn/escalation-example.bpmn + documentation/reference/bpmn20/events/bpmn/escalation-intermediate-throw-event.bpmn → documentation/examples/reference/bpmn20/events/bpmn/escalation-intermediate-throw-event.bpmn + documentation/reference/bpmn20/events/bpmn/escalation-start-event.bpmn → documentation/examples/reference/bpmn20/events/bpmn/escalation-start-event.bpmn + documentation/reference/bpmn20/events/bpmn/event-conditional-parallel-boundary.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-conditional-parallel-boundary.bpmn + documentation/reference/bpmn20/events/bpmn/event-conditional.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-conditional.bpmn + documentation/reference/bpmn20/events/bpmn/event-conditional2.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-conditional2.bpmn + documentation/reference/bpmn20/events/bpmn/event-error.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-error.bpmn + documentation/reference/bpmn20/events/bpmn/event-link.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-link.bpmn + documentation/reference/bpmn20/events/bpmn/event-message-start-alternative.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-message-start-alternative.bpmn + documentation/reference/bpmn20/events/bpmn/event-message-throwing.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-message-throwing.bpmn + documentation/reference/bpmn20/events/bpmn/event-message.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-message.bpmn + documentation/reference/bpmn20/events/bpmn/event-none-intermediate.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-none-intermediate.bpmn + documentation/reference/bpmn20/events/bpmn/event-none.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-none.bpmn + documentation/reference/bpmn20/events/bpmn/event-signal-catching.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-signal-catching.bpmn + documentation/reference/bpmn20/events/bpmn/event-signal-throwing.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-signal-throwing.bpmn + documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative1.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-subprocess-alternative1.bpmn + documentation/reference/bpmn20/events/bpmn/event-subprocess-alternative2.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-subprocess-alternative2.bpmn + documentation/reference/bpmn20/events/bpmn/event-terminate.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-terminate.bpmn + documentation/reference/bpmn20/events/bpmn/event-timer.bpmn → documentation/examples/reference/bpmn20/events/bpmn/event-timer.bpmn + documentation/reference/bpmn20/gateways/bpmn/event-based-gateway.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/event-based-gateway.bpmn + documentation/reference/bpmn20/gateways/bpmn/exclusive-gateway.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/exclusive-gateway.bpmn + documentation/reference/bpmn20/gateways/bpmn/inclusive-gateway.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/inclusive-gateway.bpmn + documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_1.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_1.bpmn + documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_2.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_2.bpmn + documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_3.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_3.bpmn + documentation/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_4.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/inclusive_gateway_scenario_4.bpmn + documentation/reference/bpmn20/gateways/bpmn/parallel-gateway-unbalanced.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/parallel-gateway-unbalanced.bpmn + documentation/reference/bpmn20/gateways/bpmn/parallel-gateway.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/parallel-gateway.bpmn + documentation/reference/bpmn20/gateways/bpmn/sequence-flow-conditional.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/sequence-flow-conditional.bpmn + documentation/reference/bpmn20/gateways/bpmn/sequence-flow-parallel.bpmn → documentation/examples/reference/bpmn20/gateways/bpmn/sequence-flow-parallel.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/business-transaction.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/business-transaction.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/call-activity.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/call-activity.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative1.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative1.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative2.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/event-subprocess-alternative2.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/event-subprocess.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/event-subprocess.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/subprocess.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/subprocess_attached.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess_attached.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/subprocess_event.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess_event.bpmn + documentation/reference/bpmn20/subprocesses/bpmn/subprocess_expanded.bpmn → documentation/examples/reference/bpmn20/subprocesses/bpmn/subprocess_expanded.bpmn + documentation/reference/bpmn20/tasks/bpmn/compensation-marker.bpmn → documentation/examples/reference/bpmn20/tasks/bpmn/compensation-marker.bpmn + documentation/reference/bpmn20/tasks/bpmn/loop-alternative.bpmn → documentation/examples/reference/bpmn20/tasks/bpmn/loop-alternative.bpmn + documentation/reference/bpmn20/tasks/bpmn/multiple-instance-boundary.bpmn → documentation/examples/reference/bpmn20/tasks/bpmn/multiple-instance-boundary.bpmn + documentation/reference/bpmn20/tasks/bpmn/multiple-instance.bpmn → documentation/examples/reference/bpmn20/tasks/bpmn/multiple-instance.bpmn + documentation/reference/dmn/decision-literal-expression/img/decision-id.png → documentation/examples/reference/dmn/decision-literal-expression/img/decision-id.png + documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn → documentation/examples/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn + documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.png → documentation/examples/reference/dmn/decision-literal-expression/img/decision-literal-expression.png + documentation/reference/dmn/decision-literal-expression/img/decision-name.png → documentation/examples/reference/dmn/decision-literal-expression/img/decision-name.png + documentation/reference/dmn/decision-table/img/dish-table.svg → documentation/examples/reference/dmn/decision-table/img/dish-table.svg + documentation/reference/dmn/decision-table/img/map.js → documentation/examples/reference/dmn/decision-table/img/map.js + documentation/reference/dmn/drg/img/drg.dmn → documentation/examples/reference/dmn/drg/img/drg.dmn + documentation/user-guide/ext-client/img/externalTaskCient.png → documentation/examples/user-guide/ext-client/img/externalTaskCient.png + documentation/user-guide/process-engine/bpmn/example1.bpmn → documentation/examples/user-guide/process-engine/bpmn/example1.bpmn + documentation/user-guide/process-engine/bpmn/example2.bpmn → documentation/examples/user-guide/process-engine/bpmn/example2.bpmn + documentation/user-guide/process-engine/bpmn/example3.bpmn → documentation/examples/user-guide/process-engine/bpmn/example3.bpmn + documentation/user-guide/process-engine/bpmn/example4.bpmn → documentation/examples/user-guide/process-engine/bpmn/example4.bpmn + documentation/user-guide/process-engine/bpmn/example5.bpmn → documentation/examples/user-guide/process-engine/bpmn/example5.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer1.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer1.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer2.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-boundary-timer2.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation1.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation1.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation2.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation2.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation3.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation3.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation4.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation4.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation5.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation5.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example-compensation6.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example-compensation6.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example1.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example1.bpmn + documentation/user-guide/process-engine/bpmn/process-instance-migration/example2.bpmn → documentation/examples/user-guide/process-engine/bpmn/process-instance-migration/example2.bpmn + documentation/user-guide/process-engine/bpmn/x_event-based-gateway.bpmn → documentation/examples/user-guide/process-engine/bpmn/x_event-based-gateway.bpmn + documentation/user-guide/process-engine/img/api.services.odg → documentation/examples/user-guide/process-engine/img/api.services.odg + documentation/user-guide/process-engine/img/process-engine-history.png → documentation/examples/user-guide/process-engine/img/process-engine-history.png + documentation/webapps/cockpit/img/cockpit-edit-dmn-dialog.png → documentation/examples/webapps/cockpit/img/cockpit-edit-dmn-dialog.png + documentation/webapps/cockpit/img/cockpit-plugins/architecture.png → documentation/examples/webapps/cockpit/img/cockpit-plugins/architecture.png + documentation/webapps/cockpit/img/migration/step4_error.png → documentation/examples/webapps/cockpit/img/migration/step4_error.png + documentation/webapps/tasklist/img/tasklist-dashboard.png → documentation/examples/webapps/tasklist/img/tasklist-dashboard.png + documentation/webapps/tasklist/img/tasklist-generic-form.png → documentation/examples/webapps/tasklist/img/tasklist-generic-form.png + documentation/webapps/welcome/img/welcome-start-page-view.png → documentation/examples/webapps/welcome/img/welcome-start-page-view.png + get-started/archive/java-process-app/img/modeler-save-diagram.png → get-started/examples/archive/java-process-app/img/modeler-save-diagram.png + get-started/archive/javaee7/img/javaee.png → get-started/examples/archive/javaee7/img/javaee.png + get-started/archive/javaee7/img/start-form.png → get-started/examples/archive/javaee7/img/start-form.png + get-started/archive/spring/img/Spring_Logo.png → get-started/examples/archive/spring/img/Spring_Logo.png + get-started/quick-start/img/modeler-dmn1.png → get-started/examples/quick-start/img/modeler-dmn1.png + get-started/quick-start/img/niall-says-congrats.png → get-started/examples/quick-start/img/niall-says-congrats.png + +Cleaning up empty directories... +✓ Removed empty directory: docs/documentation/img +✓ Removed empty directory: docs/documentation/introduction/img +✓ Removed empty directory: docs/documentation/reference/bpmn20/events/bpmn +✓ Removed empty directory: docs/documentation/reference/bpmn20/events/img +✓ Removed empty directory: docs/documentation/reference/bpmn20/gateways/bpmn +✓ Removed empty directory: docs/documentation/reference/bpmn20/img/symbols/events +✓ Removed empty directory: docs/documentation/reference/bpmn20/img/symbols +✓ Removed empty directory: docs/documentation/reference/bpmn20/img +✓ Removed empty directory: docs/documentation/reference/bpmn20/subprocesses/bpmn +✓ Removed empty directory: docs/documentation/reference/bpmn20/tasks/bpmn +✓ Removed empty directory: docs/documentation/reference/cmmn11/concepts/img +✓ Removed empty directory: docs/documentation/reference/cmmn11/img +✓ Removed empty directory: docs/documentation/reference/cmmn11/markers/img/repetition-by-entry-criteria +✓ Removed empty directory: docs/documentation/reference/cmmn11/markers/img/repetition-on-completion +✓ Removed empty directory: docs/documentation/reference/cmmn11/markers/img +✓ Removed empty directory: docs/documentation/reference/dmn/decision-literal-expression/img +✓ Removed empty directory: docs/documentation/reference/dmn/decision-table/img +✓ Removed empty directory: docs/documentation/reference/dmn/drg/img +✓ Removed empty directory: docs/documentation/reference/dmn/feel/img +✓ Removed empty directory: docs/documentation/user-guide/dmn-engine/img +✓ Removed empty directory: docs/documentation/user-guide/ext-client/img +✓ Removed empty directory: docs/documentation/user-guide/model-api/bpmn-model-api/img +✓ Removed empty directory: docs/documentation/user-guide/process-applications/img +✓ Removed empty directory: docs/documentation/user-guide/process-engine/bpmn/process-instance-migration +✓ Removed empty directory: docs/documentation/user-guide/process-engine/bpmn +✓ Removed empty directory: docs/documentation/user-guide/process-engine/img/bpmn-elements +✓ Removed empty directory: docs/documentation/user-guide/process-engine/img +✓ Removed empty directory: docs/documentation/user-guide/runtime-container-integration/img +✓ Removed empty directory: docs/documentation/user-guide/task-forms/img +✓ Removed empty directory: docs/documentation/user-guide/testing/img +✓ Removed empty directory: docs/documentation/webapps/admin/img +✓ Removed empty directory: docs/documentation/webapps/cockpit/img/batch +✓ Removed empty directory: docs/documentation/webapps/cockpit/img/cmmn +✓ Removed empty directory: docs/documentation/webapps/cockpit/img/cockpit-plugins +✓ Removed empty directory: docs/documentation/webapps/cockpit/img/correlate-message +✓ Removed empty directory: docs/documentation/webapps/cockpit/img/dmn +✓ Removed empty directory: docs/documentation/webapps/cockpit/img/drilldown +✓ Removed empty directory: docs/documentation/webapps/cockpit/img/filter-examples +✓ Removed empty directory: docs/documentation/webapps/cockpit/img/migration +✓ Removed empty directory: docs/documentation/webapps/cockpit/img/plugin-points +✓ Removed empty directory: docs/documentation/webapps/cockpit/img +✓ Removed empty directory: docs/documentation/webapps/tasklist/img/plugin-points +✓ Removed empty directory: docs/documentation/webapps/tasklist/img +✓ Removed empty directory: docs/documentation/webapps/welcome/img +✓ Removed empty directory: docs/get-started/archive/java-process-app/img +✓ Removed empty directory: docs/get-started/archive/javaee7/img +✓ Removed empty directory: docs/get-started/archive/spring/img +✓ Removed empty directory: docs/get-started/dmn/img +✓ Removed empty directory: docs/get-started/quick-start/img +✓ Removed empty directory: docs/get-started/spring-boot/img + +====================================================================== +MIGRATION REPORT +====================================================================== +Mode: LIVE + +Markdown files scanned: 413 + +--- PASS 1: Referenced Assets --- +Assets found in markdown: 541 +Assets moved: 524 + +--- PASS 2: Orphaned Assets --- +Orphaned assets found: 90 +Orphaned assets moved: 90 + +--- TOTALS --- +Total assets found: 631 +Total assets moved: 614 +Markdown files updated: 102 + +Assets by type: + .png: 438 + .svg: 86 + +⚠️ Orphaned Assets (90): +These assets were not referenced in any markdown file. +They have been moved to static/img/*/examples/ directories. + +Recommendations: +1. Review the orphaned assets list below +2. Determine if they are still needed +3. Either reference them in docs or delete them +4. Consider creating a cleanup task + + + .png files (19): + - documentation/img/docsVersionDropdown.png + - documentation/img/localeDropdown.png + - documentation/reference/dmn/decision-literal-expression/img/decision-id.png + - documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.png + - documentation/reference/dmn/decision-literal-expression/img/decision-name.png + ... and 14 more + + .bpmn files (66): + - documentation/reference/bpmn20/events/bpmn/catchandthrowpattern.bpmn + - documentation/reference/bpmn20/events/bpmn/compensation-event-subprocess.bpmn + - documentation/reference/bpmn20/events/bpmn/compensation-intermediate-throw-event.bpmn + - documentation/reference/bpmn20/events/bpmn/conditionalEventScopes.bpmn + - documentation/reference/bpmn20/events/bpmn/conditionalEventScopesHighestFirst.bpmn + ... and 61 more + + .dmn files (2): + - documentation/reference/dmn/decision-literal-expression/img/decision-literal-expression.dmn + - documentation/reference/dmn/drg/img/drg.dmn + + .svg files (1): + - documentation/reference/dmn/decision-table/img/dish-table.svg + + .js files (1): + - documentation/reference/dmn/decision-table/img/map.js + + .odg files (1): + - documentation/user-guide/process-engine/img/api.services.odg + +⚠️ Warnings: 16 + - Asset not found: ./img/symbols/events/message_start_event.svg (referenced in docs/documentation/reference/bpmn20/index.md) + - Asset not found: ./img/symbols/events/message_intermediate_catch_event.svg (referenced in docs/documentation/reference/bpmn20/index.md) + - Asset not found: ./img/symbols/events/timer_start_event.svg (referenced in docs/documentation/reference/bpmn20/index.md) + - Asset not found: ./img/symbols/events/timer_intermediate_event.svg (referenced in docs/documentation/reference/bpmn20/index.md) + - Asset not found: ./img/symbols/events/conditional_start_event.svg (referenced in docs/documentation/reference/bpmn20/index.md) + ... and 11 more +====================================================================== + +✅ Migration complete! + +Next steps: +1. Test your documentation locally (npm start) +2. Verify all assets display correctly +3. Review orphaned assets in static/img/*/orphaned/ +4. Clean up orphaned assets if not needed +5. Backup is available at ./backup-assets +