[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [GNUe-dev] [RFC] GNUe Reports Server
From: |
Jason Cater |
Subject: |
Re: [GNUe-dev] [RFC] GNUe Reports Server |
Date: |
Wed, 29 Oct 2003 08:40:49 -0600 |
As I've pointed out in IRC, I *really* wish we wouldn't move focus to
GNUe Reports Server at this time. I'm trying to get the GNUe Reports
engine working well first. I think doing the reports server right now
will just cause it to be redone when I finalize the reports engine
interface. We have too many unfinished things as it is.
>From your notes below, though, I do agree we'll need authentication. I
personally don't like the idea of uploading report definitions via the
server, though, and am not so sure about the async "feedback" thing. I
think it's overkill at this stage.
-- Jason
On Wed, 29 Oct 2003 12:39:42 +0100
Jan Ischebeck <address@hidden> wrote:
> Hi,
>
> yesterday I hacked a bit on the gnue-reports-server fragments, and
> made it actual usable. By adding a sample php client implementation I
> hope to increase the value of GNUe for Webapplications as the current
> Arias.
>
> By describing the current interface of the GNUe Reports Server I want
> to show current design flaws, how I think these flaws could be
> resolved and want to know what you all think about the stuff.
>
> Implementation:
> ===============
> (as seen from client side)
>
> GNUe Reports calls GNUe Reports Server in the following way:
>
> ## PREPARATION
>
> # 1. Server parameters are set
> params = {'host': 'localhost', 'port': 8766, 'transport': 'http' }
> interface = 'xmlrpc'
>
> # 2. A gcomm interface is created from the settings
> gcomm = GComm.attach(interface, params)
>
> # 3. A proxy object is created for the "GReportServer"
> rep_server = gcomm.request("GReportServer")
>
> ## RPC calls
>
> # 4. get new report engine
> rep_engine = rep_server.requestReportEngine()
>
> # 5. set parameters
> rep_engine.setDestination(destination, destinationType,
> destinationOptions)
> rep_engine.setFilter(filter, self.OPTIONS['filter_options'])
>
> # 6. process the report
> rep_engine.processReport(reportfile, userParameters,
> sortoption, self.OPTIONS["comment"],
> self.OPTIONS["exclude_xml"])
>
> # 7. remove the engine
> rep_engine.clear()
>
> TODO & COMMENTS:
> ================
>
> 1. Implement a way to store settings for both server and reports
> client
>
> * how should the rpc connection parameters for the report server be
> stored? (Step 1)
>
> * what about the interface parameters of the server itself?
>
> * do we need a seperate [gnue-reports-server] section in gnue.conf?
>
> 2. Add security framework
>
> * do we need a login procedure? (IMHO yes!, password etc. could be
> passed to requestReportEngine)
>
> * security checks for report names, output file names
>
> 3. Add asynchronous report processing
>
> I thought of a "report" proxy class, which provides processing status
> of the report. (needs new thread and synchronizing on server side)
> Something like this:
>
> report = rep_engine.buildReport(....)
>
> report.start_processing()
>
> while not ready:
> ready = report.Status()
> // do other stuff
> sleep(x)
>
> print(report.fetchResult())
>
> 4. Add report uploading/result downloading in the report server
> itself.
>
> uploading: IMHO not directly needed and a security flaw in some parts.
> result downloading: could be usefull for html reports
>
>
> Please read critical and comment.
>
> Jan
>
>
> --
> Jan Ischebeck <address@hidden>
>
>
>
> _______________________________________________
> Gnue-dev mailing list
> address@hidden
> http://mail.gnu.org/mailman/listinfo/gnue-dev
>