Difference between revisions of "ResultProcessor"
(One intermediate revision by the same user not shown) | |||
Line 3: | Line 3: | ||
Defines SubFlows output aggregation policy: | Defines SubFlows output aggregation policy: | ||
* none : return a java.util.List containig the SubFlows output | * none : return a java.util.List containig the SubFlows output | ||
− | * XMLAggregate : aggregate the | + | * XMLAggregate : aggregate the SubFlows output as XML |
− | * JavaScript : use JavaScript to process a java.util.List containig the SubFlows output | + | * JavaScript : use JavaScript to process a java.util.List containig the SubFlows output '''REMOVED in v3.5''' |
− | * OGNLScript : use OGNL to process a java.util.List containig the SubFlows output | + | * OGNLScript : use OGNL to process a java.util.List containig the SubFlows output '''REMOVED in v3.5''' |
+ | <div class="version_ge3.5"> | ||
+ | * Script : use a Script engine to process a java.util.List containig the SubFlows output | ||
+ | </div> | ||
If isn't defined a processor the SubFlows output is intended as GVBuffer.output content or an Exception. | If isn't defined a processor the SubFlows output is intended as GVBuffer.output content or an Exception. | ||
− | The | + | The *Script processor receives as input a list of '''it.greenvulcano.gvesb.core.flow.parallel.Result''' instances that wrapps the SubFlows input and output. |
=={{VULCON}} / {{GVCONSOLE}} Configuration== | =={{VULCON}} / {{GVCONSOLE}} Configuration== | ||
Line 22: | Line 25: | ||
- gvbuffer-and-error : same as above | - gvbuffer-and-error : same as above | ||
- object-and-error : same as above | - object-and-error : same as above | ||
− | - | + | - *Script |
- only-object : java.util.List of output valid GVBuffer.object content, in the order of instantiation of SubFlows | - only-object : java.util.List of output valid GVBuffer.object content, in the order of instantiation of SubFlows | ||
- only-gvbuffer : java.util.List of output valid GVBuffer (wrapped as Result object), in the order of instantiation of SubFlows | - only-gvbuffer : java.util.List of output valid GVBuffer (wrapped as Result object), in the order of instantiation of SubFlows | ||
Line 30: | Line 33: | ||
The number of elements in the array will depend on several factors related to parallel flow configuration and SubFlow execution. | The number of elements in the array will depend on several factors related to parallel flow configuration and SubFlow execution. | ||
− | If a processor is not defined, the output GVBuffer.object will contain the java.util.List as defined as input for | + | If a processor is not defined, the output GVBuffer.object will contain the java.util.List as defined as input for *Script but unwrapped. |
|- | |- | ||
| fail-on-error || required || If true and any of the SubFlows output contains an Exception then the ResultProcessor returns an error. | | fail-on-error || required || If true and any of the SubFlows output contains an Exception then the ResultProcessor returns an error. | ||
Line 36: | Line 39: | ||
|} | |} | ||
− | Might contain the following elements: | + | Might contain the following elements: |
* [[XMLAggregate]] | * [[XMLAggregate]] | ||
− | * [[OGNLScript]] | + | * [[OGNLScript]] '''REMOVED in v3.5''' |
− | * [[JavaScript]] | + | * [[JavaScript]] '''REMOVED in v3.5''' |
+ | <div class="version_ge3.5"> | ||
+ | * [[Script]] | ||
+ | </div> | ||
+ | |||
+ | Follows an example that illustrate a input/output data manipulation through JavaScript: | ||
+ | <syntaxhighlight lang="xml"> | ||
+ | <ResultProcessor fail-on-error="true" | ||
+ | processor-input="only-gvbuffer"> | ||
+ | <JavaScript><![CDATA[var str = ""; | ||
+ | for (var i=0; i<results.size(); i++) | ||
+ | { | ||
+ | var inV = results.get(i).getInput().getObject(); | ||
+ | var outV = results.get(i).getOutput().getObject(); | ||
+ | str += ";[" + inV + " -> " + outV + "]"; | ||
+ | } | ||
+ | |||
+ | data.setObject(str.substring(1));]]> | ||
+ | </JavaScript> | ||
+ | </ResultProcessor> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <div class="version_ge3.5"> | ||
+ | The same example using the generic Script engine: | ||
+ | <syntaxhighlight lang="xml"> | ||
+ | <ResultProcessor fail-on-error="true" | ||
+ | processor-input="only-gvbuffer"> | ||
+ | <Script lang="js"><![CDATA[var str = ""; | ||
+ | for (var i=0; i<results.size(); i++) | ||
+ | { | ||
+ | var inV = results.get(i).getInput().getObject(); | ||
+ | var outV = results.get(i).getOutput().getObject(); | ||
+ | str += ";[" + inV + " -> " + outV + "]"; | ||
+ | } | ||
+ | |||
+ | data.setObject(str.substring(1));]]> | ||
+ | </Script> | ||
+ | </ResultProcessor> | ||
+ | </syntaxhighlight> | ||
+ | </div> |
Latest revision as of 11:19, 2 January 2015
Description
Defines SubFlows output aggregation policy:
- none : return a java.util.List containig the SubFlows output
- XMLAggregate : aggregate the SubFlows output as XML
- JavaScript : use JavaScript to process a java.util.List containig the SubFlows output REMOVED in v3.5
- OGNLScript : use OGNL to process a java.util.List containig the SubFlows output REMOVED in v3.5
- Script : use a Script engine to process a java.util.List containig the SubFlows output
If isn't defined a processor the SubFlows output is intended as GVBuffer.output content or an Exception. The *Script processor receives as input a list of it.greenvulcano.gvesb.core.flow.parallel.Result instances that wrapps the SubFlows input and output.
VulCon / GV Console Configuration
The following table shows the ResultProcessor element's attributes:
Attribute | Type | Description |
---|---|---|
processor-input | required | Defines the input to pass to the specific processor:
- XMLAggregate - only-object : array of output valid GVBuffer.object content, in the order of instantiation of SubFlows - only-gvbuffer : same as above - gvbuffer-and-error : same as above - object-and-error : same as above - *Script - only-object : java.util.List of output valid GVBuffer.object content, in the order of instantiation of SubFlows - only-gvbuffer : java.util.List of output valid GVBuffer (wrapped as Result object), in the order of instantiation of SubFlows - gvbuffer-and-error : java.util.List of output valid GVBuffer or Exception (wrapped as Result object), in the order of instantiation of SubFlows - object-and-error : java.util.List of output valid GVBuffer.object content or Exception , in the order of instantiation of SubFlows The number of elements in the array will depend on several factors related to parallel flow configuration and SubFlow execution. If a processor is not defined, the output GVBuffer.object will contain the java.util.List as defined as input for *Script but unwrapped. |
fail-on-error | required | If true and any of the SubFlows output contains an Exception then the ResultProcessor returns an error.
Default to true. |
Might contain the following elements:
- XMLAggregate
- OGNLScript REMOVED in v3.5
- JavaScript REMOVED in v3.5
Follows an example that illustrate a input/output data manipulation through JavaScript:
<ResultProcessor fail-on-error="true"
processor-input="only-gvbuffer">
<JavaScript><![CDATA[var str = "";
for (var i=0; i<results.size(); i++)
{
var inV = results.get(i).getInput().getObject();
var outV = results.get(i).getOutput().getObject();
str += ";[" + inV + " -> " + outV + "]";
}
data.setObject(str.substring(1));]]>
</JavaScript>
</ResultProcessor>
The same example using the generic Script engine:
<ResultProcessor fail-on-error="true"
processor-input="only-gvbuffer">
<Script lang="js"><![CDATA[var str = "";
for (var i=0; i<results.size(); i++)
{
var inV = results.get(i).getInput().getObject();
var outV = results.get(i).getOutput().getObject();
str += ";[" + inV + " -> " + outV + "]";
}
data.setObject(str.substring(1));]]>
</Script>
</ResultProcessor>