Hi,

>>                           -- 1:1 -- Action
>> Object -- 1:n -- Approval -- 1:1 -- Action
>>                           -- 1:1 -- Action
>
> All in one line:
>
> object -- 1:n -- approval -- 1:n -- action ?

yes, of course. Stupid me. :-) Forget it.

> My idea was this one:
>
> object -- 1:n -- action -- 1:1 -- signature
>
> action is in my understanding the operation (e.g. approval, deletion)
> plus the user information. So perhaps action is the wrong name. Perhaps
> the name approval or authorization for all is more correct. Ok, some
> definitions:
>
> APPROVED - is a state of OpenCA's object lifecycle
> DELETED  - is a state of OpenCA's object lifecycle
> approval - is an action of an operator which authorizes data or a
>             process information
>
> So let's name it approval and always remember that this is not identical
> with the state approved.

Hmm, the problem is that we have multiple different meanings of
'approval' here. What you are thinking of is

- the object remains unmodified in the database until the completion of
  the process
- a number of 'action/operation/transition/modification' entries
  are generated by each administrator
- the desired transition is indicated in the 'action/operation...'
  entry ('approve', 'reject')
- the object is modified once the required number of transition objects
  are available

I see some problems with this approach:
There is no clear indication of how the object should be modified,
because the transition type (approve, reject) is contained
in each 'action/operation...' handle.
Although it could be prevented by application logic, it is possible
to create inconsistent data:

object - action/operation...(1) -> "Approve"
         action/operation...(1) -> "Reject"

What should we do now? The whole thing is ambiguos now, should we
approve it or reject it?

I was implicitly thinking of the approach we had in this other
project:

- object
- administrator wants to change object, modifies it and writes it
  to another table of the database. let's call it the 'edit' state.
  by looking at the differences
  between the original object and the new one it is perfectly
  clear what action is going to be performed on the object
- other administrators may acknowledge or reject this change
- one single reject results in deletion of the changed object in
  the 'edit' state
- a number of n acknowledge entries for the change object triggers
  promotion (copying) of the object in edit state to the original
  table, replacing the original object

This is how we did it in the other project. The approach is very
clean but unfortunately not very easy to implement.
(We also had some performance issues in a later stage, but this
was because each and every object in the system had an 'edit' table
that was used to hold modifications until the modification was approved
by the required number of administrators. The performance problems
began when multiple objects depending on each other were transferred
between 'edit' and productive state.)

> Next question is the new state. If we start approving a pending request
> then this request is no longer pending and it is not approved. There is
> a state for exact this situation - signed. If we support multi approval
> mechanisms without signature then we should use another name than
> signing. Any ideas for a good statename?

How about 'edit' state...? :-)

Michael, Oli, how about a telephone conference about this issue?
I really think we have to get a clean design before we start messing
things up...

cheers

Martin




-------------------------------------------------------
This SF.Net email is sponsored by: InterSystems CACHE
FREE OODBMS DOWNLOAD - A multidimensional database that combines
robust object and relational technologies, making it a perfect match
for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8
_______________________________________________
OpenCA-Devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/openca-devel

Reply via email to