Детализация SSRS и JAVA

Я написал java-прокси, чтобы получить подробный отчет от ssrs 2008. Он отлично работает, если я обращаюсь к нему через URL-адрес сервера отчетов, но в моем приложении java spring он теряет функциональность. Например, у меня есть подробный отчет о том, что если я нажму на знак «плюс», чтобы развернуть его, он работает в URL-адресе ssrs, но в моем jsp отображаемый HTML-код не работает, он должен работать так, как если бы я использовал URL-адрес сервера отчетов. вот пример моего кода, скажите, пожалуйста, возможно ли это.

public String getReport(String ReportUrl) throws Exception
 {
  ReportExecutionServiceSoapStub service = getService();


   ExecutionInfo info = service.loadReport(ReportUrl, null); //Load report
   info.setHasDocumentMap(false);
   setExecutionId(service, info.getExecutionID()); //You must set the session id before continuing


   String format = "HTML4.0"; //Valid options are HTML4.0, MHTML, EXCEL, CSV, PDF, etc
   String deviceInfo = "<DeviceInfo><Toolbar>True</Toolbar></DeviceInfo>"; //Only generate an HTML fragment
   ByteArrayHolder result = new ByteArrayHolder();
   StringHolder extension = new StringHolder();
   StringHolder mimeType = new StringHolder();
   StringHolder encoding = new StringHolder();
   ArrayOfWarningHolder warnings = new ArrayOfWarningHolder();
   ArrayOfStringHolder streamIDs = new ArrayOfStringHolder();   

   service.render(format, deviceInfo, result, extension, mimeType, encoding, warnings, streamIDs); //Render report to HTML

   System.out.println(new String(result.value)); //Prints the report HTML; this could be embedded in a JSP   
   return new String(result.value);
 }

 public static void setExecutionId(ReportExecutionServiceSoapStub service, String id) throws SOAPException
 {
  SOAPHeaderElement sessionHeader = new SOAPHeaderElement("http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices", "ExecutionHeader");
  sessionHeader.addChildElement("ExecutionID").addTextNode(id);
  service.setHeader(sessionHeader);
 }

 public static ReportExecutionServiceSoapStub getService() throws Exception{

   String endpoint = "http://192.168.69.213/reportserver/ReportExecution2005.asmx";
   AuthPolicy.registerAuthScheme(AuthPolicy.NTLM, JCIFS_NTLMScheme.class);
   ReportExecutionServiceSoapStub service = (ReportExecutionServiceSoapStub)new ReportExecutionServiceLocator(getEngineConfiguration()).getReportExecutionServiceSoap(new URL(endpoint));
   service.setUsername("192.168.69.213\\administrator");
   service.setPassword("secret");

   return service;
 }

 public static org.apache.axis.EngineConfiguration getEngineConfiguration()
 {
  java.lang.StringBuffer sb = new java.lang.StringBuffer();

  sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
  sb.append("<deployment name=\"defaultClientConfig\"\r\n");
  sb.append("xmlns=\"http://xml.apache.org/axis/wsdd/\"\r\n");
  sb.append("xmlns:java=\"http://xml.apache.org/axis/wsdd/providers/java\">\r\n");
  sb.append("<globalConfiguration>\r\n");
  sb.append("<parameter name=\"disablePrettyXML\" value=\"true\"/>\r\n");
  sb.append("<parameter name=\"enableNamespacePrefixOptimization\" value=\"true\"/>\r\n");
  sb.append("</globalConfiguration>\r\n");
  sb.append("<transport name=\"http\" pivot=\"java:org.apache.axis.transport.http.CommonsHTTPSender\"/>\r\n");
  sb.append("<transport name=\"local\" pivot=\"java:org.apache.axis.transport.local.LocalSender\"/>\r\n");
  sb.append("<transport name=\"java\" pivot=\"java:org.apache.axis.transport.java.JavaSender\"/>\r\n");
  sb.append("</deployment>\r\n");

  return new org.apache.axis.configuration.XMLStringProvider(sb.toString());
 }

Спасибо, любая помощь будет оценена.


person Ken    schedule 30.04.2014    source источник


Ответы (1)


В качестве одного из возможных решений я буду делать следующее.

У Ssrs есть GIF-изображения плюс и минус, которые вы можете скачать и включить в свой военный проект. Пользователь щелкнет одну из сгруппированных строк, затем я вызову другой отчет, чтобы получить сгруппированные данные и заменить изображение с плюсом на изображение с минусом. Это в значительной степени способ детализации, за исключением того, что вы выполняете некоторую логику для построения HTML по-другому.
Если вы откроете отчет в нашем браузере, посмотрите на его исходный код, чтобы получить представление о том, что нужно манипулировать.

person Ken    schedule 05.05.2014