Merge remote-tracking branch 'origin/main' into newui-all-in

This commit is contained in:
jasquat 2025-01-27 10:20:48 -05:00
commit 8cc0d7607d
No known key found for this signature in database
560 changed files with 3438 additions and 831 deletions

View File

@ -1,2 +1,2 @@
pip==24.3.1
poetry==1.8.5
pip==25.0
poetry==2.0.1

5
docs/.gitignore vendored
View File

@ -1,3 +1,6 @@
_build
.venv
.vscode
.vscode
# meh, we could commit these, but they are automatically generated by the build, so we do not need to
_tags

View File

@ -1,90 +0,0 @@
# Understanding the terminology
## BPMN and SpiffWorkflow
Business Process Model and Notation (BPMN) is a diagramming language for specifying business processes.
BPMN bridges the gap between business and IT, creating a shared process language for both parties.
BPMN efficiently depicts the details of process behaviors in a diagram.
The precision of its meaning allows it to describe the technical details that control process execution in an automation engine.
SpiffWorkflow enables you to create code to execute a BPMN diagram directly.
By using SpiffWorkflow, a client can create the BPMN diagram and have their product work without the need for you to modify the Python code, thus improving response and turnaround time.
## Flow Objects
Flow objects are divided into three groups: Events, Gateways, and Tasks.
### Events
Events, represented by circles, describe occurrences during a process.
There are three main types of events in business process modeling: start events, intermediate events, and end events.
| **Event** | **Symbol**| **Description** |
|-----------|-----------|-----------------|
| Start Event |![Untitled](images/Start.png) | Signals the first step of a process. |
| Intermediate Event | ![Untitled](images/Intermediate.png) | Represents any event that occurs between a start and end event. |
| End Event | ![Untitled](images/End.png) | Signals the final step in a process. |
### Gateways
Gateways represent decision points in a process.
Based on certain conditions or rules, they determine which path the process will follow.
There are various types of gateways:
| **Gateway** | **Symbol**| **Description** |
|---------------|-----------|-----------------|
| Exclusive Gateway |![Untitled](images/Exclusive.png) | Evaluates the state of the business process and, based on the condition, diverges the flow into one or more mutually exclusive paths. |
| Event-based Gateway | ![Untitled](images/Eventbased.png) | An event-based gateway is similar to an exclusive gateway in that both involve one path in the flow. However, with an event-based gateway, you evaluate which event has occurred, not which condition has been met. |
| Inclusive Gateway | ![Untitled](images/Inclusive.png) | An inclusive gateway diverges the process flow into one or more flows. |
| Complex Gateway | ![Untitled](images/Complex.png) | Complex gateways are used only for the most intricate flows in the business process. They use words instead of symbols and thus require more descriptive text. |
### Tasks
Tasks represent activities or work that needs to be done as part of a process.
They can either be manual tasks that require human intervention or automated tasks that are performed by systems or applications.
| **Task** | **Symbol** | **Description** |
|---------------|------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Service | ![Untitled](images/Service_task.png) | A task that utilizes a Web service, an automated application, or other types of service to complete the task. |
| Send |![Untitled](images/Send.png) | A task that sends a message to another pool. The task is completed once the message has been sent. |
| Receive | ![Untitled](images/Receive.png) | A Receive Task indicates that the process has to wait for a message to arrive in order to continue. The task is completed once the message has been received. |
| User | ![Untitled](images/User.png) | A User Task denotes that a human performer completes the task with the help of a software application. |
| Manual | ![Untitled](images/Manual.png) | A Manual Task is a task performed without the aid of any business process execution engine or application. |
| Business Rule |![Untitled](images/Businessrule.png)| A Business Rule Task provides a mechanism for a process to supply input to a Business Rules Engine and then obtain the output provided by the Business Rules Engine. |
| Script | ![Untitled](images/Script.png) | A Script Task defines a script that the engine can interpret. |
| Call Activity | ![Untitled](images/Callactivity.png) | A call activity allows you to call and invoke another process as part of this process. |
| Sub-Process | ![Untitled](images/SubProcess.png) | Sub-processes allow you to collapse and expand tasks to convey information quickly. |
## Connecting Objects
Connecting objects are lines that connect BPMN flow objects.
Three different types exist: sequence flows, message flows, and associations.
| **Connecting Objects** | **Symbol** | **Description** |
|---------------|------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Sequence Flow Symbol | ![Untitled](images/BPMN_sequence_flow-80x31.png) | Connects flow objects in the proper sequential order. |
| Message Flow Symbol |![Untitled](images/BPMN_message_flow-80x30.png) | Represents messages sent from one process participant to another. |
| Association Symbol | ![Untitled](images/BPMN_association-80x31.png) | Illustrates relationships between artifacts and flow objects. |
## Artifacts
Artifacts are used to provide additional information or documentation within a process.
They include data objects (which represent information or data needed for the process), annotations (which provide explanatory or descriptive text), and groups (which are used to visually group related elements).
| **Artifact** | **Symbol** | **Description** |
|---------------|------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Data Object |<div style="height:50px;width:50px"> ![Untitled](images/Data_Object.png) | Data objects can represent data input to the process, data resulting from the process, or data that needs to be collected. |
| Data Storage |![Untitled](images/Data_Storage.png) | Data storage facilitates the storage or access of data associated with a business model. If your process produces any data, it will become necessary to store that data. |
| Group | <div style="height:50px;width:50px"> ![Untitled](images/Group.png) | Groups organize tasks or processes that are significant in the overall process. |
| Annotation | <div style="height:50px;width:50px"> ![Untitled](images/Annotation.png) | Annotations allow you to describe the business process and flow objects in greater detail. |
## Swimlanes
Swimlanes are used in a BPMN diagram to organize aspects of a process.
They visually group objects into lanes, with each aspect of the process added to a separate lane.
These elements can be arranged either horizontally or vertically.
Not only do swimlanes organize activities into separate categories, but they also reveal delays, inefficiencies, and the individuals responsible for each step in a process.
![Untitled](images/BPMN_swimlane-500x197.png)

View File

@ -1,16 +0,0 @@
# Glossary
## Activity
Refers to the work carried out by an individual or an organization within a process.
Activities can be classified into three categories: Task, Subprocess, and Call Activity.
These activities can be either atomic or non-atomic.
Atomic activities are indivisible and represent single tasks, while non-atomic activities involve multiple steps or subprocesses that work together to achieve a larger objective.
## Process Instance
A Process Instance is a specific occurrence of a Process Model that is executed within a workflow engine.
## Process Model
A Process Model is a visual representation of a process that defines the sequence of activities, decisions, and interactions required to achieve a particular goal.

View File

@ -8,15 +8,20 @@ trap 'error_handler ${LINENO} $?' ERR
set -o errtrace -o errexit -o nounset -o pipefail
run_ci="false"
if grep -qE -- "--ci\>" <<<"$@" ; then
if grep -qE -- "--ci\>" <<<"$@"; then
run_ci="true"
fi
rm -rf _build/html
sphinx_command="sphinx-autobuild"
# must ignore generated dir with sphinx-autobuild or it becomes recursive
additional_args="--ignore '**/_tags/*'"
if [[ "$run_ci" == "true" ]]; then
sphinx_command="sphinx-build"
additional_args=""
fi
#>> sphinx-build --help 2>&1 | grep -E '^ +\-[aWn]\>'
@ -24,4 +29,4 @@ fi
# -j N build in parallel with N processes where possible
# -n nit-picky mode, warn about all missing references
# -W turn warnings into errors
"$sphinx_command" . _build/html -W -a -n -j auto
"$sphinx_command" . _build/html -W -a -n -j auto $additional_args

View File

@ -18,10 +18,16 @@ release = "0.1"
# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
extensions = ["myst_parser", "sphinxcontrib.mermaid"]
extensions = ["myst_parser", "sphinxcontrib.mermaid", "sphinx_tags"]
myst_fence_as_directive = ["mermaid"]
myst_heading_anchors = 2
# tags are sort of annoying and buggy, given that the individual tag show pages are broken when clicked from leaf node pages
# and they are required to be in the top-level toctree, which forces the side nav to highlight the current page twice, once
# where it belongs and once in the tags section.
# tags_create_tags = True
tags_extension = ["md"]
templates_path = ["_templates"]
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", ".venv"]
@ -36,7 +42,6 @@ html_logo = "spiffworkflow_logo.png"
html_theme_options = {
"logo_only": True,
"display_version": False,
"prev_next_buttons_location": "bottom",
"style_external_links": False,
"vcs_pageview_mode": "",
@ -48,5 +53,4 @@ html_theme_options = {
"titles_only": False,
}
html_css_files = ["custom.css"]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,4 +1,4 @@
# Articles ![data_input](images/articles.png)
# Articles ![data_input](/images/articles.png)
**[#1 - Build your own Low-Code Business Applications with SpiffWorkflow](https://medium.com/@danfunk/build-your-own-low-code-business-applications-with-spiffworkflow-1d0730acc1f3)**
@ -62,3 +62,6 @@ SpiffArena combines BPMN and Python to provide a powerful and configurable solut
SpiffWorkflow is a Python library that simplifies complex business logic by using BPMN diagrams, allowing non-developers to make changes to application flows.
It improves communication within teams, increases contributions, and adapts to changing requirements.
Visual software development environments like SpiffWorkflow represent the future of solving complex problems.
```{tags} tutorial, explanation
```

View File

@ -60,3 +60,6 @@ All exception classes should be defined in 1) one file, if there are not too man
The Gunicorn web server is used to serve the application in the default Dockerfile.
Many of the environment variables that can be set are documented in src/spiffworkflow_backend/config/default.py.
```{tags} reference, dev_docs
```

View File

@ -28,4 +28,8 @@ graph TD
Connector proxies are containers for connectors.
Connectors are usually Python libraries that are included in connector proxy codebases, but they can also be embedded directly inside of connector proxies.
Our connector-proxy-demo includes a few connectors, including [connector-aws](https://github.com/sartography/connector-aws) and [connector-http](https://github.com/sartography/connector-http).
Connector-http can be used for many API interactions, but you can also [write your own connectors](/dev/how_to_build_a_connector).
Connector-http can be used for many API interactions, but you can also [write your own connectors](how_to_build_a_connector).
```{tags} how_to_guide, dev_docs
```

View File

@ -73,3 +73,5 @@ git repo for it.
* You can now create your connectors and they will show up when you edit
services tasks and select the service you want to call.
```{tags} how_to_guide, dev_docs
```

View File

@ -1,4 +1,5 @@
# Extensions
Extensions in SpiffArena provide a mechanism to augment the software with custom features and functionalities.
By leveraging extensions, users can implement functions or features not present in the standard offering.
This powerful feature ensures adaptability to various business needs, from custom reports to specific user tools.
@ -9,7 +10,7 @@ At a high level:
- Configuration for an extension can be found and modified in its `extension_uischema.json` file.
- Access to an extension can be set up via permissions.
![Extensions](images/Extensions_dashboard.png)
![Extensions](/images/Extensions_dashboard.png)
## Getting Started with Extensions
@ -29,11 +30,11 @@ To create your own custom extension, follow these steps:
- Navigate to the process group repository where extensions are to be implemented.
![Extension Process Group](images/Extension1.png)
![Extension Process Group](/images/Extension1.png)
- Create a process model in this group. You can give it whatever name you want. Then create a file inside the process model called `extension_uischema.json`. This will control how the extension will work.
![Extension](images/Extension_UI_schema.png)
![Extension](/images/Extension_UI_schema.png)
As an example, we have created an extension that adds a link to the profile menu in the top right and also adds a new "Support" page to the app so that users of the application know who to talk to if they have issues.
You can find the full example [on GitHub](https://github.com/sartography/sample-process-models/tree/sample-models-1/extensions/support).
@ -58,5 +59,9 @@ Here are some of the use cases already implemented by our users:
- Rendering the output of these APIs using Jinja templates and markdown
Extensions in SpiffArena offer a robust mechanism to tailor the software to unique business requirements.
When considering an extension, also consider whether the code would be more properly included in the core source code or as a connector inside your [connector proxy](/dev/connector_proxy.md).
When considering an extension, also consider whether the code would be more properly included in the core source code or as a connector inside your [connector proxy](connector_proxy).
In cases where an extension is appropriate, by following the instructions in this guide, organizations can expand the system's functionality to meet their unique needs.
```{tags} how_to_guide, dev_docs
```

View File

@ -43,3 +43,6 @@ The route component may or may not delegate some of its work to a service.
The generated Docker image uses nginx to serve static HTML/CSS/JS files that are generated by the Vite build process.
These files can also be hosted on a CDN.
```{tags} reference, dev_docs
```

View File

@ -22,3 +22,6 @@ The `run` method is where the actual work is done (send HTTP request, etc).
If you end up writing a connector, please consider contributing it back to the community and please consider contributing to this documentation.
Thank you!
```{tags} how_to_guide, dev_docs
```

View File

@ -0,0 +1,14 @@
# Technical Docs
```{toctree}
:caption: Technical Docs
:maxdepth: 1
technical_overview
developer_setup
backend_api
frontend
connector_proxy
how_to_build_a_connector
extensions
process
```

View File

@ -50,3 +50,6 @@ graph LR
code[Hammer code] --> PR
PR --> Profit
```
```{tags} how_to_guide, dev_docs
```

View File

@ -24,12 +24,16 @@ C[Connector Proxy]
```
SpiffArena is a system that allows users to build and execute BPMN diagrams.
It is composed of three applications, [spiffworkflow-frontend](frontend), [spiffworkflow-backend](backend), and, optionally, a [connector proxy](connector_proxy).
It is composed of three applications, [spiffworkflow-frontend](frontend), [spiffworkflow-backend](backend_api), and, optionally, a [connector proxy](connector_proxy).
## Source code layout
From a source code perspective, there are three repositories that may be of interest:
* [spiff-arena](https://github.com/sartography/spiff-arena) - Includes spiffworkflow-frontend, spiffworkflow-backend, and connector-proxy-demo.
* [SpiffWorkflow](https://github.com/sartography/SpiffWorkflow) - The core SpiffWorkflow library, 10 years old, Python, awesome, [well-documented](https://spiffworkflow.readthedocs.io/).
* [bpmn-js-spiffworkflow](https://github.com/sartography/bpmn-js-spiffworkflow) - The frontend library that extends bpmn-js to work with SpiffWorkflow.
- [spiff-arena](https://github.com/sartography/spiff-arena) - Includes spiffworkflow-frontend, spiffworkflow-backend, and connector-proxy-demo.
- [SpiffWorkflow](https://github.com/sartography/SpiffWorkflow) - The core SpiffWorkflow library, 10 years old, Python, awesome, [well-documented](https://spiffworkflow.readthedocs.io/).
- [bpmn-js-spiffworkflow](https://github.com/sartography/bpmn-js-spiffworkflow) - The frontend library that extends bpmn-js to work with SpiffWorkflow.
```{tags} reference, dev_docs
```

12
docs/explanation/index.md Normal file
View File

@ -0,0 +1,12 @@
# Explanation
In this section, you will find explanations of key concepts and processes in SpiffWorkflow.
```{toctree}
:maxdepth: 1
:titlesonly:
articles
understanding_the_terminology
dev/index
process_error_handling
```

View File

@ -9,3 +9,6 @@ You can use this process model to handle the error in whatever way is most benef
Process models often have ways to communicate with users--using an email connector if you use email, or a Slack connector if you use Slack, etc.--and you can use these same capabilities to inform the appropriate users when an error occurs.
You can choose to ignore errors that occur in less important models, and you can escalate errors in other models to the CEO.
Since you are using a process model, you have all the power you need to handle errors in a way that matches your business requirements.
```{tags} explanation, debugging_diagrams
```

View File

@ -0,0 +1,93 @@
# Understanding the terminology
## BPMN and SpiffWorkflow
Business Process Model and Notation (BPMN) is a diagramming language for specifying business processes.
BPMN bridges the gap between business and IT, creating a shared process language for both parties.
BPMN efficiently depicts the details of process behaviors in a diagram.
The precision of its meaning allows it to describe the technical details that control process execution in an automation engine.
SpiffWorkflow enables you to create code to execute a BPMN diagram directly.
By using SpiffWorkflow, a client can create the BPMN diagram and have their product work without the need for you to modify the Python code, thus improving response and turnaround time.
## Flow Objects
Flow objects are divided into three groups: Events, Gateways, and Tasks.
### Events
Events, represented by circles, describe occurrences during a process.
There are three main types of events in business process modeling: start events, intermediate events, and end events.
| **Event** | **Symbol**| **Description** |
|-----------|-----------|-----------------|
| Start Event |![Untitled](/images/Start.png) | Signals the first step of a process. |
| Intermediate Event | ![Untitled](/images/Intermediate.png) | Represents any event that occurs between a start and end event. |
| End Event | ![Untitled](/images/End.png) | Signals the final step in a process. |
### Gateways
Gateways represent decision points in a process.
Based on certain conditions or rules, they determine which path the process will follow.
There are various types of gateways:
| **Gateway** | **Symbol**| **Description** |
|---------------|-----------|-----------------|
| Exclusive Gateway |![Untitled](/images/Exclusive.png) | Evaluates the state of the business process and, based on the condition, diverges the flow into one or more mutually exclusive paths. |
| Event-based Gateway | ![Untitled](/images/Eventbased.png) | An event-based gateway is similar to an exclusive gateway in that both involve one path in the flow. However, with an event-based gateway, you evaluate which event has occurred, not which condition has been met. |
| Inclusive Gateway | ![Untitled](/images/Inclusive.png) | An inclusive gateway diverges the process flow into one or more flows. |
| Complex Gateway | ![Untitled](/images/Complex.png) | Complex gateways are used only for the most intricate flows in the business process. They use words instead of symbols and thus require more descriptive text. |
### Tasks
Tasks represent activities or work that needs to be done as part of a process.
They can either be manual tasks that require human intervention or automated tasks that are performed by systems or applications.
| **Task** | **Symbol** | **Description** |
|---------------|------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Service | ![Untitled](/images/Service_task.png) | A task that utilizes a Web service, an automated application, or other types of service to complete the task. |
| Send |![Untitled](/images/Send.png) | A task that sends a message to another pool. The task is completed once the message has been sent. |
| Receive | ![Untitled](/images/Receive.png) | A Receive Task indicates that the process has to wait for a message to arrive in order to continue. The task is completed once the message has been received. |
| User | ![Untitled](/images/User.png) | A User Task denotes that a human performer completes the task with the help of a software application. |
| Manual | ![Untitled](/images/Manual.png) | A Manual Task is a task performed without the aid of any business process execution engine or application. |
| Business Rule |![Untitled](/images/Businessrule.png)| A Business Rule Task provides a mechanism for a process to supply input to a Business Rules Engine and then obtain the output provided by the Business Rules Engine. |
| Script | ![Untitled](/images/Script.png) | A Script Task defines a script that the engine can interpret. |
| Call Activity | ![Untitled](/images/Callactivity.png) | A call activity allows you to call and invoke another process as part of this process. |
| Sub-Process | ![Untitled](/images/SubProcess.png) | Sub-processes allow you to collapse and expand tasks to convey information quickly. |
## Connecting Objects
Connecting objects are lines that connect BPMN flow objects.
Three different types exist: sequence flows, message flows, and associations.
| **Connecting Objects** | **Symbol** | **Description** |
|---------------|------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Sequence Flow Symbol | ![Untitled](/images/BPMN_sequence_flow-80x31.png) | Connects flow objects in the proper sequential order. |
| Message Flow Symbol |![Untitled](/images/BPMN_message_flow-80x30.png) | Represents messages sent from one process participant to another. |
| Association Symbol | ![Untitled](/images/BPMN_association-80x31.png) | Illustrates relationships between artifacts and flow objects. |
## Artifacts
Artifacts are used to provide additional information or documentation within a process.
They include data objects (which represent information or data needed for the process), annotations (which provide explanatory or descriptive text), and groups (which are used to visually group related elements).
| **Artifact** | **Symbol** | **Description** |
|---------------|------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Data Object |<div style="height:50px;width:50px"> ![Untitled](/images/Data_Object.png) | Data objects can represent data input to the process, data resulting from the process, or data that needs to be collected. |
| Data Storage |![Untitled](/images/Data_Storage.png) | Data storage facilitates the storage or access of data associated with a business model. If your process produces any data, it will become necessary to store that data. |
| Group | <div style="height:50px;width:50px"> ![Untitled](/images/Group.png) | Groups organize tasks or processes that are significant in the overall process. |
| Annotation | <div style="height:50px;width:50px"> ![Untitled](/images/Annotation.png) | Annotations allow you to describe the business process and flow objects in greater detail. |
## Swimlanes
Swimlanes are used in a BPMN diagram to organize aspects of a process.
They visually group objects into lanes, with each aspect of the process added to a separate lane.
These elements can be arranged either horizontally or vertically.
Not only do swimlanes organize activities into separate categories, but they also reveal delays, inefficiencies, and the individuals responsible for each step in a process.
![Untitled](/images/BPMN_swimlane-500x197.png)
```{tags} reference, building_diagrams
```

14
docs/fullindex.md Normal file
View File

@ -0,0 +1,14 @@
---
orphan: true
---
# Full Index
```{toctree}
:titlesonly:
tutorials/index
how_to_guides/index
reference/index
explanation/index
```

View File

@ -13,7 +13,7 @@ Users can interact with pre-built models, make modifications, and visualize proc
## How to Log in to SpiffArena
```{image} ./images/Login.png
```{image} /images/Login.png
:alt: Login Screen
:class: bg-primary mb-1
:width: 230px
@ -39,7 +39,7 @@ In this section, we will navigate through the platform and provide a general ove
Once you are signed in, you can start exploring the home page.
The home page has three tab sections: **In Progress**, **Completed**, and **Start New**.
![Untitled](images/Untitled_2.png)
![Untitled](/images/Untitled_2.png)
- The "In Progress" section provides an overview of all ongoing process instances, including those initiated by you, those awaiting your action, or those awaiting action from a team you are a member of (Optional).
- The "Completed" section allows you to view all completed process instances, including those initiated by you, those initiated by other SpiffWorkflow users with tasks completed by you, and, if applicable, those with tasks completed by a group of which you are a member.
@ -55,7 +55,7 @@ Each instance has its own set of data and state that is updated as the instance
If you are a member of a team, you may also have one or more instances with tasks waiting for [team name] lists as well.
![Untitled](images/Untitled_3.png)
![Untitled](/images/Untitled_3.png)
### Step 2: Explore the Processes section
@ -65,7 +65,7 @@ The process section provides a comprehensive view of the process ecosystem by sh
A **process group** is a way of grouping a bunch of **process models**, and a **process model** contains all the files necessary to execute a specific process.
```
![Untitled](images/Untitled_4.png)
![Untitled](/images/Untitled_4.png)
### Step 3: Explore the Process Instances section
@ -73,7 +73,7 @@ The Process Instance section provides a detailed view of individual process inst
This section includes essential information such as the instance ID, process name, the individual who started the process, the end date, and the current status.
![Untitled](images/Untitled_5.png)
![Untitled](/images/Untitled_5.png)
When getting started with SpiffWorkflow, it's essential to take the time to explore and familiarize yourself with the platform's interface and features.
Feel free to ask questions about the platform's features or how to get started.
@ -92,7 +92,7 @@ Once you're signed in, you'll see three tabs in the Home section: In progress, C
If you want to start a new process, click the "Start New +" button.
This will bring up the "Processes I can start" section.
![Untitled](images/Untitled_6.png)
![Untitled](/images/Untitled_6.png)
```{admonition} The Landing Page
:class: info
@ -104,7 +104,7 @@ This will bring up the "Processes I can start" section.
Next, you will see a list of available processes that you have permission to start.
Choose the process you want to initiate and click “Start”.
![Untitled](images/Untitled_7.png)
![Untitled](/images/Untitled_7.png)
You have successfully started a new process instance in SpiffWorkflow.
@ -130,11 +130,11 @@ There will be three types of instances shown:
- **Waiting for me:** This section displays a list of process instances with tasks assigned to you and are currently waiting for you to respond to.
- **Waiting for [team name]:** If you are a member of SpiffWorkflow, this section displays a list of process instances with tasks assigned to a group you are a member of and currently waiting for someone in that group to complete them.
![Untitled](images/Untitled_8.png)
![Untitled](/images/Untitled_8.png)
In the case of new users who haven't started or been part of any process or been assigned to any team, you won't be able to see any items on the home page.
![Untitled](images/Untitled_9.png)
![Untitled](/images/Untitled_9.png)
### Step 2: Respond to the request
@ -143,7 +143,7 @@ Upon opening the process instance, you can respond to the request based on the r
Depending on the task requirements, this may involve submitting additional information, reviewing the task, or any other action item.
![Untitled](images/Untitled_10.png)
![Untitled](/images/Untitled_10.png)
That's it!
With these simple steps, you can efficiently review tasks in SpiffWorkflow.
@ -165,11 +165,11 @@ There are two ways of finding your process instances.
Option 1: Once you're signed in, navigate to the home section.
Here you will find a list of all the process instances you've initiated.
![Untitled](images/Untitled_11.png)
![Untitled](/images/Untitled_11.png)
Option 2: You can also view the processes you have initiated in the **"Process Instances"** section.
![Untitled](images/Untitled_12.png)
![Untitled](/images/Untitled_12.png)
### Step 2: Select the process instance you want to view
@ -179,7 +179,7 @@ Navigate to the BPMN diagram section.
Here you can see the current task highlighted in **yellow**.
The grey represents the path which was taken by the current process steps.
![Untitled](images/Untitled_13.png)
![Untitled](/images/Untitled_13.png)
By following these steps, you can easily view the steps of the process you initiated and keep track of progress.
@ -197,7 +197,7 @@ To check the metadata of a process instance, follow these steps.
Once you're signed in, navigate to the home section.
Here you will find a list of all the process instances you've initiated under **“Started by me”**.
![Untitled](images/Untitled_14.png)
![Untitled](/images/Untitled_14.png)
### Step 2: View metadata for the selected process instance
@ -205,7 +205,7 @@ Click on the process instance you want to view.
Upon clicking this, you will be able to view the information about the given instance.
You'll find the metadata under the details option in the process instance.
![Untitled](images/Untitled_15.png)
![Untitled](/images/Untitled_15.png)
By following these simple steps, you can easily view the metadata for a process instance in SpiffWorkflow.
@ -222,32 +222,32 @@ With these steps, you'll be able to access process models easily and efficiently
Once you have successfully signed in, navigate to the process section.
This section allows you to access all the process groups and process models you have access to.
![Untitled](images/Untitled_16.png)
![Untitled](/images/Untitled_16.png)
### Step 2: Find and click on the process
You can either search for a process model using the search bar or navigate through displayed processes to find the process model.
![Untitled](images/View_Forms1.png)
![Untitled](/images/View_Forms1.png)
### Step 3: Access the process model files
Once you have clicked on the process you want to view, a list of the model files that are associated with the process will appear.
![Untitled](images/View_Forms3.png)
![Untitled](/images/View_Forms3.png)
By following these simple steps, you can easily view process model files in SpiffWorkflow.
If you want to view or create information on specific process models, we allow you to create an about section.
![Untitled](images/View_Forms2.png)
![Untitled](/images/View_Forms2.png)
If you are creating a model, you can add information in the about section.
We have integrated Markdown support, enabling you to create rich, formatted descriptions for your process models directly within the platform.
In order to use this feature, simply create a **README File** inside the process model called README.md and document the model, so everyone can be on the same page.
Furthermore, to check the process instances you started, you can also switch to the "My process instance" tab.
![View forms](images/View_Forms4.png)
![View forms](/images/View_Forms4.png)
---
@ -263,13 +263,13 @@ Here are the steps to view and filter process instances in SpiffWorkflow.
Once you are signed in, navigate to the "Process Instances" section.
Within the "Process Instances" section, you'll see a list of all the instances for the processes you can access.
![Untitled](images/Untitled_19.png)
![Untitled](/images/Untitled_19.png)
If you are on a home page, you can navigate to the table you wish to filter.
Look for the black funnel icon in the top right-hand corner above the table and click on the icon.
By clicking on the filter icon, you'll be taken to a full-screen process view.
![Filter Icon](images/Filter_icon.png)
![Filter Icon](/images/Filter_icon.png)
### Step 2: Click on Filter option
@ -278,44 +278,44 @@ This will expand the filter section where you will be able to provide details ab
This allows you to enter various details, including the process model, start date, end date, and time.
To refine your search, you can enter multiple filter parameters.
![Untitled](images/Untitled_20.png)
![Untitled](/images/Untitled_20.png)
### Step 3: Apply Filters
Once you have entered all the relevant filter details, click on the "**Apply**" button to apply the filters.
The system will then display all the process instances matching the input details.
![Untitled](images/Untitled_21.png)
![Untitled](/images/Untitled_21.png)
To filter process instances by **process-defined metadata**, follow these steps:
- Search for the specific **process** you want to filter and click on the column option to select metadata options.
![Untitled](images/Untitled_22.png)
![Untitled](/images/Untitled_22.png)
- The metadata fields will be displayed in the dropdown.
Select the field you want to display and click on "**Save**" to apply the changes.
![Untitled](images/Untitled_23.png)
![Untitled](/images/Untitled_23.png)
- After saving the details, the newly created column will be displayed.
Finally, click on the “**Apply**” button to reflect the changes.
![Untitled](images/Untitled_24.png)
![Untitled](/images/Untitled_24.png)
### (Optional) Step 4: Save Perspectives
If you wish to save the perspectives, click on the "**Save**" button.
![Untitled](images/Untitled_25.png)
![Untitled](/images/Untitled_25.png)
A prompt will appear, allowing you to provide a name for the identifier associated with the saved filter.
Enter a descriptive name for the filter identifier and “**Save**” changes.
Now you can search for specific processes using Process Instance Perspectives.
![Untitled](images/Untitled_26.png)
![Untitled](/images/Untitled_26.png)
![Untitled](images/Untitled_27.png)
![Untitled](/images/Untitled_27.png)
### (Optional) Step 5: Filter by ID
![Untitled](images/Untitled_28.png)
![Untitled](/images/Untitled_28.png)
If you want to filter by ID, go to the "Find by Id" section of the page.
Enter the ID and click "Submit".
@ -336,28 +336,28 @@ Here are the colors used in BPMN Process:
- **Meaning:** The task is completed.
- **Implication:** Tasks or activities associated with this process have been successfully completed, and no further action is required.
![Colors](images/Grey_color.png)
![Colors](/images/Grey_color.png)
2. **Yellow Color:**
- **Meaning:** The process instance has started and is currently in progress.
- **Implication:** This color signifies that the task is active and ongoing.
It may require monitoring or further inputs to proceed.
![Colors](images/Yellow.png)
![Colors](/images/Yellow.png)
3. **Red/Pink Color:**
- **Meaning:** Indicates errors in the task.
- **Implication:** There might be issues or obstacles preventing the task from proceeding as expected.
Immediate attention and troubleshooting may be required.
![Colors](images/Red.png)
![Colors](/images/Red.png)
4. **Purple Color:**
- **Meaning:** The activity has been canceled.
- **Implication:** This task was intentionally stopped before completion.
This could be due to time constraints, external triggers, or other predefined conditions that have been set as boundary events.
![Colors](images/Purple.png)
![Colors](/images/Purple.png)
---
## How to Check Milestones and Events
@ -367,7 +367,7 @@ Here are the colors used in BPMN Process:
A milestone is a specific point in a process that signifies a significant event or state.
It provides a high-level overview of the progress made in the process.
![Milestones](images/Milestone_Screenshot.png)
![Milestones](/images/Milestone_Screenshot.png)
In BPMN, if you draw an intermediate event and do not specify its type (like message, signal, start, or end) but give it a name, it becomes a milestone.
Essentially, a milestone is an event that hasn't been set to something specific.
@ -377,7 +377,7 @@ Essentially, a milestone is an event that hasn't been set to something specific.
Events provide a detailed log of everything that happens in a process.
They record every task and its execution time.
![Events](images/Events_Example.png)
![Events](/images/Events_Example.png)
The events tab provides a detailed log of all the tasks and their execution times.
It can be noisy due to the granularity of the information, but it's essential for understanding the intricacies of the process.
@ -397,7 +397,7 @@ This communication can take various forms:
To explain the concept, we are using a relatable example involving two processes: the Waiter and the Chef.
**Waiter Process**:
![Waiter Process](images/waiter.png)
![Waiter Process](/images/waiter.png)
1. The waiter takes an order.
2. This order is then communicated to the chef via a message.
@ -405,7 +405,7 @@ To explain the concept, we are using a relatable example involving two processes
**Chef Process**:
![Chef Process](images/chef.png)
![Chef Process](/images/chef.png)
1. The chef starts by receiving the order message from the waiter.
2. After preparing the meal, the chef sends a message back to the waiter, signaling that the order is ready.
@ -421,7 +421,7 @@ The chef's process starts by listening for the order message, preparing the meal
One of the complexities in BPMN messaging is ensuring that the right processes are communicating with each other, especially when multiple instances are running.
This is achieved using correlation keys and properties.
![correlation](images/Corelation.png)
![correlation](/images/Corelation.png)
- **Correlation Keys**: These represent the topic of the conversation.
In the given example, the correlation key is the "order".
@ -448,7 +448,7 @@ To copy the short link:
- **Access the Process Instance**: Open the process instance that you wish to share.
- **Find the Short Link Icon**: Look for the link icon near the process instance heading and click on the link icon to copy the short link to your clipboard automatically. Please refer to the screenshot provided.
![Short Link](images/Short_link.png)
![Short Link](/images/Short_link.png)
Now, you can paste the short link into your desired communication medium to share it with others.
@ -462,12 +462,12 @@ To access and review completed user forms within a specific process model, follo
2. **Examine Completed Forms**:
- **Forms You Completed**: In this section, you can view the forms that you have completed.
It allows you to see the specific details and inputs you provided in each task.
![Completed by me](images/Completed_by_me.png)
![Completed by me](/images/Completed_by_me.png)
- **Forms Completed by Others**: This part shows all the forms completed by any user.
You can see who completed each form and the last time it was updated.
However, for privacy and security reasons, you won't be able to view the specific input details of forms completed by others.
![Completed by others](images/Completed_by_others.png)
![Completed by others](/images/Completed_by_others.png)
This approach ensures you can monitor and review the progress of user forms within any process model while maintaining the confidentiality of inputs made by other users.
@ -483,11 +483,11 @@ This guide provides a step-by-step approach to access and understand the task in
2. **Access the Process Instance**: After running the process, navigate to the specific process instance within the SpiffWorkflow interface.
This is where you can track the progress of the tasks.
![Access process instance](images/Access_Process_Instance.png)
![Access process instance](/images/Access_Process_Instance.png)
3. **View Task Details**: Click on the executed task or event that has been completed.
For instance, in this example, we clicked on "user task".
![Access task instance](images/Task_instance.png)
![Access task instance](/images/Task_instance.png)
You will be presented with detailed information about each task instance, including its status and execution timestamp.
@ -495,7 +495,7 @@ For example:
- `2: 04-01-2024 19:58:11 - MAYBE`
- `3: 04-01-2024 19:58:10 - COMPLETED`
- `4: 04-01-2024 19:58:07 - COMPLETED`
![Access task instance](images/task_instance_history.png)
![Access task instance](/images/task_instance_history.png)
- **COMPLETED Status**: Tasks marked as 'COMPLETED' have finished their execution successfully and have moved the workflow forward.
- **MAYBE Status**: Indicates that the task still exists within SpiffWorkflow.
@ -503,3 +503,6 @@ While these tasks could be omitted for clarity, retaining them provides a comple
Viewing task instance history in SpiffWorkflow is now more streamlined and informative, thanks to recent updates.
Users can effectively track each task's execution, status, and timing, gaining insights into the workflow's overall performance.
```{tags} tutorial
```

View File

@ -46,3 +46,6 @@ The test will also fail if the process never completes or if an error occurs.
Go to a process model and either click “Run Unit Tests” to run all tests for the process model or click on the “play icon” next to a "test_something.json" file.
Next, you will see either a green check mark or a red x.
You can click on these colored icons to get more details about the passing or failing test.
```{tags} how_to_guide, debugging_diagrams
```

View File

@ -1,4 +1,4 @@
# How to Create a BPMN Diagram
# Create a BPMN Diagram
Starting to model a business process can indeed be a challenging task, especially when multiple departments and users are involved.
Here are some helpful tips to guide you through the process and create effective process models:
@ -6,7 +6,7 @@ Here are some helpful tips to guide you through the process and create effective
**Understand BPMN Symbols:**
Begin by thoroughly understanding the meaning and usage of each BPMN symbol.
This will ensure that you use the symbols correctly to represent the various elements of your business process.
Refer to the [Learn Basics](../appendices/bpmn_terminology.md) section to learn more about each symbol.
Refer to the [Learn Basics](/explanation/understanding_the_terminology) section to learn more about each symbol.
Grouping them together can create a mind map that's easy to remember.
@ -21,7 +21,7 @@ Represent your main process flow, also known as the "Happy Path," at the top in
Then, depict alternative scenarios and exceptional cases leading to the bottom.
This makes the process flow easier to comprehend.
![model_convention](images/model_convention.png)
![model_convention](/images/model_convention.png)
**Choose Descriptive Names:**
Use clear and human-readable names for activities, events, and gateways in your process.
@ -29,28 +29,28 @@ Utilize action verbs to represent activities effectively.
Start the task name with an action-oriented verb that indicates what needs to be done in the task.
For example, "Approve Request," "Review Documents," "Send Invoice," etc.
![naming_convention](images/naming_convention.png)
![naming_convention](/images/naming_convention.png)
**Start with High-Level Overview:**
Beginning with a high-level overview of the process provides a clear understanding of the overall flow and allows for the identification of major process components before delving into finer details.
By breaking the process down into smaller subprocesses or call activities with different levels of detail, the model becomes more manageable and easier to comprehend.
By breaking the process down into smaller sub-processes or call activities with different levels of detail, the model becomes more manageable and easier to comprehend.
This approach enables the use of placeholders where you are unclear about what the process looks like, allowing for flexibility in filling in missing information as it becomes available.
It also facilitates the focus on specific sections, preventing feeling overwhelmed by the complexity of the entire process.
This systematic approach to process modeling ensures that essential aspects are adequately captured while providing room for further refinement.
![high_level](images/high_level.png)
![high_level](/images/high_level.png)
**Include Exception Handling:**
Model not only the primary process flow 'Happy Path' but also the exception handling and error recovery paths.
This makes the process model more robust and prepares stakeholders for potential challenges.
![out_of_stock](images/out_of_stock.png)
![out_of_stock](/images/out_of_stock.png)
**Use Lanes for Roles and Responsibilities:**
Utilize swimlanes (pools and lanes) to clearly define the roles and responsibilities when there are different departments or individuals involved in the process.
This visual representation will help demonstrate the interactions and handoffs between role players, enhancing the understanding of their involvement throughout the process.
![lanes](images/lanes_1.png)
![lanes](/images/lanes_1.png)
**Embrace Iterative Approach:**
Creating a perfect model on the first attempt is unlikely.
@ -60,14 +60,14 @@ Understand that your process model is not static.
It will evolve over time, and there will always be room for improvement.
Stay open to finding better ways to represent the process as you gain more insights.
![version](images/version.png)
![version](/images/version.png)
**Make Note of Assumptions and Possible Challenges:**
During the modeling process, it is essential to clearly document any assumptions made, especially when you may not have complete knowledge of user behavior or real-life process dynamics.
By documenting these assumptions, you provide context and ensure transparency when sharing the model with others.
Remember to verify these assumptions during real-life testing to validate their accuracy and adjust the model accordingly.
![version](images/assumptions.png)
![version](/images/assumptions.png)
**Example:**
Initially, we assumed that every customer going to checkout would complete their payment.
@ -86,3 +86,7 @@ Ensure that each case reaches a conclusive outcome.
Implement timers to manage actions or decisions within specific time frames, enabling progress through the process despite delays or inactivity.
Additionally, utilize intermediate events, such as message events, signal events, or error events, to capture specific occurrences during the process.
These events guide the process towards a conclusion and allow for the cancellation of instances from within the process or through external triggers.
```{tags} how_to_guide, building_diagrams
```

View File

@ -1,4 +1,4 @@
# Displaying Content
# Display Content
The SpiffArena platform offers powerful features for displaying content within your BPMN processes.
Follow the steps below to effectively display content in your processes.
@ -29,20 +29,20 @@ Now, let's explore the process workflow of the content display process model and
### Display Content Process Overview
![Image](images/Display_Content.png)
![Image](/images/Display_Content.png)
Here is a summary of the process:
1. **Start Event and Introduction Manual Task**
![Image](images/Introduction_manual.png)
![Image](/images/Introduction_manual.png)
The process begins with a Start Event, signaling the start of the workflow.
It is followed by a Manual Task called "Introduction" that displays a welcome message or instructions for the users.
The content to be displayed is specified in the task's properties panel.
![Image](images/Manual_instructions_panel.png)
![Image](/images/Manual_instructions_panel.png)
2. **User Task with Form**
@ -50,7 +50,7 @@ A User Task named "simple form" is included, allowing users to complete a form.
The properties panel of the User Task contains a JSON form schema, defining the structure of the form.
The instructions panel of the User Task guides users to fill out the form, indicating that the entered values will be shown in the subsequent Manual Task.
![Image](images/User_instructions.png)
![Image](/images/User_instructions.png)
3. **Script Tasks**
@ -59,23 +59,26 @@ Script Task 1 introduces a delay using the code "time.sleep(3)" and generates a
Script Task 2 includes a delay with the code "time.sleep(1)" and focuses on making the colors more playful.
Script Task 3 includes a delay with the code "time.sleep(2)" and aims to increase the silliness level.
![Image](images/Script_instructions.png)
![Image](/images/Script_instructions.png)
4. **Manual Task to Display Content**
![Image](images/Manual_instructions.png)
![Image](/images/Manual_instructions.png)
A Manual Task will display content based on the collected data and script-generated information.
The instructions panel of the Manual Task provides the content to be displayed, which includes the form data entered by the user.
It also offers an optional Chuck Norris joke based on user preference and a table of silly color names generated using Jinja templating.
![Image](images/Manual_instructions_side_by_side.png)
![Image](/images/Manual_instructions_side_by_side.png)
5. **End Event**
![Image](images/End1.png)
![Image](/images/End1.png)
The process concludes with an End Event, indicating the end of the workflow.
The instructions panel of the End Event suggests next steps, such as exploring the diagram in edit mode and completing the "Request a Playground" task.
![Image](images/end_message.png)
![Image](/images/end_message.png)
```{tags} how_to_guide, building_diagrams
```

View File

@ -0,0 +1,11 @@
# Build Diagrams
```{toctree}
:maxdepth: 1
create_a_bpmn_diagram
use_user_tasks_and_forms
display_content
overview_of_builtin_examples
use_executable_and_nonexecutable_tasks
bpmn_unit_tests
```

View File

@ -1,4 +1,4 @@
# Built-in Examples Overview
# Overview of Built-in Examples
When logging into the dashboard, it is crucial to familiarize yourself with the functions it offers and how the underlying engine operates.
In the demo website, we will explore two examples: the Minimal Example and the Essential Example, to provide a clear understanding of the process.
@ -170,21 +170,21 @@ Here are the four files in the process:
**BPMN editor**: The BPMN editor is a primary file that runs the engine.
In the Minimal Example, we learned that it allows you to visually design and represent business processes using the Business Process Model and Notation (BPMN) standard.
![image](images/BPMN_Editor.png)
![image](/images/BPMN_Editor.png)
**DMN table**: A file that defines decision-making logic using the Decision Model and Notation (DMN) standard, enabling you to model complex decision rules and outcomes.
![Image](images/DMN_table.png)
![Image](/images/DMN_table.png)
Here's what a DMN table looks like:
![Image](images/DMN_Properties_Table.png)
![Image](/images/DMN_Properties_Table.png)
**JSON Schema**: A file that describes the structure, format, and validation rules for data in JSON format, ensuring data integrity and interoperability.
![Image](images/JSONSchema.png)
![Image](/images/JSONSchema.png)
**UI Schema**: A file that defines the layout, structure, and behavior of user interfaces, facilitating the development of intuitive and interactive user experiences.
![Image](images/UI-Schema.png)
![Image](/images/UI-Schema.png)
### Process Workflow
@ -193,28 +193,28 @@ The process initiates with a start event, serving as the entry point for the wor
Following the start event, a manual task named "Introduction" is incorporated, responsible for displaying a welcoming message to the user.
![](images/Manual_EM.png)
![](/images/Manual_EM.png)
Next, a **User task** named "Display Questions" is added, facilitating the collection of information from real individuals through web forms.
In the properties section, a JSON form is created to specify the questions for the users to respond to.
![](images/User_EM.png)
![](/images/User_EM.png)
Once the user completes the form, the gathered data is passed on to a **script task** named "Modify Information", responsible for calculating the data score.
The script for this calculation is embedded in the properties section.
![](images/Script_Em.png)
![](/images/Script_Em.png)
As an alternative approach, the data score can also be determined using a **DMN table** named "Determine Score Message".
Decision tables offer an effective means of defining business rules in an easily comprehensible format.
The DMN table calculates the score based on predefined rules.
![](images/DMN_EM.png)
![](/images/DMN_EM.png)
After the score calculation, an **exclusive gateway** is employed to make decisions based on the determined score.
Three manual tasks are defined, each displaying a different message based on the obtained score:
![](images/Exclusive_Em.png)
![](/images/Exclusive_Em.png)
a. **Worst Possible Response**: If the score indicates the worst possible response, a manual task displays a message stating that it is completely wrong.
@ -225,4 +225,7 @@ c. **Perfect Score**: If the score indicates a perfect score, a manual task disp
Once the score messages are displayed, a **signal event** is included, providing users with the option to continue and conclude the process or choose to repeat the process from the beginning.
Signal events enable external forces or internal errors to interact with the process, and in this scenario, a button press allows for the interruption of the diagram's normal course.
![](images/Signal_EM.png)
![](/images/Signal_EM.png)
```{tags} tutorial, building_diagrams
```

View File

@ -1,4 +1,4 @@
# Executable and Non-Executable Tasks
# Use Executable and Non-Executable Tasks
In SpiffWorkflow, a process model can be either **Executable** or **Non-Executable**, and the designation impacts how the workflow behaves:
- **Executable Process**: Configured for automation and execution by the workflow engine. All tasks within the process are actionable and designed to run dynamically.
@ -9,20 +9,20 @@ In SpiffWorkflow, a process model can be either **Executable** or **Non-Executab
1. Open the BPMN editor in SpiffWorkflow. Select the process canvas or diagram header. Navigate to the **Properties Panel** on the right side.
2. Under the **General** section, uncheck the **Executable** checkbox.
![non-executable task](images/non_executable.png)
![non-executable task](/images/non_executable.png)
3. Save your changes. Go to the process model page and the Start Button will not appear, indicating that the process is non-executable.
![non-executable task](images/non_executable1.png)
![non-executable task](/images/non_executable1.png)
### **Executable Processes**:
1. Follow the same steps as above, but check the **Executable** checkbox.
![executable task](images/executable.png)
![executable task](/images/executable.png)
2. Save your changes. The Start Button will now appear when the model is opened.
![executable task](images/executable1.png)
![executable task](/images/executable1.png)
@ -36,3 +36,5 @@ In SpiffWorkflow, a process model can be either **Executable** or **Non-Executab
| Workflow design phase | ❌ | ✅ |
| System integration | ✅ | ❌ |
```{tags} how_to_guide, debugging_diagrams
```

View File

@ -1,4 +1,4 @@
# User Tasks and Forms
# Use User Tasks and Forms
User Tasks are a key feature in BPMN (Business Process Model and Notation) workflows where human interaction is required to complete a process. In SpiffWorkflow, User Tasks are closely integrated with Forms, which are used to collect input or display information to users during process execution.
Some key features of user tasks are:
@ -20,7 +20,7 @@ Some key features of user tasks are:
**2. Configuring the User Task**
Click on the user task in the BPMN editor to display the **Properties Panel** on the right. Below are the key sections and settings for user tasks:
```{image} ./images/user_tasks_properties.png
```{image} /images/user_tasks_properties.png
:alt: Service Task
:width: 300px
:align: right
@ -70,7 +70,7 @@ To simplify the form creation process, we use the React JSON Schema Form (RJSF)
It enables you to create dynamic and interactive forms with ease.
The RJSF library is open source, free to use, and follows the principles of open standards.
![Image](images/Form_json.png)
![Image](/images/Form_json.png)
Please note that while this guide provides a basic understanding of JSON Schema and RJSF, there is much more to explore.
We encourage you to refer to the official [RJSF documentation](https://rjsf-team.github.io/react-jsonschema-form/docs/) for comprehensive details and advanced techniques.
@ -83,7 +83,7 @@ However, it's important to note that the form builder may have certain limitatio
While the form builder provides convenience and simplicity, using the JSON editor offers greater flexibility and control over the form structure.
![Image](images/Form-Builder.png)
![Image](/images/Form-Builder.png)
3. **Creating Forms from BPMN Editor**
@ -94,21 +94,21 @@ Upon creating a new BPMN file, open it to access the editor.
- In the editor, go to the "Web form" section. Navigate to the "Web form" and If starting from scratch, launch the editor and name your file (e.g., "demo"). After saving, it will automatically generate three essential files for us: a schema, UI settings, and some example data.
![Form Editor](images/Form_editor.png)
![Form Editor](/images/Form_editor.png)
**Understanding the Three Core Files**
- **JSON Schema**: This file describes the form. It allows you to define titles, property names, and more. As you make changes in this file, they will reflect in the form preview window. This schema outlines the properties or data points you aim to collect.
![Form Editor](images/Form_editor1.png)
![Form Editor](/images/Form_editor1.png)
- **UI Settings**: This file offers customization options for your form. You can edit descriptions, titles, and more. Changes made here are reflected in real-time on the form.
![Form Editor](images/Form_editor2.png)
![Form Editor](/images/Form_editor2.png)
- **Data View**: This section displays the data users input into the form. It provides a preview of what will be captured when the form is submitted. Both the data view and the form stay synchronized, ensuring consistency.
![Form Editor](images/Form_editor3.png)
![Form Editor](/images/Form_editor3.png)
**Adding and Customizing Form Elements**
@ -116,7 +116,7 @@ You can add existing templates to add elements to your form, such as text areas,
Each element can be further customized in the JSON schema and UI settings.
For instance, you can set the UI widget correctly for each element, ensuring it appears as intended on the form.
![Form Editor](images/Form_editor4.png)
![Form Editor](/images/Form_editor4.png)
### SpiffArena react-jsonschema-form enhancements
@ -348,7 +348,7 @@ Here's how to use it:
}
```
![Styling_Form](images/styling_forms.png)
![Styling_Form](/images/styling_forms.png)
#### Key Points:
- **Layout Design**: The `ui:layout` specifies that `firstName` and `lastName` should appear side by side. Each field's size adjusts according to the screen size (small, medium, large), utilizing grid columns for responsive design.
@ -411,7 +411,7 @@ In the example above:
- The help text "Pick whatever # you want!" will be displayed for the `form_num_1` field.
**Output**:
![Display UI Help](images/Display_UI_Help.png)
![Display UI Help](/images/Display_UI_Help.png)
By incorporating such help texts, you can enhance the user experience and ensure that users fill out the form correctly.
@ -429,7 +429,7 @@ To incorporate the markdown widget into your rjsf form, follow these steps:
"ui:widget": "markdown"
```
![rjsf markdown](images/rsjf_markdown.png)
![rjsf markdown](/images/rsjf_markdown.png)
#### Numeric Range Field
@ -518,7 +518,7 @@ This structure can be represented in the form's schema as follows:
**Form Preview**:
![Nested Forms](images/Nested_form_display.png)
![Nested Forms](/images/Nested_form_display.png)
By using this feature, you can effectively implement new buttons for nested forms or repeating sections, improving the form's usability for collecting multiple related entries from users.
@ -573,7 +573,7 @@ To verify the functionality of the Guest User Task feature, follow these steps:
Design a process model that includes a manual or user task. Ensure you check the **"allow guest"** checkbox.
![Guest user](images/guest_user1.png)
![Guest user](/images/guest_user1.png)
2. **Start the Process Model**:
@ -583,7 +583,7 @@ Initiate the process model using the same user account that created it.
Navigate to the process instance show page and retrieve the GUID of the human task.
![Guest user](images/guest_user2.png)
![Guest user](/images/guest_user2.png)
4. **Construct the Access URL**:
@ -597,7 +597,9 @@ Replace `[domain]`, `[process_instance_id]`, and `[task_guid]` with appropriate
5. **Test as a Guest User**:
Open an incognito or private browsing window (not logged into Spiff). Navigate to the constructed URL. Confirm that the guest user can complete the task.
![Guest user](images/guest_user3.png)
![Guest user](/images/guest_user3.png)
The Guest User Task feature improves usability for non-logged-in users by allowing them to complete designated tasks seamlessly.
```{tags} how_to_guide, building_diagrams
```

View File

@ -52,3 +52,6 @@ Run the process and once it's complete, you can see the response in the workflow
You have successfully configured a `Connector Proxy` for use with `SpiffArena`.
You made a call from a workflow to get a dog fact.
Now, imagine if that call was to communicate with an external system relevant to your business processes.
```{tags} how_to_guide, devops
```

View File

@ -1,4 +1,4 @@
# Configuring Okta as an OpenID Provider
# Configure Okta as an OpenID Provider
This guide provides steps to configure Okta as an OpenID Provider (alternative to Keycloak) for SpiffWorkflow.
The setup involves creating an OpenID Connect (OIDC) application, configuring environment variables, and ensuring group information is passed through correctly.
@ -70,7 +70,7 @@ Adjust the configuration to ensure group information is included in the OpenID C
For one of our users, the following setup was used to pass group information to SpiffWorkflow:
![image](images/okta_config.png)
![image](/images/okta_config.png)
- Environment variables included the OpenID details and group scope.
@ -81,4 +81,7 @@ For one of our users, the following setup was used to pass group information to
🔗 **Helpful Links**:
- [Okta App Integration Wizard](https://help.okta.com/en-us/content/topics/apps/apps_app_integration_wizard_oidc.htm)
- [Groups Claim Documentation](https://developer.okta.com/docs/guides/customize-tokens-groups-claim/main/)
- [Active Directory Groups in Okta](https://support.okta.com/help/s/article/Can-we-retrieve-both-Active-Directory-and-Okta-groups-in-OpenID-Connect-claims?language=en_US).
- [Active Directory Groups in Okta](https://support.okta.com/help/s/article/Can-we-retrieve-both-Active-Directory-and-Okta-groups-in-OpenID-Connect-claims?language=en_US).
```{tags} how_to_guide, devops
```

View File

@ -1,4 +1,4 @@
# How to Configure Secrets in SpiffArena
# Configure Secrets
## Introduction
@ -18,6 +18,7 @@ Secrets are only used in service tasks.
- **SpiffArena Admin**: Can add or configure secrets.
- **External Service Admin**: For example, an admin in Bamboo HR can provide the API key that a SpiffArena admin would then configure as a secret.
- **Diagram Author**: Can reference secrets in service tasks but cannot see the actual secret values.
---
## How to Configure Secrets
@ -25,26 +26,32 @@ Secrets are only used in service tasks.
### Adding a New Secret
1. **Navigate to the Configuration Section**: Go to the configuration section from the top panel and click on "Add a secret." Ensure you have admin access to SpiffArena.
![Configuration Section](images/Secrets_step_1.png)
![Configuration Section](/images/Secrets_step_1.png)
2. **Add New Secret**: Create a new secret by entering a key and its corresponding value. Once saved, the value will be encrypted.
![Secrets Section](images/Secrets_step_2.png)
![Secrets Section](/images/Secrets_step_2.png)
### Using Secrets in Service Tasks
1. **Open the BPMN Diagram**: Open the diagram where you want to configure the service task.
1. **Open the BPMN Diagram**: Open the diagram where you want to configure the service task.
2. **Configure Service Task**: Click on the service task you want to configure and in the service properties panel, search for the Operator ID that you want to add a secret for and mention the response variable to capture the result of the request.
2. **Configure Service Task**: Click on the service task you want to configure and in the service properties panel, search for the Operator ID that you want to add a secret for and mention the response variable to capture the result of the request.
3. **Add Secret Reference**: In the parameters, you can reference the secret using the following format:
3. **Add Secret Reference**: In the parameters, you can reference the secret using the following format:
```xml
spiffworkflow:parameter id="headers" type="any" value="{ "Authorization": "Bearer SPIFF_SECRET:github_oauth" }"
```
```xml
spiffworkflow:parameter id="headers" type="any" value="{ "Authorization": "Bearer SPIFF_SECRET:github_oauth" }"
```
Here, `SPIFF_SECRET:github_oauth` will be replaced by the actual, unencrypted value from the database when the service task runs.
![Secrets Configuration](/images/Secrets_configure_2.png)
Here, `SPIFF_SECRET:github_oauth` will be replaced by the actual, unencrypted value from the database when the service task runs.
![Secrets Configuration](images/Secrets_configure_2.png)
---
Configuring secrets in SpiffArena provides a secure way to handle sensitive information in your BPMN diagrams.
It allows you to make your processes public without exposing critical data, thereby enhancing both transparency and security.
```{tags} how_to_guide
```

View File

@ -1,4 +1,4 @@
# Deployment
# Deploy
The minimal deployment is to mimic the docker-compose.yml file at the root of spiff-arena.
Steps for a more hardened production setup after that baseline include:
@ -26,3 +26,7 @@ graph TD;
API, Celery Worker, Connector Proxy, and Frontend can run any number of replicas.
The Background container is like a cron container, so it should run only one replica.
```{tags} how_to_guide
```

View File

@ -1,4 +1,4 @@
# Deploying a Connector Proxy as an AWS Lambda Function
# Deploy a Connector Proxy as an AWS Lambda Function
This guide shows you how to deploy the demo `Connector Proxy` as an `AWS Lambda Function` and integrate it with [SpiffArena](https://www.spiffworkflow.org/pages/spiffarena/).
We will use the [Getting Started Guide](https://www.spiffworkflow.org/posts/articles/get_started/) as the basis for integration, but the steps should easily map to any custom installation.
@ -64,4 +64,7 @@ Click your function URL again to see a greeting from our deployed Connector Prox
## Integrating With SpiffArena
Congratulations, your Connector Proxy has been deployed as a Lambda function.
For information on configuring SpiffArena to use the new Connector Proxy URL, please see [Configure a Connector Proxy](configure_connector_proxy).
For information on configuring SpiffArena to use the new Connector Proxy URL, please see [Configure a Connector Proxy](configure_a_connector_proxy).
```{tags} how_to_guide, devops
```

View File

@ -0,0 +1,14 @@
# Deploy
```{toctree}
:maxdepth: 1
deploy
configure_secrets
manage_permissions
configure_okta_as_an_openid_provider
use_pathbased_routing
work_with_redis_celery_broker
deploy_a_connector_proxy_as_an_aws_lambda_function
configure_a_connector_proxy
manage_process_models
```

View File

@ -1,4 +1,4 @@
# Admin and Permissions
# Manage Permissions
Permissions can be defined and managed at different levels such as process groups, individual processes, or users.
@ -34,11 +34,12 @@ This is just for documentation purposes and isn't used by the system.
In this example, we are describing permissions for an "admin-type-user."
There are three keys allowed under each permission:
* groups: lists the groups to which the permission applies (admin in this case)
* actions: lists the specific actions that are permitted for the group
* actions can be negated by prepending with "DENY:"
* uri: defines the target resource for these permissions
* /* indicates that the permissions apply to all resources within the system
- groups: lists the groups to which the permission applies (admin in this case)
- actions: lists the specific actions that are permitted for the group
- actions can be negated by prepending with "DENY:"
- uri: defines the target resource for these permissions
- /\* indicates that the permissions apply to all resources within the system
**Permissions allowed:**
@ -56,15 +57,15 @@ There are three keys allowed under each permission:
To allow reading and updating, it would look like this:
````
```
["read", "update"]
````
```
To allow reading and DISALLOW updating, it would look like this:
````
```
["read", "DENY:update"]
````
```
## Site Administration
@ -76,7 +77,7 @@ In such cases, you have the flexibility to define and tailor admin requirements
From the main menu select 'Processes' and click on the 'Add a process group' button.
![add_a_process_group](images/add_a_process_group.png)
![add_a_process_group](/images/add_a_process_group.png)
Complete the Process Groups form by entering the
@ -86,11 +87,11 @@ Complete the Process Groups form by entering the
Once the required fields are filled, the form can be submitted.
![add_a_process_group](images/process_groups_tile.png)
![add_a_process_group](/images/process_groups_tile.png)
The new Process Groups tile will be available under the Process Groups view.
![site_administration](images/site_administration.png)
![site_administration](/images/site_administration.png)
### Step 2: Add Process Model
@ -100,23 +101,23 @@ The new Process Groups tile will be available under the Process Groups view.
- Description: Provide a brief description of the process model, outlining its purpose or functionality.
- Notification Type: Specify the type of notification related to the process model.
- Notification Addresses: Enter the addresses or destinations where notifications should be sent in the event that a process instance encounters an error.
You do not need to worry about setting these values unless you are interested in custom {ref}`process_error_handling`.
You do not need to worry about setting these values unless you are interested in custom {ref}`process_error_handling`.
- Metadata Extraction Path: You can provide one or more metadata extractions to uplift data from your process instances to provide quick access in searches and perspectives.
Specify the key and path/location where metadata extraction should occur within the process model.
For example, if you have a script task that runs the statement `great_color = "blue"`, then you would set the extraction path to `great_color`.
You would probably also set the extraction key to `great_color`.
But if you wanted to, you could just call it `color`, assuming you wanted that to be the name used in reports, etc.
Specify the key and path/location where metadata extraction should occur within the process model.
For example, if you have a script task that runs the statement `great_color = "blue"`, then you would set the extraction path to `great_color`.
You would probably also set the extraction key to `great_color`.
But if you wanted to, you could just call it `color`, assuming you wanted that to be the name used in reports, etc.
Make sure to accurately fill in all the required fields in the Process Model form to ensure proper configuration and functionality.
![add_process_model](images/add_process_model.png)
![add_process_model](/images/add_process_model.png)
### Step 3: Upload Workflows
All the required workflows can be downloaded from [Github - set-permissions](https://github.com/sartography/sample-process-models/tree/sample-models-1/site-administration/set-permissions)
Select to upload all downloaded files to the newly created Process model.
![add_file](images/add_file.png)
![add_file](/images/add_file.png)
**Upload the following files:**
@ -124,15 +125,15 @@ Select to upload all downloaded files to the newly created Process model.
- groups_permissions.dmn
- users_to_groups.dmn
![upload_file](images/upload_file.png)
![upload_file](/images/upload_file.png)
The Process Model view should now include all uploaded files.
![upload_file](images/admin_workflows.png)
![upload_file](/images/admin_workflows.png)
### Step 4: Understand the Process Models
[Read more about DMN tables and how they work here.
](../Building_Diagrams/dmn.md)
](/reference/bpmn/decision_tables)
#### Users to Groups
@ -146,22 +147,22 @@ Based on DMN functionality, leaving the "*" column empty means that all rules ('
Read more about DMN tables to understand how the rules engine can be utilized for many different scenarios.
```
![user_to_groups](images/user_to_groups.png)
![user_to_groups](/images/user_to_groups.png)
#### Group Permission
Now that the groups have been identified, their permissions can be set by adding the group name under the "permissions_group" column.
- To determine a user's capabilities within the permissible scope, you can define specific permissions.
These permissions can be combined in a sequence if multiple apply to a particular rule.
For instance, ["read", "start"] indicates that the user can perform both reading and starting actions.
Alternatively, [All] can be employed to grant unrestricted access.
These permissions can be combined in a sequence if multiple apply to a particular rule.
For instance, ["read", "start"] indicates that the user can perform both reading and starting actions.
Alternatively, [All] can be employed to grant unrestricted access.
- The hit policy is set to "Collect" which means that all conditions that are true will be applied.
[Read more about DMN tables and hit policies here.](../Building_Diagrams/dmn.md)
[Read more about DMN tables and hit policies here.](/reference/bpmn/decision_tables)
- The permission URL can be configured to define the user's access privileges.
Our objective is to streamline the process by minimizing the necessity of being familiar with the complete set of permission URLs.
In most instances, utilizing BASIC and ELEVATED permissions, as well as PM/PG, should be sufficient.
However, it is also feasible to directly incorporate any API URL into the permissions.
Our objective is to streamline the process by minimizing the necessity of being familiar with the complete set of permission URLs.
In most instances, utilizing BASIC and ELEVATED permissions, as well as PM/PG, should be sufficient.
However, it is also feasible to directly incorporate any API URL into the permissions.
In truth, what you are doing is writing an expression.
In this case, it would read that if the variable 'permissions_group' type string is equal to 'permissions' variable of type string then set the 'permission_url' equal to the associated value.
@ -171,9 +172,13 @@ If you find coding more familiar and preferable to constructing DMN tables, you
This similarity can help clarify or make it easier for you to understand the DMN table structure and its relation to the permission configuration.
```
![group_permission](images/group_permission.png)
![group_permission](/images/group_permission.png)
### Step 5: Start Process
To ensure that User Groups and Permissions take effect, it is necessary to run the process at least once.
Whenever changes are made to any of these diagrams, like adding a user group or permission, the process should be started and completed successfully in order for the changes to be applied.
```{tags} how_to_guide, dev_docs
```

View File

@ -1,4 +1,4 @@
# Process Model Management
# Manage Process Models
Managing your process models is similar to managing your source code.
As such, it is recommended to store these models in a version control system like Git so that you can track changes and collaborate with others.
@ -63,3 +63,6 @@ It is also possible to promote models piecemeal.
This is activated via `SPIFFWORKFLOW_BACKEND_GIT_PUBLISH_TARGET_BRANCH`, which is for a specific use case where you want to publish specific process models from the source branch to a target Git branch, rather than promoting the entire Git branch.
A publish function appears in the UI when `SPIFFWORKFLOW_BACKEND_GIT_PUBLISH_TARGET_BRANCH` is set.
It is possibly not a recommended strategy for promoting changes, however, as it is not a standard Git workflow, and it is more error-prone in situations where multiple process models need to work together.
```{tags} how_to_guide, devops
```

View File

@ -1,4 +1,4 @@
# Path-based Routing
# Use Path-based Routing
If you are using the frontend, the frontend and backend need to share cookies.
The backend, in particular, sets a cookie, and the frontend needs to read it.
@ -47,3 +47,6 @@ SPIFFWORKFLOW_BACKEND_WSGI_PATH_PREFIX=/api
This will be used as the WSGI `SCRIPT_NAME`, which essentially removes the prefix before handing the URL to the app for routing, but also allows URLs generated by the app to return things like /api/v1.0/status.
WSGI is a standard for serving Python apps, and there are implementations like Gunicorn, Green Unicorn, uWSGI, mod_wsgi, CherryPy, etc.
```{tags} how_to_guide, devops
```

View File

@ -1,4 +1,4 @@
# Redis Celery Broker
# Work with Redis Celery Broker
SpiffWorkflow can be configured to use Celery for efficient processing.
Redis can be used as both a broker and backend for Celery.
@ -39,3 +39,7 @@ As such, if you wanted to get ALL of the results, you could use a command like:
```sh
echo 'keys celery-task-meta-\*' | redis-cli | sed 's/^/get /' | redis-cli
```
```{tags} how_to_guide, dev_docs
```

View File

@ -0,0 +1,14 @@
# How-to Guides
**Step-by-step guides**: Covering key operations and common tasks.
```{toctree}
:maxdepth: 1
:caption: How-to Guides
building_diagrams/index
manage_processes
manage_welcome_messages
use_custom_process_metadata
troubleshoot_locally
deployment/index
```

View File

@ -22,7 +22,7 @@ If an instance is not active, it indicates that the process has already been com
> **Step 2: Locate Suspend Icon**
![suspend](images/suspend.png)
![suspend](/images/suspend.png)
- Next to the Process Instance Id, look for the icon that resembles the 'Suspend' icon and select it to initiate the suspension of the process instance.
@ -33,12 +33,12 @@ This action will pause the process instance, granting you the ability to make ed
When ready, the process instance can be resumed.
The process instance remains highlighted in yellow.
![suspend](images/active_process_instance.png)
![suspend](/images/active_process_instance.png)
| ✅ Success |
| :---------------------------------------------------------------: |
| Confirm that the status has changed from waiting to suspended |
| ![suspended](images/suspended.png) |
| ![suspended](/images/suspended.png) |
## Resume a Process Instance
@ -46,7 +46,7 @@ Resuming a process is essential for ensuring that the process can continue its e
> **Step 1: Locate Resume Icon**
![resume](images/resume.png)
![resume](/images/resume.png)
- Next to the Process Instance Id, look for the icon that resembles the 'Resume' icon and select it to resume the suspended process instance.
@ -57,12 +57,12 @@ Resuming a process is essential for ensuring that the process can continue its e
Depending on where the process instance is in its journey, the status might be waiting or some other active status.
The process instance remains highlighted in yellow.
![suspend](images/active_process_instance.png)
![suspend](/images/active_process_instance.png)
| ✅ Success |
| :-----------------------------------------------------------------------: |
| Confirm that the status has changed from suspended to an active status. |
| ![waiting](images/waiting.png) |
| ![waiting](/images/waiting.png) |
## Terminate a Process Instance
@ -71,7 +71,7 @@ There are various reasons for terminating a process instance such as the instanc
> **Step 1: Locate Terminate Icon**
![terminate](images/terminate.png)
![terminate](/images/terminate.png)
- Next to the Process Instance Id, look for the icon that resembles the 'Terminate' icon and select it to terminate the process instance.
@ -83,15 +83,15 @@ There are various reasons for terminating a process instance such as the instanc
> **Step 3: Confirm Termination**
- Before proceeding with the termination, it is essential to be absolutely certain about your decision.
![terminate_warning](images/terminate_warning.png)
![terminate_warning](/images/terminate_warning.png)
- The process status will now be 'Terminated' and the last active task will be highlighted in purple.
![suspend](images/terminated_process_instance.png)
![suspend](/images/terminated_process_instance.png)
| ✅ Success |
| :------------------------------------------------------------------: |
| Confirm that the status has changed from suspended to 'terminated' |
| ![suspend](images/terminated.png) |
| ![suspend](/images/terminated.png) |
## Reset a Process Instance
@ -104,7 +104,7 @@ There are various reasons for terminating a process instance such as the instanc
> **Step 3: Suspend the Process**
Ensure the status has changed from _user_input_required_ to _suspended_
![Reset](images/reset_process2.png)
![Reset](/images/reset_process2.png)
> **Step 4: Go to the relevant past activity**
@ -113,7 +113,7 @@ Only a previously completed section highlighted in grey can be chosen.
> **Step 5: Select 'View process instance at the time when this task was active.
> '**
![Reset](images/reset_process3.png)
![Reset](/images/reset_process3.png)
> **Step 6: Observe the task once highlighted in grey should now be yellow.
> **
@ -123,14 +123,14 @@ A previously completed section is now active and shown in yellow.
> **Step 7: Select 'Reset Process Here' icon in the popup window.
> **
![Reset](images/reset_process5.png)
![Reset](/images/reset_process5.png)
> **Step 8: "Resume" process instance.
> **
The process instance should be resumed by selecting the Resume icon next to the Process Instance Id.
![Reset](images/reset_process6.png)
![Reset](/images/reset_process6.png)
> **Step 9: Refresh page**
@ -184,14 +184,15 @@ In the case of the example, once you resume the instance and complete Manual Tas
Migration is not possible when the following activities are active (started/ready/waiting):
- Call activity/Subprocess - The task itself cannot be changed once it is active.
Tasks inside the call activity or subprocess can be updated if they have not been reached.
- Call activity/Sub-process - The task itself cannot be changed once it is active.
Tasks inside the call activity or sub-process can be updated if they have not been reached.
Tasks that directly follow one of these activities are special, and you cannot migrate an instance if you add or remove one of these.
- Multi Instance tasks
- Loop tasks
- Signal boundary event - add/remove signals
- Looping back through a part of a process which has already completed once
#### Forms
Forms are not serialized as part of the process model specification, and therefore are not considered during migration.
@ -220,3 +221,7 @@ General path params:
- **modified_process_model_identifier**: the process model identifier separated by colons - `:` - instead of slashes
- **process_instance_id**: the id of the process instance to run on.
```{tags} how_to_guide
```

View File

@ -1,4 +1,4 @@
# Welcome Messages in SpiffWorkflow
# Manage Welcome Messages
## Introduction
@ -13,28 +13,32 @@ This guide will walk you through the steps to modify this message in SpiffWorkfl
1. **Open the Process:**
Navigate to the onboarding process model within SpiffWorkflow.
![Process Model](images/onboarding_1.png)
![Process Model](/images/onboarding_1.png)
2. **Access the `welcome.bpmn` File:**
This is the specific file where the welcome message is configured.
Ensure you're at the path `siteadministration.onboarding`.
This path is crucial as it's the trigger for the welcome message.
![Access Welcome file](images/onboarding_2.png)
![Access Welcome file](/images/onboarding_2.png)
3. **Locate the End Event:**
The end event within this process contains the welcome message.
Any message configured in this end event will be displayed to users upon login.
![Click End Event](images/onboarding_3.png)
![Click End Event](/images/onboarding_3.png)
4. **Launch the Editor:**
Use the built-in editor to modify the content of the welcome message.
Ensure that your changes are clear, concise, and welcoming to provide users with a positive experience.
![Launching Editor](images/onboarding_4.png)
![Launching Editor](/images/onboarding_4.png)
After making your desired modifications, save the changes to update the welcome message.
Once you've updated the welcome message, it will be displayed prominently on the home page after users log in.
The message will be positioned in a way that it's one of the first things users see, ensuring they receive the intended greeting every time they access the platform.
```{tags} how_to_guide
```

View File

@ -1,4 +1,4 @@
# Troubleshooting: Running Server Locally
# Troubleshoot Locally
When setting up the SpiffWorkflow backend project locally, you might encounter issues related to the `sample-process-models` directory.
This documentation aims to address those concerns.
@ -29,9 +29,9 @@ If you prefer not to use the `sample-process-models` directory or want to start
- Run the following command with the path to your chosen repository:
```
SPIFFWORKFLOW_BACKEND_BPMN_SPEC_ABSOLUTE_DIR=/path/to/any/git/repo ./bin/run_server_locally
```
```
SPIFFWORKFLOW_BACKEND_BPMN_SPEC_ABSOLUTE_DIR=/path/to/any/git/repo ./bin/run_server_locally
```
### 3. Use Docker Compose
@ -55,7 +55,7 @@ You may need to install additional system dependencies:
One person decided that mysqlclient and psycopg2 were more trouble than they were worth and removed them from the pyproject.toml, opting instead to run `poetry add pymysql`.
If you are using mysql, psycopg2 is not necessary, and pymysql is a pure Python implementation of the MySQL client library.
In that case, Python won't recognize MySQLdb as a module, so after the above installs (which you would do pre-Poetry), add these lines to __init__.py in the backend project:
In that case, Python won't recognize MySQLdb as a module, so after the above installs (which you would do pre-Poetry), add these lines to `__init__.py` in the backend project:
```python
import pymysql
@ -74,3 +74,7 @@ Setting up the SpiffWorkflow backend project locally can be straightforward once
Whether you choose to clone the `sample-process-models` repository, use a different git repository, or opt for Docker Compose, the solutions provided should help you get started without any hitches.
If you encounter further issues, always refer back to the repository's README or seek assistance from our Discord community.
```{tags} how_to_guide
```

View File

@ -1,4 +1,4 @@
# Custom Process Metadata
# Use Custom Process Metadata
This guide will walk you through the steps to create a process model that generates custom metadata using a metadata extraction path and how to query that metadata using process instance filtering.
@ -39,3 +39,6 @@ This guide will walk you through the steps to create a process model that genera
- You can also filter process instances based on your custom column using the same column options.
By following these steps, you can create a process model that generates custom metadata and efficiently query that metadata using process instance filtering.
```{tags} how_to_guide, building_diagrams
```

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 278 KiB

After

Width:  |  Height:  |  Size: 278 KiB

View File

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 124 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 965 B

After

Width:  |  Height:  |  Size: 965 B

View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

View File

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View File

Before

Width:  |  Height:  |  Size: 305 B

After

Width:  |  Height:  |  Size: 305 B

View File

Before

Width:  |  Height:  |  Size: 451 B

After

Width:  |  Height:  |  Size: 451 B

View File

Before

Width:  |  Height:  |  Size: 235 B

After

Width:  |  Height:  |  Size: 235 B

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View File

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 130 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 676 B

After

Width:  |  Height:  |  Size: 676 B

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View File

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Some files were not shown because too many files have changed in this diff Show More