Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

In some workflows, the solution requires handing over a variable from one object to another. This article helps you understand the general concept of sharing variables in IWS.

How to share variable from one task to another?

Let's have a look at the following example with two translators: shared_var_test_1 and shared_var_test_2. We want to share a variable (called variableA) from one translator to another.

Step-by-step instruction to do that:

Double-click first translator to open its worksheet and drop the Variable shape from the left panel ToolBox in CONTROL OBJECTS group:

By default, the variable is named as var. To set another name, click to the shape, and change the property Name in the left panel.

In our example we want to rename it to variableA.

To set a value for the variable, click the shape and put the value to the fx input on top of the workspace using quotes.

Update the default variable varTaskParams

 In case of streaming translator (click to expand):

Drop the Code shape from left panel in ADVANCED group and set value of the Code shape as 

:varTaskParams: := :varTaskParams: + 'variableA;' + :variableA: + '!'

If you need to share more variables you can add them to the Code shape using syntax variable_name;variable_value!. For example, if we have another variable count to share, the Code shape value is set like this:

:varTaskParams: := :varTaskParams: + 'variableA;' + :variableA: + '!' + 'count;' + :count: + '!'
 In case of transform translator (click to expand):

Drop the Call Include shape from the left panel in ADVANCED group to the workspace and click the edit… link on the shape

The include file will open for edit:

 Paste the following code into the editor

<INCLUDE FILE="eagle_ml-2-0_cm/w_config.inc" RELATIVEPATHTYPE="RULESROOT" />
<CODE>IF Find(:FILE_NAME:, :corrIdSep:) = -1 AND Find(:FILE_NAME:, '-', 2) != -1 AND Find(:FILE_NAME:, '_') != -1 THEN [ :CorrelationId: := SubString(:FILE_NAME:, Find(:FILE_NAME:, '-', 0, 2) + 1); :CorrelationId: := SubString(:CorrelationId:, 0, Find(:CorrelationId:, '_')); ]; </CODE>
<INCLUDE FILE="eagle_ml-2-0_cm/get_w_state.inc" RELATIVEPATHTYPE="RULESROOT" />
<CODE>
<!-- Code which you can change starts here -->
:varTaskParams: := :varTaskParams: + 'YOUR_VARIABLE;' + :YOUR_VARIABLE: + '!'
<!-- Code which you can change ends here -->
</CODE>
<INCLUDE FILE="eagle_ml-2-0_cm/upd_w_state.inc" RELATIVEPATHTYPE="RULESROOT" />

You can change the code between the two green lines <!-- Code which you can change starts here --> and <!-- Code which you can change ends here --> to add shared variables.

In our case:

If you need to share more variables, you can add them using syntax variable_name;variable_value!. For example, to share another variable count the code between green lines will be as follows

:varTaskParams: := :varTaskParams: + 'variableA;' + :variableA: + '!' + 'count;' + :count: + '!'

Now you can save and close editor tab

Return to the workflow and select the first translator. In the OutParams property in the right panel set the name of the variable to share (variableA in our case)


If you add several variables, use comma separator in OutParams property, for example, variableA,variable1,variable2,…

Now we can call variable variableA like this EXPR#:param_variableA:

Click to the second translator and in the property CustomCMParams set the name of the variable in first column, which you will use in the translator. It is not necessary to use the original name variableA in first column.

In the second column you must use the following construction:

EXPR#:param_TASK_[name_of_task]_[original_name_of_shared_parameter]:

EXPR#:param_TASK_ is a required prefix. [name_of_task] is the name of the task where shared variable was created (shared_var_test_1 in our example). And variableA is the original name of the shared variable.

Final expression for our example:

EXPR#:param_TASK_shared_var_test_1_variableA: 

Double click second translator. Here you can use :param_it_is_shared_var: construction.

param_ is a required prefix, then goes the name which you set in CustomCMParams property earlier.

Workspace of the second translator.

We drop a STATUS shape to check the value of the variable.

Status after workflow launch



  • No labels