[Zope-dev] DB(Oracle) Transactions with Zope(/ZPatterns)

Andreas Repp Andreas.Repp@lrz-muenchen.de
Thu, 17 May 2001 20:40:47 +0200 (MET DST)


Hi *,

i'm currently developing a (network information) DB web-interface using
ZPatterns specialists with one specialist for every logical object.

For instance i have a 'component'-specialist which handles
a object<->table mapping for the tables:
 o component
   - product (n:1 foreign key)
   - location (n:1 foreign key)
   - physical port (1:n foreign key)
   - ...

The user (provided that she/he has permission) should be able to create
a new component as well as related physical ports, new product etc.

'create component' Sequence:
----------------------------

 (1) call component-specialist newItem
     -> skin script 'WHEN OBJECT ADDED' calls SQL insert statement
        with default attribute parameters from ZClass
        ### + SQL commit (Zope/DC Oracle default behavior)! ###

 (2) redirect user to .../component/#newid/edit

 (3) user adds new physical port
     -> skin script 'WHEN OBJECT ADDED' calls SQL insert statement
        with component #newid as foreign key + default stuff from ZClass
        again an SQL commit-statement is appended
 ...

 (x) user clicks 'cancel'-button
     -> MY PROBLEM (trash in DB because of no(?) possibility to make
        a SQL rollback)

Questions:
----------

1. Is it possible to make sure a user stays with a specific DC Oracle
   thread ? (trick timeouts via http-refresh ?)

2. Provided that a user can have her/his private DB thread (kind of a
   private xterm with PL/SQL ;-) is it possible to wrap a bunch of SQL
   statements (triggered by ZPatterns) into a (Oracle) DB Transaction ?


Any comments (maybe answers ;-) would be _very_ appreciated.

thank u in advance

Andy


----------------------------------------------------------------------
Andreas Repp				  andreas.repp@lrz-muenchen.de
Leibniz Rechenzentrum Muenchen				    www.lrz.de
Barer Str. 21				       office +49 8441 4980772
D-80333 Muenchen			       mobile +49  172 8337010
----------------------------------------------------------------------