# HG changeset patch # User Paul Boddie # Date 1465041166 -7200 # Node ID a91c990d9a3ed9f126111a2385535e901928465b # Parent 4c9993fbc5bce6d049d95975cae25148a619c720 Added unlimited quota details and an example of combining limits and delegation. Tidied up various existing flowcharts. diff -r 4c9993fbc5bc -r a91c990d9a3e docs/wiki/Resources --- a/docs/wiki/Resources Sat May 14 18:46:04 2016 +0200 +++ b/docs/wiki/Resources Sat Jun 04 13:52:46 2016 +0200 @@ -441,6 +441,15 @@ particular user will be unable to reserve the resource unless defined as a member of a group listed in the `limits` file, as described below. +It may be useful to define unlimited quotas for certain identities or +groups in order to effectively exclude them from limits. For example: + +{{{ +cat < add_to_quota_freebusy -> quota_cars -> freebusy_cars_vole; freebusy_cars_vole -> schedule_across_quota; - cancel -> remove_from_quota_freebusy -> freebusy_cars_vole; + cancel -> remove_from_quota_freebusy -> quota_cars; } }}} @@ -789,7 +798,7 @@ schedule -> add_to_quota -> quota_cars -> freebusy_cars_vole; freebusy_cars_vole -> schedule_for_delegate; - cancel -> remove_from_quota -> freebusy_cars_vole; + cancel -> remove_from_quota -> quota_cars; } }}} @@ -797,8 +806,93 @@ Note that it is generally more useful to have delegation decisions made on the basis of many resources, which is what the journal entries for each quota -provides, but also for many organisers attempting to reserve those resources. +provides, but also considering organisers attempting to reserve those resources +as a single group whose reservations are consolidated and assessed collectively. +Thus, a single group of users would be defined: + +{{{ +cat < + +{{{ +check_quota cars +schedule_for_delegate car_delegation +}}} + +|| + +{{{#!graphviz +//format=svg +//transform=notugly +digraph scheduling_decisions { + node [shape=box,fontsize="13.0",fontname="Helvetica",tooltip="Scheduling decisions"]; + edge [tooltip="Scheduling decisions"]; + + subgraph { + rank=same; + mail_cadillac [label="Incoming mail\nfrom vincent.vole@example.com\nto resource-car-cadillac@example.com",shape=folder,style=filled,fillcolor=cyan]; + mail_pontiac [label="Incoming mail\nfrom vincent.vole@example.com\nto resource-car-pontiac@example.com",shape=folder,style=filled,fillcolor=cyan]; + cancel [label="Incoming cancellation",shape=folder,style=filled,fillcolor=cyan]; + } + + subgraph { + rank=same; + check_quota [label="Is allowed by quota?",shape=ellipse,style=filled,fillcolor=gold]; + quota_cars [label="Quota for cars",shape=folder]; + quota_cars_vole [label="...applying to\nvincent.vole@example.com",shape=folder]; + } + + subgraph { + rank=same; + schedule_for_delegate [label="Can be scheduled or delegated?",shape=ellipse,style=filled,fillcolor=gold]; + quota_cars_delegation [label="Quota for cars_delegation",shape=folder]; + freebusy_cars_delegation_vole [label="...recording schedule for\nvincent.vole@example.com",shape=folder]; + } + + schedule [label="Schedule event for resource",shape=ellipse,style=filled,fillcolor=gold]; + + subgraph { + rank=same; + accept [label="Accept",shape=folder,style=filled,fillcolor=cyan]; + delegate [label="Delegate",shape=folder,style=filled,fillcolor=cyan]; + decline [label="Decline",shape=folder,style=filled,fillcolor=cyan]; + } + + add_to_quota [label="Add to quota",shape=ellipse,style=filled,fillcolor=darkorange]; + remove_from_quota [label="Remove from quota",shape=ellipse,style=filled,fillcolor=darkorange]; + + mail_cadillac -> check_quota; + mail_pontiac -> check_quota; + check_quota -> schedule_for_delegate; + check_quota -> decline [style=dashed]; + schedule_for_delegate -> schedule -> accept; + schedule_for_delegate -> delegate [style=dashed]; + schedule_for_delegate -> decline [style=dashed]; + schedule -> add_to_quota; + add_to_quota -> quota_cars -> quota_cars_vole; + add_to_quota -> quota_cars_delegation -> freebusy_cars_delegation_vole; + quota_cars_vole -> check_quota; + freebusy_cars_delegation_vole -> schedule_for_delegate; + + cancel -> remove_from_quota; + remove_from_quota -> quota_cars; + remove_from_quota -> quota_cars_delegation; +} +}}} + +}}}}