imip-agent

Annotated docs/wiki/AgentPrograms

1053:068aa85f0c45
2016-02-08 Paul Boddie Made the retraction operation a complete transaction. Tidied up the locking and unlocking function application.
paul@961 1
= Agent Programs =
paul@961 2
paul@961 3
A collection of programs are provided to handle messages for different kinds of
paul@961 4
mail participants. Currently, the following programs are provided:
paul@961 5
paul@961 6
|| '''Program'''    || '''Purpose''' ||
paul@961 7
|| `imip_person.py` ||<|2> Maintain scheduling information on behalf of people ||
paul@961 8
|| `imip_person_outgoing.py` ||
paul@1032 9
|| `imip_resource.py` || Act as an autonomous [[../Resources|resource]] that can be reserved ||
paul@961 10
paul@961 11
For people, the role of the agent programs concerned is to construct a schedule
paul@961 12
that can be accessed via the [[../CalendarManager|management interface]] and to
paul@961 13
maintain a free/busy record for event scheduling purposes.
paul@961 14
paul@961 15
For resources, the role of the agent program concerned is also to maintain
paul@961 16
schedule and free/busy records, but also to act autonomously - that is, without
paul@961 17
manual intervention - and to respond to event invitations or booking requests
paul@961 18
according to policies defined in the [[../Configuration|configuration]] of the
paul@961 19
system.
paul@992 20
paul@992 21
== Program Invocation ==
paul@992 22
paul@992 23
Since imip-agent is concerned with the integration of calendaring with e-mail,
paul@992 24
these programs are typically invoked by the [[../MailIntegration|mail system]],
paul@992 25
although they may be invoked directly for [[../Testing|testing]] and other
paul@992 26
purposes. Various options may be presented to the programs in order to modify
paul@992 27
their behaviour, and these are summarised when the `--help` option is given.
paul@992 28
For example:
paul@992 29
paul@992 30
{{{
paul@992 31
imip_person.py --help
paul@992 32
}}}
paul@992 33
paul@992 34
The [[../MailIntegration|mail configuration guide]] references configuration
paul@992 35
files that include example invocations of these programs. Generally, few
paul@992 36
options need to be specified, and as a result the programs will acquire their
paul@992 37
configuration from the installed [[../Configuration|configuration files]].
paul@992 38
paul@992 39
One exception is the `imip_person.py` program that needs to be told whether
paul@992 40
it will deliver messages using [[../MailIntegration/LMTP|LMTP]] with the `-l`
paul@992 41
option or using [[../MailIntegration/LocalSMTP|SMTP]] with the `-L` option.
paul@1006 42
See the [[../MailIntegration/Transports|transports documentation]] for more
paul@1006 43
information.
paul@994 44
paul@994 45
== Program Responsibilities ==
paul@994 46
paul@994 47
The person agent programs or "handlers", `imip_person.py` and
paul@994 48
`imip_person_outgoing.py` are responsible for keeping the schedule of each
paul@994 49
participating calendar user up to date with the requests that are sent and
paul@994 50
received by that user. Their roles are limited to recording data along with
paul@994 51
a small amount of automation: they can be [[../Preferences|configured]] to
paul@994 52
reply to free/busy requests without requesting any intervention on the part
paul@994 53
of the user receiving such requests.
paul@994 54
paul@994 55
Such handlers may be enhanced to perform more tasks autonomously, so that
paul@994 56
certain requests might be dealt with automatically, according to policies
paul@994 57
defined by each user. See the [[../UseCases|use-cases guide]] for some
paul@994 58
potentially-implementable ideas.
paul@994 59
paul@994 60
Meanwhile, the resource handler, `imip_resource.py`, is responsible not only
paul@1032 61
for maintaining a schedule for a [[../Resources|resource]], but it must also
paul@1032 62
make scheduling decisions itself without human involvement. How it may behave
paul@1032 63
is determined by a number of policies set in the [[../Preferences|preferences]]
paul@1032 64
so that, for example, it may suggest alternative event periods when those
paul@1032 65
requested in an invitation are unavailable.