iCalendar
This adapter creates an RFC 5545 iCalendar event from an adapter-specific XML document or converts an iCalendar text document into an XML document. In addition, you can dynamically parametrize a POP/SMTP adapter to send an iCalendar event (e.g. An appointment invitation) as an email attachment.
Example: In the X4 Experience demo system, you can find the iCalendarAdapter.wrf
example process to learn how to use the adapter.
Properties
| Describes which operation the adapter performs. Possible values:
This operation will be deprecated with the next release. |
Parameters
| Main class of the adapter (do not change!) Possible values:
|
| File name of the email attachment containing the iCal calendar item (for the Possible values: Any valid file name |
Status values
| The adapter operation was executed successfully |
| The operation failed due to a technical error. |
Dependencies
This adapter has dependencies with the following libraries:
ical4j-1.0.jar
backport-util-concurrent-3.1.jar
icalendar.jar
Operation: iCal to XML
The iCal To XML
operation converts a valid iCal text document to XML.
Input
For the iCal To XML
operation, the adapter expects any valid iCal text document.
Output
For the iCal To XML
operation, the adapter outputs an XML document that contains all the appointment information (see the description of the input structure for the XML To iCal
operation).
Operation: XML to iCal
The XML To iCal
operation converts an adapter-specific XML structure to an iCalendar text document.
Input
The adapter expects an input XML document according to the following pattern:
<iCalendarData>
<!-- Email metadata: only relevant if the adapter is supposed to create an iXmap
for the POP/SMTP adapter -->
<mail>
<from><!--Email address of the sender--></from>
<to><!--Email addresses of the recipients, separated by semicolons (";")--></to>
<cc><!--Email addresses of the CC recipients, separated by semicolons--></cc>
<bcc><!--Email addresses of the BCC recipients, separated by semicolons--></bcc>
<subject><!--Subject--></subject>
</mail>
<prodId><!--ID of the program that has created the iCalendar data--></prodId>
<!-- Publication method according to RFC 2446 (p.73)
e. g. "REQUEST": Meeting request;
"PUBLISH": Appointment publication for information purposes only -->
<method><!--Publication method--></method>
<timezoneId><!--Any timezone ID by ical4j, e. g. Europe/Berlin--></timezoneId>
<!-- Event: see RFC 2445 p. 51 -->
<vevent>
<uid><!--Globally unique ID for the iCalendar component (may be created automatically)--></uid>
<organizer>
<name><!--Name of the organizer--></name>
<mail><!--Email address of the organizer--></mail>
<!-- Additional parameters depending on the iCalendar property
(for experts only) -->
<parameters>
<parameter>
<name><!--Parameter name--></name>
<value><!--Parameter value--></value>
Parameters
Parameters
</organizer>
<!-- Attendees: (only supported in part by MS Outlook)-->
<!-- Instead, Outlook uses the recipient data from the email -->
<attendees>
<attendee>
<name><!--Name of the attendee--></name>
<mail><!--Email address of the attendee--></mail>
<!-- Attendee information; see RFC 2445 p. 28 -->
<role><!--REQ-PARTICIPANT, OPT-PARTICIPANT, or NON-PARTICIPANT--></role>
<partStat><!- Participation status (on response): ACCEPTED, DECLINED ...--></partStat>
<askForResponse><!--Request response: true or false--></askForResponse>
<!-- Additional parameters depending on the iCalendar property
(for experts only) -->
<parameters>
<name><!--Parameter name--></name>
<value><!--Parameter value--></value>
Parameters
</attendee>
</attendees>
<startTime timezoneId="Europe/London"><!--Start of the appointment (DATE or DATE-TIME)-->
</startTime>
<endTime><!--End of the appointment (DATE or DATE-TIME)--></endTime>
<!-- If an appointment is changed: 0-n; increases by
1 with each change -->
<sequence><!- sequence: 0-n--></sequence>
<priority><!--Priority 1-9 (1=highest priority, 0=no priority)--></priority>
<summary><!--Title of the appointment--></summary>
<description><!--Description text of the appointment--></description>
<location><!--Location--></location>
<status><!- Status of the appointment: CONFIRMED, TENTATIVE ...--></status>
<!--Note: MS Outlook cannot process appointments with the
"rrule" und "exrule" elements defined! -->
<rrule><!--Recurrence rule--></rrule>
<exrule><!--Exceptions from the recurrence rule--></exrule>
<!-- see RFC 2445 p.66 -->
<!-- Triggers an action at a specific time;
can only be used in "vevent" and "vtodo2" -->
<valarm>
<!-- see RFC 2445 p.70 -->
<trigger>
<value><!--Time value whose type depends on the "type" element--></value>
<type><!--Time value type: DURATION (default), DATE-TIME, or DATE--></type>
<!-- If this element is set to "true” and the “DURATION” type is selected,
the “value” element is considered relative to the
end of the parent component.
If it is set to “false”, the value is considered relative to the start. -->
<relativeToEnd>Relative indication: true or false--></relativeToEnd>
</trigger>
<!-- see RFC 2445 p.69 -->
<action><!--DISPLAY--></action>
<repeat><!--Number of alarm repetitions--></repeat>
<!-- Time gap between alarms if the “repeat” value is larger than 0
(here, it is set to 30 seconds)-->
<duration><!--PT30S--></duration>
<summary><!--Title of the alarm message--></summary>
<description><!--Description of the alarm message--></description>
<!-- Optional: Definition of "attendees" and "otherProperties"
(structure as in "vevent") -->
</valarm>
<categories>
<!-- 1-n categories to which the appointment should belong -->
<category><!--Category name--></category>
</categories>
<!-- Other properties (only properties that are defined
for this component) -->
<otherProperties>
<property>
<name><!--Property name--></name>
<value><!--Property value--></value>
<parameters>
<parameter>
<name><!--Parameter name--></name>
<value><!--Parameter value--></value>
Parameters
Parameters
</property>
</otherProperties>
</vevent>
<!-- Task: see RFC 2445 p.54 -->
<vtodo>
<due timezoneId="US-Eastern"><!--End time in the following format: YYYYMMDDThhmmss--></due>
<duration><!--Duration - cannot be used in conjunction with the “due” element--></duration>
<!-- Here, you can additionally use all elements
from "vevent", except for "endTime”. -->
</vtodo>
<!-- Journal: see RFC 2445 p.55 -->
<vjournal>
<!-- All elements from "vevent", except for: "sequence", "priority",
"location", "endTime" and "valarm" -->
</vjournal>
<!-- Busy/Free: see RFC 2445 p.57 -->
<vfree_busy>
<uid>(see “vevent” element)</uid>
<organizer><!--see “vevent” element--></organizer>
<attendees><!--see “vevent” element--></attendees>
<startTime><!--see “vevent” element--></startTime>
<endTime><!--see “vevent” element--></endTime>
<duration><!--Duration - cannot be used in conjunction with the "endTime" element--></duration>
<comment><!--Comment text--></comment>
<otherProperties><!--see “vevent” element--></otherProperties>
</vfree_busy>
<otherProperties><!--see “vevent” element--></otherProperties>
</iCalendarData>
Output
For the XML To iCal
operation, the adapter outputs a corresponding iCalendar text document.
Operation: Create iXmap for E-Mail Adapter
This operation will be deprecated with the next release.
With the Create iXmap for E-mail Adapter
operation, you can output the iXmap XML structure from the iCal event as an email body, including parameter values, which can then be used to parametrize a POP/SMTP adapter dynamically, see X4 Developer Reference - Dynamic Processes via iXmap.
Input
For the Create iXmap for E-Mail Adapter
operation, the adapter expects the same XML structure as for the XML To iCal
operation.
In addition, however, the root element can contain a <mail>
element as the first child element. In this element, you can create an element and a corresponding value for each parameter to be set dynamically in the POP/SMTP adapter.
<iCalendarData>
<mail>
<!-- for each parameter to be set -->
<Parametername 1><!--Value 1--></Parametername 1>
<Parametername n><!--Value n--></Parametername n>
</mail>
<!-- Dates -->
</iCalendarData>
Output
For the Create iXmap for E-Mail Adapter
operation, the adapter outputs an iXmap XML document that is used to dynamically parameterize a POP/SMTP adapter, see X4 Developer Guide - Dynamic Processes via iXmap.
For the process engine to identify the iXmap structure as such, the XML document needs to be re-transformed via XSL. An identity transformation is sufficient. A subsequent POP/SMTP adapter is then dynamically parameterized with the values specified in the input XML document.
<iXmap>
<Return>
<!-- for each set parameter -->
<Parametername 1><!--Value 1--></Parametername 1>
<Parametername n><!--Value n--></Parametername n>
</Return>
</iXmap>