gnue-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUe-dev] [RFC] GNUe Reports Server


From: Jan Ischebeck
Subject: [GNUe-dev] [RFC] GNUe Reports Server
Date: Wed, 29 Oct 2003 12:39:42 +0100

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>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]