Cognos: Run report

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



 

posted @ 2016-07-13 17:37  雪来了  阅读(271)  评论(0编辑  收藏  举报