Actuate Idapi and SOAP to download as pdf

aloksoni
edited February 11, 2022 in Analytics #1
<p>Hi All,</p>
<p> </p>
<p>I know this question is probably asked a few times but none of the solutions really helped. </p>
<p> </p>
<p>SO trying again: -</p>
<p>Our requirement is to download and save all the reports in one of our volumes as PDF on our local shared drive.</p>
<p> </p>
<p>We already have idapi installed and are trying to write a SOAP query to achieve the same.</p>
<p> </p>
<p>Can anyone point me to write query? or class to be used. Here is an example I saw however it doesnt have the shared path and is limited to one report only whereas we need all the reports to be converted.</p>
<p> </p>
<div><em><soapenv:Envelope xmlns:soapenv="<a data-ipb='nomediaparse' href='http://schemas.xmlsoap.org/soap/envelope/'>http://schemas.xmlsoap.org/soap/envelope/"</a><a>xmlns:act="http://schemas.actuate.com/actuate11"></a&gt; </em></div>
<div><em>   <soapenv:Header> </em></div>
<div><em><TargetVolume>Volumename</TargetVolume></em></div>
<div><em></soapenv:Header></em></div>
<div><em>   <soapenv:Body></em></div>
<div><em>   <act:Login></em></div>
<div><em>         <act:User>Administrator</act:User></em></div>
<div><em>         <!--Optional:--></em></div>
<div><em>         <act:Password>abc123</act:Password></em></div>
<div><em>       </act:Login></em></div>
<div><em>      <act:SelectJavaReportPage></em></div>
<div><em>         <act:Object></em></div>
<div><em>            <!--Optional:--></em></div>
<div><em>            <act:Id>?</act:Id></em></div>
<div><em>            <!--Optional:--></em></div>
<div><em>            <act:Name>Report_Selection</em></div>
<div><em>            </act:Name></em></div>
<div><em>            <!--Optional:--></em></div>
<div><em>            <act:Type>?</act:Type></em></div>
<div><em>            <!--Optional:--></em></div>
<div><em>            <act:Version>?</act:Version></em></div>
<div><em>         </act:Object></em></div>
<div><em>         <!--You have a CHOICE of the next 2 items at this level--></em></div>
<div><em>         <!--Optional:--></em></div>
<div><em>         <act:Page></em></div>
<div><em>            <!--Optional:--></em></div>
<div><em>            <act:Range>?</act:Range></em></div>
<div><em>            <!--Optional:--></em></div>
<div><em>            <act:PageNum>?</act:PageNum></em></div>
<div><em>            <!--Optional:--></em></div>
<div><em>            <act:ViewMode>?</act:ViewMode></em></div>
<div><em>         </act:Page></em></div>
<div><em>         <!--Optional:--></em></div>
<div><em>         <act:Component></em></div>
<div><em>            <!--Zero or more repetitions:--></em></div>
<div><em>            <act:NameValuePair></em></div>
<div><em>               <!--You may enter the following 2 items in any order--></em></div>
<div><em>               <act:Name>?</act:Name></em></div>
<div><em>               <act:Value>?</act:Value></em></div>
<div><em>            </act:NameValuePair></em></div>
<div><em>         </act:Component></em></div>
<div><em>         <!--Optional:--></em></div>
<div><em>         <act:ViewParameterValues></em></div>
<div><em>            <!--Zero or more repetitions:--></em></div>
<div><em>            <act:ParameterValue></em></div>
<div><em>               <!--You may enter the following 10 items in any order--></em></div>
<div><em>               <!--Optional:--></em></div>
<div><em>               <act:Group>?</act:Group></em></div>
<div><em>               <act:Name>?</act:Name></em></div>
<div><em>               <!--Optional:--></em></div>
<div><em>               <act:DisplayName>?</act:DisplayName></em></div>
<div><em>               <!--Optional:--></em></div>
<div><em>               <act:Position>?</act:Position></em></div>
<div><em>               <!--Optional:--></em></div>
<div><em>               <act:Value>?</act:Value></em></div>
<div><em>               <!--Optional:--></em></div>
<div><em>               <act:ValueIsNull>?</act:ValueIsNull></em></div>
<div><em>               <!--Optional:--></em></div>
<div><em>               <act:PromptParameter>?</act:PromptParameter></em></div>
<div><em>               <!--Optional:--></em></div>
<div><em>               <act:TableValue></em></div>
<div><em>                  <!--Zero or more repetitions:--></em></div>
<div><em>                  <act:Record></em></div>
<div><em>                     <!--1 or more repetitions:--></em></div>
<div><em>                     <act:FieldValue></em></div>
<div><em>                        <!--You may enter the following 2 items in any order--></em></div>
<div><em>                        <act:Name>?</act:Name></em></div>
<div><em>                        <act:Value>?</act:Value></em></div>
<div><em>                     </act:FieldValue></em></div>
<div><em>                  </act:Record></em></div>
<div><em>               </act:TableValue></em></div>
<div><em>               <!--Optional:--></em></div>
<div><em>               <act:DataSourceType>?</act:DataSourceType></em></div>
<div><em>               <!--Optional:--></em></div>
<div><em>               <act:IsViewParameter>?</act:IsViewParameter></em></div>
<div><em>            </act:ParameterValue></em></div>
<div><em>         </act:ViewParameterValues></em></div>
<div><em>         <!--Optional:--></em></div>
<div><em>         <act:OutputFormat>PDF</act:OutputFormat></em></div>
<div><em>         <!--Optional:--></em></div>
<div><em>         <act:ViewProperties></em></div>
<div><em>            <!--Zero or more repetitions:--></em></div>
<div><em>            <act:NameValuePair></em></div>
<div><em>               <!--You may enter the following 2 items in any order--></em></div>
<div><em>               <act:Name>?</act:Name></em></div>
<div><em>               <act:Value>?</act:Value></em></div>
<div><em>            </act:NameValuePair></em></div>
<div><em>         </act:ViewProperties></em></div>
<div><em>         <!--Optional:--></em></div>
<div><em>         <act:DownloadEmbedded>false</act:DownloadEmbedded></em></div>
<div><em>      </act:SelectJavaReportPage></em></div>
<div><em>   </soapenv:Body></em></div>
<div><em></soapenv:Envelope></em></div>

Comments

  • <p>aloksoni,</p>
    <p> </p>
    <p>Are you writing this directly in SOAP, or are you using C# or Java to write an application that leverages the Information Delivery API.</p>
    <p>If you are using the latter, it is easy to perform a SelectFiles call that recursively finds files that are of type != DIRECTORY with a fetch size of 500 (you can go higher, but I suggest against it) and have a Fetch Handle.</p>
    <p>Then while the fetch handle is not null you proceed to loop through the returned file array to obtain the file id which can be used as the identifier to use in a GetContent call (for e.Reports) or SelectJavaReportPage call (e.SS and BIRT) to then produce a PDF file that will be saved to hard drive location. Once this loop finishes, set the SelcetFiles call such that the Fetch Limit string value is updated from the value contained in the SelectFilesResponse and run through the call again to obtain the next fetch.</p>
    Warning No formatter is installed for the format ipb
  • Nagaraj123
    edited January 21, 2016 #3
    <p>Hi RSiegler,</p>
    <p> </p>
    <p> </p>
    <p>Even i am trying to save all the reports, want to develop a simple java application but before that trying on SOAP UI, just followed what you mentioned in the above reply(first login to get Auth id then using selectFiles to get file_id). when i am trying to get file_id, in the response just file tags are showing up, may be i am missing one of the element in the WSDL!!</p>
    <p> </p>
    <p> </p>
    <p><u>SelectFile WSDL</u>:</p>
    <p> </p>
    <p> </p>
    <div><soapenv:Envelope xmlns:soapenv="<a data-ipb='nomediaparse' href='http://schemas.xmlsoap.org/soap/envelope/'>http://schemas.xmlsoap.org/soap/envelope/"</a><a>xmlns:act="http://schemas.actuate.com/actuate11"></a></div&gt;
    <div>   <soapenv:Header></div>
    <div>   <span> </span><act:TargetVolume>.....</act:TargetVolume></div>
    <div>   <span> </span><act:AuthId>.....</act:AuthId></div>
    <div>   </soapenv:Header></div>
    <div>   <soapenv:Body></div>
    <div>      <act:SelectFiles></div>
    <div>        </div>
    <div>         <act:WorkingFolderName>${files location}</act:WorkingFolderName></div>
    <div>        </div>
    <div>         <act:Recursive>false</act:Recursive></div>
    <div>         </div>
    <div>       <act:ResultDef>0</act:ResultDef></div>
    <div> </div>
    <div>  </div>
    <div>      </act:SelectFiles></div>
    <div> </div>
    <div> </div>
    <div>     </div>
    <div>   </soapenv:Body></div>
    <div></soapenv:Envelope></div>
    <div> </div>
    <div> </div>
    <div> </div>
    <div><u>Response</u>:</div>
    <div> </div>
    <div> </div>
    <div>
    <div><soapenv:Envelope xmlns:soapenv="<a data-ipb='nomediaparse' href='http://schemas.xmlsoap.org/soap/envelope/'>http://schemas.xmlsoap.org/soap/envelope/"></a></div&gt;
    <div>   <soapenv:Body></div>
    <div>      <SelectFilesResponse xmlns="<a data-ipb='nomediaparse' href='http://schemas.actuate.com/actuate11'>http://schemas.actuate.com/actuate11"></a></div&gt;
    <div>         <TotalCount>0</TotalCount></div>
    <div>         <ItemList></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>            <File/></div>
    <div>         </ItemList></div>
    <div>         <ContentItemList/></div>
    <div>      </SelectFilesResponse></div>
    <div>   </soapenv:Body></div>
    <div></soapenv:Envelope></div>
    </div>
    <div> </div>
    <div> </div>
    <div> </div>
    <div>Can you please guide me on this, I appreciate your help.</div>
    <div> </div>
    <div>Thanks.</div>
  • <p>Nagaraj,</p>
    <p> </p>
    <p>You aren't including anything in the ResultDef tag, this is the fields that you are trying to get back from the system about the files.</p>
    <p> </p>
    <p>Here is an example that I just captured via TCPMon from IDAPI to return all files (including directories) from the root of the volume, but not recursively.</p>
    <pre class="_prettyXprint _lang-xml">
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
    <AuthId soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0">SOMEVALUE</AuthId>
    <Locale soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0">en_US</Locale>
    <TargetVolume soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0">MyVolume</TargetVolume>
    <DelayFlush soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0"/>
    </soapenv:Header>
    <soapenv:Body>
    <SelectFiles xmlns="http://schemas.actuate.com/actuate11">
    <WorkingFolderName>/</WorkingFolderName>
    <Recursive>false</Recursive>
    <ResultDef>
    <String>Name</String>
    <String>Id</String>
    </ResultDef>
    <Search>
    <Condition>
    <Field>Name</Field>
    <Match>*</Match>
    </Condition>
    </Search>
    </SelectFiles>
    </soapenv:Body>
    </soapenv:Envelope>
    </pre>
    <p>The response I received is below:</p>
    <pre class="_prettyXprint _lang-xml">
    <?xml version='1.0' encoding='utf-8'?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
    <SelectFilesResponse xmlns="http://schemas.actuate.com/actuate11">
    <TotalCount>5</TotalCount>
    <ItemList>
    <File>
    <Id>300150000100</Id>
    <Name>/HelloWorld_NoOptions.ROX</Name>
    </File>
    <File>
    <Id>200100000100</Id>
    <Name>/Home</Name>
    </File>
    <File>
    <Id>100700000100</Id>
    <Name>/NullReport_9SP3.rox</Name>
    </File>
    <File>
    <Id>10100000100</Id>
    <Name>/Public</Name>
    </File>
    <File>
    <Id>700000000000</Id>
    <Name>/Resources</Name>
    </File>
    </ItemList>
    <ContentItemList />
    </SelectFilesResponse>
    </soapenv:Body>
    </soapenv:Envelope>
    </pre>
    <p>Does this help you in reviewing your code and how you are making the calls?</p>
    Warning No formatter is installed for the format ipb
  • <p>RSiegler,</p>
    <p> </p>
    <p> </p>
    <p>Thanks very much, helped me a lot. I am calling using SOAP UI. Can you also post an example for SelectJavaReportPage if you have any.</p>
    <p> </p>
    <p><span style="color:rgb(40,40,40);font-family:'Source Sans Pro', sans-serif;">Thanks,</span></p>
    <p><span style="color:rgb(40,40,40);font-family:'Source Sans Pro', sans-serif;">Nagaraj. </span></p>
  • Nagaraj123
    edited January 22, 2016 #6
    <p>Hi <span style="color:rgb(40,40,40);font-family:'Source Sans Pro', sans-serif;">RSiegler,</span></p>
    <p> </p>
    <p> </p>
    <p><span>I am trying to download the file as pdf once after getting the file ID. I am getting an error message "</span>The specified operation could not be performed. For more information, visit <a data-ipb='nomediaparse' href='http://www.actuate.com/actuate11/licensing'>http://www.actuate.com/actuate11/licensing</a>or contact your system administrator.", though I am using Administrator credentials. Am I missing any element or is it related to permissions?</p>
    <p> </p>
    <p><u>GetContent</u>:</p>
    <div>
    <pre class="_prettyXprint _lang-xml _linenums:NaN">
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:act="http://schemas.actuate.com/actuate11">
    <soapenv:Header>
    <act:TargetVolume>${target_volume}</act:TargetVolume>
    <AuthId>${auth_id}</AuthId>
    <FileType>
    <DriverName>C:\Users\\Downloadsoi</DriverName>
    </FileType>
    </soapenv:Header>
    <soapenv:Body>
    <act:GetContent>
    <act:Object>
    <!--Optional:-->
    <act:Id>${id}</act:Id>
    <!--Optional:-->
    <act:Name>RetailServices/RS_45602_CT2_Reason_by_Merchant.roi</act:Name>
    <!--Optional:-->
    <act:Type>pdf</act:Type>
    </act:Object>
    <act:DownloadEmbedded>false</act:DownloadEmbedded>
    </act:GetContent>
    </soapenv:Body>
    </soapenv:Envelope>

    </pre>
    </div>
    <div> </div>
    <div> </div>
    <div><u>Response</u>:</div>
    <div> </div>
    <div> </div>
    <div>    
    <pre class="_prettyXprint _lang-xml">
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body>
    <SOAP-ENV:Fault>
    <faultcode>Server</faultcode>
    <faultstring>Soap Server error.</faultstring>
    <detail>
    <RequestName>GetContent</RequestName>
    <ErrorCode>3331</ErrorCode>
    <Description>
    <Message>The specified operation could not be performed.
    For more information, visit http://www.actuate.com/actuate11/licensingor contact your system administrator.</Message>
    </Description>
    </detail>
    </SOAP-ENV:Fault>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    </pre>
    </div>
    <div> </div>
    <div> </div>
    <div> </div>
    <div>Thanks,</div>
    <div>Nagaraj.</div>
  • <p>Nagaraj,</p>
    <p> </p>
    <p>The filetype value should be the type of file you are converting, ROI, RPTDOCUMENT, SOI.</p>
    <p>It looks like you are including an unexpected element in there, which is the DriverName...</p>
    <p> </p>
    <p>My suggestion would be to download and install the Server Integration Technology package, in addition to reviewing the Using BIRT iServer Integration Technology manual which can be found at:</p>
    <p><a data-ipb='nomediaparse' href='http://developer.actuate.com/be/documentation/Manuals11SP4/using-iserver-integration-tech.pdf'>http://developer.actuate.com/be/documentation/Manuals11SP4/using-iserver-integration-tech.pdf</a></p&gt;
    <p> </p>
    <p>This should help provide more clarity on what is expected in the submissions and responses.</p>
    Warning No formatter is installed for the format ipb
  • RSiegler  I was able to convert ROI to PDF using Java program that leverages IDAPI. We have around 1 million ROI files in actuate server. We have to convert all of the files into a PDF format. Do you have any sample code which goes through all the folders and converts them into a PDF file.