Martin Bartosch wrote:

nope, note the 1:n in front of action. One entry for each admin.
yeah, i think thats clear ;) - i maybe didn't rewrite this so clear

IMO we should really prevent having more than one object floating
in edit state at any time. This problem always comes up with dual
control.

no the object isn't floating, the object is in state 'edit' - and there it stays until the necessary steps (blackbox for the object) are done, to move it to another state


requests that blocked others, but believe me, in field usage it pays
to have a design that does not allow for inconsistent data.
how can one request block another?
my understanding is, that they get handeled independet from each
other... i mean the aproval, since mass aproving makes no sense, therefore are the operators wich have to review each request, if its not pre authenticated, but then is the request review just at a other time and at a another step in the processing of an request... (before the request is inserted into openca)


And multiple contradicting edit entries *are* inconsistent.
the entries are only for this object - like in the 'edit' table, where the votings get 'captured' and handled by application logic, and this logic makes a dicission one time in the future, which leads to change of the 'edit' state of the object...
(actually this could handled soly by the database logic, but not all support this, so in the end our application logic has to do it... otherwise one could do this with triggers and db-scripting quite nice, but this is no option fur us i think)


I would rather not call it voting. I also propose not to allow
anything different than a 100% agreement on any change. (This is
consistent with various legislatory requirements that are in effect
e. g. for banks.)
but thats actually the same i mean, just with other words ;)

One single denial should cause the whole operation to be rejected.
Of course this *could* be abused for DOS attacks, but as admins
are usually trusted and rejections leave an audit trail, this problem
can be addressed formally.
yes, since you won't ever circuumvent 'hacked' operator accounts, a reject kills - it has to, to make the application reliable in sense of, its hard to get an 'faked/malicious' certificate in

- for example if the first veto voting occurs (in this case reject), the
system can handle the object, all further operators will see then, it
has been rejected, or they doesn't even see the request anymore, so less
work for them

The request should be removed from the edit state.

of course, i mean, thats what i meant with: the object get 'locked' into 'edit' state until a decission - from 'voting' is made, in this second table, but the object itself is always in consistent state, just the decission making process gets handeld separate (black box for the object and its state)


but they can 'recall' it with a list like rejected requests... and look
up why it has been rejected
No need for this, I think.
good

The application shouldn't normally read the adit trail itself.
In fact, it could even be implemented write-only for the application.
(Then another (auditing) system could open the database read-only
for the audit trail.)

See above, I don't think we should abuse the audit feature that way.
Reason is that some time in the future we will notice that there
is this-and-that that is not present in the audit trail information
and then start messing around with it.
The audit stuff should be separated from any appliation logic.
ack


How about this:

* detection of pending changes waiting for additional approval
-> Once an administrator logs on the system gets a list of all
   changes in edit state that need approval (and that have not yet
   been approved by this admin). It presents a list of all pending
   requests or better yet, a notification indicating how many pending
   requests are there that need attention.
yes, thats sounds good

-> Optionally the system could generate notification emails once
   a request is in the queue that needs approval.
this we have somewher on the todo - so should be integrated anyway
this should be configurable:
- every new request triggers a information
- every n new requests triggers a information
- at least one information per day/houre/$timespan (if n is not
  reached, so none gets 'lost' or a to high amount of time until
  processed)

the last two options is to avoid 'spamming' of the operators
but to guarantee 'deadlines' when request get 'announced' to them outside the system (by e-mail or other things), if an operator logs in - he gets always shown how many open issues are there for him to work on


* state change
-> after each approval the system checks if the required number
   of approvals have been applied. If so, the change is committed
   into production state. Otherwise no operation.
   If the operation was a rejection, the change is immediately
   removed.
thats exactly what i wanted to say ;)

That way we should be able to do without the 'processed' flag,
shouldn't we?
the processed flag has been just an idea for keeping knowledge about the decission process, if someone wants to see it outside the audit-trail ;)

so the entries in the 'edit' table doens't get deleted, but 'ignored' since this object has been processed (not in state 'edit' anymore, an object is only alowed to leave state 'edit' if the 'edit' table is either clear of entries of it, or all entries are marked 'processed')

this means - your conclusion about the state change stays the same,
- if a veto operation (reject occurs) all entries in 'edit'-table get removed for this object and the object state changes,
- if all necessary 'votes' are there, the same happens
- if not - nothing happens


if we have the 'use-case' keep information about decission making process, the entries won't get deleted but marked processed

thats all ;)

this can be skiped or keeped - it won't change the general behavior
if its not necessary to have this knowledge we don't put it in...


greetings dalini


------------------------------------------------------- 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