Hi,

>> My idea was this one:
>> object -- 1:n -- action -- 1:1 -- signature
>
> there i would have some questions:
>
>       - which signature would stand in the end
>
> and
>
>       - then, it is not clear anymore who did which action
>       - and the operator may not be 'liable' for it since
>       - he didn't sign his action

nope, note the 1:n in front of action. One entry for each admin.

> i think: in such a case, you have to define an operation that
> 'overwrites' others, so in a 1:n szenario, one reject may stop the whole
> thing in the default setup, a other instance may ona have this
> different, but would make it also more complicated in the application
> logic, to privode choosable ammounts of each operation... to wight them

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.
We did the same in our other project and also had the problem of
requests that blocked others, but believe me, in field usage it pays
to have a design that does not allow for inconsistent data.

And multiple contradicting edit entries *are* inconsistent.

> but since we are in a security related area i like the 'failsafe'
> aproach more, means, one denies an operation - so reject kills, even if
> there may be 5 approve 'votes'
>
> maybe we call this state 'voting' ;) - even if its no real voting, or
> its voting with veto - and reject is an veto operation

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

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

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

> - since i think, why put several requests into the database - that makes
> no sense to me...

agreed

> - to handle the idea of 'safing' the object changes, this may be done
> through the audit trail i think, or one may have another table:
> object id - state - timestamp, but finaly this should be also in the
> audit trail... and therefore doesn't need to be done for every object
> again... or?

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

> - so maybe we should have a clean and clear audit trail approach and
> look what can be handeld by it - so we don't have to think everytime
> again about this...

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.

> therefor the voting/edit table could have a column called: processed
>
> if a object changes into the edit/voting phase through the first
> operator who 'votes' or by default, so operators get signaled - you have
> to vote a new request... - then the entries in the edit/voting table
> gets create through each voting-step of each operator, there the
> processed clumun is clear, if the first veto operation occurs or all
> necessary votings are there, all entries for this object get marked
> 'processed'
>
> - so the object itself leafes the voting/edit afterwards and moves to
> its new state - depending on the decission made by the operators

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.
-> Optionally the system could generate notification emails once
   a request is in the queue that needs approval.

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

That way we should be able to do without the 'processed' flag,
shouldn't we?

> just my 2 cents, what did your phone conference bring up`?

what phone conference...? :->

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