1.1 --- a/docs/wiki/Preferences Fri May 13 01:10:08 2016 +0200
1.2 +++ b/docs/wiki/Preferences Fri May 13 01:35:07 2016 +0200
1.3 @@ -296,13 +296,20 @@
1.4 .. indicated quota group
1.5 .. (described in the [[../Resources|resources guide]])
1.6 ==
1.7 +`same_domain_only` || accept an invitation only if the organiser employs an
1.8 + .. address in the same domain as the resource
1.9 +==
1.10 `schedule_across_quota`|| accept an invitation only if the organiser has not
1.11 .. reserved a resource for a conflicting period in any
1.12 .. other resource belonging to the indicated quota group
1.13 .. (described in the [[../Resources|resources guide]])
1.14 ==
1.15 -`same_domain_only` || accept an invitation only if the organiser employs an
1.16 - .. address in the same domain as the resource
1.17 +`schedule_for_delegate`|| accept an invitation only if the organiser can
1.18 + .. reserve the resource according to the common quota
1.19 + .. schedule, delegating to any other available resource
1.20 + .. defined as a potential delegate, declining if no
1.21 + .. resource is available
1.22 + .. (described in the [[../Resources|resources guide]])
1.23 ==
1.24 `schedule_in_freebusy` || accept an invitation if the event periods are free
1.25 .. according to the free/busy records for the resource;
2.1 --- a/docs/wiki/Resources Fri May 13 01:10:08 2016 +0200
2.2 +++ b/docs/wiki/Resources Fri May 13 01:35:07 2016 +0200
2.3 @@ -413,6 +413,10 @@
2.4 EOF
2.5 }}}
2.6
2.7 +Note that this general quota applies to each individual identity and not
2.8 +collectively to all unspecified identities. To impose such a collective
2.9 +quota, a group may be defined for this purpose as described below.
2.10 +
2.11 When a user identity is not listed and no general quota is defined, that
2.12 particular user will be unable to reserve the resource unless defined as a
2.13 member of a group listed in the `limits` file, as described below.
2.14 @@ -420,9 +424,25 @@
2.15 ==== Sharing Quotas Across Users ====
2.16
2.17 When the use of resources is to be shared between users in such a way that
2.18 -groups of users will be sharing a single quota, the `groups` file in the
2.19 -quota directory must be defined, mapping each user identity to the group to
2.20 -which they will belong. For example:
2.21 +groups of users will be sharing a single quota, a `groups` file in a quota
2.22 +directory (or records in the `quota_groups` table) must be defined, mapping
2.23 +each user identity to the group to which they will belong.
2.24 +
2.25 +A tool is provided to define groups and is used as follows:
2.26 +
2.27 +{{{
2.28 +cat <<EOF | tools/set_quota_groups.py 'mailto:resource-car-cadillac@example.com'
2.29 +mailto:vincent.vole@example.com developers
2.30 +* others
2.31 +EOF
2.32 +}}}
2.33 +
2.34 +Here, otherwise unrecognised organisers are mapped to the `others` group.
2.35 +Thus, all scheduling performed by such organisers will be done in a common
2.36 +journal with this label.
2.37 +
2.38 +The process of determining where an organiser's usage of resources is
2.39 +recorded is illustrated by the following example:
2.40
2.41 {{{{#!table
2.42 '''Scheduling Data''' || '''Decision Process'''
2.43 @@ -674,3 +694,91 @@
2.44 }}}
2.45
2.46 }}}}
2.47 +
2.48 +==== Delegating Attendance ====
2.49 +
2.50 +A number of resources may be regarded as interchangeable and can therefore
2.51 +stand in for each other when they are unavailable. The iCalendar specification
2.52 +supports the notion of delegation: the recipient of an event invitation may
2.53 +delegate their attendance to other calendar user, informing that user and the
2.54 +event organiser of this decision.
2.55 +
2.56 +To define such delegation relationships, a quota is first selected as the
2.57 +repository of common scheduling information for a group of resources. Then,
2.58 +the members of the group are defined as delegates. This can be done using a
2.59 +tool provided for this purpose. For example:
2.60 +
2.61 +{{{
2.62 +cat <<EOF | tools/set_delegates.py 'cars'
2.63 +mailto:resource-car-cadillac@example.com
2.64 +mailto:resource-car-pontiac@example.com
2.65 +EOF
2.66 +}}}
2.67 +
2.68 +Here, two resources are defined that will delegate to each other if they
2.69 +cannot attend an event according to their own schedule.
2.70 +
2.71 +{{{{#!table
2.72 +'''Scheduling Functions''' || '''Decision Process'''
2.73 +==
2.74 +<style="vertical-align: top;">
2.75 +
2.76 +{{{
2.77 +schedule_for_delegate cars
2.78 +}}}
2.79 +
2.80 +||
2.81 +
2.82 +{{{#!graphviz
2.83 +//format=svg
2.84 +//transform=notugly
2.85 +digraph scheduling_decisions {
2.86 + node [shape=box,fontsize="13.0",fontname="Helvetica",tooltip="Scheduling decisions"];
2.87 + edge [tooltip="Scheduling decisions"];
2.88 +
2.89 + subgraph {
2.90 + rank=same;
2.91 + mail_cadillac [label="Incoming mail\nfrom vincent.vole@example.com\nto resource-car-cadillac@example.com",shape=folder,style=filled,fillcolor=cyan];
2.92 + mail_pontiac [label="Incoming mail\nfrom vincent.vole@example.com\nto resource-car-pontiac@example.com",shape=folder,style=filled,fillcolor=cyan];
2.93 + cancel [label="Incoming cancellation",shape=folder,style=filled,fillcolor=cyan];
2.94 + }
2.95 +
2.96 + subgraph {
2.97 + rank=same;
2.98 + schedule_for_delegate [label="Can be scheduled or delegated?",shape=ellipse,style=filled,fillcolor=gold];
2.99 + quota_cars [label="Quota for cars",shape=folder];
2.100 + freebusy_cars_vole [label="...recording schedule for\nvincent.vole@example.com",shape=folder];
2.101 + }
2.102 +
2.103 + schedule [label="Schedule event for resource",shape=ellipse,style=filled,fillcolor=gold];
2.104 +
2.105 + subgraph {
2.106 + rank=same;
2.107 + accept [label="Accept",shape=folder,style=filled,fillcolor=cyan];
2.108 + delegate [label="Delegate",shape=folder,style=filled,fillcolor=cyan];
2.109 + decline [label="Decline",shape=folder,style=filled,fillcolor=cyan];
2.110 + }
2.111 +
2.112 + add_to_quota [label="Add to quota",shape=ellipse,style=filled,fillcolor=darkorange];
2.113 + remove_from_quota [label="Remove from quota",shape=ellipse,style=filled,fillcolor=darkorange];
2.114 +
2.115 + mail_cadillac -> schedule_for_delegate;
2.116 + mail_pontiac -> schedule_for_delegate -> schedule -> accept;
2.117 + schedule_for_delegate -> delegate [style=dashed];
2.118 + schedule_for_delegate -> decline [style=dashed];
2.119 + schedule -> add_to_quota -> quota_cars -> freebusy_cars_vole;
2.120 + freebusy_cars_vole -> schedule_for_delegate;
2.121 +
2.122 + cancel -> remove_from_quota -> freebusy_cars_vole;
2.123 +}
2.124 +}}}
2.125 +
2.126 +}}}}
2.127 +
2.128 +Note that it is generally more useful to have delegation decisions made on the
2.129 +basis of many resources, which is what the journal entries for each quota
2.130 +provides, but also for many organisers attempting to reserve those resources.
2.131 +Although the journal for each quota may be divided up to administer quotas for
2.132 +multiple groups of organisers, for the purposes of delegation - deciding
2.133 +whether a resource is generally available, and deciding which other resource
2.134 +would be available instead - a single group of all organisers is more desirable.