[Top][All Lists]
[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>
- [GNUe-dev] [RFC] GNUe Reports Server,
Jan Ischebeck <=