Here is the background. I have two birt reports as two jobsteps in my job, one of which is producer and the other one is the consumer. The second report(consumer) will run repeatly with the parameter coming from the producer.

So, I do not need to run the producer report but only run the data set(get the results as xml) which is configured to be the producer dataset. But I got an issue if the producer is defined as below;

1.The SQL for the DataSet is
select dbo.States.stateCode,dbo.States.stateName,dbo.States.cat
from dbo.States
where dbo.States.cat IN ('MS:getCategory')
2.I define a parameter getCategory, give it some static valus, mark the Required and Allow Mulitple Values checkboxes. Before Running the job, I will set the value to the parameter.
3.The below is the script of the beforeopen trigger for the dataset.
var sqlText = this.queryText;

Below is the code segment to get the data set results. If I run other simple data set, it works ok.
public IQueryResults runDataSet()
throws BirtException
{
// Create a couple contexts that are needed
ScriptableObject scriptScope = (ScriptableObject)i_engine.getRootScope();
ScriptContext scriptContext = new ScriptContext(scriptScope);
Context scontext = scriptContext.getContext();

I finally found the issue.
The parameter getCategory is set to allow multiple values. The selected values(assuming a, b and c with string type) will be stored in an Object array first and then converted to a string. Finally, the string representing the values will be converted into javascript array by birt engine. The issue happens in setp 2

//the java object array to store the selected values.
Object[] valueArray = new String[]{"a", "b", "c"};
//We use the wrong way to convert the object array to a string representing the value.
String value = valueArray.toSring();//value is a hash code
The two thing are done in method getReportParams() call.

The call getReportParms() will return a map(assuming size is one. because I just have 1 parameter-getCategory) whose key is parameter name, and values is a string(vaues). so the ReportingParameterAttribute object holds the wrong value. and the call javaToJs will also returns the wrong values.

Seems the solution is to modify getReportParms and set the correct string to ReportingParameterAttribute.

My question is what format I need to set. a string like "a,b,c" or "[a, b, c]" and other? I did not found the document saying this. Does anyone know it? Any suggestion is welcome!

/the java object array to store the selected values.
Object[] valueArray = new String[]{"a", "b", "c"};
//We use the wrong way to convert the object array to a string representing the value.String value = valueArray.toSring();//value is a hash code

The java array will later be converted into a javascript array. And the join method will be executed sucessfully.