* Features

* Fixing build issue

* Fixing FAQ link

* edits to quick start and faq

---------

Co-authored-by: burnettk <burnettk@users.noreply.github.com>
This commit is contained in:
usama9500 2023-10-10 22:21:20 +05:00 committed by GitHub
parent df1a458be7
commit 5fb4171508
11 changed files with 145 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -275,8 +275,41 @@ If you want to filter by ID, go to the "Find by Id" section of the page. Enter t
You can now view the process instances that you filtered for and take appropriate action based on their status. This can help you manage your workflows more efficiently and keep track of the progress of various process instances.
---
## How to Interpret Colors in a BPMN Diagram
One of the key features of BPMN diagrams in SpiffWorkflow is the use of colors to represent different states or statuses of process instances.
Here are the colors used in BPMN Process:
1. **Grey Color:**
- **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)
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)
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)
4. **Purple Color:**
- **Meaning:** The activity has been cancelled.
- **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)
---
## How to check Milestones and Events
### Milestones
@ -293,3 +326,50 @@ Events provide a detailed log of everything that happens in a process. They reco
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.
## How to check messages
Messages in BPMN allow processes to communicate with each other. This communication can take various forms:
- Two processes running concurrently, exchanging messages.
- One process initiating another through a message.
- An external system making an API call, passing a payload (like a JSON data structure) that can either communicate with an ongoing process or initiate a new one.
### The Waiter-Chef Illustration
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)
1. The waiter takes an order.
2. This order is then communicated to the chef via a message.
3. The waiter then waits for a response from the chef, indicating the order's readiness.
**Chef Process**:
![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.
### Setting Up the Processes
The setup involves creating two process models named "Chef" and "Waiter." The waiter's process involves taking an order, setting up variables like table number, drink, and meal, and then sending a message to the chef. The chef's process starts by listening for the order message, preparing the meal, and then sending a confirmation message back to the waiter.
### Correlation Keys and Properties
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.
![corelation](images/Corelation.png)
- **Correlation Keys**: These represent the topic of the conversation. In the given example, the correlation key is the "order".
- **Correlation Properties**: These are unique identifiers within the conversation. In the example, the "table number" serves as the correlation property, ensuring the right waiter communicates with the right chef.
### Execution and Observation
Upon executing the waiter's process, it sends a message to the chef and waits. The chef's process, upon receiving the message, requires user input (indicating the meal's completion). Once the chef confirms the meal's readiness, a message is sent back to the waiter, completing both processes.
For a more visual understanding and a step-by-step walkthrough, you can watch Dan Funk's full tutorial [here](https://www.youtube.com/watch?v=Uk7__onZiVk).

View File

@ -96,3 +96,68 @@ workflow.reset_from_task_id(start.id)
### **19. Designing an Approval Process in SpiffWorkflow**
**Q:** I am designing an approval process using SpiffWorkflow. Can SpiffWorkflow handle scenarios where a task should complete if more than 2 users approve out of 3 assignees?
**A:** Yes, SpiffWorkflow can handle complex approval processes. The [provided video](https://www.youtube.com/watch?v=EfTbTg3KRqc) link offers insights into managing such scenarios using SpiffWorkflow.
**20: I restarted docker-compose, and my process instances in Spiff Arena aren't persistent. How can I ensure they remain after a restart?**
**A:** Make sure you're using the updated "getting started" `docker-compose.yml` file that uses sqlite to persist the database between docker compose restarts.
This will ensure that your process instances remain after a restart.
If you're still facing issues, refer to the provided documentation on admin and permissions for further guidance.
**21: Is it possible to download a process model in Spiff Arena and then re-upload it?**
**A:** Yes, in Spiff Arena, you can download a process model and then re-upload it. However, it's essential to note that all process IDs must be unique across the system. If you're re-uploading a process model, its ID might need to be modified to ensure uniqueness.
**22: What are the "notification addresses" and "metadata extractions" fields when creating a new process model in Spiff Arena?**
**A:** When creating a new process model in Spiff Arena, the "notification addresses" field is used to specify recipients for notifications related to that process.
The "metadata extractions" field is used to extract specific metadata from the process.
Detailed documentation for both fields is available.
It's worth noting that the functionality of "Notification Addresses" might undergo changes in the future to centralize the logic and avoid splitting configurations.
**23: Why doesn't the Spiff Arena frontend always load completely?**
**A:** The issue might arise when the frontend cannot communicate with the backend.
Recent updates have been made to address this specific problem.
Previously, the backend could deadlock when it received a high number of concurrent requests, exhausting the available worker processes.
Since it uses built-in openid, each request would need to communicate with the backend itself.
This issue has been resolved in the newer versions. To potentially fix this, you can update your setup by running the following commands in the directory where you downloaded the `docker-compose.yml` file:
```
docker compose pull
docker compose down
docker compose up -d
```
By doing this, you'll pull the latest images, shut down the current containers, and then start them up again with the updated configurations.
This should help in ensuring that the frontend loads completely and communicates effectively with the backend.
**24: I'm using an M1/M2 Mac and facing issues with docker-compose in Spiff Arena. How can I resolve this?**
**A:** Ensure that you're using the latest versions of Docker and docker-compose.
If you encounter messages about platform mismatches, note that these may just be warnings and not errors.
Update your images and restart the containers as needed.
Instructions in the getting started guide reference `curl`, but if that is not working for you, `wget` may be an option that is already installed on your system.
**25: Why aren't timer events working in Spiff Arena, and how can they be fixed?**
**A:** Timer events in Spiff Arena require a specific syntax for their expressions.
For instance, the expression "R5/PT10S" should be quoted.
This is because the value needs to be derived from a valid Python expression.
Ensure that the background scheduler is running, as timers in Spiff Arena are controlled by it.
If you're still facing issues, refer to the provided sample BPMN file and ensure that your timer expressions match the required format.
**26: Why can't I import an external module in a script task in Spiff Arena?**
**A:** In Spiff Arena, script tasks are designed for lightweight scripting and do not support importing external modules.
If you need to communicate with external systems, it's recommended to use a ServiceTask instead.
ServiceTasks in Spiff Arena utilize a concept called Connector Proxy, an externally hosted system that adheres to a specific protocol.
For tasks like checking if an API is functioning correctly, you can set up a Connector Proxy to handle the request.
Detailed documentation available [here](https://spiff-arena.readthedocs.io/en/latest/DevOps_installation_integration/configure_connector_proxy.html).
If you want to bypass security features of the restricted script engine and import modules from your script tasks, you can set the environment variable: `SPIFFWORKFLOW_BACKEND_USE_RESTRICTED_SCRIPT_ENGINE=false`