You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/data.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3226,9 +3226,9 @@ For controller nodes, see the following table for details on how the `data` prop
3226
3226
|`multiplex`| Will contain `stagger` (delay in seconds) for staggering jobs across servers, and `continue` (percentage) for gating success. |
3227
3227
|`wait`| Will contain `wait` (delay in seconds). |
3228
3228
|`repeat`| Will contain `repeat` (iteration count), and `continue` (percentage) for gating success. |
3229
-
|`split`| Will contain `split` (expression to split on), and `continue` (percentage) for gating success. |
3229
+
|`split`| Will contain `split` (expression to split on), `continue` (percentage) for gating success, an optional `filter` for filtering items, and optional `chunk` for batch size. |
3230
3230
|`join`| Not used. |
3231
-
|`decision`| Will contain `label` (custom title), `icon` (custom icon), and `decision` (expression to evaluate). |
3231
+
|`decision`| Will contain `label` (custom title), `icon` (custom icon), `decision` (expression to evaluate), and `abort` (abort entire workflow on false eval). |
Copy file name to clipboardExpand all lines: docs/workflows.md
+7-1Lines changed: 7 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -84,7 +84,7 @@ The Split controller fans out work by taking an input list and launching one sub
84
84
85
85
In the UI, the split controller configuration dialog provides an "Expression Builder" button, which allows you to explore output data from recently completed jobs, and pick out a specific JSON key path to use for the expression string.
86
86
87
-
Each individual sub-job will receive one item from the split data. It will arrive in the job's [Job.input](data.md#job-input), either in `data` as a property named `item`, or as a [File](data.md#file) in the `files` array.
87
+
Each individual sub-job will receive one item from the split data. It will arrive in the job's [Job.input](data.md#job-input), either in `data` as a property named `item` (or `items` if multiple are batched), or as a [File](data.md#file) in the `files` array.
88
88
89
89
Split requires exactly one output connection to the Event or Job node it will run per item. Concurrency and queuing are governed by the limits attached to that node. After all items complete, you can continue the flow using a `continue` wire from the controlled node. The controller includes a "continue percentage" setting so you can require that at least N% of the sub-jobs succeed before continuing.
90
90
@@ -102,6 +102,12 @@ Also available in context here is `index` (the 0-based index of the current item
102
102
index %2==0
103
103
```
104
104
105
+
##### Split Batch Size
106
+
107
+
By default, each split item launches one downstream job. To process multiple items per job, increase the Split controller's Batch Size setting. xyOps will chunk the split items in order, using one downstream job per batch, with the final batch containing any remaining items.
108
+
109
+
For batched splits, each job receives an array in `data.items` (note: plural). For `files` splits, each batched job receives multiple [File](data.md#file) objects in its `files` array. A special case is when the Batch Size is `1`, which keeps the original legacy behavior, where each job receives a single `data.item` (note: singular) or one file.
110
+
105
111
#### Join Controller
106
112
107
113
The Join controller waits for multiple incoming flows to finish, then passes a combined result to the next step. You can wire multiple inputs into a Join; it initializes when the first input arrives and completes after all of its inputs have fired.
Copy file name to clipboardExpand all lines: internal/ui.json
+5-1Lines changed: 5 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -604,12 +604,16 @@
604
604
},
605
605
"d_wfd_split": {
606
606
"label": "Split Expression:",
607
-
"caption": "Specify the path to the array for splitting, using [XYEXP](#Docs/xyexp), e.g. `data.items`. Use the special `files` keyword to split the input files."
607
+
"caption": "Specify the path to the array for splitting, using [XYEXP](#Docs/xyexp), e.g. `data.myItems`. Use the special `files` keyword to split the input files."
608
608
},
609
609
"d_wfd_split_filter": {
610
610
"label": "Item Filter:",
611
611
"caption": "Optionally enter an expression to filter items, e.g. `item.random > 0.5`. If false, the item will be excluded from the set. [Learn More](#Docs/workflows/split-item-filter)"
612
612
},
613
+
"d_wfd_split_chunk": {
614
+
"label": "Batch Size:",
615
+
"caption": "Optionally batch multiple items per job by increasing this value. The default is `1`, meaning each job receives exactly one item. [Learn More](#Docs/workflows/split-batch-size)"
616
+
},
613
617
"d_wfd_if": {
614
618
"label": "Expression:",
615
619
"caption": "Enter the expression to evaluate using [XYEXP](#Docs/xyexp), e.g. `data.random > 0.5`. If true, control will pass onto the next node."
0 commit comments