Cognos:
Run report
代码如下:
public void executeReport(String path, String[] format) throws RemoteException
{
PropEnum props[] = Util.getAllPropEnum();
// begin~~~~~~~~~~~~~~~~~~~~~
SearchPathMultipleObject spMulti = new SearchPathMultipleObject(path);
BaseClass bc[] = this.cmService.query(spMulti, props, new Sort[] {}, new QueryOptions());
ParameterValue pv[] = setReportParameters(this.getReportParameters(bc[0]));
// end~~~~~~~~~~~~~~~~~
AsynchReply res = null;
Option ro[] = new Option[4];
RunOptionBoolean saveOutput = new RunOptionBoolean();
RunOptionStringArray rosa = new RunOptionStringArray();
// Define that the report to save the output.
saveOutput.setName(RunOptionEnum.saveOutput);
saveOutput.setValue(true);
// What format do we want the report in: PDF? HTML? XML?
rosa.setName(RunOptionEnum.outputFormat);
rosa.setValue(format);
// Fill the array with the run options.
ro[0] = rosa;
ro[1] = saveOutput;
RunOptionBoolean prompt = new RunOptionBoolean();
prompt.setName(RunOptionEnum.prompt);
prompt.setValue(true);
ro[2] = prompt;
try
{
// Get the initial response.
SearchPathSingleObject spSingle = new SearchPathSingleObject();
spSingle.set_value(path);
res = getReportService().run(spSingle, pv, ro);
// res = getReportService().run(spSingle,new ParameterValue[]{}, ro);
// getReportService().getOutput(null,new ParameterValue[]{}, new Option[]{});
// If it has not yet completed, keep waiting until it is done.
// In this case, we wait forever.
while (res.getStatus() != AsynchReplyStatusEnum.complete && res.getStatus() != AsynchReplyStatusEnum.conversationComplete)
{
if (hasSecondaryRequest(res, "wait"))
{
res = getReportService().wait(res.getPrimaryRequest(), new ParameterValue[] {}, new Option[] {});
}
}
// release the conversation to free resources.
if (hasSecondaryRequest(res, "release"))
{
System.out.println("Releasing resources");
getReportService().release(res.getPrimaryRequest());
}
}
catch (Exception e)
{
e.printStackTrace();
}
}