rfc2446.txt
来自「RFC 的详细文档!」· 文本 代码 · 共 1,477 行 · 第 1/5 页
TXT
1,477 行
1.2 Related Documents
Implementers will need to be familiar with several other memos that,
along with this one, describe the Internet calendaring and scheduling
standards. This document, [iTIP], specifies an interoperability
protocol for scheduling between different implementations. The
related documents are:
[iCAL] - specifies the objects, data types, properties and
property parameters used in the protocols, along with the
methods for representing and encoding them;
[iMIP] specifies an Internet email binding for [iTIP].
This memo does not attempt to repeat the specification of concepts or
definitions from these other memos. Where possible, references are
made to the memo that provides for the specification of these
concepts or definitions.
1.3 ITIP Roles and Transactions
ITIP defines methods for exchanging [iCAL] objects for the purposes
of group calendaring and scheduling between "Calendar Users" (CUs).
CUs take on one of two roles in iTIP. The CU who initiates an
exchange takes on the role of "Organizer". For example, the CU who
proposes a group meeting is the "Organizer". The CUs asked to
participate in the group meeting by the "Organizer" take on the role
of "Attendee". Note that "role" is also a descriptive parameter to
the _ATTENDEE_ property. Its use is to convey descriptive context to
an "Attendee" such as "chair", "req-participant" or "non-participant"
and has nothing to do with the calendaring workflow.
Silverberg, et. al. Standards Track [Page 6]
RFC 2446 iTIP November 1998
The ITIP methods are listed below and their usage and semantics are
defined in section 3 of this document.
+================+==================================================+
| Method | Description |
|================+==================================================|
| PUBLISH | Used to publish a calendar entry to one or more |
| | Calendar Users. There is no interactivity |
| | between the publisher and any other calendar |
| | user. An example might include a baseball team |
| | publishing its schedule to the public. |
| | |
| REQUEST | Used to schedule a calendar entry with other |
| | Calendar Users. Requests are interactive in that |
| | they require the receiver to respond using |
| | the Reply methods. Meeting Requests, Busy |
| | Time requests and the assignment of VTODOs to |
| | other Calendar Users are all examples. |
| | Requests are also used by the "Organizer" to |
| | update the status of a calendar entry. |
| | |
| REPLY | A Reply is used in response to a Request to |
| | convey "Attendee" status to the "Organizer". |
| | Replies are commonly used to respond to meeting |
| | and task requests. |
| | |
| ADD | Add one or more instances to an existing |
| | VEVENT, VTODO, or VJOURNAL. |
| | |
| CANCEL | Cancel one or more instances of an existing |
| | VEVENT, VTODO, or VJOURNAL. |
| | |
| REFRESH | The Refresh method is used by an "Attendee" to |
| | request the latest version of a calendar entry. |
| | |
| COUNTER | The Counter method is used by an "Attendee" to |
| | negotiate a change in the calendar entry. |
| | Examples include the request to change a |
| | proposed Event time or change the due date for a |
| | VTODO. |
| | |
| DECLINE- | Used by the "Organizer" to decline the proposed |
| COUNTER | counter-proprosal. |
+================+==================================================+
Silverberg, et. al. Standards Track [Page 7]
RFC 2446 iTIP November 1998
Group scheduling in iTIP is accomplished using the set of "request"
and "response" methods described above. The following table shows the
methods broken down by who can send them.
+================+==================================================+
| Originator | Methods |
|================+==================================================|
| Organizer | PUBLISH, REQUEST, ADD, CANCEL, DECLINECOUNTER |
| | |
| Attendee | REPLY, REFRESH, COUNTER |
| | REQUEST only when delegating |
+================+==================================================+
Note that for some calendar component types, the allowable methods
are a subset of the above set.
2 Interoperability Models
There are two distinct protocols relevant to interoperability: an
"Application Protocol" and a "Transport Protocol". The Application
Protocol defines the content of the iCalendar objects sent between
sender and receiver to accomplish the scheduling transactions listed
above. The Transport Protocol defines how the iCalendar objects are
sent between the sender and receiver. This document focuses on the
Application Protocol. Binding documents such as [iMIP] focus on the
Transport Protocol.
The connection between Sender and Receiver in the diagram below
refers to the Application Protocol. The iCalendar objects passed from
the Sender to the Receiver are presented in Section 3, Application
Protocol Elements.
+----------+ +----------+
| | iTIP | |
| Sender |<-------------------->| Receiver |
| | | |
+----------+ +----------+
There are several variations of this diagram in which the Sender and
Receiver take on various roles of a "Calendar User Agent" (CUA) or a
"Calendar Service" (CS).
The architecture of iTIP is depicted in the diagram below. An
application written to this specification may work with bindings for
the store-and-forward transport, the real time transport, or both.
Also note that iTIP could be bound to other transports.
Silverberg, et. al. Standards Track [Page 8]
RFC 2446 iTIP November 1998
+------------------------------------------+
| iTIP |
+------------------------------------------+
|Real-time | Store-and-Fwd | Other |
|Transport | Transport | Transports... |
+------------------------------------------+
2.1 Application Protocol
In the iTIP model, a calendar entry is created and managed by an
"Organizer". The "Organizer" interacts with other CUs by sending one
or more of the iTIP messages listed above. "Attendees" use the
"REPLY" method to communicate their status. "Attendees" do not make
direct changes to the master calendar entry. They can, however, use
the "COUNTER" method to suggest changes to the "Organizer". In any
case, the "Organizer" has complete control over the master calendar
entry.
2.1.1 Calendar Entry State
There are two distinct states relevant to calendar entries: the
overall state of the entry and the state associated with an
"Attendee" to that entry.
The state of an entry is defined by the "STATUS" property and is
controlled by the "Organizer." There is no default value for the
"STATUS" property. The "Organizer" sets the "STATUS" property to the
appropriate value for each calendar entry.
The state of a particular "Attendee" relative to an entry is defined
by the "partstat" parameter in the "ATTENDEE" property for each
"Attendee". When an "Organizer" issues the initial entry, "Attendee"
status is unknown. The "Organizer" specifies this by setting the
"partstat" parameter to "NEEDS-ACTION". Each "Attendee" modifies
their "ATTENDEE" property "partstat" parameter to an appropriate
value as part of a "REPLY" message sent back to the "Organizer".
2.1.2 Delegation
Delegation is defined as the process by which an "Attendee" grants
another CU (or several CUs) the right to attend on their behalf. The
"Organizer" is made aware of this change because the delegating
"Attendee" informs the "Organizer". These steps are detailed in the
REQUEST method section.
Silverberg, et. al. Standards Track [Page 9]
RFC 2446 iTIP November 1998
2.1.3 Acting on Behalf of other Calendar Users
In many organizations one user will act on behalf of another to
organize and/or respond to meeting requests. ITIP provides two
mechanisms that support these activities.
First, the "Organizer" is treated as a special entity, separate from
"Attendees". All responses from "Attendees" flow to the "Organizer",
making it easy to separate a calendar user organizing a meeting from
calendar users attending the meeting. Additionally, iCalendar
provides descriptive roles for each "Attendee". For instance, a role
of "chair" may be ascribed to one or more "Attendees". The "chair"
and the "Organizer" may or may not be the same calendar user. This
maps well to scenarios where an assistant may manage meeting
logistics for another individual who chairs a meeting.
Second, a "sent-by" parameter may be specified in either the
"Organizer" or "Attendee" properties. When specified, the "sent-by"
parameter indicates that the responding CU acted on behalf of the
specified "Attendee" or "Organizer".
2.1.4 Component Revisions
The "SEQUENCE" property is used by the "Organizer" to indicate
revisions to the calendar component. The rules for incrementing the
"SEQUENCE" number are defined in [iCAL]. For clarity, these rules are
paraphrased here in terms of how they are applied in [iTIP]. For a
given "UID" in a calendar component:
. For the "PUBLISH" and "REQUEST" methods, the "SEQUENCE" property
value is incremented according to the rules defined in [iCAL].
. The "SEQUENCE" property value MUST be incremented each time the
"Organizer" uses the "ADD" or "CANCEL" methods.
. The "SEQUENCE" property value MUST NOT be incremented when using
"REPLY", "REFRESH", "COUNTER", "DECLINECOUNTER", or when sending a
delegation "REQUEST".
In some circumstances the "Organizer" may not have received responses
to the final revision sent out. In this situation, the "Organizer"
may wish to send an update "REQUEST", and set "RSVP=TRUE" for all
"Attendees", so that current responses can be collected.
Silverberg, et. al. Standards Track [Page 10]
RFC 2446 iTIP November 1998
The value of the "SEQUENCE" property contained in a response from an
"Attendee" may not always match the "Organizer's" revision.
Implementations may choose to have the CUA indicate to the CU that
the response is to an entry that has been revised and allow the CU to
decide whether or not to accept the response.
2.1.5 Message Sequencing
CUAs that handle the [iTIP] application protocol must often correlate
a component in a calendar store with a component received in the
[iTIP] message. For example, an event may be updated with a later
revision of the same event. To accomplish this, a CUA must correlate
the version of the event already in its calendar store with the
version sent in the [iTIP] message. In addition to this correlation,
there are several factors that can cause [iTIP] messages to arrive in
an unexpected order. That is, an "Organizer" could receive a reply
to an earlier revision of a component AFTER receiving a reply to a
later revision.
To maximize interoperability and to handle messages that arrive in an
unexpected order, use the following rules:
1. The primary key for referencing a particular iCalendar component
is the "UID" property value. To reference an instance of a
recurring component, the primary key is composed of the "UID" and
the "RECURRENCE-ID" properties.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?