https://github.com/robocorp/example-workitems-splitcombine
MapReduce-like pattern for generating one final output Work Item from multiple input ones.
https://github.com/robocorp/example-workitems-splitcombine
Last synced: 4 months ago
JSON representation
MapReduce-like pattern for generating one final output Work Item from multiple input ones.
- Host: GitHub
- URL: https://github.com/robocorp/example-workitems-splitcombine
- Owner: robocorp
- License: apache-2.0
- Created: 2022-09-21T13:07:26.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2022-09-21T14:46:17.000Z (almost 4 years ago)
- Last Synced: 2025-08-22T00:10:44.534Z (11 months ago)
- Language: RobotFramework
- Size: 7.81 KB
- Stars: 1
- Watchers: 15
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Create output Work Item with result from all the released inputs
MapReduce-like pattern for generating one final output Work Item from multiple input
ones.
This illustrates a simplified pattern of working with Work Items in a way where you
need to collect and process multiple input items before being able to create a final
result with data coming from all the previous items.
And since you can't create an output Work Item without linking it to an input (parent),
we decided in this example to use the initial input item as parent for the single
output one we're going to create. But we don't know what data to put in this output
during the creation of it (because we haven't traversed all the input items until the
end), so we just save it empty and then come back on it later on to put inside of it
the finally computed result from all the about-to-process input items.
## How it works
1. `Number To Sequence`: Takes a variable `number` from one input Work Item and creates
a sequence of numbers (1, 2, ..., N) where every sub-number is saved into an
individual output Work Item under the variable `nr`.
2. `Sequence To Total`: Receives as inputs all the numbers above (previous step output
items) and adds their squares into a total. Example: 1^2 + 2^2 + 3^2 = 1+4+9 = 14.
The final sum is saved into a single output Work Item under the variable `total`.
The trick is that even if we traverse all the inputs with a helper looping keyword
(and they get released into the process one by one), we still manage to save the
final result in a previously created output Work Item, whose parent is the initial
input one.
3. `Process Total`: Just retrieves the total computed above and logs it.
### Notes
- For the first task (#1) select the already present input Work Item to run with:
**sum-of-squares**
- For every subsequent task (#2, #3) select as input the last output obtained from the
previous step. Example:
- Task #1: sum-of-squares
- Task #2: run-2
- Task #3: run-3