Home Server

Server functions?

edited September 2006 in Server
My company uses a heavily customised Pro RB 6. We are looking at what
would be required in moving to RB10.

I may have miss understood some of the material I have been looking into,
so hence the questions.

Can the server product return a PDF version of a report into a database?
If so how would this be done? (Important as another product grabs it from

We run RB in a non user mode to act as our server currently, would the
server product replace this?

There is no scheduler? (Which is fine since we have our old one if not)

Does the server load all the same values as RB into memory(All tables etc)?
Or does it only load what in the report?
Or does it load everything once and use the information for all reports?

Some feedback in these areas would be greatly appreciated.

--- posted by geoForum on http://delphi.newswhat.com


  • edited September 2006

    RB Server is a multi-tier solution. The back end ReportServer produces Page
    objects that are sent to ClientReport and/or WebTier.

    report server --> Page ---> client (clientreport, webtier) --> output
    formats (preview, print, pdf, etc)

    The ClientReport can be used in Delphi windows applications to preview,
    print, generate PDF's or any other type of output. The point here is that
    the Page objects are translated into output formats by the client.

    The WebTier can be used in Delphi web applications (typically a Web Broker
    application). The WebTier manages web sessions initiaited by web browser
    clients and generates web content. The webtier generates an xhtml/javascript
    report previewer and can also generate PDF and other content that can be
    sent to the browser.

    RB Server does not currently include a built-in scheduler - that is a
    feature that we want to add to a future release.

    I do not understand the question about what the server loads. Perhaps you
    can explain further or give me an example.

    There are ReportVolume components that you use to define collections of
    reports to the server. For example, you can use the ReportExplorerVolume to
    publish reports stored to the report explorer database.

    The sever is multi-threaded. Each client session will have a separate
    instance of the report.

    Nard Moseley
    Digital Metaphors

    Best regards,

    Nard Moseley
    Digital Metaphors
  • edited September 2006

    To make it easier for you to see where I am coming from, let me explain
    our architecture and setup.

    1. Report Builder (RB)
    2. RGS ? Scheduler (RGS)
    3. Report Builder in a non GUI mode ? Server mode (RBS)

    The RB has been customised a fair bit over the years and the RGS is our
    own development. The RBS uses the same code as RB.

    All of the reports are built through RB as normal. The reports are saved
    back into the database. A user can only see what their security allows
    them to. This can mean they cannot see certain reports as it is outside
    their department or they do not have permission to see events. This
    security is setup by another application. This other application is based
    on the intranet and written in Java.

    From the other application a report request may be made for now or
    scheduled for later. Either request writes a record to the database.

    For an immediate request the RGS grabs the record and passes the
    appropriate information to the RBS through a file referenced on the
    command line as a parameter. The RBS then generates the report as a PDF
    and saves the report into the database. The other application will then
    display the PDF to the user or a message if a failure of some sort occurred.

    For a scheduled report the process is the same except the record for
    processing will not appear until later.

    When RB loads it always loads the data dictionary, which is a slow
    process, and when in RBS mode it does a similar thing. So for every report
    that is generated there is the same overhead occurring.

    (Current system)
    RB -> built report -> database

    Other app - > request to database - > RGS -> pass request -> RBS -> output
    pdf -> database -> Other app displays

    From looking at this can we improve things? (The other app is something we
    cannot get rid of, as it is a flagship product, but we could make changes
    to it.)

    I am wondering if it is possible to have a server with a clientreport
    component so the server could write a PDF to the database?

    With the WebTier component, it only converts server output to a client
    within a browser? Correct? It cannot save a PDF to a database, only to a
    directory on the sever machine which is then served out to the internet?

    Thanks for your time.


    --- posted by geoForum on http://delphi.newswhat.com
  • edited September 2006

    - For your DataDictionary, try setting ValidateTableNames and
    ValidateFieldNames to False. That can help performance.

    - I think that with RB Server it only loads the DataDictionary information
    once, and all client sessions that need that information share a thread-safe
    singleton meta cache.

    - Loading report templates from a database can also cause performance
    issues. For RB 10 we added a new property
    ReportExplorer.ItemTemplatePipeline property that can be used to optimize
    performance of reports stored to the report explorer database. On the
    server, there is a ReportExplorerVolume component that has the same
    property. This enables the ItemPipeline to connect to a table that contains
    all fields except the template field and the ItemTemplatePipeline to contain
    a linked query that selects the template field for a single record.

    - Based upon your description I would use the ClientReport to build the
    functionality that you need. The ClientReport is very simple to use.
    ClientReport and Report descend from a common ancestor (Producer) and
    therefore share many of the same properties and methods.

    - I can understand using the PDF generation for the scheduling, but for an
    interactive user I recommend letting ClientReport display the preview
    dialog. RB Server can incrementally generate pages upon demand - so the
    users gets Page 1 very very quickly (just like with RB in a non-server
    environment). Then if they want to navigate to anothe page, RB Server will
    generate that page. The clientreport caches the page locally also.

    - The WebTier internally uses ClientReport to communicate with the report
    server. The WebTier receives web request from browser clients, communicates
    with the report server, manages web sessions, and generates web content.

    I recommend downloading a trial version of RB Server Edition. Run the demos
    that are installed and and work thru the tutorials in the RB Server
    Developers Guide. This will not take long - the tutorials are simple and
    clear. RB Server makes it very very simple to get your existing reports
    working in a high performance server environment.

    Nard Moseley
    Digital Metaphors

    Best regards,

    Nard Moseley
    Digital Metaphors
This discussion has been closed.