# HG changeset patch # User Paul Boddie # Date 1454257134 -3600 # Node ID e55229d8df6d809be921b20c8a2d4a22110d0be3 # Parent 2370d3618f2ed17af76951c77651a6593c399564 Added explanatory diagrams for scheduling functions to the resources page. diff -r 2370d3618f2e -r e55229d8df6d docs/wiki/Resources --- a/docs/wiki/Resources Sun Jan 31 13:09:48 2016 +0100 +++ b/docs/wiki/Resources Sun Jan 31 17:18:54 2016 +0100 @@ -24,10 +24,44 @@ event has been received. By default, a value equivalent to the following is employed: +{{{{#!table +'''Scheduling Functions''' || '''Decision Process''' +== + + {{{ schedule_in_freebusy }}} +|| + +{{{#!graphviz +//format=svg +//transform=notugly +digraph scheduling_decisions { + node [shape=box,fontsize="13.0",fontname="Helvetica",tooltip="Scheduling decisions"]; + edge [tooltip="Scheduling decisions"]; + + mail [label="Incoming mail",shape=folder,style=filled,fillcolor=cyan]; + + subgraph { + rank=same; + schedule_in_freebusy [label="Can schedule in free/busy?",shape=ellipse,style=filled,fillcolor=gold]; + freebusy [label="Free/busy",shape=folder]; + } + + schedule [label="Schedule event for resource",shape=ellipse,style=filled,fillcolor=gold]; + accept [label="Accept",shape=folder,style=filled,fillcolor=cyan]; + decline [label="Decline",shape=folder,style=filled,fillcolor=cyan]; + + mail -> schedule_in_freebusy -> schedule -> accept; + schedule_in_freebusy -> decline [style=dashed]; + freebusy -> schedule_in_freebusy; +} +}}} + +}}}} + As described above, this merely attempts to schedule an event in the free periods of the resource's schedule. However, no attempt is made to reject the booking of the resource according to the identity of the organiser. @@ -45,11 +79,48 @@ test that the organiser belongs to the same Internet mail domain (by using the organiser's address): +{{{{#!table +'''Scheduling Functions''' || '''Decision Process''' +== + + {{{ schedule_in_freebusy same_domain_only }}} +|| + +{{{#!graphviz +//format=svg +//transform=notugly +digraph scheduling_decisions { + node [shape=box,fontsize="13.0",fontname="Helvetica",tooltip="Scheduling decisions"]; + edge [tooltip="Scheduling decisions"]; + + mail [label="Incoming mail",shape=folder,style=filled,fillcolor=cyan]; + + subgraph { + rank=same; + schedule_in_freebusy [label="Can schedule in free/busy?",shape=ellipse,style=filled,fillcolor=gold]; + freebusy [label="Free/busy",shape=folder]; + } + + same_domain_only [label="Organiser has resource domain?",shape=ellipse,style=filled,fillcolor=gold]; + + schedule [label="Schedule event for resource",shape=ellipse,style=filled,fillcolor=gold]; + accept [label="Accept",shape=folder,style=filled,fillcolor=cyan]; + decline [label="Decline",shape=folder,style=filled,fillcolor=cyan]; + + mail -> schedule_in_freebusy -> same_domain_only -> schedule -> accept; + schedule_in_freebusy -> decline [style=dashed]; + same_domain_only -> decline [style=dashed]; + freebusy -> schedule_in_freebusy; +} +}}} + +}}}} + Note that if the first function is omitted, no check against the resource's schedule will occur, so it is necessary to mention any such function in the list. @@ -60,14 +131,65 @@ resource. Thus, another function is provided to exercise a finer degree of control over event participants. For example: +{{{{#!table +'''Scheduling Functions and Data''' || '''Decision Process''' +== + + {{{ schedule_in_freebusy access_control_list }}} -To accompany this, the [[../Preferences#acl|acl]] setting in the -resource's preferences must be set, or if a separate file is more appropriate, -its full path may be given as an argument: +Access control list: + +{{{ +accept +}}} + +|| + +{{{#!graphviz +//format=svg +//transform=notugly +digraph scheduling_decisions { + node [shape=box,fontsize="13.0",fontname="Helvetica",tooltip="Scheduling decisions"]; + edge [tooltip="Scheduling decisions"]; + + mail [label="Incoming mail",shape=folder,style=filled,fillcolor=cyan]; + + subgraph { + rank=same; + schedule_in_freebusy [label="Can schedule in free/busy?",shape=ellipse,style=filled,fillcolor=gold]; + freebusy [label="Free/busy",shape=folder]; + } + + subgraph { + rank=same; + access_control_list [label="Access control list permits booking?",shape=ellipse,style=filled,fillcolor=gold]; + acl [label="acl setting",shape=folder]; + } + + accept_default [label="Accept invitation by default",shape=ellipse,style=filled,fillcolor=darkorange]; + end_acl [label="end",shape=ellipse,style=filled,fillcolor=darkorange]; + + schedule [label="Schedule event for resource",shape=ellipse,style=filled,fillcolor=gold]; + accept [label="Accept",shape=folder,style=filled,fillcolor=cyan]; + decline [label="Decline",shape=folder,style=filled,fillcolor=cyan]; + + mail -> schedule_in_freebusy -> access_control_list -> accept_default -> end_acl -> schedule -> accept; + end_acl -> decline [style=dashed]; + schedule_in_freebusy -> decline [style=dashed]; + freebusy -> schedule_in_freebusy; + acl -> access_control_list; +} +}}} + +}}}} + +To accompany the scheduling functions, the [[../Preferences#acl|acl]] setting +in the resource's preferences must be set, or if a separate file is more +appropriate, its full path may be given as an argument to `access_control_list`: {{{ schedule_in_freebusy @@ -75,7 +197,8 @@ }}} Within the file provided by the setting or separate file, a list of rules -must describe the handling procedure for an event. For example: +must describe the handling procedure for an event. For example, the following +was given in the above example: {{{ accept @@ -84,21 +207,128 @@ This will merely accept all invitations, anyway. However, it may be appropriate to prevent certain users from using resources. For example: +{{{{#!table +'''Scheduling Functions and Data''' || '''Decision Process''' +== + + +{{{ +schedule_in_freebusy +access_control_list +}}} + +Access control list: + {{{ accept decline attendee simon.skunk@example.com }}} +|| + +{{{#!graphviz +//format=svg +//transform=notugly +digraph scheduling_decisions { + node [shape=box,fontsize="13.0",fontname="Helvetica",tooltip="Scheduling decisions"]; + edge [tooltip="Scheduling decisions"]; + + mail [label="Incoming mail",shape=folder,style=filled,fillcolor=cyan]; + + subgraph { + rank=same; + schedule_in_freebusy [label="Can schedule in free/busy?",shape=ellipse,style=filled,fillcolor=gold]; + freebusy [label="Free/busy",shape=folder]; + } + + subgraph { + rank=same; + access_control_list [label="Access control list permits booking?",shape=ellipse,style=filled,fillcolor=gold]; + acl [label="acl setting",shape=folder]; + } + + accept_default [label="Accept invitation by default",shape=ellipse,style=filled,fillcolor=darkorange]; + decline_attendee [label="Is attendee simon.skunk@example.com?",shape=ellipse,style=filled,fillcolor=darkorange]; + end_acl [label="end",shape=ellipse,style=filled,fillcolor=darkorange]; + + schedule [label="Schedule event for resource",shape=ellipse,style=filled,fillcolor=gold]; + accept [label="Accept",shape=folder,style=filled,fillcolor=cyan]; + decline [label="Decline",shape=folder,style=filled,fillcolor=cyan]; + + mail -> schedule_in_freebusy -> access_control_list -> accept_default -> decline_attendee -> end_acl -> schedule -> accept; + end_acl -> decline [style=dashed]; + schedule_in_freebusy -> decline [style=dashed]; + freebusy -> schedule_in_freebusy; + acl -> access_control_list; +} +}}} + +}}}} + This example indicates that by default, invitations will be accepted, but if one of the attendees of an event is `simon.skunk@example.com`, the invitation will be declined. However, it may be the case that this rule should be overridden under certain circumstances. For example: +{{{{#!table +'''Scheduling Functions and Data''' || '''Decision Process''' +== + + +{{{ +schedule_in_freebusy +access_control_list +}}} + +Access control list: + {{{ accept decline attendee simon.skunk@example.com accept organiser paul.boddie@example.com }}} +|| + +{{{#!graphviz +//format=svg +//transform=notugly +digraph scheduling_decisions { + node [shape=box,fontsize="13.0",fontname="Helvetica",tooltip="Scheduling decisions"]; + edge [tooltip="Scheduling decisions"]; + + mail [label="Incoming mail",shape=folder,style=filled,fillcolor=cyan]; + + subgraph { + rank=same; + schedule_in_freebusy [label="Can schedule in free/busy?",shape=ellipse,style=filled,fillcolor=gold]; + freebusy [label="Free/busy",shape=folder]; + } + + subgraph { + rank=same; + access_control_list [label="Access control list permits booking?",shape=ellipse,style=filled,fillcolor=gold]; + acl [label="acl setting",shape=folder]; + } + + accept_default [label="Accept invitation by default",shape=ellipse,style=filled,fillcolor=darkorange]; + decline_attendee [label="Is attendee simon.skunk@example.com?",shape=ellipse,style=filled,fillcolor=darkorange]; + accept_organiser [label="Is organiser paul.boddie@example.com?",shape=ellipse,style=filled,fillcolor=darkorange]; + end_acl [label="end",shape=ellipse,style=filled,fillcolor=darkorange]; + + schedule [label="Schedule event for resource",shape=ellipse,style=filled,fillcolor=gold]; + accept [label="Accept",shape=folder,style=filled,fillcolor=cyan]; + decline [label="Decline",shape=folder,style=filled,fillcolor=cyan]; + + mail -> schedule_in_freebusy -> access_control_list -> accept_default -> decline_attendee -> accept_organiser -> end_acl -> schedule -> accept; + end_acl -> decline [style=dashed]; + schedule_in_freebusy -> decline [style=dashed]; + freebusy -> schedule_in_freebusy; + acl -> access_control_list; +} +}}} + +}}}} + Here, the stated organiser may still arrange a booking of the resource where the previously-mentioned attendee is involved.