Updating the structure file (#420)

* updating the structure

* Adding Alex Suggestions
This commit is contained in:
usama9500 2023-07-28 20:16:36 +05:00 committed by GitHub
parent 299f4a6823
commit 5615be9a20
10 changed files with 324 additions and 282 deletions

View File

@ -1,228 +0,0 @@
# Building Blocks of the System
These process models serve as the foundational components of our
system, forming the building blocks for creating powerful workflows.
It is essential to gain a thorough understanding of each process model
on an individual level, comprehending their functionalities and
capabilities.
Here are fundamental blocks of our system:
## Displaying 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:
In this guide, we'll explore how to effectively display content in
Spiffarena, providing a seamless user experience and engaging
presentation of information.
Let's dive in and learn the key aspects of displaying content within
your workflows.
### Markdown: Formatting Content
Markdown is a powerful tool for formatting and styling your content in
Spiffarena. With Markdown, you can easily add headings, lists, tables,
hyperlinks, and more to enhance the readability and visual appeal of
your displayed content.
### Jinja Templating: Dynamic Content Generation
Jinja Templating in Spiffarena empowers you to generate dynamic
content based on variables, conditions, and logic. By leveraging
Jinja's syntax and functionality, you can customize your content to
adapt to specific scenarios, display personalized information, or
perform calculations based on collected data.
### Combining Markdown and Jinja: Unleashing the Power
By utilizing the strengths of Markdown and Jinja, you can create rich,
interactive, and data-driven content that goes beyond static text.
We'll demonstrate using an example on how to leverage Markdown and
Jinja together to create captivating content that responds to user
input and presents dynamic information.
### Basic Example for displaying content
In our Spiffarena dashboard, we have a simple example of how to
display content in the basics section. Now, let's explore the process
workflow of the content display process model and discover various
ways to present content in different scenarios.
#### Display Content Process Overview:
![Image](Images/Display_Content.png)
Here is a summary of the process:
1. **Start Event and Introduction Manual Task**
![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/Manu_instructions_panel.png)
2. **User Task with Form**
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)
3. **Script Tasks**
Three Script Tasks are incorporated into the process, each serving a
specific purpose.
Script Task 1 introduces a delay using the code "time.sleep(3)" and
generates a dictionary of colors.
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)
4. **Manual Task to Display Content**
![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_instructionss.png)
5. **End Event**
![Image](Images/End.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)
## Using Forms
This feature allows you to create custom forms for collecting and
managing data within your workflows. Whether you need a simple
feedback form or a complex multi-step form, Spiffarena provides you
with the tools to build and integrate forms seamlessly.
With Spiffarena's form builder, you can start with basic form elements
and gradually add more advanced components as your form requirements
evolve.
Let's dive in and explore the possibilities of creating forms in
Spiffarena.
### Instructions on Creating Forms
Forms play a crucial role in capturing data, and Spiffarena offers a
powerful form-building capability. Here are the ways to create forms:
1. Leveraging JSON Schema
JSON Schema is an emerging standard for describing the structure of
data in a JSON file. JSON Schema forms the foundation for building
forms in Spiffarena.
To simplify the form creation process, we leverage the React JSON
Schema Form (RJSF) library. RJSF is a powerful tool that uses JSON
Schema as its basis. 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)
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.
2. Using Form Builder
An alternative approach to creating JSON code is to utilize the form
builder feature, which allows you to easily create various fields
without the need for writing JSON manually.
However, it's important to
note that the form builder may have certain limitations in terms of
features and may not be as powerful as using the JSON editor directly.
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)
### Basic Example for Using Forms
Now that you have a grasp of how to create forms in Spiffarena using
JSON Schema and RJSF, it's time to put your knowledge into action.
Lets cover the example of using forms process model in the basics.
The BPMN diagram initiates with a start event, which is followed by a
manual task aimed at providing a comprehensive understanding of web
forms and the various approaches to displaying them.
![Image](Images/Form_manual_editor.png)
The expected output of the form during the process execution can be
observed in the attached image.
![Image](Images/manual_outpul.png)
Moving forward, the diagram incorporates a user task specifically
designed for form display. Within the properties panel of the user
task, two essential files are included: a JSON Schema (containing the
form description in RSJF format) and a UI Schema (outlining the rules
for displaying the form based on the RSJF schema).
![Image](Images/BPMN_Form_display.png)
The anticipated output of the form when the process is executed can be
visualized in the attached image.
![Image](Images/Form_display.png)
Following that, a manual task is included, offering a simple form
explanation. As users submit the form, the manual task will display
the respective explanation.
![Image](Images/Manual_lasttt.png)
An attached image provides an overview of the expected form output
during the process execution.
![Image](Images/Manual_last.png)
## Writing Scripts
asdas
## Making Decisions
asda
## Assigning Tasks
asda
## Gathering Information
asdads

View File

@ -0,0 +1,111 @@
# Displaying 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:
In this guide, we'll explore how to effectively display content in
SpiffArena, providing a seamless user experience and engaging
presentation of information.
Let's dive in and learn the key aspects of displaying content within
your workflows.
## Markdown: Formatting Content
Markdown is a powerful tool for formatting and styling your content in
SpiffArena. With Markdown, you can easily add headings, lists, tables,
hyperlinks, and more to enhance the readability and visual appeal of
your displayed content.
## Jinja Templating: Dynamic Content Generation
Jinja Templating in SpiffArena empowers you to generate dynamic
content based on variables, conditions, and logic. By leveraging
Jinja's syntax and functionality, you can customize your content to
adapt to specific scenarios, display personalized information, or
perform calculations based on collected data.
## Combining Markdown and Jinja: Unleashing the Power
By utilizing the strengths of Markdown and Jinja, you can create rich,
interactive, and data-driven content that goes beyond static text.
We'll demonstrate using an example on how to leverage Markdown and
Jinja together to create captivating content that responds to user
input and presents dynamic information.
## Basic Example for displaying content
In our SpiffArena dashboard, we have a simple example of how to
display content in the basics section. Now, let's explore the process
workflow of the content display process model and discover various
ways to present content in different scenarios.
### Display Content Process Overview:
![Image](Images/Display_Content.png)
Here is a summary of the process:
1. **Start Event and Introduction Manual Task**
![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/Manu_instructions_panel.png)
2. **User Task with Form**
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)
3. **Script Tasks**
Three Script Tasks are incorporated into the process, each serving a
specific purpose.
Script Task 1 introduces a delay using the code "time.sleep(3)" and
generates a dictionary of colors.
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)
4. **Manual Task to Display Content**
![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_instructionss.png)
5. **End Event**
![Image](Images/End.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)

View File

@ -0,0 +1,92 @@
# Using Forms
This feature allows you to create custom forms for collecting and
managing data within your workflows. Whether you need a simple
feedback form or a complex multi-step form, SpiffArena provides you
with the tools to build and integrate forms seamlessly.
With SpiffArena's form builder, you can start with basic form elements
and gradually add more advanced components as your form requirements
evolve.
Let's dive in and explore the possibilities of creating forms in
SpiffArena.
## Instructions on Creating Forms
Forms play a crucial role in capturing data, and SpiffArena offers a
powerful form-building capability. Here are the ways to create forms:
1. Leveraging JSON Schema
JSON Schema is an emerging standard for describing the structure of
data in a JSON file. JSON Schema forms the foundation for building
forms in SpiffArena.
To simplify the form creation process, we leverage the React JSON
Schema Form (RJSF) library. RJSF is a powerful tool that uses JSON
Schema as its basis. 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)
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.
2. Using Form Builder
An alternative approach to creating JSON code is to utilize the form
builder feature, which allows you to easily create various fields
without the need for writing JSON manually.
However, it's important to
note that the form builder may have certain limitations in terms of
features and may not be as powerful as using the JSON editor directly.
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)
## Basic Example for Using Forms
Now that you have a grasp of how to create forms in SpiffArena using
JSON Schema and RJSF, it's time to put your knowledge into action.
Lets cover the example of using forms process model in the basics.
The BPMN diagram initiates with a start event, which is followed by a
manual task aimed at providing a comprehensive understanding of web
forms and the various approaches to displaying them.
![Image](Images/Form_manual_editor.png)
The expected output of the form during the process execution can be
observed in the attached image.
![Image](Images/manual_outpul.png)
Moving forward, the diagram incorporates a user task specifically
designed for form display. Within the properties panel of the user
task, two essential files are included: a JSON Schema (containing the
form description in RSJF format) and a UI Schema (outlining the rules
for displaying the form based on the RSJF schema).
![Image](Images/BPMN_Form_display.png)
The anticipated output of the form when the process is executed can be
visualized in the attached image.
![Image](Images/Form_display.png)
Following that, a manual task is included, offering a simple form
explanation. As users submit the form, the manual task will display
the respective explanation.
![Image](Images/Manual_lasttt.png)
An attached image provides an overview of the expected form output
during the process execution.
![Image](Images/Manual_last.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -0,0 +1,91 @@
# Script Tasks
Writing scripts refers to the process of creating custom code or scripts to increase the functionality and automation of a software application or system.
The scripting language used for writing scripts in SpiffArena is Python, a widely used programming language. Python provides a rich set of libraries, frameworks, and tools that facilitate script development, making it a popular choice for implementing custom logic and automation.
Let's explore an example of a Script Task in our basics section:
1. **Start Event and User Task - "Form"**
The process begins with a Start Event, followed by a User Task named "Form." Users will fill out the form, and the three values from the form will be passed to the next task, which is a Script Task.
2. **Script Task to collect data**
In the Script Task, we have created a script that collects three variables from the form and calculates a score based on certain conditions. The score is then stored in the "score" variable. Lets delve into how we configured the script tasks:
![Script_Task](Images/Script_task_example.png)
**Step 1**: With the script task selected, you will notice the properties tab.
**Step 2**: Within the properties tab, there should be a field where you can write or edit a script. Paste or write your script in this field.
Here's the script we added for this example:
``` python
if flag_stars.lower().strip() == "twelve":
num_correct += 1
elif int(flag_stars) == 12:
num_correct += 1
if "nile" in longest.lower():
num_correct += 1
if "curie" in woman_nobel.lower():
num_correct += 1
score = int(num_correct / 3 * 100)
```
**Step 3**: After adding the script, the next step is to configure unit tests. Within the unit tests section, there are fields to add test inputs and Outputs.
``` json
// Test Inputs
{
"flag_stars": "12",
"longest_river": "nile",
"woman_nobel": "curie"
}
// Test Outputs
{
"flag_stars": "12",
"longest": "nile",
"num_correct": 3,
"score": 100,
"woman_nobel": "curie"
}
```
Now we have a configured our script task with a script and unit tests.
3. **Pre Scripts and Post Scripts**
After the Script Task, we have a Manual Task with a pre-script and instructions to display the score.
![Script_Task](Images/Pre-post_scripts.png)
- **Prescript** is added as an example, While you can have tasks that are dedicated scripts, it can become a bit noisy, and we want our diagrams to convey a clear sense of the business logic and rules. For this reason it is also possible to add scripts to all Task types - using Pre and Post Scripts. This manual task contains a pre-script that also calculated PI using the Leibnizs formula. Here is the pre-script:
``` python
# Initialize denominator
k = 1
# Initialize sum
s = 0
for i in range(1000000):
# even index elements are positive
if i % 2 == 0:
s += 4/k
else:
# odd index elements are negative
s -= 4/k
# denominator is odd
k += 2
pi = s
del(k)
```
- **Post Scripts** are also available on most task types, but they execute AFTER the task is completed. These are great for user forms where you want to modify and clean up the form results before moving on to the next task.

View File

@ -1,17 +0,0 @@
# Admin guide
## Process Instance Operations
### Deleting
In order to delete a process instance, it must be in a terminal status, one of error, completed, or terminated.
Once it is in one of these statuses, go to the process instance show page and click the trash can icon next to the process instance id.
### Terminating
Terminate a process instance if you want it to stop running and no future actions are needed.
If you want to perform other administrative actions on the instance, you may want to suspend it instead.
In order to terminate a process instance, it must be in a running status, anything not a terminal status.
Once it is in one of these statuses, go to the process instance show page and click the stop icon next to the process instance id.

View File

@ -3,33 +3,43 @@
```{toctree}
:maxdepth: 3
:caption: Getting Started
UsingSpiffdemo/Getting_Started.md
learn_basics/learn_basics.md
quick_start/quick_start.md
UsingSpiffdemo/Basic_Tools.md
```
```{toctree}
:maxdepth: 2
:caption: Administration
admin_guide/admin_guide.md
:maxdepth: 3
:caption: Building Diagrams
UsingSpiffdemo/Using_SpiffArena.md
learn_basics/learn_basics.md
bpmn/bpmn.md
UsingSpiffdemo/Displaying_Content.md
UsingSpiffdemo/Forms.md
bpmn/gateways.md
UsingSpiffdemo/Script_Tasks.md
bpmn/sub-processes_and_call_activities.md
bpmn/data_objects.md
bpmn/dmn.md
```
```{toctree}
:maxdepth: 3
:caption: Debugging Diagrams
validating_processes/bpmn_unit_tests.md
```
```{toctree}
:maxdepth: 2
:caption: DevOps
:maxdepth: 3
:caption: DevOps - Installation & Integration
installation_integration/admin_and_permissions.md
installation_integration/permission_url.md
devops_guide/configure_connector_proxy.md
devops_guide/deploy_aws_lambda.md
```
```{toctree}
:maxdepth: 2
:caption: Contributing
documentation/documentation.md
wish_list/wish_list.md
:maxdepth: 3
:caption: Support
spiffsparkles/suspend_resume_terminate.md
```
```{toctree}
:maxdepth: 3
:caption: SpiffSparkles
@ -41,33 +51,14 @@ spiffsparkles/assign_task_to_a_different_user.md
spiffsparkles/process_instance.md
```
```{toctree}
:maxdepth: 3
:caption: BPMN
bpmn/bpmn.md
bpmn/gateways.md
bpmn/sub-processes_and_call_activities.md
bpmn/data_objects.md
bpmn/dmn.md
```
```{toctree}
:maxdepth: 3
:caption: Installation and Integration
installation_integration/admin_and_permissions.md
installation_integration/permission_url.md
```
```{toctree}
:maxdepth: 3
:caption: Appendices
appendices/glossary.md
appendices/articles.md
learn_basics/bpmn_terminology.md
documentation/documentation.md
wish_list/wish_list.md
```
## Indices and tables

View File

@ -9,7 +9,7 @@
## 🚀 Getting Started with SpiffArena
Spiffarena is a platform that facilitates the execution of business processes. To begin using SpiffArena, you can create your demo account using spiffdemo as explained [here](https://spiff-arena.readthedocs.io/en/latest/UsingSpiffdemo/Getting_Started.html#how-to-login-to-spiffarena).
SpiffArena is a platform that facilitates the execution of business processes. To begin using SpiffArena, you can create your demo account using spiffdemo as explained [here](https://spiff-arena.readthedocs.io/en/latest/UsingSpiffdemo/Getting_Started.html#how-to-login-to-spiffarena).
Here, we will provide a generic overview of each section step by step, allowing you to navigate and engage with the platform more effectively.
@ -249,3 +249,5 @@ A prompt will appear, allowing you to provide a name for the identifier associat
If you want to filter by ID, go to the "Find by Id" section of the page. Enter the ID and click "Submit". The system will show you the process instance with the corresponding ID.
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.