Loop and Nested forms (#1282)
* Loop and Nested forms * Updates * Removed Implementation steps * Removed Implementation steps * remove conflict marker --------- Co-authored-by: burnettk <burnettk@users.noreply.github.com>
This commit is contained in:
parent
8b795f994e
commit
4c8ca01740
|
@ -382,19 +382,17 @@ Below is an example JSON schema that includes the numeric range field:
|
||||||
"numericRange": {
|
"numericRange": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"title": "Numeric Range",
|
"title": "Numeric Range",
|
||||||
"properties": {
|
"minimum": {
|
||||||
"min": {
|
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"title": "Minimum Value"
|
"title": "Minimum Value"
|
||||||
},
|
},
|
||||||
"max": {
|
"maximum": {
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"title": "Maximum Value"
|
"title": "Maximum Value"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
This schema defines a numeric range object with `min` and `max` properties, both of which are required.
|
This schema defines a numeric range object with `min` and `max` properties, both of which are required.
|
||||||
|
@ -412,3 +410,45 @@ This schema defines a numeric range object with `min` and `max` properties, both
|
||||||
#### Validation
|
#### Validation
|
||||||
|
|
||||||
This will automatically validate that the max value cannot be less than the min value.
|
This will automatically validate that the max value cannot be less than the min value.
|
||||||
|
|
||||||
|
|
||||||
|
### Adding a New Button for Repeating Sections in Forms
|
||||||
|
|
||||||
|
Nested forms or repeating sections are designed to collect an array of objects, where each object represents a set of related information. For instance, in a task management form, you might need to collect multiple tasks, each with its title and completion status.
|
||||||
|
|
||||||
|
This structure can be represented in the form's schema as follows:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"title": "Nested Form / Repeating Section",
|
||||||
|
"description": "Allow the form submitter to add multiple entries for a set of fields.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"tasks": {
|
||||||
|
"type": "array",
|
||||||
|
"title": "Tasks",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"required": ["title"],
|
||||||
|
"properties": {
|
||||||
|
"title": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "Title",
|
||||||
|
"description": "Please describe the task to complete"
|
||||||
|
},
|
||||||
|
"done": {
|
||||||
|
"type": "boolean",
|
||||||
|
"title": "Done?",
|
||||||
|
"default": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
**Form Preview**:
|
||||||
|
|
||||||
|
![Nested Forms](images/Nested_form_display.png)
|
||||||
|
|
||||||
|
By usign 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.
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
Binary file not shown.
After Width: | Height: | Size: 52 KiB |
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
|
@ -1,7 +1,7 @@
|
||||||
# Multi-instance Tasks
|
# Multi-instance Tasks
|
||||||
Multi-instance tasks in BPMN (Business Process Model and Notation) represent a powerful tool for modeling processes that require repetitive actions over a collection of items.
|
Multi-instance tasks in BPMN (Business Process Model and Notation) are a powerful tool for modeling processes that require repetitive actions over a collection of items.
|
||||||
|
These tasks automate the iteration over a list, array, or collection, executing the specified activity for each element within.
|
||||||
These tasks automate the iteration over a list, array, or collection, executing the specified activity for each element within. Multi-instance tasks can be configured to run either in parallel, where all instances are executed simultaneously, or sequentially, where each instance is executed one after the other.
|
Multi-instance tasks can be configured to run either in parallel, where all instances are executed simultaneously, or sequentially, where each instance is executed one after the other.
|
||||||
|
|
||||||
## **Sequential Execution**
|
## **Sequential Execution**
|
||||||
|
|
||||||
|
@ -43,13 +43,10 @@ Specifically, the process manages a list of composers, their names, and genres,
|
||||||
|
|
||||||
### Process Overview:
|
### Process Overview:
|
||||||
|
|
||||||
|
1. **Start Event**: Marks the initiation of the process.
|
||||||
#### 1. **Start Event**:
|
#### 1. **Start Event**:
|
||||||
|
|
||||||
Marks the initiation of the process.
|
2. **Script Task - Create Dictionary**: This task initializes a list (array) of dictionaries, each representing a composer with their name and associated genre. The script effectively sets up the data structure that will be manipulated in subsequent steps of the process.
|
||||||
|
|
||||||
#### 2. **Script Task - Create Dictionary**:
|
|
||||||
|
|
||||||
This task initializes a list (array) of dictionaries, each representing a composer with their name and associated genre. The script effectively sets up the data structure that will be manipulated in subsequent steps of the process.
|
|
||||||
|
|
||||||
![Multi_instance_example](images/multiinstance_example2.png)
|
![Multi_instance_example](images/multiinstance_example2.png)
|
||||||
|
|
||||||
|
@ -63,9 +60,7 @@ This task initializes a list (array) of dictionaries, each representing a compos
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 3. **Multi-Instance Task - Edit Composer**:
|
3. **Multi-Instance Task - Edit Composer**: This task is configured as a parallel multi-instance task that iterates over the `composers` array created by the previous script task. It allows for the editing of each composer's information within the array.
|
||||||
|
|
||||||
This task is configured as a parallel multi-instance task that iterates over the `composers` array created by the previous script task. It allows for the editing of each composer's information within the array.
|
|
||||||
|
|
||||||
![Multi_instance_example](images/multiinstance_ex.png)
|
![Multi_instance_example](images/multiinstance_ex.png)
|
||||||
|
|
||||||
|
@ -80,9 +75,7 @@ This task is configured as a parallel multi-instance task that iterates over the
|
||||||
⚠ The completion condition and output element are left unspecified, indicating that the task completes after iterating over all elements in the input collection without additional conditions.
|
⚠ The completion condition and output element are left unspecified, indicating that the task completes after iterating over all elements in the input collection without additional conditions.
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 4. **Manual Task - Display Edited Composers**:
|
4. **Manual Task - Display Edited Composers**: This task presents the edited list of composers and their genres, using a loop to display each composer's name and genre in the format provided.
|
||||||
|
|
||||||
This task presents the edited list of composers and their genres, using a loop to display each composer's name and genre in the format provided.
|
|
||||||
|
|
||||||
![Multi_instance_example](images/multiinstance_ex1.png)
|
![Multi_instance_example](images/multiinstance_ex1.png)
|
||||||
|
|
||||||
|
@ -96,10 +89,55 @@ This task presents the edited list of composers and their genres, using a loop t
|
||||||
|
|
||||||
This templating syntax iterates over the `composers` array, displaying each composer's name and genre in a formatted list.
|
This templating syntax iterates over the `composers` array, displaying each composer's name and genre in a formatted list.
|
||||||
|
|
||||||
5. **End Event**:
|
5. **End Event**: Signifies the successful completion of the process instance, after the list of composers has been edited and displayed.
|
||||||
|
|
||||||
Signifies the successful completion of the process instance, after the list of composers has been edited and displayed.
|
|
||||||
|
|
||||||
### Summary:
|
### Summary:
|
||||||
|
|
||||||
This multi-instance example in a BPMN process highlights the capability to dynamically handle collections of data through scripting and manual tasks. By iterating over a list of composers, allowing for the editing of each item, and finally displaying the edited list, the process demonstrates how data can be manipulated and presented in a structured workflow, showcasing the flexibility and power of BPMN for data-driven processes.
|
This multi-instance example in a BPMN process highlights the capability to dynamically handle collections of data through scripting and manual tasks. By iterating over a list of composers, allowing for the editing of each item, and finally displaying the edited list, the process demonstrates how data can be manipulated and presented in a structured workflow, showcasing the flexibility and power of BPMN for data-driven processes.
|
||||||
|
|
||||||
|
## Loops
|
||||||
|
|
||||||
|
Standard loops in Business Process Model and Notation (BPMN) are a fundamental mechanism to model repetitive tasks within a workflow. These loops allow for the execution of a specific task or sequence of tasks repeatedly until a predefined condition is met, mirroring traditional loop constructs found in programming languages.
|
||||||
|
|
||||||
|
### Key Concepts
|
||||||
|
![Loop Configuration](images/Loop_Settings.png)
|
||||||
|
|
||||||
|
1. **Loop Marker**: A visual indicator (a small loop symbol) placed at the bottom center of an activity to denote that the activity is subject to repeated execution.
|
||||||
|
2. **Loop Condition**: A Boolean expression evaluated before or after each iteration of the loop. The loop continues as long as this condition evaluates to true.
|
||||||
|
3. **Loop Maximum**: An upper limit on the number of iterations a loop can execute, preventing infinite looping and ensuring process termination.
|
||||||
|
|
||||||
|
|
||||||
|
### Implementing a Standard Loop
|
||||||
|
|
||||||
|
To model a standard loop in BPMN, determine the activity or sequence of activities that need to be executed repeatedly. The next steps are:
|
||||||
|
|
||||||
|
1. **Configure the Loop Characteristics**:
|
||||||
|
- Add the loop marker to the activity symbol.
|
||||||
|
- Define the loop condition within the activity’s properties. This condition dictates the continuation of the loop.
|
||||||
|
|
||||||
|
3. **Loop Execution**:
|
||||||
|
- The process engine evaluates the loop condition. If true, the looped activity is executed.
|
||||||
|
- After execution, the loop condition is re-evaluated to decide whether another iteration is required.
|
||||||
|
|
||||||
|
### Example: Incrementing a Counter
|
||||||
|
|
||||||
|
Consider a process designed to increment a counter variable until it reaches a specific value. This scenario is effectively managed using a standard loop in BPMN.
|
||||||
|
|
||||||
|
#### Process Overview
|
||||||
|
|
||||||
|
![Loop Example](images/loop_example1.png)
|
||||||
|
|
||||||
|
|
||||||
|
1. **Start Event**: Initiates the workflow.
|
||||||
|
|
||||||
|
2. **Script Task - Initialize Counter**: Initializes a counter variable, `counter`, to 0 and Script: `counter = 0;`
|
||||||
|
|
||||||
|
3. **Script Loop Task - Increment Counter**: Implement the Script Loop Task with a loop marker and configure the loop condition (`counter < 10`) and increment script (`counter = counter + 1;`). The process engine will increment the `counter` by 1 on each iteration.
|
||||||
|
|
||||||
|
![Loop Example](images/loop_example2.png)
|
||||||
|
|
||||||
|
The task is marked with a loop indicator, and the loop condition ensures the task repeats until `counter` reaches 10.
|
||||||
|
|
||||||
|
4. **End Event**: Marks the completion of the process once the loop condition is no longer satisfied.
|
||||||
|
|
||||||
|
This example illustrates the use of a standard loop in BPMN to model repetitive actions within a workflow, showcasing how loops can automate iterative tasks based on dynamic conditions.
|
||||||
|
|
Loading…
Reference in New Issue