Notices 

RSuite™ CMS and the RSuite CMS logo is a trademarks of Orbis Technologies, Inc.

Copyright © 2016 Orbis Technologies, Inc. All rights reserved.

This is a confidential document only to be shared with current RSuite customers and others designated by Orbis Technologies.

For more information on RSuite or Orbis Technologies, visit:

The PDF version of this document is created with the RenderX XEP FO engine integrated with the DITA Open Toolkit. See www.renderx.com for product details.

Terminology 

extension point
A place declared by RSuite for adding function.
extension provider
The code that provides the function of the extension. It is typically a Java® class definition or an XML declaration. It is delivered to RSuite in a plug-in jar
managed object (MO)
A content entity stored by RSuite that is individually retrievable.

Chapter 1. DITA configuration overview 

Starting with RSuite CMS 4.1, RSuite includes a default DITA Open Toolkit (OT) for producing output from within RSuite. The default OT contains doctypes (DTD) and extensions you are most likely to use in RSuite:

  • DITA for Publishers (D4P) doctypes
  • DITA for Publishers extensions: output transformations and Word-to-XML transformations
  • DITA DTD components for RSuite metadata
  • DITA doctypes for the configuration file for DITA transforms used by RSuite

Audience

This book assumes the reader is familiar with DITA and DITA OTs. There is more information on the Internet:
  • about toolkit extensions in the DITA Open Toolkit Developer Reference on the DITA Open Toolkit 1.8 Documentation page
  • about DITA for Publishers (D4P) in the DITA for Publishers User Guide

Deploying OTs with plug-ins

DITA OT doctypes and extensions are delivered as RSuite plug-ins. When an RSuite plug-in containing a DITA configuration is deployed, RSuite puts the configuration in a new or existing OT folder and loads the DTDs into RSuite. The OT folders, including the default OT, are in the rsuite-root/integration/ folder.

This guide describes:

  • Activating the default OT (see Enable the default Open Toolkit)
  • Changing DTD configurations and OTs in RSuite (see Use another Open Toolkit)
  • Configuring RSuite plug-ins to apply DITA OT (see Configure the RSuite DITA Open Toolkit plug-in)
  • Configuring DITA extensions in an RSuite plug-in (see Declare DITA OT extensions in rsuite-plugin.xml)
  • Configuring the oXygen editor to use a particular DITA OT (see Configure oXygen with a DITA Open Toolkit)
  • Upgrading to RSuite 4.1 (see Upgrade to RSuite 4.1)

Chapter 2. Enable the default Open Toolkit 

RSuite is delivered with a DITA Open Toolkit named "default" in rsuite-root/integration. RSuite plug-ins and custom code refer to OTs by name.

We recommend that your default version be the version that RSuite is using. This ensures that you are using an OT version that has been tested with other RSuite features.

RSuite CMS 4.1 and 5.0.3 were released with OT version 1.8.5.

    Perform these steps to enable the default Open Toolkit:

  1. After RSuite is installed, create an open toolkit properties file, rsuite-root/conf/dita-open-toolkits.properties.
  2. Enter this block of entries:
    toolkits=default
    default.path=C:/rsuite-root/integration/DITA-OTot_version
    default.version=ot_version
    where default.version=ot_version looks like default.version=1.8.5.
  3. Restart RSuite CMS.
  4. Verify that the server log contains a section like this:
    2016-07-21 14:42:59.493 rsuite-server INFO [localhost-startStop-1] <startup> 
    com.reallysi.RSuiteStartup - getOpenToolkitConfigFile(): Using configuration file "c:\dev\rsuite\rsuite5\rsuite\conf\dita-open-toolkits.properties"...
    2016-07-21 14:42:59.505 rsuite-server INFO [localhost-startStop-1] <startup> com.reallysi.rsuite.system.xml.DitaOpenToolkitManagerImpl - loadConfiguration(): 
    Loading Open Toolkit named "default", version=1.8.5, path 
    "C:/dev/rsuite/rsuite5/rsuite/integration/DITA-OT1.8.5"
    2016-07-21 14:42:59.505 rsuite-server INFO [localhost-startStop-1] <startup>
    com.reallysi.rsuite.system.xml.DitaOpenToolkitManagerImpl - loadConfiguration(): 
    Replacing default default Open Toolkit with loaded toolkit.
     

How RSuite maintains the OT folder 

When you deploy or redeploy an RSuite plug-in, RSuite reads the plug-in and deploys its DITA configurations to the OTs, integrates them, and loads or reloads them. Restarting RSuite in effect redeploys the plug-ins, so RSuite reprocesses plug-ins' DITA configurations when it restarts.

Upgrading RSuite overwrites the integration folder; the old information is discarded. However, when an RSuite plug-in is removed, its DITA configuration is not removed from the OT folder or from RSuite until RSuite is restarted.

Chapter 3. Use another Open Toolkit 

The previous chapter, Enable the default Open Toolkit, shows how to configure the DITA Open Toolkit properties file (rsuite-root/conf/dita-open-toolkits.properties) for the default OT:

toolkits=default
default.path=C:/rsuite-root/integration/DITA-OT1.8.5
default.version=1.8.5

It can be convenient to have more than one DITA OT at a time, e.g.:

  • to isolate content domains
  • to stage upgrading to a new version of the OT over time
  • for testing OT versions as customizations are ported to a new version
  • for testing customizations before they are put into production

This example shows changes you would use to reconfigure the DITA open toolkit properties file when you:

  • use more than one OT—the different OTs can be different versions
  • or change the name of an OT
  • or put the default or other OT in a different location
Perform these steps to configure the OT properties for an additional DITA OT installation named "ot_test":

  1. Create the new location—e.g., DITA-OT2.0—as C:/rsuite-root/test_integration/DITA-OT2.0.
    1. Put the new OT version there.
    2. If you plan to use "DITA-OT2.0" to produce output, add the appropriate transforms to C:/rsuite-root/test_integration/DITA-OT2.0.
      Transforms for RSuite content must be in the same OT as the doctypes for that content.
  2. In the open toolkit properties file, add the name of the additional OT to the toolkits property:
    toolkits=default,ot_test​
  3. Duplicate the path and version property statements for the default OT.
    1. In the copied path and version property statements, change "default" to the name of the new OT, "ot_test".
    2. Update the values of ot_test.path and ot_test.version .
    The OT properties file should look like this:
    toolkits=default,ot_test
    default.path=C:/rsuite-root/integration/DITA-OT1.8.5
    default.version=1.8.5           
    ot_test.path=C:/rsuite-root/test_integration/DITA-OT2.0
    ot_test.version=2.0​
  4. Restart RSuite.

Chapter 4. Configure the RSuite DITA Open Toolkit plug-in 

This chapter describes how to deploy DITA Open Toolkit (OT) doctypes and extensions that most RSuite installations use with DITA content, including:

  • Markup declarations for RSuite IDs inserted into XML documents by RSuite
  • A doctype for the DITA transformation configuration file used by RSuite (conversion_configuration)
  • A recently updated version of DITA for Publishers (D4P) doctypes and extensions, including the revised style-to-tag map format. See D4P documentation for more information; the DITA for Publishers User Guide is available on line.
These OT extension are delivered in the RSuite DITA Open Toolkit plug-in, rsuite-dita-ot-plugin.jar. It configures the OT extensions in the same way that you configure them, except in the jar's rsuite-plugin.xml file, the DITA Open Toolkit name is specified as “rsuite:all”, thus: <ditaOpenToolkit toolkitName="rsuite:all">, so RSuite deploys the plug-in extensions to all available OTs.
Note: The RSuite DITA Open Toolkit plug-in contains the latest DITA for Publishers plug-ins, which are not compatible with DITA Open Toolkit versions before 1.7.

There are other plug-ins that a DITA project can require:

  • rsuite-dita-support-plugin-v.r.jar—provides capabilities that RSuite DITA features and your custom features depend on, such as Java classes and scripts
  • rsuite-dita-support-actions-plugin-v.r.jar
  • rsuite-dita-support-workflows-plugin-v.r.jar
The current versions are listed below, at DITA plug-in versions.

  1. Decide how to deploy the doctypes and extensions from rsuite-dita-ot-plugin.jar.
    • Either copy the modifications you want from rsuite-dita-ot-plugin.jar into your customization plug-in and declare the copied OT extensions in the rsuite-plugin.xml file of your custom plug-in, as described in Declare DITA OT extensions in rsuite-plugin.xml.
    • Or deploy rsuite-dita-ot-plugin.jar to the plug-in folder and proceed with these steps:
    1. Put rsuite-dita-ot-plugin-v.r.jar in the list of dependencies for the Java project of your custom RSuite plug-in.
      This ensures that deployment scripts deploy the jar file to the plug-ins folder with your custom RSuite plug-in.
    2. Add a dependsOn attribute to the main rsuite-plugin element in your plug-in descriptor:
      <rsuite-plugin id="my-rsuite-plugin" dependsOn="rsuite-dita-ot-plugin"​> 
      … 
      </rsuite-plugin>
      This ensures that rsuite-dita-ot-plugin.jar is loaded before my-rsuite-plugin.jar is processed.
  2. Decide which of the DITA support plug-ins you want:
    • rsuite-dita-support-plugin-<i>v.r</i>.jar
    • rsuite-dita-support-actions-plugin-<i>v.r</i>.jar
    • rsuite-dita-support-workflows-plugin-<i>v.r</i>.jar
  3. For each of the DITA support plug-ins you are using:
    • Either copy the modifications you want into your customization plug-in
    • Or deploy the plug-in to the plug-in folder as described in steps 1a and 1b, above

DITA plug-in versions 

As of 27 July 2016, the current versions of the RSuite DITA plug-ins are:

DITA plug-in versions for RSuite 4.1

Plug-in

Versions for

RSuite 4.1.x

rsuite-dita-support-actions-plugin-1.x.jar 1.0-1.1
rsuite-dita-support-workflows-plugin-1.x.jar 1.0-1.2
rsuite-dita-support-plugin-1.4.jar 1.4
rsuite-dita-ot-plugin-1.4.jar 1.4

DITA plug-in versions for RSuite 5.x

Plug-in

Versions for

RSuite 5.x

rsuite-dita-support-actions-plugin-2.0.jar 2.0
rsuite-dita-support-workflows-plugin-2.0.jar 2.0
rsuite-dita-support-plugin-2.0.jar 2.0
rsuite-dita-ot-plugin-1.4.jar 1.4
Compatibility of rsuite-dita-ot-plugin.jar: The rsuite-dita-ot-plugin.jar contains the latest D4P plug-ins, which are not compatible with DITA Open Toolkit versions before 1.7.

Chapter 5. Declare DITA OT extensions in rsuite-plugin.xml 

RSuite CMS 4.1 added two instances of support for DITA Open Toolkit (OT):

  • RSuite CMS is delivered with a DITA Open Toolkit. We expect most customers to configure it as their "default".
  • A new way to configure custom OTs, which is described in this chapter.

You can now configure custom DITA doctypes in the rsuite-plugin.xml file, as well as with groovy scripts as in earlier versions: You package your OT extension in the RSuite plug-in—organizing your extensions, project source code, and jar however you like—and use rsuite-plugin.xml to tell RSuite the paths to the files in the plug-in jar, as well as paths to files inside ZIP files in the plug-in jar.

Groovy scripting and rsuite-plugin.xml should not be used to configure schemata in the same OT.

The declaration of an Open Toolkit in rsuite-plugin.xml has this form:

<extensionProvider>
    <ditaOpenToolkit  toolkitName="xxx">
        <toolkitPlugin>
            <zipfile>xx.zip</zipfile>
            <doctype>
                <file>path/xx.dtd</file>
                <previewXsl>path/xx.xsl</previewXsl>
                <managedObjectDefinitions>
                    <moDef/>
                    <moDef/>
                </managedObjectDefinitions>
            </doctype>
        </toolkitPlugin>
    </ditaOpenToolkit>
</extensionProvider>

Within an extensionProvider element, each OT is configured as <ditaOpenToolkit toolkitName="name">, where the value of the toolkitName attribute matches a toolkit specified in the dita-open-toolkits.properties file (rsuite-root/conf/dita-open-toolkits.properties).

Toolkit extensions are packaged in ZIP files that are called toolkit plug-ins and defined in toolkitPlugin elements, e.g., <toolkitPlugin toolkitPluginId="com.mycompany.book.doctypes">. The toolkitPluginId attribute can be any unique string, but by convention it is the path in the plug-in jar to the ZIP file. An OT can have more than one toolkit plug-in declared.

Besides zipfile elements, toolkitPlugin elements contains doctype elements if the extensions include doctypes.

There is a sample rsuite-plugin.xml, with explanatory comments, in Figure 3.

    Perform these steps to add custom extensions to a DITA OT, such as default.

  1. Create ZIP files of the DITA OT extensions. This is usually done by ANT scripts in packaging the RSuite plug-in jar.
  2. In rsuite-plugin.xml, find the <ditaOpenToolkit toolkitName="name"> block, where name is the name of the OT being modified, as specified in the toolkits property in dita-open-toolkits.properties.
  3. Within the ditaOpenToolkit element, create a toolkitPlugin element for each ZIP file of extensions, e.g.,
    <toolkitPlugin toolkitPluginId="com.reallysi.rsuite.doctypes">
    …
    </toolkitPlugin>
    or
    <toolkitPlugin toolkitPluginId="net.sourceforge.dita4publishers.doctypes">
    …
    </toolkitPlugin>
  4. Add a toolkitPluginId attribute to each <toolkitPlugin>.
    The value of a toolkitPlugId attribute becomes a folder name in the DITA-OT\plugins folder.
  5. Each toolkitPlugin element has a zipfile element. It must also have a doctype element for each DTD it contains.

  6. Within the toolkitPlugin element add a zipfile element declaring the name of the ZIP file containing the extensions, e.g.,
    <zipfile>mycompany-book-toolkit-plugins.zip</zipfile>
  7. Add a doctype element for each doctype defined in the toolkit plug-in.
    <doctype type="DTD" publicId="com.mycompany.book:doctypes:dita:topic">
      <file>path/xx.dtd</file>
      <previewXsl>path/xx.xsl</previewXsl>
      <managedObjectDefinitions>
        <moDef/>
      </managedObjectDefinitions>
    </doctype>
    Figure 1. Doctype element
    1. In each doctype element, add a type="DTD" attribute.
      At present, "DTD" is the only value available.
    2. Add a publicId attribute.
      The publicId attribute is the public identifier for a DTD. The convention is to use the folder path within the Open Toolkit, with colons as separators instead slashes.
      publilcId="com.mycompany.book:doctypes:dita:topic"
  8. Doctype elements contain file, previewXsl, and managedObjectDefinitions elements.

  9. Within the doctype element, use a file element to declare the path to the .dtd file within the ZIP file, e.g.,
    <file>doctypes/topic/dtd/topic.dtd</file>
  10. The preview XSL is the script that RSuite uses to display HTML previews of XML files.

  11. Use the previewXsl element to declare the path to the preview XSL file in the plug-in jar, e.g.,
    <previewXsl>WebContent/xslt/preview/book-preview.xsl</previewXsl>
  12. Managed object definitions determine how much detail RSuite displays about a document that uses a schema in the toolkit plug-in. Managed object definitions tell RSuite what sub-elements of a DTD to look for in a document and how to display them in a list, for instance, in the RSuite Content view, as shown in Figure 2. A document element that is not configured in a managed object definition is not displayed, but this does not affect how output is created.





    Figure 2. Effects of moDef declarations

  13. Select the elements in the DTD that you want RSuite to display.
  14. Within the doctype element, add a managedObjectDefinitions element.
  15. Within the managedObjectDefinitions element, add a moDef element for each sub-element in the DTD that you want RSuite to display.
  16. Make the value of the name attribute of each moDef element the name of one of the selected sub-elements.
    <doctype type="DTD" publicId="com.mycompany.book:doctypes:dita:topic">
    <file>doctypes/topic/dtd/topic.dtd</file>
    <managedObjectDefinitions>
      <moDef name="concept" displayNameXPath="title" />
      <moDef name="table" displayNameXPath="if (*[contains(@class, ' topic/title ')]) then *[contains(@class, ' topic/title ')] 
        else if (@title) then string(@title) else '{No title found}'" />
      <moDef name="section" displayNameXPath="title" 
    </managedObjectDefinitions>
  17. In each moDef element, add a displayNameXPath attribute, to show what element or attribute in the XML file has the name that RSuite should display for the sub-element.
<extensionProvider id="rsuite.ditaOpenToolkit">
<!-- A new extension type provider. -->
  <ditaOpenToolkit toolkitName="default">
<!-- Each OT you want to use is configured with its own ditaOpenToolkit, and its toolkitName attribute must 
match the toolkit name you use in the toolkit properties file. -->
    <toolkitPlugin toolkitPluginId="com.mycompany.book.doctypes">
<!-- Each OT may have one or more toolkitPlugin elements declared. The toolkitPlugin is a ZIP file of toolkit extensions. 
If you declare a ZIP this way, then RSuite will unpack the ZIP from the plug-in and will  
integrate the ZIP’s contents into the OT plugins.-->
      <zipfile>mycompany-book-toolkit-plugins.zip</zipfile>
      <doctype type="DTD" publicId="com.mycompany.book:doctypes:dita:map">
<!-- If the toolkit extensions include doctypes, then you must configure the managed objects for 
those doctypes using the doctype element. You also declare the preview script in doctype. 
The doctype/file is the path to the DTD file in the zip file. 
The doctype/previewXsl path is its location in the plug-in jar.-->
        <file>doctypes/map/dtd/map.dtd</file>
        <previewXsl>webcontent/xslt/preview/book-preview.xsl</previewXsl>
        <managedObjectDefinitions>
          <moDef name="map" displayNameXPath="title|pubtitle/mainpubtitle" />
        </managedObjectDefinitions>
     </doctype>
     <doctype type="DTD" publicId="com.mycompany.book:doctypes:dita:topic">
       <file>doctypes/topic/dtd/topic.dtd</file>
       <previewXsl>WebContent/xslt/preview/book-preview.xsl</previewXsl>
       <managedObjectDefinitions>
         <moDef name="map" displayNameXPath="title" />
         <moDef name="section" displayNameXPath="title" />
         <moDef name="table" displayNameXPath="title" />
       </managedObjectDefinitions>
     </doctype>
   </toolkitPlugin>
 </ditaOpenToolkit>
</extensionProvider>
Figure 3. Example of OT declarations in rsuite-plugin.xml

Chapter 6. Configure oXygen with a DITA Open Toolkit 

The oXygen desktop editor can use the extensions and DTDs in a DITA-OT folder to parse and validate DITA documents. Perform these steps to configure oXygen to use a DITA folder.
  1. Place the DITA-OT folder on your workstation or a server drive.
    The DITA-OT folder can go anywhere. This example puts it in the oXygen program folder.
  2. Open oXygen and select OptionsPreferences...
  3. In the navigation bar on the Preferences dialogue, select XMLXML Catalog.
  4. On the XML/XML Catalog view, under the Catalogs field, click on the Add button.
  5. On the Choose Catalog pop-up:




    Figure 4. Choose Catalog pop-up
    1. Click on the folder icon and make a selection from the drop-down list.
    2. In the the DITA-OT folder, select catalog-dita.xml.
    3. Click on OK.
      The file path is inserted into the Catalogs field.
  6. At the top of the XML/XML Catalog view, select these options:
    • Prefer: public
    • Verbosity: None
    • Resolve schema locations also through system mappings
    • Use default catalog
  7. At the bottom of the XML/XML Catalog view, select the Global Options radio button.
  8. Click on OK to close the Preferences dialogue.
    oXygen processes catalog-dita.xml and makes the DTDs available.

Chapter 7. Upgrade to RSuite 4.1 

Use this procedure to upgrade project source code from the 4.0-style to the 4.1-style DITA configuration. Afterwards, it is still possible to configure OTs in the 4.0-style, but the two methods should not be used on the same OT.

  1. Upgrade RSuite to 4.1. See the RSuite 4.1 Installation Guide (on the Resources tab—requires signing in).
  2. Remove the DITA OT project dependency.
  3. If you are using any toolkits besides the default or are using a different version as the default, edit the toolkit properties file (rsuite-root/conf/dita-open-toolkits.properties) to declare the toolkits, as described in Use another Open Toolkit
    Our experience is that you avoid unnecessary complication by using the default OT for the initial upgrade.
  4. Perform one of the next two steps to adjust the DITA for Publishers (D4P) and RSuite doctypes configuration.

  5. To upgrade to a more recent D4P, as delivered with RSuite:
    1. Add the new dependency (rsuite-dita-ot-plugin.jar) to your project.
    2. Remove your existing dependencies and configuration for D4P extensions.
    3. Remove doctype folders for RSuite metadata.
      This removes dependencies and configuration for RSuite metadata.
    4. Remove doctype folders for conversion_configuration.
      This remove dependencies and configuration for the RSuite transformation configuration doctype.
    5. To upgrade style-to-tag maps, run the D4P transformation.
  6. To continue using the current D4P and RSuite doctype configuration:
    1. Leave the dependencies and source code as they are.
    2. Adjust your build script to place zipped OT extensions in appropriate locations.
  7. Add declarations to rsuite-plugin.xml for your project-specific OT doctypes and transforms.
  8. Replace rsuite-dita-support-plugin.jar with the 4.1 version.
    The workflow and action plug-ins haven’t changed for 4.1.
  9. Adjust your build process to package your toolkit extensions into ZIP files in the correct location in your plug-in jar.
  10. After the RSuite upgrade, test any upgraded style-to-tag maps (see step 4e above).

Chapter 8. Upgrade to RSuite 5 

DITA and workflows in RSuite 4.1 and 5 

These differences between RSuite 4.1 and RSuite 5 require changes to RSuite's configuration and to your development process. Specifics are given below.
  • In RSuite 4.1, each menu action item calls a separate workflow to produce output. The workflows are customized for particular transformation types, i.e., to produce a certain kind of output. In RSuite 5, there is one workflow. The menu action item is customized to pass a transformation type and OT parameters to the workflow.
  • In RSuite 4.1, each workflow supports certain parameters. Customization modifies the workflow to default to a given value or changes the menu action item. In RSuite 5, any parameter can be passed from a menu action item.
  • In RSuite 4.1, the workflow project comprises samples. Selected customized output workflows are loaded from the Subversion project into RSuite with a Groovy script. In RSuite 5, there is only one output workflow, which doesn't need to be modified. It is loaded through rsuite-plugin.xml.
  • In RSuite 5, a menu action item can be configured either to call a Web service or, as in RSuite 4.1, to start a workflow to produce output. When you decide which menu action items to implement, consider:
    • Smaller documents are better produced by the Web service
    • If you need to save log information, you must use a workflow

Upgrade procedure 

Use this procedure to upgrade project source code from the 4.1-style DITA to the 5.0-style DITA configuration. DITA became available in RSuite Version 5 with the 5.0.3 release.

RSuite 5 uses a new workflow engine and updated workflows to produce DITA output. If you deploy the basic OT, the various workflows produce the basic outputs. However, if you have customized the RSuite 4.1 DITA installation, perform these steps to recreate the customizations.

  1. Upgrade RSuite to 5.0.3 See the RSuite 5.0 Installation Guide (requires signing in).
  2. If you are using any toolkits besides the default or are using a different version as the default, edit the toolkit properties file (rsuite-root/conf/dita-open-toolkits.properties) to declare the toolkits, as described in Use another Open Toolkit.
    For simplicity, use the default OT for the initial upgrade.
  3. Replace the DITA support plug-in jars with the 5.0 versions:
    • rsuite-dita-support-plugin-2.0.jar
    • rsuite-dita-support-actions-plugin-2.0.jar
    • rsuite-dita-support-workflows-plugin-2.0.jar
  4. Adjust your build process to package your toolkit extensions into ZIP files in the plug-in jar.
  5. After the RSuite upgrade, test any upgraded style-to-tag maps (see step 4e above).

Update definitions of menu action items

The <extensionProvider id="rsuite.ContextMenu"> elements in the rsuite-plugin.xml file of the DITA Support Actions plug-in must be updated to specify the workflow parameters for the different transforms and to take advantage of the ability to produce output with both workflows and Web services.

The example rsuite-plugin.xml files below show how version 5 differs from release 4.1.

The RSuite 5 workflow can be passed parameters for DITA Open Toolkit. These parameters are prefixed "ditaot.", like this: <property name="serviceparam.ditaot.debug" value="true">.

Release 4.1 rsuite-plugin.xml

<rsuite-plugin id="rsuite-dita-support-actions" version="^version^ Build ^buildnumber^ at ^timestamp^">
        
        <!-- NOTE: This plugin provides only context actions and workflows. All 
		the services are provided by the rsuite-dita-support-plugin. -->
        
        <extensionProvider id="rsuite.Forms">
          <formDefinition id="rsuite.form.updateToolkitPlugins"
            label="Select Toolkit Plugin Zip Files" description="Selects files to upload">
            <instructions>Select Zip files containing Open Toolkit plugins to deploy.</instructions>
            <paramList>
              <param>
                <name>CONTENT</name>
                <label>Plugins to load:</label>
                <formControlType>file</formControlType>
                <allowMultiple>true</allowMultiple>
              </param>
              <param>
                <col>controls</col>
                <name>submit</name>
                <formControlType>button</formControlType>
                <optionList>
                  <option value="submit" label="Deploy" />
                  <option value="cancel" label="Cancel" />
                </optionList>
              </param>
            </paramList>
          </formDefinition>
        </extensionProvider>
        
        <extensionProvider id="rsuite.ContextMenu">
          <contextMenuRuleSet name="rsuiteditasupport.contextmenuitem.docx2dita.transform">
            <menuItemList>
              <menuItem id="rsuite:wordToDita">
                <type>action</type>
                <actionName>rsuite:invokeWebservice</actionName>
                <label>Create XML from Word</label>
                <property name="remoteApiName" value="rsuiteDitaSupport.webservice.docxToXml" />
                <property name="showProgressMeter" value="true" />
                <property name="rsuite:group" value="dita" />
                <property name="rsuite:icon" value="generateXml" />
              </menuItem>
            </menuItemList>
            <ruleList>
              <rule>include nodeType ca,canode</rule>
              <rule>exclude role Contributor</rule>
            </ruleList>
          </contextMenuRuleSet>
          
          <contextMenuRuleSet name="rsuiteditasupport.contextmenuitem.edition.editoxygen">
            <menuItemList>
              <menuItem id="rsuite:editWithOxygen">
                <type>action</type>
                <actionName>oxygen:launch</actionName>
                <label>Edit with oXygen</label>
                <property name="rsuite:group" value="dita"/>
              </menuItem>
            </menuItemList>
            <ruleList>
              <rule>include nodeType mo</rule>
              <rule>exclude role Contributor</rule>
            </ruleList>
          </contextMenuRuleSet>
          
          <contextMenuRuleSet name="caNodeToMap">
            <menuItemList>
              <menuItem id="rsuite:createDitaMap">
                <type>action</type>
                <actionName>rsuite:startWorkflow</actionName>
                <label>Create DITA map from hierarchy</label>
                <property name="processDefinitionName" value="CA Node to Generic Map" />
                <property name="rsuite:group" value="dita" />
                <property name="rsuite:icon" value="generateMap" />
              </menuItem>
            </menuItemList>
            <ruleList>
              <rule>include nodeType ca,canode</rule>
              <rule>exclude role Contributor</rule>
            </ruleList>
          </contextMenuRuleSet>
          
          <contextMenuRuleSet name="ditaOutputActions">
            <menuItemList>
              <menuItem id="rsuite:ditaToEpub">
                <type>action</type>
                <actionName>rsuite:startWorkflow</actionName>
                <label>EPUB</label>
                <property name="processDefinitionName" value="Map to EPUB" />
                <property name="rsuite:path" value="Create output" />
                <property name="rsuite:group" value="dita" />
                <property name="rsuite:icon" value="generateEpub" />
              </menuItem>
              <menuItem id="rsuite:ditaToIndesign">
                <type>action</type>
                <actionName>rsuite:invokeWebservice</actionName>
                <label>InDesign</label>
                <property name="remoteApiName"
                  value="rsuiteDitaSupport.webservice.InDesignGenerationWebService" />
                <property name="showProgressMeter" value="true" />
                <property name="timeout" value="0" /><!-- Notification is via 
                        a notification response -->
                <property name="rsuite:path" value="Create output" />
                <property name="rsuite:group" value="dita" />
                <property name="rsuite:icon" value="generateIncopy" />
              </menuItem>
              <menuItem id="rsuite:ditaToPdf">
                <type>action</type>
                <actionName>rsuite:startWorkflow</actionName>
                <label>PDF</label>
                <property name="processDefinitionName" value="Open Toolkit DITA to PDF" />
                <property name="rsuite:path" value="Create output" />
                <property name="rsuite:group" value="dita" />
                <property name="rsuite:icon" value="generatePdf" />
              </menuItem>
              <menuItem id="rsuite:ditaToXhtml">
                <type>action</type>
                <actionName>rsuite:startWorkflow</actionName>
                <label>XHTML</label>
                <property name="processDefinitionName" value="Map to XHTML" />
                <property name="rsuite:path" value="Create output" />
                <property name="rsuite:group" value="dita" />
                <property name="rsuite:icon" value="generateHtml" />
              </menuItem>
              <!--<menuItem>
                    <type>action</type>
                    <actionName>rsuite:startWorkflow</actionName>
                    <label>Export DITA map to server</label>
                    <property name="processDefinitionName" value="Export DITA Map" />
                    <property name="serviceParams.outputPath" value="/Users/ekimber/temp/exportedmaps" />
                    <property name="rsuite:path" value="Create output" />
                    <property name="rsuite:group" value="dita" />
                    <property name="rsuite:icon" value="ditaMapExport" />
                </menuItem>-->
            </menuItemList>
            <ruleList>
              <rule>include nodeType ca,canode,mo</rule>
              <rule>exclude role Contributor</rule>
            </ruleList>
          </contextMenuRuleSet>
        </extensionProvider>
        
      </rsuite-plugin>
      

Release 5 rsuite-plugin.xml

<rsuite-plugin id="rsuite-dita-support-actions" version="^version^ Build ^buildnumber^ at ^timestamp^" description="Standard DITA actions to use as-is or as an example">
        
        <!-- NOTE: This plugin provides only context actions and workflows. All 
		the services are provided by the rsuite-dita-support-plugin. -->
        
        <extensionProvider id="rsuite.ContextMenu">
          <contextMenuRuleSet name="rsuiteditasupport.contextmenuitem.docx2dita.transform">
            <menuItemList>
              <menuItem id="rsuite:wordToDita">
                <actionName>rsuite:invokeWebservice</actionName>
                <label>Create XML from Word</label>
                <property name="remoteApiName" value="rsuiteDitaSupport.webservice.docxToXml"/>
                <property name="showProgressMeter" value="true"/>
                <property name="rsuite:group" value="dita"/>
                <property name="rsuite:icon" value="generateXml"/>
              </menuItem>
            </menuItemList>
            <ruleList>
              <rule>include nodeType ca,canode</rule>
              <rule>exclude role Contributor</rule>
            </ruleList>
          </contextMenuRuleSet>
          
          <!-- Do we want this anymore? -->
          <!--<contextMenuRuleSet name="caNodeToMap">
            <menuItemList>
                <menuItem id="rsuite:createDitaMap">
                    <actionName>rsuite:startWorkflow</actionName>
                    <label>Create DITA map from hierarchy</label>
                    <property name="processDefinitionName" value="CA Node to Generic Map" />
                    <property name="rsuite:group" value="dita" />
                    <property name="rsuite:icon" value="generateMap" />
                </menuItem>
            </menuItemList>
            <ruleList>
                <rule>include nodeType ca,canode</rule>
                <rule>exclude role Contributor</rule>
            </ruleList>
        </contextMenuRuleSet>-->
          
          
          <!-- Other available properties for OT outputs include : 
	       <property name="serviceParams.outputPath" value="C:/temp/ditaout/pdfwf" />
	       <property name="serviceParams.zipOutput" value="true" />
	       <property name="serviceParams.dita.clean-temp" value="true" />
	       <property name="serviceParams.openToolkitName" value="altToolkit" />
	       <property name="serviceParams.xsltUri" value="rsuite:/res/plugin/my-plugin/canode2map/canode2map_shell.xsl" />
	       <property name="serviceParams.forceNewMap" value="true" />
	    -->
          
          <contextMenuRuleSet name="ditaOutputActionsEpub">
            <menuItemList>
              <menuItem id="rsuite.ditaToEpubService">
                <actionName>rsuite:invokeWebservice</actionName>
                <property name="rsuite:icon" value="epub"/>
                <label>EPUB</label>
                <property name="remoteApiName" value="rsuiteDitaSupport.webservice.RunDitaOTWebService"/>
                <property name="serviceParams.transtype" value="epub"/>
                <property name="showProgressMeter" value="true"/>
                <property name="timeout" value="0"/>
                <property name="rsuite:path" value="Create output"/>
                <property name="rsuite:group" value="dita"/>
              </menuItem>
              <menuItem id="rsuite:ditaToEpub">
                <actionName>rsuite:startWorkflow</actionName>
                <property name="rsuite:icon" value="epub"/>
                <label>EPUB (in background)</label>
                <property name="processDefinitionName" value="RunDITAOTAndLoad"/>
                <property name="serviceParams.transtype" value="epub"/>
                <property name="showProgressMeter" value="true"/>
                <property name="timeout" value="0"/>
                <property name="rsuite:path" value="Create output"/>
                <property name="rsuite:group" value="dita"/>
              </menuItem>
            </menuItemList>
            <ruleList>
              <!-- Appears the epub output won't work for topics -->
              <rule>include elementType rs_ca,rs_canode,map,bookmap,pubmap</rule>
              <rule>exclude role Contributor</rule>
            </ruleList>
          </contextMenuRuleSet>
          <contextMenuRuleSet name="ditaOutputActionsID">
            <menuItemList>
              <menuItem id="rsuite:ditaToIndesign">
                <actionName>rsuite:invokeWebservice</actionName>
                <property name="rsuite:icon" value="adobeIncopy"/>
                <label>InDesign (InCopy)</label>
                <property name="remoteApiName" value="rsuiteDitaSupport.webservice.InDesignGenerationWebService"/>
                <property name="showProgressMeter" value="true"/>
                <property name="timeout" value="0"/>
                <property name="rsuite:path" value="Create output"/>
                <property name="rsuite:group" value="dita"/>
              </menuItem>
            </menuItemList>
            <ruleList>
              <!-- This needs review - what nodetypes will work for ID output? -->
              <rule>include nodeType ca,canode,mo</rule>
              <rule>exclude role Contributor</rule>
            </ruleList>
          </contextMenuRuleSet>
          <contextMenuRuleSet name="ditaOutputActions">
            <menuItemList>
              <menuItem id="rsuite.ditaToPdfService">
                <actionName>rsuite:invokeWebservice</actionName>
                <label>PDF</label>
                <property name="rsuite:icon" value="pdf"/>
                <property name="remoteApiName" value="rsuiteDitaSupport.webservice.RunDitaOTWebService"/>
                <property name="serviceParams.transtype" value="pdf2"/>
                <property name="showProgressMeter" value="true"/>
                <property name="timeout" value="0"/>
                <property name="rsuite:path" value="Create output"/>
                <property name="rsuite:group" value="dita"/>
              </menuItem>
              <menuItem id="rsuite:ditaToPdf">
                <actionName>rsuite:startWorkflow</actionName>
                <label>PDF (in background)</label>
                <property name="rsuite:icon" value="pdf"/>
                <property name="processDefinitionName" value="RunDITAOTAndLoad"/>
                <property name="serviceParams.transtype" value="pdf2"/>
                <property name="showProgressMeter" value="true"/>
                <property name="timeout" value="0"/>
                <property name="rsuite:path" value="Create output"/>
                <property name="rsuite:group" value="dita"/>
              </menuItem>
              <menuItem id="rsuite.ditaToXhtmlService">
                <actionName>rsuite:invokeWebservice</actionName>
                <property name="rsuite:icon" value="html"/>
                <label>XHTML</label>
                <property name="remoteApiName" value="rsuiteDitaSupport.webservice.RunDitaOTWebService"/>
                <property name="serviceParams.transtype" value="xhtml"/>
                <property name="serviceParams.zipOutput" value="true"/>
                <property name="showProgressMeter" value="true"/>
                <property name="timeout" value="0"/>
                <property name="rsuite:path" value="Create output"/>
                <property name="rsuite:group" value="dita"/>
              </menuItem>
              <menuItem id="rsuite:ditaToXhtml">
                <actionName>rsuite:startWorkflow</actionName>
                <property name="rsuite:icon" value="html"/>
                <label>XHTML (in background)</label>
                <property name="processDefinitionName" value="RunDITAOTAndLoad"/>
                <property name="serviceParams.transtype" value="xhtml"/>
                <property name="serviceParams.zipOutput" value="true"/>
                <property name="showProgressMeter" value="true"/>
                <property name="timeout" value="0"/>
                <property name="rsuite:path" value="Create output"/>
                <property name="rsuite:group" value="dita"/>
              </menuItem>
            </menuItemList>
            <ruleList>
              <rule>include nodeType ca,canode,mo</rule>
              <rule>exclude role Contributor</rule>
            </ruleList>
          </contextMenuRuleSet>
        </extensionProvider>
        
      </rsuite-plugin>