Skip to main content
Skip table of contents

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

Operation

Describes which operation the adapter performs.

Possible values:

ICal To XML: Converts an iCal text document to XML

XML To iCal: Converts an adapter-specific XML structure to an iCalendar text document

Create iXmap for Email Adapter: Outputs the iXmap XML structure from the iCal event as an email body, including parameter values. This XML structure is used to dynamically parameterize a POP/SMTP adapter, see X4 Developer Reference - Dynamic Processes via iXmap.

This operation will be deprecated with the next release.

Parameters

Adapter

Main class of the adapter (do not change!)

Possible values:

de.softproject.integration.adapter. ICalendar.ICalendarAdapter: Main class (Default)

attachmentName

File name of the email attachment containing the iCal calendar item (for the Create iXmap for E-mail Adapter operation)

Possible values:

Any valid file name

Status values

1

The adapter operation was executed successfully

-1

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:

CODE
<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.

CODE
<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.

CODE
<iXmap>
   <Return>
      <!-- for each set parameter -->
      <Parametername 1><!--Value 1--></Parametername 1>
      <Parametername n><!--Value n--></Parametername n>
   </Return>
</iXmap>
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.