This is an automated email from the ASF dual-hosted git repository.

bamaer pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/main by this push:
     new c6fdffb59a Batch 7: Result sections for JavaScript, Repeat, End 
repeat, XSD validator, XSLT, Ping, Telnet and Web service available. #8970 
(#9132)
c6fdffb59a is described below

commit c6fdffb59a20e54b783ea847f8e31b615dc5e51b
Author: Adalennis <[email protected]>
AuthorDate: Fri Oct 30 10:08:01 2026 +0100

    Batch 7: Result sections for JavaScript, Repeat, End repeat, XSD validator, 
XSLT, Ping, Telnet and Web service available. #8970 (#9132)
    
    * Batch 7: Result sections for JavaScript, Repeat, End repeat, XSD 
validator, XSLT, Ping, Telnet and Web service available. #8970
    
    * Repeat: when the loop ends normally, the previous action's result is 
passed on. #8970
---
 .../modules/ROOT/pages/workflow/actions/eval.adoc  | 17 ++++++++++-
 .../modules/ROOT/pages/workflow/actions/ping.adoc  | 19 +++++++++++--
 .../ROOT/pages/workflow/actions/repeat-end.adoc    | 12 ++++++++
 .../ROOT/pages/workflow/actions/repeat.adoc        | 33 ++++++++++++++++------
 .../ROOT/pages/workflow/actions/telnet.adoc        | 15 +++++++++-
 .../workflow/actions/webserviceavailable.adoc      | 13 +++++++++
 .../ROOT/pages/workflow/actions/xsdvalidator.adoc  | 15 +++++++++-
 .../modules/ROOT/pages/workflow/actions/xslt.adoc  | 30 ++++++++++++++++----
 8 files changed, 134 insertions(+), 20 deletions(-)

diff --git a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/eval.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/eval.adoc
index b4b59ce35e..bce63e5f33 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/eval.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/eval.adoc
@@ -156,4 +156,19 @@ var firstRow = rows[0];
 firstRow.getString("name", "").equals("Foo")
 ----
 
- This script will follow the green workflow hop is the expression evaluates to 
true.  This happens if field "name" contains String "Foo". 
+ This script will follow the green workflow hop if the expression evaluates to 
true.  This happens if field "name" contains String "Foo". 
+
+== Result
+
+What this action passes on to the next action. See 
xref:workflow/action-results.adoc[Action results] for how results travel 
through a workflow.
+
+[options="header", width="90%", cols="1,3"]
+|===
+|Result|Value
+|True|The script ends with a true value, with 0 errors. A value that is not a 
boolean is converted the JavaScript way: `0` is false, a text that is not empty 
is true.
+|False|The script ends with a false value: the number of errors is 0. When the 
script can't be run (a syntax error, or an error while it runs), the number of 
errors is 1.
+|Result files|Passed on unchanged.
+|Result rows|Passed on unchanged.
+|===
+
+NOTE: The `errors` variable in the script still holds the number of errors of 
the previous action: this action doesn't reset it before the script runs.
diff --git a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/ping.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/ping.adoc
index b1277ce3a8..de25c6f462 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/ping.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/ping.adoc
@@ -31,15 +31,28 @@ The result it true when the host is reachable, otherwise 
false.
 [options="header", width="90%", cols="1,3"]
 |===
 |Option|Description
-|Workflow action name|The name of the workflow action.
+|Action name|The name of the workflow action.
 |Host name/IP|The name or the IP address of the host to ping
 |Ping type a| The type of ping to send to the specified hostname or IP address
 
 * Classic ping: This calls the ping as a command line of the operating system.
-The result is true when no packets (defined in the "Nr. packets to send" 
option) are lost.
+The result is true when the ping command ends without error (exit code 0). On 
Linux and macOS, that is the case when at least one of the packets (defined in 
the *Nr packets to send* option) gets a reply.
 * System ping: This option uses the Java implemented methods.
 The result is true when the host name can be resolved and the host is 
reachable within the given timeout period.
 * System ping then classic ping: try both options (first the system ping and 
when that fails, try the classic ping)
 |Timeout (ms)|The timeout in ms when the system ping option is used.
-|Nr. packets to send|The number of packets to send (by default 2, only used by 
the Classic ping option).
+|Nr packets to send|The number of packets to send (by default 2, only used by 
the Classic ping option).
+|===
+
+== Result
+
+What this action passes on to the next action. See 
xref:workflow/action-results.adoc[Action results] for how results travel 
through a workflow.
+
+[options="header", width="90%", cols="1,3"]
+|===
+|Result|Value
+|True|The host answered, with 0 errors.
+|False|The host can't be pinged (for example, its name can't be resolved), or 
*Host name/IP* is empty. The number of errors is 1.
+|Result files|Passed on unchanged.
+|Result rows|Passed on unchanged.
 |===
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/repeat-end.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/repeat-end.adoc
index 4ccb790a90..49f3d5aac7 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/repeat-end.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/repeat-end.adoc
@@ -29,3 +29,15 @@ It leaves a flag in the parent workflow to signal it can 
stop repeating at the n
 TIP: The End repeat action only works against its parent workflow when it's 
being executed by the Repeat action.
 
 This action has no options. It works as a 
xref:workflow/actions/success.adoc[Success] action and clears possible previous 
errors.
+
+== Result
+
+What this action passes on to the next action. See 
xref:workflow/action-results.adoc[Action results] for how results travel 
through a workflow.
+
+[options="header", width="90%", cols="1,3"]
+|===
+|Result|Value
+|True|Always, with 0 errors, also when the workflow is not run by a Repeat 
action.
+|Result files|Passed on unchanged.
+|Result rows|Passed on unchanged.
+|===
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/repeat.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/repeat.adoc
index f3f330fcfa..9e3223d700 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/repeat.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/repeat.adoc
@@ -45,9 +45,9 @@ This variable is detected by the Repeat action, and the loop 
stops. Because the
 |===
 |Option|Description
 
-|Workflow action name|The name of the workflow action.
+|Action name|The name of the workflow action.
 
-|File to repeat|The filename of the pipeline or workflow to execute repeatedly.
+|File to repeat (.hpl or .hwf)|The filename of the pipeline or workflow to 
execute repeatedly.
 
 |Run configuration a|The pipeline or workflow run configuration to use.
 
@@ -59,24 +59,41 @@ NOTE: if you set a variable on a remote server the value is 
currently not report
 
 |Delay in seconds|Add a delay of x seconds between repeated executions of the 
selected workflow or pipeline.
 
-|Keep variable values after execution| This option keeps the variable values 
after a (repeating) pipeline or workflow execution to inject into the next 
iteration.
+|Keep variable values after executions| This option keeps the variable values 
after a (repeating) pipeline or workflow execution to inject into the next 
iteration.
 
 2+|Logging file
-|Log the execution to a file?|Check if you want to log the repeated executions 
of the selected workflow or pipeline to a log file
+|Log the execution to a file|Check if you want to log the repeated executions 
of the selected workflow or pipeline to a log file
 |Base log file name|The base log filename to use to which the options below 
can optionally be appended.
 |Log file extension|The extension to use for the log file
-|Add date to filename?|Add the current date to the log filename
-|Add time to filename?|Add the current time to the log filename
+|Add date to filename|Add the current date to the log filename
+|Add time to filename|Add the current time to the log filename
 |Add repetition number to filename|Add the repetition number to the log file 
name
 |Append to any existing log file|Append instead of creating a new file when 
the current log file already exist.
-|Log file update interval?|The update interval (in milliseconds) to update the 
log file
+|Log file update interval|The update interval (in milliseconds) to update the 
log file
 
 |Parameters/Variables to set|You can specify the values of any parameters or 
variables in this dialog.
 The values can contain variables themselves which will be resolved before 
every iteration.
-If the option ```Keep variable values after execution``` is set we evaluate 
the expression only once before the first execution of the file.
+If the option *Keep variable values after executions* is set we evaluate the 
expression only once before the first execution of the file.
 
 To send Parameters to a Repeat Action, set the parameters/variables name and 
Value columns. Value can be hard-coded or reference a parameter/variable name. 
Parameters do not automatically flow through a Repeat Action.
 
 |===
 
 For the exact rules that decide which value a parameter ends up with, see 
xref:variables/parameter-passing.adoc[Passing parameters to a child pipeline or 
workflow].
+
+== Result
+
+What this action passes on to the next action. See 
xref:workflow/action-results.adoc[Action results] for how results travel 
through a workflow.
+
+[options="header", width="90%", cols="1,3"]
+|===
+|Result|Value
+|True|The loop ended because an xref:workflow/actions/repeat-end.adoc[End 
repeat] action ran in the repeated workflow, or because the variable in *Stop 
repeating when this variable is set* got its value, and the previous action was 
true. The value is compared without case: `y` matches `Y`.
+|False|A run of the file failed. The loop ends there.
+|Result files|The result files of the previous action, plus those of the last 
run. The runs before the last one add nothing.
+|Result rows|The result rows of the previous action, plus those of the last 
run, as for the result files. The metrics of the last run (such as lines 
written) are added in the same way.
+|===
+
+NOTE: Repeat doesn't set a true result of its own: when the loop ends normally 
(End repeat, or the variable got its value), the result of the previous action 
is passed on. After a false previous action, reached through an unconditional 
or a failure hop, the result stays false, with 0 errors, even when every run of 
the file succeeded. When the variable already has its value before the first 
run, the file is not run at all and the result of the previous action is passed 
on in the same way.
+
+NOTE: An empty *File to repeat*, or a *Delay in seconds* that is not a number, 
is not a false result: the workflow stops with an error and no hop from the 
action is followed.
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/telnet.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/telnet.adoc
index 878a8ea7c6..2ae544207c 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/telnet.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/telnet.adoc
@@ -32,5 +32,18 @@ The `Telnet a host` action tests a connection on a certain 
port over the https:/
 |Action name|The name of the workflow action.
 |Host name/IP|The host.
 |Port|The port (default: 23)
-|TimeOut (ms)|The timeout period in milliseconds (default 3000).
+|Timeout (ms)|The timeout period in milliseconds (default 3000).
+|===
+
+== Result
+
+What this action passes on to the next action. See 
xref:workflow/action-results.adoc[Action results] for how results travel 
through a workflow.
+
+[options="header", width="90%", cols="1,3"]
+|===
+|Result|Value
+|True|A connection to the port could be opened, with 0 errors.
+|False|The connection can't be opened (for example, nothing listens on the 
port), or *Host name/IP* is empty. The number of errors is 1.
+|Result files|Passed on unchanged.
+|Result rows|Passed on unchanged.
 |===
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/webserviceavailable.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/webserviceavailable.adoc
index 627c954503..b724de6e89 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/webserviceavailable.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/webserviceavailable.adoc
@@ -41,3 +41,16 @@ The value is depending on the quality of service of this URL 
and experiences.
 This value gives the read timeout in ms.
 The value is depending on the quality of service of this URL and experiences.
 |===
+
+== Result
+
+What this action passes on to the next action. See 
xref:workflow/action-results.adoc[Action results] for how results travel 
through a workflow.
+
+[options="header", width="90%", cols="1,3"]
+|===
+|Result|Value
+|True|The URL could be opened and its content read, with 0 errors.
+|False|The URL can't be opened or read: nothing listens on the port, the 
server answers with an HTTP error status (such as 404 Not Found), or *URL* is 
empty. The number of errors is 1.
+|Result files|Passed on unchanged.
+|Result rows|Passed on unchanged.
+|===
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/xsdvalidator.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/xsdvalidator.adoc
index bd3923fc86..89b42cf4ee 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/xsdvalidator.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/xsdvalidator.adoc
@@ -43,7 +43,7 @@ See also the xref:pipeline/transforms/xsdvalidator.adoc[XSD 
Validator pipeline t
 
 Allow the XSD validation to resolve external references (XXE). Unchecked by 
default, which has three effects:
 
-* A `DOCTYPE` declaration or an external entity in the XML being validated is 
refused and the action fails.
+* A `DOCTYPE` declaration that points to an external DTD, or an external 
entity, in the XML being validated is refused and the action fails. A `DOCTYPE` 
with only internal declarations is accepted.
 * XSD sources *none (default)* and *is defined inside XML* do not work: the 
`xsi:schemaLocation` / `xsi:noNamespaceSchemaLocation` reference is not 
resolved, not even when it points at a local file. Both options need the 
checkbox.
 * A schema that pulls in another schema over the network with `xs:include` or 
`xs:import` (for example the W3C `xml.xsd`) needs the checkbox. Local file and 
relative includes keep working without it.
 
@@ -57,3 +57,16 @@ Only check this when the XML documents and the schemas you 
validate against are
 |XML File name|The name of the XML file
 |XSD File name|The name of the XSD file
 |===
+
+== Result
+
+What this action passes on to the next action. See 
xref:workflow/action-results.adoc[Action results] for how results travel 
through a workflow.
+
+[options="header", width="90%", cols="1,3"]
+|===
+|Result|Value
+|True|The XML file is valid against the schema, with 0 errors.
+|False|The XML file is not valid, the XML file or the XSD file doesn't exist, 
or the action refuses the file because *Enable external entity for XSD 
validation* is unchecked (see the option above). The number of errors is 1.
+|Result files|Passed on unchanged.
+|Result rows|Passed on unchanged.
+|===
diff --git a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/xslt.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/xslt.adoc
index 8ef5ab01e4..5fead5d849 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/xslt.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/workflow/actions/xslt.adoc
@@ -42,16 +42,16 @@ When multiple rows exists, it will loop.
 At this time XML File name is the first field in the result set, XSL File name 
the second fields and Output File name the third field.
 |XML File name|The full name of the source XML file
 |XSL File name|The full name of the XSL file
-|Output File name|The full name of the created document (result of XSL 
transformation)
+|Output Filename|The full name of the created document (result of XSL 
transformation)
 2+|Settings
-|Transformer Factory|You can select JAXP or SAXON as the transformer factory.
+|Transformer factory|You can select JAXP or SAXON as the transformer factory.
 |If file exists a|Define the behavior when an output file with the same name 
exists. The available options are:
 
-* Create new with unique name : a new output file will be created
-* Do nothing : nothing will be done
-* Fail : the workflow will fail
+* Create new with unique name: meant to write a new output file, with the date 
and time added to its name. See the NOTE under <<Result>>.
+* Do Nothing: the existing file is left as it is, and the action is true
+* Fail: the action is false, with 1 error
 
-|Add files to result files name|Add the target file names to the list of 
result files of this workflow action for use in the next workflow actions.
+|Add output filename to result|Add the target file names to the list of result 
files of this workflow action for use in the next workflow actions.
 |===
 
 === Advanced tab
@@ -73,3 +73,21 @@ At this time XML File name is the first field in the result 
set, XSL File name t
 
 |Parameters|a list of parameter names and values to pass to the XSL pipeline
 |===
+
+== Result
+
+What this action passes on to the next action. See 
xref:workflow/action-results.adoc[Action results] for how results travel 
through a workflow.
+
+[options="header", width="90%", cols="1,3"]
+|===
+|Result|Value
+|True|Every file was transformed, with 0 errors. An output file that exists 
while *If file exists* is *Do Nothing* also counts as done: the file is left as 
it is.
+|False|The XML file or the XSL file doesn't exist, the XSL file can't be used, 
or the output file exists while *If file exists* is *Fail*. The number of 
errors is 1.
+|Result files|Passed on unchanged.
+|Result rows|Passed on unchanged.
+|Lines written|The number of files that were transformed (or left as they are 
with *Do Nothing*).
+|===
+
+NOTE: In this version, only *XML File name*, *XSL File name*, *Output 
Filename* and *If file exists* are stored in the workflow file. *Get filenames 
from previous result*, *Transformer factory*, *Add output filename to result* 
and the *Advanced* tab are not saved: once the workflow is saved and opened 
again, or run with hop-run, they have no effect. No output file is added to the 
result files, and the file names are never read from the previous result.
+
+NOTE: In this version, *Create new with unique name* overwrites the existing 
output file instead of writing a new one.

Reply via email to