[ 
https://issues.apache.org/jira/browse/UIMA-5423?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Peter Klügl resolved UIMA-5423.
-------------------------------
       Resolution: Fixed
    Fix Version/s: 2.6.1ruta

fixed

> Variables in Ruta scripts are not initialized properly by RutaEngine if their 
> script is called by others
> --------------------------------------------------------------------------------------------------------
>
>                 Key: UIMA-5423
>                 URL: https://issues.apache.org/jira/browse/UIMA-5423
>             Project: UIMA
>          Issue Type: Bug
>          Components: Ruta
>    Affects Versions: 2.3.0ruta
>            Reporter: Peter Klügl
>            Assignee: Peter Klügl
>             Fix For: 2.6.1ruta
>
>
> Variables in Ruta scripts are not initialized properly by RutaEngine if their
> script is called by others.
>  
> We found this issue in Ruta 2.3.1, but it’s still in Ruta 2.6.0.
> I attached the sample project TestVariable.zip to this mail.
>  
> Example: script3.ruta
> ----
> DECLARE Value(STRING value);
> STRING value;
> W{-> CREATE(Value, "value" = value), ASSIGN(value, W.ct)};
> ----
> Creates an annotation "Value" with an empty feature "value".
> The variable "value" stores the word (and is evaluated by other rules – the 
> real use case doesn't matters here).
>  
> Input testfiles:
> input-01.txt: snark
> input-02.txt: cat
>  
> Output after running Ruta with script3.ruta:
> input-01.txt.xmi: Value annotation for "snark" with an empty value (nil)
> input-02.txt.xmi: Value annotation for "cat" with an empty value (nil)
> => works as expected.
>  
> We added two scripts to call finally script3.ruta in the order
>   script1 calls script2 => script2 calls script3 => scripts3
> to creates Value annotation.
> (our real project is complex - uses packages ...)
>  
> Now we call script1.ruta on the same input, but the output annotation Value
> contains a wrong value feature for all documents after the first.
> input-01.txt.xmi: Value annotation for "snark" with an empty value (nil)
> input-02.txt.xmi: Value annotation  "cat" with value feature "snark" (instead
> of nil as before).
> It seems the variable is not initialized properly if it is defined in a 
> sub-script, which is called by other scripts.
>  
> It doesn't help to initialized the variable in script3, e.g:
> STRING value = "dog"
> ----
> The output is unchanged the Value annotation return the stored variable,
> which was set by script3.ruta while processing the first input file.
>  
> One of my colleguage examined the issue and proposed to patch RutaEngine 
> class to solve this issue.
> We added the following lines to:
> private void resetEnvironment(RutaModule module, CAS cas):
> ---
> 641a642,646
> >     final Collection<RutaModule> scripts = module.getScripts().values();
> >     for (final RutaModule subModule : scripts) {
> >       resetEnvironment(subModule, cas);
> >     }
> ---
>  
> This solves the issue in our applications which integrates Ruta.
> Known workaround: clear or initialize the variables at the end of the script.
> But I prefer if the issue is fixed in the RutaEngine class.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to