Could the Web Tier in RB Server be used in an ISAPI application to generate RB Archive files which could be streamed back to a client over HTTP? How difficult would this be?
There is an example of adding an XLS export button to the Web Report Viewer. This same technique could be used to export a RAF file. See RBServer\Demos\WebTier\Custom Viewer. The example contains a ReadMe.doc and commented code.
Another question: Is there a way to bypass the web report viewer entirely in your ISAPI architecture? I have no need to view the report in a web viewer first.
Here is the background: I have a client application (Win32 exe) that sends an HTTP request to an ISAPI dll, which processes the request by generating a RAF file and streams it back via HTTP, where it is then displayed in a custom client-side viewer. My current ISAPI DLL is a homegrown solution (built using RB Enterprise) and I would like to redo it and leverage the robustness of RB Server, without having to change my client app too much.
I hope you don't mind me replying, but what's wrong with you current solution ? IMHO I don't see big advantages in using the RB Server architecture for the way you have implemented it now. What you could do is making a com+ object which is responsible for generating the report (in pdf/raf etc. format) and let the isapi return it to the client. That's the way I do it sometimes and it works perfect.
The problem is that my solution is not as stable as I would like it to be. Every day or so, my web report server gets hung up and I have to unload the web. I'm not sure if it's a threading issue or something else. Could you perhaps elaborate on your approach a bit more?
1. Create a custom web content provider that can generate the .raf file.
2. The content provider will have a content type, such as 'Archive'.
3. See article below for sending requests to the webtier. You will specify the content type as one of the parameters.
--------------------------------------------- Tech Tips: How can I request that the webtier execute a specified report? ---------------------------------------------
Question: ---------
Without using the Web ReportExplorer, how can I request that the webtier execute a specified report?
Solution: ---------
The webtier processes requests for web content. These requests consists of
{note: content=viewer, is used to request report viewer content.}
3. Additional parameters that are specific to the content request.
volume=Report Forms (the volume name) Name=Basic\Biolife Table (the full path name to the report) frameset=1 (show the framset with the toolbar etc., this is required)
Use a web browser to access the webtier demo that displays the report explorer.
Notice that when you place the mouse over a report in the report explorer that the status bar in IE shows the url plus some params. That is the string required to run the report on the web tier.
content=viewer (type of content is report viewer) volume=Report Forms (the volume name) Name=Basic\Biolife Table (the full path name to the report) frameset=1 (show the framset with the toolbar etc., this is required)
well I think I didn't read your question to well. It seems that you still want to use the report webviewer ? In that case I think you should use the solution Nard gave you. About the com+ solution, for every report I have a report module. Every report can be generated by running a specific procedure in the com+ object, for example :
GetSalesReport(aYear, aMonth, aFormat): Variant;
in the aFormat you specifiy the format in which the report should be generated, for example pdf, raf, xls etc. The report is returned in a variant to the client. This way you can run the reports from many different clients (windows exe, isapi web, other com objects...). With version 7.x I don't have any problems with threading issues.
Comments
There is an example of adding an XLS export button to the Web Report Viewer.
This same technique could be used to export a RAF file. See
RBServer\Demos\WebTier\Custom Viewer. The example contains a ReadMe.doc and
commented code.
--
Nard Moseley
Digital Metaphors
http://www.digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
Another question:
Is there a way to bypass the web report viewer entirely in your ISAPI
architecture? I have no need to view the report in a web viewer first.
Here is the background:
I have a client application (Win32 exe) that sends an HTTP request to an
ISAPI dll, which processes the request by generating a RAF file and streams
it back via HTTP, where it is then displayed in a custom client-side viewer.
My current ISAPI DLL is a homegrown solution (built using RB Enterprise) and
I would like to redo it and leverage the robustness of RB Server, without
having to change my client app too much.
Regards,
-Lukas Rathswohl
I hope you don't mind me replying, but what's
wrong with you current solution ?
IMHO I don't see big advantages in using the
RB Server architecture for the way you have
implemented it now. What you could do is
making a com+ object which is responsible
for generating the report (in pdf/raf etc. format)
and let the isapi return it to the client.
That's the way I do it sometimes and it works perfect.
greetings,
Rob Segerink
The problem is that my solution is not as stable as I would like it to be.
Every day or so, my web report server gets hung up and I have to unload the
web. I'm not sure if it's a threading issue or something else.
Could you perhaps elaborate on your approach a bit more?
Many thanks,
-Lukas Rathswohl
1. Create a custom web content provider that can generate the .raf file.
2. The content provider will have a content type, such as 'Archive'.
3. See article below for sending requests to the webtier. You will specify
the content type as one of the parameters.
---------------------------------------------
Tech Tips: How can I request that the webtier
execute a specified report?
---------------------------------------------
Question:
---------
Without using the Web ReportExplorer, how can I request that the webtier
execute a specified report?
Solution:
---------
The webtier processes requests for web content. These requests consists of
1. The URL for the webtier
example: http://127.0.0.1/rbWebPub/report.dll
2. A parameter specifying the content type.
example: content=viewer
{note: content=viewer, is used to request report viewer content.}
3. Additional parameters that are specific to the content request.
volume=Report Forms (the volume name)
Name=Basic\Biolife Table (the full path name to the report)
frameset=1 (show the framset with the toolbar etc., this is required)
Use a web browser to access the webtier demo that displays the report
explorer.
Notice that when you place the mouse over a report in the report explorer
that the status bar in IE shows the url plus some params. That is the string
required to run the report on the web tier.
Example:
http://127.0.0.1/rbWebPub/report.dll?content=viewer&volume=Report
Forms&name=Basic\Biolife Table&framset=1
So the parameters here are
content=viewer (type of content is report viewer)
volume=Report Forms (the volume name)
Name=Basic\Biolife Table (the full path name to the report)
frameset=1 (show the framset with the toolbar etc., this is required)
--
Nard Moseley
Digital Metaphors
http://www.digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
well I think I didn't read your question to well.
It seems that you still want to use the report
webviewer ? In that case I think you should use
the solution Nard gave you.
About the com+ solution, for every report I have
a report module. Every report can be generated
by running a specific procedure in the com+ object,
for example :
GetSalesReport(aYear, aMonth, aFormat): Variant;
in the aFormat you specifiy the format in which the
report should be generated, for example pdf, raf, xls etc.
The report is returned in a variant to the client. This way
you can run the reports from many different clients (windows exe,
isapi web, other com objects...).
With version 7.x I don't have any problems with threading
issues.
greetings,
Rob Segerink
I will experiment with that.