Customer Engagement

EngageOne® Compose EngageOne® Server

Programmer's Reference Guide Version 4.4 Service Pack 9 Table of Contents

Feature support for System Data Integration 69 Integration option 1 – XML data source 71 1 - Overview Integration option 2 – callback interface 75

Overview 5 Template designer 5 5 - Additional features in SOAP EngageOne Server components 10 EngageOne administration 13 Trusted Connection 87 EngageOne Interactive 14 Template search 87 Interactive document process flow 14 Write delivery information 96 Managing the work queue 99 Updating work items 102 2 - Integrating with EngageOne Reassigning a work item 106 SOAP Deleting a work item 108

OnDemand 18 6 - EngageOne notifications Interactive 18 Data push processing in EngageOne Overview 110 Interactive 18 Notification components diagram 111 Interactive Document Delivery 32 Topics and queues 113 Sample application 33 Configuration settings 114 OnDemand Document Delivery 36 Messages 118 Communication messages 119 3 - XForms Batch messages 121 Workflow messages 122 Consuming notification messages 123 About XForms 39 Using other JMS implementations 126 XForms processors 41 Sample message consumers 128 XForm/SDI Flow 42 XForms standard files 43 Data definition type and attributes 62 7 - The comparison adapter plug-in 4 - System Data Integration The custom plug-in implementation 130 SDI General Configuration 66 Example implementations 131 Using an XML file as a data source 67 Plug-in Installation and configuration 135 Using the Java callback interface 68 8 - Appendix A - Editor methods

LoadContents 137 SaveContents 137 SpellCheck 138 IsComplete 138 IsModified 139 GetVersion 139

9 - Appendix B - SOAP API

Identifiers 141 Search filter 142 Promotion service 143 Folder service 164 Data push service 168 Delivery management service 170 Dictionary service 178 Domain service 180 Editor service 182 Keymap service 185 Metadata service 193 Request status update service 196 Security service 198 Template service 204 Workitem service 227 Attachment service 256 Workflow service 268 Delivery service 280

10 - Upgrading 3.X to 4.X SOAP services

Licensing changes 301 Security changes 302 WorkItem approval process not supported 304 DataPushService.mapData not supported 304

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 3 1 - Overview

EngageOne is an interactive document production system, enabling the creation and delivery of high volume, on demand and interactive customer correspondence.

In this section

Overview 5 Template designer 5 EngageOne Server components 10 EngageOne administration 13 EngageOne Interactive 14 Interactive document process flow 14 Overview

Overview

Document templates and optional content objects are defined by the template designer in a core application called Designer, and managed in the content repository. These programs are made available to front-office users through a Web-based interface. This interface allows users to create and modify a document in a controlled manner, and distribute documents through various delivery channels as required. The EngageOne Interactive Web application uses the services provided by the EngageOne Web services interface to access the server functions of EngageOne.

Template designer

Document templates are created by a template designer, a user who defines the document and its interactions in Designer. A template consists of a traditional publication design, along with interactive data definitions which describe the front office user interactions required to complete a document from that template. This involves designing the overall template and defining: • The data prompts included in the document using the Interactive Editor • Paragraph and content selection, using optional content selections (Active Content) • Free-form text to override content protection using editable paragraphs For more information about these functions, see the Designer User’s Guide. The template designer allows the user to edit or enter free text as required in an EngageOne document design, by selecting a section of text in a paragraph object and defining the text as editable. Any text marked as editable can be changed by the user. Text that is not marked as editable will be protected. In addition to the basic template, the template designer can create optional content. Property values are defined, enabling them to be conditionally placed in an Active Content Group. When Active Content is marked as interactive, the user is dynamically presented with content choices to help them complete their document. Once the EngageOne template has been designed and data fields defined, the template is named and published for EngageOne. The XForm files that define the document's data model are included in the template’s Zip file. The process of importing these files into the EngageOne content repository using the EngageOne Administration client, is called Template deployment.

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 5 Overview

The interactive data model is defined and exposed using the W3C XForm standard. The XForm can be used by the system integrator to push system data into the interactive document. Content repository The content repository provides file storage and version control for EngageOne. It houses the templates used to create documents, supporting files needed for document composition, and the document instances waiting for delivery.

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 6 Overview

About the template

The template manifest (template_master.) describes template attributes and contents. The template manifest is made up of the following: Subfiles The Subfiles section contains a list of files in the template Zip file, and specifies each file type:

Template composition

HIP HIP files contain design, layout, logic and other resources required for generating publications. These files are used by Generate. There are two types of HIP file: publications, and independently publishable active content.

PUB Publication files contain design, layout and logic. These files are used by the Interactive Editor. There are two types of PUB file: template publications, and independently publishable active content.

XFRM XForms define electronic forms for collecting general purpose information.

INST Instance data file. Initially this file contains default field values. All values entered by the user will be saved in this file. Free form text is stored in the HIP and PUB files, not the instance file.

SCHEMA The instance file schema contains standard schema nodes and attributes. The schema ensures data returned in the instance file is well-formed, the right type, and meets defined field criteria.

IMG Image file required by the editor for display in the template.

DATAMODEL XML representation of the Designer Publication “Sample Data”, whether the original data is keyed data (for example, single value decomposition), delimited (for example, comma separated values), or on-demand XML. The DATAMODEL file type appears only for non-interactive templates.

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 7 Overview

Template composition

PREVIEW PDF file appears for both interactive and non-interactive templates, where Designer Publish for EngageOne has successfully generated a PDF “preview” example of the Designer Publication. The PREVIEW file is generated using “emergency replacement” data, where the Designer Publication data is incomplete, and may not reflect the completed document. PREVIEW file is available for the Interactive user to view a “Preview” of the Template Document at the start of the “Edit Communication” process.

PROMPTLOGIC Files containing information used to prompt for, and validate, interactive template data when the ActiveX editor is not used.

THUMBNAIL "Scaled" image representation of the first document. Intended as a rough guide to the layout and content of the first document.

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 8 Overview

Resources The Resources section lists the dependencies of the template. These can be of the following types:

ACTCONT Active content

IMAGE Image used in the template

FONT Font used in the template

The following fragment demonstrates the structure of the template manifest:

template.hip template.pubx d79f96b60b2a48ee9f59c8bed5655f86.xform d79f96b60b2a48ee9f59c8bed5655f86.xml d79f96b60b2a48ee9f59c8bed5655f86.xsd c52767b2d1824366b522589d550cb297.png

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 9 Overview

EngageOne Server components

The Web services layer: • Exposes EngageOne communication services to a custom built front office Web application, or to the EngageOne Web application. The Business layer: • Document management - template storage and retrieval (including version control), and work queues (document instance storage and retrieval). • Security management - supports direct integration with LDAP and Active Directory for user and group lists. • Delivery Services - defines delivery channels, and provides services to generate draft and final copy output. • Monitor - monitors system health, and tracks system activities. Tracking information can be used for reporting. For example, a report can specify how many times a template is used, or how quickly a template is processed. • Delivery channels - EngageOne delivery channels include print, fax, email, SMS and archive. Document instances can be submitted for real-time delivery to a local printer. Output can be queued for EngageOne batch processing.

About Web services

The EngageOne server exposes most of its API via Web services. EngageOne Web services enable custom application integration with EngageOne server on any development platform supporting Web services.

Components Requirements

SOAP and Web services Support for various bindings (SOAP 1.1)

Java clients Axis 2 or JAX-WS (recommended) At least custom XML

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 10 Overview

Components Requirements

.NET clients Microsoft Windows Communication Foundation Framework

Note: Not all EngageOne Server Web services are WS-I compliant. • There is an issue with MTOM attachments support using Axis2 as a client. In order to work around this issue, updated client stubs are provided on the installation media under the samples folder. These client stubs accommodate and correctly parse MTOM attachments. If you use Axis2 and wish to use MTOM attachments, you may opt to use these stubs. • The services will continue to work without MTOM attachments. The advantage to MTOM attachments is they can work with larger file sizes.

Web services are backward compatible and client code should not need to be changed. Any auto-generated client stub code based on a previous Web service release should be regenerated against the new Web services definitions (WSDLs). Services are provided that allow a third part application to complete document flow starting from creation up to delivery. The diagram below shows the server components exposed as a Web service via an adapter. The diagram details the exposed Web services a custom application could use to integrate with EngageOne.

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 11 Overview

Web service descriptions

The following details EngageOne Web services. Delivery Management Service - search delivery channels and devices. Delivery service - work item preview and work item distribution. Dictionary service - search speller XML file. Domain service - search domain information. Editor service - transfer files from the content repository server, by resource file ID. Keymap service - import keymaps. Metadata service - manage and retrieve document classes or metadata, and configure metadata definitions. Security service - search user roles. Template service - template creation, retrieval and search support.

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 12 Overview

WorkItem service - work queue related functions. For example, retrieve work items, work item creation, work item assignment, approval and rejection functional support. In the EngageOne Web service runtime environment, EngageOne Web services work with EngageOne applications using Simple Object Access Protocols (SOAP). In the application server environment, a SOAP servlet is deployed as the request/response gateway. All EngageOne Web services are published in Web service Description Language (WSDL) format, and are described by the following namespaces: Note: Namespaces are used to avoid naming conflicts in XML tags, ensuring uniqueness.

• http://pb.com/EngageOne/ws/common • http://pb.com/EngageOne/ws/model • http://pb.com/EngageOne/ws/deliveryManagement • http://pb.com/EngageOne/ws/delivery • http://pb.com/EngageOne/ws/dictionary • http://pb.com/EngageOne/ws/domain • http://pb.com/EngageOne/ws/editor • http://pb.com/EngageOne/ws/keymap • http://pb.com/EngageOne/ws/metadata • http://pb.com/EngageOne/ws/security • http://pb.com/EngageOne/ws/template • http://pb.com/EngageOne/ws/workItem EngageOne WSDL files are generated from the EngageOne Web service Java Interface. WSDL example files are included in the distribution media: \samples\\wsdl

EngageOne administration

The EngageOne administrator uses a Web application to set up and configure the EngageOne environment. The Web application is delivered as part of the standard EngageOne server install. The EngageOne Administration Web interface supports managing folders, templates, and delivery channels. For security purposes, role-based access and user roles are defined in EngageOne Administration. Roles can be assigned to individual or a group of LDAP users.

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 13 Overview

The EngageOne administer handles domain management, license management and system diagnostics. For more details see the EngageOne Administration Guide.

EngageOne Interactive

EngageOne Interactive is delivered with the EngageOne Server. It provides a browser based interface for front-office workers to create customized documents. EngageOne Interactive supports a widely distributed user base, including remote users. For more information about working with EngageOne documents, see the EngageOne Interactive User’s Guide. In many cases, a custom designed application might be more appropriate for addressing your business needs. If preferable to a fully featured implementation, the Web services interface allows integration between EngageOne and your existing business systems. For more information about building your own interactive application, see Integrating with EngageOne SOAP.

Interactive document process flow

Note: integration is not supported in this version of EngageOne Server workflow.

The process flow starts with EngageOne fulfilling a request for a document in real time, requiring user interaction to complete the request. Data definitions are embedded in a template and create an underlying XForm. The XForm is used to drive the prompts, which gather data required to complete the document. Business driven data is retrieved or provided by your system integration program from the appropriate source. For more information, see Integrating with EngageOne SOAP, and System Data Integration. The following diagram illustrates the process flow.

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 14 Overview

Selecting a template

A custom application would use the TemplateService Web service. The template service collects a list of templates from the content repository, and presents the templates to the user. All templates have a template ID, which is used by all other calls. Templates can be identified by name. Keep in mind that the template name is not unique, and a search by name could return multiple templates. • A document instance is created from a template by the editor. The XForm is pushed to the custom system integration program, which parses system attributes and populates system fields. For example, the system may have executed an address lookup and populated form information. The XForm is returned to the calling application for user interaction. Note: a custom built Web application must adhere to the specification for interactive data prompt display. Front end users can manually enter data for document completion.

Editing is handled through: • Form fields (generated from XForms, or by the system integrator) • The Interactive Editor component (supplied with EngageOne server). Edits are stored in the answer file, where they can be accessed by Generate when composing the final output documents. Edits can be sent to the delivery process automatically without being saved. For more information, see Integrating with EngageOne SOAP.

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 15 Overview

Save and submit

When a document instance is saved, the system data, interactive input, delivery channel selections and any other relevant information is saved in an answer file. The answer file is passed back to the EngageOne repository by the WorkItemService, and saved as a new revision of a permanent document instance. The completed document is submitted. The reference to the permanent document instance and version is sent to the Document Server for final delivery. The document revision and template revision are referenced by the Document Server, and any change will not affect what is delivered to the user. The user may choose from the template's delivery options.

Delivering a document

The Document Server receives delivery requests. The requests are queued, and a job number is returned to the calling application. The job number can be used for future requests about job status, error tracking and audit information. The system queries the EngageOne server for available delivery channels. Available delivery channels are returned by the DeliveryManagementService Web service call. Returned data is filtered by available channels set up in the template configuration, and by EngageOne Document server permissions.

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 16 2 - Integrating with EngageOne SOAP

This section provides an overview of using EngageOne Server Web services to integrate with other business systems.

In this section

OnDemand 18 Interactive 18 Data push processing in EngageOne Interactive 18 Interactive Document Delivery 32 Sample application 33 OnDemand Document Delivery 36 Integrating with EngageOne SOAP

OnDemand

Isolated services called by customer systems, without an end user.

Interactive

Graphical interfaces supporting stage by stage integration of EngageOne Server into existing tools and workflows.

Data push processing in EngageOne Interactive

EngageOne Server includes an optional data push method. This method can provide customer data that can be used to generate interactive documents. Data push works by pushing an XML data structure from your business systems to the EngageOne Server, where it is ready for document instance creation. The XML data structure is pushed to EngageOne Interactive using a Web service request. Data push can be used in conjunction with system data integration, or in its place if the following requirements are met: • You have no data to populate for drop-down lists, free form text fields, and any associated fields specified as key fields or visible on the XForm in your template • The data you push is complete • Mapping is complete To accomplish this, create map files in an XML editor, then import to EngageOne Server. Data push passes the data in any defined format, then maps with one of the following options:

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 18 Integrating with EngageOne SOAP

Mapping options

With a Template Without a Template

With a Push User • Task set to ACTIVE_NEW • Task set to NEW status. status. • User is automatically assigned. • User is automatically • Pushed data is encapsulated into a new document assigned. instance, when Create Document is clicked and • Work item is automatically a template is selected. created.

Without a Push User • Task set to ACTIVE_NEW • Task set to NEW status. status. • Interactive prompts for user assignment. • Interactive prompts for user • Pushed data is encapsulated into a new document assignment. instance, when Create Document is clicked and • Work item is automatically a template is selected. created.

Data push parameters

The parameters are: • userId - user name • password - userId password • pushUserId - ID used to assign the task (optional) • domainName - EngageOne domain name • pushDataXML - source XML pushed data pushed • mapId - data map identifier • Template identifier - EngageOne Interactive template identifier (optional) You can also pass authentication data for a user ID to push data on behalf of another user. In this case, the pushed data is associated with a Work Item.

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 19 Integrating with EngageOne SOAP

Accessing services

To create an instance of the stub, you will need to know the Web service endpoint. Typically, an EngageOne Web service endpoint is in the following format:

http://:/EngageOneWS/

Where: • the host name where EngageOne server is deployed • the port where the EngageOne Server Web services are accessible • the EngageOne Web service to invoke

How mapping works

The data map XML schema depends on your business data structure. Data maps are based on XML files that are loaded in EngageOne Server. These data maps describe the data element associations in business data during a data push event to the corresponding answer file entries. The data mapper uses data maps to map element names from a single data map for multiple EngageOne data formats. However, a single element name can only be mapped in one way. There are three methods for mapping data: element mapping, list mapping, and repeat mapping. Important information about data maps: • Map names are independent of the XML file used to import the XML structure. • Map files can be stored anywhere on your network and imported using the Data Map tab. • Data map names are unique due to the way map IDs are formed, and must be unique within a domain. The diagram below shows how the data mapper works with data maps and answer files.

EngageOne® Compose EngageOne® Server Programmer's Reference Guide 20 Integrating with EngageOne SOAP

< lrs ~am > <·r1 Lle>

Data Pust, XML Mapper

le

bar bar Map File duh <~astNarn >duh (xyu:ml) </Ti l > </ddtd> </Publication> </p><p><JaLaP sh 1 p ma p 'd=~xyz•> <L' slMap . am = " /daLa/daL " xpaLh="<! nan " /> </p><p><E. menu-i ap srcxraL = " var:- '.@r1am = ' roo ' : " La~~ LXPaL = " F 'rsLNam " /> <F.. m nLMap srcXPaL = " va-'.@ am= ' lc1h ' : " larg t.XPaL = " L,clSL Nam " /> <E:emencMap srcXPa h " var '.@~amec ' h ·h ' : '' arge xea h '"l'~ _e " /> </'::la a!? st,.Map> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 21 Integrating with EngageOne SOAP </p><p>Data map XML schema and examples </p><p>A good understanding of the data map XML schema is key to integrating data push methods between your business systems, custom applications, EngageOne Interactive and EngageOne Server. The data map XML schema uses XPath annotation for determining source and target elements in pushed XML data. The data map XML schema is located in: <release-distribution>\samples\data-map-schema </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 22 Integrating with EngageOne SOAP </p><p>XPath XPath is a language designed for finding information in an XML document. There are three ways to use XPath to determine the source and target elements for data mapping. The source element comes from the pushed XML data specified to the Web service or the EngageOne Interactive URL. The target element is the template answer XML file. The three types of mapping in the XML schema are: ElementMap, ListMap, and RepeatMap. • ElementMap maps a single data element from pushed XML data to a single element in an answer XML file. • ListMap maps multiple data elements from pushed XML data to multiple elements in an answer XML file. • RepeatMap maps repeating data elements from pushed XML data to repeating elements in an answer XML file. A single map XML file can have zero or more element maps, zero or more list maps, and zero or more repeat maps. Nest ElementMap, ListMap, and RepeatMap elements to define the source and targe file hierarchy. Using XPath annotation, you can write expressions for the source element in the pushed XML data, and the target element in the answer XML file. Note: If you use namespaces in your pushed XML data, you must declare standard XML namespaces in your data map. </p><p>ElementMap example </p><p><p:ElementMap srcXPath="/data/datum[@name='String 1']" targetXPath="/InteractiveDataModel/Publication/String2"/> </p><p>The srcXPath attribute contains the XPath expression that identifies the source element in the pushed XML data. The targetXPath attribute contains the XPath expression that identifies the destination element in the answer XML file. In this example, the source element is identified as the <datum> tag, where the name attribute has the value ‘String1’. The target element is identified as the <String2> element under the <Publication> section of the answer XML file. </p><p>ListMap example ListMap is more complex. For example: </p><p><p:ListMap name="/data/datum" xpath="@name" /> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 23 Integrating with EngageOne SOAP </p><p>In this example, the XPath expression “/data/datum” identifies multiple elements in the pushed XML data. For each of these elements, the name attribute identifies the target element name in the answer XML file. For example, if the pushed XML data had the following: </p><p><data> <datum name=”String1”>Fred</datum> <datum name=”String2”>Jones</datum> </data> </p><p>The above example would identify both <datum> elements from the pushed XML data. It would copy “Fred” into the <String1> element of the <InteractiveDataModel> of the answer XML file, and copy “Jones” into the <String2> element of the <InteractiveDataModel>. Using a single ListMap you can copy over multiple pieces of data. </p><p>RepeatMap example The third approach is to use RepeatMap. The RepeatMap element allows you to define a set of repeating elements from the source XML file, and copy them to repeating elements in the target XML file. For example: </p><p><RepeatMap srcXPath="/mydata/data1" targetXPath="/InteractiveDataModel/Publication/NestedRepeatingGroupParent"> </p><p><ElementMap srcXPath="name" targetXPath="Name"/> <RepeatMap srcXPath="data2" targetXPath="NestedRepeatingGroupChild"> <ElementMap srcXPath="time" targetXPath="Time"/> <ElementMap srcXPath="num" targetXPath="Number"/> </RepeatMap> </RepeatMap> </p><p>The srcXPath attribute contains the XPath expression that identifies the source repeating elements in the pushed XML data. The targetXPath attribute contains the XPath expression that identifies the destination repeating elements in the answer XML file. Inside RepeatMap, nested ElementMap and ListMap are used to map data elements. RepeatMap can be nested as well. Typically, the XPath expressions used by a nested map are relative. In this example, in the srcXPath of the first ElementMap, "name" is relative to the srcXPath of its parent RepeatMap, "/mydata/data1". </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 24 Integrating with EngageOne SOAP </p><p>EngageOne domains </p><p>Note: as of the 4.X version of the software, domains are known as communities. </p><p>EngageOne separates data into domains. A domain represents a line of business, department, or section in a business environment. Domains are configured by a system administrator at installation time. Once installed, they can be managed and adjusted. System users will be assigned various roles on a per-domain basis. When integrating with SOAP services, the domain, the username and password must be included in the request. </p><p>User authentication EngageOne Server supports two authentication mechanisms: • WS-Security - industry and SOAP standard The recommended authentication method. • AuthContext - custom element in the SOAP request. This authentication method has been deprecated. It is used for backwards compatibility with previous versions of the software. </p><p>WS-Security WS-Security (Web Services Security) is an industry standard that addresses security when data is exchanged as part of a Web service. This authentication is implemented on all EngageOne Server SOAP services at the userid and password level. Legacy applications may choose not to use this type of authentication, authenticating instead through the backwards-compatible AuthContext mechanism described below. New applications should leverage this authentication and disable the AuthContext mechanism. With WS-Security, use the <com:community></com:community> element for the domain request. </p><p>Legacy AuthContext Every operation will include the AuthContext element. AuthContext needs to contain UsernameToken or SessionToken elements. UsernameToken and SessionToken are mutually exclusive. If the request contains SessionToken, UserNameToken cannot be specified. Note: When a request does not include the SessionToken element, the server will expect the UsernameToken element to check authentication. If the UsernameToken is valid, the </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 25 Integrating with EngageOne SOAP </p><p> server will generate a new SessionToken that will be passed back to the client. Subsequent requests can use the returned SessionToken, instead of the UsernameToken. </p><p>By default, the SessionToken will expire after 30 minutes. The timeout length can be configured via the session_timeout tag of the <installation_root>\core\conf\config-settings.xml file, after EngageOne has been installed. If the SessionToken has expired, a SOAP fault will occur with error code "-6". Repeating the call that failed with a valid UsernameToken will allow the call to succeed and generate a new SessionToken. The new SessionToken will be valid for an additional 30 minutes. Code example </p><p><com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:id>CC62248A-820F-42E7-8F8D-B6CD51DF4B74</com:id> </com:ident> </com:domain> <com:userId>eosuper</com:userId> <com:password>Password1</com:password> <com:transientSession>false</com:transientSession> {optional} <com:ondemand>false</com:ondemand> {optional} </com:UsernameToken> </com:authContext> </p><p>Obsolete flags onDemand The onDemand element was used to control licensing options in previous versions of the software. We recommend non-legacy customers treat this element as optional and avoid using it. transientSession The transientSession element was used to indicate the current call should not create a persistent session. We recommend non-legacy customers treat this element as optional and avoid using it. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 26 Integrating with EngageOne SOAP </p><p>Data Push error handling </p><p>Error messages are contained in the SOAP Web service detail response. Error messages are localized based on the server locale. To support localized error messages, the SOAP details contains an errorCode element the client application can use to translate the error message. This is based on the error code returned. Following is an example of a SOAP response from the server containing an error. </p><p><?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Header /> <env:Body> <env:Fault> <faultcode>env:Server</faultcode> <faultstring>Authentication failure.</faultstring> <detail> <ServiceFault xmlns="http://pb.com/EngageOne/ws/common"> <code>-1</code> <message>Authentication failure.</message> </ServiceFault> </detail> </env:Fault> </env:Body> </env:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 27 Integrating with EngageOne SOAP </p><p>Code element error types The code element in the SOAP fault is mapped to the following error types: </p><p>Code Error Type Message </p><p>-1 General failure • failed to find Delivery Item • failed to deliver document • failed to delete Delivery Item • failed to preview Template • failed to preview WorkItem • failed to preview Document • failed to search for Delivery Items • failed to preview WorkItem • failed to preview Document • failed to search for Delivery Items • failed to resume Delivery Item • failed to suspend Delivery Item • failed to update Delivery Item </p><p>-2 Illegal argument Never returned </p><p>-3 Invalid identifier • failed to load subfiles (for example, HIP) • failed to find template • failed to find workItem • failed to find workItem preview • failed to preview because of current status (active-new or active-incomplete) </p><p>-4 Missing required argument • empty request • missing : delivery item identifier, delivery options identifier, template, authContext, workItemID, HIP, Property, answer </p><p>-5 Unsupported Never returned. operation </p><p>-6 Session timeout expired userContext </p><p>The message element is a string that explains the error details. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 28 Integrating with EngageOne SOAP </p><p>Web services scenario: medical insurance data integration </p><p>You work for an insurance provider as a data integration analyst. You have been tasked with developing a custom system data integration program, that collects key information about clients and additional client data from various back-end systems. This information populates an XML instance that is passed to the EngageOne server for document composition. When data is pushed to the server, the template and other identifiers are specified. When the end-user launches EngageOne Interactive, the work item based on the specified template is available. The first document composition activity that will be supported is email notification to plan members or their dependents, who may be subject to coordination of benefit requirements. The following is a sample of data from the data source: </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 29 Integrating with EngageOne SOAP </p><p>Coordinate with template designer The next step is to coordinate with the template designer, and define the Interactive Data Model field names for associated document composition template. Typically, either the data integration analyst provides the field names to the template designer, or the template designer provides a list of field names to the analyst. You will also need authentication information for the EngageOne server. </p><p>Define data push mapping Based on field name assignments, the next step is to map the fields from your data source to the Interactive Data Model field names. The mapping is defined in a data push map file. The mapping function allows any valid XML input structure to be mapped to the Interactive Data Model XML structure. Because of the structure of your input data and design of the template, you decide to use ElementMap to map a single data element from the pushed XML data to a single element in an answer XML file. The field names received from the template designer are the same as the field names in the source data, except the template designer is using a field named COB to represent the Coordination_of_Benefits data from the source. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 30 Integrating with EngageOne SOAP </p><p>Import data push map Name the map file MyDataPush_COB.xml. You import the mapping file into EngageOne Administration. For more information, see the "EngageOne Administration Guide". </p><p>Creating the Web services Using Data Push Web services, you can build a custom integration application and create the following: 1. Use any JAX-WS compliant client framework such as Axis2, to create Web service client stubs based on the pushData Web service. 2. Use the client stubs to formulate a pushData request to pass the Data Push XML data to EngageOne Server, with the template identifier and map name (mapId in the service definition). 3. Invoke the Web service using the client stubs you created. 4. Handle the response from the Web service invocation. 5. Test the custom system data integration application by passing a test XML instance. Ask the template designer or an EngageOne Interactive user to log in and verify that the work item is available. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 31 Integrating with EngageOne SOAP </p><p>Interactive Document Delivery </p><p>The most important feature of any interactive document delivery application is the ActiveX editor. The ActiveX editor allows free form communication editing with a high degree of fidelity between the view presented while editing and the finished communication. The editor is embedded in EngageOne Interactive, and is available on the installation media. • The ActiveX editor requires services to retrieve and save the associated files. The deliver-document sample application demonstrates how this can be achieved. • If you build, deploy and run the sample application, you will progress through a series of pages. The first page prompts you to choose a ‘theme’ for the pages. • Then, a login prompt displays. Once logged in, choose a template and a delivery option from the two lists. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 32 Integrating with EngageOne SOAP </p><p>Sample application </p><p>The sample application included in the release distribution is a simple Java Server Faces application. This application uses the Mojarra implementation, PrimeFaces for the UI components, and a Java servlet to interact with the ActiveX control. The sample application is made up of two parts: 1. The view (.XHTML files) define the display elements. Included with the view files are controllers (.java files), that define the interaction between the user and the views. 2. The Java servlet provides the ActiveX editor with the required content, then saves changes. This functionality is provided by GET and PUT methods, respectively. • In the sample application, the EditorServlet.java file defines the servlet, and its GET and PUT methods. • The GET method takes templateId, WorkItemId and domain name as URL parameters. These parameters are used to make SOAP calls to the EngageOne Server, and retrieve the required files. The retrieved files are zipped and passed to the ActiveX control. • The PUT method takes the modified files as a Zip and passes the contained file to the EngageOne SOAP services. These are written back to the EngageOne Server. • The BaseURL and serverURLs will need to be defined for your implementation of the servlet. </p><p>You can implement the servlet for your application in the way shown in the sample file, or you can select a different approach. In either case, you will need to provide service end-points for the PUT and GET methods when launching the ActiveX control. </p><p>Implement Deliver Document sample application </p><p>The sample application provides an example using EngageOne's SOAP services to query existing objects, such as templates and delivery options. These objects will be used with user input, to generate documents that can be viewed or download through a browser. Note: • These instructions are taken from a README.txt file, located in the installation files in the \samples\deliver-document directory. • The deliver_document.war file is included in the installation files. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 33 Integrating with EngageOne SOAP </p><p>Quick start Use the deliver_document.war file. Copy deliver_document.war to the webapps directory of your Tomcat server. Note: • deliver_document.war may work with other servers. It has been tested on Tomcat. • For best results, use a "clean" copy of Tomcat, with no other Web applications installed. </p><p>Customize sample application </p><p>1. Edit the web\WEB-INF\deliver-document.properties file. Replace com.pb.samples.soap.url with the server URL. The Web application may be run from any server. 2. Build the package with "mvn clean package". See https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.<a href="/tags/HTML/" rel="tag">html</a> for more information about using Maven. A deployable WAR file will be located: target\deliver_document.war 3. Copy the WAR file to the webapps directory of the Tomcat server. </p><p>Run sample application </p><p>1. Restart the Tomcat server. Access the sample application: http://<hostname:8080>/deliver-document/Login.<a href="/tags/XHTML/" rel="tag">xhtml</a> • Change <hostname:8080> above to match the correct hostname. • The Settings page displays. </p><p>2. If appropriate, choose a theme. 3. Log in to the application. The sample application is ready to be used. </p><p>Notes • You may set the property com.pb.samples.soap.url as a JVM property (-D), to override the server location. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 34 Integrating with EngageOne SOAP </p><p>• This sample application reference shows how to use EngageOne services in a modern application environment. Improvements can be made in the area of session management, security, etc. Please follow your own best practices. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 35 Integrating with EngageOne SOAP </p><p>OnDemand Document Delivery </p><p>The most common goal for this use case is to create a single communication from a template. This is illustrated by walking through an example for generating a PDF. At the highest level, the steps are: load a template, load a delivery option, deliver the document. At a slightly lower level, the programmer will need to manage: • Authentication for all calls • Manipulation of the template files on disk • A mechanism for the customization of a template into a document • Any post-delivery activities (for example, saving a delivered PDF to disk) Before a document can be delivered, the following must exist: a domain, a template, and a delivery option. Note: These prerequisites are not covered in the sample application. </p><p>Ways to authenticate </p><p>There are two ways to authenticate: </p><p>WS-Security The recommended authentication method. This type of authentication is implemented in all EngageOne Server SOAP services at the userid and password level. </p><p>Legacy AuthContext This authentication method has been deprecated. For details on authentication, see User authentication. Typically, a template will be retrieved for instantiation via the templateService.searchTemplates call. This object contains the files for a communication based on that template. All data will necessarily be empty or set to defaults. Data entry in a communication can be customized in many ways. For the included sample application, the files are saved to disk and a user is instructed to edit them manually. Then, the files are loaded (in this example, from disk) into the Template field of a DeliverDocument object. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 36 Integrating with EngageOne SOAP </p><p>While it is not feasible to reproduce all relevant code from the sample project in this document, what follows is a short excerpt, edited for clarity. It demonstrates the calls to deliver a document and save the PDF generated, once the template, customer data, and delivery option have been prepared. </p><p> response = delivery.deliverDocument(doc).getDeliveryRequest() items = response.getDeliveryItems().getDeliveryItem() item = items.get(0) saveFile(path, item) </p><p>The DeliveryItem object passed here to saveFile will return an InputStream via getInputStream, and can be saved to a file. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 37 3 - XForms </p><p>EngageOne defines the data model for a template using the World Wide Web Consortium (W3C) XForms standard. It is intended to provide a flexible, device-independent mechanism for collecting information from users in a primarily Web-based environment. </p><p>In this section </p><p>About XForms 39 XForms processors 41 XForm/SDI Flow 42 XForms standard files 43 Data definition type and attributes 62 XForms </p><p>About XForms </p><p>The following are primary benefits of XForm – for more details see www.w3.org/MarkUp/Forms/2003/xforms-faq.html. • XForms has been designed to allow much to be checked by the browser, such as types of fields being filled in, that a particular field is required, or that one date is later than another. This reduces the need for round trips to the server or for extensive script-based solutions and improves the user experience by giving immediate feedback to what is being filled in. • All dates in the WSDLs should be using the XML Schema 'date' datatype, which defines a standard date format: "YYYY-MM-DD". This is not a propriety implementation. For more information, you can refer to the specification at www.w3.org/TR/xmlschema-2/#date. • XForms is properly integrated into XML: it is in XML, the data it collects in the form is XML, it can load external XML documents as initial data and can submit the results as XML. Including the user in the XML pipeline means you can have end-to-end XML, right up to the user's desktop. • XForms uses a number of existing XML technologies, such as XPath for addressing and calculating values and XML Schema for defining data types. This has a dual benefit: ease of learning for people who already know these technologies and the ability for implementation to use off-the-shelf components to build their systems. • The same form can be delivered without change to a traditional browser, a PDA, a mobile phone, a voice browser and even Instant Messenger. This greatly eases providing forms to a wide audience, since forms only need to be authored once. • It is much easier for the author to create complicated, adaptive, forms, without having to resort to scripting because XForms uses declarative markup to declare properties of values and to build relationships between values. • XForms has been designed so that it will work equally well with accessible technologies as with traditional visual browsers. XForms greatly improves on the HTML form approach by separating the purpose from the presentation, specifically, what the form does and how it looks. It achieves this separation of concerns by adopting the Model-View-Controller (MVC) pattern. The data to be collected by the form is known as instance data and the XForms model describes the structure of the instance data in addition to constraints on that data and submissions. Document navigation workflow, auto-fill and pre-fill form applications are supported through the use of instance data. The view of the XForm describes the controls to be used and which items of data they are bound to. The controller is the XForms processor in use, which coordinates events in the system. The fragment below is an XForm page, which demonstrates these different entities. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 39 XForms </p><p>The instance element serves as a container for the initial instance data. These are the fields which the form controls will be bound to. When the form is first displayed the values in this XML will be presented as the default values. When the form is submitted this XML structure will be updated to contain the new values supplied by the user and the XML posted or otherwise handled accordingly. As an alternative to embedding the instance XML directly into the XForm file the instance element may simply refer to an external XML file using the src attribute. XForms originating in EngageOne always point to an external instance XML file. The model element contains bind elements, which define constraints on mappings to the instance data and a submission element, which defines the action that will be taken when the form is submitted by the user. The presentation elements within the XForm page body contain the controls, each of which possess references to the instance data. For more information on XForm technology see the W3C XForm wiki page http://www.w3.org/MarkUp/Forms/wiki/. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 40 XForms </p><p>XForms processors </p><p>To integrate with XForms you need to choose an appropriate XForms processor for your application. Here is a short list of XForms processors both free and commercial that you may wish to investigate. Please refer to their respective sites for specific installation and integration instructions. Orbeon Forms: Orbeon Forms (formerly Orbeon Presentation Server (OPS)) is an open source forms solution that handles the complexity of forms typical of the enterprise or government. It is brought to standard Web browsers (including Internet Explorer, Firefox, Safari and Opera) via the Ajax technology, with no need for client-side software or plug-ins. Orbeon Forms allows you to build fully interactive forms with features that include as-you-type validation, optional and repeated sections, always up-to-date error summaries, PDF output, full internationalization, and controls like auto-completion, tabs, dialogs, trees and menus. Orbeon Forms already supports part of the XForms 1.1 specification. Jadu XForms: allows you create accessible and XML enabled online forms for integration with payment and CRM systems. Open Office XForms: is integrated in Open Office. Libre Office XForms: is integrated in Libre Office. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 41 XForms </p><p>XForm/SDI Flow </p><p>KEYFIELD NON-KEYFIELD </p><p> visible visible 1stXForm 2nd XForm </p><p>F F F F SDI is invoked, then editor displays. </p><p>F T T T User sees keyfields with a Retrieve button. User clicks Retrieve, SDI is invoked, then 2nd Xform displays, then editor displays. </p><p>T F T F User sees keyfields with a Retrieve button. User clicks Retrieve, SDI is invoked, then editor displays. </p><p>T T T T User sees keyfields with a Retrieve button. User clicks Retrieve, SDI is invoked, then 2nd Xform displays, then editor displays. </p><p>Rules: 1. If any visible fields, then display 1st Xform with any keyfields displayed (even if there are no visible keyfields). 2. SDI is always invoked. 3. If any visible non-key fields, then display 2nd XForm. </p><p>Data push rules: 1. If SDI has not been invoked on a work item created via DP (i.e., status = Active New), then SDI processing must occur. 2. If all key fields are populated via DP, then skip 1st Xform (overrides rule #1 above). </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 42 XForms </p><p>XForms standard files </p><p>The XForms standard main components are the files used by the Interactive Editor to drive all user interactions. These include an XHTML presentation file, XML instance file, and an XSD schema definition file. These files are used by the Interactive Editor to drive all user interactions and can be used for integration purposes to collect system data from a front-end business system. The XForms files can also be opened by a standard XForms processor in order to present a more traditional Web-based eForm data capture interface as part of an application. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 43 XForms </p><p>XHTML presentation file </p><p>The XHTML presentation file contains the defined fields together with related attributes of the interactive data presented in the EngageOne Interactive Editor during document completion. Since this file conforms to the W3C XHTML standard, the defined data types and the available attributes are included in the XHTML standards. For more information on XHTML, visit the W3C Web site. The following is an example of an XHTML presentation file: </p><p><!-- XForms and Orbeon Namespaces --> <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:f="http://orbeon.org/oxf/xml/formatting" xmlns:widget="http://orbeon.org/oxf/xml/widget" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"> </p><p><!-- Header section --> <xhtml:head> <xhtml:title>InteractiveDataModel</xhtml:title> </p><p><!-- Xform model section --> <xforms:model> </p><p><!-- Specifies actual instance file. Replace with actual Instance filename. --> <xforms:instance src="57861025010e462fa5acbde4fe0ecf90.xml"/> </p><p><!–- This specifies how the results of the form are to be submitted. By default it specifies the 'put' mechanism andthename of the instance file as the action (target file). In addition, a submit control must always be added to the view, referencing the ID of thesubmission element. Replace with actual instance filename. --> <xforms:submission action="57861025010e462fa5acbde4fe0ecf90.xml" id="main_submission" method="put"/> </p><p><!-- Bind section. These bind the interactive data definition to a set of attributes --> <xforms:bind nodeset="/InteractiveDataModel/Publication/CustomerName" readonly="true()" required="true()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/CustomerAddress" readonly="true()" required="true()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/CustomerCity" </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 44 XForms </p><p> readonly="true()" required="true()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/CustomerState" readonly="true()" required="true()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/CustomerZip" readonly="true()" required="true()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/PolicyNumber" readonly="true()" required="true()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/ClaimantName" readonly="false()" required="true()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/CorrespondenceSource" readonly="false()" required="true()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/CorrespondenceDate" readonly="false()" required="true()" type="xs:date"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/PhysicialName" readonly="false()" required="true()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/ServiceDate" readonly="false()" required="true()" type="xs:date"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/CorrespondentName" readonly="false()" required="true()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/CorrespondentTitle" readonly="false()" required="true()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/DeliveryInformation/Recipient" readonly="true()" required="false()" type="xs:string"/> </p><p><xforms:bind </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 45 XForms </p><p> nodeset="/InteractiveDataModel/Publication/DeliveryInformation/EmailToAddres s" readonly="false()" required="false()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/DeliveryInformation/EmailFromAddr ess" readonly="false()" required="false()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/DeliveryInformation/EmailSubject" readonly="false()" required="false()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/DeliveryInformation/EmailBody" readonly="false()" required="false()" type="xs:string"/> </p><p><xforms:bind nodeset="/InteractiveDataModel/Publication/DeliveryInformation/FaxNumber" readonly="false()" required="false()" type="xs:string"/> </p><p></xforms:model> </xhtml:head> </p><p><!-- XForms View section(XHTML body) --> <xhtml:body> </p><p><!–- User interface control for the Interactive Data Definition in the </p><p>Model section –-> span style="display:none"> </p><p><!–- User interface control for the Interactive Data Definition in the Model section –-> <xforms:input ref="/InteractiveDataModel/Publication/CustomerName"> <xforms:label></xforms:label> <xforms:help></xforms:help> </xforms:input> </span> </p><p><!–- Separates controls in XForms browsers or processors for layout purposes.–-> <xhtml:br/> </p><p><!–- User interface control –-> <span style="display:none"> </p><p><xforms:input ref="/InteractiveDataModel/Publication/CustomerAddress"> </p><p><xforms:label></xforms:label> < xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 46 XForms </p><p><span style="display:none"> <xforms:input ref="/InteractiveDataModel/Publication/CustomerCity"> <xforms:label></xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p><span style="display:none"> <xforms:input ref="/InteractiveDataModel/Publication/CustomerState"> <xforms:label></xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p><!–- User interface control –-> <span style="display:none"> <!–- May contain the following sections: Input – choice validation is not specified, it is only applied to Field, Group Field and Delivery Information </p><p>Select1 – used for Single Selection attribute for the specified definition </p><p>Select – used for Multi-Selection attribute for the specified Definition –-> </p><p><xforms:input ref="/InteractiveDataModel/Publication/CustomerZip"> <xforms:label></xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p><span style="display:none"> <xforms:input ref="/InteractiveDataModel/Publication/PolicyNumber"> <xforms:label></xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p><span style="display:none"> <xforms:select1 appearance="minimal" ref="/InteractiveDataModel/Publication/ClaimantName"> <xforms:label>Select the claimant:</xforms:label> <xforms:help></xforms:help> <xforms:item> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 47 XForms </p><p><xforms:label>Fred</xforms:label> <xforms:value>Fred</xforms:value> </xforms:item> <xforms:item> <xforms:label>Martha</xforms:label> <xforms:value>Martha</xforms:value> </xforms:item> <xforms:item> <xforms:label>Tyler</xforms:label> <xforms:value>Tyler</xforms:value> </xforms:item> <xforms:item> <xforms:label>Wilma</xforms:label> <xforms:value>Wilma</xforms:value> </xforms:item> </xforms:select1> </span> <xhtml:br/> </p><p><span style="display:none"> <xforms:select1 appearance="minimal" ref="/InteractiveDataModel/Publication/CorrespondenceSource"> <xforms:label>Select the correspondence source:</xforms:label> <xforms:help></xforms:help> <xforms:item> <xforms:label>Email</xforms:label> <xforms:value>Email</xforms:value> </xforms:item> <xforms:item> <xforms:label>Fax</xforms:label> <xforms:value>Fax</xforms:value> </xforms:item> <xforms:item> <xforms:label>Mail</xforms:label> <xforms:value>Mail</xforms:value> </xforms:item> <xforms:item> <xforms:label>Telephone</xforms:label> <xforms:value>Telephone</xforms:value> </xforms:item> </xforms:select1> </span> <xhtml:br/> </p><p><span style="display:none"> <xforms:input ref="/InteractiveDataModel/Publication/CorrespondenceDate"> <xforms:label>Select the correspondence date:</xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 48 XForms </p><p><span style="display:none"> <xforms:input ref="/InteractiveDataModel/Publication/PhysicialName"> <xforms:label>Type the physician name</xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p><span style="display:none"> <xforms:input ref="/InteractiveDataModel/Publication/ServiceDate"> <xforms:label>Select the date of service:</xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p><span style="display:none"> <xforms:input ref="/InteractiveDataModel/Publication/CorrespondentName"> <xforms:label>Type your name:</xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p><span style="display:none"> <xforms:input ref="/InteractiveDataModel/Publication/CorrespondentTitle"> <xforms:label>Type your title:</xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p><span style="display:none"> <xforms:input ref="/InteractiveDataModel/Publication/DeliveryInformation/Recipient"> <xforms:label></xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p><span style="display:none"> <xforms:input ref="/InteractiveDataModel/Publication/DeliveryInformation/EmailToAddress"> </p><p><xforms:label></xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 49 XForms </p><p><span style="display:none"> <xforms:input ref="/InteractiveDataModel/Publication/DeliveryInformation/EmailFromAddress" > <xforms:label></xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p><span style="display:none"> <xforms:input ref="/InteractiveDataModel/Publication/DeliveryInformation/EmailSubject"> </p><p><xforms:label></xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p><span style="display:none"> <xforms:input ref="/InteractiveDataModel/Publication/DeliveryInformation/EmailBody"> <xforms:label></xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p><span style="display:none"> <xforms:input ref="/InteractiveDataModel/Publication/DeliveryInformation/FaxNumber"> <xforms:label></xforms:label> <xforms:help></xforms:help> </xforms:input> </span> <xhtml:br/> </p><p><xforms:submit submission="main_submission"> <xforms:label>Submit</xforms:label> </xforms:submit> </p><p><!-- This specifies the submit control for the XForms. --> </xhtml:body> </xhtml:html> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 50 XForms </p><p>XML instance file </p><p>The XML file is referred to as the instance file because it contains the instance node of the XForms file. This file contains the values for the definitions (fields, repeating group fields, group fields and IDE group fields) – see Data definition type and attributes on page 62. This file may initially contain only empty elements for each of the defined fields since values are only written if default values have been specified in the Interactive Data Editor. After an eForm has been completed or the Interactive Editor has been used, the values the user supplied for each field will be saved to the instance file (Note: freeform text is stored in the pub and hip files, not the instance file). Since this file conforms to the W3C XML standard, the defined data types and the available attributes are included in the XML standards. For more information on XML, visit the W3C Web site. </p><p><!–- This specifies the IDD title, version number of schema used, Namespaces actual Schema file. Replace with actual Schema filename. --> <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> - <InteractiveDataModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="57861025010e462fa5acbde4fe0ecf90.xsd"> </p><p><!–- Publication --> - <Publication> </p><p><!–- Specifies the Interactive Data Definition with default value. Replace with actual field name and value. --> <CustomerName>Fred Jones</CustomerName> <CustomerAddress>123 High Street</CustomerAddress> <CustomerCity>Belguim</CustomerCity> <CustomerState>WI</CustomerState> <CustomerZip>53021</CustomerZip> <PolicyNumber>254320982</PolicyNumber> <ClaimantName>Fred</ClaimantName> <CorrespondenceSource>Fax</CorrespondenceSource> <CorrespondenceDate>2007-12-22</CorrespondenceDate> <PhysicialName>Dr. James</PhysicialName> <ServiceDate>2007-12-02</ServiceDate> <CorrespondentName>your name</CorrespondentName> <CorrespondentTitle>your title</CorrespondentTitle> </p><p><!–- Specifies the Interactive Data Definition with default value. Replace with actual field name and value. --> -<DeliveryInformation> <Recipient /> <EmailToAddress /> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 51 XForms </p><p><EmailFromAddress /> <EmailSubject /> <EmailBody /> <FaxNumber /> </p><p></DeliveryInformation> <g1private /> </Publication> </InteractiveDataModel> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 52 XForms </p><p>XML schema file for the interactive data model </p><p>The XML schema definition or XSD describes the format of the XML document containing the data. This is the file used to generate the Data Format and allows the final document to be generated from the updated instance file. The XSD is also a W3C standard. For more information on XML schema files, visit the W3C Web site. The following is an example of an XML schema definition file: </p><p><!-- Namespace and version number of schema and default namespaces --> <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:g1="http://www.g1.com/OCMSchema"> </p><p><!-- Interactive Data Model --> <!-- Interactive Data Definition in Schema element format --> <xs:element name="InteractiveDataModel"> <xs:complexType> <xs:sequence> <xs:element name="Publication"> <xs:complexType> <xs:sequence> <xs:element g1:keyfield="true" g1:sysdata="true" g1:visible="false" minOccurs="0" name="CustomerName"> </p><p><xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> <xs:element g1:keyfield="false" g1:sysdata="true" g1:visible="false" minOccurs="0" name="CustomerAddress"> </p><p><xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </p><p></xs:element> <xs:element g1:keyfield="false" g1:sysdata="true" g1:visible="false" minOccurs="0" name="CustomerCity"> </p><p><xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> <xs:element g1:keyfield="false" g1:sysdata="true" g1:visible="false" minOccurs="0" name="CustomerState"> </p><p><xs:simpleType> <xs:restriction base="xs:string"/> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 53 XForms </p><p></xs:simpleType> </xs:element> <xs:element g1:keyfield="false" g1:sysdata="true" g1:visible="false" minOccurs="0" name="CustomerZip"> </p><p><xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> <xs:element g1:keyfield="false" g1:sysdata="true" g1:visible="false" minOccurs="0" name="PolicyNumber"> </p><p><xs:simpleType> </p><p><xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> <xs:element g1:keyfield="false" g1:sysdata="false" g1:visible="false" minOccurs="0" name="ClaimantName"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Fred"/> <xs:enumeration value="Martha" <xs:enumeration value="Tyler"/> <xs:enumeration value="Wilma"/> </xs:restriction> </p><p></xs:simpleType> </xs:element> <xs:element g1:keyfield="false" g1:sysdata="false" g1:visible="false" minOccurs="0" name="CorrespondenceSource"> </p><p><xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Email"/> <xs:enumeration value="Fax"/> <xs:enumeration value="Mail"/> <xs:enumeration value="Telephone"/> </xs:restriction> </p><p></xs:simpleType> </xs:element> <xs:element g1:keyfield="false" g1:sysdata="false" g1:visible="false" minOccurs="0" name="CorrespondenceDate"> </p><p><xs:simpleType> <xs:restriction base="xs:date"/> </xs:simpleType> </xs:element> <xs:element g1:keyfield="false" g1:sysdata="false" g1:visible="false" minOccurs="0" name="PhysicialName"> </p><p><xs:simpleType> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 54 XForms </p><p><xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> <xs:element g1:keyfield="false" g1:sysdata="false" g1:visible="false" minOccurs="0" name="ServiceDate"> </p><p><xs:simpleType> <xs:restriction base="xs:date"/> </xs:simpleType> </xs:element> <xs:element g1:keyfield="false" g1:sysdata="false" g1:visible="false" minOccurs="0" name="CorrespondentName"> </p><p><xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> <xs:element g1:keyfield="false" g1:sysdata="false" g1:visible="false" minOccurs="0" name="CorrespondentTitle"> </p><p><xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> <xs:element minOccurs="0" name="DeliveryInformation"> <xs:complexType> <xs:sequence maxOccurs="1"> <xs:element g1:keyfield="false" g1:sysdata="false" g1:visible="false" minOccurs="0" name="Recipient"> </p><p><xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> <xs:element g1:keyfield="false" g1:sysdata="false" g1:visible="false" minOccurs="0" name="EmailToAddress"> <xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> </p><p><xs:element g1:keyfield="false" g1:sysdata="false" g1:visible="false" minOccurs="0" name="EmailFromAddress"> <xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> </p><p><xs:element g1:keyfield="false" g1:sysdata="false" g1:visible="false" minOccurs="0" name="EmailSubject"> <xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 55 XForms </p><p></xs:element> <xs:element g1:keyfield="false" g1:sysdata="false" g1:visible="false" minOccurs="0" name="EmailBody"> <xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> </p><p><xs:element g1:keyfield="false" g1:sysdata="false" g1:visible="false" minOccurs="0" name="FaxNumber"> <xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> </xs:sequence> </p><p><xs:attribute name="Delivery" use="optional"/> </xs:complexType> </xs:element> <xs:element name="g1private"/> </xs:sequence> </p><p><xs:attribute name="DOC1TREATASSOP" type="xs:boolean" use="optional"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 56 XForms </p><p>XML schema file for the non-interactive Designer data model </p><p>XML schema file for the non-interactive Designer data model The Designer file formats supported are: • Keyed Record • CSV Data Format • Custom XML Keyed Record EngageOnerequires that Designer provides data format information when publishing a template where the publication implements a keyed record data format. A data model file in the form of an XML structure is published with this type of publication along with the XML schema for the data model XML. For Example, consider the following keyed record data block: </p><p>CUSTOMER01001012831MrJohn Lawrence Lawrence 311Bellview Drive Gloucester VA 23061 VAMLIEPO CUSTOMER0207021999080119990831199909031999000178.75000000.00000178.75000000 .00000208.45 MOBILE01000099.00000011.21000000.00000110.21 LONGDIST01000004.95000003.50000039.84000048.29 INTERNET01000000.00000049.95000000.00000049.95NADSL 384k 128k SUMMEND DETAIL00Mobile Service DETAIL0107021999 1:00P 612-760-2788Minneapolis, MN 00008F000000.00 DETAIL0107021999 1:00P 612-760-2788Minneapolis, MN 00008F000000.00 DETAIL0107021999 1:00P 612-760-2788Minneapolis, MN 00008F000000.00 DETAIL0107021999 1:00P 612-760-2788Minneapolis, MN 00008F000000.00 DETAIL0107021999 1:00P 612-760-2788Minneapolis, MN 00008F000000.00 DETAIL0107021999 1:00P 612-760-2788Minneapolis, MN 00008F000000.00 DETAIL9900056000000.00 DETAIL00Long Distance Service DETAIL0107021999 1:00P 612-760-2788Minneapolis, MN 00008F000000.00 DETAIL0107021999 1:00P 612-760-2788Minneapolis, MN 00008F000000.00 DETAIL9900056000000.00 </p><p>TheXML structure is generated by Designer to represent this data model. Note the XML in this example is not complete. </p><p><?xmlversion="1.0" encoding="UTF-8" standalone="no"?> <FileDescription xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> </p><p><Source createdBy="DOC1Data Format Editor" version="1.1" date="2011-04-28"/> <SchemaDef> <FileInfo> <FileFormat> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 57 XForms </p><p><FixedWidth> <RecordDelimiter>CR+LF</RecordDelimiter> </FixedWidth> </FileFormat> <DefaultHandling> <DefaultDateHandlingtwoDigitYear="false" boundryRule="50"/> <DefaultEncoding>Windows 1252@ISOLatin 1</DefaultEncoding> <UnavailableFieldDefaults> <UnavailableDateabort="false" default="1970-01-01"/> <UnavailableNumberabort="true"/> <UnavailableStringabort="true"/> </UnavailableFieldDefaults> </DefaultHandling> </FileInfo> <DataHierarchy> <RecordKeykey="MOBILE01"> </p><p>SVD data is represented by the <FixedWidth> tag in above XML structure. CSV Data Format EngageOne will require that Designer provides data format information when publishing a template where the publication implements a CSV data format. The following approach would address the requirements for EngageOne with regard to this format. A data model file in the form of an XML structure would be published with this type of publication along with the XML schema for the data model XML. For example, consider the following CSV data block: </p><p>Key, Name, Address, Zip, DR,Amount,Remarks 001,Smith,"101, Princes Street",ED1 4DH, DR,89.01,"Cash, charges apply" </p><p>001, Manish,"102, Princes Street",WD17 1UE, CR,50.00,"Transport, charges" </p><p>Thefollowing XML structure would be generated by Designer to represent this data model. </p><p><?xmlversion="1.0" encoding="UTF-8" standalone="no"?> <FileDescription xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Source createdBy="DOC1Data Format Editor" version="1.1" date="2011-03-25"/> <SchemaDef> <FileInfo> <FileFormat> <Delimited> <FieldDelimiter></FieldDelimiter> <Quote></Quote> <FirstRowHeadings>true</FirstRowHeadings> <RecordDelimiter>CR+LF</RecordDelimiter> </Delimited> </FileFormat> <DefaultHandling> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 58 XForms </p><p><DefaultDateHandlingtwoDigitYear="false" boundryRule="50"/> <DefaultEncoding>Windows 1252@ISOLatin 1</DefaultEncoding> <UnavailableFieldDefaults> <UnavailableDateabort="false" default="1970-01-01"/> <UnavailableNumberabort="true"/> <UnavailableStringabort="true"/> </UnavailableFieldDefaults> </DefaultHandling> </FileInfo> <DataHierarchy> <RecordKeykey="001"/> </DataHierarchy> <DataStructure> <Recordkey="Key" descr="" hideRecord="true" repeatType="Group" maxOccurs="0" minOccurs="0"> <Field name="Key Definition Field" import="true" required="true"> <String> <StrLength>0</StrLength> </String> <FieldKey>07D6A8A528A9964C8E6E9F9075F5649C</FieldKey> </Field> <Field name=" Name" import="true" required="true"> <String> <StrLength>0</StrLength> </String> <FieldKey>0974502326B53548A3BE1BA86E85735B</FieldKey> </Field> <Field name=" Address" import="true" required="true"> <String> <StrLength>0</StrLength> </String> <FieldKey>8B33038F15BB5345B82D8148C562C27D</FieldKey> </Field> <Field name=" Zip" import="true" required="true"> <String> <StrLength>0</StrLength> </String> <FieldKey>9D0E2B9C4C95F948B7BB829C7A91039F</FieldKey> </Field> <Field name=" DR" import="true" required="true"> <String> <StrLength>0</StrLength> </String> <FieldKey>68AED90F9271A3448AA932EF84B42B59</FieldKey> </Field> <Field name=" Amount" import="true" required="true"> <String> <StrLength>0</StrLength> </String> <FieldKey>F57F5D798949A54D929E796225CD726E</FieldKey> </Field> <Field name=" Remarks" import="true" required="true"> <String> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 59 XForms </p><p><StrLength>8</StrLength> </String> <FieldKey>EBCC0E4E8CCD9347948694BC21C5A248</FieldKey> </Field> </Record> </p><p><Recordkey="001" descr="Key"> <Fieldiskey="true" name="Key Definition Field" import="true" required="true"> <String> <StrLength>0</StrLength> </String> <FieldKey>7C8C32E0EC913D41A608D56E24443B82</FieldKey> </Field> <Fieldname=" Name" import="true" required="true"> <String> <StrLength>0</StrLength> </String> <FieldKey>C246A928E5A4FF4D966541199954779F</FieldKey> </Field> <Fieldname=" Address" import="true" required="true"> <String> <StrLength>0</StrLength> </String> <FieldKey>15B78234DB357343BB72751CC638A5F3</FieldKey> </Field> <Fieldname=" Zip" import="true" required="true"> <String> <StrLength>0</StrLength> </String> <FieldKey>E7E1245888D5E54794F9B8C6FE12B131</FieldKey> </Field> <Fieldname=" DR" import="true" required="true"> <String> <StrLength>0</StrLength> </String> <FieldKey>964879FB55944D40BD3E22568350333A</FieldKey> </Field> <Fieldname=" Amount" import="true" required="true"> <String> <StrLength>0</StrLength> </String> <FieldKey>4975636D567F594A88AEF96EDEE1C538</FieldKey> </Field> <Field name=" Remarks" import="true" required="true"> <String> <StrLength>21</StrLength> </String> <FieldKey>2D2B4AB6EFFF1D42B66EB63FB3BAED04</FieldKey> </Field> </Record> </DataStructure> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 60 XForms </p><p></SchemaDef> </FileDescription> </p><p>SVD data is represented by the <Delimited> tag in this XML structure. Custom XML Designer generates an XML schema that represents the custom XML structure that you may create for any given publication. EngageOne supports the custom XML data model by having access to this XML schema file. When Designer publishes a template for EngageOne, the following files appear in the archive file: template_master.xml includes a SCHEMA tag in <Subfiles> and there will be no DATAMODEL tag. </p><p><Subfiles> <File type="HIP">template.hip</File> <File type="SCHEMA">data-model.xsd</File> </Subfiles> </p><p>In Designer, user can create custom xml sample data using: • XSD schema file • DTD schema file Depending on the schema file, the SCHEMA entry in template_master.xml will change. For XSD, <Subfiles> will be as above for SCHEMA tag. For DTD schema, <Subfiles> will be: </p><p><Subfiles> <File type="HIP">template.hip</File> <File type="SCHEMA">data-model.dtd</File> </Subfiles> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 61 XForms </p><p>Data definition type and attributes </p><p>The EngageOne XForms data definition types and attributes follow the standard XForms specifications. Below is a diagram of the structure of the data definition node types. </p><p>The configurable attributes available are listed below: </p><p>Name This attribute specifies the name of the interactive data element. Naming conventions follow XML standards. They can only contain alphanumeric characters and underscores and must start with a letter. </p><p>Type This attribute specifies the data type of the value of the interactive data. </p><p>Default Value This attribute specifies the initial value. This value is set directly in the XForms Instance (XML) as the inner node value. </p><p>Prompt This text appears in both the Interactive Editor and on a traditional eForm to tell the user what to enter. The Prompt value is set in the XForms View (XHTML body node) using the label node. </p><p>Help Text This attribute is used to provide an extended message or explanation of the Prompt attribute. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 62 XForms </p><p>Mandatory This attribute marks the interactive field for compulsory completion. When filling out a template, a value must be provided for this field in order to progress to the next interactive field or generate the document. This is set in XForms Model using the required attribute of the bind node </p><p>Read-Only This dictates whether the field value is user changeable or not. This property is frequently set for definitions requiring system-supplied data from mainline business systems. This is set in XHTML using the read-only attribute of the bind node. </p><p>Visible This specifies whether the interactive field for the definition should be displayed on the form. The Visible property only impacts the display of an interactive field on a traditional eForm presentation. All fields needed to complete a document, or used in document are always prompted for in the Interactive Editor, unless they are defined in the document as read-only. This property value is set in the XSD schema file using g1:visible attribute of the element node. </p><p>System Data The System Data attribute identifies elements whose values are expected to be supplied by system data integration with the front end business system. This flag is set in the XSD schema using the g1:sysdata attribute of the element node. The xml structure of supplied system data should be the same as the xml structure of the answer file. Thus, repeating groups of answer file-like XML structure should be put in under the system data tag. For a sample system data xml structure, see XML instance file on page 51 </p><p>Key Field The Key Field denotes whether a definition is the unique identifier for the template or not. This attribute is used by EngageOne to order and manage the template instances. Key fields are also used by the system data integration program to identify the correct data to collect. This flag is set in the XSD schema file using the g1:keyfield attribute of the element node. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 63 XForms </p><p>Expression Validation This property defines input value constraints to ensure valid entries are accepted for the definition during data capture. These rules are set in the XForms Model using the constraint attribute of the bind node. In the XSD schema file, they are set using the value attribute of minInclusive/maxInclusive, minExclusive, or maxExclusive node. </p><p>Max Length Validation This attribute specifies the maximum number of characters a user may input for a string-type field. The value is set in the XForms View (XHTML body node) using the maxlength attribute of the input node. In the XSD schema file, it is set using the value attribute of the maxLength node. </p><p>For more information on how these fields are populated and used during data integration, see System Data Integration on page 65 </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 64 4 - System Data Integration </p><p>System Data Integration (SDI) enables loading system data into the EngageOne Interactive. This data can be extracted from different sources. For example, Web service, message queues, databases, etc. </p><p>In this section </p><p>SDI General Configuration 66 Using an XML file as a data source 67 Using the Java callback interface 68 Feature support for System Data Integration 69 Integration option 1 – XML data source 71 Integration option 2 – callback interface 75 System Data Integration </p><p>SDI General Configuration </p><p>EngageOne Interactive uses XForms to support external SDI and user prompts before the document editing session is launched in the EngageOne editor. The modular design of XForms detaches the model (data rendered by the view) from viewable content. This allows the SDI handler to work in isolation with the XForms model, and modify it depending on the requirements. In this section, two SDI methods are explained, along with the features provided by the EngageOne system to support System Data Integration. This section assumes that the integration programmer has XForm knowledge and experience. EngageOne Interactive provides two methods for integrating documents with external system data: • An XML data source (for demonstration and proof of concept purposes only), which the application reads and parses to identify and load data to a target document. For more information, see Using an XML file as a data source. </p><p>• A Java callback interface, invoked during the System Data Integration process. See Using the Java callback interface on page 68 </p><p>EngageOne provides a generic XForm (included in the document subfiles). This XForm can be used with both integration methods to allow user interaction with the system, by providing inputs that control loading of system data into the document. SDI configuration is controlled by settings in deploy.local.properties. When the path to sysdata.xml is missing (default setting), the system bypasses the SDI call and uses the answer file in the template. When the path is defined, the SDI call is made to sysdata.xml. If the path to sysdata.xml is specified, but the system cannot find the file, an error message displays. If the path to sysdata.xml is not specified, but a custom class is specified, the custom SDI class will be used. If both the path to the default XML and the custom SDI class are specified, the custom class is used. Note: This method is provided for demonstration and proof of concept. It is not intended for production purposes. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 66 System Data Integration </p><p>Using an XML file as a data source </p><p>This method is provided for demonstration and proof of concept. It is not intended for production purposes. An external XML data file sysdata.xml contains system data needed to populate a document’s sysdata fields. By default, System Data Integration is not enabled. To enable sysdata.xml, set the location in deploy.local.properties. The system data loading process occurs during document creation. An XForm is displayed once SysdataAction detects there is a keyfield referenced in its schema definition. The XForm prompts the user to provide input, which serves as the key to retrieve the corresponding line item from the XML data. </p><p>XML data source diagram </p><p>This is illustrated in the following diagram. </p><p>The user submits the input form and SysdataAction (action controller) attempts to load the SystemDataLoader specified in systemdata.properties. The system data loader class is empty by default, allowing the default SystemDataLoader class implementation (XMLSystemDataLoader). </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 67 System Data Integration </p><p>XMLSystemDataLoader tasks </p><p>XMLSystemDataLoader performs the following tasks to render the XForm page that will be sent to the user: • Loads the system data XML from the location specified in systemdata.properties • Parses the system data XML • Transfers the selected line item to the document answer XML file • Returns the modified document subfiles back to the SysdataAction class The XForms page shows the system data input fields populated with data from the system data XML. You can also use the Visible attribute for fields to display in the XForm after system data loading has completed. The Visible attribute is configured by the template designer in Designer, by enabling the schema definition (set to True). </p><p>Using the Java callback interface </p><p>The second option incorporating System Data Integration is via a Java callback interface. During System Data Integration you can configure the EngageOne Interactive application to invoke a custom implementation. This implements a callback interface (system data loader), and allows access to references of document subfiles. The XMLSystemDataLoader (default system data loader) implements the system data loader interface. The default system data loader will be replaced by your custom system data loader. One system data loader can be plugged into the application at a time. Note: Multiple system data loaders can be used in the application, employing various object oriented patterns. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 68 System Data Integration </p><p>Java callback interface process flow </p><p>The process flow and interaction discussed in the previous section Using an XML file as a data source, applies to the process flow implemented with a custom system data loader. The process starts when EngageOne Interactive detects that a document has keyfields. EngageOne Interactive will delegate SysdataAction to retrieve and collate the document subfiles, and wrap them in an XFormsContext object. SysdataAction will invoke the custom system data loader class and pass the XFormsContext object. The XForms page will be rendered, and which will contain the modifications in the document subfiles. When implementing System Data Integration be aware that document subfiles should be retrieved from the document repository via Web services, to incorporate your System Data Integration requirements. </p><p>Feature support for System Data Integration </p><p>EngageOne provides custom XML attributes for defining the document schema subfile (.XSD). These attributes are available through the following namespace: http://www.g1.com/OCMSchema Each custom attribute is attached to the element definition on the schema subfile: </p><p><xs:element g1:keyfield="true" g1:sysdata="true" g1:visible="true" minOccurs="0" name="CustomerName" nillable="true"> <xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> </p><p>Where: • visible – XForm user interface element, which references this node. This should be visible when the XForms page is rendered. • keyfield – Instance data value that should be used as a look-up field for retrieving external system data. The corresponding user interface element should be visible if data will be provided by the user. • sysdata – Instance data value should be populated with external system data look-up results. There are attributes in the XForms subfile that work with the custom attributes defined for System Data Integration. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 69 System Data Integration </p><p>XForms model example </p><p><xs:element g1:keyfield="true" g1:sysdata="true" g1:visible="true" minOccurs="0" name="CustomerName" nillable="true"> <xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:element> </p><p>In this example: • required attribute - Required instance data value. Should contain a value. • read only attribute - Read only attribute. Should not change its value. The XForms user interface element which references this node is rendered as a non-editable form element. Note: When implementing the system data loader: where you need to modify the XForms page, ensure that the attribute values are properly set. </p><p>It is important that the above attributes are set with appropriate values so the XForms page will render properly. The values of those attributes are set visually in the document templates. For more information, see Designing the template for System Data Integration on page 71. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 70 System Data Integration </p><p>Integration option 1 – XML data source </p><p>Loading the data from an XML data source is the default mode when performing System Data Integration. </p><p>Enabling the default system data loader </p><p>Note: On a fresh system install, this is the default configuration for EngageOne Interactive. This step is necessary only overriding this setting. </p><p>For example, you develop a custom system data loader and plug it in to the application. To enable the default system data loader: In EngageOne Interactive, modify the system data configuration settings deploy.local.properties. This involves: 1. Set the sdi.callback.class.name to blank. 2. Set the sdi.callback.jar.path to blank. </p><p>Designing the template for System Data Integration </p><p>In Designer, the Interactive Data Editor allows configuring the XForms page for System Data Integration. This process works with XForms, and custom schema attributes. Following are some processes showing variations on configuring the system data attributes of your template. For more information about designing templates for EngageOne, see the Designer User’s Guide. </p><p>Configure system data load with a user confirmation page 1. Enable the keyfield attribute to use as the lookup key during system data load. 2. Enable the sysdata attribute for fields to populate with system data. 3. Enable the visible attribute for fields the user will interact with. 4. Disable the read-only attribute in the XForms design page, for user interaction fields. The required attribute can be enabled for users to provide data before document authoring. This is for fields not populated with system data. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 71 System Data Integration </p><p>Configure system data load with the user confirmation page, read-only 1. Enable the keyfield attribute to use as the lookup key during system data load. 2. Enable the sysdata attribute for fields to populate with system data. 3. Enable the visible attribute for fields the user will interact with. 4. Enable the read-only attribute in the XForms design page, for user interaction fields. </p><p>Configure system data load without the user confirmation page 1. Enable the keyfield attribute to use as the lookup key during system data load. 2. Enable the sysdata attribute for fields to populate with system data. 3. Disable the visible attribute for fields the user will interact with. This loads system data to the answer XML file, and launches EngageOne editor with the document displayed. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 72 System Data Integration </p><p>Preparing the system data XML In order for system data to be loaded by EngageOne Interactive, your system must create the sysdata.xml file. The following schema constraints are enforced for sysdata.xml: </p><p><xs:element name="system-data"> <xs:complexType> <xs:sequence> ... answer XML file schema constraint applies here </xs:sequence> </xs:complexType> </xs:element> </p><p>• The sysdata.xml file must be enclosed by a system data element. • There should be a list of XML nodes in the system data element. These nodes will refer to a system data line item, which has the same format as the answer XML file and complies with the schema defined for the answer XML file. </p><p>Example XML answer file The following example illustrates a defined answer XML file, followed by a corresponding system data XML. Defined answer XML: </p><p><?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <InteractiveDataModel version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="d3dc1f5adc034110914418efcb2bcb07.xsd"> <Publication> <AccountName></AccountName> <AccountNumber></AccountNumber> <DateCreated>2008-10-08</DateCreated> <BillingAddress></BillingAddress> <g1private /> </Publication> </p><p>System data XML: </p><p><?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <system-data> <InteractiveDataModel> <Publication> <AccountName>John X</AccountName> <AccountNumber>EA343ADF-DD</AccountNumber> <DateCreated>2008-10-08</DateCreated> <BillingAddress>John X Residences</BillingAddress </Publication> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 73 System Data Integration </p><p></InteractiveDataModel> <InteractiveDataModel> <Publication> <AccountName>John Y</AccountName> <AccountNumber>Y1343ADF-YY</AccountNumber> <DateCreated>2008-11-08</DateCreated> <BillingAddress></BillingAddress </Publication> </InteractiveDataModel> <InteractiveDataModel> <Publication> <AccountName>John Z</AccountName> <AccountNumber>Z04A3ADF-ZZ</AccountNumber> <DateCreated>2008-10-11</DateCreated> </Publication> </InteractiveDataModel> </p><p><!-- more system data line item can be appended here... --> </system-data> </p><p>InteractiveDataModel element The InteractiveDataModel element represents a single data line item, where each line should have the same XML structure as its answer file. The g1private element is not present in any line item in the system data XML. Any nodes under g1private are used for EngageOne internal processing. If appropriate, nodes can be excluded from a line item. For example, BillingAddress is not included in the line item "John Z". EngageOne Interactive transfers a selected line item from the system data file to the answer file. Missing information line item information will be skipped during transfer. EngageOne Interactive uses the schema definition to determine which elements are key and sysdata fields. For each sysdata element, the element should be populated with system data. </p><p>Loading the system data XML Plug in the system data XML to EngageOne Interactive: 1. Modify the system data configuration settings in deploy.local.properties. 2. Modify the sdi.sysdata.path property, and set it to the absolute path of the system data XML file. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 74 System Data Integration </p><p>Integration option 2 – callback interface </p><p>Configure EngageOne Interactive to use a custom system data loader implementation. </p><p>Configure EngageOne Interactive to use a custom system data loader implementation </p><p>1. Create the custom system data loader implementation. 2. Compile and package the custom system data loader implementation class to a JAR file. 3. Configure EngageOne Interactive system data settings to load and invoke the custom system data loader class. </p><p>Implement a custom system data loader </p><p>To implement a custom system data loader: </p><p>Steps 1. Create a custom system data loader class, which implements the com.pb.ocm.client.xform.SystemDataLoader Java interface. This must be plugged into EngageOne Interactive at runtime. The System Data Integration API classes are bundled in sdi-client-api.jar, located in the samples folder of the EngageOne distribution folder. This houses the main interface of the System Data Integration that the custom system data loader class needs to implement. For example: </p><p> public interface SystemDataLoader { /** * Loads system data into the given XML document. * @param xmlDocument the given XML document * @param context * @throws Exception if an error occurs while loading system data */ void loadSystemData(XFormsContext context) throws Exception; </p><p>2. Import the project classpath to reference the System Data Integration API classes. When packaging the custom system data loader, you may not need to put the sdi-client-api.jar </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 75 System Data Integration </p><p> file on the project classpath, as those classes are available in the EngageOne Interactive Web application archive. The following guidelines must be observed when developing a custom system data loader. • Create the custom system data loader implementation. • The custom system data loader should implement the com.pb.ocm.client.xform.SystemDataLoader interface. • An XFormsContext object is passed to the custom system data loader when invoked during System Data Integration. The object provides access to the document subfiles, answer file, XForm file, and answer file schema file. • If an XForms file is altered, it should conform to the W3C XForms 1.1 standard. If an answer XML file is altered, it should conform to its XML schema file. Any structural change in the answer XML file should be cascaded to its XML schema file. When loading, EngageOne Editor validates the answer XML using the XML schema. • Do not change the g1private XML element in the answer XML file, or the corresponding constraint in the XML schema. </p><p>Notes • Altering custom EngageOne XForms attributes will affect how the XForms page is rendered in EngageOne Interactive. Incorrect settings might cause the page to be incorrectly displayed, or lead to loss of data. • Set keyfields to visible. • System data can be set to visible or non-visible. • It is recommended that Required fields in the XForms file be set to visible. • It is recommended that you do not amend a field marked as System data before invoking the custom system data loader. • Any change made to document subfiles cannot be reversed. • Do not change XML namespaces in document subfiles. • Removal of existing XML elements from document subfiles is not allowed. • Any other changes can be made to document subfiles, except for the constraints mentioned above. For example, you can add XForms UI elements, XML data in the answer XML file, as well as make schema and XForms constraint modifications. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 76 System Data Integration </p><p>Custom system data loader </p><p>Following is a sample custom system data loader. This adds a visible input element in the document. These changes include: • Addition of schema definition in the XML schema file • Addition of XForms mapping in the XForms file • Addition of XML nodes in the answer XML file, which maps to the XForms element </p><p>Custom data loader interface </p><p> public class StaticDataLoader implements SystemDataLoader { public void loadSystemData(XFormsContext context) throws Exception { loadToSchema(context); loadToView(context); loadToInstance(context); } </p><p> private void loadToSchema(XFormsContext context) throws Exception { } private void loadToView(XFormsContext context) throws XMLStreamException, </p><p>FactoryConfigurationError, XFormsContextException, SAXException, IOException, ParserConfigurationException, JaxenException, TransformerFactoryConfigurationError, TransformerException { } private void loadToInstance(XFormsContext context) throws XMLStreamException, FactoryConfigurationError, XFormsContextException, SAXException, IOException, ParserConfigurationException, JaxenException, TransformerFactoryConfigurationError, TransformerException {} public void loadSystemDataWithXpath(XFormsContext context) throws XMLStreamException, FactoryConfigurationError, XFormsContextException, JaxenException, SAXException, IOException, ParserConfigurationException, TransformerFactoryConfigurationError, TransformerException { } </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 77 System Data Integration </p><p> loadToSchema function </p><p> private void loadToSchema(XFormsContext context) throws Exception { /* add simple element to schema */ XMLStreamReader parser = XMLInputFactory.newInstance()?.createXMLStreamReader( new DOMSource(context.getSchemaAsDocument())); StAXOMBuilder builder = new StAXOMBuilder(parser); OMElement schema = builder.getDocumentElement(); OMElement root = schema.getFirstElement(); OMElement complexType = root.getFirstChildWithName( new QName(?"http://www.w3.org/2001/XMLSchema", "complexType")); QName sequenceIndicator = new QName("http://www.w3.org/2001/XMLSchema", "sequence"); OMElement complexTypeChild = complexType.getFirstChildWithName(sequenceIndicator); if (complexTypeChild == null) { QName allIndicator = new QName("http://www.w3.org/2001/XMLSchema", "all"); complexTypeChild = complexType.getFirstChildWithName(allIndicator); } OMFactory factory = OMAbstractFactory.getOMFactory(); OMNamespace xmlSchemaNamespace = factory.createOMNamespace(?"http://www.w3.org/2001/XMLSchema","xs"); OMNamespace group1Namespace = factory.createOMNamespace(?"http://www.g1.com/OCMSchema", "g1"); </p><p>OMElement comment = factory.createOMElement("element", xmlSchemaNamespace, complexTypeChild); comment.addAttribute("visible", "true", group1Namespace); comment.addAttribute("minOccurs", "0", null); comment.addAttribute("name", "Comment", null); OMElement simpleType = factory.createOMElement("simpleType", xmlSchemaNamespace, comment); OMElement restriction = factory.createOMElement("restriction",? xmlSchemaNamespace, simpleType); restriction.addAttribute("base", "xs:string", null); </p><p>ByteArrayOutputStream bos = new ByteArrayOutputStream(); schema.serialize(bos); </p><p>DocumentBuilderFactory docBuilderfactory = DocumentBuilderFactory.newInstance(); docBuilderfactory.setNamespaceAware(true); </p><p>Document newSchema = docBuilderfactory.newDocumentBuilder().parse( new ByteArrayInputStream(bos.toByteArray())); </p><p> context.setSchemaAsDocument(newSchema); } </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 78 System Data Integration </p><p> loadToView function </p><p> private void loadToView(XFormsContext context) throws XMLStreamException, FactoryConfigurationError, XFormsContextException, SAXException, IOException, ParserConfigurationException, JaxenException, TransformerFactoryConfigurationError, TransformerException { </p><p>XMLStreamReader parser1 = XMLInputFactory.newInstance()?.createXMLStreamReader( new DOMSource(context.getInstanceAsDocument())); StAXOMBuilder builder1 = new StAXOMBuilder(parser1); OMElement instanceData = builder1.getDocumentElement(); String firstNodeName = instanceData.getLocalName(); </p><p>XMLStreamReader parser = XMLInputFactory.newInstance()?.createXMLStreamReader( new DOMSource(context.getXFormsViewAsDocument())); StAXOMBuilder builder = new StAXOMBuilder(parser); OMElement xhtml = builder.getDocumentElement(); </p><p>OMFactory factory = OMAbstractFactory.getOMFactory(); OMNamespace xformsNamespace = factory.createOMNamespace(?"http://www.w3.org/2002/xforms", "xforms"); </p><p>AXIOMXPath modelExpr = new AXIOMXPath("//xforms:model"); modelExpr.addNamespace("xforms", "http://www.w3.org/2002/xforms"); OMElement model = (OMElement) modelExpr.selectSingleNode(xhtml); </p><p>OMElement bind = factory.createOMElement("bind", xformsNamespace, model); bind.addAttribute("nodeset", "/"+firstNodeName+"/Publication/Comment", null); bind.addAttribute("readonly", "false()", null); bind.addAttribute("required", "false()", null); bind.addAttribute("type", "xs:string", null); </p><p>AXIOMXPath bodyExpr = new AXIOMXPath("//xhtml:body"); bodyExpr.addNamespace("xhtml", "http://www.w3.org/1999/xhtml"); OMElement body = (OMElement) bodyExpr.selectSingleNode(xhtml); </p><p>OMElement input = factory.createOMElement("input", xformsNamespace,? body); input.addAttribute("ref", "/"+firstNodeName+"/Publication/Comment", null); OMElement label = factory.createOMElement("label", xformsNamespace,? input); factory.createOMText(label, "Comment:"); OMElement help = factory.createOMElement("help", xformsNamespace, input); factory.createOMText(help, "Observations"); </p><p>ByteArrayOutputStream bos = new ByteArrayOutputStream(); xhtml.serialize(bos); </p><p>DocumentBuilderFactory docBuilderfactory = DocumentBuilderFactory.newInstance(); </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 79 System Data Integration </p><p> docBuilderfactory.setNamespaceAware(true); Document newView = docBuilderfactory.newDocumentBuilder().parse( new ByteArrayInputStream(bos.toByteArray())); context.setXFormsViewAsDocument(newView); } </p><p> loadToInstance function </p><p> private void loadToInstance(XFormsContext context) throws XMLStreamException, FactoryConfigurationError, XFormsContextException, SAXException, IOException, ParserConfigurationException, JaxenException, TransformerFactoryConfigurationError, TransformerException { XMLStreamReader parser = XMLInputFactory.newInstance()?.createXMLStreamReader( new DOMSource(context.getInstanceAsDocument())); tAXOMBuilder builder = new StAXOMBuilder(parser); OMElement instanceData = builder.getDocumentElement(); AXIOMXPath bodyExpr = new AXIOMXPath("//Publication"); OMElement publication = (OMElement) bodyExpr.selectSingleNode(instanceData); OMFactory factory = OMAbstractFactory.getOMFactory(); OMElement e = factory.createOMElement("Comment", null,? publication); factory.createOMText(e, context.getTemplateName()); </p><p>ByteArrayOutputStream bos = new ByteArrayOutputStream(); instanceData.serialize(bos); </p><p>DocumentBuilderFactory docBuilderfactory = DocumentBuilderFactory.newInstance(); docBuilderfactory.setNamespaceAware(true); Document newInstanceData = docBuilderfactory.newDocumentBuilder().parse( new ByteArrayInputStream(bos.toByteArray())); </p><p> context.setInstanceAsDocument(newInstanceData); } </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 80 System Data Integration </p><p>Error handling </p><p>You can configure the custom system data loader to determine the required error handling scheme during system data retrieval in EngageOne Interactive. To enable this feature, you must throw a SystemDataLoaderException object from the loadSystemData (XFormsContext context) implementation of the custom system data loader class. </p><p>SystemDataLoaderException class – custom fields The SystemDataLoaderException class has custom fields that can be set by either passing required values to the SystemDataLoaderException object's constructor, or by the individual setter methods: </p><p> errorcode A string field that maps the SystemDataLoaderException object to a localized error message, which will display on the XForms page. All error codes that EngageOne Interactive to use should be enumerated in the systemDataLoaderErrorCodes.properties file, located in the Engage One install directory in the Interactive folder. The properties file should contain the complete mapping of error codes to their corresponding message keys. A sample systemDataLoaderErrorCodes.properties file follows. </p><p>#local error code for system data loader exceptions </p><p>001=system.data.loader.dataNotFound # 001 and 002 are 002=system.data.loader.unknown # default entries 003=system.data.loader.incorrectKey 004=system.data.loader.internalError 005=system.data.loader.hostUnreachable </p><p>Note: any number of error codes may be mapped to the same message key. Error codes must be unique. </p><p>These keys are mapped to error messages that EngageOne Interactive can display on the XForms page. The mapping of keys to their respective messages must be specified in the systemDataLoaderMessages.properties file, located in the Engage One install directory in the Interactive folder. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 81 System Data Integration </p><p> systemDataLoaderMessages.properties sample Following is a systemDataLoaderMessages.properties resource bundle sample: </p><p># -- System Data Loader custom messages system.data.loader.dataNotFound=Data not found for the entered key. Please try again. </p><p> system.data.loader.unknown=Unknown error encountered during system data retrieval. Please try again. </p><p> system.data.loader.incorrectKey=The entered key, {0}, is incorrect or missing. Please try again. </p><p> system.data.loader.internalError=Error encountered during system data retrieval. Please cancel the creation of this document and contact your system administrator. </p><p> system.data.loader.hostUnreachable=The host of the system data is unreachable. Please try again later. If the problem persists, please contact your system administrator. </p><p>Error messages can be localized, and are dependent on the language settings of the Internet browser. To enable localization for the custom system data loader error messages, follow the localization (L10N) standards, and append the correct suffix to the resource base name (systemDataLoaderMessages). For example: systemDataLoaderMessages_en for English systemDataLoaderMessages_de for German systemDataLoaderMessages_zh for Chinese, etc. All resource bundles must be placed in the same directory with the base resource bundle (systemDataLoaderMessages.properties). The default value of this field is 001 (“Data not found for the entered key. Please try again”). </p><p> params An optional field that accepts an array of strings (casted to Object[]). The value of this field will be passed to the resource bundle handler of EngageOne Interactive to replace placeholders ({0}, {1}, etc.), in error messages in the systemDataLoaderMessages.properties file. This field will be ignored if the errorCode field of the SystemDataLoaderException object points to an error message that does not contain placeholders. The default value of this field is null. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 82 System Data Integration </p><p> result An enum field that determines the page EngageOne Interactive will load if a SystemDataLoaderException is thrown during system data retrieval. It has two values: • SystemDataLoaderResult.DEFAULT – forces EngageOne Interactive to ignore the caught error, and allow the user to manually input data to the user prompt fields. The error message (specified by the errorCode field) will not be visible on the XForms page. • SystemDataLoaderResult.REPROMPT – forces EngageOne Interactive to allow the user to re-enter key field data and retrieve system data. The error message (specified by the errorCode field) will display on top of the XForms page. The default value of this field is SystemDataLoaderResult.DEFAULT. </p><p> message and cause message (String) and cause (Throwable) Implicit fields that can be set by including any or both constructor arguments of the SystemDataLoaderException object. These fields are inherited from the of SystemDataLoaderException parent class. If these are set, the stack trace of the wrapped Throwable, or the value of the given message will be logged on the application server logs. </p><p>SystemDataLoaderException constructor signature The following is a complete list of constructor signatures of the SystemDataLoaderException. Note: the errorCode, params, and result fields can be set via their setter methods. </p><p>SystemDataLoaderException constructor signatures: </p><p> public SystemDataLoaderException() public SystemDataLoaderException(Throwable cause) public SystemDataLoaderException(String errorCode) public SystemDataLoaderException(String errorCode, Object[] params) public SystemDataLoaderException(SystemDataLoaderResult result) public SystemDataLoaderException(String errorCode,SystemDataLoaderResult systemDataLoaderResultresult) public SystemDataLoaderException(String errorCode, Object[] params, SystemDataLoaderResult result) public SystemDataLoaderException(String message, String errorCode, SystemDataLoaderResult result) public SystemDataLoaderException(String message, String errorCode, Object[] params, SystemDataLoaderResult result) public SystemDataLoaderException(String message, String errorCode) public SystemDataLoaderException(String message, String errorCode, Object[] params) public SystemDataLoaderException(Throwable cause, String errorCode) public SystemDataLoaderException(Throwable cause, String errorCode, </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 83 System Data Integration </p><p>Object[] params) public SystemDataLoaderException(Throwable cause, String errorCode, SystemDataLoaderResult result) public SystemDataLoaderException(Throwable cause, String errorCode, Object[] params, SystemDataLoaderResult result) public SystemDataLoaderException(String message, Throwable cause, String errorCode) public SystemDataLoaderException(String message, Throwable cause, String errorCode, Object[] params) public SystemDataLoaderException(String message, Throwable cause, String errorCode, SystemDataLoaderResult result) public SystemDataLoaderException(String message, Throwable cause, String errorCode, Object[] params, SystemDataLoaderResult result) </p><p>Sample implementation </p><p> public class StaticDataLoader implements SystemDataLoader { public void loadSystemData(XFormsContext context) throws Exception { try { /* </p><p>* your custom code which loads the system data to the XForm * files goes here. You will need to use XFormsContext object * to retrieve the XForm files rendered in the EngageOne Interactive * application. Depending on your implementation, you may need * to modify the XForm, schema, instance XML file as necessary */ </p><p>} catch (Exception e) { /* wrap all Exceptions encountered to a SystemDataLoaderException */ </p><p>SystemDataLoaderException exception = new SystemDataLoaderException (e); </p><p> if (e instanceof RemoteException) { /* set the error code */ exception.setErrorCode("110"); </p><p>/* set the error message parameters if applicable */ exception.setParams( new String[]{context.getTemplateName()}); </p><p>/* set the result action */ exception.setResult( SystemDataLoaderResult.REPROMPT); } </p><p> else { /* simply set the result action since the error messages won't be displayed */ exception.setResult( SystemDataLoaderResult.DEFAULT); } </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 84 System Data Integration </p><p>/* finally, throw the exception */ throw exception; } } </p><p>Compiling and packaging custom system data loader Prepare the custom system data loader class to be plugged into EngageOne Interactive: 1. Compile the custom system data loader implementation by including the sdi-client-api.jar file on the project classpath. This file is located in the EngageOne install directory, under the active-drive (content repository) config folder. 2. Package the custom system data loader on the same JAR file. System Data Integration API classes are included in the EngageOne Interactive Web application archive. You can assemble the custom system data loader class without the sdi-client-api.jar on the project classpath. </p><p>Configuring EngageOne Interactive system data settings Plug the custom system data loader into EngageOne Interactive: 1. Modify the system data configuration settings deploy.local.properties, located in the EngageOne install directory under the active-drive (content repository) config folder. 2. Modify the sdi.callback.class.name property, and set it to the fully-qualified name (FQN) of the custom system data loader class. For example, com.mycompany.engageone.sdi.ApplicationSystemDataLoader 3. Modify the sdi.callback.jar.path property and set the path to the JAR file containing the custom system data loader class. For example, /EngageOne/sdi/custom-sdi-1.0.jar This configuration setting can accept a valid Java classpath, allowing multiple JAR files to be specified. Note: The following rule applies when defining the value for this property. </p><p>If a relative path is used, the system assumes the location of the custom system data loader class is relative to the value path set in the customSdi.default.classpath property in config-settings.xml. By default this path is set to the EngageOne install directory. For example, sdi-test/CustomLoader.jar, where sdi-test is a directory under the path specified in the property. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 85 5 - Additional features in SOAP </p><p>In this section </p><p>Trusted Connection 87 Template search 87 Write delivery information 96 Managing the work queue 99 Updating work items 102 Reassigning a work item 106 Deleting a work item 108 Additional features in SOAP </p><p>Trusted Connection </p><p>Where there is a higher level of trust between EngageOne and a custom application you can use the trusted connection feature. This method establishes an authorized session token based on the valid userID, trusted connection apli key(defined in deploy.properties under key: security.trusted.connection.api.key) and domainID only, meaning regular user/password authentication is not required (as with the connect service). The related configuration setting is checked to determine whether this service should be made available to the system or not. This is done by examine security.trusted.connection.password property defined in deploy.properties. Trusted connection is defaulted to off during EngageOne installation. To activate the feature security.trusted.connection.password should be set. To perform trustedConnection use the SecurityService, trustedConnectionLogin methods. </p><p>Template search </p><p>As the document repository increases in size, retrieving all templates can consume a large amount of memory. EngageOne Server provides an optimized service for searching templates based on a given criteria. This service can sort and provide a subset of the search result set, also known as pagination. To perform a template search against the document repository, use the TemplateService, searchTemplates method. </p><p>Searching templates by template property </p><p>This service enables searching templates by template property (for example, template name and ID). It also enables searching by template metadata attributes, as well as a wildcard search. Note: a wild card search can be performed only for certain search criteria fields. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 87 Additional features in SOAP </p><p>Create an instance of the client stub for the TemplateService, then invoke the searchForTemplates service where you pass in the search criteria. </p><p>Java sample </p><p>TemplateServiceStub templateService = new TemplateServiceStub(URL_BASE + "TemplateService"); SearchTemplates request = new SearchTemplates(); request.setTemplates(new SearchTemplates.Templates()); SearchTemplates.Templates.Template template = new SearchTemplates.Templates.Template(); IntegerIdOrName id = new IntegerIdOrName(); id.setName("Insurance Policy Letter"); template.setIdent(id); request.getTemplates().setTemplate(template); </p><p>SearchTemplatesResponse response = templateService.searchTemplates(request); List<Template> templates = response.getTemplates().getTemplate(); </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 88 Additional features in SOAP </p><p>C# sample </p><p>TemplateService.TemplateServiceClient templateSvc = new TemplateService.TemplateServiceClient("TemplateServiceSOAP"); </p><p>TemplateService.SearchTemplates req = new TemplateService.SearchTemplates(); req.templates = new TemplateService.SearchTemplatesTemplates(); req.templates.template = new TemplateService.SearchTemplatesTemplatesTemplate(); req.templates.template.ident = new TemplateService.IntegerIdOrName(); req.templates.template.ident.Item = "Insurance Policy Letter"; </p><p>TemplateService.SearchTemplatesResponse resp = templateSvc.searchTemplates(req); TemplateService.Template[] templates = resp.templates; </p><p>Note: </p><p>• The searchTemplates service makes use of other classes. Use these classes to compose the template search criteria and pass it to the service invocation. This service returns a list of templates that match the search criteria. For example, if the template search key is set to Insurance Policy Letter, the result set will contain all template names containing Insurance Policy Letter. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 89 Additional features in SOAP </p><p>Searching templates with sorting and pagination </p><p>Perform a template search with a sorted and paginated result set, and add additional search criteria values to pass to the searchTemplates service. </p><p>Java sample </p><p>TemplateServiceStub templateService = new TemplateServiceStub(URL_BASE + "TemplateService"); SearchTemplates request = new SearchTemplates(); request.setTemplates(new SearchTemplates.Templates()); SearchTemplates.Templates.Template template = new SearchTemplates.Templates.Template(); IntegerIdOrName id = new IntegerIdOrName(); id.setName("Insurance Policy Letter"); template.setIdent(id); request.getTemplates().setTemplate(template); </p><p>PaginationControls pagination = new PaginationControls(); pagination.setPageNumber(1); pagination.setPageSize(10); </p><p>SortingControls sorting = new SortingControls(); sorting.setFields(new SortingControls.Fields()); SortField field = new SortField(); field.setType(SortFieldType.NAME); field.setOrder(SortOrder.ASCENDING); </p><p> request.setPagination(pagination); request.setSorting(sorting); </p><p>SearchTemplatesResponse response = templateService.searchTemplates(request); List<Template> templates = response.getTemplates().getTemplate(); </p><p>The SortingControls class accepts sort fields and sort ordering values. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 90 Additional features in SOAP </p><p>C# sample </p><p>TemplateService.TemplateServiceClient templateSvc = new TemplateService.TemplateServiceClient("TemplateServiceSOAP"); </p><p>TemplateService.SearchTemplates req = new TemplateService.SearchTemplates(); req.templates = new TemplateService.SearchTemplatesTemplates(); req.templates.template = new TemplateService.SearchTemplatesTemplatesTemplate(); req.templates.template.ident = new TemplateService.IntegerIdOrName(); req.templates.template.ident.Item = "Insurance Policy Letter"; </p><p> req.pagination = new TemplateService.PaginationControls(); req.pagination.pageNumber = 1; req.pagination.pageSize = 10; </p><p> req.sorting = new TemplateService.SortingControls(); req.sorting.fields = new TemplateService.SortField[1]; req.sorting.fields[0] = new WebServiceTest1.TemplateService.SortField(); </p><p> req.sorting.fields[0].type = TemplateService.SortFieldType.NAME; req.sorting.fields[0].order = TemplateService.SortOrder.ASCENDING; </p><p>TemplateService.SearchTemplatesResponse resp = templateSvc.searchTemplates(req); TemplateService.Template[] templates = resp.templates; </p><p>Use the PaginationControls and SortingControls classes to compose a sorted and paginated template search. The PaginationControls class accepts pageNumber and pageSize values, which control the page size and the result retrieved by the set page snapshot. In the example above, the result set is sorted by template name, and displays the first ten template matches. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 91 Additional features in SOAP </p><p>Searching templates by template metadata </p><p>You can perform a metadata search to retrieve a list of metadata or document classes available in EngageOne Server. This information can be presented to an end-user who can choose which metadata they want to use to perform a more detailed search. To retrieve all metadata from the server: 1. Use the MetadataService, searchMetadata service. 2. Create an instance of the client stub for MetadataService. 3. Invoke the searchMetadata method. </p><p>Java sample </p><p>MetadataServiceStub metadataService = new MetadataServiceStub(URL_BASE + "MetadataService"); SearchMetadata request = new SearchMetadata(); request.setFilter(SearchFilter.DETAIL); </p><p>SearchMetadataResponse response = metadataService.searchMetadata(request); List<DocumentClass> docClasses = response.getDocClasses().getDocClass(); </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 92 Additional features in SOAP </p><p>C# .NET sample </p><p>MetadataService.MetadataServiceClient metadataSvc = new MetadataService.MetadataServiceClient("MetadataServiceSOAP"); </p><p>MetadataService.SearchMetadata req = new WebServiceTest1.MetadataService.SearchMetadata(); req.filter = CommonServices.SearchFilter.DETAIL; </p><p>MetadataService.SearchMetadataResponse resp = metadataSvc.searchMetadata(req); MetadataService.DocumentClass[] classes = resp.docClasses; </p><p>This service returns a list of document class objects. This service introduces some new classes: </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 93 Additional features in SOAP </p><p>Supported metadata field types Currently, EngageOne supports only the following metadata field data types: </p><p>Data type Description </p><p>Text Alphanumeric string </p><p>Date Date </p><p>Number Numeric, integral and floating </p><p>You can perform template searches using metadata. The following example illustrates how to search for all templates that belong to a particular document class, with the "insurance" category. </p><p>Java sample </p><p>TemplateServiceStub templateService = new TemplateServiceStub(URL_BASE + "TemplateService"); SearchTemplates request = new SearchTemplates(); request.setDocClasses(new SearchTemplates.DocClasses()); </p><p>SearchTemplates.DocClasses.DocClass docClass = new SearchTemplates.DocClasses.DocClass(); IntegerIdOrName id = new IntegerIdOrName(); id.setName("SimpleClass"); docClass.setIdent(id); </p><p> docClass.setFields(new SearchTemplates.DocClasses.DocClass.Fields()); </p><p>SearchTemplates.DocClasses.DocClass.Fields.Field field = new SearchTemplates.DocClasses.DocClass.Fields.Field(); id = new IntegerIdOrName(); id.setName("category"); field.setIdent(id); </p><p>MetadataFieldValue value = new MetadataFieldValue(); value.setMetadataString("Insurance"); field.setValue(value); </p><p> docClass.getFields().getField().add(field); request.getDocClasses().setDocClass(docClass); </p><p>SearchTemplatesResponse response = templateService.searchTemplates(request); List<Template> templates = response.getTemplates().getTemplate(); </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 94 Additional features in SOAP </p><p>C# .NET sample </p><p>TemplateService.TemplateServiceClient templateSvc = new TemplateService.TemplateServiceClient("TemplateServiceSOAP"); </p><p>TemplateService.SearchTemplates req = new TemplateService.SearchTemplates(); req.docClasses = new TemplateService.SearchTemplatesDocClasses(); req.docClasses.docClass = new TemplateService.SearchTemplatesDocClassesDocClass(); req.docClasses.docClass.ident = new TemplateService.IntegerIdOrName(); </p><p> req.docClasses.docClass.ident.Item = "Simple Class"; </p><p> req.docClasses.docClass.fields = new TemplateService.SearchTemplatesDocClassesDocClassField[1]; TemplateService.SearchTemplatesDocClassesDocClassField field = new TemplateService.SearchTemplatesDocClassesDocClassField(); field.ident = new TemplateService.IntegerIdOrName(); field.ident.Item = "category"; </p><p> field.value = new WebServiceTest1.TemplateService.MetadataFieldValue(); </p><p> field.value.Item = "Insurance"; req.docClasses.docClass.fields[0] = field; req.filter = CommonServices.SearchFilter.DETAIL; TemplateService.SearchTemplatesResponse resp = templateSvc.searchTemplates(req); TemplateService.Template[] templates = resp.templates; </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 95 Additional features in SOAP </p><p>Write delivery information </p><p>Depending on the document delivery channels set up in EngageOne Administration, you can configure a channel to accept data input via the document instance file. For example, configure Email and Fax delivery channels to accept data input. </p><p>Write delivery information process </p><p>Data inputs are written in the instance file and are identified by a set of valid XPath expressions. By default, EngageOne provides predefined places in the instance file where this data input or delivery information can be written. The following steps illustrate this process: </p><p>Steps 1. In the example below, a template instance file is defined, where the XML nodes relating to the delivery information are highlighted. Each node corresponds to configurable data inputs for Email and Fax delivery channels. </p><p><InteractiveDataModel version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="80dacb9192c44a81937175f8ac7e0ee7.xsd">z </p><p><Publication> <String1>EngageOne System Test String 1</String1> <String2>EngageOne System Test String 2</String2> <Integer1>1</Integer1> <Integer2>2</Integer2> <Number1>1</Number1> <Number2>2</Number2> <Date1>2008-08-29</Date1> <Date2>2008-08-29</Date2> <DeliveryInformation> <Recipient xsi:nil="true"/> <EmailToAddress xsi:nil="true"/> <EmailFromAddress xsi:nil="true"/> <EmailSubject xsi:nil="true"/> <EmailBody xsi:nil="true"/> <FaxNumber xsi:nil="true"/> </DeliveryInformation> <g1private/> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 96 Additional features in SOAP </p><p></Publication> </InteractiveDataModel> </p><p>The application code must parse the instance file and perform reading and writing delivery information using the XPath expression set in EngageOne Administration. Delivery details (including XPath expressions) can be retrieved using the DeliveryManagementService, searchDeliveryOptions method. </p><p>2. Create an instance of the DeliveryManagementService client stub. Then, invoke searchDeliveryOptions. Java sample </p><p>DeliveryManagementServiceStub deliveryMgmtService = new DeliveryManagementServiceStub(URL_BASE + "DeliveryManagementService"); SearchDeliveryOptions request = new SearchDeliveryOptions(); request.setDeliveryOptions(new SearchDeliveryOptions.DeliveryOptions()); request.getDeliveryOptions().setDeliveryOption(new SearchDeliveryOptions.DeliveryOptions.DeliveryOption()); IntegerIdOrName id = new IntegerIdOrName(); id.setId(deliveryOptionId); request.getDeliveryOptions().getDeliveryOption().setIdent(id); SearchDeliveryOptionsResponse response = deliveryMgmtService.searchDeliveryOptions(request); DeliveryOption option = response.getDeliveryOptions().getDeliveryOption().get(0); </p><p>C# .NET </p><p>DeliveryManagementService.DeliveryManagementServiceClient deliveryManagementSvc = new DeliveryManagementService.DeliveryManagementServiceClient("DeliveryManagementServiceSOAP"); </p><p>DeliveryManagementService.SearchDeliveryOptions req = new DeliveryManagementService.SearchDeliveryOptions(); req.deliveryOptions = new DeliveryManagementService.SearchDeliveryOptionsDeliveryOptions(); req.deliveryOptions.deliveryOption = new DeliveryManagementService.SearchDeliveryOptionsDeliveryOptionsDeliveryOption(); </p><p> req.deliveryOptions.deliveryOption.ident = new DeliveryManagementService.IntegerIdOrName(); req.deliveryOptions.deliveryOption.ident.Item = deliveryOptionId; DeliveryManagementService.SearchDeliveryOptionsResponse resp = deliveryManagementSvc.searchDeliveryOptions(req); DeliveryManagementService.DeliveryOption option = resp.deliveryOptions[0]; </p><p>In the sample code above, the Service accepts a delivery option ID. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 97 Additional features in SOAP </p><p>It returns a DeliveryOption object, which holds a list of DeliveryChannels that contain XPath expressions. The XPath expressions parse the instance file to retrieve delivery information. </p><p>3. The Document Server reads delivery information as parameters in the instance file. It is important to set the delivery option as well as the delivery information appropriately, as this information will be used later in the delivery process. Java sample </p><p> for (DeliveryChannel channel : option.getChannels().getChannel()) { if (channel.getType().equals(DeliveryChannelType.EMAIL)) { EmailChannelDetail email = channel.getDetail().getEmailDetail(); } else if (channel.getType().equals(DeliveryChannelType.FAX)) { FaxChannelDetail fax = channel.getDetail().getFaxDetail(); } } </p><p>C# .NET sample </p><p> foreach (DeliveryManagementService.DeliveryChannel channel in option.channels) { switch (channel.type) { case DeliveryManagementService.DeliveryChannelType.EMAIL: </p><p>DeliveryManagementService.EmailChannelDetail email = </p><p>(DeliveryManagementService.EmailChannelDetail)channel.detail.Item; break; case DeliveryManagementService.DeliveryChannelType.FAX: DeliveryManagementService.FaxChannelDetail fax = </p><p>(DeliveryManagementService.FaxChannelDetail)channel.detail.Item; break; } } </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 98 Additional features in SOAP </p><p>Managing the work queue </p><p>Managing user work queues is part of EngageOne workflow. EngageOne workflow handles assigning a work item, or document ownership to a user. </p><p>Retrieving work items </p><p>The WorkItemService, searchWorkItems method retrieves a user's work queue: Java sample </p><p>WorkItemServiceStub workItemService = new WorkItemServiceStub(URL_BASE + "WorkItemService"); SearchWorkItems request = new SearchWorkItems(); request.setWorkItemListType(WorkItemListType.ACTIVE); SearchWorkItemsResponse response = workItemService.searchWorkItems(request); List<WorkItem> workItems = response.getWorkItems().getWorkItem(); </p><p>C# .NET sample </p><p>WorkItemService.WorkItemServiceClient workItemSvc = new WorkItemService.WorkItemServiceClient("WorkItemServiceSOAP"); WorkItemService.SearchWorkItems req = new WorkItemService.SearchWorkItems(); req.workItemListType = WorkItemService.WorkItemListType.ACTIVE; </p><p>WorkItemService.SearchWorkItemsResponse resp = workItemSvc.searchWorkItems(req); WorkItemService.WorkItem[] workItems = resp.workItems; </p><p>In these examples, the service returns a list of active work items associated with the authenticated user. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 99 Additional features in SOAP </p><p>Retrieving work items with pagination </p><p>The searchWorkItems service of WorkItemService can set the pagination of a work item list result set. To enable this feature, create a PaginationControls object, and set the required page number and page size. For example, the following illustrates how to display the second page of a work item list, that contains ten work items per page: Java sample </p><p>WorkItemServiceStub workItemService = new WorkItemServiceStub(URL_BASE + "WorkItemService"); SearchWorkItems request = new SearchWorkItems(); request.setWorkItemListType(WorkItemListType.ACTIVE); </p><p>PaginationControls pagination = new PaginationControls(); pagination.setPageNumber(2); pagination.setPageSize(10); request.setPagination(pagination); </p><p>SearchWorkItemsResponse response = workItemService.searchWorkItems(request); List<WorkItem> workItems = response.getWorkItems().getWorkItem(); </p><p>C# .NET sample </p><p>WorkItemService.WorkItemServiceClient workItemSvc = new WorkItemService.WorkItemServiceClient("WorkItemServiceSOAP"); WorkItemService.SearchWorkItems req = new WorkItemService.SearchWorkItems(); req.workItemListType = WorkItemService.WorkItemListType.ACTIVE; </p><p> req.pagination = new WorkItemService.PaginationControls(); req.pagination.pageNumber = 2; req.pagination.pageSize = 10; </p><p>WorkItemService.SearchWorkItemsResponse resp = workItemSvc.searchWorkItems(req); WorkItemService.WorkItem[] workItems = resp.workItems; </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 100 Additional features in SOAP </p><p>Retrieving work items with sorting </p><p>The searchWorkItems service of WorkItemService can set the sort of a work item list result set. To enable this feature: create a SortControls object, and set the reference column and sorting order in the object's field and order fields. Java sample </p><p>WorkItemServiceStub workItemService = new WorkItemServiceStub(URL_BASE + "WorkItemService"); SearchWorkItems request = new SearchWorkItems(); request.setWorkItemListType(WorkItemListType.ACTIVE); </p><p>SortingControls sorting = new SortingControls(); sorting.setFields(new SortingControls.Fields()); SortField field = new SortField(); field.setType(SortFieldType.STATUS); field.setOrder(SortOrder.ASCENDING); sorting.getFields().getField().add(field); request.setSorting(sorting); </p><p>SearchWorkItemsResponse response = workItemService.searchWorkItems(request); List<WorkItem> workItems = response.getWorkItems().getWorkItem(); </p><p>C# .NET sample </p><p>WorkItemService.WorkItemServiceClient workItemSvc = new WorkItemService.WorkItemServiceClient("WorkItemServiceSOAP"); </p><p>WorkItemService.SearchWorkItems req = new WorkItemService.SearchWorkItems(); req.workItemListType = WorkItemService.WorkItemListType.ACTIVE; </p><p> req.sorting = new WorkItemService.SortingControls(); req.sorting.fields = new WorkItemService.SortField[1]; req.sorting.fields[0].type = WorkItemService.SortFieldType.STATUS; req.sorting.fields[0].order = WorkItemService.SortOrder.ASCENDING; </p><p>WorkItemService.SearchWorkItemsResponse resp = workItemSvc.searchWorkItems(req); WorkItemService.WorkItem[] workItems = resp.workItems; </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 101 Additional features in SOAP </p><p>Updating work items </p><p>This section covers updating work item properties. </p><p>Updating the document delivery option </p><p>Set the request object with the correct token, workItem ID and new deliveryOption ID. Then, invoke the setDeliveryOption service of WorkItemService. Java sample </p><p>WorkItemServiceStub workItemService = new WorkItemServiceStub(URL_BASE + "WorkItemService"); UpdateWorkItem request = new UpdateWorkItem(); request.setWorkItem(new UpdateWorkItem.WorkItem()); request.getWorkItem().setId(workItemId); request.setDeliveryOption(new UpdateWorkItem.DeliveryOption()); IntegerIdOrName id = new IntegerIdOrName(); id.setId(optionId); request.getDeliveryOption().setIdent(id); </p><p>UpdateWorkItemResponse response = workItemService.updateWorkItem(request); </p><p>C# .NET sample </p><p>WorkItemService.WorkItemServiceClient workItemSvc = new WorkItemService.WorkItemServiceClient("WorkItemServiceSOAP"); </p><p>WorkItemService.UpdateWorkItem req = new WorkItemService.UpdateWorkItem(); req.workItem = new WorkItemService.UpdateWorkItemWorkItem(); req.workItem.id = workItemId; req.deliveryOption = new WorkItemService.UpdateWorkItemDeliveryOption(); </p><p> req.deliveryOption.ident = new WorkItemService.IntegerIdOrName(); req.deliveryOption.ident.Item = optionId; </p><p>WorkItemService.UpdateWorkItemResponse resp = workItemSvc.updateWorkItem(req); </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 102 Additional features in SOAP </p><p>Updating work item status </p><p>Update work item status while a document has not completed the workflow process. This applies to the duration of the document life cycle. For example, a document can be created and saved even if required fields have not been filled in. In this case, the work item status would be set to ACTIVE_INCOMPLETE. For example, when a user attempts to update a document and has entered all required fields, the work item status would be set to ACTIVE_COMPLETE. To perform work item status updates invoke updateWorkItemStatus of WorkItemService. Java sample </p><p>WorkItemServiceStub workItemService = new WorkItemServiceStub(URL_BASE + "WorkItemService"); UpdateWorkItemStatus request = new UpdateWorkItemStatus(); request.setWorkItem(new UpdateWorkItemStatus.WorkItem()); request.getWorkItem().setId(workItemId); request.getWorkItem().setStatus(WorkItemStatus.ACTIVE_COMPLETE); </p><p>UpdateWorkItemStatusResponse response = workItemService.updateWorkItemStatus(request); </p><p>C# .NET sample </p><p>WorkItemService.WorkItemServiceClient workItemSvc = new WorkItemService.WorkItemServiceClient("WorkItemServiceSOAP"); </p><p>WorkItemService.UpdateWorkItem req = new WorkItemService.UpdateWorkItem(); req.workItem = new WorkItemService.UpdateWorkItemWorkItem(); req.workItem.id = workItemId; req.workItem.status = status; </p><p>WorkItemService.UpdateWorkItemResponse resp = workItemSvc.updateWorkItem(req); </p><p>Work item status can be set to any of the following: ACTIVE_COMPLETE ACTIVE_INCOMPLETE ASSIGNED FAILED_DELIVERY FINISHED </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 103 Additional features in SOAP </p><p>OPEN PENDING_APPROVAL PENDING_DELIVERY SUBMITTED_APPROVED SUBMITTED_REJECTED SUBMITTED_REVIEW </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 104 Additional features in SOAP </p><p>Updating work item comments </p><p>Work items have an comments field that can be updated every time you invoke a transaction that involves the work item. New comments will be added to the previous list of comments, and will not overwrite the previous set. Work item comments are stored from the work item's creation. Invoke the addWorkItemComment service of WorkItemService to add a comment to a work item. Java sample </p><p>String comment = "Updated document for additional customer information."; // sample user comment WorkItemServiceStub workItemService = new WorkItemServiceStub(URL_BASE + "WorkItemService"); AddWorkItemComment request = new AddWorkItemComment(); request.setWorkItem(new AddWorkItemComment.WorkItem()); request.getWorkItem().setId(workItemId); request.getWorkItem().setComment(comment); </p><p>AddWorkItemCommentResponse response = workItemService.addWorkItemComment(request); </p><p>C# .NET sample </p><p>WorkItemService.WorkItemServiceClient workItemSvc = new WorkItemService.WorkItemServiceClient("WorkItemServiceSOAP"); </p><p>WorkItemService.AddWorkItemComment req = new WorkItemService.AddWorkItemComment(); req.workItem = new WorkItemService.AddWorkItemCommentWorkItem(); req.workItem.id = workItemId; req.workItem.comment = comment; </p><p>WorkItemService.AddWorkItemCommentResponse resp = workItemSvc.addWorkItemComment(req); </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 105 Additional features in SOAP </p><p>Reassigning a work item </p><p>Reassigning a document allows the current document owner to assign a document to another user’s work queue. • In order for a document to be reassigned the receiving user must have access to the document template and its storage location. • Reassigning a document removes it from the current owner's work queue. • Reassigning a document ensures that the document is being worked on by one user at a time. For more information, see the EngageOne Administration Guide. </p><p>Retrieving document assignees </p><p>Use the WorkItemService, getWorkItemAssignees method to retrieve a list of assignees for a document. Java sample </p><p>WorkItemServiceStub workItemService = new WorkItemServiceStub(URL_BASE + "WorkItemService"); GetWorkItemAssignees request = new GetWorkItemAssignees(); request.setWorkItem(new GetWorkItemAssigneesWorkItem()); IntegerIdOrName id = new IntegerIdOrName(); id.setId(workItemId); request.getWorkItem().setIdent(id); </p><p>GetWorkItemAssigneesResponse response = workItemService.getWorkItemAssignees(request); List<User> users = response.getAssignees().getAssignee(); </p><p>C# .NET sample </p><p>WorkItemService.WorkItemServiceClient workItemSvc = new WorkItemService.WorkItemServiceClient("WorkItemServiceSOAP"); </p><p>WorkItemService.GetWorkItemAssignees req = new WorkItemService.GetWorkItemAssignees(); req.workItem = new WorkItemService.GetWorkItemAssignees.WorkItem(); req.workItem.ident = new WorkItemService.IntegerIdOrName(); req.workItem.ident.Item = workItemId; </p><p>WorkItemService.GetWorkItemAssigneesResponse resp = workItemSvc.getWorkItemAssignees(req); WorkItemService.User[] users = resp.assignees; </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 106 Additional features in SOAP </p><p>Note: Currently, the service cannot perform a document access control check for the values it returns. You can expect a response exception if the user does not have access to the document template. </p><p>The service returns a list of User objects which hold the user IDs of document assignees using the user IDs to perform document reassignment. The list can be null, and the application code needs to handle this condition check. </p><p>Reassigning a document </p><p>Use the WorkItemService, reassignWorkItem method to perform document reassignment. Java sample </p><p>WorkItemServiceStub workItemService = new WorkItemServiceStub(URL_BASE + "WorkItemService"); ReassignWorkItem request = new ReassignWorkItem(); request.setWorkItem(new WorkItemMaintRequest.WorkItem()); request.getWorkItem().setId(workItemId); </p><p> request.setAssignee(new ReassignWorkItem.Assignee()); request.getAssignee().setId("csrl"); </p><p>ReassignWorkItemResponse response = workItemService.reassignWorkItem(request); </p><p>C# .NET sample </p><p>WorkItemService.WorkItemServiceClient workItemSvc = new WorkItemService.WorkItemServiceClient("WorkItemServiceSOAP"); </p><p>WorkItemService.ReassignWorkItem req = new WorkItemService.ReassignWorkItem(); req.workItem = new WorkItemService.WorkItemMaintRequestWorkItem(); req.workItem.id = workItemId; </p><p> req.assignee = new WorkItemService.ReassignWorkItemAssignee(); req.assignee.id = "csrl"; </p><p>WorkItemService.ReassignWorkItemResponse resp = workItemSvc.reassignWorkItem(req); </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 107 Additional features in SOAP </p><p>Deleting a work item </p><p>EngageOne allows a document to be deleted in the repository. When a document is deleted, EngageOne Server removes the document files from the repository, and terminates the document processing. This enables deleting the document at any point during the document life cycle. </p><p>Perform a document delete </p><p>Use the WorkItemService, deleteWorkItem method. Java sample </p><p>WorkItemServiceStub workItemService = new WorkItemServiceStub(URL_BASE + "WorkItemService"); </p><p>DeleteWorkItem request = new DeleteWorkItem(); request.setWorkItem(new WorkItemMaintRequest.WorkItem()); request.getWorkItem().setId(workItemId); </p><p>DeleteWorkItemResponse response = workItemService.deleteWorkItem(request); </p><p>C# .NET sample </p><p>WorkItemService.WorkItemServiceClient workItemSvc = new WorkItemService.WorkItemServiceClient("WorkItemServiceSOAP"); </p><p>WorkItemService.DeleteWorkItem req = new WorkItemService.DeleteWorkItem(); req.workItem = new WorkItemService.WorkItemMaintRequestWorkItem(); req.workItem.id = workItemId; </p><p>WorkItemService.DeleteWorkItemResponse resp = workItemSvc.deleteWorkItem(req); </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 108 6 - EngageOne notifications </p><p>EngageOne Notifications is a new capability that enables external systems to be notified of certain events that happen within the EngageOne server. Examples of events include Communications being created, being sent for review and being completed. </p><p>In this section </p><p>Overview 110 Notification components diagram 111 Topics and queues 113 Configuration settings 114 Messages 118 Communication messages 119 Batch messages 121 Workflow messages 122 Consuming notification messages 123 Using other JMS implementations 126 Sample message consumers 128 EngageOne notifications </p><p>Overview </p><p>A full list of notification types is provided below. The Notifications mechanism is based on an implementation of the Java Message Service (JMS) standard. The chosen JMS implementation is Apache ActiveMQ. Detailed information about ActiveMQ can be found at http://activemq.apache.org. Various components within EngageOne write messages to ActiveMQ so that external applications can consume the messages and process them in whatever way they choose. Note: it is possible to use an external JMS-compliant message queue instead of ActviveMQ. </p><p>A common use case for Notifications is as follows: • An external system (for example, a CRM application) triggers the creation of a communication in EngageOne via the EngageOne web service. A unique identifier for the communication is returned to the calling system. A "communication pending" note is added to the customer's record so that users of the CRM application can see that the communication is in progress. • A number of notifications are generated as the communication progresses through its life cycle. The CRM system receives these notifications and discards any that are not relevant. • The CRM system receives a notification that the communication has been completed (delivered), and updates the note on the customer record to indicate that the communication has been sent. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 110 EngageOne notifications </p><p>Notification components diagram </p><p>The following diagram provides an overview of the components involved in notifications. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 111 EngageOne notifications </p><p>Diagram details </p><p>The Message Consumer is a custom component that suits the requirements of a particular implementation. This Programmer's Reference Guide provides information about how to write a message consumer. The JMS Client Library provides a plug-in mechanism to bypass the built-in ActiveMQ implementation to use an external message broker instead. 1. A notification message is generated by a component in one of the EngageOne bundles (Core or Batch bundle). 2. The bundle configuration properties (defined in deploy.properties at installation or re-configuration time) specify how the message is processed. a. The notification.connectionFactory.class property specifies which JMS connection factory class to use. The default connection factory establishes connections to an ActiveMQ queue or topic. Other JMS libraries can be used to send messages to other JMS-compliant queue implementations. For more information, see Using other JMS Implementations. b. The notification.jms.broker.url property specifies the location of the message broker. By default this is the ActiveMQ broker embedded in the Notification Bundle. An external ActiveMQ broker can be specified instead, or a different JMS provider's broker can be specified if a custom JMS connection factory is provided. c. The user ID and encrypted password for accessing the queue are also specified in the bundle configuration. d. Additional properties enable the notification mechanism to be tuned by disabling specific notification types, and by specifying whether messages should be sent to a queue or a topic. 3. The JMS Client Library is responsible for sending a JMS-compliant message to the appropriate queue or topic on the specified broker. 4. The message broker receives the message on one of its queues or topics. Depending on the broker's settings, the message might be persisted to a configured persistence provider. By default KahaDB is used by the built-in ActiveMQ broker. 5. A custom message consumer reads the message from the queue or topic. The consumer examines the message and determines whether to process it or discard it. Processing the message might involve sending it to a line of business system (for example a CRM system) or an Enterprise Service Bus (ESB) or Message Queue from where it will be processed by another system. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 112 EngageOne notifications </p><p>Topics and queues </p><p>JMS has two similar but different mechanisms for delivering messages: • Topic - implements a publisher-subscriber protocol. Each message will be sent to all consumers that are subscribed to that topic at the time that the message is produced. By default topics are not durable, so if a consumer is not active at the time that the message is produced it will not receive the message. • Queue - implements a point to point protocol. Each message will be consumed by a maximum of one consumer. By default queues are durable, meaning that a message will be held for a consumer if the consumer is not active at the time that the message is produced. </p><p>ActiveMQ supports a feature called virtual topics. Virtual Topics combine the flexibility of topics (multiple consumers) with the durability of a queue. When a publisher writes a message to a virtual topic the consumers can choose to read it from a topic or a queue. Virtual topics are described in the ActiveMQ documentation, here: http://activemq.apache.org/virtual-destinations.html. By default EngageOne Notifications uses virtual topics, but it is possible to configure it to use standard queues or topics instead. This can be controlled through settings in deploy.properties, as described in Configuration Settings. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 113 EngageOne notifications </p><p>Configuration settings </p><p>The following settings in deploy.properties can be used to configure the notifications feature at installation time or re-configuration time. </p><p>Property name Default value Purpose </p><p>Properties common to all bundles </p><p> notification.install.dir C:\\Program Files\\Pitney Location of the installed notification bundle. Bowes\\EngageOne Server\\notification </p><p> notification.jvm.settings -Xms1g -Xmx2g JVM settings for the notification bundle - these -XX:MaxPermSize=512m should not normally be changed. </p><p> notification.port 8084 The port on which the ActiveMQ web console and EngageOne health monitor can be accessed. </p><p> notification.services.url https://notification-node.pbeo.net:8084 URL where the ActiveMQ web console is deployed. </p><p> notification.https.enabled false Set this to true to enable https for the Notification bundle. </p><p> notification.tls.key.alias (Empty) Specifies the name of the key if multiple certificates exist in the key store. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 114 EngageOne notifications </p><p>Configuration settings (cont.) </p><p>Property name Default Purpose value </p><p>Properties specific to the notification bundle </p><p> notification.publisher.enabled false Global setting to enable/disable the Notifications feature. Note that Notifications are disabled by default and must be enabled by settings this property to true. </p><p> notification.publisher.username eoPublisher Name of the account used to publish messages to ActiveMQ queues and topics. </p><p> notification.publisher.password (Encrypted Password for the publisher account. It is encrypted password) in the deploy.properties file. </p><p> notification.subscriber.username eoSubscriber Name of the account used to consume messages from ActiveMQ queues and topics. </p><p> notification.subscriber.password (Encrypted Password for the consumer account. It is encrypted password) in the deploy.properties file. </p><p> notification.jms.broker.url (Empty) </p><p>This value must only be specified if the system is using an external message broker instead of the ActiveMQ instance in the Notification bundle. An example broker URL is: tcp://my-jms-broker:61617?jms.useAsyncSend=true Note that "jms.useAsyncSend=true" is recommended for best performance of the publishing mechanism. </p><p> notification.message.timeToLive 0 Time in milliseconds for which messages will be persisted in a queue. Default value of zero means that messages do not expire and will be kept in the queue indefinitely. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 115 EngageOne notifications </p><p>Property name Default Purpose value </p><p> notification.type.communication.omitted.actions (Empty) Comma separated list of Communication actions that will be suppressed. The available action types are: Created, StatusChanged, DeliveryChanged, CommentAdded, Deleted, Completed. </p><p> notification.type.abatch.omitted.actions (Empty) Comma separated list of Accumulated Batch actions that will be suppressed. The available action types are: Started, Completed. </p><p> notification.type.nabatch.omitted.actions (Empty) Comma separated list of Non-accumulated Batch actions that will be suppressed. The available action types are: Started, Completed. </p><p> notification.type.workflowtask.omitted.actions (Empty) Comma separated list of Workflow Task actions that will be suppressed. The available action types are: Created, Assigned, Completed. </p><p> notification.message.destination.type topic By default EngageOne publishes its notifications to a topic. If this property is changed to "queue", EngageOne create and write to queues instead. </p><p> notification.message.destination.baseName VirtualTopic. </p><p>Each type of Notification message (Communication, Batch, Workflow) is written to its own topic or queue. The topic or queue name is a combination of this base name plus the notification type, for example "VirtualTopic.Communication". The default "VitualTopic." prefix instructs ActiveMQ to use virtual topics. VirtualTopics are not a standard JMS capability, so this prefix should be removed when using a JMS implementation other than ActiveMQ. </p><p> notification.connectionFactory.class com.pb.notification.activemq.pool.PooledConnectionFactory </p><p>Name of the class that implements the JMS connection factory. The default implementation uses a pooled connection factory for ActiveMQ. </p><p>ActiveMQ has its own configuration settings file, activemq.xml. See the ActiveMQ documentation for details. It is not normally necessary to change this file because all relevant properties can be configured via deploy.properties. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 116 EngageOne notifications </p><p>Note that activemq.xml will be overwritten if the Notification bundle is reinstalled or upgraded, and any changes to that file will be lost. It is therefore strongly recommended not to modify activemq.xml. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 117 EngageOne notifications </p><p>Messages </p><p>Notification messages are available for the following types of entity in EngageOne: • Communications - also known as Work Items. • Batch - both Accumulated and Non-accumulated batch. • Workflow - task actions. Messages consist of three types of data: • Headers - created by the underlying JMS implementation. The same set of headers exists for all messages. • Properties - application-specific fields that can be used in selections to filter messages received by a consumer. • Content - the message body. The fields available in the body vary by message type. </p><p>Notification message common properties </p><p>All EngageOne notification messages contain the following common properties. </p><p>Name Type Description </p><p> eventType Property Type of event (corresponding to an EngageOne action. Varies by message type). </p><p> communityId Property Community identifier. </p><p> communityName Property Name of the community. </p><p> entityType Property Type of entity that the message relates to (Communication, Batch or Workflow). </p><p> entityId Property Identifier for the entity. Unique within this type of entity. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 118 EngageOne notifications </p><p>Communication messages </p><p>Communication messages have the following additional properties and content fields: </p><p>Name Type Description </p><p> workItemIdentifier Property Also known as the External Identifier. This field is the human-readable identifier for the communication. </p><p> status Property Status number of the Communication at the time the notification was published. </p><p> statusDescription Property Human-readable form of the status. </p><p> templateId Property Identifier of template the communication was based on. </p><p> templateName Content Name of template the communication was based on. </p><p> createdDate Content Time stamp when the communication was created. </p><p> creatorName Content ID of the user who created the communication. </p><p> updatedDate Content Time stamp when the communication was last updated. </p><p> deliveryOptionId Content ID of delivery option associated with the communication. </p><p> ownerName Content ID of user who currently owns the communication. </p><p> batchId Content This field is present for a communication that completes as part of a batch. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 119 EngageOne notifications </p><p>Name Type Description </p><p> deliveryStatus Content Status of a delivery item that has changed. Associated with the DeliveryChanged action. </p><p> deliveryItemId Content ID of a delivery item whose status has changed. Associated with the DeliveryChanged action. </p><p>Communication published actions </p><p>Communication messages are published for the following actions: </p><p>Action Description </p><p>Created A new communication has been created. </p><p>StatusChanged The status of a communication has changed. </p><p>DeliveryChanged The status of a delivery item associated with the communication has changed. </p><p>CommentAdded A comment has been added to the communication. </p><p>Deleted A communication has been deleted. </p><p>Completed A communication has been completed. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 120 EngageOne notifications </p><p>Batch messages </p><p>Notification messages are available for both Accumulated and Non-accumulated batch. </p><p>Accumulated batch messages </p><p>Accumulated batch messages have the following additional properties and content. </p><p>Name Type Description </p><p> status Property Completion status of the batch (SUCCESS or FAILED) </p><p> runType Content Type of batch run (RUN, RESTART, RESUME) </p><p> channelNames Content Comma separated list of delivery channel names used by the batch. </p><p>Accumulated batch messages are published for the following actions: </p><p>Action Description </p><p>Started The batch has started. </p><p>Completed The batch has completed. The status property indicates whether the batch was successful </p><p>Non accumulated batch messages </p><p>Messages for non-accumulated batch notifications have the following additional properties and content fields: </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 121 EngageOne notifications </p><p>Name Type Description </p><p> status Property Completion status of the batch (SUCCESS or FAILED). </p><p> templateId Content ID of the template associated with this batch. </p><p> templateName Content Name of the template associated with the batch. </p><p> deliveryOptionId Content ID of the delivery option associated with the batch. </p><p> deliveryOptionName Content Name of the delivery option associated with the batch. </p><p> channelNames Content Comma separated list of delivery channel names used by the batch. </p><p> naBatchXmlFilePathType Content Location of the batch XML file. </p><p>Non-accumulated batch messages are published for the following actions: </p><p>Action Description </p><p>Started The batch has started. </p><p>Completed The batch has completed. The status property indicates whether the batch was successful </p><p>Workflow messages </p><p>Workflow messages have the following additional properties and content: </p><p>Name Type Description </p><p> status Property Status of the workflow task (UNASSIGNED, ASSIGNED, APPROVED, REJECTED, UNKNOWN). </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 122 EngageOne notifications </p><p>Name Type Description </p><p> externalReferenceIdType Property Type of external reference (ENGAGEONE, PROJECT_ASSET) </p><p> externalReferenceId Property ID of the entity that is referenced by this task. When the externalReferenceIdType is ENGAGEONE, the externalReferenceId is a Communication ID. When the externalReferenceIdType is PROJECT_ASSET, the externalReferenceId is a Designer Template ID. </p><p> assignee Content ID of the user to whom the task is assigned, if any. </p><p> communityId Property Community identifier </p><p>Workflow messages are published for the following actions: </p><p>Action Description </p><p>Created The task has been created. </p><p>Assigned The task has been assigned to a user or unassigned. The assignee field gives the ID of the user. </p><p>Completed The task has been completed. The status property indicates whether the task was approved or rejected. </p><p>Consuming notification messages </p><p>If the deployment environment contains systems that can directly consume messages from an ActiveMQ broker, then no further development work is required. Integration is simply a matter of configuring the external systems to read from the ActiveMQ queues or topics. Where existing software is not available, it is necessary to create a new component to integrate with the queues or topics in ActiveMQ and to consume the Notification messages. This section provides an overview of how to write such a component. The ActiveMQ website and community should be consulted for additional details. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 123 EngageOne notifications </p><p>All JMS implementations have their own specific client libraries. The libraries for one implementation (for example ActiveMQ), will not inter-operate with other implementations such as IBM's WebSpere MQ. The first step to creating a message consumer is therefore to obtain the appropriate libraries for the JMS implementation and for the programming language of the client. This section assumes the default ActiveMQ implementation is used by the Notifications feature and that the message consumer will be written in Java. If the system has been configured to use a different JMS implementation or the client will be written in another language, the steps will be similar but different client libraries will be required. There are many client libraries available for ActiveMQ for different programming languages such as Java, .NET, Node.js and Python. See http://activemq.apache.org/cross-language-clients.html for more information about the available clients and for code samples. A Java client makes use of the following namespaces: • org.apache.activemq.ActiveMQConnectionFactory - ActiveMQ specific classes, required for establishing a connection with a message queue or topic. • javax.jms - JMS classes that can be used with any JMS provider. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 124 EngageOne notifications </p><p>Consume messages from an ActiveMQ queue or topic </p><p>The basic steps to consume messages from an ActiveMQ queue or topic are as follows: </p><p>// Create a connection factory - the factory is specific to a particular JMS implementation (ActiveMQ). // The brokerUrl will be of the form "tcp://servername:port". ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl); // Create a connection and start it. The userName and password are configured at install time. // See notification.subscriber.username and notification.subscriber.password in deploy.properties, but note // that the unencrypted password must be passed into the createConnection call below. connection = connectionFactory.createConnection(userName, password); connection.start(); // Create a session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // Create a destination - either a topic or a queue Destination destination = session.createQueue("Consumer.MyConsumer.VirtualTopic.Communication"); // or Destination destination = session.createTopic("VirtualTopic.Communication"); // Create a consumer and set its message listener. The listener class needs to implement the MessageListener interface. consumer = session.createConsumer(destination); consumer.setMessageListener(myListener); </p><p>To stop receiving messages and close the connection: </p><p>// Close everything consumer.close(); session.close(); connection.close(); </p><p>The MessageListener interface defines a single method, onMessage(Message message). Within that method, the consumer can take any appropriate action to deal with the message. The following example outputs some basic information about a Communication message: </p><p> public void onMessage(Message msg){ try { System.out.println(String.format("%s %s %s", </p><p> msg.getStringProperty("workItemIdentifier"), </p><p> msg.getStringProperty("EventType"), </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 125 EngageOne notifications </p><p> msg.getStringProperty("statusDescription"))); } catch (Exception ex) { System.out.println(ex.getMessage()); } } </p><p>In the code above, examples are provided for creating a queue destination and a topic destination. The EngageOne Notifications mechanism writes messages to virtual topics. Consumers can read these messages from a topic named VirtualTopic.{EntityType}, or a queue named Consumer.{ConsumerName}.VirtualTopic.{EntityType}, where {EntityType} is a Communication, Batch or Workflow (( to be confirmed )) and {ConsumerName} is a unique name for the consuming application. </p><p>Using other JMS implementations </p><p>It is possible to integrate the Notifications mechanism with other message queues. This might be necessary in situations where there is an existing message queue or Enterprise Service Bus in the target environment. Three different approaches can be considered. • If the external message queue or ESB can read from ActiveMQ, then the two systems can work together. Notification messages are written to the internal ActiveMQ. They flow into the external queue from where they are delivered to their ultimate destination. • Use a bridge to join the two queues. This can either be a third party component, or custom code can be written using the techniques outlined in Consuming notification messages on page 123. EngageOne publishes messages to the internal ActiveMQ, and it is the responsibility of the bridge to propagate them to the external queue. • Plug in a different JMS provider, to replace the internal ActiveMQ. See Using a custom JMS connection factory on page 126 for more information. </p><p>Using a custom JMS connection factory </p><p>The notification.connectionFactory.class property in deploy.properties specifies the name of the class that implements the JMS connection factory to be used by the Notifications </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 126 EngageOne notifications </p><p> producer. By default the ActiveMQ connection factory is used, but this can be changed in order to use a different JMS provider such as IBM WebSphere MQ. The class specified by this property must be a custom class that implements the java.jmx.ConnectionFactory interface and also implements an additional constructor that takes a string parameter. The Notifications framework will pass a broker URL into this constructor. The implementation can choose whether or not to make use of this URL. The following code shows an example of a connection factory that enables notifications to be sent to the Amazon Simple Queue Service (SQS). It wraps the SQSConnectionFactory class provided by AWS. </p><p> package com.pb.engageone.sample.aws; import com.amazon.sqs.javamessaging.SQSConnectionFactory; import com.amazonaws.auth.EnvironmentVariableCredentialsProvider; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.JMSException; </p><p> public class MySqsConnectionFactory implements ConnectionFactory { private SQSConnectionFactory sqsConnectionFactory; </p><p> public MySqsConnectionFactory(String brokerURL) { sqsConnectionFactory = SQSConnectionFactory.builder() .withRegion(Region.getRegion(Regions.US_EAST_1)) </p><p>.withAWSCredentialsProvider(new EnvironmentVariableCredentialsProvider()) .build(); } </p><p> public Connection createConnection() throws JMSException { return sqsConnectionFactory.createConnection(); } </p><p> public Connection createConnection(String userName, String password) throws JMSException { return sqsConnectionFactory.createConnection(userName, password); </p><p>} </p><p>} </p><p>The custom connection factory must be packaged as a .jar file and installed on all servers that will run the core or batch bundles. To install the .jar file at the same time as installing a bundle, copy the .jar to the /plugins/notification-connection-factory folder of the unzipped bundle distribution media (core or batch, depending which one is being installed), then install the bundle as per the instructions in the Installation Guide. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 127 EngageOne notifications </p><p>To add or replace a connection factory after the bundle installation, copy the .jar file to the /plugins/notification-connection-factory folder of the installed bundle. When adding or replacing the connection factory in the core bundle, a restart of the core bundle is required. The Notifications mechanism by default sends JMS messages of type “MapMessage”. The body of these messages contains a map that allows individual values to be accessed by name. MapMessage is part of the JMS standard but not all JMS implementations support it. Amazon’s SQS is an example of a JMS implementation that does not support MapMessage. When the Notifications mechanism detects that a JMS does not support MapMessages, it creates TextMessages whose body consists of a set of name/value pairs serialized into JSON. Message consumers need to be certain which type of message is being received, so that they can appropriately handle the content of the body. Messages have a “type” header which can be used to distinguish them. </p><p>Sample message consumers </p><p>Two sample message consumers are provided on the EngageOne installation media, in the samples\notifications folder. These are not intended as production code, but are intended to illustrate some techniques for consuming messages from ActiveMQ. Sample 1 is a simple Java client that listens for notification on a particular topic and outputs a summary to the console. Sample 2 is a more comprehensive application with a graphical user interface. As well as providing a code sample, this application can be used as a diagnostic tool for subscribing to topics and queues, and for examining the details of received messages. This sample is written in .NET (C#) and makes use of the NMS library for ActiveMQ (see https://activemq.apache.org/nms). All the ActiveMQ code is contained in the ActiveMQClient class. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 128 7 - The comparison adapter plug-in </p><p>The comparison adapter plug-in is the interface which allows for customizing the process of comparing preview PDF files generated by EngageOne Designer during the submission of templates and Active Content for review and approval. In addition to the existing optional implementations provided in release distribution media, it is also possible to install and configure a third-party comparison tool with custom plug-in implementation. </p><p>In this section </p><p>The custom plug-in implementation 130 Example implementations 131 Plug-in Installation and configuration 135 The comparison adapter plug-in </p><p>The custom plug-in implementation </p><p>The following java interface is exposed in: <release-distribution>\samples\comparison-adapters\comparison-adapter-api.jar com.pb.viewpoint.comparison.adapters.ComparisonEngineAdapter </p><p> package com.pb.viewpoint.comparison.adapters; import com.pb.viewpoint.comparison.model.ComparisonProfile; import com.pb.viewpoint.comparison.model.Job; import com.pb.viewpoint.comparison.model.JobOutput; import java.util.List; </p><p> public interface ComparisonEngineAdapter { boolean comparisonEngineEnabled(); boolean comparisonEngineAvailable(); List<ComparisonProfile> getComparisonProfiles(); Job startComparison(StartParameters startParameters); Job getJobStatus(Job job); JobOutput getJobOutput(Job job); void terminateJob(Job job); void purgeJob(Job job, JobOutput jobOutput); </p><p>} </p><p>The custom plug-in implementation class must implement this interface and must have a constructor that takes no parameters. A comparison-adapter-api.jar file must be added as a dependency to project developing the custom class. The implementation of the custom class must be written in non- blocking/asynchronous manner to avoid blocking EngageOne Server. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 130 The comparison adapter plug-in </p><p>Example implementations </p><p>DocBridge® Delta </p><p>An example DocBridge Delta implementation is provided in: <release-distribution>/samples/comparison-adapters/docbridge-delta . This implementation uses DocBridge® Delta server native REST API calls, refer to the source code for details. It is important to note that the DocBridge® Delta plug-in sample distributed with the release media simply provides a starting point from which you may need to make configuration changes to enable proper alignment with your operational requirements. </p><p>Simple comparison plug-in </p><p>This implementation requires: 1. get comparison profile names 2. invoke the comparison plug-in and get the PDF containing the results of the comparison. In order to simplify implementation a PdFComparator interface is provided: com.pb.viewpoint.comparison.adapters.simple.PdFComparator </p><p> package com.pb.viewpoint.comparison.adapters.simple; </p><p> import com.pb.viewpoint.comparison.model.JobOutput; import java.io.InputStream; import java.util.List; </p><p> public interface PdFComparator { JobOutput compare(String configurationName, InputStream originalPdfInputStream, InputStream changedPdfInputStream); List<String> getConfigurationNames(); } </p><p>A SimplePdFComparator class example implementation of PdFComparator interface is provided in the distribution media at the following location: </p><p><release-distribution>/samples/comparison-adapters/simple-adapter </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 131 The comparison adapter plug-in </p><p>The SimplePdFComparator implements a pixel-by-pixel page comparison approach, refer to the source code in the release media for details. Comparison-adapter-api.jar also contains implementations, so that the BaseComparisonEngineAdapter base class can be extended. The base class already implements non-blocking behavior and only requires the implementation to access the PdFComparator interface. A good example of this approach is presented below: com.pb.viewpoint.comparison.adapters.simple.SimpleComparisonEngineAdapter </p><p> package com.pb.viewpoint.comparison.adapters.simple; </p><p> import com.pb.viewpoint.comparison.adapters.PdFComparator; import com.pb.viewpoint.comparison.adapters.impl.BaseComparisonEngineAdapter; </p><p> public class SimpleComparisonEngineAdapter extends BaseComparisonEngineAdapter { @Override protected PdFComparator createPdFComparator() { return new SimplePdFComparator(); } } </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 132 The comparison adapter plug-in </p><p>Command line adapter implementation </p><p>A similar approach is used for CommandLineComparisonEngineAdapter implementation: com.pb.viewpoint.comparison.adapters.commandline.CommandLineComparisonEngineAdapter </p><p> package com.pb.viewpoint.comparison.adapters.commandline; </p><p> import com.pb.viewpoint.comparison.adapters.PdFComparator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; </p><p> public class CommandLineComparisonEngineAdapter extends BaseComparisonEngineAdapter { private static final Logger logger = LoggerFactory.getLogger(CommandLineComparisonEngineAdapter.class); public static final String COMMAND_LINE_COMPARISON_ADAPTER_PROFILES_PREFIX = "command.line.comparison.adapter.profiles."; private static final String COMMANDS_FOR_COMPARISON_PLUGIN_NOT_CONFIGURED = "Commands profiles for comparison plugin not configured"; </p><p> public CommandLineComparisonEngineAdapter() { CommandLinePdfComparator commandLinePdfComparator = (CommandLinePdfComparator) pdFComparator; </p><p> getCommandsProfiles().forEach(commandLinePdfComparator::addCommandProfile); </p><p>} </p><p>@Override protected PdFComparator createPdFComparator() { return new CommandLinePdfComparator(); } </p><p> private List<CommandProfile> getCommandsProfiles() { try { CommandProfilesReader profilesReader = new CommandProfilesReader(System.getProperties(), COMMAND_LINE_COMPARISON_ADAPTER_PROFILES_PREFIX); List<CommandProfile> commandProfiles = profilesReader.getCommandProfiles(); if (commandProfiles.size() == 0) { throw new RuntimeException (COMMANDS_FOR_COMPARISON_PLUGIN_NOT_CONFIGURED); } return commandProfiles; } catch (Exception e) { </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 133 The comparison adapter plug-in </p><p> logger.error(e.getMessage()); throw new RuntimeException(e); } } </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 134 The comparison adapter plug-in </p><p>Plug-in Installation and configuration </p><p>Once the custom plug-in implementation has been written you will need to install and configure, as follows: Installation The custom implementation must be packaged as a .jar file and installed on all servers that will run the core bundles. To install the .jar files at the same time as installing a bundle, copy the .jar file along with its transient jars to the: </p><p><release-distribution>\bundles\core\plugins\comparison-engine-adapters\<any folder> </p><p> folder of the unzipped core bundle distribution media, then install the bundle as per the instructions in the Comparison plug-in support section of the Installation Guide. To add or replace a plug-in after the core bundle installation, copy the .jar files to: </p><p><Bundle installation root folder>\core\plugins\comparison-engine-adapters\<any folder> </p><p> folder of the installed core bundle. When adding or replacing the plug-in in the core bundle, a restart of the core bundle is required. Configuration The final configuration requirement is to: 1. set the comparison.adapter.class property in deploy.properties which specifies the name of the class to be used by the comparison process. 2. Run eos groovy script in order to configure core bundle as per the instructions in the Installation Guide: For example, a stand alone server: </p><p> eos.groovy -b core -p deploy.properties -t single configure </p><p>Along with plug-in jars any java *.properties files can be copied to plugin folder. Note that all properties files will be automatically loaded to system properties and can be retrieved calling System.getProperties(). </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 135 8 - Appendix A - Editor methods </p><p>The following is a list of editor methods. </p><p>In this section </p><p>LoadContents 137 SaveContents 137 SpellCheck 138 IsComplete 138 IsModified 139 GetVersion 139 Appendix A - Editor methods </p><p>LoadContents </p><p>LoadContents </p><p>Function Instructs the Interactive Editor to load the document files passed in. </p><p>Syntax VOID LoadContents (PropertiesXmlPath, PublicationPath, HipPath, InstanceXMLPath, InstanceSchemaPath, XFormPath, ReviewModeFlag, SpellCheckMode, ServerUrl, SpellerXmlPath) </p><p>SaveContents </p><p>SaveContents </p><p>Function Allows you to save the current state of a loaded document. The collected data will be streamed from a field into the instance file, at the location passed via InstanceXMLPath. The document content will be saved back to the publication file PublicationPath. The updated Production HIP, HipPath will be saved. </p><p>Syntax VOID SaveContents( VOID ) </p><p>Comments IsComplete() should be called before SaveContents() to ensure all required fields have been completed. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 137 Appendix A - Editor methods </p><p>SpellCheck </p><p>SpellCheck </p><p>Function Instructs the editor to spell check all user editable content. </p><p>Syntax VOID SpellCheck( VOID ) </p><p>IsComplete </p><p>IsComplete </p><p>Function Checks to see if all required fields have been completed. Returns “1” if the document is complete, and “0” if not. </p><p>Syntax BOOL IsComplete( VOID ) </p><p>Comments This method must be called prior to SaveContents to ensure the document is complete. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 138 Appendix A - Editor methods </p><p>IsModified </p><p>IsModified </p><p>Function Note: This method will not tell you if any data fields have been modified. </p><p>Checks to see if any of the document’s editable content has been modified. The editable content is saved in the HIP and PUBX file. If editable content has not been modified these files will not need saving back to the server. Returns “1” if the document is modified, and “0” if not. </p><p>Syntax BOOL IsModified( VOID ) </p><p>Comments This method can be called to add efficiency to your process. It avoids uploading a Publication file and Production HIP file back to the server if no modification has been made. </p><p>GetVersion </p><p>GetVersion </p><p>Function Returns a string containing the current version number of the Interactive Editor. For example, '5.04.6352'. </p><p>Syntax STRING GetVersion( VOID ) </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 139 9 - Appendix B - SOAP API </p><p>This section describes relevant EngageOne Web services that could be utilized for custom application integration. </p><p>In this section </p><p>Identifiers 141 Search filter 142 Promotion service 143 Folder service 164 Data push service 168 Delivery management service 170 Dictionary service 178 Domain service 180 Editor service 182 Keymap service 185 Metadata service 193 Request status update service 196 Security service 198 Template service 204 Workitem service 227 Attachment service 256 Workflow service 268 Delivery service 280 Appendix B - SOAP API </p><p>Identifiers </p><p>Many of the services accept as part of their requests identifiers for various entities in the system. For example, in order to search for templates, the TemplateService's searchTemplates operations take in an optional template identifier. The identifiers as part of the request are of two forms, either an IntegerIdOrName, or a StringIdOrName. Refer to the listing of inputs for each service below to see which operations take which identifier. Most of the entities in the system are uniquely identified by a unique integer value. When searching for those types of entities, you would use the IntegerIdOrName. On the other hand domains are entities which are uniquely identified by a string identifier, so you would need to use a StringIdOrName when searching for those. In either case, all entities can be searched by using the name of the entity. IntegerIdOrName and StringIdOrName are choice constructs which allow the name of an entity to be specified. Please keep in mind that the name of an entity is not necessarily unique in the system and will potentially return more than one entity. The format of the IntegerIdOrName and StringIdOrName elements are as follows: </p><p><template> <ident> <!--You have a CHOICE of the next 2 items at this level--> <com:id>?</com:id> <com:name>?</com:name> </ident> </template> </p><p>The id element is a string for domain entities and an integer otherwise. All service operations that return entities will return the unique identifiers of the entities. This way you can obtain the unique identifiers for use in subsequent calls to the services. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 141 Appendix B - SOAP API </p><p>Search filter </p><p>For most search operations, the request message will include the filter element. The filter can be LIST or DETAIL. </p><p><com:filter>LIST</com:filter> </p><p>If you specify LIST less information will be returned in the response. DETAIL means the response will contain more detailed information. Consult the documentation below for each search operation to see the exact meaning of LIST versus DETAIL. For example, if you want to return a listing of templates, you would use the LIST filter in the request: </p><p><tem:SearchTemplates> <com:filter>LIST</com:filter> </tem:SearchTemplates> </p><p>On the other hand, if you want to retrieve a template with all of the files (returned as attachments) with the response, you would use the DETAIL filter in the request: </p><p><tem:SearchTemplates> <com:filter>DETAIL</com:filter> <templates> <template> <ident> <com:name>Simple Template</com:name> </ident> </template> </templates> </tem:SearchTemplates>File Attachments </p><p>All files sent into a service operation request and returned from a service operation response are transferred as MTOM attachments. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 142 Appendix B - SOAP API </p><p>Promotion service </p><p>WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/PromotionService?wsdl </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 143 Appendix B - SOAP API </p><p> createImportAssetsJob() </p><p>Description this web service creates an import assets job. </p><p>Parameters </p><p>Input:CreateImportAssetsJob </p><p> request type CreateImportAssetsJob - extension of type RequestMessage importItems type ImportItem - minOccurs="1" maxOccurs="unbounded" filePath type string - minOccurs="1" maxOccurs="1" destinationFolder type string - minOccurs="1" maxOccurs="1" priority type boolean - minOccurs="0" maxOccurs="1" </p><p>Output:CreateImportAssetsJobResponse </p><p> response type CreateImportAssetsJobResponse - extension of type ResponseMessage </p><p> importJobInfo type ImportJobInfo - minOccurs="1" maxOccurs="1" id type string - minOccurs="0" maxOccurs="1" group type string - minOccurs="0" maxOccurs="1" type type string - minOccurs="0" maxOccurs="1" status type string - minOccurs="0" maxOccurs="1" overallResult type OverallResult - minOccurs="0" maxOccurs="1" startTime type string - minOccurs="0" maxOccurs="1" endTime type string - minOccurs="0" maxOccurs="1" totalAssetsCount type int - minOccurs="0" maxOccurs="1" inProgressAssetsCount type int - minOccurs="0" maxOccurs="1" completedAssetsCount type int - minOccurs="0" maxOccurs="1" completedWithWarningsAssetsCount type int - minOccurs="0" maxOccurs="1" failedAssetsCount type int - minOccurs="0" maxOccurs="1" waitingAssetsCount type int - minOccurs="0" maxOccurs="1" </p><p> assetsResults type ImportAssetResult- minOccurs="0" maxOccurs="unbounded" type type string - minOccurs="0" maxOccurs="1" asset type Asset - minOccurs="0" maxOccurs="1" name type string - minOccurs="0" maxOccurs="1" sourceResourceId type string - minOccurs="0" maxOccurs="1" relativePathFromDescriptor type string - minOccurs="0" maxOccurs="1" rootPath type string - minOccurs="0" maxOccurs="1" </p><p> result type ImportJobResult - minOccurs="0" maxOccurs="1" status type string - minOccurs="0" maxOccurs="1" startTime type string - minOccurs="0" maxOccurs="1" warnings type string - minOccurs="0" maxOccurs="unbounded" failMessage type string - minOccurs="0" maxOccurs="1" stackTrace type string - minOccurs="0" maxOccurs="1" resourceIds type int - minOccures="0" maxOccurs="unbounded" </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 144 Appendix B - SOAP API </p><p>Fault: PromotionFault - fault type ServiceFault </p><p>Sample request (Open Import) </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prom="http://pb.com/EngageOne/ws/promotion" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <prom:CreateImportAssetsJob> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>user3</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> <importItems> <filePath>D:\project\promotion\preview\folder1 \One.zip</filePath> <destinationFolder>/folder1</destinationFolder> </importItems> <importItems> <mod:filePath>D:\project\promotion\preview\folder2 \PublishableActiveContent.zip</mod:filePath> <mod:destinationFolder>/folder2</mod:destinationFolder> </importItems> <priority>true</priority> </prom:CreateImportAssetsJob> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 145 Appendix B - SOAP API </p><p>Sample request (Promotion Bundle) </p><p><soapenv: Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prom="http://pb.com/EngageOne/ws/promotion" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <prom:CreateImportAssetsJob> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>user3</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> <importItems> <mod:filePath>D:\project\promotion\preview\folder2 \promotion-2018-02-08_08_49_23_758-7291 \assets-descriptor.json</mod:filePath> <mod:destinationFolder>/folder2</mod:destinationFolder> </importItems> <priority>true</priority> </prom:CreateImportAssetsJob> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV: Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <ns3:CreateImportAssetsJobResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/promotion" xmlns:ns4="http://pb.com/EngageOne/ws/model"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>0e273a8b-321d-4b6d-975a-60357c8aeb50</token> </SessionToken> </authContext> <importJobInfo> <ns4:id>2017-03-31_13_49_59.83-import</ns4:id> <ns4:group>import</ns4:group> <ns4:type>import</ns4:type> <ns4:status>waiting</ns4:status> </importJobInfo> </ns3:CreateImportAssetsJobResponse> </soap:Body> </soap:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 146 Appendix B - SOAP API </p><p> getImportAssetsJob() </p><p>Description This Web service gets an import assets job. </p><p>Parameters </p><p>Input:GetImportAssetsJob </p><p> request type GetImportAssetsJob - extension of type RequestMessage </p><p>• jobId type string - minOccurs="1" maxOccurs="1" </p><p>Output:GetImportAssetsJobResponse </p><p> response type GetImportAssetsJobResponse - extension of type ResponseMessage </p><p> importJobInfo type ImportJobInfo - minOccurs="1" maxOccurs="1" id type string - minOccurs="0" maxOccurs="1" group type string - minOccurs="0" maxOccurs="1" type type string - minOccurs="0" maxOccurs="1" status type string - minOccurs="0" maxOccurs="1" overallResult type OverallResult - minOccurs="0" maxOccurs="1" startTime type string - minOccurs="0" maxOccurs="1" endTime type string - minOccurs="0" maxOccurs="1" totalAssetsCount type int - minOccurs="0" maxOccurs="1" inProgressAssetsCount type int - minOccurs="0" maxOccurs="1" completedAssetsCount type int - minOccurs="0" maxOccurs="1" completedWithWarningsAssetsCount type int - minOccurs="0" maxOccurs="1" failedAssetsCount type int - minOccurs="0" maxOccurs="1" waitingAssetsCount type int - minOccurs="0" maxOccurs="1" </p><p> assetsResults type ImportAssetResult- minOccurs="0" maxOccurs="unbounded" type type string - minOccurs="0" maxOccurs="1" asset type Asset - minOccurs="0" maxOccurs="1" name type string - minOccurs="0" maxOccurs="1" sourceResourceId type string - minOccurs="0" maxOccurs="1" relativePathFromDescriptor type string - minOccurs="0" maxOccurs="1" rootPath type string - minOccurs="0" maxOccurs="1" </p><p> result type ImportJobResult - minOccurs="0" maxOccurs="1" status type string - minOccurs="0" maxOccurs="1" startTime type string - minOccurs="0" maxOccurs="1" endTime type string - minOccurs="0" maxOccurs="1" warnings type string - minOccurs="0" maxOccurs="unbounded" failMessage type string - minOccurs="0" maxOccurs="1" stackTrace type string - minOccurs="0" maxOccurs="1" resourceIds type int - minOccures="0" maxOccurs="unbounded" </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 147 Appendix B - SOAP API </p><p>Fault: PromotionFault fault type ServiceFault </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prom="http://pb.com/EngageOne/ws/promotion" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <prom:GetImportAssetsJob> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>user1</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> <jobId>2017-03-31_12_16_45.372-import</jobId> </prom:GetImportAssetsJob> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 148 Appendix B - SOAP API </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <ns3:GetImportAssetsJobResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/promotion" xmlns:ns4="http://pb.com/EngageOne/ws/model"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>252feaad-71ef-434e-b50e-b5861e1b3bb7</token> </SessionToken> </authContext> <importJobInfo> <ns4:id>2017-03-31_12_16_45.372-import</ns4:id> <ns4:group>import</ns4:group> <ns4:type>import</ns4:type> <ns4:status>complete</ns4:status> <ns4:overallResult> <ns4:startTime>2017-03-31 12:17:00.357</ns4:startTime> <ns4:endTime>2017-03-31 12:17:16.205</ns4:endTime> <ns4:totalAssetsCount>1</ns4:totalAssetsCount> <ns4:inProgressAssetsCount>0</ns4:inProgressAssetsCount> <ns4:completedAssetsCount>1</ns4:completedAssetsCount> <ns4:completedWithWarningsAssetsCount>0 </ns4:completedWithWarningsAssetsCount> <ns4:failedAssetsCount>0</ns4:failedAssetsCount> <ns4:waitingAssetsCount>0</ns4:waitingAssetsCount> </ns4:overallResult> <ns4:assetsResults> <ns4:type>import</ns4:type> <ns4:asset> <ns4:name>One</ns4:name> <ns4:relativePathFromDescriptor> MyTemplate.zip </ns4:relativePathFromDescriptor> <ns4:rootPath>D:\Templates</ns4:rootPath> </ns4:asset> <ns4:result> <ns4:status>complete</ns4:status> <ns4:startTime>2017-03-31 12:17:00.357</ns4:startTime> <ns4:endTime>2017-03-31 12:17:16.205</ns4:endTime> <ns2:resourceIds>47730</ns2:resourceIds> </ns4:result> </ns4:assetsResults> </importJobInfo> </ns3:GetImportAssetsJobResponse> </soap:Body> </soap:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 149 Appendix B - SOAP API </p><p> createExportAssetsJob() </p><p>Description this Web Service operation is used to create an export assets job. </p><p>Parameters </p><p>Input: </p><p>CreateExportAssetsJob request type CreateExportAssetsJob - extension of type RequestMessage </p><p> exportItems type ExportItem - minOccurs="1" maxOccurs="unbounded" id type int - minOccurs="1" maxOccurs="1" assetLogicalPath type string - minOccurs="1" maxOccurs="1" type type AssetType type- string with restriction enum {'FOLDER', 'TEMPLATE', 'AC', 'DOCUMENT_CLASS', 'DEVICE', 'DELIVERY_OPTION'} minOccurs="1" maxOccurs="1" options type ExportOption - minOccurs="0" maxOccurs="unbounded" </p><p> name string - with restriction enum {'includeSubFolders', 'deliveryOptionImportStrategy'} minOccurs="1" maxOccurs="1" value type string - minOccurs="1" maxOccurs="1" </p><p> option related to 'FOLDER' asset type: includeSubFolders: 'true' | 'false' </p><p> option related to DELIVERY_OPTION asset type: deliveryOptionImportStrategy: 'OMIT_IF_ANY_CONFLICT' | 'MERGE_NEW_CHANNELS' | 'OVERWRITE_EVERYTHING' </p><p> exportDirectory type string - minOccurs="1" maxOccurs="1" </p><p>Comment: use id or assetLogicalPath parameter alternatively in the request. </p><p>Output: </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 150 Appendix B - SOAP API </p><p>CreateExportAssetsJobResponse response type CreateExportAssetsJobResponse - extension of type ResponseMessage </p><p> exportJobInfo type ExportJobInfo - minOccurs="1" maxOccurs="1" id type string - minOccurs="0" maxOccurs="1" group type string - minOccurs="0" maxOccurs="1" type type string - minOccurs="0" maxOccurs="1" status type string - minOccurs="0" maxOccurs="1" overallResult type OverallResult - minOccurs="0" maxOccurs="1" startTime type string - minOccurs="0" maxOccurs="1" endTime type string - minOccurs="0" maxOccurs="1" totalAssetsCount type int - minOccurs="0" maxOccurs="1" inProgressAssetsCount type int - minOccurs="0" maxOccurs="1" completedAssetsCount type int - minOccurs="0" maxOccurs="1" completedWithWarningsAssetsCount type int - minOccurs="0" maxOccurs="1" failedAssetsCount type int - minOccurs="0" maxOccurs="1" waitingAssetsCount type int - minOccurs="0" maxOccurs="1" </p><p> assetsResults type ExportAssetResult- minOccurs="0" maxOccurs="unbounded" type type string - minOccurs="0" maxOccurs="1" asset type Asset - minOccurs="0" maxOccurs="1" name type string - minOccurs="0" maxOccurs="1" sourceResourceId type string - minOccurs="0" maxOccurs="1" relativePathFromDescriptor type string - minOccurs="0" maxOccurs="1" rootPath type string - minOccurs="0" maxOccurs="1" </p><p> result type ExportJobResult - minOccurs="0" maxOccurs="1" status type string - minOccurs="0" maxOccurs="1" startTime type string - minOccurs="0" maxOccurs="1" endTime type string - minOccurs="0" maxOccurs="1" warnings type string - minOccurs="0" maxOccurs="unbounded" failMessage type string - minOccurs="0" maxOccurs="1" stackTrace type string - minOccurs="0" maxOccurs="1" </p><p>Fault: PromotionFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 151 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prom="http://pb.com/EngageOne/ws/promotion" xmlns:com="http://pb.com/EngageOne/ws/common" xmlns:mod="http://pb.com/EngageOne/ws/model"> <soapenv:Header/> <soapenv:Body> <prom:CreateExportAssetsJob> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>user1</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> <exportItems> <mod:assetLogicalPath>/folder1</mod:assetLogicalPath> <mod:type>FOLDER</mod:type> <mod:options> <mod:name>includeSubFolders</mod:name> <mod:value>true</mod:value> </mod:options> </exportItems> <exportItems> <mod:assetLogicalPath>myDeliveryOption</mod:assetLogicalPath> <mod:type>DELIVERY_OPTION</mod:type> <mod:options> <mod:name>deliveryOptionImportStrategy</mod:name> <mod:value>OVERWRITE_EVERYTHING</mod:value> </mod:options> </exportItems> <exportDirectory>d:/MyAssets/export</exportDirectory> </prom:CreateExportAssetsJob> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <ns3:CreateExportAssetsJobResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/promotion" xmlns:ns4="http://pb.com/EngageOne/ws/model"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>1001fb8e-183d-405b-b420-7276fb82bee5</token> </SessionToken> </authContext> <exportJobInfo> <ns4:id>2017-04-07_11_46_16.456-export</ns4:id> <ns4:group>community1/export/0</ns4:group> <ns4:type>export</ns4:type> <ns4:status>waiting</ns4:status> </exportJobInfo> </ns3:CreateExportAssetsJobResponse> </soap:Body> </soap:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 152 Appendix B - SOAP API </p><p> getExportAssetsJob() </p><p>Description this Web service gets an export assets job. </p><p>Parameters </p><p>Input GetExportAssetsJob request type GetExportAssetsJob - extension of type RequestMessage </p><p>• jobId type string - minOccurs="1" maxOccurs="1" </p><p>Output: </p><p>GetExportAssetsJobResponse response type GetExportAssetsJobResponse - extension of type ResponseMessage </p><p> exportJobInfo type ExportJobInfo - minOccurs="1" maxOccurs="1" id type string - minOccurs="0" maxOccurs="1" group type string - minOccurs="0" maxOccurs="1" type type string - minOccurs="0" maxOccurs="1" status type string - minOccurs="0" maxOccurs="1" overallResult type OverallResult - minOccurs="0" maxOccurs="1" startTime type string - minOccurs="0" maxOccurs="1" endTime type string - minOccurs="0" maxOccurs="1" totalAssetsCount type int - minOccurs="0" maxOccurs="1" inProgressAssetsCount type int - minOccurs="0" maxOccurs="1" completedAssetsCount type int - minOccurs="0" maxOccurs="1" completedWithWarningsAssetsCount type int - minOccurs="0" maxOccurs="1" failedAssetsCount type int - minOccurs="0" maxOccurs="1" waitingAssetsCount type int - minOccurs="0" maxOccurs="1" </p><p> assetsResults type ExportAssetResult- minOccurs="0" maxOccurs="unbounded" type type string - minOccurs="0" maxOccurs="1" asset type Asset - minOccurs="0" maxOccurs="1" name type string - minOccurs="0" maxOccurs="1" sourceResourceId type string - minOccurs="0" maxOccurs="1" relativePathFromDescriptor type string - minOccurs="0" maxOccurs="1" rootPath type string - minOccurs="0" maxOccurs="1" </p><p> result type ExportJobResult - minOccurs="0" maxOccurs="1" status type string - minOccurs="0" maxOccurs="1" startTime type string - minOccurs="0" maxOccurs="1" endTime type string - minOccurs="0" maxOccurs="1" warnings type string - minOccurs="0" maxOccurs="unbounded" failMessage type string - minOccurs="0" maxOccurs="1" stackTrace type string - minOccurs="0" maxOccurs="1" </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 153 Appendix B - SOAP API </p><p>Fault: PromotionFault fault type ServiceFault </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prom="http://pb.com/EngageOne/ws/promotion" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <prom:GetExportAssetsJob> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>user1</com:userId> <com:password>Pmypassword</com:password> </com:UsernameToken> </com:authContext> </p><p><jobId>2017-04-07_11_46_16.456-export</jobId> </prom:GetExportAssetsJob> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 154 Appendix B - SOAP API </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <ns3:GetExportAssetsJobResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/promotion" xmlns:ns4="http://pb.com/EngageOne/ws/model"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>501a02fe-a29e-474b-8130-dc1549caa48c</token> </SessionToken> </authContext> <exportJobInfo> <ns4:id>2017-04-07_11_46_16.456-export</ns4:id> <ns4:group>community1/export/0</ns4:group> <ns4:type>export</ns4:type> <ns4:status>completed</ns4:status> <ns4:overallResult> <ns4:startTime>2017-04-07 11:46:30.9</ns4:startTime> <ns4:endTime>2017-04-07 11:46:33.93</ns4:endTime> <ns4:totalAssetsCount>1</ns4:totalAssetsCount> <ns4:inProgressAssetsCount>0</ns4:inProgressAssetsCount> <ns4:completedAssetsCount>1</ns4:completedAssetsCount> <ns4:completedWithWarningsAssetsCount>0 </ns4:completedWithWarningsAssetsCount> <ns4:failedAssetsCount>0</ns4:failedAssetsCount> <ns4:waitingAssetsCount>0</ns4:waitingAssetsCount> </ns4:overallResult> <ns4:assetsResults> <ns4:type>export</ns4:type> <ns4:asset> <ns4:name>One</ns4:name> <ns4:sourceResourceId>115</ns4:sourceResourceId> <ns4:relativePathFromDescriptor>assets/asset-0001.zip </ns4:relativePathFromDescriptor> <ns4:rootPath>d:\MyAssets\export\promotion-2017-04-07_11_46_16_205-9465 </p><p></ns4:rootPath> </ns4:asset> <ns4:result> <ns4:status>COMPLETED</ns4:status> <ns4:startTime>2017-04-07 11:46:30.9</ns4:startTime> <ns4:endTime>2017-04-07 11:46:33.93</ns4:endTime> </ns4:result> </ns4:assetsResults> </exportJobInfo> </ns3:GetExportAssetsJobResponse> </soap:Body> </soap:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 155 Appendix B - SOAP API </p><p> getImportPreview() </p><p>Description this web Service operation is used to get a preview of the import. </p><p>Parameters </p><p>Input </p><p>GetImportPreview request type GetImportPreview - extension of type RequestMessage </p><p> path type string - minOccurs="1" maxOccurs="1" mode type ImportPreviewMode - type string with restriction - enum {'PROMOTION', 'ZIPS', 'PARSED_ZIPS'} - minOccurs="1" maxOccurs="1" openImportRegularExpressionFilter type string - minOccurs="0" maxOccurs="1" </p><p>Output </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 156 Appendix B - SOAP API </p><p>GetImportPreviewResponse response type GetImportPreviewResponse - extension of type ResponseMessage </p><p> importItems type ImportItem - minOccurs="0" maxOccurs="unbounded" </p><p> filePath type string - minOccurs="1" maxOccurs="1" destinationFolder type string - minOccurs="1" maxOccurs="1" </p><p> previewRoot type ImportPreviewFolder - minOccurs="1" maxOccurs="1" type type AssetType - type string with restriction - enum {'FOLDER', 'TEMPLATE', 'AC', 'UNKNOWN'} - minOccurs="1" maxOccurs="1" name type string - minOccurs="1" maxOccurs="1" comments type string - minOccurs="0" maxOccurs="unbounded" path type string - minOccurs="1" maxOccurs="1" </p><p> assets type ImportPreviewAsset - minOccurs="0" maxOccurs="unbounded" type type AssetType - type string with restriction - enum {'FOLDER', 'TEMPLATE', 'AC', 'UNKNOWN'} - minOccurs="1" maxOccurs="1" name type string - minOccurs="1" maxOccurs="1" comments type string - minOccurs="4" maxOccurs="unbounded" path type string - minOccurs="1" maxOccurs="1" fileName type string - minOccurs="1" maxOccurs="1" eoVersion type string - minOccurs="1" maxOccurs="1" </p><p> subFolders type ImportPreviewFolder - minOccurs="0" maxOccurs="unbounded" </p><p> globalAssets type ImportPreviewGlobalAsset - minOccurs="0" maxOccurs="unbounded" type type AssetType - type string with restriction - enum {'AC','DOCUMENT_CLASS'} - minOccurs="1" maxOccurs="1" name type string - minOccurs="1" maxOccurs="1" comments type string - minOccurs="0" maxOccurs="unbounded" fileName type string - minOccurs="1" maxOccurs="1" </p><p> totalAssetsCount type int - minOccurs="1" maxOccurs="1" </p><p>Fault: PromotionFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 157 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prom="http://pb.com/EngageOne/ws/promotion" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <prom:GetImportPreview> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>user1</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> </p><p><path>D:/project/promotion/preview</path> <mode>PARSED_ZIPS</mode> </p><p></prom:GetImportPreview> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 158 Appendix B - SOAP API </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <ns3:GetImportPreviewResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/promotion" xmlns:ns4="http://pb.com/EngageOne/ws/model"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>affff535-b301-4d69-bd61-75c3df400246</token> </SessionToken> </authContext> <importItems> <ns4:filePath>D:\project\promotion\preview\folder1\One.zip </ns4:filePath> <ns4:destinationFolder>/folder1</ns4:destinationFolder> </importItems> <importItems> <ns4:filePath>D:\project\promotion\preview\folder2 \PublishableActiveContent.zip</ns4:filePath> <ns4:destinationFolder>/folder2</ns4:destinationFolder> </importItems> <importItems> <ns4:filePath>D:\project\promotion\preview\folder3 \ac_folder\folder4\One.zip</ns4:filePath> <ns4:destinationFolder>/folder3/ac_folder /folder4</ns4:destinationFolder> </importItems> <importItems> <ns4:filePath>D:\project\promotion\preview\folder3 \ac_folder\PublishableActiveContent.zip</ns4:filePath> <ns4:destinationFolder>/folder3/ac_folder</ns4:destinationFolder> </importItems> <importItems> <ns4:filePath>D:\project\promotion\preview\folder3 \One.zip</ns4:filePath> <ns4:destinationFolder>/folder3</ns4:destinationFolder> </importItems> <importItems> <ns4:filePath>D:\project\promotion\preview\One.zip</ns4:filePath> <ns4:destinationFolder>/</ns4:destinationFolder> </importItems> <previewRoot> <ns4:type>TEMPLATE</ns4:type> <ns4:name>root</ns4:name> <ns4:path>/</ns4:path> <ns4:assets> <ns4:type>TEMPLATE</ns4:type> <ns4:name>One</ns4:name> <ns4:path>/One</ns4:path> <ns4:fileName>D:\project\promotion\preview\One.zip</ns4:fileName> </ns4:assets> <ns4:subFolders> <ns4:type>TEMPLATE</ns4:type> <ns4:name>folder1</ns4:name> <ns4:path>/folder1</ns4:path> <ns4:assets> <ns4:type>TEMPLATE</ns4:type> <ns4:name>One</ns4:name> <ns4:path>/folder1/One</ns4:path> <ns4:fileName>D:\project\promotion\preview\folder1 \One.zip</ns4:fileName> </ns4:assets> </ns4:subFolders> <ns4:subFolders> <ns4:type>AC</ns4:type> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 159 Appendix B - SOAP API </p><p><ns4:name>folder2</ns4:name> <ns4:path>/folder2</ns4:path> <ns4:assets> <ns4:type>AC</ns4:type> <ns4:name>Publishable Active Content</ns4:name> <ns4:path>/folder2/Publishable Active Content</ns4:path> <ns4:fileName>D:\project\promotion\preview\folder2 \PublishableActiveContent.zip</ns4:fileName> </ns4:assets> </ns4:subFolders> <ns4:subFolders> <ns4:type>TEMPLATE</ns4:type> <ns4:name>folder3</ns4:name> <ns4:path>/folder3</ns4:path> <ns4:assets> <ns4:type>TEMPLATE</ns4:type> <ns4:name>One</ns4:name> <ns4:path>/folder3/One</ns4:path> <ns4:fileName>D:\project\promotion\preview\folder3 \One.zip</ns4:fileName> </ns4:assets> <ns4:subFolders> <ns4:type>AC</ns4:type> <ns4:name>ac_folder</ns4:name> <ns4:path>/folder3/ac_folder</ns4:path> <ns4:assets> <ns4:type>AC</ns4:type> <ns4:name>Publishable Active Content</ns4:name> <ns4:path>/folder3/ac_folder/Publishable Active Content</ns4:path> <ns4:fileName>D:\project\promotion\preview\folder3 </p><p>\ac_folder\PublishableActiveContent.zip</ns4:fileName> </ns4:assets> <ns4:subFolders> <ns4:type>TEMPLATE</ns4:type> <ns4:name>folder4</ns4:name> <ns4:path>/folder3/ac_folder/folder4</ns4:path> <ns4:assets> <ns4:type>TEMPLATE</ns4:type> <ns4:name>One</ns4:name> <ns4:path>/folder3/ac_folder/folder4/One</ns4:path> <ns4:fileName>D:\project\promotion\preview\folder3 \ac_folder\folder4\One.zip</ns4:fileName> </p><p></ns4:assets> </ns4:subFolders> </ns4:subFolders> </ns4:subFolders> </previewRoot> <totalAssetsCount>8</totalAssetsCount> </ns3:GetImportPreviewResponse> </soap:Body> </soap:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 160 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prom="http://pb.com/EngageOne/ws/promotion" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <prom:GetImportPreview> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community2</com:name> </com:ident> </com:domain> <com:userId>user2</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> </p><p><path>D:/project/promotion/promotion-2017-09-11_14_05_22_734-6401/assets-descriptor.json</path> </p><p><mode>PROMOTION</mode> </prom:GetImportPreview> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <ns4:GetImportPreviewResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/promotion"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>d046d82b-c954-42b4-aca7-cd0a6455ee0e</token> </SessionToken> </authContext> <importItems> <ns2:filePath>D:/project/promotion/promotion-2017-09-11_14_05_22_734-6401 </p><p>/assets-descriptor.json</ns2:filePath> </importItems> <previewRoot> <ns2:type>TEMPLATE</ns2:type> <ns2:name>root</ns2:name> <ns2:path>/</ns2:path> <ns2:assets> <ns2:type>TEMPLATE</ns2:type> <ns2:name>Template1</ns2:name> <ns2:path>/Template1</ns2:path> <ns2:fileName>template1.zip</ns2:fileName> <ns2:eoVersion>1.0</ns2:eoVersion> </ns2:assets> </previewRoot> <globalAssets> <ns2:type>DOCUMENT_CLASS</ns2:type> <ns2:name>myDocumentClass</ns2:name> <ns2:fileName>documentClass1.json</ns2:fileName> </globalAssets> <totalAssetsCount>2</totalAssetsCount> </ns4:GetImportPreviewResponse> </soap:Body> </soap:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 161 Appendix B - SOAP API </p><p> getAssetDependencies() </p><p>Description this Web Service operation retrieves export assets dependencies </p><p>Parameters </p><p>Input </p><p>GetAssetDependencies request type GetAssetDependencies - extension of type RequestMessage </p><p> exportItems type ExportItem - minOccurs="1" maxOccurs="unbounded" id type int - minOccurs="1" maxOccurs="1" assetLogicalPath type string - minOccurs="1" maxOccurs="1" type type AssetType - type string with restriction - enum {'FOLDER', 'TEMPLATE', 'AC', 'DOCUMENT_CLASS', 'DEVICE', 'DELIVERY_OPTION'} - minOccurs="1" maxOccurs="1" options type ExportOption - minOccurs="0" maxOccurs="unbounded" see CreateExportAssetsJob() operation for ExportOption definition </p><p>Comment: use id OR assetLogicalPath parameter in request. </p><p>Output </p><p>GetAssetDependenciesResponse response type GetAssetDependenciesResponse - extension of type ResponseMessage </p><p> exportItems type ExportItem - minOccurs="0" maxOccurs="unbounded" </p><p> id type int - minOccurs="1" maxOccurs="1" assetLogicalPath type string - minOccurs="1" maxOccurs="1" type type AssetType - type string with restriction - enum {'AC', 'DOCUMENT_CLASS'} - minOccurs="1" maxOccurs="1" options type ExportOption - minOccurs="0" maxOccurs="1" </p><p>Fault: PromotionFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 162 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope[ </p><p> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"|http://schemas.xmlsoap.org/soap/envelope/] </p><p> xmlns:prom="http://pb.com/EngageOne/ws/promotion" </p><p> xmlns:com="http://pb.com/EngageOne/ws/common"xmlns:mod="http://pb.com/EngageOne/ws/model"> </p><p><soapenv:Header/> <soapenv:Body> <prom:GetAssetDependencies> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>user1</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> <exportItems> <mod:assetLogicalPath>/</mod:assetLogicalPath> <mod:type>FOLDER</mod:type> <mod:options> <mod:name>includeSubFolders</mod:name> <mod:value>true</mod:value> </mod:options> </exportItems> <exportDirectory>d:/MyAssets/export</exportDirectory> </prom:GetAssetDependencies> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><soap:Envelope[ </p><p> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">|http://schemas.xmlsoap.org/soap/envelope/] </p><p><SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <ns4:GetAssetDependenciesResponse[ xmlns:ns2="http://pb.com/EngageOne/ws/model"|http://pb.com/EngageOne/ws/model] </p><p> xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/promotion"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>86d472c5-fc85-4552-8ed4-a979f9778c6a</token> </SessionToken> </authContext> <exportItems> <ns2:id>357</ns2:id> <ns2:assetLogicalPath>myDocumetClass</ns2:assetLogicalPath> <ns2:type>DOCUMENT_CLASS</ns2:type> </exportItems> </ns4:GetAssetDependenciesResponse> </soap:Body> </soap:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 163 Appendix B - SOAP API </p><p>Folder service </p><p>WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/FolderService?wsdl </p><p> listFolderContents() </p><p>Description This Web Service operation is used to list folder contents. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 164 Appendix B - SOAP API </p><p>Parameters Input ListFolderContents request type ListFolderContents - extension of type RequestMessage path type string - minOccurs="1" maxOccurs="1" filter type ListFolderContentsFilter - minOccurs="0" maxOccurs="unbounded" ListFolderContentsFilter - type string enum, values: FOLDER, TEMPLATE,NON-INTERACTIVE-FOLDER, NON-INTERACTIVE-TEMPLATE,ACTIVE-CONTENT-FOLDER, ACTIVE-CONTENT,VERSION mode type ListFolderContentsMode - minOccurs="1" maxOccurs="1" default="POPULATED" ListFolderContentsMode - type string enum, values: POPULATED, ALL Output ListFolderContentsResponse response type ListFolderContentsResponse - extension of type ResponseMessage folderContent type FolderContent - minOccurs="1" maxOccurs="1" id type int - minOccurs="1" maxOccurs="1" name type string - minOccurs="1" maxOccurs="1" folders type Folder - minOccurs="0" maxOccurs="unbounded" id type int - minOccurs="1" maxOccurs="1" name type string - minOccurs="1" maxOccurs="1" description type string - minOccurs="1" maxOccurs="1" type type string - minOccurs="1" maxOccurs="1" folders type Folder - minOccurs="0" maxOccurs="unbounded" templates type FolderTemplate - minOccurs="0" maxOccurs="unbounded" </p><p> templates type FolderTemplate - minOccurs="0" maxOccurs="unbounded" id type int - minOccurs="1" maxOccurs="1" name type string - minOccurs="1" maxOccurs="1" description type string - minOccurs="1" maxOccurs="1" path type string - minOccurs="1" maxOccurs="1" type type string - minOccurs="1" maxOccurs="1" interactive type boolean - minOccurs="1" maxOccurs="1" versions type FolderVersion - minOccurs="0" maxOccurs="unbounded" id type int - minOccurs="1" maxOccurs="1" current type boolean - minOccurs="1" maxOccurs="1" version type string - minOccurs="1" maxOccurs="1" </p><p> importedBy type string - minOccurs="1" maxOccurs="1" importedDate type string - minOccurs="1" maxOccurs="1" version type string - minOccurs="1" maxOccurs="1" publishDate type string - minOccurs="1" maxOccurs="1" Fault FolderFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 165 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:fol="http://pb.com/EngageOne/ws/folder" xmlns:com="http://pb.com/EngageOne/ws/common"> </p><p><soapenv:Header/> <soapenv:Body> <fol:ListFolderContents> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>user1</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> <path>/</path> <!--Optional:--> <filter>ACTIVE-CONTENT-FOLDER</filter> <filter>FOLDER</filter> <filter>TEMPLATE</filter> <mode>ALL</mode> </fol:ListFolderContents> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 166 Appendix B - SOAP API </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <ns3:ListFolderContentsResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/folder"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>9c3d1b67-322b-4091-a850-b17df1fe4f44</token> </SessionToken> </authContext> <folderContent> <id>0</id> <folders> <id>547</id> <name>ac_folder</name> <description>ac_folder</description> <type>active-content</type> </folders> <folders> <id>1012</id> <name>template_folder</name> <type>template</type> </folders> <templates> <id>844</id> <name>One</name> <description>One</description> <path>/</path> <type>template</type> <interactive>true</interactive> <importedBy>user1</importedBy> <importedDate>Thu Apr 20 00:00:00 CEST 2017</importedDate> <version>1.0</version> <publishDate>22-Apr-2015</publishDate> </templates> </folderContent> </ns3:ListFolderContentsResponse> </soap:Body> </soap:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 167 Appendix B - SOAP API </p><p>Data push service </p><p>WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/ DataPushService?wsdl </p><p> pushData() </p><p>Description This Web service pushes data into the EngageOne Server. This Web service validates request data, then invokes a common framework for mapping or persisting the data passed in by the service request. </p><p>Parameters Input PushDataRequest request type PushData - extension of type RequestMessage template type TemplateIdentifier - optional ident type IntegerIDOrName - optional effectiveDate type date - optional </p><p> pushDataFile type DataPushFile data type base64Binary </p><p> mapId type string returnFiles type boolean - optional pushUserId type string - optional externalId type string - optional Output PushDataResponse response type PushDataResponse - extension of type ResponseMessage workItem type workItem - optional Fault DataPushFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 168 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns11:PushData xmlns:ns11="http://pb.com/EngageOne/ws/datapush" </p><p> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns11:PushData"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <UsernameToken> <domain> <ident> <name>EngageOne</name> </ident> </domain> <userId>eosuper</userId> <password>Password1</password> </UsernameToken> </authContext> <pushDataFile> <data>...</data> </pushDataFile> <mapId>test</mapId> <pushUserId>eomanager</pushUserId> <externalId>1234567</externalId> </ns11:PushData> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns1:PushDataResponse xmlns:ns1="http://pb.com/EngageOne/ws/datapush"xmlns:ns2="http://pb.com/EngageOne/ws/model" </p><p> xmlns:ns3="http://pb.com/EngageOne/ws/common"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> </p><p><token>b9da9e70833f22a93b71ac2671aed830_1275060509093_2</token> </SessionToken> </authContext> </ns1:PushDataResponse> </env:Body> </env:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 169 Appendix B - SOAP API </p><p>Delivery management service </p><p> suspendDeliveryItem() WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/ DeliveryManagementService?wsdl </p><p> searchDeliveryOptions() </p><p>Description This Web service retrieves delivery options by delivery option ID or name, or the delivery options associated with a given template ID or name. If the search filter is set to LIST, a list of delivery options will be returned without their respective delivery channels. If the search filter is DETAIL, the delivery channels, devices, and recipients will also be returned. If both template and delivery option details are provided in the request, templates will be searched that match both the template and delivery option criteria. This Web service supports on-demand licensing. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 170 Appendix B - SOAP API </p><p>Parameters Input SearchDeliveryOptionsRequest request type SearchDeliveryOptions - extension of type SearchRequestMessage templates - optional; template ident type IntegerIdOrName </p><p> deliveryOptions - optional; deliveryOption ident type IntegerIdOrName Output SearchDeliveryOptionsResponse response type SearchDeliveryOptionsResponse - extension of type ResponseMessage deliveryOptions - optional; deliveryOption - unbounded; type DeliveryOption - extension of abstract type Entity id type ID - type int with restriction name type string channels - optional; channel - unbounded; type DeliveryChannel - extension of abstract type Entity id type ID - type int with restriction name type string mode type DeliveryChannelMode - type DeliveryChannelMode - type string with restriction - enum { 'BATCH', 'IMMEDIATE' } type DeliveryChannelType - type string with restriction - enum { 'ARCHIVE', 'PRINT', 'EMAIL', 'FAX' } </p><p>Device type Device - extension of abstract type Entity id type ID - type int with restriction name type string type DeviceType - type string with restriction - enum { 'PDF', 'PS', 'AFP', 'HTML', 'eHTML' } preview type boolean HIPId type ID - type int with restriction metaId type ID - type int with restriction </p><p> recipient - optional; type Recipient - extension of abstract type Entity id type ID - type int with restriction name type string <a href="/tags/XPath/" rel="tag">xpath</a> type string Fault DeliveryManagementFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 171 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:del="http://pb.com/EngageOne/ws/deliveryManagement" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <del:SearchDeliveryOptions> <com:authContext> <com:SessionToken> <com:token>2119ec197f798916ec4ddaa4eaa50939_1260816474406_1</com:token> </p><p></com:SessionToken> </com:authContext> <com:filter>LIST</com:filter> <templates> <template> <ident> <com:id></com:id> </ident> </template> </templates> <!--Optional:--> <deliveryOptions> <deliveryOption> <ident> <com:id></com:id> </ident> </deliveryOption> </deliveryOptions> </del:SearchDeliveryOptions> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 172 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:SearchDeliveryOptionsResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/deliveryManagement" xmlns:ns5="http://pb.com/EngageOne/ws/editor"> <deliveryOptions> <deliveryOption> <ns2:id>1</ns2:id> <ns2:name>CHO1</ns2:name> </deliveryOption> </deliveryOptions> </ns4:SearchDeliveryOptionsResponse> </env:Body> </env:Envelope> </p><p> searchDevices() </p><p>Description This Web service retrieves devices by device ID or name, or devices associated with the specified delivery options or templates. The search filter is not used by this service. If device, template, delivery option details are provided in the request, devices will be searched that match all of the provided criteria. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 173 Appendix B - SOAP API </p><p>Parameters Input SearchDevicesRequest request type SearchDevices - extension of type SearchRequestMessage templates - optional; template ident type IntegerIdOrName </p><p> deliveryOptions - optional; deliveryOptions ident type IntegerIdOrName </p><p> devices - optional; device - unbounded; ident type IntegerIdOrName preview - optional; type boolean Output SearchDevicesResponse response type SearchDevicesResponse extension of type ResponseMessage devices - optional; device - unbounded; type Device - extension of abstract type Entity id type ID - type int with restriction name type string type DeviceType - type string with restriction - enum { 'PDF', 'PS', 'AFP', 'HTML', 'eHTML' } preview type boolean HIPId type ID - type int with restriction metaId type ID - type int with restriction Fault DeliveryManagementFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 174 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:del="http://pb.com/EngageOne/ws/deliveryManagement" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <del:SearchDevices> <!--Optional:--> <com:authContext> <!--You have a CHOICE of the next 2 items at this level--> <com:UsernameToken> <com:domainName>FirstDomain</com:domainName> <com:userId>eosuper</com:userId> <!--Optional:--> <com:password>Password1</com:password> </com:UsernameToken> </com:authContext> <!--Optional:--> <com:context> <com:domain> <com:ident> <!--You have a CHOICE of the next 2 items at this level--> </p><p><com:id></com:id> <com:name>%</com:name> </com:ident> </com:domain> <!--Optional:--> <com:user> <com:id>?</com:id> </com:user> </com:context> <!--Optional:--> <com:filter>DETAIL</com:filter> <!--Optional:--> <templates> <template> <ident> <!--You have a CHOICE of the next 2 items at this level--> </p><p><com:id></com:id> </ident> </template> </templates> <!--Optional:--> <deliveryOptions> <deliveryOption> <ident> <!--You have a CHOICE of the next 2 items at this level--> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 175 Appendix B - SOAP API </p><p><com:id></com:id> <com:name>%</com:name> </ident> </deliveryOption> </deliveryOptions> <!--Optional:--> <devices> <!--1 or more repetitions:--> <device> <ident> <!--You have a CHOICE of the next 2 items at this level--> <com:id></com:id> <com:name>%</com:name> </ident> <!--Optional:--> <preview></preview> </device> </devices> </del:SearchDevices> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 176 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns1:SearchDevicesResponse xmlns:ns1="http://pb.com/EngageOne/ws/deliveryManagement" xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/deliveryManagement" xmlns:ns5="http://pb.com/EngageOne/ws/editor"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>bfdba5d08d1299b13651c7c6e25df6a1_1260900326187_0</token> </SessionToken> </authContext> <devices> <device> <ns2:id>2</ns2:id> <ns2:name>default pdf</ns2:name> <ns2:type>PDF</ns2:type> <ns2:preview>true</ns2:preview> <ns2:HIPId>110</ns2:HIPId> <ns2:metaId>111</ns2:metaId> </device> </devices> </ns1:SearchDevicesResponse> </env:Body> </env:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 177 Appendix B - SOAP API </p><p>Dictionary service </p><p>WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/ DictionaryService?wsdl </p><p> searchSpellerManifest() </p><p>Description This Web service is used to retrieve the speller manifest loaded in the system. The speller manifest contains a listing of all languages supported by the system and is primarily used by EngageOne Interactive Editor (ActiveX component) for loading dictionary resources. A custom application will not need to parse this file directly, but make it available for the Interactive Editor to use. For more infromation on how to integrate the Interactive Editor into a custom application, see Integrating with EngageOne SOAP. </p><p>Parameters Input SearchSpellerManifestRequest request type SearchSpellerManifest - extension of type SearchRequestMessage Output SearchSpellerManifestResponse response type SearchSpellerManifestResponse - extension of type ResponseMessage manifest - optional; type SpellerManifest - extension of abstract type Entity id type ID - type int with restriction data - optional; type base64Binary Fault DictionaryFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 178 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dic="http://pb.com/EngageOne/ws/dictionary" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <dic:SearchSpellerManifest> <com:authContext> <com:SessionToken> </p><p><com:token>8ac5cf1a4e943489bfc4aebf3385fb74_1260910526656_9</com:token> </p><p></com:SessionToken> </com:authContext> </dic:SearchSpellerManifest> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:SearchSpellerManifestResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/dictionary" xmlns:ns5="http://pb.com/EngageOne/ws/keymap"> <manifest> <ns2:id>97</ns2:id> <ns2:data> <xop:Include href="cid:data-92afb4f2-e02b-41d0-926b-7eb02575fee1@ws.jboss.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns2:data> </manifest> </ns4:SearchSpellerManifestResponse> </env:Body> </env:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 179 Appendix B - SOAP API </p><p>Domain service </p><p>WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/DomainService?wsdl </p><p> searchDomains() </p><p>Description This Web service can be used to retrieve a list of EngageOne domains. A typical use for this operation would be to pass an empty request and retrieve a list of all domains. This Web service operation is the only operation which does not require authentication. </p><p>Parameters Input SearchDomainsRequest request type SearchDomains - extension of type RequestMessage domains - optional; domain ident type StringIdOrName Output SearchDomainResponse response type SearchDomainsResponse - extension of type ResponseMessage domains - optional; domain - unbounded; type Domain id type string name type string Fault DomainFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 180 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dom="http://pb.com/EngageOne/ws/domain" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <dom:SearchDomains> </dom:SearchDomains> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:SearchDomainsResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/domain" xmlns:ns5="http://pb.com/EngageOne/ws/keymap"> <domains> <domain> <ns2:id>BB81F0DC-AF0A-4318-9398-D37832916DC9</ns2:id> </p><p><ns2:name>A01</ns2:name> </domain> <domain> <ns2:id>CC62248A-820F-42E7-8F8D-B6CD51DF4B74</ns2:id> </p><p><ns2:name>FirstDomain</ns2:name> </domain> <domain> <ns2:id>29CAB1A2-586E-4459-977B-C11819A1680D</ns2:id> </p><p><ns2:name>SecondDmain</ns2:name> </domain> <domain> <ns2:id>232CD981-5208-4C4D-A89B-C3B739266C54</ns2:id> </p><p><ns2:name>Third</ns2:name> </domain> </domains> </ns4:SearchDomainsResponse> </env:Body> </env:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 181 Appendix B - SOAP API </p><p>Editor service </p><p>WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/EditorService?wsdl Note: Some tags have been broken up for formatting purposes. </p><p> retrieveResources() </p><p>Description This Web service is used to retrieve resources required by the EngageOne Interactive Editor (ActiveX component). A custom application intending on embedding the Interactive Editor must use this service operation to retrieve files on behalf of the editor. See Integrating with EngageOne SOAP for more information. </p><p>Parameters Input RetrieveResourcesRequest request type RetrieveResources extension of type RequestMessage resources resource - unbounded; id type ID - type int with restriction Output RetrieveResourcesResponse response type RetrieveResourcesResponse - extension of type ResponseMessage resources resource - unbounded; type EditorResource - extension of abstract type Entity id type ID - type int with restriction data type base64Binary Fault EditorFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 182 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:edit="http://pb.com/EngageOne/ws/editor" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <edit:RetrieveResources> <com:authContext> <com:SessionToken> </p><p><com:token>13be6dbe35df5bb735401da4d94dc9c0_1261584686465_3</com:token> </p><p></com:SessionToken> </com:authContext> <resources> <resource> <id>97</id> </resource> </resources> </edit:RetrieveResources> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Header/> <env:Body> <ns4:RetrieveResourcesResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/editor"> <resources> <resource> <ns2:id>97</ns2:id> </p><p><!--The following <ns2:data> tag has been broken up for formatting purposes--> </p><p><ns2:data>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NC jxTcGVsbGVycz4NCjxMYW5ndWFnZXM+DQo8TGFuZ3VhZ2UgTmFtZT0iRU5HTElTSCI+ DQo8TGV4aWNvbkZpbGUgTmFtZT0iX0VOR0xJU0guTEVYIiBTUklEPSI2Ii8+DQo8QW JicmV2aWF0aW9uRmlsZSBOYW1lPSJfRU5HTElTSC5BQkIiIFNSSUQ9IjQiLz4NCjx JbmRleEZpbGUgTmFtZT0iX0VOR0xJU0guSURYIiBTUklEPSI1Ii8+DQo8SGlzdG9 yeUZpbGUgTmFtZT0iX0hJU1RPUlkuR0IiIFNSSUQ9IjMyIi8+DQo8QWRkaXRpb25hbE hpc3RvcnkgTmFtZT0iSElTVE9SWS5HQiIgU1JJRD0iODYiLz4NCjwvTGFuZ3VhZ2U +DQo8TGFuZ3VhZ2UgTmFtZT0iQU1FUklDQU4iPg0KPExleGljb25GaWxlIE5hbWU9I </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 183 Appendix B - SOAP API </p><p> l9BTUVSSUNBLkxFWCIgU1JJRD0iMTAwIi8+DQo8QWJicmV2aWF0aW9uRmlsZSBOYW 1lPSJfQU1FUklDQS5BQkIiIFNSSUQ9Ijk4Ii8+…………………………. DQo8QWJicmV2aWF0aW9uRmlsZSBOYW1lPSJfU1dJU1NfTi5BQkIiIFNSSUQ9IjczIi8 +DQo8SW5kZXhGaWxlIE5hbWU9Il9TV0lTU19OLklEWCIgU1JJRD0iNzQiLz4NCjx IaXN0b3J5RmlsZSBOYW1lPSJfSElTVE9SWS5DSDIiIFNSSUQ9IjI1Ii8+DQo8QWRka XRpb25hbEhpc3RvcnkgTmFtZT0iSElTVE9SWS5DSDIiIFNSSUQ9Ijc5Ii8+DQo8L0 xhbmd1YWdlPg0KPC9MYW5ndWFnZXM+DQo8L1NwZWxsZXJzPg0K </ns2:data> </p><p></resource> </resources> </ns4:RetrieveResourcesResponse> </env:Body> </env:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 184 Appendix B - SOAP API </p><p>Keymap service </p><p>WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/KeymapService?wsdl </p><p>ImportKeymap() </p><p>Description This Web service is used to import a key map file into the EngageOne system. A key map file is generated using the EngageOne Key Map Generator. The name of the key map and the image path must be specified in the request, in addition to the key map archive created by the generator. Refer to the EngageOne Administration Guide for more information on how to generate a key map file. </p><p>Parameters Input ImportKeymapRequest request type ImportKeymap - extension of type RequestMessage keymap name type string imagepath type string archive type base64Binary Output ImportKeymapResponse response type ImportKeymapResponse - extension of type ResponseMessage keymap type Keymap - extension of abstract type Entity id type ID - type int with restriction name type string imagePath type string Fault KeymapFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 185 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:key="http://pb.com/EngageOne/ws/keymap" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <key:ImportKeymap> <!--Optional:--> <com:authContext> <com:SessionToken> <com:token>ffa6d581801c76126d2da49804e04dac_1261077057093_3</com:token> </p><p></com:SessionToken> </com:authContext> <keymap> <name>KeyMap01</name> <imagePath>C:\</imagePath> <archive>cid:1098199621971</archive> </keymap> </key:ImportKeymap> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:ImportKeymapResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/keymap" xmlns:ns5="http://pb.com/EngageOne/ws/editor"> <keymap> <ns2:id>1</ns2:id> <ns2:name>KeyMap01</ns2:name> <ns2:imagePage>C:\</ns2:imagePage> </keymap> </ns4:ImportKeymapResponse> </env:Body> </env:Envelope> </p><p> searchKeyMaps() </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 186 Appendix B - SOAP API </p><p>Description This Web service is used to get key map information, key map file and key map image information for a specified key map. This service requires the key map name or ID to be specified in order to return information. If the user wants the key map XML file to be returned, the DETAIL filter has to be specified in the request. If searching for a key map image file, the key image name or ID needs to be specified in the request in addition to key map ID. The files are returned as base64Binary attachments. This service provides additional search capabilities to the HTTP request method of getting key map image files in a conformed way. This service is similar to other search services in EngageOne Server. Note: You can only search for an image file for the specified key map at a time. The service will not return more then one image file per request. </p><p>There are four scenarios available for requests: </p><p>• filter = LIST - the service will return the key map information (name and image path). • filter = DETAIL - the service will return the key map information and the key map XML file. • filter = LIST and image requested - the service will return the key map information and the requested image. • filter = DETAIL and image requested - the service will return the key map information, the key map XML file, and the requested image. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 187 Appendix B - SOAP API </p><p>Parameters Input SearchKeymapRequest request type Search - extension of type SearchRequestMessage </p><p>• filter = LIST or DETAIL- enumeration has to be specified depending on what information and files has to be returned. • keymaps keymap ident type IntegerIdOrName - required parameter images - optional; inclulded if image file to be returned. image - minOccurs="1" maxOccurs="1" (Only on request) ident type IntegerIdOrName </p><p>Note: "image" should be used to request a keyed image. </p><p>Output SearchKeymapsResponse response type SearchKeymapResponse - extension of type ResponseMessage keymaps keymap type Keymap - extension of abstract type Entity id type ID - type int with restriction name type string imagePage type string data type base64Binary - contains attachment with requested files images - optional; include if image file to be returned. image type KeyedImage - extension of abstract type Entity name type string data type base64Binary Fault KeymapFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 188 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:key="http://pb.com/EngageOne/ws/keymap" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <key:SearchKeymaps> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>mydomain</com:name> </com:ident> </com:domain> <com:userId>eosuper</com:userId> <com:password>Password1</com:password> </com:UsernameToken> </com:authContext> <com:filter>DETAIL</com:filter> <keymaps> <keymap> <ident> <com:name>ExternalKeyMap</com:name> </ident> <images> <image> <ident> </p><p><com:name>C8643C4EEF874052A2DB4A97B0063690</com:name> </ident> </image> </images> </keymap> </keymaps> </key:SearchKeymaps> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 189 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns1:SearchKeymapsResponse xmlns:ns1="http://pb.com/EngageOne/ws/keymap" xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/keymap" xmlns:ns4="http://pb.com/EngageOne/ws/delivery/statusupdate" xmlns:ns5="http://pb.com/EngageOne/ws/model"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>96707b532a8348359ac9cb4e6904d79b_132 2713559246_0</token> </SessionToken> </authContext> <keymaps> <keymap> <ns5:id>1</ns5:id> <ns5:name>ExternalKeyMap</ns5:name> <ns5:imagePath>C:\EngageOneQA\KeyMap</ns5:imagePath> </p><p><ns5:data> <xop:Include href="cid:data-38d4d706-2281-45c2-96bb-e8e95407d05a@ws.jboss.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns5:data> <ns5:images> <ns5:image> <ns5:id>1</ns5:id> </p><p><ns5:name>C8643C4EEF874052A2DB4A97B0063690</ns5:name> <ns5:data> <xop:Include href="cid:data-93da5279-1d5b-4f9c-9a78-c9701ab93e81@ws.jboss.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns5:data> </ns5:image> </ns5:images> </keymap> </keymaps> </ns1:SearchKeymapsResponse> </env:Body> </env:Envelope> </p><p> updateKeymap() </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 190 Appendix B - SOAP API </p><p>Description This Web service is used to update a key map file into the EngageOne system. The update process adds any new images and updates existing images in the target directory. A key map file is generated using the EngageOne Key Map Generator. The name of the key map must be specified in the request, in addition to the key map archive created by the generator. Refer to the EngageOne Administration Guide for more information on how to generate a key map file. </p><p>Parameters Input UpdateKeymapRequest request type UpdateKeymap - extension of type RequestMessage keymap name type string archive type base64Binary Output UpdateKeymapResponse response type UpdateKeymapResponse - extension of type ResponseMessage keymap type Keymap - extension of abstract type Entity id type ID - type int with restriction name type string Fault KeymapFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 191 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:key="http://pb.com/EngageOne/ws/keymap" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <key:UpdateKeymap> <!--Optional:--> <com:authContext> <com:SessionToken> <com:token>ffa6d581801c76126d2da49804e04dac_1261077057093_3</com:token> </p><p></com:SessionToken> </com:authContext> <keymap> <name>KeyMap01</name> <archive>cid:1098199621971</archive> </keymap> </key:UpdateKeymap> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:UpdateKeymapResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/keymap" xmlns:ns5="http://pb.com/EngageOne/ws/editor"> <keymap> <ns2:id>1</ns2:id> <ns2:name>KeyMap01</ns2:name> </keymap> </ns4:UpdateKeymapResponse> </env:Body> </env:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 192 Appendix B - SOAP API </p><p>Metadata service </p><p>WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/MetadataService?wsdl </p><p> searchMetadata() </p><p>Description This Web service is used to search for metadata associated with a document class, as specified by the document class identifier (ID or name). If the search filter is set to LIST, only the document class will be returned. If the search filter is set to DETAIL, the document class and metadata fields and any associated workflow will be returned. Note: In this version of the application, workflow integration is not supported. The 'workflows' element will always return an empty set in the response. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 193 Appendix B - SOAP API </p><p>Parameters Input SearchMetadataRequest request type SearchMetadata - extension of type SearchRequestMessage docClasses - optional: docClass ident type IntegerIdOrName Output SearchMetadataResponse response type SearchMetadataResponse - extension of type ResponseMessage docClasses - optional; docClass - unbounded; type DocumentClass - extension of abstract type Entity id type ID - type int with restriction name type string description type string fields - optional; field - unbounded; type MetadataField - extension of abstract type Entity id type ID - type int with restriction name type string type MetadataFieldType - type string with restriction - enum { 'STRING', 'DATE', 'NUMBER', 'CHOICE' } value - optional; - type MetadataFieldValue MetadataString type string MetadataDate type date MetadataNumber type decimal MetadataChoice ... is recursive </p><p> workflows - optional; workflow - unbounded; type Workflow - extension of abstract type Entity id type ID - type int with restriction name type string Fault MetadataFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 194 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:met="http://pb.com/EngageOne/ws/metadata" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <met:SearchMetadata> <com:authContext> <com:SessionToken> <com:token>8ac5cf1a4e943489bfc4aebf3385fb74_1260910526656_9</com:token> </p><p></com:SessionToken> </com:authContext> </met:SearchMetadata> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:SearchMetadataResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/metadata" xmlns:ns5="http://pb.com/EngageOne/ws/editor"> <docClasses> <docClass> <ns2:id>11</ns2:id> <ns2:name>Invoice</ns2:name> <ns2:description/> </docClass> <docClass> <ns2:id>12</ns2:id> <ns2:name>Claim</ns2:name> <ns2:description/> </docClass> </docClasses> </ns4:SearchMetadataResponse> </env:Body> </env:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 195 Appendix B - SOAP API </p><p>Request status update service </p><p>WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/RequestStatusUpdateService?wsdl </p><p> postEvent() </p><p>Description This Web service is used by EngageOne Deliver to provide information requests received from EngageOne. </p><p>Parameters Input RequestStatusUpdateRequest request type DIJInformation - extension of type RequestMessage docInstanceID type string code type string message type string Output RequestStatusUpdateResponse response type ResponseMessage Fault fault type ServiceFault result type string </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 196 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stat="http://pb.com/EngageOne/ws/delivery/statusupdate" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <stat:RequestStatusUpdate> <!--Optional:--> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>EngageOne</com:name> </com:ident> </com:domain> <com:userId>eosuper</com:userId> <!--Optional:--> <com:password>Password</com:password> <!--Optional:--> <com:transientSession>true</com:transientSession> </com:UsernameToken> </com:authContext> <DIJInformation> <docInstanceID>BBBBBBB</docInstanceID> <code>DELIVRD</code> <!--Optional:--> <message>This iem was delivered</message> </DIJInformation> </stat:RequestStatusUpdate> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns2:RequestStatusUpdateResponse xmlns:ns2="http://pb.com/EngageOne/ws/delivery/statusupdate" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/common"/> </env:Body> </env:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 197 Appendix B - SOAP API </p><p>Security service </p><p>WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/SecurityService?wsdl </p><p> searchRoles() </p><p>Description This Web service is used to return the list of roles that associated with the specified user ID. Possible roles returned include: </p><p>• Community Administrator • Delivery Manager • Document Manager • Editor • Editor with saving new templates • External File Manager • Project Manager • Reviewer • Template Manager • Viewer • Viewer with Reprint • Workflow Administrator </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 198 Appendix B - SOAP API </p><p>Parameters Input SearchRolesRequest request type SearchRoles - extension of type SearchRequestMessage Users - optional; user id type string Output SearchRolesResponse response type SearchRolesRequest - extension of type ResponseMessage roles - optional; role - unbounded; type Role - extension of abstract type Entity id type ID - type int with restriction name type string members - optional; user - unbounded; type User id type string roles - optional; ... is recursive Fault SecurityFault fault type ServiceFault </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sec="http://pb.com/EngageOne/ws/security" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <sec:SearchRoles> <com:authContext> <com:SessionToken> </p><p><com:token>ff3809dd60ba8aa2bdaaa5fc6246ca2d_1260986323943_0</com:token> </p><p></com:SessionToken> </com:authContext> <users> <user> <id>eosuper</id> </user> </users> </sec:SearchRoles> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 199 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:SearchRolesResponse [xmlns:ns2="http://pb.com/EngageOne/ws/model" |http://pb.com/EngageOne/ws/model] </p><p> xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/security" xmlns:ns5="http://pb.com/EngageOne/ws/editor"> <roles> <role> <ns2:id>40</ns2:id> <ns2:name>Document Manager</ns2:name> </role> <role> <ns2:id>41</ns2:id> <ns2:name>Editor</ns2:name> </role> </roles> </ns4:SearchRolesResponse> </env:Body> </env:Envelope> </p><p> invalidateSession() </p><p>Description This Web service is used to invalidate an authenticated session. This is necessary not to hold open sessions against the license limits of your EngageOne system. The session token must be specified in the authentication context of the request. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 200 Appendix B - SOAP API </p><p>Input InvalidateSessionRequest request type InvalidateSession - extension of type ResponseMessage Output InvalidateSessionResponse response type InvalidateSessionResponse - extension of type ResponseMessage Fault SecurityFault fault type ServiceFault </p><p> trustedConnectionLogin() </p><p>Description This Web service is used to create Trusted Connection token. </p><p>Parameters Input TrustedConnectionLoginRequest request type TrustedConnectionLogin - extension of type ResponseMessage Output TrustedConnectionLoginResponse response type TrustedConnectionLoginResponse - extension of type ResponseMessage Fault SecurityFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 201 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sec="http://pb.com/EngageOne/ws/security" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <sec:TrustedConnectionLogin> <!--Optional:--> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>test</com:name> </com:ident> </com:domain> </p><p><!-- user1(below)- this is the user that requires access to EngageOne and should exist in LDAP. This scenario may be encountered when the user does not know their own password. E.g. to login it uses card, biometric, etc. --> <com:userId>user1</com:userId> </p><p><!-- abc123(below) is the ApiKey defined in deploy.properties under security.trusted.connection.api.key --> <com:password>abc123</com:password> </p><p></com:UsernameToken> </com:authContext> <!--Optional:--> <com:context> <com:domain> <com:ident> <!-- You have a CHOICE of the next 2 items at this level --> <com:id>?</com:id> <com:name>?</com:name> </com:ident> </com:domain> <!--Optional:--> <com:user> <com:id>?</com:id> </com:user> </com:context> <!--Optional:--> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 202 Appendix B - SOAP API </p><p><com:community>?</com:community> </sec:TrustedConnectionLogin> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <ns2:TrustedConnectionLoginResponse xmlns:ns2="http://pb.com/EngageOne/ws/security" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/model"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>455e80b3-645c-41a0-91e6-7b355d1932a2</token> </p><p></SessionToken> </authContext> </ns2:TrustedConnectionLoginResponse> </soap:Body> </soap:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 203 Appendix B - SOAP API </p><p>Template service </p><p>WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/TemplateService?wsdl </p><p> deleteTemplate() </p><p>Description This Web service is used to delete a template from the system as specified by a template identifier (ID or name). All versions of the template with the same name are deleted. </p><p>Parameters Input DeleteTemplate request type DeleteTemplate - extension of type RequestMessage template id type IntegerIdOrName Output DeleteTemplateResponse response type DeleteTemplateResponse - extension of type ResponseMessage Fault TemplateFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 204 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://pb.com/EngageOne/ws/template" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <tem:DeleteTemplate> <com:authContext> <com:SessionToken> <com:token>ffa6d581801c76126d2da49804e04dac_1261077057093_3</com:token> </p><p></com:SessionToken> </com:authContext> <template> <id> <com:id>222</com:id> </id> </template> </tem:DeleteTemplate> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns2:DeleteTemplateResponse xmlns:ns2="http://pb.com/EngageOne/ws/template" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/common" xmlns:ns5="http://pb.com/EngageOne/ws/editor"/> </env:Body> </env:Envelope> </p><p> importActiveContent() </p><p>Description This Web service is used to import an Active Content archive into the EngageOne system. Active Content items are defined using Designer. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 205 Appendix B - SOAP API </p><p>Parameters Input ImportActiveContent request type ImportActiveContent - extension of type RequestMessage archive type base64Binary folder ident type IntegerIdOrName Output ImportActiveContentResponse response type ImportActiveContentResponse - extension of type ResponseMessage activeContents activeContent - unbounded; type ActiveContent - extension of abstract type Entity id type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string path type string version type string Fault TemplateFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 206 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://pb.com/EngageOne/ws/template" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <tem:ImportActiveContent> <com:authContext> <com:SessionToken> </p><p><com:token>0115dd59d1336d44390d9aacb554c320_1261152736859_0</com:token> </p><p></com:SessionToken> </com:authContext> <archive>cid:784040028172</archive> <folder> <ident> <com:id>240</com:id> </ident> </folder> </tem:ImportActiveContent> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 207 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:ImportActiveContentResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/template" xmlns:ns5="http://pb.com/EngageOne/ws/editor"> <activeContents> <activeContent> <ns2:id>260</ns2:id> <ns2:name>AC_Text</ns2:name> <ns2:parent> <ns2:id>240</ns2:id> </ns2:parent> </p><p><ns2:path>\\Invoice\ActiveCotentFolder\AC_Text</ns2:path> <ns2:version>1.0</ns2:version> </activeContent> </activeContents> </ns4:ImportActiveContentResponse> </env:Body> </env:Envelope> </p><p> importMessageContent() </p><p>Description This Web service is used to import a Message Content archive into the EngageOne system. Message Content is defined using Content Author. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 208 Appendix B - SOAP API </p><p>Parameters Input ImportMessageContent request type ImportMessageContent - extension of type RequestMessage archive type base64Binary folder ident type IntegerIdOrName Output ImportMessageContentResponse response type ImportMessageContentResponse - extension of type ResponseMessage messageContents messageContent - unbounded; type Template - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string path type string version type string Fault TemplateFault fault type ServiceFault </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://pb.com/EngageOne/ws/template" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <tem:ImportMessageContent> <com:authContext> <com:SessionToken> <com:token>ffa6d581801c76126d2da49804e04dac_1261077057093_3</com:token> </p><p></com:SessionToken> </com:authContext> <archive>cid:cid:1184235865156</archive> <folder> <ident> <com:id>221</com:id> </ident> </folder> </tem:ImportMessageContent> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 209 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns1:ImportMessageContentResponse xmlns:ns1="http://pb.com/EngageOne/ws/template" xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/template" xmlns:ns5="http://pb.com/EngageOne/ws/datapush"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>05a6a80cadcba8cb11c896cceb18ad46_1330033598071_2 </p><p></token> </SessionToken> </authContext> <messageContents> <messageContent> <ns2:id>1</ns2:id> <ns2:name>message inches</ns2:name> <ns2:path>\\MC\message inches</ns2:path> <ns2:version>1.0</ns2:version> </messageContent> </messageContents> </ns1:ImportMessageContentResponse> </env:Body> </env:Envelope> </p><p> importTemplate() </p><p>Description This Web service is used to import a template archive into the EngageOne system. Templates are defined using Designer. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 210 Appendix B - SOAP API </p><p>Parameters Input ImportTemplate request type ImportTemplate - extension of type RequestMessage archive type base64Binary folder ident type IntegerIdOrName Output ImportTemplateResponse response type ImportTemplateResponse - extension of type ResponseMessage templates template - unbounded; type Template - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string </p><p> path type string version type string effectiveDate type date withdrawnDate type date Fault TemplateFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 211 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://pb.com/EngageOne/ws/template" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <tem:ImportTemplate> <com:authContext> <com:SessionToken> <com:token>ffa6d581801c76126d2da49804e04dac_1261077057093_3</com:token> </p><p></com:SessionToken> </com:authContext> <archive>cid:1215487361289</archive> <folder> <ident> <com:id>221</com:id> </ident> </folder> </tem:ImportTemplate> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 212 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:ImportTemplateResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/template" xmlns:ns5="http://pb.com/EngageOne/ws/editor"> <templates> <template> <ns2:id>231</ns2:id> <ns2:name>EngageOne Introduction</ns2:name> <ns2:parent> <ns2:id>221</ns2:id> </ns2:parent> <ns2:path>\\Invoice\TEST\EngageOne Introduction</ns2:path> <ns2:version>1.0</ns2:version> </p><p><ns2:effectiveDate>2009-12-17-05:00</ns2:effectiveDate> <ns2:withdrawnDate>2999-12-31-05:00</ns2:withdrawnDate> </template> </templates> </ns4:ImportTemplateResponse> </env:Body> </env:Envelope> </p><p> searchFolders() </p><p>Description This Web service retrieves folders by folder identifier (ID or name). If the search filter is set to LIST, a high-level list of folders will be returned without their respective children. If the search filter is DETAIL, the next level of children (templates and folders) will be returned. Note: In this version of the application, workflow integration is not supported. The 'workflows' element will always return an empty set in the response. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 213 Appendix B - SOAP API </p><p>Parameters Input SearchFolders request type SearchFolders - extension of type SearchRequestMessage folders - optional; folder ident type IntegerIdOrName Output SearchFoldersResponse response type SearchFoldersResponse - extension of type ResponseMessage folders - optional; folder - unbounded; type Folder - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract type Entity ... is recursive </p><p> docClasses - optional; docClass - unbounded; type DocumentClass - extension of abstract type Entity id type ID - type int with restriction name type string description type string fields - optional; ... is recursive workflows - optional; ... is recursive </p><p> type type FolderType - type string with restriction - enum { 'REGULAR', 'ACTIVE_CONTENT' } children - optional; folder type Folder - extension of abstract type FileItem - extension of abstract type Entity ... is recursive template type Template - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract type Entity ... is recursive docClasses - optional; ... is recursive path type string version type string effectiveDate type date withdrawnDate type date files - optional; ... is recursive </p><p> docClasses - optional; docClass - unbounded; type DocumentClass - extension of abstract type Entity id type ID - type int with restriction name type string description type string fields - optional; ... is recursive workflows - optional; ... is recursive </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 214 Appendix B - SOAP API </p><p> type type FolderType - type string with restriction - enum { 'REGULAR', 'ACTIVE_CONTENT'} children - optional; folder type Folder - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract type Entity ... is recursive docClasses - optional; ... is recursive type type FolderType - type string with restriction - enum { 'REGULAR', 'ACTIVE_CONTENT' } children - optional; ... is recursive </p><p> template type Template - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract </p><p> type Entity ... is recursive docClasses - optional; ... is recursive children - optional; ... is recursive docClasses - optional; ... is recursive path type string version type string effectiveDate type date withrawnDate type date files - optional; ... is recursive </p><p> docClasses - optional; docClass - unbounded; type DocumentClass - extension of abstract type Entity id type ID - type int with restriction name type string description type string fields - optional; ... is recursive workflows - optional; ... is recursive type type FolderType - type string with restriction - enum { 'REGULAR', 'ACTIVE_CONTENT' } children - optional; folder type Folder - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract type Entity ... is recursive docClasses - optional; ... is recursive children - optional; ... is recursive docClasses - optional; ... is recursive type type FolderType - type string with restriction - enum { 'REGULAR', 'ACTIVE_CONTENT' } children - optional; ... is recursive </p><p> template type Template - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract type Entity id type ID - type int with restriction name type string </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 215 Appendix B - SOAP API </p><p> parent type Folder - extension of abstract type FileItem - extension of abstract type Entity ... is recursive docClasses - optional; ... is recursive type type FolderType - type string with restriction - enum { 'REGULAR', 'ACTIVE_CONTENT' } children - optional; ... is recursive </p><p> docClasses - optional; ... is recursive type type FolderType - type string with restriction - enum { 'REGULAR', 'ACTIVE_CONTENT' } children - optional; ... is recursive </p><p> docClasses - optional; ... is recursive path type string version type string effectiveDate type date withrawnDate type date files - optional; ... is recursive Fault TemplateFault (soap:fault, use = literal) fault type ServiceFault </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://pb.com/EngageOne/ws/template" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <tem:SearchFolders> <com:authContext> <com:SessionToken> <com:token>ff3809dd60ba8aa2bdaaa5fc6246ca2d_1260986323943_0</com:token> </p><p></com:SessionToken> </com:authContext> <com:filter>DETAIL</com:filter> <folders> <folder> <ident> <com:id></com:id> <com:name></com:name> </ident> </folder> </folders> </tem:SearchFolders> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 216 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:SearchFoldersResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/template" xmlns:ns5="http://pb.com/EngageOne/ws/editor"> <folders> <folder> <ns2:id>0</ns2:id> <ns2:name>\</ns2:name> <ns2:children> <ns2:folder> <ns2:id>118</ns2:id> <ns2:name>Invoces</ns2:name> <ns2:parent> <ns2:id>0</ns2:id> </ns2:parent> </ns2:folder> </ns2:children> </folder> </folders> </ns4:SearchFoldersResponse> </env:Body> </env:Envelope> </p><p> searchTemplateResources() </p><p>Description This Web service retrieves template related files by template identifier (ID or name) and file type. The search filter is not used by this service operation. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 217 Appendix B - SOAP API </p><p>Parameters Input SearchTemplateResources request type SearchTemplateResources - extension of type SearchRequestMessage template ident type integerIdOrName files - optional; file - unbounded; ... is recursive Output SearchTemplateResourcesResponse response type SearchTemplateResourcesResponse - extension of type ResponseMessage files - optional; file - unbounded; type TemplateFile - extension of abstract type Entity id type ID - type int with restriction name type string type type TemplateFileType - type string with restriction - enum { 'ANSWER', 'SCHEMA', 'XFORM', 'PROPERTY', 'PUBX', 'HIP', 'IMAGE', 'OTHER', 'DATAMODEL', 'PREVIEW', 'PROMPTLOGIC', 'THUMBNAIL', 'DATAMODEL', 'PREVIEW', 'PROMPTLOGIC', 'THUMBNAIL'} data type base64Binary Fault TemplateFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 218 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://pb.com/EngageOne/ws/template" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <tem:SearchTemplateResources> <com:authContext> <com:SessionToken> </p><p><com:token>ffa6d581801c76126d2da49804e04dac_1261077057093_3</comtoken> </p><p></com:SessionToken> </com:authContext> <com:filter>LIST</com:filter> <template> <ident> <com:id>119</com:id> </ident> <files> <file> <type>PUBX</type> </file> <file> <type>HIP</type> </file> </files> </template> </tem:SearchTemplateResources> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 219 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:SearchTemplateResourcesResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/template" xmlns:ns5="http://pb.com/EngageOne/ws/editor"> <files> <file> <ns2:id>121</ns2:id> <ns2:type>PUBX</ns2:type> </file> <file> <ns2:id>120</ns2:id> <ns2:type>HIP</ns2:type> </file> </files> </ns4:SearchTemplateResourcesResponse> </env:Body> </env:Envelope> </p><p> searchTemplates() </p><p>Description This Web service searches templates by document class. This Web service supports on-demand licensing. If the type element is omitted, the system returns 'INTERACTIVE_ONLY' results by default. If returnAttributes is included with the attribute set to DOC_CLASSES the service returns document class information along with template information. You do not need to set the search filter to DETAIL in order to obtain document class information. If the returnAttributes element is omitted, the service does not return document class information with template information, just as it does with a LIST filter. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 220 Appendix B - SOAP API </p><p>Parameters Input SearchTemplates request type SearchTemplates - extension of type SearchRequestMessage returnAttributes - optional; attribute - unbounded; type SearchTemplatesReturnAttribute - type string with restriction - enum {'DOC_CLASSES'} </p><p> templates - optional; template ident type IntegerIdOrName effectiveDate - optional; type date </p><p> docClasses - optional; docClass ident type IntegerIdOrName fields - optional; ... is recursive </p><p> sorting - optional; type SortingControls fields field - unbounded; type SortField type type SortFieldType - type string with restriction - enum { 'NAME', 'MODIFIED_TIME', 'WORK_ITEM_EXTERNAL_ID', 'OWNER_NAME', 'CREATOR_NAME', 'APPLICATION_NAME', 'DATE', 'STATUS', 'TEMPLATE_NAME', 'DELIVERY_COUNT' } order type SortOrder - type string with restriction - enum { 'ASCENDING', 'DESCENDING' } </p><p> pagination - optional; type PaginationControls pageNumber - optional; type int pageSize - optional; type int totalPages - optional; type int </p><p> type - optional; type SearchTemplateFilterType - type string with restriction - enum {'INTERACTIVE_ONLY', 'NON_INTERACTIVE_ONLY', 'BOTH'} Output SearchTemplatesResponse response type SearchTemplatesResponse - extension of type ResponseMessage pagination - optional; type PaginationControls pageNumber - optional; type int pageSize - optional; type int totalPages - optional; type int </p><p> templates - optional; template - unbounded; type Template - extension of abstract type FileItem - extension of abstract type Entityid type ID - type int with restriction name type string parent type Folder - extension of abstract type FileItem - extension of abstract type Entityid type ID - type int with restriction name type string </p><p> path type string version type string effectiveDate type date withdrawnDate type date </p><p> files - optional; file - unbounded; type TemplateFile - extension of abstract type Entity id type ID - type int with restriction name type string type type TemplateFileType - type string with restriction -</p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 221 Appendix B - SOAP API </p><p> enum { 'ANSWER', 'SCHEMA', 'XFORM', 'PROPERTY', 'PUBX', 'HIP', 'IMAGE', 'OTHER','DATAMODEL', 'PREVIEW', 'PROMPTLOGIC', 'THUMBNAIL' } data type base64Binary Fault TemplateFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 222 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://pb.com/EngageOne/ws/template" xmlns:com="http://pb.com/EngageOne/ws/common" xmlns:mod="http://pb.com/EngageOne/ws/model"> <soapenv:Header/> <soapenv:Body> <tem:SearchTemplates> <com:authContext> <com:SessionToken> </p><p><com:token>ff3809dd60ba8aa2bdaaa5fc6246ca2d_1260986323943_0</com:token> </p><p></com:SessionToken> </com:authContext> <com:filter>LIST</com:filter> <returnAttributes> <attribute>DOC_CLASSES</attribute> </returnAttributes> <templates> <template> <ident> <com:id></com:id> <com:name>Intro</com:name> </ident> <effectiveDate></effectiveDate> </template> </templates> <sorting> <fields> <field> <type></type> <order></order> </field> </fields> </sorting> <pagination> <pageNumber></pageNumber> <pageSize></pageSize> </pagination> <type>INTERACTIVE_ONLY</type> </tem:SearchTemplates> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 223 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:SearchTemplatesResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/template" xmlns:ns5="http://pb.com/EngageOne/ws/delivery/statusupdate" xmlns:ns6="http://pb.com/EngageOne/ws/datapush"> <pagination> <pageNumber>1</pageNumber> <pageSize>10</pageSize> <totalPages>1</totalPages> </pagination> <templates> <template> <ns3:id>171</ns3:id> <ns3:name>ASRrequirements</ns3:name> <ns3:parent> <ns3:id>162</ns3:id> <ns3:name>Templates</ns3:name> <ns3:type>REGULAR</ns3:type> </ns3:parent> <ns3:description>ASRrequirements</ns3:description> <ns3:path>Templates\ASRrequirements</ns3:path> <ns3:version>1.0</ns3:version> <ns3:files> <ns3:file> <ns3:id>172</ns3:id> <ns3:name>template.hip</ns3:name> <ns3:type>HIP</ns3:type> <ns3:data> <xop:Include href="cid:data-1fa8d44-f187-4c27-a7f4-44e5611e09ab@ws.jboss.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns3:data> </ns3:file> <ns3:file> <ns3:id>173</ns3:id> <ns3:name>template.pubx</ns3:name> <ns3:type>PUBX</ns3:type> <ns3:data> <xop:Include href="cid:data-3b3c834e-8603-484a-a450-4e31f60bbd3a@ws.jboss.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns3:data> </ns3:file> <ns3:file> <ns3:id>174</ns3:id> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 224 Appendix B - SOAP API </p><p></ns3:data> <ns3:name>0DF00BE136E7490D920F999500B4839C.xform</ns3:name> <ns3:type>XFORM</ns3:type> <ns3:data> <xop:Include href="cid:data-d0c51091-d8ee-427b-b21c-dbb1662936cb@ws.jboss.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns3:file> <ns3:file> <ns3:id>175</ns3:id> </p><p><ns3:name>0DF00BE136E7490D920F999500B4839C.xml</ns3:name> <ns3:type>ANSWER</ns3:type> <ns3:data> <xop:Include href="cid:data-b2b74571-7fb5-4643-a8ef-57c55fa86744@ws.jboss.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns3:data> <ns3:file> <ns3:id>176</ns3:id> </p><p><ns3:name>0DF00BE136E7490D920F999500B4839C.xsd</ns3:name> <ns3:type>SCHEMA</ns3:type> <xop:Include href="cid:data-82e3424-bb1d-4f38-99a7-8b7c9965de0@ws.jboss.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns3:data> </ns3:file> <ns3:data> </ns3:file> <ns3:file> <ns3:id>177</ns3:id> <ns3:name>Property_4338420834667219234.xml</ns3:name> <ns3:type>PROPERTY</ns3:type> <ns3:data> <xop:Include href="cid:data-aba52bf7-5146-4dba-89d3-d70067a7916f@ws.jboss.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns3:data> </ns3:file> </ns3:files> <ns3:effectiveDateSelection> <ns3:versionsHaveEffectivDate>false</ns3:versionsHaveEffectivDate> </p><p><ns3:selectionCriteria>CURRENT_DATE</ns3:selectionCriteria> </ns3:effectiveDateSelection> <ns3:spellCheck>USER_CANNOT_CLOSE</ns3:spellCheck> </template> </templates> </ns4:SearchTemplatesResponse> </env:Body> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 225 Appendix B - SOAP API </p><p></env:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 226 Appendix B - SOAP API </p><p>Workitem service </p><p>WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/WorkItemService?wsdl </p><p> approveWorkItem() </p><p>Description This Web Service operation can be used to approve a work item. For example, a template may have a workflow associated with it. When a work item is created for such a template (using the WorkItemService createWorkItem operation), then that work item can be approved using this operation. The input to the operation is a work item identifier (id or name). </p><p>Parameters Input ApproveWorkItemRequest request type ApproveWorkItem - extension of abstract type WorkItemMaintRequest - extension of type RequestMessage - extension of abstract type WorkItemMaintRequest - extension of type RequestMessage </p><p> workItem id type - ID type int with restriction comment - optional; type string </p><p>Output ApproveWorkItemResponse response type ApproveWorkItemResponse - extension of type ResponseMessage - extension of type ResponseMessage Fault WorkItemFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 227 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wor="http://pb.com/EngageOne/ws/workItem" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <wor:ApproveWorkItem> <com:authContext> <com:SessionToken> <com:token>acba84fc482bfdf0b381dad8cf4d05c4_1261146878593_1</com:token> </p><p></com:SessionToken> </com:authContext> <workItem> <id>28</id> </workItem> </wor:ApproveWorkItem> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns2:ApproveWorkItemResponse xmlns:ns2="http://pb.com/EngageOne/ws/workItem" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/common" xmlns:ns5="http://pb.com/EngageOne/ws/editor"/> </env:Body> </env:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 228 Appendix B - SOAP API </p><p> createWorkItem() </p><p>Description This Web service can be used to create a new work item for a specified template with associated files (for example, answer, schema, etc.). The work item is created for delivery to the specified delivery option. Additional information is required to create the work item. This includes: an external identifier which can be used as a cross-reference into an external system, the user ID of the current operator creating the work item, the status of the newly created work item, and the application name for which the work item is being created. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 229 Appendix B - SOAP API </p><p>Parameters Input CreateWorkItemRequest request type CreateWorkItem - extension of type RequestMessage template ident type integerIdOrName </p><p> workItem externalId type string currentOperator type string status type WorkItemStatus - type string with restriction - enum { 'ACTIVE_COMPLETE', 'ACTIVE_INCOMPLETE', 'ASSIGNED', 'FAILED_DELIVERY', 'FINISHED', 'OPEN', 'PENDING_APPROVAL', 'PENDING_DELIVERY', 'SUBMITTED_APPROVED', 'SUBMITTED_REJECTED', 'SUBMITTED_REVIEW' } applicationName type string files - optional; file - unbounded; ... is recursive </p><p> deliveryOption ident type IntegerIdOrName Output CreateWorkItemResponse response type CreateWorkItemResponse - extension of type ResponseMessage workItem type WorkItem - extension of abstract type Entity id type ID - type int with restriction externalId type string createdBy type string ownedBy - optional; type string currentOperator - optional; type string status type WorkItemStatus - type string with restriction - enum { 'ACTIVE_COMPLETE', 'ACTIVE_INCOMPLETE', 'ASSIGNED', </p><p>'FAILED_DELIVERY', 'FINISHED', 'OPEN', 'PENDING_APPROVAL', 'PENDING_DELIVERY', 'SUBMITTED_APPROVED', 'SUBMITTED_REJECTED', 'SUBMITTED_REVIEW' } lastModifiedDate type date Fault WorkItemFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 230 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wor="http://pb.com/EngageOne/ws/workItem" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <wor:CreateWorkItem> <com:authContext> <com:SessionToken> <com:token>49196135c775aa3b73536914b1afb671_1260995441990_0</com:token> </p><p></com:SessionToken> </com:authContext> <template> <ident> <com:id>119</com:id> </ident> </template> <workItem> <externalId>Frank001</externalId> <currentOperator>eosuper</currentOperator> <status>ACTIVE_COMPLETE</status> <applicationName>Commit By Soap UI</applicationName> <files> <file> <name>AnswerFile_16342009033447.xml</name> <path>\InstanceFiles</path> <data>cid:576329326563</data> </file> <file> <name>PUB_16342009033447.pubx</name> <path>\InstanceFiles</path> <data>cid:576329326564</data> </file> <file> <name>HIP_16342009033447.hip</name> <path>\InstanceFiles</path> <data>cid:576329326565</data> </file> <file> <name>Property_16342009033447.xml</name> <path>\InstanceFiles</path> <data>cid:576329326566</data> </file> </files> </workItem> </wor:CreateWorkItem> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 231 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns1:CreateWorkItemResponse xmlns:ns1="http://pb.com/EngageOne/ws/workItem" xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/workItem" xmlns:ns5="http://pb.com/EngageOne/ws/keymap"> <workItem> <ns2:id>134</ns2:id> </workItem> </ns1:CreateWorkItemResponse> </env:Body> </env:Envelope> </p><p> deleteWorkItem() </p><p>Description This Web service can be used to delete a work item, specified by a work item ID. </p><p>Pameters Input DeleteWorkItemRequest request type DeleteWorkItem - extension of abstract type WorkItemMaintRequest - extension of type RequestMessage workItem id type ID - type int with restriction Output DeleteWorkItemResponse response type DeleteWorkItemResponse - extension of type ResponseMessage Fault WorkItemFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 232 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wor="http://pb.com/EngageOne/ws/workItem" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <wor:DeleteWorkItem> <com:authContext> <com:SessionToken> <com:token>2b61217c7af18a6258bd36e95b0dafb5_1261060076046_0</com:token> </p><p></com:SessionToken> </com:authContext> <workItem> <id>2</id> </workItem> </wor:DeleteWorkItem> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns2:DeleteWorkItemResponse xmlns:ns2="http://pb.com/EngageOne/ws/workItem" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/common" xmlns:ns5="http://pb.com/EngageOne/ws/editor"/> </env:Body> </env:Envelope> </p><p> getWorkItemAssignees() </p><p>Description This Web service is used to retrieve the list of potential assignees for an existing work item, as specified by a work item identifier (ID or name). </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 233 Appendix B - SOAP API </p><p>Parameters Input GetWorkItemAssigneesRequest request type GetWorkItemAssignees - extension of type RequestMessage workItem ident type IntegerIdOrName Output GetWorkItemAssigneesResponse response type GetWorkItemAssigneesResponse - extension of type ResponseMessage assignees - optional; assignee - unbounded; type User id type string roles - optional; role - unbounded; type Role - extension of abstract type Entity id type ID - type int with restriction name type string members - optional; ... is recursive Fault WorkItemFault fault type ServiceFault </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wor="http://pb.com/EngageOne/ws/workItem" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <wor:GetWorkItemAssignees> <com:authContext> <com:SessionToken> </p><p><com:token>2b61217c7af18a6258bd36e95b0dafb5_1261060076046_0</com:token> </p><p></com:SessionToken> </com:authContext> <workItem> <ident> <com:id>25</com:id> </ident> </workItem> </wor:GetWorkItemAssignees> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 234 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:GetWorkItemAssigneesResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/workItem" xmlns:ns5="http://pb.com/EngageOne/ws/editor"> <assignees> <assignee> <ns2:id>Administrator</ns2:id> </assignee> <assignee> <ns2:id>eodelivery</ns2:id> </assignee> <assignee> <ns2:id>eomanager</ns2:id> </assignee> <assignee> <ns2:id>eosystem</ns2:id> </assignee> <assignee> <ns2:id>eotemplate</ns2:id> </assignee> <assignee> <ns2:id>eouser</ns2:id> </assignee> <assignee> <ns2:id>pgeron01</ns2:id> </assignee> </assignees> </ns4:GetWorkItemAssigneesResponse> </env:Body> </env:Envelope> </p><p> reassignWorkItem() </p><p>Description This Web service is used to reassign a work item, as specified by a work item ID to another user by user ID. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 235 Appendix B - SOAP API </p><p>Parameters Input ReassignWorkItemRequest request type ReassignWorkItem - extension of abstract type WorkItemMaintRequest- extension of type RequestMessage workItem id type ID - type int with restriction </p><p> assignee id type string Output ReassignWorkItemResponse response type ReassignWorkItemResponse - extension of type ResponseMessage Fault WorkItemFault fault type ServiceFault </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wor="http://pb.com/EngageOne/ws/workItem" xmlns:com="http://pb.com/EngageOne/ws/common" xmlns:mod="http://pb.com/EngageOne/ws/model"> <soapenv:Header/> <soapenv:Body> <wor:ReassignWorkItem> <com:authContext> <com:SessionToken> </p><p><com:token>49196135c775aa3b73536914b1afb671_1260995441990_0</com:token> </p><p></com:SessionToken> </com:authContext> <workItem> <id>25</id> </workItem> <assignee> <id>eouser</id> </assignee> </wor:ReassignWorkItem> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 236 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns2:ReassignWorkItemResponse xmlns:ns2="http://pb.com/EngageOne/ws/workItem" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/common" xmlns:ns5="http://pb.com/EngageOne/ws/editor"/> </env:Body> </env:Envelope> </p><p> rejectWorkItem() </p><p>Description This Web Service operation is used to reject a work item identified by its id, assuming the work is associated with a workflow. </p><p>Parameters Input RejectWorkItemRequest request type RejectWorkItem - extension of abstract type WorkItemMaintRequest - extension of type RequestMessage - extension of abstract type WorkItemMaintRequest - extension of type RequestMessage </p><p> workItem id type - ID type int with restriction comment - type string </p><p>Output RejectWorkItemResponse response type RejectWorkItemResponse - extension of type ResponseMessage - extension of type ResponseMessage Fault WorkItemFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 237 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wor="http://pb.com/EngageOne/ws/workItem" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <wor:RejectWorkItem> <com:authContext> <com:SessionToken> <com:token>acba84fc482bfdf0b381dad8cf4d05c4_1261146878593_1</com:token> </p><p></com:SessionToken> </com:authContext> <workItem> <id>29</id> </workItem> <comment>Reject comment</comment> </wor:RejectWorkItem> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns2:RejectWorkItemResponse xmlns:ns2="http://pb.com/EngageOne/ws/workItem" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/common" xmlns:ns5="http://pb.com/EngageOne/ws/editor"/> </env:Body> </env:Envelope> </p><p> searchWorkItem() </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 238 Appendix B - SOAP API </p><p>Description This Web service is used to search for work items by combination of work item list status, or optionally, with a work item identifier (ID or name). Possible work item list statuses that can be searched for include: </p><p>• ACTIVE • SUBMITTED • ALL_ACTIVE • ALL_SUBMITTED </p><p>You can optionally filter the work item list by work item status, delivery channel mode, and delivery channel type. The exception to this rule is when workItemListType is equal to "ALL_ACTIVE" or "ACTIVE". In this case the work item cannot be filtered with delivery channel type ("ARCHIVE", "PRINT", "EMAIL", "FAX"), and channel mode ("BATCH", "IMMEDIATE"). The list that is returned pertains to the user invoking the service. For example, the operation can be used to return the list of active work items for the authenticated user. If the search filter is set LIST, the list of matching work items is returned. If the search filter is set to DETAIL, the files associated with the work items are also returned. The Web service always returns a list of comments for each work item returned if there are any. If you submit Work Item ID or name in the search criteria, the service returns the requested Work Item regardless of the user ID associated with it. The service also disregards workItemListType parameter ({ 'ACTIVE', 'SUBMITTED', 'ALL_ACTIVE', 'ALL_SUBMITTED'}) if such is specified. If you do not specify Work Item ID or name in the search parameters, the workItemListType parameter is required. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 239 Appendix B - SOAP API </p><p>Parameters Input SearchWorkItemsRequest request type SearchWorkItems - extension of type SearchRequestMessage workItemListType type WorkItemListType - type string with restriction - enum { 'ACTIVE', 'SUBMITTED', 'ALL_ACTIVE', 'ALL_SUBMITTED' } workItems - optional; workItem ident type IntegerIdOrName </p><p> workitemStatuses - optional; workitemStatus type workitemStatus - type string with restriction - enum { 'ACTIVE_INCOMPLETE', 'ACTIVE_NEW', 'ACTIVE_COMPLETE', 'NEW', 'ASSIGNED', 'FAILED_DELIVERY', 'FINISHED', 'OPEN', 'PENDING_APPROVAL', 'PENDING_DELIVERY', 'SUBMITTED_APPROVED', 'SUBMITTED_REJECTED', 'SUBMITTED_REVIEW' } </p><p> deliveryChannelModes - optional; deliveryChannelMode type deliveryChannelMode - type string with restriction - enum { 'BATCH', 'IMMEDIATE'} </p><p> deliveryChannelTypes - optional; deliveryChannelType type deliveryChannelType - type string with restriction - enum {'ARCHIVE', 'PRINT', 'EMAIL', 'FAX' } </p><p> sorting - optional; type SortingControls fields field - unbounded;l type SortField type type SortFieldType - type string with restriction - enum { 'WORK_ITEM_EXTERNAL_ID', 'OWNER_NAME', 'CREATOR_NAME', 'APPLICATION_NAME','DATE', 'STATUS', 'TEMPLATE_NAME' } order type SortOrder - type string with restriction - enum { 'ASCENDING', 'DESCENDING' } </p><p> pagination - optional; type PaginationControls pageNumber - optional; type int pageSize - optional; type int totalPages - optional; type int </p><p> language - optional; type string Output SearchWorkItemsResponse response type SearchWorkItemsResponse - extension of type ResponseMessage pagination - optional; type PaginationControls pageNumber - optional; type int pageSize - optional; type int totalPages - optional; type int </p><p> workItems - optional; workItem - unbounded; type WorkItem - extension of abstract type Entity id type ID - type int with restriction externalId type string createdBy type string ownedBy - optional; type string currentOperator - optional; type string status type WorkItemStatus - type string with restriction - enum { 'ACTIVE_COMPLETE', 'ACTIVE_INCOMPLETE', 'ASSIGNED', 'FAILED_DELIVERY', 'FINISHED', 'OPEN', 'PENDING_APPROVAL', 'PENDING_DELIVERY', 'SUBMITTED_APPROVED', 'SUBMITTED_REJECTED', 'SUBMITTED_REVIEW' } </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 240 Appendix B - SOAP API </p><p> lastModifiedDate type date </p><p> files - optional; file - unbounded; type WorkItemFile - extension of abstract type Entity id type ID - type int with restriction name type string path type string type type TemplateFileType - type string with restriction - enum { 'ANSWER', 'SCHEMA', 'XFORM', 'PROPERTY', 'PUBX', 'HIP', 'IMAGE', 'OTHER', 'DATAMODEL', 'PREVIEW', 'PROMPTLOGIC', 'THUMBNAIL' } data type base64Binary </p><p> comments - optional; comment - unbounded; type WorkItemComment text type string - required date type DateTime - required Note: If multiple comments exist for the work item they will be returned sorted by date/time. </p><p>Fault WorkItemFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 241 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wor="http://pb.com/EngageOne/ws/workItem" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <wor:SearchWorkItems> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> </p><p><com:id>CC62248A-820F-42E7-8F8D-B6CD51DF4B74</com:id> </com:ident> </com:domain> <com:userId>eosuper</com:userId> <com:password>Password1</com:password> </com:UsernameToken> </com:authContext> <com:filter>DETAIL</com:filter> <workItemListType>ACTIVE</workItemListType> <workItems> <workItem> <ident> <com:id>43</com:id> </ident> </workItem> </workItems> <workItemStatuses> <workItemStatus>ACTIVE_INCOMPLETE</workItemStatus> <workItemStatus>ACTIVE_NEW</workItemStatus> <workItemStatus>ACTIVE_COMPLETE</workItemStatus> <workItemStatus>ASSIGNED</workItemStatus> <workItemStatus>FAILED_DELIVERY</workItemStatus> <workItemStatus>FINISHED</workItemStatus> <workItemStatus>OPEN</workItemStatus> <workItemStatus>PENDING_APPROVAL</workItemStatus> <workItemStatus>PENDING_DELIVERY</workItemStatus> <workItemStatus>SUBMITTED_APPROVED</workItemStatus> <workItemStatus>SUBMITTED_REJECTED</workItemStatus> <workItemStatus>SUBMITTED_REVIEW</workItemStatus> </workItemStatuses> </p><p><deliveryChannelModes> <deliveryChannelMode>BATCH</deliveryChannelMode> <deliveryChannelMode>IMMEDIATE</deliveryChannelMode> </deliveryChannelModes> <deliveryChannelTypes> <deliveryChannelType>PRINT</deliveryChannelType> <deliveryChannelType>EMAIL</deliveryChannelType> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 242 Appendix B - SOAP API </p><p><deliveryChannelType>FAX</deliveryChannelType> <deliveryChannelType>ARCHIVE</deliveryChannelType> </deliveryChannelTypes> </wor:SearchWorkItems> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 243 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns3:SearchWorkItemsResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/workItem" xmlns:ns4="http://pb.com/EngageOne/ws/delivery/statusupdate" xmlns:ns5="http://pb.com/EngageOne/ws/model" xmlns:ns6="http://pb.com/EngageOne/ws/datapush"> <pagination> <pageNumber>1</pageNumber> <pageSize>10</pageSize> <totalPages>1</totalPages> </pagination> <workItems> <workItem> <ns5:id>7</ns5:id> <ns5:externalId>Work Item: 12:16:34 - 1016803513</ns5:externalId> <ns5:createdBy>eosuper</ns5:createdBy> <ns5:status>ACTIVE_COMPLETE</ns5:status> </p><p><ns5:lastModifiedDate>2012-11-08T12:16:35.080-05:00</ns5:lastModifiedDate> </p><p><ns5:files> <ns5:file> <ns5:id>190</ns5:id> <ns5:name>AnswerFile_08162012121634.xml</ns5:name> </p><p><ns5:path>InstanceFiles\eosuper\AnswerFile_08162012121634.xml</ns5:path> </p><p><ns5:type>ANSWER</ns5:type> <ns5:data> <xop:Include href="cid:data-a21abe3f-4f64-4d87-becb-85619d8fc0c3@ws.jboss.org" </p><p> xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns5:data> </ns5:file> <ns5:file> <ns5:id>191</ns5:id> <ns5:name>PUB_08162012121634.pubx</ns5:name> </p><p><ns5:path>InstanceFiles\eosuper\PUB_08162012121634.pubx</ns5:path> </p><p><ns5:type>PUBX</ns5:type> <ns5:data> <xop:Include href="cid:data-1f28b175-1362-45b7-9717-bf311277cee6@ws.jboss.org" </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 244 Appendix B - SOAP API </p><p> xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns5:file> <ns5:file> <ns5:id>192</ns5:id> <ns5:name>HIP_08162012121634.hip</ns5:name> </p><p><ns5:path>InstanceFiles\eosuper\HIP_08162012121634.hip</ns5:path> </p><p><ns5:type>HIP</ns5:type> <ns5:data> <xop:Include href="cid:data-a48a81bd-9b61-4140-8d08-292f3c12f47a@ws.jboss.org" </p><p> xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns5:data> </ns5:file> <ns5:file> <ns5:id>193</ns5:id> <ns5:name>Property_08162012121634.xml</ns5:name> </p><p><ns5:path>InstanceFiles\eosuper\Property_08162012121634.xml</ns5:path> </p><p><ns5:type>PROPERTY</ns5:type> <ns5:data> <xop:Include href="cid:data-6f19fa6c-e9a7-435e-94ad-bf84ba41140@ws.jboss.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns5:data </ns5:file> </ns5:files> <ns5:template> <ns5:id>171</ns5:id> <ns5:name>ASRrequirements</ns5:name> <ns5:path>\\Templates\ASRrequirements</ns5:path> <ns5:version>1.0</ns5:version> <ns5:effectiveDate>1969-12-31-05:00</ns5:effectiveDate> <ns5:withdrawnDate>1969-12-31-05:00</ns5:withdrawnDate> </ns5:template> <ns5:comments> <ns5:comment> <ns5:text>Test Spell Check Close</ns5:text> <ns5:date>2012-11-08T12:16:35.080-05:00</ns5:date> </ns5:comment> </ns5:comments> </workItem> <workItem> <ns5:id>9</ns5:id> <ns5:externalId>Work Item: 12:18:41 - 544723706</ns5:externalId> <ns5:createdBy>eosuper</ns5:createdBy> <ns5:status>ACTIVE_COMPLETE</ns5:status> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 245 Appendix B - SOAP API </p><p><ns5:lastModifiedDate>2012-11-08T12:18:42.030-05:00</ns5:lastModifiedDate> </p><p><ns5:files> <ns5:file> <ns5:id>198</ns5:id> <ns5:name>AnswerFile_08182012121841.xml</ns5:name> </p><p><ns5:path>InstanceFiles\eosuper\AnswerFile_08182012121841.xml</ns5:path> </p><p><ns5:type>ANSWER</ns5:type> <ns5:data> <xop:Include href="cid:data-8fc4283-e36-4d13-8b38-fe9495dea2bf@ws.jboss.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns5:data> </ns5:file> <ns5:file> <ns5:id>199</ns5:id> <ns5:name>PUB_08182012121841.pubx</ns5:name> </p><p><ns5:path>InstanceFiles\eosuper\PUB_08182012121841.pubx</ns5:path> </p><p><ns5:type>PUBX</ns5:type> <ns5:data> <xop:Include href="cid:data-f2ebda42-e045-4c3e-a8f8-75fb13fd919d@ws.jboss.org" </p><p> xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns5:data> </ns5:file> <ns5:file> <ns5:id>200</ns5:id> <ns5:name>HIP_08182012121841.hip</ns5:name> </p><p><ns5:path>InstanceFiles\eosuper\HIP_08182012121841.hip</ns5:path> </p><p><ns5:type>HIP</ns5:type> <ns5:data> <xop:Include href="cid:data-9d66a164-c512-4566-aba6-6ef7c375c861@ws.jboss.org" </p><p> xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns5:data> </ns5:file> <ns5:file> <ns5:id>201</ns5:id> <ns5:name>Property_08182012121841.xml</ns5:name> </p><p><ns5:path>InstanceFiles\eosuper\Property_08182012121841.xml</ns5:path> </p><p><ns5:type>PROPERTY</ns5:type> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 246 Appendix B - SOAP API </p><p><ns5:data> <xop:Include href="cid:data-e2bb812a-7fa3-43cf-a035-81a3ccc96c6d@ws.jboss.org" </p><p> xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns5:data> </ns5:file> </ns5:files> <ns5:template> <ns5:id>171</ns5:id> <ns5:name>ASRrequirements</ns5:name> <ns5:path>\\Templates\ASRrequirements</ns5:path> <ns5:version>1.0</ns5:version> <ns5:effectiveDate>1969-12-31-05:00</ns5:effectiveDate> <ns5:withdrawnDate>1969-12-31-05:00</ns5:withdrawnDate> </ns5:template> <ns5:comments> <ns5:comment> <ns5:text>Test</ns5:text> <ns5:date>2012-11-08T12:18:42.030-05:00</ns5:date> </ns5:comment> </ns5:comments> </workItem> </workItems> </ns3:SearchWorkItemsResponse> </env:Body> </env:Envelope> </p><p> submitWorkItem() </p><p>Description This Web service is used to submit a work item and deliver the document, after creating a work item using the WorkItemService createWorkItem operation. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 247 Appendix B - SOAP API </p><p>Parameters Input SubmitWorkItemRequest request type SubmitWorkItem - extension of abstract type WorkItemMaintRequest - extension of type RequestMessage workItem id type ID - type int with restriction </p><p> comment - optional; type string Output SubmitWorkItemResponse response type SubmitWorkItemResponse - extension of type ResponseMessage Fault WorkItemFault fault type ServiceFault </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wor="http://pb.com/EngageOne/ws/workItem" xmlns:com="http://pb.com/EngageOne/ws/common" xmlns:mod="http://pb.com/EngageOne/ws/model"> <soapenv:Header/> <soapenv:Body> <wor:SubmitWorkItem> <com:authContext> <com:SessionToken> </p><p><com:token>49196135c775aa3b73536914b1afb671_1260995441990_0</com:token> </p><p></com:SessionToken> </com:authContext> <workItem> <id>24</id> </workItem> </wor:SubmitWorkItem> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 248 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns2:SubmitWorkItemResponse xmlns:ns2="http://pb.com/EngageOne/ws/workItem" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/common" xmlns:ns5="http://pb.com/EngageOne/ws/editor"/> </env:Body> </env:Envelope> </p><p> updateWorkItem() </p><p>Description This Web service is used to update a work item definition. This includes the template associated with the work item, work item details such as status, and the delivery option associated with the work item. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 249 Appendix B - SOAP API </p><p>Parameters Input UpdateWorkItemRequest request type UpdateWorkItem - extension of type RequestMessage template ident type IntegerIdOrName </p><p> workitem id type ID - type int with restriction externalId type string currentOperator type string status type WorkItemStatus - type string with restriction - enum { 'ACTIVE_COMPLETE', 'ACTIVE_INCOMPLETE', 'ASSIGNED', 'FAILED_DELIVERY', 'FINISHED', 'OPEN', 'PENDING_APPROVAL', 'PENDING_DELIVERY', 'SUBMITTED_APPROVED', 'SUBMITTED_REJECTED', 'SUBMITTED_REVIEW' } comment type string files - optional; file - unbounded; ... is recursive </p><p> deliveryOption ident type IntegerIdOrName Output UpdateWorkItemResponse response type UpdateWorkItemResponse - extension of type ResponseMessage Fault WorkItemFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 250 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wor="http://pb.com/EngageOne/ws/workItem" xmlns:com="http://pb.com/EngageOne/ws/common" xmlns:mod="http://pb.com/EngageOne/ws/model"> <soapenv:Header/> <soapenv:Body> <wor:UpdateWorkItem> <com:authContext> <com:SessionToken> </p><p><com:token>49196135c775aa3b73536914b1afb671_1260995441990_0</com:token> </p><p></com:SessionToken> </com:authContext> <workItem> <id>24</id> <currentOperator>eouser</currentOperator> <status>ACTIVE_COMPLETE</status> <comment>hello world</comment> </workItem> <deliveryOption> <ident> <com:id>1</com:id> </ident> </deliveryOption> </wor:UpdateWorkItem> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns2:UpdateWorkItemResponse xmlns:ns2="http://pb.com/EngageOne/ws/workItem" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/common" xmlns:ns5="http://pb.com/EngageOne/ws/editor"/> </env:Body> </env:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 251 Appendix B - SOAP API </p><p> saveTemplateWorkItem() </p><p>Description This Web service is used to create a new template work item. A template work item is distinguished from a document instance work item using the WorkItemService createWorkItem operation. The intent of a template work item is to make a new template available for use in document instance creation. </p><p>Parameters Input SaveTemplateWorkItemRequest request type SaveTemplateWorkItem - extension of type RequestMessage templateWorkItem ident - optional; type IntegerIdOrName createdBy type string modelTemplateId type IntegerIdOrName targetTemplateName type string folderIdent type IntegerIdOrName files - optional; file - unbounded: ... is recursive </p><p> comment - optional; type string overwrite - optional; type boolean Output SaveTemplateWorkItemResponse response type SaveTemplateWorkItemResponse - extension of type ResponseMessage workItem type TemplateWorkItem - extension of type WorkItem - extension of abstract type Entity id type ID - type int with restriction externalId type string createdBy type string ownedBy - optional; type string currentOperator - optional; type string status type WorkItemStatus - type string with restriction - enum { 'ACTIVE_COMPLETE', 'ACTIVE_INCOMPLETE', 'ASSIGNED', 'FAILED_DELIVERY', 'FINISHED', 'OPEN', 'PENDING_APPROVAL', 'PENDING_DELIVERY', 'SUBMITTED_APPROVED', 'SUBMITTED_REJECTED', 'SUBMITTED_REVIEW' } lastModifiedDate type date modelTemplateId type ID - type int with restriction templateName type string folderId type ID - type int with restriction Fault WorkItemFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 252 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wor="http://pb.com/EngageOne/ws/workItem" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <wor:SaveTemplateWorkItem> <com:authContext> <com:SessionToken> </p><p><com:token>0115dd59d1336d44390d9aacb554c320_1261152736859_0</com:token> </p><p></com:SessionToken> </com:authContext> <templateWorkItem> <ident> <com:id>30</com:id> </ident> <createdBy>eosuper</createdBy> <modelTemplateId> <com:id>119</com:id> </modelTemplateId> <targetTemplateName>Intro_SaveAs</targetTemplateName> </p><p><folderIdent> <com:id>221</com:id> </folderIdent> <files> <file> <name>AnswerFile_18152009111556.xml</name> <path>\InstanceFiles</path> <type>ANSWER</type> <data>cid:278598095431</data> </file> <file> <name>PUB_18152009111556.pubx</name> <path>\InstanceFiles</path> <type>PUBX</type> <data>cid:278598095432</data> </file> <file> <name>HIP_18152009111556.hip</name> <path>\InstanceFiles</path> <type>HIP</type> <data>cid:278598095433</data> </file> <file> <name>Property_18152009111556.xml</name> <path>\InstanceFiles</path> <type>PROPERTY</type> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 253 Appendix B - SOAP API </p><p><data>cid:278598095434</data> </file> </files> </templateWorkItem> <comment>789456</comment> <overwrite>true</overwrite> </wor:SaveTemplateWorkItem> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:SaveTemplateWorkItemResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/workItem" xmlns:ns5="http://pb.com/EngageOne/ws/editor"> <workItem> <ns2:id>30</ns2:id> <ns2:externalId>WF05</ns2:externalId> <ns2:createdBy>eosuper</ns2:createdBy> <ns2:status>FINISHED</ns2:status> </p><p><ns2:lastModifiedDate>2009-12-18-05:00</ns2:lastModifiedDate> <ns2:modelTemplateId>119</ns2:modelTemplateId> <ns2:templateName>EngageOne Introduction</ns2:templateName> <ns2:folderId>221</ns2:folderId> </workItem> </ns4:SaveTemplateWorkItemResponse> </env:Body> </env:Envelope> </p><p> addWorkItemComment() </p><p>Description This Web service is used to add a comment to an existing work item. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 254 Appendix B - SOAP API </p><p>Parameters Input AddWorkItemCommentRequest request type AddWorkItemComment - extension of type RequestMessage, extension of type RequestMessage workItem id type ID - type int with restriction comment type string. Output AddWorkItemCommentResponse response type AddWorkItemCommentResponse - extension of type ResponseMessage Fault WorkItemFault fault type ServiceFault </p><p> updateWorkItemStatus() </p><p>Description This Web service is used to update the status of an existing work item. </p><p>Parameters Input UpdateWorkItemStatusRequest request type UpdateWorkItemStatus - extension of type RequestMessage workItem id type ID - type int with restriction status type WorkItemStatus - type string with restriction - enum { 'ACTIVE_COMPLETE', 'ACTIVE_INCOMPLETE', 'ASSIGNED', 'FAILED_DELIVERY', 'FINISHED', 'OPEN', 'PENDING_APPROVAL', 'PENDING_DELIVERY', 'SUBMITTED_APPROVED', 'SUBMITTED_REJECTED', 'SUBMITTED_REVIEW' } Output UpdateWorkItemStatusResponse response type UpdateWorkItemStatusResponse - extension of type ResponseMessage Fault WorkItemFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 255 Appendix B - SOAP API </p><p>Attachment service </p><p>WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/AttachmentService?wsdl </p><p> addAttachments() </p><p>Description This Web service adds attachment files to an existing work item. </p><p>Parameters Input AddAttachments request type AddAttachments - extension of type RequestMessage attachmentFiles type base64Binary maxOccurs="unbounded" workItemId type ID – type int with restriction Output AddAttachmentsResponse response type AddAttchmentsResponse - extension of type ResponseMessage attachments minOccurs="0" maxOccurs="unbounded" id type ID - type int with restriction fileName type string fileType type string sequence type int createdDate type date Fault AttachmentFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 256 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:att="http://pb.com/EngageOne/ws/attachment" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <att:AddAttachments> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>sysadmin</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> <!--1 or more repetitions:--> <attachmentFiles>cid:490167285825</attachmentFiles> <attachmentFiles>cid:490167285826</attachmentFiles> <workItemId>1234</workItemId> </att:AddAttachments> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 257 Appendix B - SOAP API </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <ns3:AddAttachmentsResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/attachment" xmlns:ns4="http://pb.com/EngageOne/ws/model"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> </p><p><SessionToken> </p><p><token>a08351f0-5537-40bc-8baf-b98c5abc196c</token> </SessionToken> </authContext> <attachments> <ns4:id>29</ns4:id> <ns4:fileName>O55V7P.pdf</ns4:fileName> <ns4:fileType>pdf</ns4:fileType> <ns4:sequence>1</ns4:sequence> <ns4:createdDate>2016-08-23+02:00</ns4:createdDate> </p><p></attachments> <attachments> <ns4:id>30</ns4:id> <ns4:fileName>report.pdf</ns4:fileName> <ns4:fileType>pdf</ns4:fileType> <ns4:sequence>2</ns4:sequence> <ns4:createdDate>2016-08-23+02:00</ns4:createdDate> </p><p></attachments> </ns3:AddAttachmentsResponse> </soap:Body> </soap:Envelope> </p><p> getAttachments() </p><p>Description This Web service is used to get all attachment file metadata added to an existing work item. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 258 Appendix B - SOAP API </p><p>Parameters Input GetAttachments request type GetAttachments - extension of type RequestMessage </p><p> workItemId type ID – type int with restriction Output GetAttachmentsResponse response type getAttchmentsResponse - extension of type ResponseMessage attachments minOccurs="0" maxOccurs="unbounded" id type ID - type int with restriction fileName type string fileType type string sequence type int createdDate type date Fault AttachmentFault fault type ServiceFault </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:att="http://pb.com/EngageOne/ws/attachment" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <att:AddAttachments> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>sysadmin</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> <workItemId>1234</workItemId> </att:AddAttachments> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 259 Appendix B - SOAP API </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <ns3:GetAttachmentsResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/attachment" xmlns:ns4="http://pb.com/EngageOne/ws/model"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> </p><p><SessionToken> </p><p><token>a5506457-f0a1-4ba5-99ed-4a6a6d2925f1</token> </SessionToken> </authContext> <attachments> <ns4:id>2</ns4:id> <ns4:fileName>O55V7P.pdf</ns4:fileName> <ns4:fileType>pdf</ns4:fileType> <ns4:sequence>1</ns4:sequence> <ns4:createdDate>2016-08-19+02:00</ns4:createdDate> </p><p></attachments> <attachments> <ns4:id>3</ns4:id> <ns4:fileName>report.pdf</ns4:fileName> <ns4:fileType>pdf</ns4:fileType> <ns4:sequence>2</ns4:sequence> <ns4:createdDate>2016-08-19+02:00</ns4:createdDate> </p><p></attachments> </ns3:GetAttachmentsResponse> </soap:Body> </soap:Envelope> </p><p> getAttachmentFile() </p><p>Description This Web service is used to get attachment file content. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 260 Appendix B - SOAP API </p><p>Parameters Input GetAttachmentFile request type GetAttachmentFile - extension of type RequestMessage workItemId type ID – type int with restriction attachmentId type ID – type int with restriction Output GetAttachmentFileResponse response type GetAttchmentFileResponse - extension of type ResponseMessage attachmentFile type base64Binary Fault AttachmentFault fault type ServiceFault </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:att="http://pb.com/EngageOne/ws/attachment" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <att:GetAttachmentFile> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>sysadmin</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> <workItemId>1</workItemId> <attachmentId>8</attachmentId> </att:GetAttachmentFile> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 261 Appendix B - SOAP API </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <ns3:GetAttachmentFileResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/attachment" xmlns:ns4="http://pb.com/EngageOne/ws/model"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>fd220238-a5eb-46b8-8ac8-4be9366402f2</token> </p><p></SessionToken> </authContext> <attachmentFile> <xop:Include href="cid:1f882a3b-ac19-431d-9a26-d0d169081313-4@cxf.apache.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </attachmentFile> </ns3:GetAttachmentFileResponse> </soap:Body> </soap:Envelope> </p><p> deleteAttachment() </p><p>Description This Web service is used to delete an attachment from a communication. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 262 Appendix B - SOAP API </p><p>Parameters Input DeleteAttachment request type DeleteAttachment - extension of type RequestMessage workItemId ident type ID – type int with restriction attachmentId ident type ID – type int with restriction Output DeleteAttachmentResponse response type DeleteAttchmentResponse - extension of type ResponseMessage attachmentId ident type ID – type int Fault AttachmentFault fault type ServiceFault </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:att="http://pb.com/EngageOne/ws/attachment" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <att:DeleteAttachment> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>sysadmin</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> <workItemId>7</workItemId> <attachmentId>14</attachmentId> </att:DeleteAttachment> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 263 Appendix B - SOAP API </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <ns3:DeleteAttachmentResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/attachment" xmlns:ns4="http://pb.com/EngageOne/ws/model"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>9e079c58-80c7-40a9-86d2-2bea25632413</token> </p><p></SessionToken> </authContext> <attachmentId>14</attachmentId> </ns3:DeleteAttachmentResponse> </soap:Body> </soap:Envelope> </p><p> updateAttachments() </p><p>Description This Web service is used to update attachments’ order and name. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 264 Appendix B - SOAP API </p><p>Parameters Input UpdateAttachments request type UpdateAttachments - extension of type RequestMessage workItemId ident type ID – type int with restriction attachments type Attachment – minOccurs="0" maxOccurs="unbounded" id type ID - type int with restriction fileName type string fileType type string - optional and ignored on update sequence type int createdDate type date - optional and ignored on update Output UpdateAttachmentsResponse response type UpdateAttchments - extension of type ResponseMessage attachments type Attachment – minOccurs="0" maxOccurs="unbounded" id type ID - type int with restriction fileName type string fileType type string sequence type int createdDate type date Fault AttachmentFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 265 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:att="http://pb.com/EngageOne/ws/attachment" xmlns:com="http://pb.com/EngageOne/ws/common" xmlns:mod="http://pb.com/EngageOne/ws/model"> <soapenv:Header/> <soapenv:Body> <att:UpdateAttachments> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>sysadmin</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> <workItemId>20</workItemId> <attachments> <mod:id>4</mod:id> <mod:fileName>report.pdf</mod:fileName> <mod:sequence>2</mod:sequence> </attachments> <attachments> <mod:id>5</mod:id> <mod:fileName>O55V7P.pdf</mod:fileName> <mod:sequence>1</mod:sequence> </attachments> </att:UpdateAttachments> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 266 Appendix B - SOAP API </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <ns4:UpdateAttachmentsResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/attachment"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>169e9b3e-6d7c-4ec1-929e-ead23c5f9832</token> </p><p></SessionToken> </authContext> <attachments> <ns3:id>5</ns3:id> <ns3:fileName>O55V7P.pdf</ns3:fileName> <ns3:fileType>pdf</ns3:fileType> <ns3:sequence>1</ns3:sequence> <ns3:createdDate>2016-08-26+02:00</ns3:createdDate> </attachments> <attachments> <ns3:id>4</ns3:id> <ns3:fileName>report.pdf</ns3:fileName> <ns3:fileType>pdf</ns3:fileType> <ns3:sequence>2</ns3:sequence> <ns3:createdDate>2016-08-26+02:00</ns3:createdDate> </attachments> </ns4:UpdateAttachmentsResponse> </soap:Body> </soap:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 267 Appendix B - SOAP API </p><p>Workflow service </p><p>WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/WorkflowService?wsdl Note: Some tags have been broken up for formatting purposes. </p><p> getWorkflowTask() </p><p>Description This Web Service operation is used to get workflow task details. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 268 Appendix B - SOAP API </p><p>Parameters Input GetWorkflowTask request type GetWorkflowTask - extension of type RequestMessage taskId type string - minOccurs="1" maxOccurs="1" Output GetWorkflowTaskResponse response type GetWorkflowTaskResponse - extension of type ResponseMessage WorkflowTaskDetails - extension of type WorkflowTask - minOccurs="1" maxOccurs="1" id type string name type string description type string status type string actualOwner type string externalReferenceName type string externalReferenceId type string externalReferenceType type string externalReferenceSubjectName type string externalReferenceSubjectId type string created type string step type string submitter type string type type WorkflowTaskType - type string enum, values: documentReview, designReview uriToGetTaskDetails type string onBehalfOfGroups type string minOccurs="0" maxOccurs="unbounded" potentialGroups type string minOccurs="0" maxOccurs="unbounded" potentialUsers type string minOccurs="0" maxOccurs="unbounded" allowedActions type string minOccurs="0" maxOccurs="unbounded" instanceId type string isActionableByYou type string projectId type string previewBefore type string previewAfter type string previewDiff type string comparisonStatus type string Fault WorkflowFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 269 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope </p><p> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wor="http://pb.com/EngageOne/ws/workflow" xmlns:com="http://pb.com/EngageOne/ws/common"> </p><p><soapenv:Header/> <soapenv:Body> <wor:GetWorkflowTask> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>user1</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> <taskId>12345</taskId> </wor:GetWorkflowTask> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 270 Appendix B - SOAP API </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> </p><p><soap:Body> <ns4:GetWorkflowTaskResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/workflow"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>7ee7a1ed-5e98-41e7-9dda-4b40637058db</token> </SessionToken> </authContext> <task> <ns3:id>12345</ns3:id> <ns3:name>many users: WF2_step1</ns3:name> <ns3:status>awaitingUser</ns3:status> <ns3:actualOwner>user2</ns3:actualOwner> <ns3:externalReferenceName>15:48:13 - 1969227008</ns3:externalReferenceName> <ns3:externalReferenceId>273</ns3:externalReferenceId> <ns3:externalReferenceType>ENGAGEONE</ns3:externalReferenceType> </p><p><ns3:externalReferenceSubjectName>One</ns3:externalReferenceSubjectName> </p><p><ns3:externalReferenceSubjectId>1033</ns3:externalReferenceSubjectId> </p><p><ns3:created>2016-09-02T15:48:23.277+02:00</ns3:created> <ns3:step>WF2_step1</ns3:step> <ns3:submitter>sysadmin</ns3:submitter> <ns3:type>documentReview</ns3:type> </p><p><ns3:uriToGetTaskDetails>http://localhost:8080/ workflow-services/v1/community1/workflow/tasks/12345/12345</ns3:uriToGetTaskDetails> </p><p><ns3:onBehalfOfGroups/> <ns3:potentialUsers>user2</ns3:potentialUsers> <ns3:potentialUsers>user3</ns3:potentialUsers> <ns3:allowedActions>CLAIM</ns3:allowedActions> </task> </ns4:GetWorkflowTaskResponse> </soap:Body> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 271 Appendix B - SOAP API </p><p></soap:Envelope> </p><p> updateWorkflowTask() </p><p>Description This Web Service operation is used to update workflow task. </p><p>Parameters Input UpdateWorkflowTask request type UpdateWorkflowTask - extension of type RequestMessage taskId type string - minOccurs="1" maxOccurs="1" action type WorkflowTaskAction minOccurs="1" maxOccurs="1" allowed values: "APPROVE", "REJECT", "CLAIM", "DELEGATE", "RELEASE", "RESUBMIT" assignee type string - minOccurs="1" maxOccurs="1" notes type string - minOccurs="1" maxOccurs="1" Output UpdateWorkflowTaskResponse response type UpdateWorkflowTaskResponse - extension of type ResponseMessage WorkflowTaskDetails - extension of type WorkflowTask - minOccurs="1" maxOccurs="1" id type string name type string description type string status type string actualOwner type string externalReferenceName type string externalReferenceId type string externalReferenceType type string externalReferenceSubjectName type string externalReferenceSubjectId type string created type string step type string submitter type string type type WorkflowTaskType - type string enum, values: documentReview, designReview uriToGetTaskDetails type string onBehalfOfGroups type string - minOccurs="0" maxOccurs="unbounded" potentialGroups type string - minOccurs="0" maxOccurs="unbounded" potentialUsers type string - minOccurs="0" maxOccurs="unbounded" allowedActions type string - minOccurs="0" maxOccurs="unbounded" instanceId type string - minOccurs="0" maxOccurs="unbounded" isActionableByYou type string - minOccurs="0" maxOccurs="unbounded" projectId type string - minOccurs="0" maxOccurs="unbounded" previewBefore type string - minOccurs="0" maxOccurs="unbounded" previewAfter type string - minOccurs="0" maxOccurs="unbounded" previewDiff type string - minOccurs="0" maxOccurs="unbounded" comparisonStatus type string - minOccurs="0" maxOccurs="unbounded" Fault WorkflowFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 272 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wor="http://pb.com/EngageOne/ws/workflow" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <wor:UpdateWorkflowTask> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>designReview</com:userId> <com:password>my password</com:password> </com:UsernameToken> </com:authContext> <taskId>2543</taskId> <action>DELEGATE</action> <assignee>WTOffice2</assignee> <notes>test_notes</notes> </wor:UpdateWorkflowTask> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 273 Appendix B - SOAP API </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> </p><p><ns4:UpdateWorkflowTaskResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/workflow"> </p><p><authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>c09d7ff6-b1de-4c5c-a59b-6283d9bdd686</token> </p><p></SessionToken> </authContext> <task> <ns3:id>2543</ns3:id> <ns3:name>many users: Step1</ns3:name> <ns3:status>inActionOther</ns3:status> <ns3:actualOwner>WTOffice2</ns3:actualOwner> <ns3:externalReferenceName>WT_Project - /Simple_Image_Pub</ns3:externalReferenceName> </p><p><ns3:externalReferenceId>5d91acb3-9900-44ab-961e-a40aad831b7e</ns3:externalReferenceId> </p><p><ns3:externalReferenceType>PROJECT_ASSET</ns3:externalReferenceType> </p><p><ns3:externalReferenceSubjectName>Simple_Image_Pub</ns3:externalReferenceSubjectName> </p><p><ns3:externalReferenceSubjectId>15f3cebd-3f09-4ebb-a988-0f32588ee6d2</ns3:externalReferenceSubjectId> </p><p><ns3:created>2016-09-27T12:09:05.797Z</ns3:created> <ns3:step>Step1</ns3:step> <ns3:submitter>admin</ns3:submitter> <ns3:type>designReview</ns3:type> </p><p><ns3:uriToGetTaskDetails>https://WindowsSQLClusteredH155-eolb.pbeo.net:8080/ project-services/v1/Community1/tasks/2543/2543</ns3:uriToGetTaskDetails> </p><p><ns3:instanceId>2527</ns3:instanceId> </p><p><ns3:isActionableByYou>false</ns3:isActionableByYou> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 274 Appendix B - SOAP API </p><p><ns3:onBehalfOfGroups/> <ns3:potentialUsers>WTProjReviewer</ns3:potentialUsers> </p><p><ns3:potentialUsers>WTOffice1</ns3:potentialUsers> </p><p><ns3:projectId>b960f0bc-ce8e-4f71-9077-a98054c25a79</ns3:projectId> </p><p><ns3:previewBefore>https://WindowsSQLClusteredH155-eolb.pbeo.net:8080/ project-services/v1/external-projects/192e92ca-2ffd-44fe-a00b-05aafef161f6/files/ bfbc379f-fddf-49d1-bdff-28ac75f70683</ns3:previewBefore> </p><p><ns3:previewAfter>https://WindowsSQLClusteredH155-eolb.pbeo.net:8080/ project-services/v1/external-projects/192e92ca-2ffd-44fe-a00b-05aafef161f6/files/ a205c38c-7d99-4075-aa48-327315331897</ns3:previewAfter> </p><p><ns3:comparisonStatus>submit</ns3:comparisonStatus> </task> </ns4:UpdateWorkflowTaskResponse> </soap:Body> </soap:Envelope> </p><p> getWorkflowTasks() </p><p>Description This Web Service operation is used to get the list of existing workflow tasks. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 275 Appendix B - SOAP API </p><p>Parameters Input GetWorkflowTasks request type GetWorkflowTasks - extension of type RequestMessage query type string - minOccurs="0" maxOccurs="1" assignedUser type string - minOccurs="0" maxOccurs="1" searchType type string enum, values: all, user, unassigned - minOccurs="1" maxOccurs="1" submitters type string - minOccurs="0" maxOccurs="unbounded" subjects type string - minOccurs="0" maxOccurs="unbounded" types type string - minOccurs="0" maxOccurs="unbounded" statuses type string - minOccurs="0" maxOccurs="unbounded" earliestCreationTime type date - minOccurs="0" maxOccurs="1" latestCreationTime type date - minOccurs="0" maxOccurs="1" order type string - minOccurs="0" maxOccurs="1" pagination type PaginationControls - minOccurs="0" maxOccurs="1" Output GetWorkflowTasksResponse response type GetWorkflowTasksResponse - extension of type ResponseMessage WorkflowTask - minOccurs="0" maxOccurs="unbounded" id type string name type string description type string status type string actualOwner type string externalReferenceName type string externalReferenceType type string externalReferenceSubjectName type string externalReferenceSubjectId type string created type string step type string submitter type string type type WorkflowTaskType - type string enum, values: documentReview, designReview uriToGetTaskDetails type string </p><p>PaginationControls - minOccurs="0" maxOccurs="1" pageNumber type int - minOccurs="0" pageSize type int - minOccurs="0" totalPages type int - minOccurs="0" Fault WorkflowFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 276 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wor="http://pb.com/EngageOne/ws/workflow" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <wor:GetWorkflowTasks> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> <com:name>community1</com:name> </com:ident> </com:domain> <com:userId>sysadmin</com:userId> <com:password>mypassword</com:password> </com:UsernameToken> </com:authContext> <searchType>all</searchType> </wor:GetWorkflowTasks> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 277 Appendix B - SOAP API </p><p>Sample response </p><p><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> </p><p><soap:Body> <ns4:GetWorkflowTaskResponse xmlns:ns2="http://pb.com/EngageOne/ws/common" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/workflow"> <authContext xmlns="http://pb.com/EngageOne/ws/common"> <SessionToken> <token>7ee7a1ed-5e98-41e7-9dda-4b40637058db</token> </p><p></SessionToken> </authContext> <task> <ns3:id>12345</ns3:id> <ns3:name>many users: WF2_step1</ns3:name> <ns3:status>awaitingUser</ns3:status> <ns3:actualOwner>user2</ns3:actualOwner> <ns3:externalReferenceName>15:48:13 - 1969227008</ns3:externalReferenceName> <ns3:externalReferenceId>273</ns3:externalReferenceId> </p><p><ns3:externalReferenceType>ENGAGEONE</ns3:externalReferenceType> </p><p><ns3:externalReferenceSubjectName>One</ns3:externalReferenceSubjectName> </p><p><ns3:externalReferenceSubjectId>1033</ns3:externalReferenceSubjectId> </p><p><ns3:created>2016-09-02T15:48:23.277+02:00</ns3:created> </p><p><ns3:step>WF2_step1</ns3:step> <ns3:submitter>sysadmin</ns3:submitter> <ns3:type>documentReview</ns3:type> </p><p><ns3:uriToGetTaskDetails>http://localhost:8080/ workflow-services/v1/community1/workflow/tasks/12345/12345</ns3:uriToGetTaskDetails> </p><p><ns3:onBehalfOfGroups/> <ns3:potentialUsers>user2</ns3:potentialUsers> <ns3:potentialUsers>user3</ns3:potentialUsers> <ns3:allowedActions>CLAIM</ns3:allowedActions> </task> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 278 Appendix B - SOAP API </p><p></ns4:GetWorkflowTaskResponse> </soap:Body> </soap:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 279 Appendix B - SOAP API </p><p>Delivery service </p><p> suspendDeliveryItem WSDL: http://<engageone-server-host>:<server-port>/EngageOneWS/DeliveryService?wsdl Note: Some tags have been broken up for formatting purposes. </p><p> deleteDeliveryItem() </p><p>Description This Web service deletes a delivery item, as specified by a work item or delivery item. </p><p>Parameters Input DeleteDeliveryItemRequest request type DeleteDeliveryItem - extension of abstract type DeliveryItemMaintRequest - extension of type RequestMessage workItem ident type IntegerIdOrName </p><p> deliveryItem id type ID - type int with restriction </p><p> comment - optional; type string Output DeleteDeliveryItemResponse response type DeleteDeliveryItemResponse - extension of type ResponseMessage Fault DeliveryFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 280 Appendix B - SOAP API </p><p>Sample request </p><p><?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://pb.com/EngageOne/ws/common" xmlns:del="http://pb.com/EngageOne/ws/delivery"> <soapenv:Header /> <soapenv:Body> <del:DeleteDeliveryItem> <com:authContext> <com:SessionToken> </p><p><com:token>0115dd59d1336d44390d9aacb554c320_1261152736859_0</com:token> </p><p></com:SessionToken> </com:authContext> <deliveryItem> <id>501</id> </deliveryItem> <comment>SoapUI Test</comment> </del:DeleteDeliveryItem> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns2:DeleteDeliveryItemResponse xmlns:ns2="http://pb.com/EngageOne/ws/delivery" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/common" xmlns:ns5="http://pb.com/EngageOne/ws/editor"/> </env:Body> </env:Envelope> </p><p> deliverDocument() </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 281 Appendix B - SOAP API </p><p>Description This Web service delivers a document to the specified delivery option. The input is a template identifier, along with the document files (for example, answer, HIP, content properties). A delivery request is created in the system and returned from the service. The status field indicates the status of the delivery request. If the mode of any of the delivery channel associated with the delivery option is IMMEDIATE, the document data is also returned for that delivery channel. A SOAP request sample is provided that shows how to pass a file to the deliverDocument Web service as an MTOM attachment using a standard client tool. This Web service supports on-demand licensing. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 282 Appendix B - SOAP API </p><p>Parameters Input DeliverDocumentRequest request type DeliverDocument - extension of type RequestMessage template ident type IntegerIdOrName files - optional; file - unbounded; ... is recursive </p><p> delilveryOption ident type IntegerIdOrName Output DeliverDocumentResponse response type DeliverDocumentResponse - extension of type ResponseMessage deliveryRequest type DeliveryRequest - extension of abstract type Entity id type ID - type int with restriction status type DeliveryStatus - type string with restriction - enum { 'NEW', 'PROCESSING', </p><p>'COMPOSED', 'DELIVERED', 'HOLD', 'CANCELED', 'RESUMED', 'ERROR', 'VARIOUS' } Note: 'ERROR' status code is returned when the delivery channel fails, because of an attachment conversion issue. (For example, a document attached to a publication is broken and conversion services fail to process it.) This status is different from a normal document composition failure, which occurs when the "main" document generation fails. </p><p> deliveryItems - optional; deliveryItem - unbounded; type DeliveryItem - extension of abstract type Entity id type ID - type int with restriction </p><p> deliveryChannel type DeliveryChannel - extension of abstract type Entity id type ID - type int with restriction name type string mode type DeliveryChannelMode - type string with restriction - enum { 'BATCH', 'IMMEDIATE' } type type DeliveryChannelType - type string with restriction - enum { 'ARCHIVE', 'PRINT', 'EMAIL', 'FAX' } device type Device - extension of abstract type Entity id type ID - type int with restriction name type string type type DeviceType - type string with restriction - enum { 'PDF', 'PS', 'AFP', </p><p>'HTML', 'eHTML' } preview type boolean HIPId type ID - type int with restriction metaId type ID - type int with restriction </p><p> recipient - optional; type Recipient - extension of abstract type Entity id type ID - type int with restriction name type string xpath type string </p><p> status type DeliveryStatus - type string with restriction - enum { 'NEW', 'PROCESSING', 'COMPOSED', 'DELIVERED', 'HOLD', 'CANCELED', 'RESUMED', 'ERROR', 'VARIOUS' } document - optional; type ComposedDocument data type base64Binary Fault DeliveryFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 283 Appendix B - SOAP API </p><p>Sample request </p><p>POST http://localhost:8080/EngageOneWS/DeliveryService HTTP/1.1 Accept-Encoding: gzip,deflate SOAPAction: "http://pb.com/EngageOne/ws/delivery/DeliverDocument" Content-Type: multipart/related; type="application/xop+xml"; start="<rootpart@soapui.org>"; start-info="text/xml"; boundary="----=_Part_0_299804241.1322083558307" MIME-Version: 1.0 User-Agent: Jakarta Commons-HttpClient/3.1 Host: localhost:8080 Content-Length: 2239 </p><p>------=_Part_0_299804241.1322083558307 Content-Type: application/xop+xml; charset=UTF-8; type="text/xml" Content-Transfer-Encoding: 8bit Content-ID: <rootpart@soapui.org> </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:del="http://pb.com/EngageOne/ws/delivery" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <del:DeliverDocument> <com:authContext> <com:UsernameToken> <com:domain> <com:ident> </p><p><com:id>CC62248A-820F-42E7-8F8D-B6CD51DF4B74</com:id> </com:ident> </com:domain> <com:userId>eosuper</com:userId> <com:password>1234</com:password> <com:transientSession>false</com:transientSession> <com:ondemand>false</com:ondemand> </com:UsernameToken> </com:authContext> <template> <ident> <com:name>4933</com:name> </ident> <files> <file> <type>ANSWER</type> <data><inc:Include href="cid:1276245679229" xmlns:inc="http://www.w3.org/2004/08/xop/include"/></data> </file> </files> </template> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 284 Appendix B - SOAP API </p><p><deliveryOption> <ident> <com:name>lp</com:name> </ident> </deliveryOption> </del:DeliverDocument> </soapenv:Body> </soapenv:Envelope> ------=_Part_0_299804241.1322083558307 Content-Type: text/xml; charset=us-ascii Content-Transfer-Encoding: 7bit Content-ID: <1276245679229> </p><p><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <InteractiveDataModel version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c10478fe6de8490ea462a64e518751c9.xsd"> </p><p><Publication> <InteractiveField>Test data</InteractiveField> <DeliveryInformation> <Recipient xsi:nil="true"/> <EmailToAddress xsi:nil="true"/> <EmailFromAddress xsi:nil="true"/> <EmailSubject xsi:nil="true"/> <EmailBody xsi:nil="true"/> <FaxNumber xsi:nil="true"/> <DocumentSelector xsi:nil="true"/> </DeliveryInformation> <g1private/> </Publication> </InteractiveDataModel> ------=_Part_0_299804241.1322083558307--</p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 285 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:DeliverDocumentResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/delivery" xmlns:ns5="http://pb.com/EngageOne/ws/keymap"> <deliveryRequest> <ns2:id>137</ns2:id> <ns2:status>PROCESSING</ns2:status> <ns2:deliveryItems> <ns2:deliveryItem> <ns2:id>3252</ns2:id> <ns2:deliveryChannel> <ns2:id>1</ns2:id> <ns2:name>CH1</ns2:name> <ns2:mode>IMMEDIATE</ns2:mode> <ns2:type>PRINT</ns2:type> <ns2:device> <ns2:id>2</ns2:id> <ns2:name>default pdf</ns2:name> <ns2:type>PDF</ns2:type> <ns2:preview>true</ns2:preview> <ns2:HIPId>312</ns2:HIPId> <ns2:metaId>313</ns2:metaId> </ns2:device> <ns2:recipient> <ns2:id>1</ns2:id> <ns2:name>RRRRRRRRRR</ns2:name> </p><p><ns2:xpath>/InteractiveDataModel/Publication/DeliveryInformation/Receipient</ns2:xpath> </p><p></ns2:recipient> </ns2:deliveryChannel> <ns2:status>DELIVERED</ns2:status> <ns2:document> <ns2:data> <xop:Include href="cid:data-639c053e-ee64-4630-8ada-5091966c518a@ws.jboss.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns2:data> </ns2:document> </ns2:deliveryItem> </ns2:deliveryItems> </deliveryRequest> </ns4:DeliverDocumentResponse> </env:Body> </env:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 286 Appendix B - SOAP API </p><p> previewDocument() </p><p>Description This Web service returns a preview of the document specified in the request. The request includes the template identifier, along with the document files (for example, answer, HIP, property). In order for this operation to work successfully, the preview device needs to be defined in EngageOne Administration. The preview document data is returned in the response as an attachment. </p><p>Parameters Input PreviewDocumentRequest request type PreviewDocument - extension of type RequestMessage template ident type IntegerIdOrName files - optional; file - unbounded; ... is recursive Output PreviewDocumentResponse response type PreviewDocumentResponse - extension of type ResponseMessage document type ComposedDocument data type base64Binary Fault Deliveryfault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 287 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:del="http://pb.com/EngageOne/ws/delivery" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <del:PreviewDocument> <com:authContext> </p><p><com:SessionToken> </p><p><com:token>AQIC5wM2LY4SfcybfdGzpUvpFf4fVau4XU-w7VEHi9SLx_M. *AAJTSQACMDEAAlNLABM3MzUxMTg2ODM5MTcwNTUwNzM1*:default</com:token> </p><p></com:SessionToken> </p><p></com:authContext> <template> <ident> <com:id>119</com:id> </ident> <files> <file> <type>ANSWER</type> <data>cid:278598095431</data> </file> <file> <type>PUBX</type> <data>cid:278598095432</data> </file> <file> <type>HIP</type> <data>cid:278598095433</data> </file> <file> <type>PROPERTY</type> <data>cid:278598095434</data> </file> </files> </template> </del:PreviewDocument> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 288 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:PreviewDocumentResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/delivery" xmlns:ns5="http://pb.com/EngageOne/ws/keymap"> <document> <ns2:data> <xop:Include href="cid:data-bdd85045-1de1-42c2-b0b1-865ea9045a52@ws.jboss.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns2:data> </document> </ns4:PreviewDocumentResponse> </env:Body> </env:Envelope> </p><p> previewWorkItem() </p><p>Description This Web service previews a document associated with a work item. The request includes a work item identifier (id or name) obtained from a previous call to the WorkItemService createWorkItem service operation. The preview device is assumed to be defined through EngageOne Administration. The preview document data is returned in the response as an attachment. Note: In order to preview a work item with Web services, the work item status must not be "Active New" or "Active Incomplete". The work item can be previewed after the required work is completed. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 289 Appendix B - SOAP API </p><p>Parameters Input PreviewWorkItemRequest request type PreviewWorkItem - extension of type RequestMessage workItem ident type IntegerIdOrName Output PreviewWorkItemResponse response type PreviewWorkItemResponse - extension of type ResponseMessage document type ComposedDocument data type base64Binary Fault DeliveryFault fault type ServiceFault </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:del="http://pb.com/EngageOne/ws/delivery" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <del:PreviewWorkItem> <com:authContext> <com:SessionToken> </p><p><com:token>c42356d8ec312e4b471399896cc44e77_1261063384968_1</com:token> </p><p></com:SessionToken> </com:authContext> <workItem> <ident> <com:id>25</com:id> </ident> </workItem> </del:PreviewWorkItem> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 290 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:PreviewWorkItemResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/delivery" xmlns:ns5="http://pb.com/EngageOne/ws/keymap"> <document> <ns2:data> <xop:Include href="cid:data-121f00b4-7d2d-4c75-a20a-1c5ed92563c1@ws.jboss.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/> </ns2:data> </document> </ns4:PreviewWorkItemResponse> </env:Body> </env:Envelope> </p><p> resumeDeliveryItem() </p><p>Description This Web service resumes a delivery item which has been previously suspended via a call to the DeliveryService suspendDeliveryItem operation. The request must contain either the work item identifier (ID or name), or the delivery item ID. An optional comment can be specified as well. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 291 Appendix B - SOAP API </p><p>Parameters Input ResumeDeliveryItemRequest request type ResumeDeliveryItem - extension of abstract type DeliveryItemMaintRequest - extension of type RequestMessage workItem ident type IntegerIdOrName </p><p> deliveryItem id type ID - type int with restriction </p><p> comment - optional; type string Output ResumeDeliveryItemResponse response type ResumeDeliveryItemResponse - extension of type ResponseMessage Fault DeliveryFault fault type ServiceFault </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://pb.com/EngageOne/ws/common" xmlns:del="http://pb.com/EngageOne/ws/delivery"> <soapenv:Header /> <soapenv:Body> <del:ResumeDeliveryItem> <com:authContext> <com:SessionToken> </p><p><com:token>0115dd59d1336d44390d9aacb554c320_1261152736859_0</com:token> </p><p></com:SessionToken> </com:authContext> <deliveryItem> <id>750</id> </deliveryItem> <comment>Resume by soupUI</comment> </del:ResumeDeliveryItem> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 292 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns2:ResumeDeliveryItemResponse xmlns:ns2="http://pb.com/EngageOne/ws/delivery" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/common" xmlns:ns5="http://pb.com/EngageOne/ws/editor"/> </env:Body> </env:Envelope> </p><p> searchDeliveryItems() </p><p>Description This Web service retrieves delivery items associated with a work item or as specified by a delivery item ID. If the search filter is set to DETAIL, the composed document associated with the delivery item is also returned, if it exists (it may not have been composed). </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 293 Appendix B - SOAP API </p><p>Parameters Input SearchDeliveryItemsRequest request type SearchDeliveryItems - extension of type SearchRequestMessage workItems - optional; workItem ident type IntegerIdOrName </p><p> deliveryItems - optional; deliveryItem id type ID - type int with restriction Output SearchDeliveryItemsResponse response type SearchDeliveryItemsResponse - extension of type ResponseMessage deliveryItems - optional; deliveryItem - unbounded; type DeliveryItem - extension of abstract type Entity id type ID - type int with restriction deliveryChannel type DeliveryChannel - extension of abstract type Entity id type ID - type int with restriction name type string mode type DeliveryChannelMode - type string with restriction - enum { 'BATCH', 'IMMEDIATE' } type type DeliveryChannelType - type string with restriction - enum { 'ARCHIVE', 'PRINT', 'EMAIL', 'FAX'} </p><p> device type Device - extension of abstract type Entity id type ID - type int with restriction name type string type type DeviceType - type string with restriction - enum { 'PDF', 'PS', 'AFP', </p><p>'HTML', 'eHTML' } preview type boolean HIPId type ID - type int with restriction metaId type ID - type int with restriction </p><p> recipient - optional; type Recipient - extension of abstract type Entity id type ID - type int with restriction name type string xpath type string Fault DeliveryFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 294 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:del="http://pb.com/EngageOne/ws/delivery" xmlns:com="http://pb.com/EngageOne/ws/common"> <soapenv:Header/> <soapenv:Body> <del:SearchDeliveryItems> <com:authContext> <com:SessionToken> </p><p><com:token>0115dd59d1336d44390d9aacb554c320_1261152736859_0</com:token> </p><p></com:SessionToken> </com:authContext> <com:filter>LIST</com:filter> <workItems> <workItem> <ident> <com:id>27</com:id> </ident> </workItem> </workItems> </del:SearchDeliveryItems> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 295 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns4:SearchDeliveryItemsResponse xmlns:ns2="http://pb.com/EngageOne/ws/model" xmlns:ns3="http://pb.com/EngageOne/ws/common" xmlns:ns4="http://pb.com/EngageOne/ws/delivery" xmlns:ns5="http://pb.com/EngageOne/ws/editor"> </p><p><deliveryItems> <deliveryItem> <ns2:id>501</ns2:id> <ns2:deliveryChannel> <ns2:id>1</ns2:id> <ns2:name>CH1</ns2:name> <ns2:type>PRINT</ns2:type> </ns2:deliveryChannel> <ns2:status>DELIVERED</ns2:status> </deliveryItem> </deliveryItems> </ns4:SearchDeliveryItemsResponse> </env:Body> </env:Envelope> </p><p> suspendDeliveryItem() </p><p>Description This Web service suspends a delivery item specified in the request by a work item identifier (ID or name), or delivery item ID. A suspended delivery item will not be delivered. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 296 Appendix B - SOAP API </p><p>Parameters Input SuspendDeliveryItemRequest request type SuspendDeliveryItem - extension of abstract type DeliveryItemMaintRequest - extension of type RequestMessage workItem ident type IntegerIdOrName deliveryItem id type ID - type int with restriction comment - optional; type string Output SuspendDeliveryItemResponse response type SuspendDeliveryItemResponse - extension of type ResponseMessage Fault DeliveryFault fault type ServiceFault </p><p>Sample request </p><p><?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://pb.com/EngageOne/ws/common" xmlns:del="http://pb.com/EngageOne/ws/delivery"> <soapenv:Header /> <soapenv:Body> <del:SuspendDeliveryItem> <com:authContext> <com:SessionToken> </p><p><com:token>0115dd59d1336d44390d9aacb554c320_1261152736859_0</com:token> </p><p></com:SessionToken> </com:authContext> <deliveryItem> <id>750</id> </deliveryItem> <comment>soapUI</comment> </del:SuspendDeliveryItem> </soapenv:Body> </soapenv:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 297 Appendix B - SOAP API </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns2:SuspendDeliveryItemResponse xmlns:ns2="http://pb.com/EngageOne/ws/delivery" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/common" xmlns:ns5="http://pb.com/EngageOne/ws/editor"/> </env:Body> </env:Envelope> </p><p> updateDeliveryItem() </p><p>Description This Web service can be used to update the status of a delivery item, as specified in the request by a work item identifier (ID or name), or delivery item ID. </p><p>Parameters Input UpdateDeliveryItemRequest request type UpdateDeliveryItem - extension of abstract type DeliveryItemMaintRequest - extension of type RequestMessage workItem ident type IntegerIdOrName </p><p> deliveryItem id type ID - type int with restriction </p><p> comment - optional; type string status type DeliveryStatus - type string with restriction - enum { 'NEW', 'PROCESSING', 'COMPOSED', 'DELIVERED', 'HOLD', 'CANCELED', 'RESUMED', 'ERROR', 'VARIOUS' } Output UpdateDeliveryItemResponse response type UpdateDeliveryItemResponse - extension of type ResponseMessage Fault DeliveryFault fault type ServiceFault </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 298 Appendix B - SOAP API </p><p>Sample request </p><p><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://pb.com/EngageOne/ws/common" xmlns:del="http://pb.com/EngageOne/ws/delivery"> <soapenv:Header /> <soapenv:Body> <del:UpdateDeliveryItem> <com:authContext> <com:SessionToken> </p><p><com:token>0115dd59d1336d44390d9aacb554c320_1261152736859_0</com:token> </p><p></com:SessionToken> </com:authContext> <workItem> <ident> <com:id>38</com:id> </ident> </workItem> <comment>123456</comment> <status>DELIVERED</status> </del:UpdateDeliveryItem> </soapenv:Body> </soapenv:Envelope> </p><p>Sample response </p><p><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> </p><p><env:Header/> <env:Body> <ns2:UpdateDeliveryItemResponse xmlns:ns2="http://pb.com/EngageOne/ws/delivery" xmlns:ns3="http://pb.com/EngageOne/ws/model" xmlns:ns4="http://pb.com/EngageOne/ws/common" xmlns:ns5="http://pb.com/EngageOne/ws/editor"/> </env:Body> </env:Envelope> </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 299 10 - Upgrading 3.X to 4.X SOAP services </p><p>This section details the difference between EngageOne 3.X and 4.X SOAP services. Note: this section does not cover Gen1 SOAP services. These services are no longer available. </p><p>In this section </p><p>Licensing changes 301 Security changes 302 WorkItem approval process not supported 304 DataPushService.mapData not supported 304 Upgrading 3.X to 4.X SOAP services </p><p>Licensing changes </p><p>EngageOne Server 4.X no longer requires a license file at installation time. The license file restricted the: • Total number of communities • Total number of concurrent sessions • Use of OnDemand services These restrictions are no longer enforced at runtime. As a result, the following fields in the AuthContext element are ignored, but must be included in your request: • ondemand • transientsession In addition, the following services do not have the OnDemand licensing requirement, as was the case in 3.X: • DeliverDocument • SearchDeliveryOptions • SearchTemplates </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 301 Upgrading 3.X to 4.X SOAP services </p><p>Security changes </p><p>The following section details security changes that are part of the upgrade to EngageOne 4.X. </p><p>Authentication with WS-Security </p><p>In EngageOne 3.X a custom AuthContext SOAP element is used to send credential information to the server. This authentication mechanism is still supported, but should no longer be used in new development. To improve and modernize the authentication mechanisms of EngageOne Server, the SOAP services now support WS-Security authentication. WS-Security (Web services security) is an industry standard that addresses security when data is exchanged as part of a Web service. This type of authentication is implemented on all EngageOne Server services at the userid/password level. WS-Security specifies enhancements to SOAP messaging that protect the integrity and confidentiality of a message and authenticate the sender. WS-Security specifies how to associate a security token with a message, without specifying what kind of token that is to be used. To use WS-Security you must specify the additional SOAP header elements in all requests. </p><p>Role and access right enforcement </p><p>EngageOne version 4.X introduces new Role and Access Rights restrictions in SOAP services. Users are now required to have the necessary permissions to work with server resources. The following permissions are enforced in 4.X: • Role assignments - methods have been restricted by roles to align with permissions granted in EngageOne Interactive and EngageOne Admin. • Template access rights - when working with resources in the Template/Active Content/Message Content folder structure, the user must have access via an LDAP group specified in EngageOne Admin. For example, SearchTemplates will return templates to which the user has permissions. Some special roles have "unrestricted access" where this does not apply. • WorkItem assignment rights- when working with a Work Item, a user must either be an owner of the Work Item or have "unrestricted access". </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 302 Upgrading 3.X to 4.X SOAP services </p><p>For example, to call DeleteWorkItem the user must be the owner of the Work Item. • Unrestricted access - these roles are not restricted by Template Access and WorkItem Assignment Rights. </p><p>Role and access rights by service </p><p>The following table describes the required roles and additional access rights that are enforced. Roles are abbreviated as follows: • Interactive Roles • Editor • Editor with Saving New Templates </p><p>• CA - Community Administrator • DM - Document Manager • TM - Template Manager • EFM - External File Manager </p><p>Service Required Roles Additional Access Enforced </p><p>DataPush Interactive Roles Template Access Rights </p><p>DM, CA None (unrestricted access) </p><p>DeliveryManagement Interactive Roles Template Access Rights </p><p>DM, CA None (unrestricted access) </p><p>Delivery Interactive Roles WorkItem Assignment Rights </p><p>DM, CA None (unrestricted access) </p><p>Domain No roles required N/A </p><p>Editor Interactive Roles Template Access Rights </p><p>CA None (unrestricted access) </p><p>Keymap EFM, CA N/A </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 303 Upgrading 3.X to 4.X SOAP services </p><p>Service Required Roles Additional Access Enforced </p><p>Metadata Interactive Roles None (unrestricted access) </p><p>Security No roles required </p><p>Template (Interactive features) Interactive Roles WorkItem Assignment Rights </p><p>DM, CA None (unrestricted access) </p><p>Template (Admin features) TM, CA, SA N/A </p><p>WorkItem Interactive Roles WorkItem Assignment Rights </p><p>DM, CA None (unrestricted access) </p><p>WorkItem approval process not supported </p><p>The following methods are not currently supported in EngageOne 4.3, and will return a not supported fault message when called: • WorkItemService.rejectWorkItem • WorkItem.Service.approveWorkItem In addition, WorkItemService.submitWorkItem will only submit work items for delivery. If the work item triggers a workflow approval process, an error will be thrown. </p><p>DataPushService.mapData not supported </p><p> mapDatamethod of DataPushservice is no longer supported. In earlier releases, this method mapped pushed data from the pushData method to a template. In this release, the pushData method performs this operation in advance, and creates a corresponding communication in Interactive for an end-user. If you are using the out-of-the-box Interactive application the pushData call may exclude the specific template. In this case, the Interactive user will be prompted to select a Template. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 304 Upgrading 3.X to 4.X SOAP services </p><p>If you have developed your own Interactive application and opt to use the pushData method, you must specify the template in advance to ensure data is mapped correctly. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 305 Notices Copyright </p><p>Copyright ©2018 Pitney Bowes, Inc. All rights reserved. This publication and the software described in it is supplied under license and may only be used or copied in accordance with the terms of such license. The information in this publication is provided for information only, is subject to change without notice, and should not be construed as a commitment by Pitney Bowes, Inc. (PBS). To the fullest extent permitted by applicable laws PBS excludes all warranties, representations and undertakings (express or implied) in relation to this publication and assumes no liability or responsibility for any errors or inaccuracies that may appear in this publication and shall not be liable for loss or damage of any kind arising from its use. Except as permitted by such license, reproduction of any part of this publication by mechanical, electronic, recording means or otherwise, including fax transmission, without the express permission of PBS is prohibited to the fullest extent permitted by applicable laws. Nothing in this notice shall limit or exclude PBS liability in respect of fraud or for death or personal injury arising from its negligence. Statutory rights of the user, if any, are unaffected. *TALO Hyphenators and Spellers are used. Developed by TALO B.V., Bussum, Netherlands Copyright © 1998 *TALO B.V., Bussum, NL *TALO is a registered trademark ® Encryption algorithms licensed from Unisys Corp. under U.S. Patent No. 4,558,302 and foreign counterparts. Security algorithms Copyright © 1991-1992 RSA Data Security Inc Copyright © DL Technology Ltd 1992-2010 Barcode fonts Copyright © 1997 Terrapin Solutions Ltd. with NRB Systems Ltd. This product includes software developed by the Apache Software Foundation (http://www.apache.org/). Artifex and the Ghostscript logo are registered trademarks and the Artifex logo and Ghostscript are trademarks of Artifex Software, Inc. This product contains the Regex++ library Copyright © 1998-2000 Dr. John Maddock PostScript is a trademark of Adobe Systems Incorporated. PCL is a trademark of Hewlett Packard Company. Copyright (c) 2000 - 2015 The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org) ICU License - ICU 1.8.1 and later Copyright (c) 1995-2006 International Business Machines Corporation and others All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. Matra 0.8b (http://matra.sourceforge.net/) The contents of this documentation are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this documentation except in </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 307 Copyright </p><p> compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/. Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Otherwise all product names are trademarks or registered trademarks of their respective holders. This product contains Sycamore, version number 0.3.9, which is licensed under the MIT license. The license can be downloaded from https://github.com/ryexley/sycamore/blob/master/dist/requester.js. The source code for this software is available from https://github.com/ryexley/sycamore. This product contains Underscore, version number 1.5.2, which is licensed under the MIT license. The license can be downloaded from https://github.com/jashkenas/underscore/blob/master/LICENSE. The source code for this software is available from http://underscorejs.org/. This product contains Activiti, version number 5.17.0, which is licensed under the Apache license. The license can be downloaded from http://activiti.org/faq.html#WhyApacheLicense. The source code for this software is available from http://activiti.org/download.html. This product contains Bootstrap, version number 3.3.6, which is licensed under the MIT license. The license can be downloaded from http://getbootstrap.com/getting-started/#license-faqs. The source code for this software is available from http://getbootstrap.com/getting-started/#download. This product contains Commons-Configuration, version number 1.10, which is licensed under the Apache license. The license can be downloaded from http://www.apache.org/licenses/. The source code for this software is available from http://commons.apache.org/proper/commons-configuration/. This product contains jQuery, version number 1.10.2, which is licensed under the MIT license. The license can be downloaded from https://jquery.org/license/. The source code for this software is available from http://jquery.com/download/. This product contains Json2/JSON-js 2015-05-03. The source code for this software is available from https://github.com/douglascrockford/JSON-js. This product contains Kendo UI Core, version number 2014.1.318, which is licensed under the Apache2 license. The license can be downloaded from https://github.com/telerik/kendo-ui-core. The source code for this software is available from http://www.telerik.com/download/kendo-ui-core. This product contains Knockout-AMD-Helpers, version number 0.7.4, which is licensed under the MIT license. The license can be downloaded from https://github.com/rniemeyer/knockout-amd-helpers/blob/master/LICENSE. The source code for this software is available from https://github.com/rniemeyer/knockout-amd-helpers. This product contains Knockout, version number 3.4.0, which is licensed under the MIT license. The license can be downloaded from https://github.com/knockout/knockout/blob/master/LICENSE. The source code for this software is available from http://knockoutjs.com/downloads/. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 308 Copyright </p><p>This product contains Knockout-DelegatedEvents, version number 0.5.0, which is licensed under the MIT license. The license can be downloaded from https://github.com/rniemeyer/knockout-delegatedEvents#license. The source code for this software is available from https://github.com/rniemeyer/knockout-delegatedEvents. This product contains Knockout-Kendo, version number 0.8.1, which is licensed under the Apache2 license. The license can be downloaded from http://rniemeyer.github.io/knockout-kendo/index.html. The source code for this software is available from http://rniemeyer.github.io/knockout-kendo/. This product contains LDAP Synchornization Connector, version number 2.1.0, which is licensed under the BSD license. The license can be downloaded from http://tools.lsc-project.org/projects/lsc/repository/entry/lsc/trunk/LICENSE.txt. The source code for this software is available from http://lsc-project.org/wiki/download. This product contains Moment.js, version 2.12.0, which is licensed under the MIT license. The license can be downloaded from https://github.com/moment/moment/blob/develop/LICENSE. The source code for this software is available from http://momentjs.com/. This product contains Quartz-Scheduler, version number 2.2.1, which is licensed under the Apache license. The license can be downloaded from http://quartz-scheduler.org/. The source code for this software is available from http://quartz-scheduler.org. This product contains RequireJS-Text, version number 2.0.14, which is licensed under the BSD and MIT licenses. The license can be downloaded from https://github.com/requirejs/text/blob/master/LICENSE. The source code for this software is available from https://github.com/requirejs/text. This product contains Solr-Solrj, version number 4.7.2, which is licensed under the Apache License. The license can be downloaded from https://maven-repository.com/artifact/org.apache.solr/solr-solrj/4.7.2/pom. The source code for this software is available from http://wiki.apache.org/solr/Solrj. This product contains RequireJS, version number 2.2.0, which is licensed under the BSD and MIT licenses. The license can be downloaded from https://github.com/jrburke/requirejs/blob/master/LICENSE. The source code for this software is available from http://requirejs.org/docs/download.html. This product contains Apache ActiveMQ, version number 5.13.2, which is licensed under the Apache license, version number 2.0. The license can be downloaded from http://www.apache.org/licenses/.The source code for this software is available from http://activemq.apache.org This product contains Apache NMS version 1.7.2, which is licensed under the Apache license, version number 2.0. The license can be downloaded from http://www.apache.org/licenses/.The source code for this software is available from: http://activemq.apache.org/nms This product contains Apache Commons DBCP, version number 1.2.2, which is licensed under the Apache license, version number 2.0. The license can be downloaded from http://www.apache.org/licenses/.The source code for this software is available from https://commons.apache.org/proper/commons-dbcp/. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 309 Copyright </p><p>This product contains OWASP Encoder, version number 1.2, which is licensed under the BSD license. The license can be downloaded from https://opensource.org/licenses/BSD-3-Clause. The source code for this software is available from https://www.owasp.org/index.php/OWASP_Java_Encoder_Project. This product contains Narayan, version number 5.2.13.Final, which is licensed under the LGPL license, version number 2.1. The license can be downloaded from http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt. The source code for this software is available from http://narayana.io/. 0 This product contains Logback, version number 1.1.3, which is licensed under the EPL and LGPL licenses, version numbers 1.0 and 2.1. The license can be downloaded from http://logback.qos.ch/license.html. The source code for this software is available from http://logback.qos.ch/. This product contains JBoss Weld, version number 2.3.3.Final, which is licensed under the Apache license, version number 2.0. The license can be downloaded from http://www.apache.org/licenses/LICENSE-2.0.The source code for this software is available from http://weld.cdi-spec.org. This product contains IronJacamar, version number 1.3.2.Final, which is licensed under the LGPL license, version number 2.1. The license can be downloaded from http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt. The source code for this software is available from http://www.ironjacamar.org/. This product contains Hibernate, version number 5.0.7.Final, which is licensed under the Apache and LGPL license, version numbers 2.0 and 2.1. The license can be downloaded from http://hibernate.org/community/license/. The source code for this software is available from http://hibernate.org/orm/. This product contains Apache Tomcat, version number 8.0.30, which is licensed under the Apache license, version number 2.0. The license can be downloaded from http://www.apache.org/licenses/LICENSE-2.0. The source code for this software is available from http://tomcat.apache.org/. This product contains Apache Procrun, version number 1.0.15, which is licensed under the Apache license, version number 2.0. The license can be downloaded from http://www.apache.org/licenses/.The source code for this software is available from http://commons.apache.org/proper/commons-daemon/procrun.html This product contains URLRewriterFilter, version number 4.0.3, which is licensed under the BSD 2-Clause license. The license can be downloaded from: http://cdn.rawgit.com/paultuckey/urlrewritefilter/master/src/doc/manual/4.0/introduction.html#license.The source code for this software is available from http://www.tuckey.org/urlrewrite/. This product contains FasterXML Jackson, version number 2.6.6, which is licensed under the Apache license, version number 2.0. The license can be downloaded from http://www.apache.org/licenses/. The source code for this software is available from https://github.com/FasterXML/jackson. </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 310 Copyright </p><p>This product contains Log4net. The license for log4net can be downloaded from https://www.apache.org/licenses/LICENSE-2.0. The source code for this software is available from https://logging.apache.org/log4net/download_log4net.cgi . </p><p>EngageOne® Compose EngageOne® Server Programmer's Reference Guide 311 pitney bowes 0 </p><p>3001 Summer Street Stamford CT 06926-0700 USA www.pitneybowes.com/us </p><p>© 2019 Pitney Bowes Software Inc. All rights reserved </p> </div> </article> </div> </div> </div> <script type="text/javascript" async crossorigin="anonymous" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8519364510543070"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script> var docId = 'a5daecf35dfe80dc54a689afc52d0f78'; var endPage = 1; var totalPage = 312; var pfLoading = false; window.addEventListener('scroll', function () { if (pfLoading) return; var $now = $('.article-imgview .pf').eq(endPage - 1); if (document.documentElement.scrollTop + $(window).height() > $now.offset().top) { pfLoading = true; endPage++; if (endPage > totalPage) return; var imgEle = new Image(); var imgsrc = "//data.docslib.org/img/a5daecf35dfe80dc54a689afc52d0f78-" + endPage + (endPage > 3 ? ".jpg" : ".webp"); imgEle.src = imgsrc; var $imgLoad = $('<div class="pf" id="pf' + endPage + '"><img src="/loading.gif"></div>'); $('.article-imgview').append($imgLoad); imgEle.addEventListener('load', function () { $imgLoad.find('img').attr('src', imgsrc); pfLoading = false }); if (endPage < 7) { adcall('pf' + endPage); } } }, { passive: true }); </script> <script> var sc_project = 11552861; var sc_invisible = 1; var sc_security = "b956b151"; </script> <script src="https://www.statcounter.com/counter/counter.js" async></script> </html>