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(); } }