Oracle IDS Internet Document Server User guide
விளம்பரம்
விளம்பரம்
Start
Oracle
®
Documaker
Internet Document Server
Guide
version 2.6
Part number: E51709-01
March 2014
Notice
Copyright © 2009, 2014, Oracle and/or its affiliates. All rights reserved.
The Programs (which include both the software and documentation) contain proprietary information; they are provided under a license agreement containing restrictions on use and disclosure and are also protected by copyright, patent, and other intellectual and industrial property laws. Reverse engineering, disassembly, or decompilation of the Programs, except to the extent required to obtain interoperability with other independently created software or as specified by law, is prohibited.
The information contained in this document is subject to change without notice. If you find any problems in the documentation, please report them to us in writing. This document is not warranted to be error-free. Except as may be expressly permitted in your license agreement for these Programs, no part of these Programs may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose.
If the Programs are delivered to the United States Government or anyone licensing or using the Programs on behalf of the United States
Government, the following notice is applicable:
U.S. GOVERNMENT RIGHTS
Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the Programs, including documentation and technical data, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement, and, to the extent applicable, the additional rights set forth in FAR 52.227-19, Commercial Computer Software--Restricted Rights (June 1987). Oracle
USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065.
The Programs are not intended for use in any nuclear, aviation, mass transit, medical, or other inherently dangerous applications. It shall be the licensee's responsibility to take all appropriate fail-safe, backup, redundancy and other measures to ensure the safe use of such applications if the Programs are used for such purposes, and we disclaim liability for any damages caused by such use of the Programs.
The Programs may provide links to Web sites and access to content, products, and services from third parties. Oracle is not responsible for the availability of, or any content provided on, third-party Web sites. You bear all risks associated with the use of such content. If you choose to purchase any products or services from a third party, the relationship is directly between you and the third party. Oracle is not responsible for: (a) the quality of third-party products or services; or (b) fulfilling any of the terms of the agreement with the third party, including delivery of products or services and warranty obligations related to purchased products or services. Oracle is not responsible for any loss or damage of any sort that you may incur from dealing with any third party.
Oracle, JD Edwards, and PeopleSoft are registered trademarks of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
THIRD PARTY SOFTWARE NOTICES
This product includes software developed by Apache Software Foundation (http://www.apache.org/).
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Copyright © 2000-2009 The Apache Software Foundation. All rights reserved.
This product includes software distributed via the Berkeley Software Distribution (BSD) and licensed for binary distribution under the Generic BSD license.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Copyright © 2009, Berkeley Software Distribution (BSD)
This product includes software developed by the JDOM Project (http://www.jdom.org/).
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved.
This product includes software developed by the Massachusetts Institute of Technology (MIT).
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Copyright © 2009 MIT
This product includes software developed by Jean-loup Gailly and Mark Adler. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
Copyright (c) 1995-2005 Jean-loup Gailly and Mark Adler
This software is based in part on the work of the Independent JPEG Group (http://www.ijg.org/).
This product includes software developed by the Dojo Foundation (http://dojotoolkit.org).
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Copyright (c) 2005-2009, The Dojo Foundation. All rights reserved.
This product includes software developed by W3C.
Copyright © 2009 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en
Informatique et en Automatique, Keio University). All Rights Reserved. (http://www.w3.org/Consortium/Legal/)
This product includes software developed by Mathew R. Miller (http://www.bluecreststudios.com).
Copyright (c) 1999-2002 ComputerSmarts. All rights reserved.
This product includes software developed by Shaun Wilde and distributed via Code Project Open License (http:// www.codeproject.com).
THIS WORK IS PROVIDED "AS IS", "WHERE IS" AND "AS AVAILABLE", WITHOUT ANY EXPRESS OR IMPLIED
WARRANTIES OR CONDITIONS OR GUARANTEES. YOU, THE USER, ASSUME ALL RISK IN ITS USE, INCLUDING
COPYRIGHT INFRINGEMENT, PATENT INFRINGEMENT, SUITABILITY, ETC. AUTHOR EXPRESSLY DISCLAIMS
ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES OR CONDITIONS, INCLUDING WITHOUT LIMITATION,
WARRANTIES OR CONDITIONS OF MERCHANTABILITY, MERCHANTABLE QUALITY OR FITNESS FOR A
PARTICULAR PURPOSE, OR ANY WARRANTY OF TITLE OR NON-INFRINGEMENT, OR THAT THE WORK (OR ANY
PORTION THEREOF) IS CORRECT, USEFUL, BUG-FREE OR FREE OF VIRUSES. YOU MUST PASS THIS
DISCLAIMER ON WHENEVER YOU DISTRIBUTE THE WORK OR DERIVATIVE WORKS.
This product includes software developed by Chris Maunder and distributed via Code Project Open License (http:// www.codeproject.com).
THIS WORK IS PROVIDED "AS IS", "WHERE IS" AND "AS AVAILABLE", WITHOUT ANY EXPRESS OR IMPLIED
WARRANTIES OR CONDITIONS OR GUARANTEES. YOU, THE USER, ASSUME ALL RISK IN ITS USE, INCLUDING
COPYRIGHT INFRINGEMENT, PATENT INFRINGEMENT, SUITABILITY, ETC. AUTHOR EXPRESSLY DISCLAIMS
ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES OR CONDITIONS, INCLUDING WITHOUT LIMITATION,
WARRANTIES OR CONDITIONS OF MERCHANTABILITY, MERCHANTABLE QUALITY OR FITNESS FOR A
PARTICULAR PURPOSE, OR ANY WARRANTY OF TITLE OR NON-INFRINGEMENT, OR THAT THE WORK (OR ANY
PORTION THEREOF) IS CORRECT, USEFUL, BUG-FREE OR FREE OF VIRUSES. YOU MUST PASS THIS
DISCLAIMER ON WHENEVER YOU DISTRIBUTE THE WORK OR DERIVATIVE WORKS.
This product includes software developed by PJ Arends and distributed via Code Project Open License (http:// www.codeproject.com).
THIS WORK IS PROVIDED "AS IS", "WHERE IS" AND "AS AVAILABLE", WITHOUT ANY EXPRESS OR IMPLIED
WARRANTIES OR CONDITIONS OR GUARANTEES. YOU, THE USER, ASSUME ALL RISK IN ITS USE, INCLUDING
COPYRIGHT INFRINGEMENT, PATENT INFRINGEMENT, SUITABILITY, ETC. AUTHOR EXPRESSLY DISCLAIMS
ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES OR CONDITIONS, INCLUDING WITHOUT LIMITATION,
WARRANTIES OR CONDITIONS OF MERCHANTABILITY, MERCHANTABLE QUALITY OR FITNESS FOR A
PARTICULAR PURPOSE, OR ANY WARRANTY OF TITLE OR NON-INFRINGEMENT, OR THAT THE WORK (OR ANY
PORTION THEREOF) IS CORRECT, USEFUL, BUG-FREE OR FREE OF VIRUSES. YOU MUST PASS THIS
DISCLAIMER ON WHENEVER YOU DISTRIBUTE THE WORK OR DERIVATIVE WORKS.
This product includes software developed by Erwin Tratar. This source code and all accompanying material is copyright (c) 1998-
1999 Erwin Tratar. All rights reserved.
THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. USE IT AT YOUR OWN
RISK! THE AUTHOR ACCEPTS NO LIABILITY FOR ANY DAMAGE/LOSS OF BUSINESS THAT THIS PRODUCT MAY
CAUSE.
This product includes software developed by Sam Leffler of Silicon Graphics.
THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR
OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE.
IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY
THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE
Copyright (c) 1988-1997 Sam Leffler
Copyright (c) 1991-1997 Silicon Graphics, Inc.
This product includes software developed by Guy Eric Schalnat, Andreas Dilger, Glenn Randers-Pehrson (current maintainer), and others. (http://www.libpng.org)
The PNG Reference Library is supplied "AS IS". The Contributing Authors and Group 42, Inc. disclaim all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The Contributing
Authors and Group 42, Inc. assume no liability for direct, indirect, incidental, special, exemplary, or consequential damages, which may result from the use of the PNG Reference Library, even if advised of the possibility of such damage.
This product includes software components distributed by the Cryptix Foundation.
THIS SOFTWARE IS PROVIDED BY THE CRYPTIX FOUNDATION LIMITED AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
CRYPTIX FOUNDATION LIMITED OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
Copyright © 1995-2005 The Cryptix Foundation Limited. All rights reserved.
This product includes software components distributed by Sun Microsystems.
This software is provided "AS IS," without a warranty of any kind. ALLEXPRESS OR IMPLIED CONDITIONS,
REPRESENTATIONS AND WARRANTIES, INCLUDING ANYIMPLIED WARRANTY OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS
LICENSORS SHALL NOT BELIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
MODIFYING OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,
CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE
THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.
This product includes software components distributed by Dennis M. Sosnoski.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS'" AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Copyright © 2003-2007 Dennis M. Sosnoski. All Rights Reserved
It also includes materials licensed under Apache 1.1 and the following XPP3 license
THIS SOFTWARE IS PROVIDED "AS IS'" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Copyright © 2002 Extreme! Lab, Indiana University. All Rights Reserved
This product includes software components distributed by CodeProject. This software contains material that is © 1994-2005 The
Ultimate Toolbox, all rights reserved.
This product includes software components distributed by Geir Landro.
Copyright © 2001-2003 Geir Landro ([email protected]) JavaScript Tree - www.destroydrop.com/hjavascripts/tree/version
0.96
This product includes software components distributed by the Hypersonic SQL Group.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS'" AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
Copyright © 1995-2000 by the Hypersonic SQL Group. All Rights Reserved
This product includes software components distributed by the International Business Machines Corporation and others.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Copyright (c) 1995-2009 International Business Machines Corporation and others. All rights reserved.
This product includes software components distributed by the University of Coimbra.
University of Coimbra distributes this software in the hope that it will be useful but DISCLAIMS ALL WARRANTIES WITH
REGARD TO IT, including all implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. In no event shall University of Coimbra be liable for any special, indirect or consequential damages (or any damages whatsoever) resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use or performance of this software.
Copyright (c) 2000 University of Coimbra, Portugal. All Rights Reserved.
This product includes software components distributed by Steve Souza.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS'" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Copyright © 2002, Steve Souza ([email protected]). All Rights Reserved.
This product includes software developed by the OpenSymphony Group (http://www.opensymphony.com/.)"
Copyright © 2001-2004 The OpenSymphony Group. All Rights Reserved.
PANTONE (R) Colors displayed in the software application or in the user documentation may not match PANTONE-identified standards. Consult current PANTONE Color Publications for accurate color. PANTONE(R) and other Pantone LLC trademarks are the property of Pantone LLC. (C) Pantone LLC, 2011.
Pantone LLC is the copyright owner of color data and/or software which are licensed to Oracle to distribute for use only in combination with Oracle Documaker. PANTONE Color Data and/or Software shall not be copied onto another disk or into memory unless part of the execution of Oracle Documaker.
Contents
C
ONTENTS
Processing Documents Using the Internet 1
Overview 2
Required Components 6
Using the Internet Document Server 9
Overview 11
Using Multiple Servers 46
Setting Up a Windows NT Service 50
Handling Multi-threaded Requests 51
Using Rules Written in Other Scripting Languages 54
Using IDS as a Client to Another IDS 55
Monitoring IDS with SNMP Tools 60
Managing IDS Instances 62
Sending Results and Receiving Requests in Multiple Formats 71
Logging and Tracing 74
Configuring IDS 93
Referencing Attachment Variables 100
Using the Message Queues 102
Using the Java Message Service (JMS) 108
Using WebSphere MQ 111
Using HTTP 124
Using Multiple Bridges 128
Submitting Batch Requests 130
Printing in Duplex Mode to PCL Printers 131
Using IDS to Distribute Email 132
Attaching Documents to Documaker Transactions 141
Using IDS to Run Documaker 147
Using the XML Messaging System 161
Connecting to an SQL Database 169
Using the Thin Client Forms Publisher 174
Pausing IDS 175
ix
Contents
Executing Request Types at Run Time 178
Publishing Your Forms on the Web 180
Formatting Text with XML Markup 181
Encrypting and Decrypting Data Files 182
Using Multiple Attachment Values with the Same Name 183
Converting XML Files Using a Template 186
Customizing Your System 190
Handling Security Issues 193
Using LDAP Support 195
Using Default Time-outs for DSILIB-Based Client Applications 196
Running Timed Requests 198
In-Process Rendering for DPAView 199
Using DAL Functions for WIP Column Access 200
Using Enterprise Web Processing Services 202
Determining the Patch Level 203
Creating Output Files 205
Creating PDF Files 206
Creating HTML Files 207
Creating XML Output 208
Using Docucorp Publishing Services 209
DPS Object Properties 212
Setting Default Parameters 218
Sample VB Code 220
Sample C Code 221
Sample Java Code 223
Setting Up IDS 225
Setting Up Documaker 227
Using the DP.DLL ActiveX Interface 229
Requirements 230
Setting Up the Configuration File 231
Properties 233
x
Methods 234
Examples 243
Appendix A, System Files 247
IDS Configuration Files 248
Sample Output Files 251
Appendix B,Error Messages 257
Displaying Error Messages 258
AFP Error Messages 262
Appendix C,Utilities 293
CRYRUW32 294
DataCrypt 295
DSITEST 296
FAP2HTML 299
FD2HTW32 302
FILE2IDS 303
FORMPUB 305
PatchReporter 306
PTFMDW32 307
VERS2REG 308
VERSUPD 309
UPDWDT 311
Appendix D, Error Messages 313
Index 343
Contents xi
Contents xii
Chapter 1
Processing Documents Using the Internet
Oracle offers a comprehensive range of scalable high-performance products for every step in the life cycle of a document. These include...
• Creation Solutions to capture data and create forms
• Publishing Solutions to volume produce personalized documents
• Archival Solutions to intelligently store and retrieve documents
• Management Solutions to control and network documents
• Development Tools to customize your Oracle solutions
Oracle’s Management Solutions give you the ability to move and view your documents across the enterprise. In addition to advanced document networking communication products, Oracle has Internet solutions for managing your documents.
Docupresentment’s Internet Document Server (IDS) helps manage the flow of your documents.
IDS lets you access your documents with a web browser from your intranet or the
Internet. The standard web browser interface includes security features, document database lookup, and document viewing in PDF format using the Adobe Acrobat Reader.
This chapter provides an overview of IDS, its concepts, what it can offer you, as well as how it fits into the Oracle’s family of solutions.
1
Chapter 1
Processing Documents Using the Internet
O
VERVIEW
For many years Oracle has been creating document solutions capable of handling the high-volume, automated assembly needs of customers like you.
Through products such as Documaker and Documerge, Oracle has provided clients in industries as diverse as insurance, finance, and utilities, with high-volume document creation, processing, printing, and archiving solutions.
These solutions have typically concentrated on printed output although the real focus has always been to deliver the high quality documents in the most cost-effective manner, and to eliminate paper where ever possible.
The rapid acceptance of the Internet and in-house intranets has created a new and costeffective way to provide the timely, on-demand delivery of critical documents to remote end-users equipped with only a minimum of standard software.
To address the need for Internet document processing, as well as other new technologies,
Oracle developed a line of products which support distributed documents. These new products are collectively called Document Management Solutions and include interfaces to document storage and retrieval systems, as well as WYSIWYG document publishing and delivery via the Internet or your in-house intranet.
The foundation for document publishing and delivery, is Docupresentment’s Internet
Document Server. The server works with front-end thin clients via the Internet (or an intranet) and executes back-end document processing applications.
Internet
Browser
Web Server
Docupresentment’s
Internet Document
Server
Docupresentment bridges, rules, runtimes, and templates
Network File Server
Data
Docupresentment supports several installable components, called bridges. These bridges provide the software, interface document templates, and runtimes, necessary to process, store, publish, and deliver your documents.
Currently, Oracle has released several bridges, such as the one to the Documaker archive and the one to Documanage. These bridges provide retrieval and PDF publishing of archived Documaker document sets and a bridge to Metacode and AFP print streams.
2
Overview
In addition, Oracle also provides a way to distribute documents produced by the
GenPrint program, the print component of the Documaker system. With the PDF Print
Driver, Oracle gives Documaker users several ways to distribute documents via the
Internet:
• From Documaker’s archive component (the GenArc program)
• From Documaker’s print component (the GenPrint program)
The Internet Document Server and the bridges to Documaker and Documanage are the first in a series of new products from Oracle. Over time, new product offerings from
Oracle will provide additional solutions in these areas.
• Internet and intranet-based document processing
• Client-server processing
• Workflow management
• Integration with existing document management and storage subsystems
...as well as other specialized applications that integrate with Windows and Microsoft’s
BackOffice.
• Management Solutions. Some components will provide totally new stand-alone systems and capabilities, while others focus on leveraging and extending existing
Oracle applications. Internet Document Processing is an example of a new component that can be used to leverage existing applications and data with extended functionality.
• Docupresentment Bridges. These components are designed for use with existing applications or other custom built interfaces. Oracle offers a wide range of technical and professional services for designing and building custom bridges.
• Existing applications. These components cover a wide range of new and existing products and applications from Oracle’s various divisions, as well as other in-house or legacy systems.
HTML vs. PDF
The standard underlying delivery mechanism of the Internet and the World Wide Web is
HTML documents delivered via HTTP. HTML (Hyper-text Markup Language) files are essentially simple text files, marked up with formatting commands which appear alongside the text. The problem is that HTML focuses primarily on maintaining document content and not the exact look-and-feel of the document.
The challenge for Oracle is to deliver a standardized solution in an area that is Oracle’s strength—reproducing the exact look-and-feel of a document set, not just the content, across multiple platforms.
In addition, another challenge is to provide a solution that supports the growing body of
thin client workstations attached to the Internet, requiring only a minimum of end-user software.
To meet these and other challenges, Oracle stores and creates files in Portable Document
Format (PDF). the PDF file fomat is the industry standard, providing a searchable, open format that maintains the look-and-feel of the original documents and works across a variety of platforms.
3
Chapter 1
Processing Documents Using the Internet
In addition, using Adobe Software’s Acrobat Reader, a free application anyone can download from the Internet, thin-client end users can easily view and print complete document sets which are identical to the original documents.
N
OTE
:
You can read more about Adobe’s Portable Document Format and download the
Adobe Acrobat Reader from Adobe’s web site at www.adobe.com
.
4
Overview
A
RCHITECTURAL
C
HANGES IN
V
ERSION
2.
X
The core architecture of Internet Document Server changed in version 2.0 to allow major enhancements of current and future functionality. The single-tasking architecture of
Internet Document Server version 1.8 was replaced with a multitasking one that can handle several tasks at once, allowing greater throughput and fewer pauses. Tasks now handled concurrently include
• Handling of certain types of requests. Rules for requests that are written in a threadsafe manner can be run at the same time in one instance of IDS.
• Purging of cached files that have expired. When processing requests, IDS can produce temporary files, which are given a length of time to exist before they are automatically deleted. IDS version 1.8 had to stop processing requests to periodically purge these files; IDS version 2.
x
does not pause request processing to purge files.
• Receiving requests from a messaging queue.
• Sending results back to a different messaging queue.
• Handling multiple incoming and outgoing HTTP requests.
• Watching the running rules to see if they are taking too long.
• Looking for changes to the configuration file and restart IDS.
• Looking for changes to logging configuration and incorporate changes without restarting IDS.
In addition to using HTTP as a transport of SOAP messages, IDS can respond to requests formatted as a URL from a browser and display results in HTML. The XML result produced by IDS is transformed by XSLT templates into HTML; there can be a different
XSLT template for each request, or a default will be used.
In addition to HTTP, WebSphere MQ and MSMQ, IDS version 2.
x
can use Java
Messaging Service (JMS) queues for sending and receiving messages. JMS is a standard for messaging used by J2EE application servers, such as WebSphere, WebLogic and JBoss.
You can configure IDS version 2.
x
to handle requests from both message queues and from HTTP in the same instance; version 1.8 could only do one or the other.
The format of requests coming in to IDS is configurable and extensible. If a third-party application wants to send requests in formats other than SOAP, custom translators can be installed in IDS. When IDS receives a request it will recognize the format and the result will be sent back in the same format as it was received.
IDS can be monitored by the Simple Network Management Protocol (SNMP). This is the standard protocol used by manufacturers of networking hardware (such as routers), printers and computers to monitor uptime and usage statistics. IDS appears as another piece of equipment to SNMP monitoring applications.
Version 2.
x
also enhances IDS’s error logging and tracing capabilities. Logging messages can be assigned a severity level (DEBUG, INFO, WARN, ERROR or FATAL) and logging messages can be routed to multiple destinations including the console screen, files, the Windows event logger, the UNIX syslog daemon, and email. Logging options can be changed without restarting IDS, making the diagnosing of problems easier.
Details on these features can be found in this manual and in the SDK Reference.
5
Chapter 1
Processing Documents Using the Internet
6
C
R
EQUIRED
OMPONENTS
Provided by the enduser
Provided by the Oracle license-holder
To use Oracle’s Internet document processing solution, you need several components.
Some components are included in Oracle’s Internet Document Server, while others are included in the various bridges. Other required components must be provided by the enduser or the license-holder. The basic components are:
W
EB
B
ROWSER
. An end-user workstation must have a working web browser that supports Adobe Acrobat Reader version 7.0 or higher. Oracle has tested successfully with
Microsoft Internet Explorer 6.0 and higher. To download a copy of Adobe Acrobat
Reader, go to: http://www.adobe.com
I
NTERNET
A
CCESS
. An installed and working Internet (or intranet) connection, including the necessary hardware and software, Internet provider account, modem, and so on. The access should provide acceptable performance when downloading large files.
JAVA R
UNTIME
E
NVIRONMENT
. Java and the Java runtime environment (JRE) are only required if you are using Java rules or a Java client. A Java Runtime Environment
(JRE) or the Java Software Development Kit (JDK), version 1.5 (‘Java 5’) is recquired.
You can download a free runtime environment at: http://java.sun.com
To run certain rules, the Java Cryptography Extension is required. It is included in Java runtimes version 1.5 and later.
S
ERVER
. An installed and working server, such as Microsoft Windows (2000 or XP).
W
EB
S
ERVER
. An installed and working web server, such as a web server with Windows
2000 Server or Windows 2003 Server and Microsoft Internet Information Server 5.0 (or higher). While you can use Windows XP for development and testing purposes, do not use it as a production web server.
N
OTE
:
All of these components should be installed and working before you install IDS.
In general, end-users will be supported and trained on these applications by their own experienced in-house Internet support group. Contact your Oracle sales representative to inquire about the services and consulting packages Oracle offers.
Internet Document
Server
Components Available from Oracle
This component includes:
• Internet Document Server
• Sample programs written in Java and C++
• Sample programs, rules and ActiveX components written in Microsoft Visual Basic.
(Windows only)
• Sample Microsoft Active Server Page (Windows only)
• Sample Java Server Page programs
Required Components
Documaker Bridge
• Documentation (see
Using the Internet Document Server, beginning on page 9 )
This optional component includes:
• The bridge PDF generator
• Subset Documaker runtime to support archive/retrieve rules
• Rules to support Documerge Metacode and AFP output
• Utility for creating graphics files
• Utilities for creating and checking fonts
• Documentation (see the separate manual entitled, Using the Documaker Bridge )
Docuflex Bridge
PDF print driver
This optional component includes:
• An IDS rule DLL (DFLXRULE.DLL)
• Documentation (see the separate manual entitled, Using the Docuflex Bridge )
This component includes tools which let you convert output from Documaker’s
GenPrint program into PDF files, which can be viewed using an Internet browser. For more information, see
Creating PDF Files, beginning on page 208.
HTML print driver
This component lets you create HTML files by simply printing to the HTML print driver.
For more information, see Creating HTML Files on page 209 .
DSI SDK Package
This component includes:
• Software Developer Kit for the various bridges
• Source code to archive retrieval rules
• API documentation and technical reference for writing custom rules, Visual Basic programs, Active X components and ASP components (see Using the Internet Document
Server SDK in the SDK Reference ).
Users and customers need to be aware that due to the varying nature of browsers and their continuously changing levels of support for the evolving HTML language, the use of certain HTML tags in the templates and dialogs might limit the ability of users to display certain aspects of the customized pages.
7
Chapter 1
Processing Documents Using the Internet
8
Chapter 2
Using the Internet Document Server
This chapter provides information on the capabilities of the Internet Document Server and its architecture. This chapter also tells you how to set up the Internet Document
Server.
N
OTE
:
For information on installing IDS, see the IDS Installation Guide .
You’ll find this information:
•
•
Using Multiple Servers on page 46
•
Setting Up a Windows NT Service on page 50
•
Handling Multi-threaded Requests on page 51
•
Using Rules Written in Other Scripting Languages on page 54
•
Using IDS as a Client to Another IDS on page 55
•
Monitoring IDS with SNMP Tools on page 60
•
Managing IDS Instances on page 62
•
Sending Results and Receiving Requests in Multiple Formats on page 71
•
Logging and Tracing on page 74
•
•
Referencing Attachment Variables on page 100
•
Using the Message Queues on page 102
•
Using the Java Message Service (JMS) on page 108
•
Using WebSphere MQ on page 111
•
•
•
Using Multiple Bridges on page 130
•
Submitting Batch Requests on page 132
•
Printing in Duplex Mode to PCL Printers on page 133
•
Using IDS to Distribute Email on page 134
•
Attaching Documents to Documaker Transactions on page 143
•
Using IDS to Run Documaker on page 149
9
Chapter 2
Using the Internet Document Server
•
Using the XML Messaging System on page 163
•
Connecting to an SQL Database on page 171
•
Using the Thin Client Forms Publisher on page 176
•
•
Executing Request Types at Run Time on page 180
•
Publishing Your Forms on the Web on page 182
•
Formatting Text with XML Markup on page 183
•
Encrypting and Decrypting Data Files on page 184
•
Using Multiple Attachment Values with the Same Name on page 185
•
Converting XML Files Using a Template on page 188
•
Customizing Your System on page 192
•
Handling Security Issues on page 195
•
Using LDAP Support on page 197
•
Using Default Time-outs for DSILIB-Based Client Applications on page 198
•
Running Timed Requests on page 200
•
In-Process Rendering for DPAView on page 201
•
Using DAL Functions for WIP Column Access on page 202
•
Using Enterprise Web Processing Services on page 204
•
Determining the Patch Level on page 205
10
Overview
O
VERVIEW
The Internet Document Server lets users connect to the server via the Internet. Executing back-end applications, however, requires additional components. These additional components are called bridges. These bridges provide bridge components, software rules, document templates, and other files necessary to process documents.
The Internet Document Server lets users communicate via standard Internet methods using a standard web browser. No other specialized client software is required to use the
Internet Document Server; however, additional bridge components may require additional browser plug-ins, such as Adobe’s Acrobat Reader. The Internet Document
Server runs on a Microsoft Windows or Unix Server running a web server package. It supports most variations of Unix such as Solaris, Linux and AIX.
See Processing Documents Using the Internet on page 1 for more information on Oracle’s related products.
Keep in mind, as you read through the following examples, that XML standards as defined by the W3C require you to substitute text characters that are not in XML tags (for example, between <entry> and </entry> tags) as escape sequences. The characters that require substitution are listed in the following table. If you cut and paste an XML example from this or other Docupresentment documentation into an XML configuration file, you will have to manually make these substitutions.
For this character
<
(less than)
> (greater than)
& (ampersand)
' (apostrophe)
“ (quotation mark)
Use this escape sequence
<
>
&
'
"
The following diagram shows you how the system operates.
11
Chapter 2
Using the Internet Document Server
Distributed Clients
World Wide
Web Client
Intranet Client
Web Server
World Wide
Web Client
Front-end components talk to IDS via the DSI API.
These components provide communications and an interface which gather client requests, translate those requests for IDS, and then translate the results for the client’s use.
Local or
Batch Client
Front-End (Client) Components
Custom Client
Module
Java-based
Custom Client
Module
Java Server Pages
(JSP) Custom
Client Module
ActiveX-based
Custom Client
Module (Windows)
Active Server
Pages (ASP)
Custom Client
Module (Windows)
Internet
Document
Server
DSI API
Document Processing Server
Back-end components include the bridges to other applications, rules which process the data, the data or archives being processed, and document sets. These components communicate with
IDS
via the DSI API.
DSI API
Bridges
Back-End Components
Processing
Rules
12
Data, Document
Sets or Archives
Overview
C
REATING
F
RONT
-E
ND
S
OLUTIONS
You can use either JSP (Java server pages) or ASP (active server page) to create front-end solutions, as shown in the previous illustration.
N
OTE
:
Keep in mind ASP is a Microsoft product and is not available on Solaris.
Internet Document
Server
ASP
Internet Information
Server (IIS)
Internet Document
Server
JSP
JSP-enabled application server (such as Tomcat or WebSphere)
U
SING
JSP
With JSP, the HTML content is included in the JSP page. There is no separate template.
To help you more quickly create your front end solutions, we provide the DSI JavaBean to communicate with Internet Document Server. This bean is in IDSJSP.jar.
Browser
Browser Browser
Application server with JSP support
(such as Tomcat, WebLogic, or
WebSphere)
JSP
AddRequest ClearRequest ProcessRequest
The DSI JavaBean
(IDSJSP.jar)
Internet Document Server
13
Chapter 2
Using the Internet Document Server
U
SING THE
IDSJSP J
AVA
B
EAN
As shown in this illustration, the IDSJSP bean collects requests and results. The bean has the following properties and methods.
Properties
Property
waittime timeout
Description
The time in between tries for ProcessRequests.
The total time to wait for the ProcessRequest.
Methods
Method
AddRequest
AddAllRequest
ProcessRequest
GetResult
ClearRequest
ClearResult
Description
AddRequest(Object key, Object value)
Adds name/value fields to the record to send to the IDS rule.
AddAllRequest(javax.servlet.ServletResponse request)
Adds all name/value fields from the request objects to the records to send to the IDS rule.
ProcessRequest()
Sends all the name/value and request types to IDS rules. Processes the
IDS rule and gets return records from the IDS rule and returns them as type HashMap.
GetResult(Object key)
Gets the return record value from the IDS rule index using the key from the internal result.
ClearRequest()
Clears attachment variables out of the request. Use after ProcessRequest and before the next set of AddRequest calls.
ClearResult()
Clears the result.
Using ASP
With ASP, the HTML page is included with the ASP page. There is no separate template.
Furthermore, the processing is done in each ASP page instead of in DCLTW32.EXE. On the other hand, ASP also requires more coding effort.
To help you more quickly create your front end solutions, we created IDSASP
(IDSASP.DLL).
Internet Document
Server
IDSASP ASP
Internet
Information Server
(IIS)
With IDSASP, you can use the ASP Session Collector and ProcessQ or you can bypass the Session Collector using ProcessRQ, as shown in the following illustration.
14
Overview
Browser
Browser Browser
Internet Information Server (IIS)
ASP
Session Collector
AddReq ClearReq ClearRes
Request
Collection
Result
Collection
The IDSASP Object
(IDSASP.DLL)
ProcessQ ProcessRQ
Call AddToQueue/GetQueueRec
Internet Document Server
U
SING THE
IDSASP O
BJECT
As shown in this illustration, the IDSASP object collects requests and results. To communicate with IDS using ASP through DSIAPI, the system includes an ActiveX
DSO named IDSASP.DLL. This DSO has the following properties and methods.
Properties
Property
hInstance oDSI
Request
Result
ShowAtt
Description
Type: Long
DSI Instance Handle is created by InitSession() in IDSASP.
Type: DSICoAPI
DSI Handle.
Type: Collection
Request Collection in IDSASP.
Type: Collection
Result Collection in IDSASP.
Type: Boolean
When set to True, the system prints the request and result when you call the
ProcessQ or ProcessRq method. Use this property for debugging.
15
Chapter 2
Using the Internet Document Server
Property
WaitTime
TimeOut
Description
Type: Long
Retry time in the processing queue. The default is 1000 milliseconds.
Type: Long
Time-out in milliseconds. The default is 15000 milliseconds.
Methods
Method
AddReq
ClearReq
Description
Syntax: AddReq (ByVal Name As String, ByVal Value As String)
Call this method to add a request to IDSASP request collection.
Syntax: ClearReq()
Call this method to clear the IDSASP request collection.
ClearRes Syntax: ClearRes()
Call this method to clear the IDSASP result collection.
OnEndPage Called by ASP when the object is instantiated.
OnStartPage Called by ASP when the object is released.
ProcessQ Syntax: ProcessQ()
Call this method to...
- Retrieve the name/value pair from the ASP session collection and add it to the queue.
- Release the record into the queue for IDS to process.
- Read back the result from IDS. Retry time and time-out are defined in the
WaitTime and TimeOut properties.
- Store the results in the ASP session collection.
ProcessRq
ReadBinFile
Syntax: ProcessRq()
Call this method to...
- Retrieve the name/value pair from the IDSASP request collection and add it to the queue.
- Release the record into the queue for IDS to process.
- Read back the result from IDS. Retry time and time-out are defined in the
WaitTime and TimeOut properties.
- Store the results in the IDSASP result collection.
Syntax: ReadBinFile(ByVal bFileName As String)
Call this method to read the binary file from the local hard disk and store as a binary array.
16
Overview
Using the ProcessQ method
Using the ProcessRq method
Sending and Receiving Attachment Fields
The IDSASP.DLL provides two ways to send and receive attachment fields to and from
DSIAPI: using the ProcessQ method and using the ProcessRq method.
Here is an example of using session collection with the ProcessQ method:
<%
CrLf = Chr(13) + Chr(10) set DSI = Server.CreateObject("IDSASP.DSI")'create DSI handle session.Abandon
'Clear Session for i=1 to Request.Form.Count'Read Attachment and Create session
Collection next session(Request.Form.Key(i))=Request.Form(i)
DSI.ProcessQ
'Execute Request From Attachment
%>
<%
'Loop To display all of the records.
For i=1 to session("RECORDS")
alink = "recips.asp"
alink = alink & "?USERID=" &
Server.URLEncode(session("USERID"))
alink = alink & "&ArcKey=" & Server.URLEncode(session("RECORDS"
& cstr(i) & ".ArcKey"))
alink = alink & "&REQTYPE=RCP"
alink = alink & "&CONFIG=" &
Server.URLEncode(session("CONFIG"))
alink = alink & "&COMPANY=" &
Server.URLEncode(session("RECORDS" & i & ".Company"))
alink = alink & "&LOB=" & Server.URLEncode(session("RECORDS" & cstr(i) & ".Lob"))
alink = alink & "&POLICYNUM=" &
Server.URLEncode(session("RECORDS" & cstr(i) & ".PolicyNum"))
alink = alink & "&RUNDATE=" &
Server.URLEncode(session("RECORDS" & cstr(i) & ".RunDate"))
Response.Write "<TR><TD><B>"
Response.Write "<A HREF=" & alink & ">" & session("RECORDS" & i & ".Company") & "</A></TD>"
Response.Write "<TD>" & session("RECORDS" & cstr(i) & ".Lob")
& "</TD>"
Response.Write "<TD>" & session("RECORDS" & cstr(i) &
".PolicyNum") & "</TD>"
Response.Write "<TD>" & session("RECORDS" & cstr(i) &
".RunDate") & "</TD>"
Response.Write "</TR>" & CrLf next
%>
Here is an example of using the IDSASP.DLL request and result collection properties with the ProcessRq method.
<%
CrLf = Chr(13) + Chr(10) set DSI = Server.CreateObject("IDSASP.DSI")'create DSI handle
'Read Input Parameter from INPUT FORM and send request to DSI for i=1 to Request.Form.Count
17
Chapter 2
Using the Internet Document Server
Sample Pages
Page 1
next
DSI.AddReq Request.Form.Key(i),Request.Form(i)
DSI.ProcessRq
'Execute Request
%>
<%
'Loop display Response Pair for i=1 to DSI.Result("RECORDS").Value
alink = "recips.asp"
alink = alink & "?USERID=" &
Server.URLEncode(DSI.Result("USERID").value)
alink = alink & "&ArcKey=" &
Server.URLEncode(DSI.Result.Item("RECORDS" & cstr(i) &
".ArcKey").value)
alink = alink & "&REQTYPE=RCP"
alink = alink & "&CONFIG=" &
Server.URLEncode(DSI.Result("CONFIG").value)
alink = alink & "&COMPANY=" &
Server.URLEncode(DSI.Result("RECORDS" & i & ".Company").value)
alink = alink & "&LOB=" &
Server.URLEncode(DSI.Result.Item("RECORDS" & cstr(i) &
".Lob").value)
alink = alink & "&POLICYNUM=" &
Server.URLEncode(DSI.Result.Item("RECORDS" & cstr(i) &
".PolicyNum").value)
alink = alink & "&RUNDATE=" &
Server.URLEncode(DSI.Result.Item("RECORDS" & cstr(i) &
".RunDate").value)
Response.Write "<TR><TD><B>"
Response.Write "<A HREF=" & alink & ">" & DSI.Result("RECORDS"
& i & ".Company").value & "</A></TD>"
Response.Write "<TD>" & DSI.Result.Item("RECORDS" & cstr(i) &
".Lob").value & "</TD>"
Response.Write "<TD>" & DSI.Result.Item("RECORDS" & cstr(i) &
".PolicyNum").value & "</TD>"
Mh=Left(DSI.Result.Item("RECORDS" & cstr(i) &
".RunDate").value,2)
Dt=Mid(DSI.Result.Item("RECORDS" & cstr(i) &
".RunDate").value,3,2)
Yr=Right(DSI.Result.Item("RECORDS" & cstr(i) &
".RunDate").value,2)
Dat=Cdate(Mh & "/" & Dt & "/" & Yr)
Response.Write "<TD>" & FormatDateTime(Dat,1) & "</TD>"
Response.Write "</TR>" & CrLf next
%>
Here are some sample pages:
This page sends a request from the browser with two file attachments.
18
Overview
<form name="form" enctype="multipart/form-data" action="test.asp" method="post">
<table>
<tr><input name="key1" value="12345678" /></tr>
<tr><input name="key2" value="456" /></tr>
<tr><input name="key3" value="789"/></tr>
<tr><input name="empty" value=""/></tr>
<tr><input name="file1" type="file"/></tr>
<tr><input name="file2" type="file"/></tr>
<tr><input name="submit" type="submit"/></tr>
</table>
Page 2
This page receives an HTTP request from page 1, parses the request, and uploads the files.
<%
'create an instance of the object which calls parseData
set o = server.CreateObject("IDSASP.DSI")
'o.bDebug = true
o.parseData()
'write the element count in the request collection
response.write "count=" & o.request.count & "<BR><BR>"
'indicate if the request is a multipart request
response.write "Multipart=" & o.bMultipart & "<BR>"
'taverse through the request collection and write the name / value pairs
for i = 1 to o.request.count
name = o.request.Item(i).Name
value = o.getRequest(name)
response.write "(" & name & ") = (" & value & ")<br>"
next
'if the request is a multipart request, then process the attachments
if o.bMultipart = true then
for each attachment in o.attachments
if IsObject(attachment) then
name = attachment.name
response.write "attachment name=" &name & "<BR>"
file = attachment.file
response.write "file name=" & file & "<BR>"
ftype = attachment.ftype
response.write "file type=" & ftype & "<BR>"
encoding = attachment.encoding
response.write "encoding=" & encoding & "<BR>"
buffer = attachment.buffer
response.write "buffer length=" & Len(buffer) & "<BR>"
'write attachment to disk
path = o.upLoad(name, "c:\inetpub")
response.write "path returned by upLoad api = " & path & "<BR>"
Showing a PDF File
ASP provides two ways to show a PDF file: using the Response.Redirect method and using the Read ReadBinFile method.
19
Chapter 2
Using the Internet Document Server
Using the
Response.Redirect
method
Here is an example of showing a PDF file using the Response.Redirect method. You must enter a URL.
<%@ Language=VBScript %>
<%
Set DSI = Server.CreateObject("IDSASP.DSI")'create DSI handle session.Abandon
'Clear Session
For i=1 to Request.Form.Count'Read Attachment and Create session
Collection session(Request.Form.Key(i))=Request.Form(i)
Next
DSI.ProcessQ
'Execute Request From Attachment
HostAddr=Request.ServerVariables("HTTP_HOST")'Get Host Name
PrintFile=session("REMOTEPRINTFILE")'Get Full Printed Filename with Path
StartPoint=instr(1,PrintFile,"\")'Look for \ sign
NameWidth=len(PrintFile)-StartPoint'Filename Length
FileName=Mid(PrintFile,StartPoint+1,NameWidth)'Get Filename
Url="http://" & HostAddr & "/doc-html/" & Filename'Construct
URL
Set DSI = nothing then
If instr(1,Request.ServerVariables("HTTP_USER_AGENT"),"IE")<>0
'Check IE Browser
%>
<HTML>
<BODY leftmargin=0 topmargin=0 scroll=no>
<embed width=100% height=100% fullscreen=yes src="<%=Url%>">
</BODY>
</HTML>
<%
Else
Response.Redirect Url
End If
%>
20
Overview
Using the Read
ReadBinFile method
Here is an example of showing a PDF file using the Read ReadBinFile method in the
IDSASP.DLL file, you must enter the local path.
<%@ Language=VBScript %>
<%
Dim Stream set DSI = Server.CreateObject("IDSASP.DSI")'create DSI handle
'Attach Input Parameter from INPUT FORM for i=1 to Request.Form.Count
DSI.AddReq Request.Form.Key(i),Request.Form(i) next
DSI.ProcessRq
'Send Queue to DSI
%>
<%
Response.Buffer=True
Pth=Request.ServerVariables("PATH_TRANSLATED")
DsiPath=left(pth,instr(4,pth,"\"))'Get Path of Docserv
PrintFile=DsiPath & DSI.Result("REMOTEPRINTFILE").Value
Response.ContentType = "application/pdf"
Stream = DSI.ReadBinFile(PrintFile)
Response.BinaryWrite(Stream)
Response.End
%> set DSI = nothing
21
Chapter 2
Using the Internet Document Server parseData
Parameters
Returns
Using the HTTP Parsing and Uploading APIs
The following APIs in IDSASP let you parse HTTP requests into separate request and attachments collections and provide a way to process multipart/form-data form requests.
• parseData
• getRequest
• getAttachment
• getBuffer
• upLoad
Multiple file attachments are parsed into attachments collections in IDSASP. Files can then be uploaded (written to disk) to the web server via the upLoad API.
Attachment objects can also be retrieved from the attachments collection via the getAttachment API. Attachment objects contain properties for each attachment as well as an attachment buffer that contains the actual file attachment contents.
You can also retrieve file attachment contents as buffers from the attachments collection via the getBuffer API. The parseData API can also parse non multipart/form-data HTTP requests. Use the getRequest API to retrieve name/value pairs from the request collection.
In addition, you can also see Sample Pages on page 21 .
Use this API to parse HTTP requests into separate request and attachments collections.
Regular name/value pairs in an HTTP request are parsed into request collection. File attachments are parsed into an attachments collection. The parseData API can parse multipart/form-data HTTP requests as well as non multipart/form-data requests. Call this API at the beginning of an ASP script to parse the HTTP request from a submitted form.
None
Nothing
getRequest
Use this API to retrieve name/value pairs from the request collection instead of the
Request.Form API calls.
Parameters
Returns
Parameter Description
name A string value that represents the name of a key in the request collection.
A string value with the value in request collection for key name.
22
Overview getAttachment
Use this API to return an attachment object from the attachments collection. This API retrieves not only the file attachment contents, but also its properties. The attachment object returned contains these properties:
Property
name
File
Ftype
Buffer
Encoding
Description
This is the actual name of the attachment in the HTTP request. Its value corresponds to the value of the file form tag used to submit the attachment in the
HTTP request.
A string value that contains the file name and extension of the attachment. Its value corresponds to the file name of the File form tag used to submit the attachment.
A string value that contains the extension (file type) of the attachment.
A string buffer holding the file attachment contents.
The actual encoding type used by the browser when the file attachment was submitted.
Parameters
Returns
Parameter Description
name A string value that represents the name of a key in the attachments collection.
An attachment object containing the file attachment contents as well as properties for the attachment.
getBuffer
Use this API to retrieve attachments as buffers.
Parameters
Parameter Description
name A string value that represents the name of the attachment in the Attachment object within the attachments collection. This value should be the same as that of the file form tag name used to send an attachment in an HTTP request.
Returns
A string buffer containing the contents of the file attachment in the attachments collection.
23
Chapter 2
Using the Internet Document Server upLoad
Use this API to write an attachment object's buffer contents from the attachments collection to disk. This API lets you upload file attachments to disk on the web server.
Parameters
Parameter Description
name A string value that represents the name of the attachment in the attachment object within the attachments collection. This name is the same as the file form tag used to send the attachment from the browser in an HTTP request.
Path A string value that specifies the full path where you want the attachment written.
Returns
The full path and file name of the file uploaded, if successful.
Sample Pages
Page 1
Here are some sample pages:
This page sends a request from the browser with two file attachments.
<form name="form" enctype="multipart/form-data" action="test.asp" method="post">
<table>
<tr><input name="key1" value="12345678" /></tr>
<tr><input name="key2" value="456" /></tr>
<tr><input name="key3" value="789"/></tr>
<tr><input name="empty" value=""/></tr>
<tr><input name="file1" type="file"/></tr>
<tr><input name="file2" type="file"/></tr>
<tr><input name="submit" type="submit"/></tr>
</table>
24
Overview
Page 2
This page receives an HTTP request from page 1, parses the request, and uploads the files.
<%
'create an instance of the object which calls parseData
set o = server.CreateObject("IDSASP.DSI")
'o.bDebug = true
o.parseData()
'write the element count in the request collection
response.write "count=" & o.request.count & "<BR><BR>"
'indicate if the request is a multipart request
response.write "Multipart=" & o.bMultipart & "<BR>"
'taverse through the request collection and write the name / value pairs
for i = 1 to o.request.count
name = o.request.Item(i).Name
value = o.getRequest(name)
response.write "(" & name & ") = (" & value & ")<br>"
next
'if the request is a multipart request, then process the attachments
if o.bMultipart = true then
for each attachment in o.attachments
if IsObject(attachment) then
name = attachment.name
response.write "attachment name=" &name & "<BR>"
file = attachment.file
response.write "file name=" & file & "<BR>"
ftype = attachment.ftype
response.write "file type=" & ftype & "<BR>"
encoding = attachment.encoding
response.write "encoding=" & encoding & "<BR>"
buffer = attachment.buffer
response.write "buffer length=" & Len(buffer) & "<BR>"
'write attachment to disk
path = o.upLoad(name, "c:\inetpub")
response.write "path returned by upLoad api = " & path & "<BR>"
25
Chapter 2
Using the Internet Document Server
26 addSessionVar
Using the XMLSession Rules
Use the XMLSession rules to save state information across multiple IDS servers and across multiple web servers. Session information for each client session is saved as an
XML file on the server side. This also increases security as session information no longer resides on the web server.
You can store, retrieve, and save files using the XMLSession rules. You can retrieve the session information as rowset on the client side and it is also accessible using session methods available in IDSASP and IDSJSP.
For more information about these methods and rules, see
• IDSASP Methods on page 29
• IDSJSP Methods on page 31
• XMLSession Rules on page 33
IDSASP Methods
Here are the IDSASP methods:
Use this method to add a name/value pair to the session collection. You can include these parameters:
Parameter Description
name The name of the name/value pair to add to the session.
Value The value of the name/value pair to add to the session.
getSessionVar removeSessionVar
Here is an example: dsi.addSessionVar "USERID", "FORMAKER"
Use this method to return a string containing the value of name in the session collection.
You can include these parameters:
Parameter Description
name The name of the name/value pair to retrieve from the session.
Here is an example: userid = dsi.getSessionVar("USERID")
Use this method to remove a name/value pair from the session collection. You can include these parameters:
Parameter Description
name The name of the name/value pair to remove from the session.
Here is an example:
Overview addSessionObject
dsi.removeSessionVar "USERID"
Use this method to add a binary or text buffer to hold the contents for a file to the session collection. You can include these parameters:
Parameter Description
name The name of the object name to add to the session.
Buffer A binary or text buffer holding the contents of a file to add to the session.
getSessionObject
Here is an example: dsi.addSessionObject "FILE1", buffer
Use this method to retrieve a buffer that holds the contents of a file from the session collection. You can include these parameters:
Parameter Description
name The name of the object to retrieve from the session.
Opt An integer value that indicates whether the object should be retrieved as a binary or text buffer (1=text, 2=binary)
removeSessionObject
Here is an example: buffer = dsi.getSessionObject("FILE1", 1) binBuf = dsi.getSessionObject("FILE2", 2)
Use this method to remove an object from the session collection. You can include these parameters:
Parameter Description
name The name of the object to remove from the session.
Here is an example: dsi.removeSessionObject "FILE1"
27
Chapter 2
Using the Internet Document Server addSessionVar removeSessionVar getSessionVar
IDSJSP Methods
Here are the IDSJSP methods:
Use this method to add a name/value pair to the session map. You can include these parameters:
Parameter Description
name Enter a string that contains the name of the name/value pair to add to the session map.
Value Enter a string that contains the value of the name/value pair to add to the session map.
This method has no return value. Here is an example: dsimsg.addSessionVar("USERID", "FORMAKER");
Use this method to remove a name/value pair from the session map. You can include these parameters:
Parameter Description
name Enter a string that contains the name of the name/value pair to remove from the session map.
This method has no return value. Here is an example: dsimsg.removeSessionVar("USERID");
Use this method to retrieve a name/value pair from the session map. You can include these parameters:
Parameter Description
name Enter a string that contains the name of the name/value pair to retrieve from the session map.
This method returns a string containing the value of the name/value pair in the session map. Here is an example:
String userid = dsimsg.getSessionVar("USERID");
28
Overview addSessionObject
Use this method to add a file buffer to the to the session map. You can include these parameters:
Parameter Description
name Enter a string that contains the name of the file buffer to add to the session map.
Buffer A byte array holding the contents of a file.
removeSessionObject
This method has no return value. Here is an example: dsimsg.addSessionObject("FILE1", buffer1);
Use this method to remove a file buffer from the session map. You can include these parameters:
Parameter Description
name Enter a string that contains the name of the file buffer to remove from the session map.
getSessionObject
This method has no return value. Here is an example:
dsimsg.removeSessionObject("FILE1");
Use this method to retrieve a file buffer from the session map. You can include these parameters:
Parameter Description
name Enter a string that contains the name of the file buffer to retrieve from the session map.
This method returns a byte[] array containing the buffer retrieved from the session map.
Here is an example: byte[] buff = dsimsg.getSessionObject("FILE1");
29
Chapter 2
Using the Internet Document Server initSession
XMLSession Rules
Here are the XMLSession rules:
Use this rule to initialize a session. This rule generates a unique session ID and generates a session file with unique ID. If a SESSION rowset is present in the request, the rule also adds the rowset to the session file. If the SESSION rowset is missing in the request, a blank unique session rowset is generated and added to the session file.
The SESSION rowset is returned in the result.
Input variables
Variable
XMLSESSION
Description
(Optional) This variable contains a unique identifier for the session. If present, it is used to generate a new session. Otherwise, the rule generates a unique identifier for the new session.
XMLSESSIONTIMEOUT (Optional) Specifies the session timeout in seconds. The default is
1800 seconds.
Use this INI option to specify a global share for multiple IDS processes:
< GlobalData >
Path =
Output variables
Variable
XMLSESSION
RESULTS
Description
This variable contains the unique identifier for the session if the session is valid. Otherwise, the value will be INVALID.
Success or failure
termSession
Use this rule to terminate a session. This rule removes the session file associated with the unique ID.
Input variables
Variable
XMLSESSION
Description
This variable contains the unique ID for the session to be removed.
Use this INI option to specify a global share for multiple IDS processes:
< GlobalData >
Path =
Output variables
Variable
XMLSESSION
Description
This variable contains the unique identifier for the session. This attachment variable contains REMOVED if the session was terminated successfully. Otherwise, the value will be INVALID.
30
Overview
Variable
RESULTS
Description
Success or failure
updateSession
Use this rule to update the unique session file with the SESSION rowset in the request message and return the updated rowset in the result.
Input variables
Variable
XMLSESSION
Description
This variable contains the unique ID for the session to be updated.
XMLSESSIONTIMEOUT (Optional) Specifies the session timeout in seconds.The default is
1800 seconds.
Use this INI option to specify a global share for multiple IDS processes:
< GlobalData >
Path =
Output variables
Variable Description
XMLSESSION This variable contains the unique identifier for the session if the session is valid. Otherwise, the value will be EXPIRED if the session has expired, or
INVALID if the session is no longer valid.
RESULTS Success or failure
purgeXMLSessions
Use this rule to remove expired sessions.
Input variables
None. Use this INI option to specify a global share for multiple IDS processes:
< GlobalData >
Path =
Output variables
Variable Description
RESULTS Success or failure.
31
Chapter 2
Using the Internet Document Server saveFile
Use this rule to save the contents of an XML node from a session file as a new file to disk and to add an attachment variable to the result message with the full path and file name of the file saved.
Input variables
Variable
XMLSESSION
INPUTVAR
OUTPUTVAR
PRINTPATH
Description
This variable contains the unique identifier for the session.
The name of the SESSION rowset variable containing the data that is to be saved to disk.
The name of the attachment variable to add to the output message indicating the full path and file name of the file saved.
(Optional) Specifies the output path for the output file. If omitted, the output file is written to the current IDS directory.
FILETYPE (Optional) Specifies the file type for the output file. If omitted, the default extension DAT is used.
Use this INI option to specify a global share for multiple IDS processes:
< GlobalData >
Path =
Output variables
Variable
(variable)
Description
An attachment variable whose name is specified by OUTPUTVAR input attachment variable - will hold a String value indicating the full path and file name of the file saved to disk.
XMLSESSION This variable contains the unique identifier for the session if the session is valid. Otherwise, the value will be will be EXPIRED if the session has expired, or INVALID if the session is no longer valid.
RESULTS Success or failure
32
Overview
U
SING
IDSXML
You can use IDSXML as a guide to processing the errors.xml file in a Microsoft ASP environment.
N
OTE
:
IDSXML is not a COM+ component so do not register it under the Component
Services Microsoft Management Console snap-in. The component should only be registered under the current IDS directory on the IDS client (the web server).
Keep in mind IDSXML requires Microsoft XML parser 4.0 (MSXML 4.0). Please make sure you have this before you use IDSXML.
Properties
IDSXML is a Win32 COM component. IDSXML provides XML parsing and XSL processing APIs for ASP. Here is a description of the properties and APIs provided by this component:
This table shows you the properties:
Name
Formset
Type Description
collection A collection of form objects
FormsetSelectionList string A comma-delimited string of options selected from a form set. These values are expected:
- form
- form.copycount.recipient
- form.image
- form.image.copycount. recipient
See also
XMLProcessFormset
XMLUpdateFormset
Methods
Here is an example:
DEC PAGE,DEC PAGE.1.AGENT,DEC PAGE.1.COMPANY,
DEC PAGE.1.INSURED,DEC PAGE.q1snam,DEC PAGE.q1mdc1,DEC
PAGE.q1mdc2,DEC PAGE.q1mdc3, DEC PAGE.q1mdc3.1.INSURED
IDSXML includes these methods:
• XMLTransformErrors on page 37
• XMLTransformErrors2 on page 38
• XMLLoadINI on page 39
• XMLLoadXML on page 40
• XMLLoadXSL on page 40
• XMLGetGroupOptionValue on page 41
• XMLGetValue on page 41
• XMLGetGroup on page 41
• XMLUpdateGroup on page 42
33
Chapter 2
Using the Internet Document Server
Syntax
Example
• XMLBuffer on page 44
• XMLLoadProcessor on page 44
• XMLAddParameterToXSL on page 44
• XMLTransformWithXSL on page 45
• XMLProcessWithXSL on page 46
• XMLUpdateFormset on page 47
• XMLProcessFormset on page 47
XMLTransformErrors
Use this method to transform a result message into useful HTML output. This method takes an XML buffer from a result message that contains errors, an errors XML file that contains error descriptions, and an XSL template which is used to transform the XML message into HTML output that describes errors returned by IDS.
XMLTransformErrors xmlbuf, xmlFile, xslFile
Parameter Description
xmlBuf Enter the name of the XML buffer that contains the message returned by IDS.
This message contains errors returned by IDS.
xmlFile xslFile
Enter the name of the errors file that contains all error codes recognized by IDS.
This file is produced by IDS and contains additional information, causes, and resolutions for each error.
The errors file is used by this method to transform the message returned by IDS into useful HTML output. This is a file that ships with IDS (errors.xml).
Enter the name of the XSL template you want the method to use to transform the XML buffer and errors XML file into HTML information about errors returned by IDS.
This is a template that ships with IDS (errors.xsl).
In this example, page one detects an error, captures the buffer that contains the error, and redirects to the error processing page, which is page 2.
Page1: processRequest.asp
<% set DSI = server.CreateObject("IDSASP.DSI")
For i=1 to Request.Form.Count
DSI.AddReq Request.Form.Key(i), Request.Form(i)
Next
On Error Resume Next
DSI.ProcessRq
If Err.Number <> 0 Then
Err.Clear
34
Overview
End if path = Request.ServerVariables("APPL_PHYSICAL_PATH") results = DSI.Result("RESULTS").Value
errors = DSI.Result("ERRORS").Value
If Len(results) = 0 OR results <> "SUCCESS" OR CInt(errors) > 0 then
Session("xmlbuf") = DSI.GetSOAPMessage
set dsi = nothing
Response.Redirect "error.asp"
End if
Set DSI = Nothing
%>
Page2: error.asp
<% set o = Server.CreateObject("IDSXML.XML") xmlbuf = Session("xmlbuf") xmlFile = Server.MapPath("xml\errors.xml") xslFile = Server.MapPath("xsl\errors.xsl")
Syntax
Example
o.XMLTransformErrors xmlbuf, xmlFile, xslFile
%>
XMLTransformErrors2
Use this method to transform a result message into useful HTML output. This method takes as input an XML buffer from a result message from IDS that contains errors and an
XSL template which is used to transform the XML message into HTML output that describes the errors returned.
XMLTransformErrors2 xmlbuf, xslfile
Parameter Description
xmlBuf Enter the name of the XML buffer that contains the message returned by IDS.
This message contains errors returned by IDS.
xslFile Enter the name of the XSL template you want the method to use to transform the XML buffer into HTML information that contains the errors returned by
IDS.
This is a template that ships with IDS (default.xsl).
In this example, page one detects an error, captures the buffer that contains the error, and redirects to the error processing page, which is page 2.
Page1: processRequest.asp
<%
35
Chapter 2
Using the Internet Document Server
set DSI = server.CreateObject("IDSASP.DSI")
For i=1 to Request.Form.Count
DSI.AddReq Request.Form.Key(i), Request.Form(i)
Next
On Error Resume Next
DSI.ProcessRq
If Err.Number <> 0 Then
Err.Clear
End if path = Request.ServerVariables("APPL_PHYSICAL_PATH") results = DSI.Result("RESULTS").Value
errors = DSI.Result("ERRORS").Value
If Len(results) = 0 OR results <> "SUCCESS" OR CInt(errors) > 0 then
Session("xmlbuf") = DSI.GetSOAPMessage
set dsi = nothing
Response.Redirect "error.asp"
End if
Syntax
Set DSI = Nothing
%>
Page2: error.asp
<% set o = Server.CreateObject("IDSXML.XML") xmlbuf = Session("xmlbuf") xslFile = Server.MapPath("xsl\default.xsl") o.XMLTransformErrors2 xmlbuf, xslFile
%>
XMLLoadINI
Use this method to load an XML INI file into memory. Use this method before calling other methods that retrieve information from an XML document.
XMLLoadINI sIni
Parameter Description
sINI Enter the full path and file name of the XML document you want to load. This can also be a buffer that contains an XML document.
Here is an example of the format of the XML document:
<GROUPS>
36
Overview
Example
Syntax
Example
Syntax
<GROUP NAME="MQSERIES">
<QUEUEMANAGER>QALAB1</QUEUEMANAGER>
<CLIENT>YES</CLIENT>
<REQUESTQ>REQUESTQ</REQUESTQ>
<RESULTQ>RESULTQ</RESULTQ>
</GROUP>
<GROUP NAME="PRINTOPTIONS">
<ALLRECIPIENTS></ALLRECIPIENTS>
<PRTDOWNLOADFONTS></PRTDOWNLOADFONTS>
<PRTTYPE>PDF</PRTTYPE>
<PRTSENDCOLOR></PRTSENDCOLOR>
<PRTPAGENUMBERS></PRTPAGENUMBERS>
<PRTPRINTVIEWONLY></PRTPRINTVIEWONLY>
<PRTTEMPLATEFIELDS></PRTTEMPLATEFIELDS>
</GROUP>
<GROUP NAME="TEST">
<policy>
<num>1</num>
</policy>
</GROUP>
</GROUPS>
Here is an example: set o = Server.CreateObject("IDSXML.XML") sIni = Server.MapPath("ini.xml") o.XMLLoadIni(sIni)
XMLLoadXML
Use this method to load an XML document into memory before an XSL transformation occurs.
XMLLoadXML sXML
Parameter Description
sXML Enter the full path and file name of the XML document you want to load. This can also be a buffer that contains an XML document.
Here is an example: sXML = Server.MapPath("xml\test.xml") o.XMLLoadXML(sXML)
XMLLoadXSL
Use this method to load an XSL template into memory before an XSL transformation occurs.
XMLLoadXSL sXSL
Parameter Description
sXSL Enter the full path and file name of the XSL template you want to load. This can also be a buffer that contains an XSL template.
37
Chapter 2
Using the Internet Document Server
Example
Syntax
Example
Syntax
Example
Syntax
Here is an example: sXSL = Server.MapPath("xsl\test.xsl") o.XMLLoadXSL(sXSL)
XMLGetGroupOptionValue
Use this method to return a value from an XML node. Use the XMLLoadINI method before you use this method.
XMLGetGroupOptionValue sGroup, sOption
Parameter Description
sGroup Enter the group name to use for retrieving a value.
sOption Enter the option name to use for retrieving a value.
Here is an example: set o = Server.CreateObject("IDSXML.XML") sIni = Server.MapPath("ini.xml") o.XMLLoadINI(sIni) val = o.XMLGetGroupOptionValue("MQSERIES", "CLIENT") set o = nothing
XMLGetValue
Use this method to return a value from a node in an XML tree using xPath. Use the
XMLLoadINI method before you use this method.
XMLGetValue xPath
Parameter Description
xPath Enter a fully qualified xPath value to the node in the XML document tree.
Here is an example: set o = Server.CreateObject("IDSXML.XML") sIni = Server.MapPath("ini.xml") o.XMLLoadINI(sIni) val=o.XMLGetValue("//GROUP[@NAME='TEST']/policy/num") set o = nothing
XMLGetGroup
Use this method to return an INI group as a buffer, as an object, or as a new file. Use the
XMLLoadINI method before you use this method.
XMLGetGroup sGroup, iOption, sDir
Parameter Description
sGroup Enter the name of the INI group you want returned.
38
Overview
Example
Parameter Description
iOption Choose one of these options:
1 - Return the INI group as a buffer.
2 - Return the INI group as an object.
3 - Save the INI group as a new file.
sDir Only include this parameter if you entered three (3) for the iOption parameter.
Enter the name of the directory in which you want the system to save the new
XML file.
Here is an example:
<% set o = server.createobject("IDSXML.XML") sIni = Server.MapPath("ini.xml") o.XMLLoadINI(sIni)
'return MQSeries group as buffer
Buffer = o.XMLGetGroup("MQSERIES", 1, "")
'return MQSeries group as object
Set MQSeriesGroup = o.XMLGetGroup("MQSERIES", 2, "")
'traverse through the group object and print all pairs
For i = 1 to MQSeriesGroup.Count
name = MQSeriesGroup(i).name
value = MQSeriesGroup(i).Value
response.write name & "=" & value & "<BR>"
Next
'access a particular value val = MQSeriesGroup("CLIENT").Value
Syntax
'write the MQSeries group as a new file into cache directory o.XMLGetGroup "MQSERIES", 3, "Cache"
'cleanup set MQSeriesGroup = nothing set o = nothing
%>
XMLUpdateGroup
Use this method to update a group in an XML document via a Group Object parameter.
This method reads the group object's properties and updates the XML document's matching group with the object's properties. The method then returns the updated XML document as a buffer or saves it to disk. Use the XMLLoadINI method before you use this method.
XMLUpdateGroup sGroup, oGroup, iOption, sOut
39
Chapter 2
Using the Internet Document Server
Example
Parameter Description
sGroup Enter the name of the group you want to update.
oGroup Enter the name of the group object you want to use to update a matching group in an XML document.
iOption sOut
Choose one of these options to indicate what you want done with the updated file:
1 - Return the updated XML INI file as a buffer.
2 - Save the updated XML INI file as a file.
3 - Return only the updated group as a buffer.
4 - Save only the updated group as a file.
Only use this parameter if the iOption parameter is set to two (2) or four (4).
Enter the full path and file name for saving the XML document.
Here is an example:
<%
Set o = Server.CreateObject("IDSXML.XML") sIni = Server.MapPath("ini.xml") o.XMLLoadINI(sIni)
Set PrtOpt = o.XMLGetGroup("PRINTOPTIONS", 2, "")
PrtOpt("ALLRECIPIENTS").Value = "YES"
PrtOpt("PRTDOWNLOADFONTS").Value = "YES"
PrtOpt("PRTTYPE").Value = "XML"
PrtOpt("PRTSENDCOLOR").Value = "NO"
PrtOpt("PRTPAGENUMBERS").Value = "NO"
PrtOpt("PRTPRINTVIEWONLY").Value = "NO"
PrtOpt("PRTTEMPLATEFIELDS").Value = "YES"
'update the xml ini file and return the updated file as a buffer
Buffer = o.XMLUpdateGroup("PRINTOPTIONS", PrtOpt, 1, "")
'update the xml ini file and save it to disk o.XMLUpdateGroup "PRINTOPTIONS", PrtOpt, 2, "POpt.xml"
'update the group and return the updated group as a buffer
Buffer2 = o.XMLUpdateGroup ("PRINTOPTIONS", PrtOpt, 3, "")
'update the group and save the updated group as a new file o.XMLUpdateGroup "PRINTOPTIONS", PrtOpt, 4, "newPOpt.xml"
'cleanup
Set PrtOpt = Nothing
Set o = Nothing
%>
40
Overview
Syntax
Example
Syntax
Example
Syntax
XMLBuffer
Use this method to return a buffer for an XML document. Use XMLLoadINI method before you use this method.
XMLBuffer sFile
Parameter Description
sFile Enter the full path and file name of the XML document.
Here is an example:
<% set o = Server.CreateObject("IDSXML.XML")
InputFormset = Server.MapPath("xml\OriginalFormset.xml")
Buffer = o.XMLBuffer(InputFormset)
Response.write Buffer set o = nothing
%>
XMLLoadProcessor
Use this method to l oad an XSL template into memory and to load the XSL processor based on that template. Use this method before you call the XMLAddParameterToXSL or
XMLProcessWithXSL methods.
XMLLoadProcessor sXSL
Parameter Description
sXSL Enter the full path and file name to an XSL template or a buffer that contains an
XSL template.
Here is an example: set o = server.createobject("IDSXML.XML") template = Server.MapPath("xsl\test.xsl") o.XMLLoadProcessor(template)
XMLAddParameterToXSL
Use this method to add a parameter to internal XSL processor. For instance, you can use this method to add parameters before processing with an XSL template that expects parameters. Use the XMLLoadProcessor method before you call this method.
XMLAddParameter2XL name, value
Parameter Description
name Enter the name of the parameter to add to the XSL template.
41
Chapter 2
Using the Internet Document Server
Example
Parameter Description
value Enter the value of the parameter to add to the XSL template.
Here is an example:
<%
Syntax
Example
set o = Server.Createobject("IDSXML.XML") sXML = Server.MapPath("xml\test.xml") sXSL = Server.MapPath("xsl\test.xsl") o.XMLLoadXML(sXML) o.XMLLoadProcessor(sXSL) o.XMLAddParameterToXSL "color", "blue" o.XMLProcessWithXSL 1 , "" set o = nothing
%>
XMLTransformWithXSL
Use this method to transform an XML document with an XSL template. Use the
XMLLoadXML and XMLLoadXSL methods before you call this method. Use this method to process XML documents with XSL templates that do not expect parameters.
XMLTransformWithXSL Option, sPath
Parameter Description
Option Choose one of these options:
1 - Return the transformation result as a string and write the result to the screen.
2 - Return the transformation result as a string.
3 - Write the transformation result to disk using the path specified by sPath parameter. This also returns the transformation result as a string.
sPath Only include this parameter if you entered three (3) for the Option parameter.
Enter the full path and file name of the file you want to use for writing the transformation result to disk.
Here is an example:
<% set o = Server.Createobject("IDSXML.XML") sXML = Server.MapPath("xml\test.xml") sXSL = Server.MapPath("xsl\test.xsl") o.XMLLoadXML(sXML)
42
Overview
Syntax
Example
o.XMLLoadXSL(sXSL) o.XMLTransformWithXSL 1, "" set o = nothing
%>
XMLProcessWithXSL
Use this method to transform an XML document using an XSL template that expects parameters. You should use the XMLAddParameterToXSL method to add the parameters expected by the style sheet before you call this method. Also use the
XMLLoadProcessor method before you call this method.
XMLProcessWithXSL Option, sPath
Parameter Description
Option Choose one of these options:
1 - Return the transformation result as a string and write the result to the screen.
2 - Return the transformation results as a string.
3 - Write the transformation result to disk using the path specified by sPath parameter. This also returns the transformation result as a string.
sPath If you set the Option parameter to three (3), enter the full path and file name of the file you want to use for writing the transformation result to disk.
Here is an example:
<% set o = Server.Createobject("IDSXML.XML") sXML = Server.MapPath("xml\test.xml") sXSL = Server.MapPath("xsl\test.xsl") o.XMLLoadXML(sXML) o.XMLLoadProcessor(sXSL) o.XMLAddParameterToXSL "color", "blue" o.XMLProcessWithXSL 1 , "" set o = nothing
%>
XMLUpdateFormset
Use this method to update an XML form set. This method takes as input a buffer that contains an XML form set or a string that specifies the full path and file name for an XML form set. The method uses the FormsetSelectionList property, which contains a commadelimited string of forms, images, and recipients, to modify the form set.
43
Chapter 2
Using the Internet Document Server
Syntax
Example
Syntax
Example
This method generates a unique name for the updated form set and saves it as a new XML document. It returns the full path and name of the new XML document.
XMLUpdateFormset sXML
Parameter Description
sXML Enter the full path and file name of an XML form set or a buffer that contains an
XML form set.
sDir Enter the name of a directory into which you want to save the updated form set.
Here is an example:
<% set o = Server.CreateObject("IDSXML.XML")
InputFormset = Server.MapPath("original.xml") o.FormsetSelectionList = "DEC PAGE,DEC PAGE.1.AGENT,DEC
PAGE.1.COMPANY,DEC PAGE.1.INSURED,DEC PAGE.q1snam,DEC
PAGE.q1mdc1,DEC PAGE.q1mdc2,DEC PAGE.q1mdc3"
OutFormset = o.XMLUpdateFormset(InputFormset, "Cache") set o = nothing
%>
XMLProcessFormset
Use this method to process a form set. This method takes as input a buffer that contains an XML form set or a string that specifies the full path and file name of an XML form set. The method parses the XML form set and converts it into a public form set collection property. The form set collection contains form objects and each form object contains images and recipients.
XMLProcessFormset xmlBuffer
Parameter Description
xmlBuffer Enter the full path and file name of an XML form set or a buffer that contains the XML form set you want loaded and returned as a collection.
Here is an example: set o = Server.CreateObject("IDSXML.XML")
InputFormset = Server.MapPath("xml\OriginalFormset.xml")
Buffer = o.XMLBuffer(InputFormset) o.XMLProcessFormset Buffer
For i = 1 To o.Formset.Count
formName = o.Formset.Item(i).NAME
formID = Pad(formName)
html = "<input type=checkbox name=SELECTION value=" & formID & _
" onclick='FormSelect(this);'>" & formName
form = "FORM." & CStr(i)
oTree.Add "root", form, html, bExpand, "page.gif"
44
Overview
html = "Recipients"
FRPCS = "FRECIPIENTS" & CStr(i)
oTree.Add form, FRPCS, html, bExpand, "mydoc.gif"
For k = 1 To o.Formset.Item(i).Recipients.Count
recipientName = o.Formset.Item(i).Recipients.Item(k).NAME
recipientCnt = o.Formset.Item(i).Recipients.Item(k).CopyCount
recipientID = formID & "." & recipientCnt & "." & recipientName
html = "<input type=checkbox name=SELECTION value=" & recipientID & _
">" & recipientName
recipient = "RECIPIENT" & "." & CStr(i) & "." & CStr(k)
oTree.Add FRPCS, recipient, html, bExpand, "n.gif"
Next
For j = 1 To o.Formset.Item(i).Images.Count
imageName = o.Formset.Item(i).Images.Item(j).NAME
imageID = formID & "." & imageName
html = "<input type=checkbox name=SELECTION value=" & imageID
& ">" & _
"<font color=blue>" & imageName & "</font>"
image = "IMAGE." & CStr(i) & "." & CStr(j)
oTree.Add form, image, html, bExpand, "help_page.gif"
For k = 1 To o.Formset.Item(i).Images.Item(j).Recipients.Count
recipientName = o.Formset.Item(i).Images.Item(j).Recipients.Item(k).NAME
recipientCnt = o.Formset.Item(i).Images.Item(j).Recipients.Item(k).CopyCount
recipientID = formID & "." & imageName & "." & recipientCnt
& "." & recipientName
html = "<input type=checkbox name=SELECTION value=" & recipientID & ">" & _
recipientName
recipient = "RECIPIENT" & "." & CStr(i) & "." & CStr(j)
& "." & CStr(k)
oTree.Add image, recipientID, html, bExpand, "n.gif"
Next
Next
Next
45
Chapter 2
Using the Internet Document Server
U
SING
M
ULTIPLE
S
ERVERS
To further increase performance, you can set up multiple servers. Each server you set up helps process client requests. You can set up additional servers in a variety of ways, as this diagram shows:
IDS Server
With this server setup, a single IDS Server processes requests from the queue. Both are physically located on the same computer.
Queue
IDS Server
IDS Server
Queue
Computer
With this server setup, a multiple IDS Servers processes requests from the queue. Both the servers and the queue are physically located on the same computer.
Computer
IDS Server
IDS Server
With this server setup, a multiple IDS Servers on multiple computers process requests from the queue.
Queue
IDS Server
Computer Computer
To determine which server setup will work best for you, first determine if your transactions are CPU or I/O (input/output) intensive. Then take a look at the test results we have compiled.
46
Using Multiple Servers
Determining if Your Transactions are CPU or I/O Intensive
To determine if the transactions the server is processing are CPU or I/O intensive, look at the Windows Task Manager:
• If the CPU gauge shows around 100% CPU usage with no other applications running, the transactions are CPU intensive.
• If the CPU gauge shows less than 80% CPU usage, the transactions are, most likely,
I/O intensive (this includes network I/O).
Here are some scenarios and recommendations:
Scenario
Low transaction volume. Each transaction takes a few seconds to process.
High transaction volume. Each transaction takes a few seconds to process.
Any volume. Each transaction takes a few
minutes to process.
Mostly I/O intensive.
Recommended Server Setup
No changes in configuration are required. One server should be able to process all of the requests within reasonable period of time.
If clients are getting the time-out waiting for Server error message, increase the time-out value for the clients. To do this, set TimeOut INI option in the ReqType:XXX control group. You can set this option for each request type. This lets you set it to a higher value for requests which take longer to process. The default time-out for each request type is
60 seconds.
To increase total throughput, try adding a second server. Keep in mind that adding a second server does not let you process twice as many transactions. You will probably see a performance increase of around 10-20 percent.
You may see this scenario when the rules have to retrieve data from a mainframe computer via ODBC or DB2, or when the rules have to do a lot of file processing.*1
In this situation, try adding additional servers on the same computer as the original server.
Any volume. Each transaction takes minutes to process. Mostly CPU intensive.
You may see this scenario if you use a lot of calculation-intensive rules. In this scenario, the best solution is to add a second server on a
separate computer. If you want to add more servers, add them on separate computers so you end up with a computer for each server.
*1 The number of ODBC connections to MVS is limited by MVS and ODBC drivers. You cannot exceed this limit.
47
Chapter 2
Using the Internet Document Server
Performance Measurements when Using Multiple Servers
To help you choose the right server setup for your needs, here are some test results compiled from multiple server runs.
These tests were run with a specified number of servers and clients. The servers were started from the command line, so there is no built-in web server overhead or limitations.
For these tests, all clients ran at the same time. In typical implementations, you seldom have all users working on the server at the same time.
Clients Number of servers Number of transactions per hour
Short transactions, each takes about 1 second or less
20
20
1
2
1680
1825
20
40
3
1
1583 (note the performance degradation)
1211
-
Not CPU intensive transactions, each takes about 40 seconds
1 77
-
-
-
-
3 263
CPU intensive transactions (100% CPU usage in the NT task manager), each takes about 10 seconds
1 372
2 (same PC)
2 (different PC)
372 (no difference)
754
48
Using Multiple Servers
Specifying the INI file to use
Setting Up Additional Servers
You can start multiple instances of IDS by default. Running multiple instances of IDS is generally required for performance reasons.
You control the number of instances IDS starts using this Configuration option:
<section name=”DocumentServer”>
<entry name=”Instances”>2</entry>
</section>
The default is two (2). You can enter a number from 1 to 10.
You can specify the name and location of the DAP.INI file you want to use in the
DPRInit rule as shown here:
<section name=”REQTYPE:INI”>
<entry name=”function”>dprw32->DPRInit,500,d:\docserv\dap.ini</ entry>
</section>
Separate parameters with commas.
The first parameter specifies the file cache. The default FAP file cache is 1000. The second parameter specifies where to find the INI file. DAP.INI is the default file name.
N
OTE
:
This approach does not work with the DPRCoLogin rule. Use the DPRLogin rule instead.
49
Chapter 2
Using the Internet Document Server
S
ETTING
U
P A
W
INDOWS
NT
S
ERVICE
You can configure the Internet Document Server to run as a Windows service.
N
OTE
:
Do not install the Internet Document Server and Internet Document Master
Server as a Windows NT service until you have checked to make sure the system was properly installed.
To set up the Internet Document Server as a Windows service, go to the directory where it is installed and run the batch file, DS-SERVICE.BAT. This will install IDS as a service called Docupresentment Server.
To uninstall Internet Document Server as a Windows service, go to the directory where it is installed and run the batch file, DS-SERVICE-UNINSTALL.BAT.
When running as a service, messages usually written to the console's standard output are written to a text file named WATCHDOG-STDOUT.TXT. The messages usually written to the console's standard error are written to a text file named WATCHDOG-
STDERR.TXT.
50
Handling Multi-threaded Requests
H
ANDLING
M
ULTI
-
THREADED
R
EQUESTS
IDS can run multiple requests at the same time in separate threads of execution. If the requests run are safe to run in multiple threads and are mixed between I/O-based and computation-based, then running some requests in multiple threads can be an alternative to running multiple instances of IDS.
An instance of IDS has a main thread that initializes global data and is the default for running all requests. You can configure IDS to start extra threads to run some requests.
This is done in the docserv.xml configuration file, in the ‘BusinessLogicProcessor’ section:
<entry name="RequestProcessors”>1</entry>
Entry Description
RequestProcessors Indicates how many extra threads to set up to run requests. If the entry is set to zero (0), no extra threads are set up and all requests are run serially.
To specify that a request can be run in an extra thread, in the docserv.xml configuration file, create a 'MultiThreadedRequests' subsection in the 'BusinessLogicProcessor' section:
<section name="MultiThreadedRequests">
<entry name="Request">FTPSEND</entry>
</section>
All requests mentioned in this section will be run in multiple threads if the
'RequestProcessors' entry is set up.
Each thread has its own separate input and output state to keep track of message variables and attachments per request being run, so code in rules that read or change message variables or attachments will not interfere with other requests running at the same time.
This includes calls to:
• DSIMessage.getMsgVar, DSIMessage.setMsgVar, and so on in the Java and scripting rules.
• DSIJQueue.LocateAttachVar, DSIJQueue.AddAttachVar, and so on in the IDS version 1.x Java rules.
• DSILocateAttachVar, DSIAddAttachVar, and so on in the C rules.
This does not mean all rules are safe to run in multiple threads, just that calls to the DSI
API code do not prevent rules from being run in multiple threads. For example,
Documaker code is not safe to run in multiple threads. If you need to run multiple
Documaker-related requests at the same time, you must run multiple instances of IDS.
51
Chapter 2
Using the Internet Document Server
INI vs. THREADINI control sections
Threads and Inter-Rule data in C rules
IDS version 1.x has a INI control section where global data is created and destroyed.
Since IDS version 2.x can have multiple threads, you need a way to create and destroy data needed by each thread. This is done with the THREADINI control section. The
THREADINI control section is run once for each thread as it is started and once for each thread when it is stopped. An example of code needing this is COM setup in Windows; every thread in Windows that will be running COM code needs to initialize COM for that thread. Here is a sample INI and THREADINI control section:
<section name="ReqType:INI">
<entry name="function">irlw32->;IRLInit</entry>
<entry name="function">dprw32->;DPRInit</entry>
</section>
<section name="ReqType:THREADINI">
<entry name="function">DSICoRul->;Init</entry>
</section>
IDS rules written in C use the functions DSICreateValue, DSILocateValue, and
DSIDestroyValue to create data in one part of code to use in other parts of code.
A common usage of these functions is to allocate data in the DSI_MSGINIT part of a function, use it in the DSI_MSGRUNF and DSI_MSGRUNR parts of a function, and free the data in the DSI_MSGTERM part of a function. All this is done inside a single request.
A less common usage is to set up data in the INI request used for the entire runtime of
IDS. Rules in the INI request type have their DSI_MSGINIT code run when IDS starts and their DSI_MSGTERM code run when IDS shuts down. This means data allocated with DSICreateValue in the DSI_MSGINIT part of a INI request rule function is available for all other requests run by IDS. This data is usually read-only, for example configuration information from the DAP.INI file and MRLs set up by the DPRInit function.
Since IDS can run requests in multiple threads simultaneously, each thread needs it's own set of data for running requests plus access to the global configuration information. And, at the same time, each thread needs to remain compatible with C rules using the
DSICreateValue, DSILocateValue and DSIDestroyValue functions. This is done by having two data contexts for data: global and thread-local.
Global context is when IDS is running rules in the INI request type. The INI rules are run with DSI_MSGINIT before the other rule threads are created, and the rules are run with DSI_MSGTERM after the other threads are destroyed. Thread-local context is when all other requests are run.
When the functions DSICreateValue and DSIDestroyValue are called during global context the values are put in global data; in thread-local context the values are put in thread-local data.
When DSILocateValue is called in thread-local context, the thread-local data is first checked to see if has the data. If the value is in thread-local data, it is returned. If not, then global data is checked, and returned if it is there. Only if the value is missing in both places will DSILocateValue indicate that the data is not found.
This allows C rules using DSICreateValue, DSILocateValue, and DSIDestroyValue to run in multiple threads but remain compatible with previous versions of IDS.
52
Handling Multi-threaded Requests
Threads and Inter-Rule data in Java and scripting rules
Since Java rules are based on objects that have their own state, this use of the C DSI-Value functions is not required. When Java rules are used with transaction scope, an instance of the class will remain for the run of the request, so data can be put in member variables and will remain. There are functions available that do the same thing for passing data from one rule to another or for use in one rule if it is run in static scope.
The RequestState object passed in to a Java rule has the methods putObject, getObject, and removeObject. Since each thread has its own RequestState object, you can use these functions to keep track of data for each request. These functions let you store any type of object, not just byte arrays like the C functions.
To pass data between C and Java rules, use the RequestState methods createVar, locateVar, and destroyVar. These correspond to the C functions DSICreateValue,
DSILocateValue, and DSIDestroyValue, so they can only use byte arrays for passing data.
The data context setup is also the same as for these C functions.
To set up and use Java global data, use the GlobalVarStorage class from the
DocuCorpUtil library.
U
SING THE
J
AVA
T
EST
U
TILITY
IDS includes a Java threads test utility you can run to send requests to IDS using single or multiple threads. It also supports attachments and rowsets. You can also feed it a debug message file, such as a receive.msg file generated by IDS (see the ReceiveMessage log4j category in the logconf.xml file under the docserv directory) which can contain more than one transaction that was previously processed. This can be useful in recreating or duplicating a set of transactions for testing.
You can invoke the test utility via the threads script shipped with IDS.
N
OTE
:
If you invoke the test utility without any arguments, it displays usage information.
For more information, see the HTML documentation for the com.docucorp.test.threads class that is included with Java SDK.
You must have Java version 5 or later installed to use this test utility.
53
Chapter 2
Using the Internet Document Server
U
SING
R
ULES
W
RITTEN IN
O
THER
S
CRIPTING
L
ANGUAGES
IDS can run rules written in scripting languages. In addition to rules written in Java, C, and Visual Basic, IDS adds rules written in scripting languages (Java Script, Python, and so on) for debugging, fast prototyping, or rarely run rules.
In a REQTYPE section, add a rule entry such as:
<entry name="function">script;test.py;runRule</entry>
This rule entry uses the runRule function in the Jython script file (TEST.PY).
The following example programs do the same thing. The first is in JavaScript, the second in Jython, a dialect of Python that runs under Java Virtual Machines. You can find information about which languages are available and where to get them at: http://jakarta.apache.org/bsf/index.html
Here is a JavaScript example rule: function runRule(requestState, idsArgs, idsMessage) {
switch (idsMessage) {
case IDSConstants.init :
break;
case IDSConstants.runForward :
break;
case IDSConstants.runReverse :
text = requestState.getOutput().getMsgVar("LANGUAGE");
if (text == null) {
text = "JavaScript";
} else {
text = text + " and JavaScript";
}
requestState.getOutput().setMsgVar("LANGUAGE", text);
break;
case IDSConstants.terminate :
break;
}
return IDSConstants.success;
}
Here is a Jython example rule: def runRule(requestState, idsArgs, idsMessage):
if idsMessage == IDSConstants.runReverse:
text = requestState.getOutput().getMsgVar("LANGUAGE")
if text is None:
text = "Jython"
else:
text = text + " and Jython"
requestState.getOutput().setMsgVar("LANGUAGE", text)
return IDSConstants.success
54
Using IDS as a Client to Another IDS
U
SING
IDS
AS A
C
LIENT TO
A
NOTHER
IDS
You can set up an IDS installation running under Linux and use the RunRP rules to archive data from Documaker output into a Documanage archive stored on a Windows
NT computer. To do this, you must set up your system as explained below.
N
OTE
:
This solution can also be used for other situations, such as when you need to execute rules across platforms.
IDS
Client
Queues
(Set 1)
Linux
IDS
Server 1
(multiple instances)
Documaker
(GenData)
Queues
(Set 2)
IDS
Server 2
(multiple instances)
Archive
(Documanage)
Windows NT
The archive process
The IDS client submits an XML extract file to IDS (IDS Server 1). On this request IDS
Server 1 executes the RunRP rules. After Documaker executes and prior to this transaction being complete, IDS Server 1 has access to NA file, POL file, and NEWTRN file. These files are attached to the request to IDS Server 2 (on Windows NT).
IDS Server 2 archives data into Documanage and returns the error code. IDS Server 1 receives the return code from IDS Server 2, adds all the attachment variables from IDS
Server 2 to the output attachment, and replies to the IDS client. IDS Server 2 does not use GenArc or single-step GenData to archive, which reduces the number of resource and setup files needed on Windows NT.
55
Chapter 2
Using the Internet Document Server
56
The retrieval process
Syntax
The IDS client submits the request to retrieve data to IDS Server 1. IDS Server 1 submits the request to get the DPA file to IDS Server 2. The IDS Server 2 gets the DPA file from
Documanage, attaches it to the SOAP message and sends the reply to IDS Server 1. IDS
Server 1 receives the Documaker file, runs rules to produce a PDF file and sends the PDF file to the client (this can be done as a file on disk or attached to the SOAP message).
Keep in mind:
• MQSeries is used as a queuing system in both places
• Java rules are used to send messages from IDS Server 1 to IDS Server 2 so JVM has to be available on Linux platform to execute Java rules.
• Some of the Documaker resources (like DFD files, INI files) must be available to both IDS implementations and must be kept in sync. One way to synchronize resources is by using mounted volumes from Windows NT to Linux to IDS Server
2 on Windows NT has access to the same physical files as IDS Server 1 on Linux.
• You use the IDSClientRule to make IDS act as a client to another implementation of
IDS. This rule is explained below:
Using the IDSClientRule
Use this rule to have IDS act as an IDS client to send a request to a second IDS. You can set communications parameters to talk to the second IDS and request parameters to set up request types and other attachment variables to send to the second IDS.
The attachment variables and files you want to send can be hard-coded or retrieved as attachment variables from the first IDS. Attachment variables returning from the second
IDS can be put in the input or output queue of the first IDS.
If the second IDS returns files in its result, the files can be written to disk with unique names and cached. The unique names of the files are stored in attachment variables for use by other rules. The rule can be run on the run forward or run reverse message.
Keep in mind that only MQSeries setups are supported. This rule has transaction scope and the method in the Java class is callRequest. The syntax of the function line in a request is shown here: function = dsijrule->JavaRunRule,;com/docucorp/ids/rules/
IDSClientRule;CALL;transaction;callRequest;ARG,MESSAGEFILE=call.propert
ies&REQUESTFILE=call.txt&TIMEOUTSEC=15&RUN=RUNF&DEBUG=Y&DESTINATION=OUT
PUT
Parameter
MESSAGEFILE
Description
This parameter points to the file that holds the settings for communicating with the second copy of IDS.
REQUESTFILE This parameter points to the file that holds attachment variables and files that are sent as a request to the second IDS.
TIMEOUTSEC
RUN
Indicates the number of seconds to wait for a reply from the second IDS.
Indicates the request message during which the rule will run. This parameter is either RUNF for the run forward message or RUNR for the run reverse message.
Using IDS as a Client to Another IDS
Parameter
DEBUG
Description
Determines if debugging messages are put in the Java rule log file. The default is No.
DESTINATION This parameter says which queue will get the results back from the second copy of IDS. The default is OUTPUT.
You can set communications parameters to talk to the second IDS. This is done by setting up the file referenced in the MESSAGEFILE rule parameter.
Here is a sample IDSClientRule communications properties file. Parameters are explained by comment lines above the parameters:
This indicates the class that implements queuing, in this case MQSeries: queuefactory.class=com.docucorp.messaging.mqseries.DSIMQMessageQueu
eFactory
This indicates the class that formats the DSIMessage to send to IDS. Uncomment this line to communicate with IDS version 1.6, leave it commented for subsequent versions:
#marshaller.class=com.docucorp.messaging.data.marshaller.LegacyByte
ArrayDSIMessageMarshaller
The following are sample MQSeries parameters. This is the queue manager for system hosting MQSeries: mq.queue.manager=QM_pdtest
This specifies the MQSeries channel the messaging client and IDS use to communicate: mq.queue.channel=SCC_pdtest
The MQSeries communication can be either in bindings mode (the program is running on the same machine as the MQSeries server) or in client mode (the program is running on a different machine and communicates with the MQSeries server through TCP/IP). If the setting mq.tcpip.host is defined, the system uses client mode, otherwise it uses bindings mode: mq.tcpip.host=10.10.10.10
This specifies the TCP/IP port the MQSeries server is listening to. 1414 is most commonly used.
mq.tcpip.port=1414
A client program sends requests out and gets results in: mq.outputqueue.name=requestq mq.inputqueue.name=resultq
This determines how long, in seconds, the MQSeries server keeps a message in the queue if a program does not get it.
mq.outputqueue.expiry=120
Here is the complete example: queuefactory.class=com.docucorp.messaging.mqseries.DSIMQMessageQueu
eFactory
#marshaller.class=com.docucorp.messaging.data.marshaller.LegacyByte
ArrayDSIMessageMarshaller mq.queue.manager=QM_pdtest mq.queue.channel=SCC_pdtest
57
Chapter 2
Using the Internet Document Server
mq.tcpip.host=10.10.10.10
mq.tcpip.port=1414 mq.outputqueue.name=requestq mq.inputqueue.name=resultq mq.outputqueue.expiry=120
Attachment variables and files to send can be hard coded or retrieved as attachment variables from the first IDS. This is done in the file mentioned in the REQUESTFILE parameter. The file can have these sections:
• [MESSAGES] for attachment variables in name=value pairs
• [TEXTFILES] for sending text files
• [BINARYFILES] for sending binary files
• [RECEIVEDFILES] for the handling of files returned from the second IDS
[TEXTFILES] and [BINARYFILES] have file ID=file location pairs, listing the name that the file data can be identified by and where to get the file's information. Here is a sample
REQUESTFILE:
[MESSAGES]
REQTYPE=CUSTOMREQUEST
USERID=GUEST
[TEXTFILES]
TEXT1=/home/fap/text1.txt
TEXT2=/home/fap/text2.txt
[BINARYFILES]
BIN1=/home/fap/binary1.bin
BIN2=/home/fap/binary2.bin
You can use attachment variables from the current running state of IDS as values in any of the above sections. For example:
~GetAttach VARIABLENAME,INPUT will use an attachment variable from the input queue
~GetAttach VARIABLENAME,OUTPUT will use an attachment variable from the output queue. If instead of the name of an attachment variable, you use an asterisk (*), every attachment variable from that queue will be sent. Here is an example
~GetAttachment *,INPUT
This tells the system to ignore the attachment variable name. If you use an asterisk (*), the request type of the request to send is not changed. An explicit REQTYPE is required in the REQUESTFILE file.
For the [RECEIVEDFILES] section, the string to the left of the equals sign (=) is the name of the file coming back from the second IDS. To the right of the equals sign is the name of the attachment variable that contains the unique name and path of the generated file, the directory where the file will be stored, and, optionally, the number of seconds to cache the file. The default cache is 3600. For text files, the system appends .txt. For binary files, it appends .bin.
Here is a complete example of a request file:
[MESSAGES]
REQTYPE=CUSTOMREQUEST
58
Using IDS as a Client to Another IDS
DUMMY = ~GetAttach *, INPUT
[TEXTFILES]
TEXT1=c:\fap\text1
[BINARYFILES]
BIN1= ~GetAttach BINFILE, OUTPUT
[RECEIVEDFILES]
ZZZT=MYTEXT, ., 1800
ZZZB=MYBIN, c:\fap, 600
In this example after the run, if the current directory is c:\docserv, then the file sent in
ZZZT would be stored in c:\docserv\1729530022133082002.txt
That file name would be stored in the attachment variable MYTEXT and the file sent in
ZZZB would be stored in: c:\fap\6229680022133082002.bin
That file name would be stored in the attachment variable MYBIN. The text file,
(c:\docserv\1729530022133082002.txt) would be cached by IDS for 1800 seconds. The binary file (c:\fap\6229680022133082002.bin) would be cached by IDS for 600 seconds.
59
Chapter 2
Using the Internet Document Server
60
M
ONITORING
IDS
WITH
SNMP T
OOLS
You can connect IDS to SNMP agents (SNMP server programs) so performance data can be viewed by SNMP monitors (SNMP client programs). The connection is done with the
SNMP AgentX protocol, so you can use any SNMP agent program that supports AgentX.
If an AgentX-enabled SNMP agent is not available for a particular platform, IDS includes a Java-based SNMP agent application you can use. This version includes a Management
Information Base (MIB) file, that can be used by SNMP monitor programs to map text names and data types to the MIB number addresses for SNMP objects.
The primary server reports the number of instances of IDS that are running. Each instance will report:
• The amount of time since it started running.
• The amount of time since the last restart.
• The number of successful transactions.
• The number of transactions that caused errors.
• The number of times the instance has been restarted.
• The amount of time needed to run the last transaction.
• The request type of the last transaction.
• The amount of time needed to run the longest transaction so far.
• The request type of the longest transaction so far.
• The number of transactions that have occurred in the last minute.
• The number of transactions that have occurred in the ten last minutes.
• The number of transactions that have occurred in the last hour.
To monitor IDS with SNMP tools, in the docserv.xml configuration file, create an SNMP subsection under the DocumentServer, messaging subsection, as shown here:
<section name="DocumentServer">
<section name="SNMP">
<entry name="Enabled">yes</entry>
<entry name="MasterAddress">10.1.10.100</entry>
<entry name="MasterProtocol">UDP</entry>
<entry name="MasterPort">705</entry>
</section>
</section>
Entry
Enabled
Description
Determines whether or not SNMP support is enabled. The default is No.
MasterAddress Is the IP address of where the master SNMP agent program is running. The default is localhost.
MasterProtocol Is the communications protocol for communicating with the SNMP agent program. You can enter UDP for communicating with IDS's included agent or TCP for communicating with other AgentX-based SNMP agent programs, such as net-snmp. The default is UDP.
Monitoring IDS with SNMP Tools
Entry
MasterPort
Description
Is the port the master SNMP agent program uses for the AgentX protocol.
The default is 705.
M
ONITORING
R
EQUESTS
The SNMP monitoring capabilities in IDS allow the monitoring of extra requests and rules by performance monitoring applications, such as LoadRunner.
You can have up to five statistics monitors to measure performance by SNMP. Each monitor measures either an entire request or an individual rule in a request. For each monitor, the time it takes to execute each message part (initialization, run forward, run reverse, and terminate) as well as the total time for execution is available.
N
OTE
:
The MIB file can use these monitors, but it is not required.
To enable the statistics monitors, in the docserv.xml configuration file, in the
DocumentServer section, add a StatisticsMonitors subsection, as shown here:
<section name="DocumentServer">
...
<section name="StatisticsMonitors">
<entry name="Monitor">SCH</entry>
<entry name="Monitor">RCP</entry>
<entry name="Monitor">PRT</entry>
<entry name="Monitor">PRT/7</entry>
<entry name="Monitor">PRT/8</entry>
</section>
</section>
Each Monitor entry can be the name of a request or the name of a request followed by a slash ( / ) and a number. The number is the number of the active entry in the request section. For example, for this request type...
<section name="ReqType:PRT">
<entry name="function">atcw32->ATCLogTransaction</entry>
<entry name="function">atcw32->ATCLoadAttachment</entry>
<!-- This comment line is skipped -->
<entry name="function">dprw32->DPRSetConfig</entry>
<entry name="function">dprw32->DPRTermDB</entry>
<entry name="function">dprw32->DPRInitLby</entry>
<entry name="function">atcw32->ATCUnloadAttachment</entry>
<entry name="function">dprw32->DPRRetrieveFormset</entry>
<entry name="function">dprw32->DPRPrint</entry>
<entry name="function">dprw32->DPRProcessTemplates</entry>
<!-- -->
</section>
The monitor entry PRT/7 would refer to the DPRRetrieveFormset rule and PRT/8 would refer to the DPRPrint rule.
61
Chapter 2
Using the Internet Document Server
M
ANAGING
IDS
I
NSTANCES
You can use the Watchdog process to manage and monitor IDS instances. The Watchdog process is started, stopped, and configured as a service. It is then responsible for managing and monitoring the IDS instances.
The Watchdog process monitors the health of each instance and restarts it or stops it when needed. You can also configure the Watchdog process through log4j to send email notifications when an instance encounters a fatal or mission-critical error.
The Watchdog process also monitors the idle time for each instance and starts additional ones when all running instances are under load. You have these options:
N
OTE
:
Define these options in the DocumentServer section of the docserv.xml file. Do not confuse these options with similar options for the HTTP router process in the same file. The router is a different process and it does not support load balancing.
Options
Instances
UseLoadBalancing
MaxInstances
Description
(Optional) The number of IDS instances Watchdog should start at startup. The default is two (2).
(Optional) This option controls whether Watchdog checks the idle time of the instances that are running and starts additional ones when all of them are busy.
Instances are considered busy when their idle time is less than the value provided in the MinIdleTimeSeconds option. Watchdog uses the value provided in the
IdleTimeChecks option to determine the number of idle time checks to run before it starts additional instances.
When additional instances are started for load balancing purposes, they are shut down by Watchdog if their idle time exceeds the value in the MaxIdleTimeSeconds option.
The maximum number of instances running is the value for the MaxInstances option (including the instances configured in the Instances option). Watchdog checks the idle time of the current instances at the interval specified in the IdleTimeCheckIntervalSeconds and if all are busy, it starts an additional number of instances equal to the value provided in the IncrementCount option.
Please note that Watchdog does not start checking the busy time of the current instances until the time provided in the IdleTimeCheckDelaySeconds option is reached.
Make sure the value for the delay is ample enough to provide for all instances to start and reach an idle time equal to or greater than the value provided for the
MinIdleTimeSeconds option.
You can enter Yes (or True) or No (or False). The default is Yes.
(Optional) This option controls the maximum number of instances that can run when the UseLoadBalancing option is enabled. The default is the number of processors times two.
62
Managing IDS Instances
Options
IncrementCount
IdleTimeCheckIntervalSeconds
IdleTimeCheckDelaySeconds
IdleTimeChecks
MinIdleTimeSeconds
MaxIdleTimeSeconds
MaxTransactions
MaxReportIntervalSeconds
MaxUpTimeSeconds
Description
(Optional) This option controls how many additional instances are started during the current check when all instances running are busy and the UseLoadBalancing option is enabled. The default is two (2).
(Optional) This option controls how often Watchdog checks the idle time of the instances that are running to determine if they are busy so it can start additional ones when the UseLoadBalancing option is enabled. The default is 60 seconds.
(Optional) This option controls the initial delay before the first idle time check is performed by Watchdog when the
UseLoadBalancing option is enabled. This time should be ample enough to allow all instances to start and reach an idle time equal to or greater than the value provided for the
MinIdleTimeSeconds option. The default is 120 seconds.
(Optional) This option defines the number of consecutive
Idle time checks that must fail, meaning all instances were busy during each check, before more instances are started when the UseLoadBalancing option is enabled. Each check takes place at the IdleTimeCheckIntervalSeconds interval. The default is two (2).
(Optional) This option controls the minimum idle time for each instance. The idle time represents how long it has been since an IDS instance processed the last request. If
Watchdog detects an instance has an idle time less than the value provided for this option, it considers it busy for the purpose of load balancing. The default is five (5) seconds.
(Optional) This option controls the maximum idle time for an additional instance. The idle time represents how long it has been since an IDS instance processed the last request. If Watchdog detects an instance which was started for the purpose of load balancing has reached an idle time greater than the value provided for this option, it sends the instance a shutdown request. The default is 120 seconds.
(Optional) This option controls the maximum number of transactions an instance can process before it is restarted by Watchdog. Enter -1 to disable this option. The default is 10000.
(Optional) This option controls the maximum time interval that can elapse without an instance reporting back to Watchdog before it is restarted. The default is 120 seconds.
(Optional) This option controls the maximum time interval an instance can run before it is restarted by
Watchdog. Enter -1 to disable this option. The default is
28800 seconds (8 hours).
63
Chapter 2
Using the Internet Document Server
Options
MaxRestarts
RestartIntervalSeconds
MaxMemoryUsagePercent
MemoryChecks
CheckIntervalSeconds
UseJMX
Description
(Optional) This option controls the maximum number of restart attempts that can occur within a time interval specified by the RestartIntervalSeconds option before
Watchdog shuts down.
Use this option to prevent Watchdog from attempting to restart instances infinite times when they cannot be started due to configuration errors and so on. The default is five restarts.
(Optional) This option controls the interval used with the
MaxRestarts option to determine if Watchdog is having a problem starting instances and to prevent continuous or infinite restart attempts. The default is 60 seconds.
(Optional) This option controls the maximum percentage of the total JVM memory that can be used by an instance before Watchdog will restart it.
Note that the total memory used in this calculation does not include any memory used by native code. This option is used with the MemoryChecks option. The default is 95.
(Optional) This option controls the total count of consecutive memory checks that must be present, where the memory usage by an instance exceeds the value provided for the MaxMemoryUsagePercent option for each check, at which point Watchdog will restart it.
The interval for each memory check is controlled by the
CheckIntervalSeconds option. The default is -1, which disables this option.
(Optional) This option controls the time interval used by
Watchdog to check the health of each instance. The default is one (1) second.
(Optional) This option controls whether JMX is used to monitor additional health metrics for each instance.
Enabling this option lets Watchdog also monitor class loading, memory usage, garbage collection, and deadlocks in Java code for each instance.
Note that enabling this option requires an additional and separate TCP/IP port for each instance so that it can be started with a JMX agent.
You can enter Yes (or True) or No (or False). The default is No.
Only use this option for debugging or testing purposes.
Do not use this option in production mode because it causes extra overhead and it requires additional ports be used.
64
Managing IDS Instances
Options
JMXPort
JMXCheckIntervalSeconds
JMXMemoryChecks
JMXVerboseMemory
JMXVerboseClassLoader
WaitForShutdownSeconds
OrderedRestartIntervalSeconds
Description
(Optional) This option controls the starting JMX port to use when starting each instance with a JMX agent if the
UseJMX option is enabled.
Note that the starting port value should consider that each additional instance that is started will try to use a continuous/incremental port number. The default starting port value is 49163.
(Optional) This option controls the time interval used to run JMX checks for each instance when the UseJMX option is enabled. The default is 60 seconds.
(Optional) This option controls the total count of consecutive JMX memory checks that must be present, where the memory usage by an instance exceeds the value provided for the MaxMemoryUsagePercent option for each check, at which point Watchdog will restart it.
The interval for each check is controlled by the
JMXCheckIntervalSeconds option. The default is -1, which disables this option.
(Optional) This option controls whether Watchdog turns on verbose memory to output GC statistics for each IDS instance when the UseJMX option is enabled. You can enter Yes (or True) or No (or False). The default is No.
(Optional) This option controls whether Watchdog turns on verbose class loading for each IDS instance when the
UseJMX option is enabled. You can enter Yes (or True) or
No (or False). The default is No.
(Optional) This option controls how long Watchdog waits for an instance to shut down after it issues a shutdown command and before it terminates the instance. The default is 20 seconds.
(Optional) This option controls the interval used for restarting each of the IDS instances in a sequential/ ordered manner when the MaxTransactions or
MaxUpTime options are used.
Watchdog restarts one instance at a time and waits for an amount of time equal to the value specified for this option before it restarts the next one and so on until it has restarted all of them.
If you set this option to less than 60 seconds, you can negatively affect performance. The default is 60 seconds.
65
Chapter 2
Using the Internet Document Server
66
Determining the instance number of a server
Categories and appenders used by
Watchdog
You can determine the exact instance number of the (IDS) server the rule is running on.
For instance, you can use this to determine which TCP/IP port to use when IDS has to talk to the GenData process. This DSI variable can be accessed from an IDS rule:
IDSINSTANCE
The value is a character array of a zero-based value. For example, on the primary IDS the value will be zero (0), on first secondary instance it will be one (1), and so on. To get the value, the rule has to call DSILocateValue().
Here are the Log4J categories and appenders used by Watchdog (see logconf.xml file included in the docserv directory):
• These mail categories and appenders are used to send email notifications during mission critical errors, such as when IDS has a fatal exception:
<!--Used by Watchdog to send email notifications.-->
<category name="EMAIL" additivity="false">
<priority value="ERROR"/>
<appender-ref ref="EMAIL"/>
</category>
<appender class="org.apache.log4j.net.SMTPAppender" name="EMAIL">
<param value="1" name="BufferSize"/>
<param value="10.1.20.148" name="SMTPHost"/>
<!--Comment out the SMTPUsername and SMTPPassword parameters to skip authentication.-->
<!--
<param value="" name="SMTPUsername"/>
<param value="" name="SMTPPassword"/>
-->
<param value="[email protected]" name="From"/>
<!--Use a comma delimited string of email addresses for To, cc and bcc.-->
<param value="[email protected],[email protected]" name="To"/>
<param value="[email protected],[email protected]" name="cc"/>
<param value="[email protected],[email protected]" name="bcc"/>
<param value="Error Message" name="Subject"/>
<param value="ERROR" name="threshold"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d-[%t]-%m\n"/>
</layout>
</appender>
• This category is used to log informational output by Watchdog:
<!--Used to log Watchdog informational output.-->
<category name="Watchdog.output" additivity="false">
<priority value="INFO"/>
<appender-ref ref="watchdog-stdout"/>
<appender-ref ref="watchdog-allroll"/>
</category>
• These categories and appenders are used to log debug and error messages by
Watchdog. Change the Priority value to 'DEBUG' to log debug messages.
<!--Used to log Watchdog debug and error messages.-->
<category name="com.docucorp.watchdog.Watchdog" additivity="false">
Managing IDS Instances
<priority value="ERROR"/>
<appender-ref ref="watchdog-stdout"/>
<appender-ref ref="watchdog-allroll"/>
</category>
<!--Logs Watchdog messages to stdout.-->
<appender name="watchdog-stdout" class="com.docucorp.util.logging.IDSConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d-[%t]-%m\n"/>
</layout>
</appender>
<!--Watchdog Appender.-->
<appender name="watchdog-allroll" class="com.docucorp.util.logging.IDSFileAppender">
<param name="Append" value="true"/>
<param name="File" value="watchdog.log"/>
<param name="Encoding" value="ISO-8859-1"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d-[%t]-%m\n"/>
</layout>
</appender>
• These categories and appenders are used by each Watchdog instance monitor thread to log information for each instance monitored separately. Change the Priority value to 'DEBUG' to log debug messages.
<!--Used to log each thread's Instance Monitor debug and error messages.-->
<category name="com.docucorp.watchdog.monitor.InstanceMonitor" additivity="false">
<priority value="ERROR"/>
<appender-ref ref="instance-stdout"/>
<appender-ref ref="instance-allroll"/>
</category>
<!--Logs Instance Monitor thread messages to stdout.-->
<appender name="instance-stdout" class="com.docucorp.util.logging.IDSConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d-[%t]-%m\n"/>
</layout>
</appender>
<!--Logs Instance Monitor thread messages to separate file(s).-->
<appender name="instance-allroll" class="com.docucorp.watchdog.util.WatchdogFileAppender">
<param name="Append" value="true"/>
<param name="File" value="~THREADID.log"/>
<param name="Encoding" value="ISO-8859-1"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d-[%t]-%m\n"/>
</layout>
</appender>
67
Chapter 2
Using the Internet Document Server
68
Watchdog section
• These categories and appenders are used to log debug and error information for IPC
(Inter-Process Communication) messages between Watchdog and the instances.
Change the Priority value to 'DEBUG' to log debug messages.
<!--Used to log IPCConnector debug and error messages.-->
<category name="com.docucorp.watchdog.ipc.IPCConnector" additivity="false">
<priority value="ERROR"/>
<appender-ref ref="connector-stdout"/>
<appender-ref ref="connector-allroll"/>
</category>
<!--Logs IPCConnector debug and error messages to stdout.-->
<appender name="connector-stdout" class="com.docucorp.util.logging.IDSConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d-[%t]-%m\n"/>
</layout>
</appender>
<!--Logs IPCConnector debug and error messages to a file.-->
<appender name="connector-allroll" class="com.docucorp.watchdog.util.WatchdogFileAppender">
<param name="Append" value="true"/>
<param name="File" value="~THREADID.log"/>
<param name="Encoding" value="ISO-8859-1"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d-[%t]-%m\n"/>
</layout>
</appender>
A watchdog configuration file can contain multiple sections, each with its own set of options. Here are some examples:
Here is an example of the Watchdog section:
<configuration>
<section name="Watchdog">
<entry name="UseJMX">No</entry>
<entry name="JMXCheckIntervalSeconds">60</entry>
<entry name="JMXMemoryChecks">3</entry>
<entry name="JMXVerboseMemory">Yes</entry>
<entry name="JMXVerboseClassLoader">Yes</entry>
</section>
<section version="2.3" name="DocumentServer">
<entry name="StartCommand">java</entry>
<entry name="StartArguments">-Djava.endorsed.dirs=lib/ endorsed -Xmx256m -Ddsimessage.debug=N -Dmarshaller.output=N -cp
.;lib/DocucorpStartup.jar -Dids.configuration=docserv.xml -
Dlogging.configuration=logconf.xml com.docucorp.startup.Startup com.docucorp.ids.DocumentServer</entry>
<entry name="StartDirectory">.</entry>
<entry name="Instances">2</entry>
<entry name="UseLoadBalancing">Yes</entry>
<entry name="MaxInstances">10</entry>
<entry name="IncrementCount">2</entry>
<entry name="IdleTimeCheckIntervalSeconds">60</entry>
<entry name="IdleTimeCheckDelaySeconds">120</entry>
Managing IDS Instances
<entry name="IdleTimeChecks">2</entry>
<entry name="MinIdleTimeSeconds">5</entry>
<entry name="MaxIdleTimeSeconds">120</entry>
<entry name="MaxTransactions">10000</entry>
<entry name="MaxReportIntervalSeconds">60</entry>
<entry name="MaxUptimeSeconds">28800</entry>
<entry name="MaxRestarts">5</entry>
<entry name="RestartIntervalSeconds">60</entry>
<entry name="MaxMemoryUsagePercent">95</entry>
<entry name="MemoryChecks">3</entry>
<entry name="CheckIntervalSeconds">1</entry>
<entry name="UseJMX">No</entry>
<entry name="JMXPort">49163</entry>
<entry name="JMXCheckIntervalSeconds">60</entry>
<entry name="JMXMemoryChecks">3</entry>
<entry name="JMXVerboseMemory">Yes</entry>
<entry name="JMXVerboseClassLoader">Yes</entry>
<entry name="WaitForShutdownSeconds">20</entry>
<entry name="OrderedRestartIntervalSeconds">60</entry>
</section>
</configuration>
These JVM options are supported:
Option Description
-Dwatchdog.configuration
(Optional) The name of the XML configuration file for watchdog.
The default is docserv.xml.
-Dlog4j.configuration
(Optional) The name of the XML configuration file for LOG4J.
The default is logconf.xml.
-Dwatchdog.prefix
(Optional) A unique string that should be used as the prefix for all
Watchdog files/locks generated on disk.
Use this option when running more than one Watchdog instance from the same directory.
Scenario 1
Scenario 2
Here are some examples:
A platform contains a single CPU and the default values are used for the Instances option and for load balancing.
In this case, the default value of Instances will be two (2) and the default value of
MaxInstances will also be two (2) so no load balancing will occur.
A platform contains four CPUs and the default values are used for the Instances option and for load balancing.
In this case the default value of Instances is two (2) and the default value of MaxInstances is 8. The default increment count will be two (2), the default minimum idle time will be 5 seconds, and the default maximum idle time will be 120 seconds.
Load balancing will occur and Watchdog will check the idle time of any running instances every 60 seconds. If each of the instances running has an idle time that is less than 5 seconds, Watchdog deems them all busy and starts two additional instances. Watchdog then continues on to the next check interval.
69
Chapter 2
Using the Internet Document Server
Scenario 3
These steps are repeated during each check interval until the total number of instances running reaches eight. If any of the running instances were started for the purpose of load balancing and reach an idle time greater than 120 seconds, they are shut down by
Watchdog.
A platform contains four CPUs and the value for the Instances option is set to 20 and the default values are used for load balancing.
In this case the value for MaxInstances will be eight but the value for the instances will be greater than the value for the maximum instances that can be reached during load balancing so no load balancing will occur.
70
Sending Results and Receiving Requests in Multiple Formats
S
ENDING
R
ESULTS AND
R
ECEIVING
R
EQUESTS IN
M
ULTIPLE
F
ORMATS
The HTTP-based and queue-based messaging systems in IDS can accept messages in multiple formats and will return results in the same format as the request. This is done so
IDS can communicate with third-party products that would find it difficult to produce messages in current IDS-compatible formats.
The translation is done by marshaller code that translates a foreign message format into the message format used internally by IDS (com.docucorp.messaging.data.DSIMessage).
Marshallers are Java objects that implement the interface
com.docucorp.messaging.data.marshaller.DSIMessageMarshaller, which is documented in the
SDK Reference.
Objects of the DSIMessage class hold the message variables and attachments passed in as input to IDS and the output message variables and attachments produced by processing requests in IDS.
The most important functions for marshallers are shown here:
Marshaller Takes
marshall A DSIMessage as an input and produces an object that is suitable for sending to a client application via messaging. unmarshall An object from a client application and a DSIMessage, and uses the Object to fill in data in the DSIMessage.
isType An object from a client application and determines if it is in the format of the marshaller.
The messaging systems, both HTTP-based and queue-based, keep a list of marshallers for formats that they recognize. When a message comes in from a client application, a messaging system compares the message's format against the formats will recognizes using the isType function for each marshaller.
If there is a match the incoming data is translated into a DSIMessage with the marshallers unmarshall function and the DSIMessage, holding the request to be processed, is used as input into the main request processing in IDS. This produces an output DSIMessage holding message variables and attachments. The output DSIMessage is translated into the same format as the input message and sent back to the client application.
As a default, the HTTP-based messaging system understands the SOAP with MIME
Attachments format. (See Using HTTP on page 125 for more information.) The default marshallers for the queue-based messaging system understand the SOAP with MIME
Attachments format and the binary format used by IDS version 1.6 and earlier.
The queue-based messaging system currently works with WebSphere MQ, formerly known as MQSeries, and Java Message Service based queues. Both queuing systems can deliver messages as text (a Java string) and binary (a Java array of bytes), so marshallers can work with either format. The HTTP-based messaging system only recognizes text with HTTP headers, such as Content-length, so marshallers written to work with HTTP must work within these limitations.
71
Chapter 2
Using the Internet Document Server
Configuring and Deploying Marshallers
To configure IDS to recognize custom marshallers, you can add a marshallers section to either of these sections:
• 'BusinessLogicProcessor', subsection 'messaging', subsection 'queue'
• 'BusinessLogicProcessor', subsection 'messaging', subsection 'http'
For example, in the docserv.xml configuration file, in section 'BusinessLogicProcessor', subsection 'messaging', subsection 'queue' create a 'marshallers' section and add these entries:
<section name="marshallers">
<entry name="marshaller.class">com.docucorp.messaging.data.marshaller.Lega
cyByteArrayDSIMessageMarshaller</entry>
<entry name="marshaller.class">com.docucorp.messaging.data.marshaller.SOAP
MIMEDSIMessageMarshaller</entry>
</marshallers>
This sets up the queuing system to use these two formats for receiving and sending requests. If no entries are specified then IDS defaults to SOAP with attachments and legacy IDS byte format.
N
OTE
:
If a custom marshaller list is added to the configuration file, the default marshallers are not automatically added to the list. This allows greater customization. If you want to also use the default marshallers in messaging, you must add them to the marshallers list in addition to the custom marshallers.
Using the DSIMessage marshaller class
To deploy your marshaller code, package the Java class files in a JAR file and put it in the
/lib subdirectory under where IDS was installed. The next time IDS starts your custom marshallers will be available.
IDS version 2.1 added the DSIMessage marshaller class called
XSLTTemplateDSIMessageMarshaller.
For marshalling, the marshaller starts with the usual SOAP/XML format of a
DSIMessage, then uses that as the source of a XSLT transformation to convert the SOAP message to a third-party XML format.
For unmarshalling, the marshaller starts with a third-party XML format and the XSLT transformation converts it to the Docupresentment SOAP/XML format, which is then unmarshalled into a DSIMessage object.
In addition to the usual marshalling methods, the marshaller adds methods to pass in the files holding the XSLT templates, or the text of the XSLT template directly.
N
OTE
:
This marshaller is mainly used in IDS rules, so there is no configuration-based setup of XSLT templates for marshalling and unmarshalling. You set up the
XSLT with Java methods in the XSLTTemplateDSIMessageMarshaller class.
These methods set up XSLT templates for the marshaller:
72
Sending Results and Receiving Requests in Multiple Formats
• public void setMarshallerText(String text)
This method sets the XSLT text for marshalling messages (converting to a foreign format).
• public void setMarshallerFilename(String filename)
This method sets the file that holds the XSLT for marshalling messages (converting to a foreign format). The file is loaded into the marshaller filter.
• public void setUnmarshallerText(String text)
This method sets the XSLT text for unmarshalling messages (converting from a foreign format).
• public void setUnmarshallerFilename(String filename)
This method sets the file that holds the XSLT for unmarshalling messages
(converting from a foreign format). The file is loaded into the unmarshaller filter.
73
Chapter 2
Using the Internet Document Server
L
OGGING AND
T
RACING
Severity levels
Logging categories
There are several ways you can configure IDS to log messages. For instance, you can configure IDS to:
• Log only events based on their severity, from debug messages to fatal errors.
• Control where logging messages are sent, whether they go to files, the Windows event logger, into emails, and so on.
• Include and format the relevant information, such as time of day, elapsed time since
IDS was started, where the message came from, which thread the code is currently running in, and so on.
Logging in IDS is based on the Log4j logging library. A complete description of Log4j's capabilities is available at http://jakarta.apache.org/log4j
IDS logging is configured by the file specified in the Java system property
'logging.configuration'. If this property is not set, the default is to look for the logconf.xml file in the current directory. This file is checked periodically for changes by IDS when it is running, so it is possible to change logging options while IDS is running. IDS does not need to restart when a logging change is made.
Logging messages have a severity level assigned to them. This is used to determine if and when a logging message is written. From least to most severe, the severity levels are:
• DEBUG
• INFO
• WARN
• ERROR
• FATAL
When setting up logging you can decide what kind of messages to receive by picking a severity level. Any messages at that severity level and those more severe are output. For example, if you choose a severity level of WARN, only WARN, ERROR, or FATAL messages are sent, while DEBUG and INFO messages are suppressed. For diagnosing problems, the severity level would be set to DEBUG to produce more messages.
What messages to log and where to log them is determined by logging categories or loggers.
Categories are based on a hierarchy of names or words separated by periods. As an example, DocumentServer would be a parent category to DocumentServer.output and
DocumentServer.error. When a parent category is assigned a severity level, all children categories inherit it as their default. Children categories can override these defaults.
For example, if the DocumentServer category's severity level is set to WARN and the
DocumentServer.output category's severity is set to INFO, then only DocumentServer and
DocumentServer.error will use WARN.
74
Logging and Tracing
The DocumentServer.output category is where normal runtime messages for IDS are sent, such as the startup message and how many transactions were completed at shutdown or restart time. Common errors encountered during configuration and rule setup are sent to the DocumentServer.error category. Since these messages are in logging categories, they can be sent to multiple places in addition to being printed on the console. There are other categories that have debugging messages and you may be asked to activate these by
Support.
N
OTE
:
For additional information, see Using Logging Categories to Access the Internal
Format of Requests on page 94 .
Logging appenders
Logging formats
Logging example
The destinations for logging messages are known as appenders, since new logging messages are appended to the end of the file, event log, and so on. The most common appenders are for the console and for files.
A category can send messages to multiple appenders. Like severity levels, appenders inherit from parent categories, but unlike severity levels, appenders are added to the parent appenders and do not override the parent category's settings. This inheritance can be turned off, as shown in the logging example.
In addition to the logging message itself, other information can be configured to be output with the logging message, such as the date and time the logging occurred, the severity level of the message, and so on. In Log4j the formatting strings are called conversion
patterns, which you will see in the logging example. You can arrange the formatting commands in any order. Text not part of a formatting command is sent verbatim, so you can use commas, dashes, and other characters to separate the formatted text.
You may want to set up conversion patterns for different appenders. For example, you may want to include the date and time on a message going to a file but excluding it from a message going to the Windows Event Log, since the message's date and time are logged by the Event Logger.
Here are some of the common formatting commands:
%c
%d
%r
%p
%t
Parameter Description
%m The actual message being logged.
%n A system-dependent newline character.
The category of the message.
Date and time, down to the millisecond, when the message was generated.
Elapsed time, in milliseconds, since the application was started.
Severity level (priority) of the message generated.
The name of the Java thread that generated the message.
This is an example logging configuration file. This table shows how the various categories output messages:
75
Chapter 2
Using the Internet Document Server
Category
DocumentServer
DocumentServer.output
DocumentServer.output
DocumentServer.error
Outputs messages
With a WARN security level or higher
With an INFO security level or higher
That go to the console
That go to the console, a logging file, and to the Windows Event
Logger.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="false">
<!-- An appender that writes messages to a file. -->
<appender name="rollfile" class="org.apache.log4j.RollingFileAppender">
<param name="Append" value="true" />
<param name="File" value="docserver.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%-5p [%t] %r: %c{1} - %m\n"/>
</layout>
</appender>
<!-- An appender that writes messages to the console. -->
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value=" %d %-5p [%t]: %c{1}
%m\n"/>
</layout>
</appender>
<!-- An appender that writes messages to the Windows Event Log. -->
<appender name="ntevent" class="org.apache.log4j.nt.NTEventLogAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value=" Docupresentment
Server: %m\n"/>
</layout>
</appender>
<!-- The parent category for outputs and errors. -->
<category name="DocumentServer">
<priority value="WARN" />
<appender-ref ref="stdout" />
<appender-ref ref="rollfile" />
<appender-ref ref="ntevent" />
</category>
76
Logging and Tracing
<!-- The "standard output" for DocumentServer - where regular messages go. -->
<category name="DocumentServer.output" additivity="false">
<priority value="INFO" />
<appender-ref ref="stdout" />
</category>
<!-- A debugging category, will be turned on and off. -->
<category name="com.docucorp">
<priority value="WARN" />
<appender-ref ref="stdout" />
</category>
<root>
</root>
</log4j:configuration>
N
AMING
L
OGGING
M
ESSAGES
IDS includes a Log4j Appender class lets you control the naming of the files logging messages are written to. The full name of the class is: com.docucorp.ids.serverutils.IDSFileAppender
When this class is used as part of the logging setup, you can use IDS-specific variables.
The IDS-specific variables are:
Variable
~INSTANCE
~SERVERGUID
~THREADID
Description
The instance number of the server being run. A primary server has an instance number of zero (0) and secondary instances are numbered starting at one (1). For example, running three instances of IDS, one primary and two secondary, the instances are numbered 0, 1, and 2.
A IDS GUID identifier unique to each IDS instance but not recycled upon restart. When IDS is started, the primary instance and any secondary instances are assigned a unique identifying string. These strings are assigned to the same instance of IDS if it is shut down and restarted. The GUID strings remain the same until the number of instances is changed in the docserv.xml configuration file.
Each thread in IDS is given a name. You can use this name as part of the file name. Since the same code may run in different threads during the lifetime of an IDS session, and since the thread ID can be printed during a logging message, you would seldom need to use this option.
An exception is for debugging the HTTP subsystem of IDS, where each
HTTP message is run in a pool of threads.
~UPTIME The date and time of when the instance of IDS was started.
~LASTRESTART The date and time of the most recent restart of this instance of IDS.
~CURRENTTIME The current date and time. The time can be measured down to the millisecond so this option is handy for debugging time-critical and performance issues.
77
Chapter 2
Using the Internet Document Server
The ~UPTIME, ~LASTRESTART, and ~CURRENTTIME options are followed by a formatting parameter which ends with a semicolon (;). The formatting options are based on Java's SimpleDateFormat class. You can find full documentation for these formatting options at: http://java.sun.com/j2se/1.3/docs/api/java/text/SimpleDateFormat.html
The formatting characters are:
W a
F w
E
D s
S
' z k
K
''
H m d h y
M
Symbol Meaning
G era designator year month in year day in month hour in am/pm (1~12) hour in day (0~23) minute in hour second in minute millisecond day in week day in year day of week in month week in year week in month am/pm marker hour in day (1~24) hour in am/pm (0~11) time zone escape for text single quote
Number
Number
Text
Number
Number
Number
Number
Text
Presentation
Text
Number
Text & Number
Number
Number
Number
Number
Number)
Number
Text
Delimiter
Literal
10
12
0
30
Example
AD
1996
July & 07
55
978
Tuesday
189
2 (2nd Wed in July)
27
2
PM
24
0
Pacific Standard Time
'
Here are some sample formats:
78
Logging and Tracing
Sample
MM-dd-yyyy
Explanation
Two digits for the month, two digits for the day, and four digits for the year.
MMMM-dd-yyyy The month spelled out, two digits for the day, and four digits for the year.
yyyyMMddHHmmssSSSS A 4-digit year, 2-digit month, 2-digit day, 2-digit hours in day, 2digit minutes in day, 2-digits seconds in a minute, and 4-digit milliseconds in a second.
In this format, sorting alphabetically is the same as sorting by date.
As a Log4j Appender, the IDSFileAppender has several parameters that are set in the logging configuration file, usually named logconf.xml. The parameters are:
Parameter Description
File The name of the file to write. This can be a static file name or a dynamic file name created using the above options.
Append
Close
If True, the next logging message is appended to the end of the file. If false, the file is first erased. The default is True.
If True, the file is closed after the message is written. This can be useful if you want to edit, move, or delete the file while IDS is still running. The default is
False.
If the name of a file changes between two logging calls, for example if you are using
~LASTRESTART and IDS is restarted, or if you are using ~CURRENTTIME and the time changes by a sufficient amount, the old file is automatically closed.
Using combinations of Append and Close can produce different effects. With Append as
False and Close as True, only one logging message will be in the file at any time. This can be handy when debugging messages passed in and out of IDS.
If Append is True and Close is False, the file acts like a regular FileAppender. In fact, if you are running only one instance of IDS and you do not want to change the file name, use the regular FileAppender since it is slightly faster than the IDSFileAppender.
IDSFileAppender has to re-evaluate the file name for each logging message. Setting
Append to True and Close to True gives you an ever-growing file that you can move, delete, edit, and so on.
Here are some examples:
The IDSFileAppender is used in the appender elements in the logging configuration.
<appender name="multiinstance" class="com.docucorp.ids.serverutils.IDSFileAppender">
<param name="Append" value="true" />
<param name="File" value="server-~INSTANCE .log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p [%t] %r: %c{1} - %m\n"/>
</layout>
</appender>
79
Chapter 2
Using the Internet Document Server
This produces a separate log file for each instance of IDS. If there are a total of three instances running, a primary and two secondaries, these log files are created:
• server-0.log
• server-1.log
• server-2.log
<appender name="everyhour" class="com.docucorp.ids.serverutils.IDSFileAppender">
<param name="Append" value="true" />
<param name="File" value="server-~CURRENTTIME MMddHH;.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p [%t] %r: %c{1} - %m\n"/>
</layout>
</appender>
This produces a log file and which is written to until the hour changes. The system then starts writing to a new file. The date/time formatting is for the month, day, and hour, so on October 15, from noon until 1 pm, logging entries are written to the server-101512.log file. From 1 pm to 2 pm, logging entries are written to the server-101513.log file, and so on.
U
SING
L
OGGING
C
ATEGORIES
To make it easier to debug problems in IDS, you can use logging categories to sort messages IDS receives from client programs and messages it sends to client programs.
You can have the system treat all messages the same or distinguish between messages from message queues (WebSphere MQ or JMS) and messages from HTTP.
Combining the use of the message categories with options in the IDSFileAppender provides the same functionality as the send.msg and receive.msg message debugging of IDS version 1.8, but also allows other options.
The categories are as follows:
• SendMessage.queue
• ReceiveMessage.queue
• SendMessage.http
• ReceiveMessage.http
As with other Log4j categories, the categories are hierarchical, so using category names
SendMessage and ReceiveMessage will use the same category for both queue and HTTP-based messages.
Since the messages are handled as Log4j categories, they can have all the destinations of other categories, such as files, the NT Event logger, email, and so on.
Here are some examples. When looking at the examples, remember that for each request, a message is first received by IDS then a message is sent.
80
Logging and Tracing
This combination of categories and appenders gives the same behavior as in IDS version
1.8. When the categories are set to DEBUG, any received messages are placed in the receive.msg file. Any sent messages are placed in the send.msg file. When new messages are processed, either by queues or HTTP, they are placed in the receive.msg and send.msg files.
<appender name="receivemessage" class="com.docucorp.ids.serverutils.IDSFileAppender">
<param name="Append" value="false" />
<param name="File" value="receive.msg" />
<param name="Close" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m"/>
</layout>
</appender>
<appender name="sendmessage" class="com.docucorp.ids.serverutils.IDSFileAppender">
<param name="Append" value="false" />
<param name="File" value="send.msg" />
<param name="Close" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m"/>
</layout>
</appender>
<category name="ReceiveMessage">
<priority value="DEBUG" />
<appender-ref ref="receivemessage" />
</category>
<category name="SendMessage">
<priority value="DEBUG" />
<appender-ref ref="sendmessage" />
</category>
This set of categories and appenders puts the received messages and sent messages in the same file, with one file for each instance of IDS that is running. Since Append is False for receiving and Append is True for sending, this file is overwritten for each receive/send pair. The header Received: is added in front of the received message and Sent: is placed in front of the sent message.
<appender name="receivecombined" class="com.docucorp.ids.serverutils.IDSFileAppender">
<param name="Append" value="false" />
<param name="File" value="combined-~INSTANCE .msg" />
<param name="Close" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="Received:%n%m%n"/>
</layout>
</appender>
<appender name="sendcombined" class="com.docucorp.ids.serverutils.IDSFileAppender">
<param name="Append" value="true" />
81
Chapter 2
Using the Internet Document Server
<param name="File" value="combined-~INSTANCE.msg" />
<param name="Close" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="Sent:%n%m"/>
</layout>
</appender>
<category name="ReceiveMessage">
<priority value="DEBUG" />
<appender-ref ref="receivecombined" />
</category>
<category name="SendMessage">
<priority value="DEBUG" />
<appender-ref ref="sendcombined" />
</category>
In this example you distinguish between messages handled by the queues and messages handled by HTTP. The queue messages are placed in receive.msg and send.msg, but since the HTTP messages are handled simultaneously by multiple threads, the HTTP messages include the thread ID in the file names.
The system also notes the categories and sub-categories. In the categories with HTTP,
additivity is set to False, meaning the HTTP categories should not use appenders from the
SendMessage and ReceiveMessage categories.
<appender name="receivemessage" class="com.docucorp.ids.serverutils.IDSFileAppender">
<param name="Append" value="false" />
<param name="File" value="receive.msg" />
<param name="Close" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m"/>
</layout>
</appender>
<appender name="sendmessage" class="com.docucorp.ids.serverutils.IDSFileAppender">
<param name="Append" value="false" />
<param name="File" value="send.msg" />
<param name="Close" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m"/>
</layout>
</appender>
<appender name="receivehttp" class="com.docucorp.ids.serverutils.IDSFileAppender">
<param name="Append" value="false" />
<param name="File" value="receive-~THREADID .msg" />
<param name="Close" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m"/>
</layout>
</appender>
82
Logging and Tracing
<appender name="sendhttp" class="com.docucorp.ids.serverutils.IDSFileAppender">
<param name="Append" value="false" />
<param name="File" value="send-~THREADID .msg" />
<param name="Close" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m"/>
</layout>
</appender>
<category name="ReceiveMessage">
<priority value="DEBUG" />
<appender-ref ref="receivemessage" />
</category>
<category name="SendMessage">
<priority value="DEBUG" />
<appender-ref ref="sendmessage" />
</category>
<category name="ReceiveMessage.http" additivity="false">
<priority value="DEBUG" />
<appender-ref ref="receivehttp" />
</category>
<category name="SendMessage.http" additivity="false">
<priority value="DEBUG" />
<appender-ref ref="sendhttp" />
</category>
L
OGGING
I
NFORMATION ABOUT
R
EQUESTS
IDS lets you store information about a request in a database for later viewing or processing. IDS logs information about a request (transaction) in any Java Database
Connectivity (JDBC) compliant database. You can find additional information about
JDBC at http://java.sun.com/products/jdbc/
On Windows computers, Open Database Connectivity (ODBC) is available, and Java has built-in drivers to ODBC connections.
Request logging automatically rolls over and starts new database tables on a daily or weekly basis and you can configure IDS to automatically delete old database tables. The configuration file can specify how many days or weeks of log tables to keep when purging old tables.
83
Chapter 2
Using the Internet Document Server
N
OTE
:
Set up a separate database for IDS transaction logs. When purging old tables, all tables that do not qualify as the most recent transaction logs are deleted from the database.
IDS lets you use a browser to display request logs and sort and filter the requests. You can display logs from just a single database table or from multiple tables.
When IDS sends result messages back to client programs, it includes these message variables:
Variable Description
IDSHOSTNAME Contains the host name of the machine running IDS.
IDSGUID Contains the unique ID for the running instance of IDS.
Request logging configuration
With this information you can track a message back to a particular instance of IDS running on a particular machine, even if all messages are logged to a common place.
To add this capability, go to the DOCSERV.XML configuration file and find the
BusinessLogicProcessor section. Then create a TransactionLogDatabase subsection, as shown here:
<section name="TransactionLogDatabase">
<entry name="class">sun.jdbc.odbc.JdbcOdbcDriver</entry>
<entry name="URL">jdbc:odbc:TRAN_LOG</entry>
<entry name="userid">sa</entry>
<entry name="password"></entry>
<entry name="time.type">weekly</entry>
<entry name="time.count">2</entry>
<entry name="time.startofweek">monday</entry>
<entry name="close.database">N</entry>
<section name="columns">
<entry name="Reqtype">REQTYPE</entry>
<entry name="UserID">USERID</entry>
<entry name="Password">PASSWORD</entry>
</section>
</section>
Parameter
class
URL userid password
Description
The JDBC Java class that connects to the database. In this example, we are using Java's built in ODBC connectivity in Windows.
The JDBC-based name of the database that tables will be written into. This will vary for different JDBC drivers, but somewhere will include the database name, in this case TRAN_LOG. Consult your JDBC driver documentation on setting up this URL.
The user name for logging in to the database.
The password for the specified user name.
84
Logging and Tracing
Accessing the transaction database through IDS
Parameter
time.type
time.count
time.startofweek
close.database
columns
Description
Either daily or weekly, specifying how often to roll over into a new database table.
How many of the most recent tables in the database to keep when deleting old tables. This will be either the most recent days or weeks worth of information, depending on the time.type setting.
When time.type is weekly, this specifies what day of the week to start a new database table.
Whether or not to close the database after writing a transaction to the transaction database. Setting this to Y or N will depend on how many database connections are available to the database and how often transactions are logged.
This subsection holds any number of entries specifying the column names in the database. The entry name is the name of the column that will be used in the database. The entry value is the name of the message variable in the output that will be written in the column.
IDS includes requests and HTML pages to let a user view the transaction log database from a browser. To begin, start a web browser and go to this URL http://localhost:49152/request?REQTYPE=LOGMETADATA
localhost:49152 refers to the IP address and port that IDS is set up for HTTP messaging.
You will see a screen similar to this:
The Transaction Log Date field specifies which day's worth of records that results will be pulled from. Use the calendar button next to this field to pick another date. If data is being collected in weekly mode, you can check the View All Log Entries field to select data from all the records in a week's database table, not just the data for one day.
85
Chapter 2
Using the Internet Document Server
The Field column lists all the data fields you can display. You can choose individual fields or select them all. The numeric drop-down box next to each field name can be used to select the display priority. The first fields to display will have a display priority of 1, then all fields with a display priority of 2, and so on.
The Filter field lets you filter each field by a value. Enter a value for filtering, then choose an operation to perform on the filter.
Use the Order By column to sort a column's information, ascending or descending. The numeric drop-down box picks the ordering priority, with 1 having the highest priority.
After you pick the settings and click Submit, a screen similar to this one appears:
86
Accessing the transaction database directly
All the previously selected columns appear. Use the Previous and Next buttons to move through the selected records. Click Return to Query to return to the selection page.
Since the transaction database is a regular JDBC compliant database it can be accessed through any database program that uses JDBC or the database's native format. This section explains the naming and data format conventions used in the transaction database.
The database name is just the name of the database set up by you or your database administrator.
The names of tables in the database will all start with the string TRANLOG followed by the date that data is first written into the table. The format is shown here:
TRANLOGyyyymmdd
Parameter Description
TRANLO
G
All tables start with this string.
yyyy mm
Year
Month (01 - 12)
Logging and Tracing
Parameter Description
dd Day of the month (01 - 31) dd hh nn ss xxx
For example, a table starting on September 1, 2003 would be named:
TRANLOG20030901
Each row in the database table begins with a column named TRANSACTIONTIME, a
23-character string that is the key for the row. In SQL, this is known as a CHAR(23). The string is the time of the transaction, to millisecond precision, formatted in a way that sorting the table on the column sorts the logs by date and time recorded. The format is: yyyy/mm/dd:hh:nn:ss.xxx
Parameter Description
yyyy Year mm Month (01 - 12)
Day of the month (01 - 31)
Hour in the day (00 - 23)
Minute in hour (00 - 59)
Second in minute (00 - 59)
Millisecond in second (000 - 999)
The names of the other columns in the table row are generated from the IDS configuration, and each column type is a variable-length string, known in SQL as a
VARCHAR(255).
Q
UERYING
T
RANSACTION
I
NFORMATION
You can use the getMetaData and the QueryTranLogs Java rules to query transaction information. These rules let you monitor information such as the amount of server time spent for each request, the requests that failed, user IDs, and passwords.
These rules use the TransactionLogDatabase section in the docserv.xml file to build a connection to the log database.
N
OTE
:
See Logging Information about Requests on page 86 for information on how to set up the transaction log database.
You can use the logmetadata and logrecords XSL templates with the version 2.
x
HTTP server to query transaction information from the log database. Information can be found by matching a table name based on the date specified in the web user interface, the time type (daily or weekly) for the table, and the starting day for the table.
Here is an example of a URL that uses the web interface:
87
Chapter 2
Using the Internet Document Server
88
http://localhost:49152/request?reqtype=logmetadata
getMetaData
This rule displays meta-data about the log database. The rule returns the field count, which is the number of fields available in each table. This information is set up in the
TransactionLogDatabase section of the docserv.xml file. The rule also returns each of the field names that correspond to the field count and the TransactionLogDatabase section.
Field names are returned as attachment variables field1 through fieldn, where n is the field count. The getMetaData rule also returns the table time type being used for the transaction log database which can be daily or weekly.
This information is set up in the TransactionLogDatabase section of the XML file. The rule also returns a table count which corresponds to the number of tables currently present in the log database. Furthermore, the rule also returns each table name as attachment variables table1 through tablen, where n corresponds to the table count value.
Input attachments
Variable Description
REQTYPE LOGMETADATA
Output attachments
Variable
FIELDCOUNT
Description
The number of fields in each table within the transaction log database.
FIELD1...FIELDn The name of each field in the transaction log database tables, where n corresponds to FIELDCOUNT.
TABLETIMETYPE The table time type, a setting in the TransactionLogDatabase section of the docserv.xml file.
TABLECOUNT The number of tables present in the transaction log database.
TABLE1...TABLEn
The name of each table present in the log database, where n corresponds to TABLECOUNT.
N
OTE
:
Use this rule with the logmetadata xslt template and the HTTP server that comes with version 2.
x
. Keep in mind you must first set up logging (see Logging
Information about Requests on page 86 ) before you can use this rule.
Here is a sample URL: http://localhost:49152/request?reqtype=logmetadata
Here is a sample request type:
<section name="ReqType:LOGMETADATA">
<entry name="function">atcw32->;ATCLogTransaction</entry>
<entry name="function">java;com.docucorp.ids.rules.
IDSTransactionRule;;static;reportTimes;INCLUDEMS</entry>
<entry name="function">atcw32->;ATCLoadAttachment</entry>
Logging and Tracing
<entry name="function">irlw32->;IRLCopyAttachment</entry>
<entry name="function">java;com.docucorp.ids.rules.
TransactionLogRSRule;;transaction;getMetaData;</entry>
</section>
QueryTranLogs
Use this rule to query the transaction log database and return a recordset of transactions.
N
OTE
:
See Logging and Tracing on page 77 for information on how to set up the transaction log database.
Input attachments
Variable
REQTYPE
SQLCMD
SQLTABLENAME
SQLFIELDS
SQLWHERE
SQLORDERBY
SQLTIMEOUT
Description
The request type that contains the QueryTranLogs rule. This should be LOGRECORDS when you are using the logrecords.xsl template.
(Optional) An SQL select statement for the query.
(Optional) The table name of the database log that is to be queried, such as TRANLOG20030121.
(Optional) A comma delimited list of selection fields to use for to the query. Here is an example: reqtype,results,userid,password
(Optional) The filters specified for the query. Here is an example: reqtype like 'sss%' and userid = 'FORMAKER' and password <> 'I'
(Optional) The sort order criteria to use in the query, such as: reqtype asc, password desc, userid asc
(Optional) The SQL connection time-out, specified in seconds. The default is 300 seconds.
SQLABSOLUTEPAGE (Optional) The current page to display for the query. This is used in recordset paging. The default is one (1).
SQLPAGESIZE (Optional) The number of records to return for a query. The default is 10.
SQLEXACTMATCH (Optional) Enter Yes if the system should only display the records for the date specified. Enter No if you want it to display all the records in the current table.
Output attachments
Variable
SQLCMD
Description
The generated SQL query string.
89
Chapter 2
Using the Internet Document Server
Variable
SQLPAGESIZE
FIRSTPAGE
LASTPAGE
Description
The number of records returned for the query.
Returns True if the records returned for the query are the first page.
Otherwise, the system returns False.
Returns True if the records returned for the query are the last page.
Otherwise, the system returns False.
The number of fields used in the query.
SQLSELECTION
FIELDCOUNT
SELECTIONFIELDS A rowset containing the names of each of the fields returned by the query.
RECORD1....RECORDn
Rowsets for each record returned in the query, where n is the last record returned in the query. (this value should be equal to that of
SQLPAGESIZE if LASTPAGE is False)
N
OTE
:
Use this rule with the logrecords xslt template and the HTTP server that comes with version 2.0 or higher.
By default the rule tries to use the SQLCMD input attachment. If it is not found or its value is omitted, the rule then tries to build a select statement using the
SQLTABLENAME, SQLFIELDS, SQLWHERE, and SQLORDERBY input attachment variables.
Here is a sample request type:
<section name="ReqType:LOGRECORDS">
<entry name="function">atcw32->;ATCLogTransaction</entry>
<entry name="function">java;com.docucorp.ids.rules.
IDSTransactionRule;;static;reportTimes;INCLUDEMS</entry>
<entry name="function">atcw32->;ATCLoadAttachment</entry>
<entry name="function">irlw32->;IRLCopyAttachment</entry>
<entry name="function">java;com.docucorp.ids.rules.
TransactionLogRSRule;;transaction;QueryTranLogs;</entry>
</section>
M
ONITORING
P
ERFORMANCE
S
TATISTICS
IDS lets you use Java Management Extensions (JMX) to monitor performance data. This lets external JMX monitoring applications track performance data and is similar to SNMP support.
JMX support is built-in to Java versions 1.5 and higher, but IDS includes JMX libraries that let you monitor IDS with Java 1.4 versions. For Java 1.4 versions, IDS uses the JMX
Message Protocol (JMXMP), based on Sun's Reference Implementation of the JMX
Remote API.
In the docserv.xml configuration file, in the DocumentServer section, create a JMX subsection, as shown here:
90
Logging and Tracing
<section name="DocumentServer">
<section name="JMX">
<entry name="Enabled">yes</entry>
<entry name="JMXMPPort">9875</entry>
</section>
</section>
The Enabled entry determines whether JMX support is enabled. The default is No.
The JMXMP entry is the TCP/IP port where the JMX Messaging Protocol (JMXMP) will be supported. Each instance of IDS will have its own JMXMP port starting with this number. If you omit this entry, JMXMP support is not enabled.
In addition to compiling application-wide statistics automatically, IDS can also track performance times for a specific request or for a specific function in a request. You can set this up in the configuration. In the DocumentServer section, create a
StatisticsMonitors subsection, as shown here:
<section name="StatisticsMonitors">
<entry name="Monitor">SSS</entry>
<entry name="Monitor">SSS/5</entry>
</section>
To monitor an entire request, enter the request's name, such as SSS. To monitor a specific function within a request, specify the request's name, a slash (/), and the line number of the function inside the request, such as SSS/5.
For each monitor you list, IDS tracks the most recent timings for the Initialize, Run
Forward, Run Reverse, and Terminate messages, and the total time for all messages run.
For general information about JMX, see: http://java.sun.com/products/JavaManagement/
Windows
UNIX
G
ENERATING A
L
OGGING
C
ONFIGURATION
F
ILE
IDS includes a LogConfConvert.xsl template which you can use to generate a logconf.xml file from the docserv.xml file.
The template takes into account the XMLMessage, XMLMessageAppend,
TransactionTime, and RuleTime options in the Debug section of the docserv.xml file during the generation of the logconf.xml file.
A logconfcovert script file is also included in the docserv directory which you can use to run the command necessary for the conversion process, as shown here: java -cp .;.\lib\DocucorpUtil.jar com.docucorp.util.XslTransformer source=docserv.xml template=LogConfConvert.xsl output=logconf.xml
java -cp .:./lib/DocucorpUtil.jar com.docucorp.util.XslTransformer source=docserv.xml template=LogConfConvert.xsl output=logconf.xml
U
SING
L
OGGING
C
ATEGORIES TO
A
CCESS THE
I
NTERNAL
91
Chapter 2
Using the Internet Document Server
F
ORMAT OF
R
EQUESTS
To make it easier to debug problems which can occur when translating requests and results, the system includes logging categories you can use to see the internal data format of received requests and sent results. The categories are as follows:
• DSIMessage.ReceiveMessage.queue
• DSIMessage.SendMessage.queue
• DSIMessage.ReceiveMessage.http
• DSIMessage.SendMessage.http
As with other Log4j categories, the categories are hierarchical so using category names
DSIMessage.SendMessage and DSIMessage.ReceiveMessage will use the same category for both queue and HTTP-based messages.
Since the messages are handled as Log4j categories, they can have all the destinations of other categories, such as files, the NT Event logger, email, and so on.
A combination of categories and appenders will add the internal data format of messages to the end of receive.msg and send.msg files, adding useful information about how the messages are translated.
Use the following Log4j appenders to add the internal data information to the receive.msg and send.msg files:
<appender class="com.docucorp.ids.serverutils.IDSFileAppender" name="dsireceivemessage">
<param value="true" name="Append"/>
<param value="receive.msg" name="File"/>
<param value="true" name="Close"/>
<layout class="org.apache.log4j.PatternLayout">
<param value="%m" name="ConversionPattern"/>
</layout>
</appender>
<appender class="com.docucorp.ids.serverutils.IDSFileAppender" name="dsisendmessage">
<param value="true" name="Append"/>
<param value="send.msg" name="File"/>
<param value="true" name="Close"/>
<layout class="org.apache.log4j.PatternLayout">
<param value="%m" name="ConversionPattern"/>
</layout>
</appender>
Use these appenders with the following Log4j categories:
<category name="DSIMessage.ReceiveMessage.queue">
<priority value="DEBUG"/>
<appender-ref ref="dsireceivemessage"/>
</category>
<category name="DSIMessage.SendMessage.queue">
<priority value="DEBUG"/>
<appender-ref ref="dsisendmessage"/>
</category>
92
Configuring IDS
C
ONFIGURING
IDS
The IDSConfig program lets you perform the following tasks to make it easier to configure IDS:
• Running IDSConfig on page 97
• Creating New Files on page 97
• Adding Nodes on page 97
• Adding Nodes with Text on page 97
• Editing Nodes on page 98
• Copying Nodes on page 98
• Moving Nodes on page 98
• Adding Attributes on page 98
• Adding Comments on page 99
• Adding Text on page 99
• Adding a Request or Function on page 99
• Adding an IDS Function on page 99
• Converting DOCSERV.INI or DOCCLIENT.INI Files into XML Format on page
100
• Adding a Section or Entry on page 100
• Locating Text on page 100
• Importing Configuration Information on page 100
• Configuring MQSeries Buffer Sizes on page 101
• Testing File Transmission on page 102
93
Chapter 2
Using the Internet Document Server
Running IDSConfig
To run the IDSConfig program, use the syntax shown below: java -classpath <path to xerces.jar>;<path to xalan.jar>;<path to
DocuCorpUtil.jar>;<path to idsconfig.jar> com.docucorp.idsconfig.idsconfig
Here is an example: java.exe -classpath d:\jars\xerces.jar;d:\jars\xalan.jar;d:\jars\DocuCorpUtil.jar; d:\jars\idsconfig.jar; com.docucorp.idsconfig.idsconfig
N
OTE
:
To run IDSConfig, you must have idsconfig.xml and idsrules.xml stored in the working directory.
Creating New Files
To create a new file, follow these steps:
1
Select the File, New option.
2
Select the appropriate type of configuration file: client or server.
Depending on the type of configuration you chose, the system creates a new XML file base or template file named either docservtp.xml or docclienttp.xml.
Adding Nodes
Follow these steps to add a node:
1
Choose one of these options:
Right click the parent node to which you want to add a child node.
Select the parent node, then choose the Edit, Add Node option.
Select the parent node, then click the Add Node button.
Select the parent node, then press I
NSERT
.
2
Enter the name you want to assign to the node and click Ok.
3
Enter Text if you want to create a Text node. Otherwise, leave it blank.
Adding Nodes with Text
Follow these steps to add a node with text:
1
Choose one of these options:
Right click the parent node to which you want to add a child node.
Select the parent node, then choose the Edit, Add Node option.
Select the parent node, then click the Add Node button.
94
Configuring IDS
Select the parent node, then press I
NSERT
.
2
Enter the name you want to assign to the node and click Ok.
3
Enter Text and click Ok.
Editing Nodes
Follow these steps to edit a node:
1
Click once to select the node. The system highlights the node.
2
Press F2 or click again to edit the node.
3
Press E
NTER
when finished or press E
SC
at any time to cancel editing.
Move as a child node
Move as previous node
Copying Nodes
Follow these steps to copy a node:
1
Click to select the node you want to copy.
2
Press and hold the C
TRL
key while dragging the source node onto the destination node. Drop the source node by releasing the mouse button.
The system copies the source node and adds it as a child of the destination node.
Moving Nodes
There are two ways to move nodes:
1
Select the node you want to move.
2
Drag and drop the source node onto the destination node.
The system adds the source node as a child of destination node.
1
Select the node you want to move.
2
Press and hold the S
HIFT
key, then drag and drop the source node onto the destination node.
The system inserts the source node before the destination node.
Adding Attributes
Follow these steps to add attributes:
1
Right click the attribute header.
2
Select the Add Attribute option.
3
Enter the value of the attribute and press E
NTER
.
95
Chapter 2
Using the Internet Document Server
Adding Comments
Follow these steps to add comments:
1
Choose one of these options:
Right click the node to which you want to add a comment and choose Add comment from the popup menu
Select the node, then click the Add comment button.
Select the node, then press C
TRL
+M.
2
Enter your comment and click Ok when you are finished.
Adding Text
Follow these steps to add text:
1
Right click the node to which you want to add text.
2
Select the Add Text option.
3
Enter the text. Press E
NTER
when finished or E
SC
to cancel.
Adding a Request or Function
The IDSConfig program provides a quick way to add request types and functions. Follow these steps:
1
Right click on the Configuration and select the Add Request option.
2
Enter the name of the request type and click Ok.
3
Right click on the section name you just added and select the Add Function option.
4
Type in the name of the function you want to add and press E
NTER
.
The new function is added to the request type node.
Adding an IDS Function
The IDSConfig program provides a quick way to add an IDS function.
N
OTE
:
Be sure to store the functions you add in the idsrules.xml. file.
1
Right click on the node to which you want to add functions and select Add
IDSFunction. The Add IDS Function window appears.
2
Use the S
HIFT
and C
TRL
keys to select multiple functions in the Basic Functions area.
Once you have selected the functions you want to add, drag them into the
Destination area or click the >> button.
96
Configuring IDS
N
OTE
:
You can rearrange the order of the functions in Destination area using your mouse.
3
Click Ok when you are finished.
Converting DOCSERV.INI or DOCCLIENT.INI Files into XML
Format
You can use IDSConfig to convert a DOCSERV.INI or DOCCLIENT.INI file into an
XML format file.
1
Select the File, Convert INI file option.
2
Enter the following information:
The name of the INI file you want to convert
The name you want assigned to the XML output file
The name of the XSL file (DocumentClientConvert.xsl or
DocumentServerConvert.xsl) and the MQ Series Server if it exists
3
Click Start to start the conversion. Click Close when it finishes.
Adding a Section or Entry
Follow these steps to add a section or entry
1
Right click the node to which you want to add a section or entry.
2
Select the Add Section or Add Entry option.
If you are adding a section, enter the section name
If you are adding an entry, enter the entry name and text
3
Click Ok when you are finished.
Locating Text
You can use Find and Find Next to locate text.
1
Click to select the beginning searching node.
2
Press C
TRL
+F, then enter the text and click Find to start searching. The system locates the matching text.
You can continue searching the same text by pressing F3.
Importing Configuration Information
You can import configuration information into your main configuration file. IDS lets you import configuration information into either the older IDS version 1.x INI configuration files or the newer IDS version 2.x XML configuration files.
97
Chapter 2
Using the Internet Document Server
Most control groups (INI) or sections (XML) of the imported configurations are added to the end of the main configuration file. This means that if there are control groups or sections with the same name in both the main configuration and in the imported configurations, the entries in the control group or section in the main configuration takes precedence. These control groups and sections, however, are exceptions to this rule:
• ReqType:INI
• ReqType:THREADINI
• ReqType:SAR
If these control groups or sections exist in the imported configurations, the entries in the imported control groups and sections are merged into the corresponding control groups or sections in the main configuration file — so in this case the entries in the imported file take precedence.
Here is an example section from an XML-based configuration file:
<section name="configuration-imports">
<entry name="import">documanage_requests.ini</entry>
<entry name="import">ipps_requests.ini</entry>
</section>
N
OTE
:
In version 2.1 and later, IDS detect changes to imported configurations via the
INIFiles or configuration-imports sections in the docserv.xml file and reload them into memory when there is a change.
Configuring MQSeries Buffer Sizes
You can increase the default buffer size of MQSeries messages and make the buffer size a setting you can maintain with a configuration entry.
• In server configuration files, the entry is put in the "BusinessLogicProcessor" section, "messaging" subsection, "queue" subsection.
• In client configuration files, the entry is put in the "DocumentClient" section,
"messaging" subsection, "queue" subsection.
The entry is:
<entry name="mq.inputqueue.starting.buffer.size">131072</entry>
This setting indicates the initial size of the buffer allocated to hold an incoming message.
If the message is larger than this size, a buffer is allocated that is large enough to hold the message and the application tries again. The default is 131072 (128K).
If you know that most of your messages will be smaller than 128k, you can decrease the buffer size for lower overhead for memory allocation. If, however, the majority of your messages will be larger, increase the buffer size to avoid situations where it takes multiple getMessage calls to get a message.
98
Configuring IDS
Testing File Transmission
Use the DSITEST utility to test the transfer of files to and from IDS. For more information about this utility, see the Utilities Reference.
99
Chapter 2
Using the Internet Document Server
R
EFERENCING
A
TTACHMENT
V
ARIABLES
IDS lets you reference the attachment variable from an INI file. You can use this technique with the DAP.INI, CONFIG.INI and DOCSERV.XML files.
N
OTE
:
This capability was previously added for the ATCSendFile and ATCReceiveFile rules. With version 2.
x
, this capability should work for all requests and rules in
DOCSERV.XML, as well as the other sections imported from a DOCSERV.INI file.
Here is an example of how you reference an attachment variable via an INI option:
< Group >
Option = ~GetAttach VARNAME,QUEUE
To reference a message variable in a configuration XML file use the following syntax:
<section name="Group">
<entry name="Option">~GetAttach VARNAME,QUEUE</entry>
</section>
The VARNAME is the name of the variable. QUEUE specifies which queue to search for this value. For example, assume the attachment variable PRINTERTYPE specifies the printer type to use for output. IDS rules use this configuration XML option to determine the printer type (<Print>, PrtType =). In this case, you can modify the XML file as shown here:
<section name="Print">
<entry name="PrtType">~GetAttach PRINTERTYPE,INPUT</entry>
</section>
So when the rule gets a configuration option, the value will equal the value of the input queue variable PRINTERTYPE. When the rule gets a configuration XML option, the value equals the value of attachment variable PRINTERTYPE.
N
OTE
:
If ~GetAttach does not find the attachment variable it returns an empty string.
You can also use this to dynamically specify the file extension for the file created by
ATCReceiveFile rule when you want to import that file into Documanage. You can do this as shown here in the DOCSERV.XML file:
<entry name="function">atcw32->ATCReceiveFile,IMPORTFILE,V2IMP,*.
~GetAttach FILETYPE,INPUT,KEEP</entry>
The ATCReceiveFile rule finds the attachment variable FILETYPE and uses its value as the file extension of the generated file name. Note that there are no spaces between the asterisk and period (*.) and the tilde (~) prefacing GetAttach. If you include a space there, it will also be in the file extension.
100
Referencing Attachment Variables
N
OTE
:
The IDS attachment variable contains the printer value for each recipient. Here is an example:
AGENT_OUTPUT=PRINTER1
The client code should be able to find URLPRINTER1 to determine the output file name.
U
SING
U
NICODE IN
A
TTACHMENT
V
ARIABLES
IDS supports Unicode, via UTF-8 encoding, in the setting and retrieving of values from attachment variables. The support is implemented via functions and defined constants in the DSILIB library. These functions are:
DSIAddAttachVarEx
DSIAddToAttachRecEx
DSILocateAttachVarEx
DSIAttachVarLengthEx
DSIAttachCursorFirstEx
DSIAttachCursorNextEx
DSIAttachCursorPrevEx
DSIAttachCursorLastEx
DSIAttachCursorValueEx
DSIAttachCursorValueLengthEx
DSIEncryptValueEx
These functions are similar to the base versions of the functions, but have an extra encoding parameter that you can set to either DSIENCODING_SINGLE_BYTE or
DSIENCODING_UTF_8.
For example, when adding an attachment variable you can use...
DSIAddAttachVar(hdsi, DSI_OUTPUTQUEUE, "FIELD", szValue); or
DSIAddAttachVarEx(hdsi, DSI_OUTPUTQUEUE, "FIELD", szValue,
DSIENCODING_SINGLE_BYTE); or
DSIAddAttachVarEx(hdsi, DSI_OUTPUTQUEUE, "FIELD", szValue,
DSIENCODING_UTF_8);
When using the base versions of these functions, the default encoding is
DSIENCODING_SINGLE_BYTE, so the first two function calls would do the same thing.
DSIENCODING_SINGLE_BYTE uses Codepage 1252 encoding, which has a one-toone mapping between bytes and Unicode characters between 32 and 255, except from 128 to 159, which maps some Unicode characters down into this range. For example, the
Unicode character for the Euro symbol (hex 20ac) is converted to a 128 (hex 80) and vice versa. This makes IDS compatible with how Documaker handles the Euro symbol.
DSIENCODING_UTF_8 uses UTF-8 encoding, which is a way to translate Unicode multibyte characters into a format compatible with null-terminated C language strings while retaining all the character information.
101
Chapter 2
Using the Internet Document Server
U
SING THE
M
ESSAGE
Q
UEUES
Docupresentment lets you use a queueing system that is based on an in-memory operation. This eliminates the need to use MQSeries in low volume production systems.
Choosing the Right Queuing Options
Choosing the right queueing options for your company can be a difficult process. There are several scenarios, as this table shows:
Installation
Single PC with a single server
Single PC with multiple servers
Multiple PCs with multiple servers
Function
Used for demos and development. Not recommended for production use, even with low volumes.
Here, multiple Docupresentment servers are set up on a single PC. This is recommended for low volume production systems. IDS cannot be a single point of failure because if one instance stops responding, the other instances pick up the work.
Here, multiple Docupresentment servers are installed on multiple PCs. This is recommended for high volume production systems.
To evaluate your system, answer these questions:
1
Is it a production system?
If yes, go to step 5.
If no, go to step 2.
2
Do you intend to use this system for performance testing?
If yes, go to step 5.
If no, go to step 3.
3
How many users will your system be servicing?
If more than one, go to step 5.
If only one, go to step 4.
4
Your system is demo or development system and you can use a single PC with a single server. You can use
HTTP. You can also use JMS or MQSeries, as they are a step up from HTTP queues.
5
Your system requires multiple servers. Go to step 6.
6
How many simultaneous users does your system need to handle? The common way to determine this is calculate 5% of the maximum number of users.
If your system must handle more than five simultaneous users, go to step 8.
If it only needs to handle less than five simultaneous users, go to step 7.
7
Your system is a low volume production system and can be set up as a single PC with multiple servers. For this scenario use JMS or MQSeries.
102
Using the Message Queues
8
Your system is a high volume production system and should be set up as multiple
PCs with multiple servers. Use JMS or MQSeries.
This table summarizes the recommended queuing options:
PCs
Single
Single
Multiple
Servers
Single
Multiple
Multiple
Use this queue
HTTP. You can also use JMS or MQSeries, as they are a step up from HTTP queues.
JMS or MQSeries. HTTP can be used.
JMS or MQSeries. The use of HTTP queues is not recommended.
N
OTE
:
The default message queue handler for IDS 2.
x
is differs from that used for prior versions. In prior versions, IDS used xBase queues which placed messages in a physical file on disk. In version 2.0 or later, IDS uses a messaging system based on HTTP.
You do not have to do anything for the message queue system to work. All queue setup options have default values. Furthermore, any attempt to communicate with IDS will cause IDS to start if it has not already been started. It is, however, possible default port values may conflict with an application already in use, so you may have to make modifications in some cases.
Understanding the Router Process
You can use the HTTP router application to enable the client to communicate with multiple IDS servers. This application controls IDS processes and starts them as needed.
The client can start this process if it fails to connect to IDS. The router is a Java application that can be started manually with the file idsrouter.bat (idsrouter.sh on UNIX platforms).
Middleware queuing systems usually have the option to save messages that are not successfully delivered to their destination. The IDS router application also has the option to do this. Any messages it receives can be stored in a JDBC compliant database and they are automatically removed when they are sent to an instance of IDS. If the IDS router is stopped, any undelivered messages that are stored will be sent to IDS when the IDS router is started up again. The HTTP connections to client programs would be severed at this point, but the messages would still be processed by IDS (for example, to ensure archiving operations are done).
The default database settings for the IDS router uses a file-based database, so no database administration or startup of external processes are required. If you are going to use a different database, you will need to obtain the JDBC drivers for the database from your database administrator (usually in the form of JAR or ZIP files) and add these files in the
lib subdirectory under your IDS installation directory.
Under Windows platforms, the router process will have its own DOS window. If you press C
TRL
+C inside this DOS window, the router terminates and shuts down any instances of IDS it has started.
103
Chapter 2
Using the Internet Document Server
Under Unix platforms, the router process will write its process ID to a file named router-
pid. Sending a SIGINT (signal 2) to this process ID will cause the router to terminate and shut down any instances of IDS it has started. This is usually done with the 'kill' command in a separate terminal.
How HTTP Queues are Handled
Here is an overview of how the queues work by default:
1
When client tries to send a message it attempts to get a TCP/IP connection. If the connection fails, the client tries to start the router.
2
The router starts IDS instances if necessary. Two IDS instances are started by default.
3
The client program sends the message to the router process.
4
The router process gets the message and sends it to one of the instances of IDS.
5
IDS returns the response back to router.
6
The router process returns the message back to the client that initiated the transaction.
Here is an overview of how the system typically gets an IP address and port number. Keep in mind the HTTP queue system, by default, needs ports from 49152 to 49154 and all default IP addresses are localhost.
1
The client tries to talk to the router process on port 49152.
2
When the client starts the router process, it passes port 49152 to it.
3
The router process listens on port 49152.
4
When router starts the first instance of IDS, it passes port 49153 to it.
5
The primary IDS listens on port 49153 as it was passed as a parameter from the router.
6
The primary IDS starts the next IDS and passes port 49154 (incrementing its own port address by one).
7
The secondary IDS listens on port 49154.
Using the Router Section
In the DOCSERV.XML file, the router program uses the same settings in
DOCSERV.XML as IDS, as much as possible, to simplify setup. The settings used by both IDS and the router include the http port to listen to, the arguments for starting instances of IDS, and the number of instances to start.
There is an additional Router section in the configuration file for enabling and setting up the JDBC database that stores undelivered messages. This example shows the defaults:
<section name="Router" requires="// section[@name='BusinessLogicProcessor']/section[@name='messaging']/ section[@name='http']">
<entry name="StartCommand">"INSTALLDIR/jre/bin/idsrouter.exe"</ entry>
104
Using the Message Queues
<entry name="StartArguments">-Drouter -Xmx256m -cp lib/
DocucorpStartup.jar -Djava.endorsed.dirs=lib/endorsed -
Dids.configuration=docserv.xml -Dlogging.configuration=logconf.xml com.docucorp.startup.Startup com.docucorp.ids.router.IDSRouter</ entry>
<entry name="StartDirectory">.</entry>
<entry name="ReplyWaitSeconds">30</entry>
<entry name="MaxMsgLength">4194304</entry>
<entry name="MaxConnectionAttempts">2</entry>
<entry name="Address">127.0.0.1<entry>
<section name="database">
<entry name="enabled">no</entry>
<entry name="class">org.apache.derby.jdbc.EmbeddedDriver</ entry>
<entry name="URL">jdbc:derby:global/router-db;create=true</ entry>
<entry name="table">DOCUCORPROUTER</entry>
<entry name="userid"></entry>
<entry name="password"></entry>
</section>
</section>
Option
StartCommand
StartArguments
StartDirectory
ReplyWaitSeconds
Definition
Specifies the command Watchdog uses to start the router.
Specifies the arguments Watchdog uses when starting the router.
Specifies the directory in which the router will start.
MaxMsgLength
Defines how long the router waits for a reply from
Docupresentment before it closes the connection. The default is 30 seconds.
Lets you limit the message size of incoming messages. This helps prevent DOS attacks with large files. The default is 4194304 (bytes).
MaxConnectionAttempts Limits the number of connection attempts to Docupresentment when Docupresentment keeps dropping the connection. This is useful when a message the router sends to Docupresentment causes
Docupresentment to fail and drop the connection. This option prevents the indefinite resending of problematic messages. The default is two (2).
Address enabled class
Lets you bind the router to a specific network device IP address.
This is useful when there are multiple network interfaces available on the machine where Docupresentment is running. The router will bind to all local devices if this option is not provided.
Determines whether the undelivered messages will be stored in a database for delivery at a later time.
The JDBC Database driver class for the database being used. If the default database is not used, contact your database administrator to get the driver files.
105
Chapter 2
Using the Internet Document Server
Option
URL table userid password
Definition
The JDBC locator for the database being used. If the default database is not used, contact your database administrator for the proper locator string for the database.
The name of the table where you want the undelivered messages stored.
The user ID used to access the database.
The password for the user ID used to access the database.
U
SING
M
ULTIPLE
Q
UEUING
S
YSTEMS
Prior to version 2.1, IDS would process requests that came in from HTTP and from one queuing system, such as MQSeries or JMS. With version 2.1 or later, IDS lets you use multiple queuing systems for processing messages, for example MQSeries and JMS queues can both be used in one instance of IDS.
To enable this, you must add queue sections to the BusinessLogicProcessor and messaging sections in the docserv.xml configuration file. Each queue section is processed and used to open a new set of input and output queues for requests and results.
Here is an excerpt from a configuration with multiple queuing systems enabled:
<section name="BusinessLogicProcessor">
<section name="messaging">
<section name="queue">
<section name="marshallers">
<entry name="marshaller.class">com.docucorp.messaging.data.marshaller.SOAP
MIMEDSIMessageMarshaller</entry>
</section>
<entry name="queuefactory.class">com.docucorp.messaging.mqseries.DSIMQMess
ageQueueFactory</entry>
<entry name="ReceiveRequestIntervalMillis">1000</entry>
<entry name="mq.queue.manager">queue1.manager</entry>
<entry name="mq.inputqueue.name">req</entry>
<entry name="mq.inputqueue.maxwaitseconds">5</entry>
<entry name="mq.outputqueue.name">res</entry>
<entry name="mq.outputqueue.expiry">600</entry>
<entry name="mq.tcpip.host">10.1.10.123</entry>
<entry name="mq.queue.channel">SCC_queue1.atl3nt03</ entry>
<entry name="mq.tcpip.port">1415</entry>
<entry name="mqseries.tracing">0</entry>
</section>
<section name="queue">
<section name="marshallers">
<entry name="marshaller.class">com.docucorp.messaging.data.marshaller.Seri
alizationDSIMessageMarshaller</entry>
</section>
<entry name="mq.queue.manager">queue2.manager</entry>
106
Using the Message Queues
<entry name="mq.inputqueue.name">requestq</entry>
<entry name="mq.inputqueue.maxwaitseconds">5</entry>
<entry name="mq.outputqueue.name">resultq</entry>
<entry name="mq.outputqueue.expiry">60</entry>
<entry name="mq.tcpip.host">10.1.10.234</entry>
<entry name="mq.queue.channel">SYSTEM.DEF.SVRCONN</ entry>
</section>
<entry name="mq.tcpip.port">1414</entry>
<entry name="mqseries.tracing">0</entry>
G
ENERAL
Q
UEUING
O
PTIONS
By default, Docupresentment will wait for a maximum of 60 seconds for a successful connection to the queue manager. This value can be controlled using the
“startWaitIntervalSeconds” option in docserv.xml shown below.
<section name="BusinessLogicProcessor">
<section name="messaging">
<section name="queue">
<entry name=”startWaitIntervalSeconds”>60</entry>
107
Chapter 2
Using the Internet Document Server
U
SING THE
J
AVA
M
ESSAGE
S
ERVICE
(JMS)
The Java Message Service API is a standard programming interface for sending and receiving messages across applications. JMS itself is not a product — it is a standard that implementers (businesses or open-source groups) develop their products for. Since it is a standard, any JMS implementation can be used by IDS merely by changing configuration information. No coding changes are required. You can find general information about
JMS at: http://java.sun.com/products/jms/
JMS is part of the J2EE standard. This means that any J2EE-compliant application server, such as WebSphere or WebLogic, has an implementation of JMS as part of the application server. Other companies provide stand-alone implementations. You can find a partial list of vendors at: http://java.sun.com/products/jms/licensees.html
Use an enterprise queuing system, such as a JMS implementation or WebSphere MQ, if your implementation has a high volume of use.
S
ETTING UP
JMS
The JMS resources needed for IDS to communicate with client programs are called JMS
administered objects. The necessary administered objects are a queue ConnectionFactory and two queues, one for requests (messages from clients to IDS) and one for results (messages from IDS to clients.
Different vendors implement the JMS in different ways so you will have to refer to the specific vendor’s documentation for setting up the queues and factory.
Since different vendors implement the JMS in different ways, there has to be a standard way to access the location of the queues and factory. This is done by another Java standard, the Java Naming and Directory Interface (JNDI). JNDI support is built into
IDS and clients but there are some names of resources that the JMS system administrator will have to provide to you, such as...
• Initial Context Factory – This is a name of vendor-specific Java programming code used to find the JMS administered objects.
• Provider URL – The location of the JMS administered objects.
• Security Principal (Optional) – The user ID, if required, needed to access the JMS administered objects.
• Security Credentials (Optional) – The password, if required, needed to access the
JMS administered objects.
• Queue ConnectionFactory Name – The name of the queue ConnectionFactory created during setup. The JMS implementation may have only one Queue
ConnectionFactory that it set up itself.
• Request and Result Queue Name – The names of the queues created for IDS communication.
108
Using the Java Message Service (JMS)
For IDS, you must add these values to the docserv.xml file, in the
BusinessLogicProcessor section, messaging subsection, queue subsection. Here is an example:
<section name="BusinessLogicProcessor">
. . .
<section name="messaging">
<section name="queue">
<entry name="queuefactory.class">com.docucorp.messaging.jms.DSIJMSJNDIMess
ageQueueFactory</entry>
<entry name="jms.initial.context.factory">com.sun.jndi.fscontext.RefFSCont
extFactory</entry>
<entry name="jms.provider.URL">file:///C:/docserv/jndi/jms/
IDS2</entry>
<entry name="jms.security.principal">userid</entry>
<entry name="jms.security.credentials">password</entry>
<entry name="jms.qcf.name">IDS2QCF</entry>
<entry name="jms.inputqueue.connectstring">jmsrequestq</entry>
<entry name="jms.outputqueue.connectstring">jmsresultq</entry>
The entry queuefactory.class tells IDS you’ll be using a JMS queuing system. The next four entries are for the standard JNDI entries. jms.qcf.name is for the name of the JMS Queue
ConnectionFactory. jms.inputqueue.connectstring and jms.outputqueue.connectstring are for the names of the queues for communication. Since this is the server, it receives requests as input and sends results as output.
Client programs use the file docclient.xml to store configuration information. Queue information would go in the DocumentClient section, messaging subsection, queue subsection. A client program that would use the same queues as this server would have this setup:
<section name="DocumentClient">
<section name="messaging">
<section name="queue">
<entry name="queuefactory.class">com.docucorp.messaging.jms.
DSIJMSJNDIMessageQueueFactory</entry>
<!-- Settings for JNDI JMS connection -->
<entry name="jms.initial.context.factory">com.sun.jndi.
fscontext.RefFSContextFactory</entry>
<entry name="jms.provider.URL">file:///C:/docserv/jndi/jms/
IDS2</entry>
<entry name="jms.security.principal">userid</entry>
<entry name="jms.security.credentials">password</entry>
<entry name="jms.qcf.name">IDS2QCF</entry>
<entry name="jms.inputqueue.connectstring">jmsresultq</entry>
<entry name="jms.outputqueue.connectstring">jmsrequestq</ entry>
</section>
<!-- queue section -->
</section>
<!-- messaging section -->
</section>
<!-- DocumentClient -->
109
Chapter 2
Using the Internet Document Server
For example, consider SwiftMQ, a JMS system that uses JNDI to let users find queues.
To add this capability go to the DOCSERV.XML configuration file and find the
BusinessLogicProcessor section. In the Messaging subsection, under the Queue subsection, you would have these entries:
<section name=”queue">
<entry name="queuefactory.class">com.docucorp.messaging.jms.DSIJMSJNDIMess
ageQueueFactory</entry>
<!-- SwiftMQ -->
<entry name="jms.initial.context.factory">com.swiftmq.jndi.InitialContextF
actoryImpl</entry>
<entry name="jms.provider.URL">smqp://docserv:docserv@server:4001</ entry>
<entry name="jms.security.principal">userid</entry>
<entry name="jms.security.credentials">password</entry>
<entry name="jms.qcf.name">plainsocket@docservrouter</entry>
<entry name="jms.inputqueue.connectstring">requestq@docservrouter</ entry>
<entry name="jms.outputqueue.connectstring">resultq@docservrouter</ entry>
</section> <!-- queue section -->
Entry
queuefactory.class
jms.initial.context.factory
jms.provider.URL
jms.security.principal
jms.security.principal
jms.qcf.name
Description
Specifies the IDS class that sets up JMS using JNDI.
Indicates the name of the Java class that interfaces a particular vendor's JMS implementation.
Specifies how to connect to the vendor's JMS implementation.
(Optional) Indicates the JMS term for a user ID.
(Optional) Indicates the JMS term for a password.
Indicates the name of the vendor's queue connection factory, a JMS term for how to find JMS queues. jms.inputqueue.connectstring
Indicates the name of the JMS input queue that will hold requests. jms.outputqueue.connectstring
Indicates the name of the JMS output queue that will hold results.
110
Using WebSphere MQ
U
SING
W
EB
S
PHERE
MQ
WebSphere MQ, formerly known as MQSeries, is an IBM product you can use to send and receive messages across applications. You can find general information about
WebSphere MQ at: http://www.ibm.com/software/integration/wmq/
Use an enterprise queuing system, such as a JMS implementation or WebSphere MQ, if your implementation has a high volume of use.
For Windows and UNIX platforms, you can use the RUNMQSC tool to create queues and queue managers. You can use the WebSphere MQ Explorer GUI tool on Windows to create queues and queue managers on the local Windows and remote UNIX, Linux, or
Windows WebSphere MQ servers when configured for remote administration. When
WebSphere MQ installs on Windows, a queue manager is created if you select the option to install default configuration.
Java support for WebSphere MQ is included in version 5.3 and later. The Java libraries for WebSphere MQ can be used in either client mode (via TCP/IP) or in bindings mode
(where the Java application runs on the same machine as the MQSeries server), with the exception of OS/390 which must be run in bindings mode.
N
OTE
:
All queues are under a queue manager and there will be a queue manager for each machine that uses WebSphere MQ Server. The queue managers communicate with each another and pass the messages to the appropriate queue underneath.
When adding machines to the cluster, you can use a wizard through the WebSphere MQ
Explorer to set up the cluster. Even though the WebSphere MQ installation program creates a default cluster that uses the network domain name, it does not create the cluster sender channels needed to communicate between the repository machines.
I
NSTALLING
T
HIRD
-P
ARTY
J
AR
F
ILES
Adding client jar files to the DocuPresentment installation
There are times when you will need to add additional 3rd party jar files to your
DocuPresentment environment: for example, when you are using a queuing mechanism such as IBM’s WebSphere MQ. There are a couple of methods you can use to accomplish this task. One method is to simply copy the appropriate jar files to the docserv/lib folder.
All jars in this folder will be automatically added to the class loader’s classpath when
DocuPresentment is invoked.
If you would prefer not to copy 3rd party jar files into the DocuPresentment directory structure, there are Java system properties available for this purpose: oracle.documaker.extraClasspath and com.skywire software.extraClasspath. The software looks first for the com.skywire software.extraClasspath, and if that property is not found, then it looks for the oracle version. Here is an example of how to set the system property using the extraClasspath in a Unix environment: java –Doracle.documaker.extraClasspath=/some/path/to.jar:/some/path/to2nd.jar …
111
Chapter 2
Using the Internet Document Server
How you add the jars to the environment will vary depending on which DocuPresentment component needs access to the jar files. For instance, if you are using WebSphere MQ to handle queuing in your environment, the DocumentServer component of the system will need access to IBM client jar files. The best way to add the jars to the DocumentServer class path is to add them to the DocumentServer section of the docserv.xml configuration file:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--DocumentServer section-->
<section version="2.3" name="DocumentServer">
<entry name="StartCommand">java</entry>
<entry name="StartArguments">
-Dcom.skywiresoftware.extraClasspath=
/ibm_mq/com.ibm.mq.jar:/ibm_mq/connector.jar
-Xmx256m -Ddsimessage.debug=Y -Dmarshaller.output=n
-Djava.endorsed.dirs=lib/endorsed
-cp lib/DocucorpStartup.jar
-Dids.configuration=docserv.xml
-Dlogging.configuration=logconf.xml com.docucorp.startup.Startup com.docucorp.ids.DocumentServer</ entry>
Sample configuration – adding IBM WebSphere MQ 7 client jar files to your DocuPresentment environment
This is the list of client jar files you will need to add to your environment if you are using version 7 of the WebSphere MQ messaging system: com.ibm.mq.commonservices.jar
com.ibm.mq.headers.jar
com.ibm.mq.jar
com.ibm.mq.jmqi.jar
com.ibm.mq.pcf.jar
connector.jar
If you are using JMS you will also need these: com.ibm.mqjms.jar com.ibm.mq.jms.Nojndi.jar
If copying these jars to the docserv/lib folder is not an option then add them to the docserv.xml configuration file in the DocumentServer section as seen here:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configuration>
<!--DocumentServer section-->
<section name="DocumentServer" version="2.2">
<entry name="StartCommand">java</entry>
<entry name="StartArguments">
-Dcom.skywiresoftware.extraClasspath=/usr/mqm/java/lib/ com.ibm.mq.jar:
/usr/mqm/java/lib/com.ibm.mq.jmqi.jar:
/usr/mqm/java/lib/com.ibm.mq.commonservices.jar:
/usr/mqm/java/lib/com.ibm.mq.headers.jar:
/usr/mqm/java/lib/com.ibm.mq.pcf.har:
/usr/mqm/java/lib/connector.jar -Xmx256m -Ddsimessage.debug=N
-Dmarshaller.output=n -Djava.endorsed.dirs=lib/endorsed
-cp lib/DocucorpStartup.jar -Dids.configuration=docserv.xml
112
Using WebSphere MQ
-Dlogging.configuration=logconf.xml com.docucorp.startup.Startup com.docucorp.ids.DocumentServer
</entry>
S
ETTING
U
P
W
EB
S
PHERE
MQ
The WebSphere MQ resources needed for IDS to communicate with client programs are two WebSphere MQ queues, one for requests (messages from clients to IDS) and one for results (messages from IDS to clients).
For IDS, add these values to the docserv.xml file, in the BusinessLogicProcessor section, messaging subsection, queue subsection. Here is an example:
<section name="BusinessLogicProcessor">
. . .
<section name="messaging">
<section name="queue">
<entry name="queuefactory.class"> com.docucorp.messaging.mqseries.DSIMQMessageQueueFactory</entry>
<entry name="mq.queue.manager">queue.manager</entry>
<entry name="mq.inputqueue.name">requestq</entry>
<entry name="mq.inputqueue.maxwaitseconds">5</entry>
<entry name="mq.outputqueue.name">resultq</entry>
<entry name="mq.tcpip.host">10.1.10.1</entry>
<entry name="mq.queue.channel">SCC_channel</entry>
<entry name="mq.tcpip.port">1414</entry>
The entry queuefactory.class tells IDS you’ll be using a WebSphere MQ queuing system. The following are names of WebSphere MQ objects required for communication:
• mq.queue.manager
• mq.inputqueue.name
Client programs use the docclient.xml file to store configuration information. Queue information would go in the DocumentClient section, messaging subsection, queue subsection. A client program that would use the same queues as this server would have this setup:
<section name="DocumentClient">
<section name="messaging">
<section name="queue">
<entry name="queuefactory.class">com.docucorp.messaging.mqseries.DSIMQMess
ageQueueFactory</entry>
<entry name="mq.queue.manager">queue.manager</entry>
<entry name="mq.inputqueue.name">resultq</entry>
<entry name="mq.inputqueue.maxwaitseconds">5</entry>
<entry name="mq.outputqueue.name">requestq</entry>
<entry name="mq.tcpip.host">10.1.10.1</entry>
<entry name="mq.queue.channel">SCC_channel</entry>
<entry name="mq.tcpip.port">1414</entry>
113
Chapter 2
Using the Internet Document Server
</section>
<!-- queue section -->
</section>
<!-- messaging section -->
</section>
<!-- DocumentClient -->
U
SING
S
ECURITY
E
XITS
You can attach custom security exits to WebSphere MQ queues. Security exits are external libraries of code that can be installed and run in WebSphere MQ queues. For IDS, security exits consist of a Java class in a .jar file, with an optional native component.
To have a security exit installed and run, you need to know the name of the Java class for the security exit and the name of the .jar file that has the security exit.
In the docserv.xml configuration file, set up a queue section for WebSphere MQ queues.
In that section, add an entry similar to the one shown here:
<entry name="mq.customsecurityexit.classname">com.customer.
securityClassName<entry>
Substitute the name of the your security exit Java class name for: mq.customsecurityexit.classname
You must load the .jar file that has the custom security exit code. For application servers running Docupresentment client code, refer to the application server's documentation for information on modifying the classpath for the web application or for including a .jar file in a particular directory.
For Docupresentment server, you can either...
• Put the .jar file in the server's lib directory, or
• Modify how Docupresentment server is run by adding the System property com.skywiresoftware.extraClasspath
with a reference to any .jar files needed to run the security exit.
For example, for the docserver.bat file, you could add an entry like the one shown here:
-Dcom.skywiresoftware.extraClasspath=/path/to/security.exit.jar
U
SING
C
LIENT
C
ONNECTION
D
EFINITION
T
ABLES
The WebSphere message bus can read connection information from Client Connection
Definition Table (CCDT) files. The code can then use any queue manager listed in the
CCDT file to establish a connection.
N
OTE
:
Support for CCDT files in Java requires WebSphere MQ, version 6.0 or later.
Refer to the WebSphere MQ documentation for information about Client
Connection Definition Tables.
114
Using WebSphere MQ
For additional information, see the description of the mq.ccdt.url property in the HTML documentation for the com.docucorp.messaging.mqseries.DSIMQMessageQueueFactory class. This information is included with the Java SDK.
U
SING
SSL C
ONNECTIONS
To use SSL connections the queue manager and server connection channel must be configured to use SSL. SSL connections are only supported in MQ client mode (version
5.3 or later).
See the security guide for your version of WebSphere MQ for information on how to configure a queue manager and server connection channel for SSL communication. A
Java key store must be available to IDS and it must contain a personal certificate issued by a trusted Certificate Authority (CA). This trusted CA must be present in the key repository used by the queue manager. The CA certificate must be part of the trusted certificates in the key repository used by the queue manager.
Also, the same CA certificate must be present in the Java keystore. If the personal certificate used by the queue manager was issued by another CA, then the CA certificate for it must also be present in the Java key store so the SSL handshake can be negotiated between the MQ Client (IDS) and the MQ Server (the queue manager).
If the server connection channel is configured to authenticate client certificates or to verify the Distinguished Name of client certificates via the SSLPeer property, the personal certificate in the Java key store must also contain the private key. The entry type in the
Java key store for the personal certificate should be 'keyEntry' instead of 'trustedCertEntry' in this case.
See the HTML documentation for the DSIMQSeriesMessageQueueFactory class, which is shipped with the IDS DSI Java SDK, for additional information on the MQ SSL properties. In particular, see the description of the setProperties method.
Here is an example of these configuration properties:
<entry name="mq.ssl.cipherspec">RC4_MD5_US</entry>
<entry name="mq.ssl.keyrepository">c:\ibm\mq\ssl\key</entry>
<entry name="mq.ssl.peername">CN=ssl_qmgr, C=US, S=GA, L=Atlanta,
O=Docucorp International, OU=PD</entry>
<entry name="mq.ssl.socketFactory.class"> com.docucorp.messaging.mqseries.DSIMQSSLSocketFactory</entry>
<entry name="mq.ssl.protocol">SSLv3</entry>
<entry name="mq.ssl.keystore">c:/docserv/keystore/ java_certificate_store</entry>
<entry name="mq.ssl.keystore.type">JKS</entry>
<entry name="mq.ssl.keystore.manager.type">SunX509</entry>
<entry name="mq.ssl.keystore.pwd">changeit</entry>
<entry name="mq.ssl.truststore">c:/docserv/keystore/ java_certificate_store</entry>
<entry name="mq.ssl.truststore.type">JKS</entry>
<entry name="mq.ssl.truststore.manager.type">SunX509</entry>
<entry name="mq.ssl.truststore.pwd">changeit</entry>
<entry name="mq.ssl.debug">true</entry>
115
Chapter 2
Using the Internet Document Server
U
SING THE
R
EPLY
T
O
Q
UEUE
N
AME AND
R
EPLY
T
O
Q
UEUE
M
ANAGER
N
AME
P
ROPERTIES
IDS checks for these MQ message properties during MQGET calls issued by IDS:
• replyToQueueManagerName
• replyToQueueName
If the properties are defined in the message, they are used to reply to a specific queue manager and queue — MQPUT1 calls are used instead of MQPUT calls in this case. In addition, if you are using the SOAP marshaller, reply messages will contain the
REPLYTOQUEUEMANAGER and REPLYTOQUEUE elements in the control block.
If the replyToQueueName property is not defined in the message received by IDS, the system uses the value defined in the mq.outputqueue.name property in the docserv.xml configuration file.
To use this functionality, client applications submitting requests to IDS should make sure the replyToQueueManagerName and replyToQueueName message properties are set.
S
UPPRESSING
Q
UEUE
E
RROR
M
ESSAGES
Docupresentment can suppress queue error messages for a period of time. This helps you prevent unnecessary logging when a queue receiver or sender fails to connect to the queues because the message bus is down. These configuration options are supported at the queue section level in the docserv.xml file:
Option
MaxErrors
Description
Specifies the maximum number of consecutive errors a queue receiver or sender can have before error messages are suppressed. The default is 10.
SuppressErrorsIntervalSeconds Specifies how long error messages should be suppressed.
The default is 1800 seconds.
Here is an example:
<section name="queue">
<entry name="queuefactory.class">com.docucorp.messaging.mqseries.DSIMQMess
ageQueueFactory</entry>
<entry name="ReceiveRequestIntervalMillis">1000</entry>
<entry name="mq.queue.manager">queue_manager3</entry>
<entry name="mq.inputqueue.name">REQUESTQ</entry>
<entry name="mq.inputqueue.maxwaitseconds">5</entry>
<entry name="mq.outputqueue.name">RESULTQ</entry>
<entry name="mq.tcpip.host">127.0.0.1</entry>
<entry name="mq.queue.channel">CHANNEL1</entry>
<entry name="mq.tcpip.port">1416</entry>
<entry name="MaxErrors">3</entry>
<entry name="SuppressErrorsIntervalSeconds">60</entry>
</section>
116
Using WebSphere MQ
P
ERSISTING
Q
UEUE MESSAGES
Docupresentment can persist request and response messages during processing which lets you recover previously unprocessed messages during a restart.
N
OTE
:
:
This topic does not pertain to HTTP queues.
The following docserv.xml file configuration options at the queue section level control the persistence behavior:
Option
Persistent
Description
Turns the persistence logic on or off. The default is False.
PersistentClassName The name of the implementation class that implements the com.docucorp.ids.persistence.PersistentAdapter interface. The default is com.docucorp.ids.persistence.io.FilePersistentAdapter.
The FilePersistentAdapter class will serialize and deserialize queue messages to and from the disk. This directory location is used for serialized messages: global/DocumentServer/
DocupresentmentInstanceName/
ReceiverOrSenderName/guid.message
Here are some examples: global/DocumentServer/IDS-1-RequestReceiver#1/
AD7397A4-E546-8230-3341-5307040150E0.message
global/DocumentServer/IDS-1-ResultSender#1/
AD7397A4-E546-8230-3341-5307040150E0.message
Here is an example:
<section name="queue">
<entry name="queuefactory.class">com.docucorp.messaging.mqseries.DSIMQMess
ageQueueFactory</entry>
<entry name="mq.queue.manager">queue_manager2</entry>
<entry name="mq.inputqueue.name">REQUESTQ</entry>
<entry name="mq.inputqueue.maxwaitseconds">5</entry>
<entry name="mq.outputqueue.name">RESULTQ</entry>
<entry name="mq.tcpip.host">127.0.0.1</entry>
<entry name="mq.queue.channel">CHANNEL1</entry>
<entry name="mq.tcpip.port">1415</entry>
<entry name="Persistent">true</entry>
<entry name="PersistentClassName">com.docucorp.ids.persistence.io.FilePers
istentAdapter</entry>
</section>
P
URGING
C
ACHED
F
ILES
Docupresentment uses a file cache to determine when temporary files generated throughout different rules should be removed from disk.
Temporary files cached for removal are placed as entries in a properties file. Each entry contains the full path of the cached file and a time stamp that indicates when the file expires.
117
Chapter 2
Using the Internet Document Server
Cleanup is run on a separate thread that periodically looks up the entries in the file cache and determines if they have expired. When an entry expires, the system removes it from the cache and deletes the file associated with it.
N
OTE
:
The determination of when a temporary file expires depends on the expiration time or timeout value each rule uses when caching a file for removal. This means you can specify individual values for different rules when caching a file for removal. Furthermore, any rule that caches a temporary file for removal can also have its own INI values for determining the expiration value.
Here is a list of the file caching INI options used by the various Docupresentment rules
(these INI options should be placed in the INI file that matches the CONFIG attachment variable being used for the Docupresentment request type being invoked):
The CacheTime option is used by the RunRP rule to cache temporary files.
< RPRun >
CacheTime = 60 ;(default, value specified in minutes)
These options are used by the RunRP rule to cache temporary PDF and text files.
< IDSServer >
PrintFileCacheTime = 1800 ;(default, value specified in seconds)
TextFileCacheTime = 1800 ;(default, value specified in seconds)
The Timeout option is used by several Docupresentment rules to cache temporary XML files:
< HTMLFileCache >
Timeout = 7200 ;(default, value specified in seconds)
The Timeout option is used by the DPRPrint rule to cache temporary PDF files
< PDFFileCache >
Timeout = 7200 ;(default, value specified in seconds)
The Timeout option is used by EWPS rules to cache temporary output files
< EWPSFileCache >
Timeout = 7200 ;(default, value specified in seconds)
The following file caching configuration options are supported in the DocumentServer section of the docserv.xml file.
118
Using WebSphere MQ
Option
FilePurgeList
Description
Specifies the name of the file cache to use. This file holds entries that correspond to files cached for removal and their expiration time stamp. The default is filecache.properties.
If there is more than one Docupresentment instance running, the first instance uses the file cache name specified in FilePurgeList configuration option. Instances that follow use fileCacheName.instanceNumber, where fileCacheName is the name specified by the FilePurgeList configuration option and instanceNumber is the number of the instance (instance numbers are zero-based). Here is an example:
If Docupresentment is using the Instances configuration property in docserv.xml file with a value of three (3) and the default file cache name of filecache.properties is used, then instance one will use the filecache.properties file name, instance two will use the filecache.properties.1 file name, and instance three will use the filecache.properties.2 file name.
FilePurgeTimeSeconds Specifies how often the thread that cleans up cached entries runs.
The default is 3600.
FileWriteThreshold Determines how many file cache entries can be held in memory before they are written to the file cache on disk. The default is zero
(0).
119
Chapter 2
Using the Internet Document Server
U
SING
MSMQ
Use the DSIMSMQMessageQueue and DSIMSMQMessageQueueFactory classes to communicate via asynchronous messages through MSMQ on Windows platforms.
Support is provided for path names and direct format names. These platforms are supported:
• Windows 2000
• Windows XP
• Windows 2003 and later Windows operating systems
To enable MSMQ messaging, change the queue factory class in the configuration file to: com.docucorp.messaging.msmq.DSIMSMQMessageQueueFactory
Please refer to the HTML documentation shipped with the Java SDK for a description of the properties supported for the MSMQ message bus. In particular, see a description of the setProperties method in the com/docucorp/messaging/msmq/
DSIMSMQMessageQueueFactory class.
Property settings
Here is an example of the docserv.xml file:
<section name="queue">
<entry name="queuefactory.class">com.docucorp.messaging.msmq.
DSIMSMQMessageQueueFactory</entry>
<entry name="ReceiveRequestIntervalMillis">1000</entry>
<!-- Settings for MSMQ connection -->
<entry name="msmq.server.name">jr</entry>
<entry name="msmq.inputqueue.name">DIRECT=OS:jr\private$
\requestq</entry>
<entry name="msmq.outputqueue.name">DIRECT=OS:jr\private$
\resultq</entry>
<entry name="msmq.timeout">10000</entry>
</section>
Here is an example of the docclient.xml file:
<section name="queue">
<entry name="queuefactory.class">com.docucorp.messaging.msmq.
DSIMSMQMessageQueueFactory</entry>
<!-- Settings for MSMQ connection -->
<entry name="msmq.server.name">jr</entry>
<entry name="msmq.inputqueue.name">DIRECT=OS:jr\private$
\resultq</entry>
<entry name="msmq.outputqueue.name">DIRECT=OS:jr\private$
\requestq</entry>
<entry name="msmq.timeout">10000</entry>
</section>
Here is an example of the dsimessage.properties file: queuefactory.class=com.docucorp.messaging.msmq.DSIMSMQMessageQueueF
actory
# MSMQ for windows msmq.server.name=jr msmq.inputqueue.name=private$\resultq msmq.outputqueue.name=private$\requestq msmq.timeout=10000
These components are required:
120
Using MSMQ
• DocucorpMsg.jar
• msmqlib.dll
Be sure to include the MSMQLIB.DLL in the system path so it is found at run time.
N
OTE
:
Testing has shown that when using direct format names to private queues, the queue used to read messages should be a local queue. This improves performance significantly (about 10 times) and avoids the generation of unnecessary TCP socket connections that is incurred when reading messages from a remote private queue.
If the IDS client and IDS server components reside on separate boxes, configure the client to read messages from a local private result queue. Configure the server to read messages from a local private request queue.
Using correlation IDs
Using the
ReceiveByCorrelationID
API
Generating the message ID
IDS supports WebSphere MQ/JMS client applications that specify a correlation ID or a message ID in a request.
Client applications can specify a correlation ID in a request and retrieve a response with the same correlation ID. Client applications can also use the conventional method of correlating a response with a request by specifying a message ID in a request and retrieving a response with a correlation ID matching the message ID of the request.
IDS supports MSMQ 3.0 client applications that want to retrieve messages via the
ReceiveByCorrelationID API using the message ID property of the request message as the parameter.
On the server side, IDS sets the Correlation ID property of a response message equal to the value of the Message ID property of the request message when the UNIQUE_ID value of the request message is blank. For this reason, client side applications that want to retrieve a message by correlation ID, should make sure the UNIQUE_ID value of the request message is blank.
The message buses for IDS can generate the message ID for client applications during a request. A message bus generates the message ID when the putMessage method of the output queue provides a value of null or a blank value for the messageID argument.
The message ID generated by the message bus can then be retrieved through the getMessageID method of the output queue and used as the ID argument in the getMessage method of the input queue to retrieve a matching reply.
If a messageID value is provided to the putMessage method, then that value is used instead, with one exception — the MSMQ message bus only supports message bus generated message IDs.
Here is a Java example that lets the message bus generate the messageID for a client request: outputQueue.putMessage(null, reqObj);
String unique = outputQueue.getMessageID();
Object resObj = inputQueue.getMessage(unique, timeOutMillis, 3);
Here is a Java example that lets a client application define the message ID for a request:
121
Chapter 2
Using the Internet Document Server
Using MSMQ direct format queue names
UniqueStringGenerator usg = new UniqueStringGenerator();
String messageID = usg.generateUniqueString(32); outputQueue.putMessage(messageID, reqObj);
Object resObj = inputQueue.getMessage(messageID, timeOutMillis, 3);
These message buses support this functionality:
• Java: HTTP, JMS, MSMQ, MQSeries, and Mail
The IDSJSP package (Java) also supports this feature when used with the
DSIJavaMsg and DocucorpMsg packages. Use the setUniqueId method of a dsi or dsimsg bean to set the unique ID to null or a blank value to indicate you want the message bus to generate the message ID during a client request.
• Csharp: HTTP, MSMQ, and MQSeries
The DSIInterface class in the DocucorpDSI assembly (Csharp) also supports this feature when used with the DocucorpMsg assembly. Use the setUniqueId method of the DSIInterface class to set the unique ID to null or a blank value to indicate you want the message bus to generate the message ID during a client request.
You can set up the MSMQ_FileConvert control group to recognize path names, format names, and direct format names.
N
OTE
:
Before version 2.0, only path names were supported in the INI file and were converted into format names by the MSMQ API
MQPathNameToFormatName().
The system recognizes when you specify a format name in the INI file and skips the API call to MQPathNameToFormatName. For example, private queues cannot be accessed unless the direct name is used. So, if you are using a private queue but the IDS client and server are on different PCs, you must use direct format names.
Here is an example of the INI options you would set:
< DBTable:RequestQ >
DBHandler = MSMQ
< DBTable:ResultQ >
DBHandler = MSMQ
< MSMQ_FileConvert >
;requestq = FSINTSRV08\JRREQQ
;resultq = FSINTSRV08\JRRESQ requestq = DIRECT=TCP:10.8.10.137\PRIVATE$\JRREQQ resultq = DIRECT=TCP:10.8.10.137\PRIVATE$\JRRESQ
;requestq = DIRECT=OS:JDOE\PRIVATE$\JRREQQ
;resultq = DIRECT=OS:JDOE\PRIVATE$\JRRESQ
;requestq = PUBLIC=dc7b9469-dbae-11d6-ae6c-00104bd359c1
;resultq = PUBLIC=dc7b946c-dbae-11d6-ae6c-00104bd359c1
;requestq = .\private$\JRREQQ
;resultq = .\private$\JRRESQ
;requestq = PRIVATE=cdb19274-6146-4ab9-8679-
6e998943a938\00000016
;resultq = PRIVATE=cdb19274-6146-4ab9-8679-6e998943a938\00000017
< RequestQ >
Name = requestq
122
Using MSMQ
< RESULTQ >
Name = resultq
Keep in mind these definitions:
F
ORMAT NAMES
. A format name is a unique name generated by MSMQ. The
MQPathNameToFormatName API normally converts a path name specified in the INI file into a format name by looking up the format name in the MSMQ MQIS. The format name is then used by the MQOpenQueue API to open a queue.
To avoid conversion of the path name into a format name, you can specify a format name in the INI file. Here are some examples:
PUBLIC=dc7b9469-dbae-11d6-ae6c-00104bd359c1
PRIVATE=cdb19274-6146-4ab9-8679-6e998943a938\00000016
D
IRECT FORMAT NAMES
. You can also specify a direct format name to avoid the path name to format name conversion and to skip the connection to the MQIS altogether. This, in essence, generates a One-HOP direct connection from one MSMQ box to another, which can be useful when you are connecting to a remote box that hosts private queues in an
MSMQ workgroup configuration. Here are some examples:
DIRECT=TCP:10.8.10.137\PRIVATE$\JRREQQ
DIRECT=OS:JDOE\PRIVATE$\JRREQQ
In the first example, the protocol specified is TCP and the IP address of the box hosting the private queues is specified.
In the second example, OS indicates that the native protocol of the operating system where the private queues reside should be used and the NetBIOS name is specified instead of the IP address of the box hosting the queues. All connection information is contained within the direct format names to avoid a connection to the MQIS.
N
OTE
:
Direct format names are only supported in Windows NT 4.0 Service Pack 6a or later.
Q
UEUE PATH NAMES
. MQLIB also supports specifying normal queue path names in the
INI file by calling the MQPathNameToFormatName API to convert them into the proper format name before calling the MQOpenQueue API. Here are some examples:
FSINTSRV08\JRREQQ
.\private$\JRREQQ
123
Chapter 2
Using the Internet Document Server
Queue pooling
When setting up the messaging parameters in a Java application to talk to IDS, you can specify that the message queues should be kept in a pool of queues and reused throughout the life of the application. If a pooled connection is not used after 30 seconds, it may be removed from the pool and the queue is closed automatically. You can also close pooled connections manually.
Message pooling has these advantages:
• Reusing an existing, previously opened queue can be faster than opening a new queue connection for every communication with IDS.
• In an application there can be more threads of execution than there are available queue connections on the queuing server. Threads are automatically blocked until a connection to a queue is available. This keeps you from having to limit the number of threads to the number of available connections or creating some kind of multithreaded blocking.
This functionality is most useful in application servers, such as WebSphere, that host long-running, multi-threaded Java clients such as JSPs or servlets. No extra configuration is necessary on the web application, such as WebSphere.
To use queue connection pooling, you must make the following changes in your the client configuration file. This can be a properties file such as dsimsgclient.properties, if you are upgrading from IDS 1.x or a XML-based configuration file such as docclient.xml.
N
OTE
:
IDS version 2.
x
detects which kind of configuration you have and loads it automatically.
In both the DSIJavaMsg and DocucorpMsg libraries, the settings for queue connections are passed to the libraries by Java properties objects. To enable and set up pooling, use these options:
Option
pooling.enabled
pooling.input.pool.size
pooling.output.pool.size
Description
Set to Y to enable pooling. The default is N.
Number of input queue connections to pool. The default is 10.
Number of output queue connections to pool. The default is 10.
Here is an example of a client properties file that would enable an input and output pool of 20 MQSeries connections. This file would normally be named dsimsgclient.properties.
pooling.enabled=Y pooling.input.pool.size=20 pooling.output.pool.size=20 queuefactory.class=com.docucorp.messaging.mqseries.DSIMQMessageQueu
eFactory mq.queue.manager=venus.queue.manager mq.inputqueue.name=RESULTQ mq.outputqueue.name=REQUESTQ mq.outputqueue.expiry=120 mq.tcpip.host=10.1.10.1 mq.queue.channel=SYSTEM.DEF.SVRCONN
124
Using MSMQ
mq.tcpip.port=1414
You must also make the following API changes if your implementation talks directly to the DocucorpMsg library, whether it’s in Java or JSP, to use queue connection pooling.
If you are using the DocucorpMsg library, pooled connections can only be obtained through the static method DocucorpMsgUtil.getQueueFactory(Properties props). This method returns a DSIMessageQueueFactory that may be pooled, but is used in the same manner as the previously unpooled DSIMessageQueueFactory objects.
If you are creating a multi-threaded command line program, any outstanding pooled connection can be closed with the static method
DocucorpMsgUtil.closePooledConnections(Properties props).
N
OTE
:
No code changes are needed for users of the DSIJavaMsg library.
125
Chapter 2
Using the Internet Document Server
U
SING
HTTP
In addition to processing requests received from enterprise queuing systems (WebSphere
MQ and JMS), IDS can receive requests through HTTP. You can configure IDS to use
HTTP-based messaging, queue-based messaging, or both.
HTTP messaging replaces the file-based xBase queues from earlier versions of IDS (prior to 2.0) as the low-volume messaging system. Like the xBase queues from earlier versions, there is no setup of an extra program to run the messaging system, plus HTTP messaging does not have the 64K limit of xBase queues.
Although you can use HTTP-based messaging for lower-volume installations, an enterprise-ready queuing system is recommended for higher-volume installations and in situations where requests should not be lost if IDS or IDS clients are halted.
The default format of messages sent to HTTP-based messaging is the SOAP with
Attachments format. The request type and message variables are in an XML message embedded into a SOAP envelope, and attachments are added in MIME format to the message. For more information, see Using the XML Messaging System on page 152 . You can find more information about SOAP and attachments at: http://www.w3.org/TR/SOAP/ http://www.w3.org/TR/SOAP-attachments
The combination of HTTP messaging and the SOAP format means that IDS can act as a
Web Services server for IDS requests. Web Services clients can send messages to IDS via
HTTP using the SOAP and SOAP With Attachments format. IDS processes the request and sends the result back to the Web Services client in SOAP format. A Java sample program, JAXMClient, is provided for testing and as a source code template so you can create your own Web Services clients using Sun's Java API for XML Messaging. You can find more information about the Java API for XML Message at: http://java.sun.com/xml/jaxm/index.html
N
OTE
:
No particular version of the SOAP protocol is required. In IDS version 1.8 and version 2.
x
the system does manual XML parsing to extract information, so versions are essentially ignored. No WSDL file is needed for a .NET client.
Setting up HTTP
For IDS, add these values to the docserv.xml file, in the BusinessLogicProcessor section, messaging subsection, http subsection:
<section name="BusinessLogicProcessor">
...
<section name="messaging">
<section name="http">
<entry name="port">49152</entry>
<entry name="WaitForResultMillis">30000</entry>
<entry name="HttpProcessors">15</entry>
<entry name="RequestPath">xslPath</entry>
<entry name="HtmlPath">htmlPath</entry>
<entry name="Address">127.0.0.1</entry>
</section>
126
Using HTTP
Entry
port
WaitForResultMillis
HttpProcessors
RequestPath
HtmlPath
Address
Description
Indicates the http port that the first instance of IDS will be accessible from. If more than one instance is running they will use subsequent ports, starting with this one.
Indicates how long, in milliseconds, to wait for the request to be processed before timing out.
Indicates how many extra threads will be set up to accept http requests from clients.
Indicates where IDS will find customization XSL style sheets.
Indicates where IDS will find extra HTML-based information.
Allows binding the HTTP servers to a specific network interface address on the machine where Docupresentment is running. The
HTTP servers will bind to all local devices if this option is not used.
Client programs use the file docclient.xml to store configuration information. Queue information would go in the DocumentClient section, messaging subsection, queue subsection. A client program that would use the same queues as this server would have this setup:
<section name="DocumentClient">
<section name="messaging">
<section name="queue">
<entry name="queuefactory.class">com.docucorp.messaging.http.
DSIHTTPMessageQueueFactory</entry>
<entry name="http.url">http://localhost:49152</entry>
</section>
<!-- queue section -->
</section>
<!-- messaging section -->
</section>
<!-- DocumentClient -->
The entry queuefactory.class tells the client program to use HTTP to communicate. http.url gives the name of the server machine and TCP/IP port to use.
N
OTE
:
The http subsection is also used by IDS when it processes ordinary requests via
HTTP messaging. See Using IDS to respond to requests via a browser on page
127 for more information.
Responding to URL requests
IDS can respond to requests formatted as a URL from a browser and display results in
HTML. You can customize the display for a particular request or use a default display which shows message variables, rowsets, and any errors encountered. An example URL is http://localhost:49152/ request?REQTYPE=SSS&USERID=USERID&PASSWORD=PASSWORD
Where localhost is the IP address to contact, and 49152 is the port number at the IP address that IDS is using.
127
Chapter 2
Using the Internet Document Server
Using IDS to respond to requests via a browser
You can add any number of message variables to the URL but attachments are not supported.
To use this capability you must make changes in the DOCSERV.XML configuration file.
First, find the BusinessLogicProcessor section, then locate the Messaging subsection. In this subsection, create an HTTP subsection, as shown here:
<section name="http">
<entry name="port">39152</entry>
<entry name="WaitForResultMillis">30000</entry>
<entry name="HttpProcessors">15</entry>
<entry name="RequestPath">xslPath</entry>
<entry name="HtmlPath">htmlPath</entry>
</section>
Entry
port
WaitForResultMillis
HttpProcessors
RequestPath
HtmlPath
Description
Indicates the http port that the first instance of IDS will be accessible from. If more than one instance is running they will use subsequent ports, starting with this one.
Indicates how long, in milliseconds, to wait for the request to be processed before timing out.
Indicates how many extra threads will be set up to accept http requests from clients.
Indicates where IDS will find customization XSL style sheets.
Indicates where IDS will find extra HTML-based information.
IDS can respond to requests directly from a web browser and display the results formatted as HTML. A web server is not needed for the display. This is useful for debugging purposes. You can customize the formatting for each request type, otherwise a default page appears showing any message variables and error messages for the request.
After a request is processed, the results are formatted in the SOAP with MIME
Attachments format. See Setting up HTTP on page 125 for more information. IDS looks for an XSL style sheet named:
REQTYPE.xsl
where REQTYPE corresponds to the request type of the request. If this file is found, it is used to transform the SOAP XML. If there is no XSL style sheet for that request, a default style sheet is used. The default style sheet displays the message variables name/ value pairs in a table then lists any rowsets.
To have a request displayed in your browser, build a URL similar to: http://localhost:39152/ request?REQTYPE=SSS&USERID=USERID&PASSWORD=PASSWORD
localhost and 39152 are the TCP/IP address and port number where IDS is running.
Message variables are entered as NAME=VALUE pairs, separated by an ampersand (&).
The only required variable is REQTYPE. Any number of message variables can be added to the URL but attachments are not supported.
Here is an example:
128
Using HTTP
Configuring IDS to handle HTTP requests
In the docserv.xml configuration file, in section 'BusinessLogicProcessor', subsection
'messaging' create an http subsection:
<section name="http">
<entry name="port">39152</entry>
<entry name="WaitForResultMillis">30000</entry>
<entry name="HttpProcessors">15</entry>
<entry name="RequestPath">xslPath</entry>
<entry name="HtmlPath">htmlPath</entry>
</section>
Parameter
port
WaitForResultMillis How long, in milliseconds, to wait for the request to be processed before timing out
HttpProcessors The number of extra threads to set up to process HTTP requests from clients.
RequestPath
Description
The HTTP port you access IDS from.
HtmlPath
Where IDS can find customization XSL style sheets. If you use a relative path, keep in mind the current directory is where IDS was installed.
Where IDS can find extra HTML-based information. If you use a relative path, keep in mind the current directory is where IDS was installed.
The http subsection is also used by IDS when it processes ordinary requests via HTTP messaging. See Using HTTP on page 125 for more information.
129
Chapter 2
Using the Internet Document Server
U
SING
M
ULTIPLE
B
RIDGES
You can set up multiple bridges to use a single server. These bridges include Documaker
Bridge, the Documanage Bridge, and the Docuflex Bridge. There are two ways to do this:
• The simplest way is to combine all of the required INI options into the DAP.INI file, which is loaded by the DPRInit rule.
• The more advanced and recommended way is to use the DPRSetConfig rule and multiple INI files. This lets you set INI options specifically for each bridge (different values for the same INI option for different bridges).
N
OTE
:
The system expects to globally apply the values it finds in an INI file. You handle this by switching the context based on the attachment variable CONFIG, using the DPRSetConfig rule.
In the DAP.INI file, you specify which INI files should be used for each of the CONFIG values, for example:
< Config:TIFF >
INIFile = tiff.ini
< Config:DAPARC >
INIFile = daparc.ini
The system supports multiple INI files, such as:
< Config:TIFF >
INIFile = tiff.ini
INIFile = myownini.ini
In the case of the usage of the DPRSetConfig rule and the appropriate INI values, for example if the DAP.INI file includes this setting:
< Config:TIFF >
INIFile = tiff.ini
The actual INI context used in the rules and bridges, will include the INI values from the
TIFF.INI and DAP.INI files. When using multiple INI files with the same INI options, but different values, the first INI value — the value from the first INI file — is returned when the rules ask for the INI value.
The only thing you have to watch out for is when the system expects multiple INI values.
For example, Documaker Bridge rules look for multiple INI values for the AppIdx options in the ArcRet control group. In this case, the system gets all of the matching values from the first INI file (TIFF.INI in this example) and then gets all of the matching
INI values from the DAP.INI file.
130
Using Multiple Bridges
Here’s another example:
Assume IDS is installed with the Documanage and Documaker bridges. You create two
CONFIG values: TIFF and META. The DAP.INI file will include these options:
< Config:TIFF >
INIFile = tiff2pdf.ini
< Config:META >
INIFile = meta2pdf.ini
The Documaker-related INI options for each bridge should go into each of these INI files. You can optionally place common INI options in the DAP.INI file. You should use the DPRSetConfig rule in any rule list which includes request types and that intend to use
DPR, TPD, or MTC rules.
The DPRSetConfig rule is located in DPRW32.DLL and runs on MSG_RUNF. Here is the example (from the DOCSERV.INI file of the rule list with this rule. This rule must run before any other rules which use Documaker code and expect Documaker-related
INI options.
< ReqType:MTC > function = atcw32->ATCLogTransaction function = atcw32->ATCLoadAttachment function = dprw32->DPRSetConfig function = atcw32->ATCUnloadAttachment function = mtcw32->MTCLoadFormset function = dprw32->DPRRotateFormsetPages function = mtcw32->MTCPrintFormset
N
OTE
:
The TPDInitRule rule should be in the list after DPRInit rule.
Request types and multiple bridges
When you install one bridge over another or develop a new bridge, keep in mind that some of the request types listed in the DOCSERV.INI or DOCCLNT.INI files may already be in use by another application or bridge.
If this happens, change your bridge or application to use an unused request type. The length of the request type string is not limited to three characters. You can enter up to 19 characters. Do not include any special characters, instead limit it to alphanumeric characters and underscores.
For example, suppose you are trying to use request type LGN, but it is already taken and the list of rules in the DOCSERV.INI file for this request type is not the same as you need.
In this situation, you could define your own request type, such as MYLGN and add the rules you need to DOCSERV.INI file under the ReqType:MYLGN control group. Be sure to change your application to use the MYLGN request type instead of LGN.
131
Chapter 2
Using the Internet Document Server
S
UBMITTING
B
ATCH
R
EQUESTS
You can use the FILE2IDS utility to read a text file which contains a series of requests and submit those requests to an IDS server. Each line of the text file equals one request.
You specify the request type on the command line and the attachment variables are created from each line in the input file in this manner:
• Each line is broken into 1000 byte chunks (1000 is the default size, you can set the size using the /L parameter)
• Each chunk is added as attachment variable RECORDLINEXX, where XX is the sequence number of the chunk.
The attachment variable RECORDPARTS specifies how many chunks are added.
N
OTE
:
The FILE2IDS is a Visual Basic program. You must have a VB runtime installed to run this program. You can click the Help button when you run FILE2IDS to see a summary of the various parameters. For more information about this utility, see the Utilities Reference.
132
Printing in Duplex Mode to PCL Printers
P
RINTING IN
D
UPLEX
M
ODE
TO
PCL
P
RINTERS
Windows does not let you print files that are a mixture of simplex and duplex pages from
Acrobat. The whole document has to be printed the same way. IDS, however, lets you print a file to a local PCL printer which preserves the file’s duplex information. There are two ways to do this:
• By inserting blank pages into a PDF file for the pages in simplex mode. This requires the system to create two PDF files, one for printing and one for viewing.
• By creating the PCL file, compressing the file, downloading the file, and then decompressing it for printing.
IDS can create compressed PCL files several ways:
• Using the IDS print rules. If you use the print rules, use the Compression attachment variable to create a compressed file. When used by Print Preview, you must also pass the Compression attachment variable to the DPRPrint rule. See the SDK Reference for more information about these rules.
• Using Documaker. If you create the file via Documaker, you set INI options to create the file. The PRTZCompressOutPutFunc function is called to compress the output files. To use this function to compress an output file such as a PCL print batch file, add these INI options:
< PrtType:PCL >
OutputMod = PRTW32
OutputFunc = PRTZCompressOutputFunc
• Using a Java application which can decompress the file and send it to a local printer.
The application is provided in the WindowsRawPrinter.jar file and it requires that you install the DSIJWP.DLL file.
N
OTE
:
The output is compressed, regardless of the file’s extension. You must decompress the file before you can print it.
133
Chapter 2
Using the Internet Document Server
U
SING
IDS
TO
D
ISTRIBUTE
E
You can use the Internet Document Server to distribute email. The following illustration shows how it works with the GenData program, which is part of Documaker:
GenData program
Recipient batch used for email
File2IDS
IDS
Service
N
OTE
:
Because the File2IDS utility is a Visual Basic program, the above scenario is only available for Windows environments.
The following scenario, which is available for both Windows and UNIX environments, shows how it works if you are using Documaker Bridge, but not the GenData program:
IDS client
email request
IDS
Service
For either approach, to use the Internet Document Server to distribute email, you must modify these files:
• DOCSERV.XML
• DAP.INI
M
ODIFYING THE DOCSERV
.
XML
C
ONFIGURATION
F
ILE
This configuration file must contain the following section. These rules are used to take messages sent to IDS and send formatted email messages to an email server such SMTP.
The system supports text-based templates or HTML templates that can be sent as an attachment or used as the message body.
<section name="ReqType:EMAIL">
<entry name="function">atcw32->;ATCLogTransaction</entry>
<entry name="function">atcw32->;ATCLoadAttachment</entry>
<entry name="function">dprw32->;DPRParseRecord</entry>
134
Using IDS to Distribute Email
EmailDFD control group
Email2IDS control group
XML2Body control group
<entry name="function">dprw32->;DPRFindTemplate</entry>
<entry name="function">dprw32->;DPRAdd2Attachment</entry>
<entry name="function">dprw32->;DPRCreateEMailAttachment</entry>
<entry name="function">dprw32->;DPRMail</entry>
<entry name="function">atcw32->;ATCUnloadAttachment</entry>
</section>
Modifying the DAP.INI File
This INI file must contain the following control groups and options.
The DFD file specified by this option is used by the DPRParseRecord rule. The system expects to receive the email data from the client in fixed-length records defined by this
DFD. Using a DFD to define the record layout increases flexibility. This DFD can be identical to a batch recipient DFD, where the system is taking an output from the
GenData program and using it as input to the email server.
< EmailDFD >
File = .\dfd\attchdfd.dfd
This group is also used by the DPRParseRecord rule. The option (on the left) must match a field name in the DFD defined under the EmailDFD group. The DPRParseRecord rule copies the data to attachment variables used by other email rules (see the section on attachment variables). This lets you take fields defined in the DFD whatever they are named, and transfer the data to attachment variables that are used by other email rules.
< Email2IDS >
EmailAdd = ADDRESS
PullCode = REQTYPE
This control group is used by the DPRFindTemplate rule. Templates are used to predefine text for the body of an email, while variable data is inserted at indicated places within the body of text. The XML2Body control group defines which template files are used for the message body.
The options in the example below, such as e301, e302, and so on, are the values of the
ReqType used by the IDS. This value can come directly from the message the IDS receives or from the DPRParseRecord rule. The system must have the ReqType either in the ATTCHDFD.DFD file or set up in the Email2IDS control group.
< XML2Body > e301 = .\tmpl\e301.txt
e302 = .\tmpl\e302.txt
e303 = .\tmpl\e303.txt
e304 = .\tmpl\e304.txt
e305 = .\tmpl\e305.txt
e306 = .\tmpl\e306.txt
e307 = .\tmpl\e307.txt
e308 = .\tmpl\e308.txt
e309 = .\tmpl\e309.txt
e310 = .\tmpl\e310.txt
e311 = .\tmpl\e311.txt
e312 = .\tmpl\e312.txt
135
Chapter 2
Using the Internet Document Server
XML2Attach control group
EmailAdd2Attachment control group
Mail and MailType control groups
This control group is used when you need to use template processing to produce an attachment. This group functions just like the XML2Body control group except the output of the template processing is sent as an attachment.
< XML2Attach > e301 = .\tmpl\e301.txt
e302 = .\tmpl\e302.txt
e303 = .\tmpl\e303.txt
e304 = .\tmpl\e304.txt
e305 = .\tmpl\e305.txt
e306 = .\tmpl\e306.txt
e307 = .\tmpl\e307.txt
e308 = .\tmpl\e308.txt
e309 = .\tmpl\e309.txt
e310 = .\tmpl\e310.txt
e311 = .\tmpl\e311.txt
e312 = .\tmpl\e312.txt
The control group is used by the DPRAdd2Attachment rule to take values from the INI file for the email rules (see section on predefined attachment variable names).
< EmailAdd2Attachment > default = SUBJECT, Important notice
These control groups are used by the DPRMail rule to define the email protocol. See the
Documaker Desktop Administration Guide for information on setting up email support.
These options are identical to the ones set up in the FSIUSER.INI or FSISYS.INI files for a Documaker Desktop.
< Mail >
MailType = SMTP
< MailType:SMTP >
Name = Send Mail
Module = SMMW32.DLL
MailFunc = SMMSendSMTP
ReplyTo = [email protected]
From = [email protected]
AltFrom = Joe Jones
Port = 25
Server = 10.8.10.216
Debug = Yes
Option
Name
Module
Description
Name of the system (identifies the system on internal dialogs).
Name of the Documaker DSO that supports the email system.
MailFunc Exported DSO function name of the email handler.
136
Using IDS to Distribute Email
Option
ReplyTo
From
AltFrom
Port
Server
Debug
Description
For SMTP, this option lets you specify a reply-to address.
The system also lets you specify a different reply-to email address for each IDS transaction. Use this built-in function to specify an attachment variable which contains the value for the ReplyTo option:
< MailType:SMTP >
ReplyTo = ~GetAttach REPLYTO,INPUT
The value for the ReplyTo option is replaced by the value of the attachment variable in the input attachment with the name REPLYTO.
The first parameter is the name of the attachment variable, the second is the
INPUT or OUTPUT, specifying which attachment is used.
You can use the built-in INI function in the DAP.INI file or in a particular configuration INI file. You cannot use it in the DOCSERV.INI or DSI.INI files.
For SMTP, this option lets you specify who the email was from.
For SMTP, this option lets you specify an alternative from address, indicating where the email was from.
Enter the port.
Enter the address of the server.
Enter Yes to turn on debugging.
A
TTACHMENT
V
ARIABLES
U
SED BY
E
R
ULES
Messages sent to the IDS are contain attachment variables. Attachment variables can also be used to send information from one rule to another. Some INI options refer to attachment variables. The attachment variables listed below are used by the email rules.
For more information on attachments and the email rules, see the SDK Reference .
Variable Description
XMLTEMPLATTACH The DPRCreateEMailAttachment rule uses this variable to know which file to open as the template for the attachment. This variable is usually created by the DPRFindTemplate rule.
XMLTEMPLBODY
HTMLATTACHFILE
The DPRCreateEMailAttachment rule uses this variable to know which file to open as a template for the message body. This variable is usually created by the DPRFindTemplate rule.
The file name that contains the output from the template processing used for the attachment. This variable is created by the
DPRCreateEMailAttachment rule and contains a path to a file name—not the actual data.
HTMLBODYFILE The file name that contains the output from the template processing used for the message body. This variable is created by the
DPRCreateEMailAttachment rule and contains a path to a file name—not the actually data.
137
Chapter 2
Using the Internet Document Server
138
Variable
RECORDLINE(##)
RECORDPARTS
REQTYPE
ADDRESS
MSGBODY
SUBJECT
ATTACHMENT
Description
The variable that contains raw data sent to IDS from the client. The format of the data is defined by the DFD specified by the Path option in the EmailDFD control group. There can be any number of these variables but no variable can contain more than 1024 bytes of data. The variables must be defined as follows:
(RECORDLINE00 RECORDLINE01…RECORDLINE99)
These variables must be created by the client program. These variables are processed by the DPRParseRecord rule.
The number of RECORDLINE variables. Processed by the
DPRParseRecord rule.
The transaction identifier code. Used by the DPRFindTemplate and
DPRAdd2Attachment rules to determine which template to use for a particular message.
The email address. Serves as input for the DPRMail rule.
The body of email. Serves as input for the DPRMail rule.
The subject of the email.
A file attached to the email—no template processing.
U
SING
E
R
ULES
You can use the following rules when working with email. For more information, see the
SDK Reference .
DPRParseRecord
Use this rule to assemble an attachment into a record and then convert to an XML tree.
This rule expects the RECORDLINE## and RECORDPARTS attachment variables in the message it receives. The rule performs the following operations.
1
Takes the data from each of the RECORDLINE## variables and appends them together into one record.
2
The data from this record is converted into an XML tree with variable names in the
ATTCHDFD.DFD file used as the variable names for the XML tree.
3
The data from the DFD variables can be transferred to attachment variables.
Therefore you can use any variable defined in the DFD to set any of the specific attachment variables listed in the previous section. The Email2IDS control group maps the DFD variable names to the attachment variable names. So you have two groups of variables; the attachment variables and the XML tree variables.
< Email2IDS >
DFD VARIABLE = ATTACHMENT VARIABLE
DPRFindTemplate
Use this rule to specify the template file. It expects a REQTYPE variable name to in the attachment. So the DPRParseRecord rule must be executed first to set the REQTYPE variable. It uses the XML2Body control group to define the templates to create the message body and the XML2Attach control group to set up email attachments.
Using IDS to Distribute Email
DPRAdd2Attachment
DPRCreateEMailAttach ment
Use this rule to set attachment variables from the INI file. It uses the
EmailAdd2Attachment control group in the INI file to set the variable names. It can use a default setting in the INI file or it can use a specific request type, or multiple request types.
< EmailAdd2Attachment > e301 = SUBJECT, Warning Notice e301 = ATTACHMENT, d:\ticket.doc
default = SUBJECT, Important notice
Use this rule to perform template processing. This rule can be used for the message body as well an attachment. Template processing uses a text or HTML file to define constant data. Variable data is then inserted at indicated places within the text.
Here is an example of a template text file. You must define the CurrentDate and
AcctName fields in the ATTCHDFD.DFD file.
DPRMail
<%descendant::COLUMN[ATTRIBUTE::NAME="CurrentDate"],%>
Dear <%descendant::COLUMN[ATTRIBUTE::NAME="AcctName"],%>,
Thank you for opening a certificate of deposit with DeepGreen Bank.
You will receive documents pertaining to your account in the mail shortly. If you have any questions, please email us at [email protected] or contact our Customer Care
Center at 1-888-888-8888.
Sincerely,
DeepGreen Bank
E301
Whether the template is used for the message body or an attachment depends on whether the request type was listed under the XML2Body or the XML2Attach control group. This is determined when the DPRFindTemplate rule is executed.
Use this rule to transfer the data from the attachment variables to the email server. IDS acts as a client to an email server such as Microsoft Exchange. The following attachment variables should be considered as input to this rule.
• ADDRESS
• MSGBODY
• SUBJECT
• ATTACHMENT
• HTMLATTACHFILE
• HTMLBODYFILE
139
Chapter 2
Using the Internet Document Server
DPRLog
Use this rule to confirm whether an email was sent by IDS. This rule stores information in a log file from either the attachment variables or the XML document created by the
DPRParseRecord rule. The DPRMail rule puts the RESULTS attachment variable into the output queue. If no RESULTS variable exists, then the DPRMail rule was not executed and no mail was sent.
U
SING THE
E
B
US
IDS includes an email message bus you can use to receive request messages with or without file attachments from an email inbox. Replies can be emailed asynchronously with or without file attachments to the originators of the request messages.
You can also configure a reply email box as the default reply queue in the server or client configuration files, in which case test utilities or client applications using DSILIB or
DocucorpMsg Java package can also communicate with IDS via the email message bus.
The main body part of a request should be formatted in plain text and should contain the
XML that should be used as the main body part of the MIME message. Here is an example:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/ envelope/">
<SOAP-ENV:Body>
<DSIMSG VERSION="100.020.0">
<CTLBLOCK>
<REQTYPE>SSS</REQTYPE>
<UNIQUE_ID>f9db68c1b1c67998662b6cee85a5bdd2</UNIQUE_ID>
</CTLBLOCK>
<MSGVARS>
<VAR NAME="REQTYPE">SSS</VAR>
<VAR NAME="MAIL.MARSHALLER.XSL.TEMPLATE">sss.xsl</VAR>
</MSGVARS>
</DSIMSG>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
The content of the main body part of a reply message can be formatted via an XSL template that is accessible to IDS and that is supplied via input message variable
MAIL.MARSHALLER.XSL.TEMPLATE. If an XSL template is not provided, IDS returns XML of a format similar to that in the example shown above for a request message.
Malformed email requests are logged in a bad-soap.log file along with a reference ID and
IDS will change the request type to EML and send a response along with the same reference ID back to the end user detailing the nature of the error.
For information on these properties, please see the HTML documentation shipped with
IDS. You will find this documentation in the following directory: dsi_sdk\java\docs\com\docucorp\messaging\mail\DSIMailMessageQueueFa ctory.html
Be sure to specify the MailDSIMessageMarshaller and the DSIMailMessageQueueFactory classes for the marshaller and queue.factory properties.
Here is an example of a queue configuration section for IDS (docserv.xml):
140
Using IDS to Distribute Email
<section name="queue">
<section name="marshallers">
<entry name="marshaller.class">com.docucorp.messaging.data.marshaller.Mail
DSIMessageMarshaller</entry>
</section>
<!-- input options -->
<entry name="queuefactory.class">com.docucorp.messaging.mail.DSIMailMessag
eQueueFactory</entry>
<entry name="mail.input.server">pop.gmail.com</entry>
<entry name="mail.input.port">995</entry>
<entry name="mail.input.user">requestq</entry>
<entry name="mail.input.password">pdtest123</entry>
<entry name="mail.input.protocol">pop3</entry>
<entry name="mail.input.queue">[email protected]</entry>
<entry name="mail.input.use.authentication">no</entry>
<entry name="mail.input.use.ssl">yes</entry>
<entry name="mail.input.ssl.socketFactory.class">com.docucorp.messaging.ma
il.ssl.input.DSIMailSSLSocketFactory</entry>
<entry name="mail.input.ssl.socketFactory.fallback">false</ entry>
<entry name="mail.input.ssl.protocol">SSLv3</entry>
<entry name="mail.input.ssl.keystore">c:/docserv/keystore/ cacerts</entry>
<entry name="mail.input.ssl.keystore.type">JKS</entry>
<entry name="mail.input.ssl.keystore.manager.type">SunX509</ entry>
<entry name="mail.input.ssl.keystore.pwd">changeit</entry>
<entry name="mail.input.ssl.truststore">c:/docserv/keystore/ cacerts</entry>
<entry name="mail.input.ssl.truststore.type">JKS</entry>
<entry name="mail.input.ssl.truststore.manager.type">SunX509</ entry>
<entry name="mail.input.ssl.truststore.pwd">changeit</entry>
<!-- output options -->
<entry name="mail.output.server">smtp.gmail.com</entry>
<entry name="mail.output.port">465</entry>
<entry name="mail.output.user">[email protected]</entry>
<entry name="mail.output.password">pdtest123</entry>
<entry name="mail.output.protocol">smtp</entry>
<entry name="mail.output.queue">[email protected]</entry>
<entry name="mail.output.use.authentication">yes</entry>
<entry name="mail.output.use.ssl">yes</entry>
<entry name="mail.output.ssl.socketFactory.class">com.docucorp.messaging.m
ail.ssl.output.DSIMailSSLSocketFactory</entry>
<entry name="mail.output.ssl.socketFactory.fallback">false</ entry>
<entry name="mail.output.ssl.protocol">SSLv3</entry>
<entry name="mail.output.ssl.keystore">c:/docserv/keystore/ cacerts</entry>
<entry name="mail.output.ssl.keystore.type">JKS</entry>
141
Chapter 2
Using the Internet Document Server
<entry name="mail.output.ssl.keystore.manager.type">SunX509</ entry>
<entry name="mail.output.ssl.keystore.pwd">changeit</entry>
<entry name="mail.output.ssl.truststore">c:/docserv/keystore/ cacerts</entry>
<entry name="mail.output.ssl.truststore.type">JKS</entry>
<entry name="mail.output.ssl.truststore.manager.type">SunX509</ entry>
<entry name="mail.output.ssl.truststore.pwd">changeit</entry>
<!-- common mail options -->
<entry name="mail.debug">yes</entry>
</section>
142
Attaching Documents to Documaker Transactions
A
TTACHING
D
OCUMENTS TO
D
OCUMAKER
T
RANSACTIONS
The system lets you attach documents to Documaker transactions as TIFF, JPG, RTF, and PDF files, as well as other bitmap formats supported by Documaker. Once attached, the document becomes an embedded bitmap in the Documaker transaction. The attachment form has an option to indicate it is an attachment (letter A in form options).
N
OTE
:
This shared object feature was implemented for iDocumaker integration and usage. The Documaker bridge rules DPRUpdateFormsetFromXML and
DPRLoadImportFile were enhanced to support attachment forms.
You can specify the document you want to attach several ways. For instance, the document can be a...
• File on disk with its name and type stored in IDS attachment variables
• File sent to IDS in the message
• File on disk accessible by Documaker Bridge
• Document in a Documanage repository
In all cases the information needed to find the file is located in the form metadata. Special metadata tag names are reserved for each case.
File with the Name and Type in IDS Attachment Variables
These tags in the form metadata specify how to locate the file name:
Tag
DPR_ATTACHVAR
NAME
Description
The name of the DSI attachment variable where the file name is stored.
DPR_FILETYPE (Optional) The system looks at this value to determine the file type. If it is missing, the system checks the file extension. The default is TIFF.
DPR_FILETYPEVAR (Optional) The name of DSI attachment variable with the file type.
The system looks at this value to determine the file type. If it is missing, the system checks the file extension. The default is TIFF. If
DPR_FILETYPE is present, this variable is ignored.
At least one of the file type values is required.
Here is an excerpt of an XML import file with this information. The actual file name is located in DSI variable named DPRFILE and its type is in DSI variable DPRTYPE.
<?xml version="1.0" encoding="UTF-8"?>
<FORM NAME="Test form name" OPTIONS="RA">
<INFO NAME="DPR_ATTACHVARNAME">DPRFILE</INFO>
<INFO NAME="DPR_FILETYPEVAR">DPRTYPE</INFO>
<DESCRIPTION>Test description of the form</DESCRIPTION>
<RECIPIENT NAME="AGENT" COPYCOUNT="1"/>
<RECIPIENT NAME="HOME OFFICE" COPYCOUNT="1"/>
</FORM>
143
Chapter 2
Using the Internet Document Server
File Sent to IDS in the Message
These tags in form metadata specify how to locate the file data.
Tag
DPR_ATTACH
NAME
Description
Specifies the name of the DSI attachment in which the file was sent, such as by the use of SendFile API.
DPR_FILETYPE (Optional) Specifies the file type. The system looks at this value to determine the file type. If it is missing, the system checks the file extension.
The default is TIFF.
DPR_FILETYPE
VAR
(Optional) Specifies the name of DSI attachment variable with file type.
The system looks at this value to determine the file type. If it is missing, the system checks the file extension. The default is TIFF. If
DPR_FILETYPE is present, this variable is ignored.
At least one of the file type values is required.
Here is an excerpt of an XML import file with this information. The file was sent to IDS inside the message. The name of the attachment used to send it was SENTFILE. The type of file is in DSI variable DPRTYPE.
<?xml version="1.0" encoding="UTF-8"?>
<FORM NAME="Test with DSI message" OPTIONS="RA">
<INFO NAME="DPR_ATTACHNAME">SENTFILE</INFO>
<INFO NAME="DPR_FILETYPE">TIF</INFO>
<DESCRIPTION>Test description of the form</DESCRIPTION>
<RECIPIENT NAME="AGENT" COPYCOUNT="1"/>
<RECIPIENT NAME="HOME OFFICE" COPYCOUNT="1"/>
</FORM>
File Accessible by Documaker Bridge
These tags in form metadata specify how to locate the file.
Tag
DPR_FILENAME
DPR_FILETYPE
Description
Specifies the physical file name.
(Optional) Specifies the file type. The system looks at this value to determine the file type. If it is missing, the system checks the file extension. The default is TIFF.
DPR_FILETYPEVAR Specifies the name of DSI attachment variable with file type. The system looks at this value to determine the file type. If it is missing, the system checks the file extension. The default is TIFF. If
DPR_FILETYPE is present, this variable is ignored.
At least one of the file type values is required.
Here is an excerpt of an XML import file with this information.
<?xml version="1.0" encoding="UTF-8"?>
<FORM NAME="Test with filename" OPTIONS="RA">
144
Attaching Documents to Documaker Transactions
<INFO NAME="DPR_FILENAME">c:\docs\Image_0001.jpg</INFO>
<INFO NAME="DPR_FILETYPE">JPG</INFO>
<DESCRIPTION>Test description of the form</DESCRIPTION>
<RECIPIENT NAME="AGENT" COPYCOUNT="1"/>
<RECIPIENT NAME="HOME OFFICE" COPYCOUNT="1"/>
</FORM>
N
OTE
:
If you are using a relative path in the file name it has to be relative to the directory where Docupresentment is running.
Document in the Documanage Repository
These tags in the form metadata specify how to locate the file. All of these tags are required.
Tag Description
DMG_CABINET Specifies the name of Documanage cabinet.
DMG_DOCID Specifies the value of Documanage DOCID.
DMG_VERSION Specifies the major version of the document.
DMG_REVISION Specifies the minor version of the document.
DMG_VERS Specifies the minor and major version of the document. The format is minor.major, such as 1.0 or 2.6. If this value is present, the values for
DMG_VERSION and DMG_REVISION are ignored.
Here is an excerpt of an XML import file with this information.
<FORM NAME="Test with Documanage" OPTIONS="RA">
<INFO NAME="DMG_CABINET">DOCCDEMO</INFO>
<INFO NAME="DMG_DOCID">22401</INFO>
<INFO NAME="DMG_VERSION">1</INFO>
<INFO NAME="DMG_REVISION">0</INFO>
<DESCRIPTION>Test description of the form</DESCRIPTION>
<RECIPIENT NAME="AGENT" COPYCOUNT="1"/>
<RECIPIENT NAME="HOME OFFICE" COPYCOUNT="1"/>
</FORM>
Here is another example with the DOC_VERS value:
<FORM NAME="Test with Documanage" OPTIONS="RA">
<INFO NAME="DMG_CABINET">DOCCDEMO</INFO>
<INFO NAME="DMG_DOCID">22401</INFO>
<INFO NAME="DMG_VERS”>1.0</INFO>
<DESCRIPTION>Test description of the form</DESCRIPTION>
<RECIPIENT NAME="AGENT" COPYCOUNT="1"/>
<RECIPIENT NAME="HOME OFFICE" COPYCOUNT="1"/>
</FORM>
145
Chapter 2
Using the Internet Document Server
Note that to use the file in Documanage, the Documanage Bridge must be available on the Docupresentment server. The Documaker Bridge will execute the following
Documanage Bridge rules automatically when it encounters the form with the metadata
(no configuration changes needed):
• DmgBrsCopyAttachment
• DmgBrsValidateSession
• DmgBrsCacheContentsFile
The type of the file does not need to be provided in this case, the Documanage document type will be used instead.
Error Messages
These error messages could be produced by the DPR rules if the attachment form did not work or was specified incorrectly.
Error
DPR0097
DPR0098
DPR0099
DPR0100
DPR0101
DPR0102
Text
Attachment form <FORM> metadata specified DSI attachment variable
<VARIABLE> but this variable was not found. File will not be loaded.
Attachment form <FORM> metadata specified DSI file attachment with delimiter <VARIABLE> but this file was not attached to DSI message. File will not be loaded.
Attachment form <FORM> metadata is missing required value <INFO> . File will not be loaded.
Failed to load attached file specified by attachment form <FORM>. File name
<FILE> of type <TYPE>.
Failed to load dynamic link library <LIBRARY>
Cannot locate variable <VARIABLE> in the attachment list after executing
Documanage bridge rules. Examine Documanage bridge errors.
Specifying Duplex Options for the Attached Form
If the attached document contains multiple pages, it might have to be printed in duplex mode. You specify the duplex options you want on each section using Documaker Studio so the duplex information will be on the XML representation of the form. You have these choices:
• F – front
• B – back
• T – short bind
The system defaults to simplex.
At the end of the options you must specify “#1” to indicate it is a dummy image. Here is an example:
146
Attaching Documents to Documaker Transactions
Start on back page bind example
Short bind example
OPTIONS=”S#1”
The name of the section is ignored.
Here are a few examples:
<FORM NAME="Test with PDF filename" OPTIONS="RA">
<INFO NAME="DPR_FILENAME"> mytifftest.tif</INFO>
<DESCRIPTION>Test of TIFF form</DESCRIPTION>
<RECIPIENT NAME="AGENT" COPYCOUNT="1"/>
<RECIPIENT NAME="INSURED" COPYCOUNT="1"/>
<SHEET>
<PAGE>
<SECTION NAME="TESTSECTION" OPTIONS="B#1"/>
</PAGE>
</SHEET>
</FORM>
Long bind example:
<FORM NAME="Test with PDF filename" OPTIONS="RA">
<INFO NAME="DPR_FILENAME"> mytifftest.tif</INFO>
<DESCRIPTION>Test of TIFF form</DESCRIPTION>
<RECIPIENT NAME="AGENT" COPYCOUNT="1"/>
<RECIPIENT NAME="INSURED" COPYCOUNT="1"/>
<SHEET>
<PAGE>
<SECTION NAME="TESTSECTION" OPTIONS="F#1"/>
</PAGE>
</SHEET>
</FORM>
<FORM NAME="Test with PDF filename" OPTIONS="RA">
<INFO NAME="DPR_FILENAME"> mytifftest.tif</INFO>
<DESCRIPTION>Test of TIFF form</DESCRIPTION>
<RECIPIENT NAME="AGENT" COPYCOUNT="1"/>
<RECIPIENT NAME="INSURED" COPYCOUNT="1"/>
<SHEET>
<PAGE>
<SECTION NAME="TESTSECTION" OPTIONS="T#1"/>
</PAGE>
</SHEET>
</FORM>
Debugging
Include this INI option in your config or DAP INI files to debug this functionality.
< Debug >
DPRProcessFormsetAttachments = Yes
The default is No.
When this option is set to Yes, the NA and POL files are unloaded with the names dprattach.dat and dprattach.pol and the log file (trace file or dprtrc.log) will contain information similar to this example:
DPRProcessFormsetAttachments: DMG_CABINET=<DOCCDEMO> Form <Test with
Documanage>. Adding CABINET attachment variable
147
Chapter 2
Using the Internet Document Server
DPRProcessFormsetAttachments: DMG_DOCID=<22401> Form <Test with
Documanage>. Adding DOC_ID attachment variable
DPRProcessFormsetAttachments: DMG_VERSION=<1> Form <Test with
Documanage>. Adding DOC_MAJORVERSION attachment variable
DPRProcessFormsetAttachments: DMG_REVISION=<0> Form <Test with
Documanage>. Adding DOC_MINORVERSION attachment variable
DMG Rule DmgBrsCopyAttachment(DSI_MSGINIT) Time spent: 0.000
DMG Rule DmgBrsValidateSession(DSI_MSGINIT) Time spent: 0.000
DMG Rule DmgBrsCacheContentsFile(DSI_MSGINIT) Time spent: 0.000
DMG Rule DmgBrsCopyAttachment(DSI_MSGRUNF) Time spent: 0.078
DMG Rule DmgBrsValidateSession(DSI_MSGRUNF) Time spent: 0.109
DMG Rule DmgBrsCacheContentsFile(DSI_MSGRUNF) Time spent: 0.094
DPRProcessFormsetAttachments: found Documanage bridge attachment variables CONTENTS_DECOMPRESSED_PATH=<cache\22401f0v1x0.tif> and
CONTENTS_DECOMPRESSED_TYPE=<TIF>
DMG Rule DmgBrsCacheContentsFile(DSI_MSGRUNR) Time spent: 0.016
DMG Rule DmgBrsValidateSession(DSI_MSGRUNR) Time spent: 0.000
DMG Rule DmgBrsCopyAttachment(DSI_MSGRUNR) Time spent: 0.000
DMG Rule DmgBrsCacheContentsFile(DSI_MSGTERM) Time spent: 0.000
DMG Rule DmgBrsValidateSession(DSI_MSGTERM) Time spent: 0.000
DMG Rule DmgBrsCopyAttachment(DSI_MSGTERM) Time spent: 0.000
148
Using IDS to Run Documaker
U
SING
IDS
TO
R
UN
D
OCUMAKER
You can set up IDS to run Documaker as a subordinate process, as shown below. Web clients communicate with IDS using queues. IDS communicates with Documaker via
XML files called job tickets and job logs.
This diagram illustrates the process:
Web Client
VB\COM\
Java Client
IDS
XML Job
Ticket
Documaker
(GenData)
XML
Job Log
IDS can start or stop Documaker as needed, without user interaction. One IDS session controls one Documaker process. You can, however, implement multiple IDS sessions and have multiple Documaker processes as well.
Keep in mind these limitations:
• You can only run Documaker in single step mode. Consult the Documaker
Administration Guide for more information on single step processing.
• Different resource setups for Documaker are supported, but Documaker processing restarts if resources are changed, eliminating the performance benefits. This should not be a problem because it is unlikely multiple Documaker setups will be used with a single IDS implementation. You can, however, experience problems testing a system with multiple setups.
• During processing, some INI options can be changed by the client. Since some
Documaker rules use static variables and store INI values in memory, it is possible that a client will be unable to change an INI option if those Documaker rules are used. To handle these situations, you must restart Documaker.
• IDS and Documaker must exist on the same node/server machine.
149
Chapter 2
Using the Internet Document Server docserv.xml file
DAP.INI file
RPEX1.INI file
S
ETTING
U
P
IDS
To set up IDS to run Documaker, make these changes in the following configuration files:
Make these changes in the docserv.xml file, or the configuration file the IDS is configured to use. Here is an example of how to add a request type for Documaker:
<section name="ReqType:RPD">
<entry name="function">atcw32->;ATCLogTransaction</entry>
<entry name="function">atcw32->;ATCLoadAttachment</entry>
<entry name="function">atcw32->;ATCUnloadAttachment</entry>
<entry name="function">dprw32->;DPRSetConfig</entry>
<entry name="function">rpdw32->;RPDCheckRPRun</entry>
<entry name="function">rpdw32->;RPDCreateJob</entry>
<entry name="function">rpdw32->;RPDProcessJob</entry>
</section>
If necessary, add two more request types, one to check if Documaker is running and one to stop Documaker. Here is an example:
<section name="ReqType:CHECK">
<entry name="function">atcw32->;ATCLogTransaction</entry>
<entry name="function">atcw32->;ATCLoadAttachment</entry>
<entry name="function">atcw32->;ATCUnloadAttachment</entry>
<entry name="function">dprw32->;DPRSetConfig</entry>
<entry name="function">rpdw32->;RPDCheckRPRun</entry>
</section>
<section name="ReqType:STOP">
<entry name="function">atcw32->;ATCLogTransaction</entry>
<entry name="function">atcw32->;ATCLoadAttachment</entry>
<entry name="function">atcw32->;ATCUnloadAttachment</entry>
<entry name="function">dprw32->;DPRSetConfig</entry>
<entry name="function">rpdw32->;RPDStopRPRun</entry>
</section>
Also add the following IDS rule to the ReqType:INI section:
<entry name="function">rpdw32->;RPDStopRPRun</entry>
Add a configuration option for a the master resource library you will use. Here is an example which is based on the RPEX1 master resource library:
< Configurations >
CONFIG = RPEX1
< Config:RPEX1 >
INIFile = RPEX1.INI
Make these changes in the RPEX1.INI file (or the INI file you are using for your configuration):
< IDSServer >
ExtrPath = e:\fap\mstrres\rpex1\extract\
PrintPath = e:\fap\mstrres\rpex1\data\
WaitForStart = 60
SleepingTime = 500
MaxWaitTime = 120
GENSemaphoreName = gendata
RPDSemaphoreName = rpdrunrp
150
Using IDS to Run Documaker
PrintFileCacheTime = 7200
TextFileCacheTime = 7200
< RPDRunRP >
Executable = e:\rel101\shipw32\gendaw32.exe
Directory = e:\fap\mstrres\rpex1\
UserINI = e:\fap\mstrres\rpex1\fsiuser.ini
BaseLocation = http://10.8.10.69/fap/mstrres/rpex1/data/
< Printer >
PrtType
< Debug >
RPDProcessJob = Yes
Setting up Multiple Internet Document Servers
The semaphores used by IDS and Documaker are global for a computer, so if you need multiple IDS processes on the same computer, each IDS process and subordinate
Documaker process should use different semaphore names.
Semaphore names are generated automatically by IDS for each instance. These names are passed to Documaker as command line parameters. No user intervention is needed.
To specify naming conventions for these semaphores, change these INI options:
< IDSServer >
GENSemaphoreName =
RPDSemaphoreName =
Keep in mind the names must be unique for a computer, so two IDS servers will have to use two different INI files specifying semaphore names.
Controlling Documaker
To control Documaker via IDS, use these IDS rules:
• RPDCheckRPRun - Makes sure Documaker is running. If Documaker is not running, this rule starts it.
• RPDCreateJob - Finds the attachment variables for each of the values in the job ticket and adds them to the XML tree. The XML tree is added to the RPDJobTicket variable so the next rule can use it.
• RPDProcessJob - Gets the XML tree from the RPDJobTicket variable and writes it to a file. This file is used as the job ticket which triggers the Documaker process.
• RPDStopRPRun - Receives the current process ID from the RPDRunProcess variable and then terminates Documaker.
For more information about these rules, see Using the Documaker Bridge.
151
Chapter 2
Using the Internet Document Server
If a critical error is encountered
IDS restarts Documaker Server (GenData) if it encounters a critical error and resubmits the transaction being processed when the error occurred. This helps you handle situations where you have sporadic memory access problems in custom or 3rd-party code.
N
OTE
:
Before the release of version 11.2 shared objects, when the GenData program started, the RPDProcessJob rule communicated with GenData via TCP/IP, sending the job ticket message to GenData and receiving a job log response. If the TCP/IP communication failed, the RPDProcessJob rule forced GenData to stop. This would prepare IDS for the next request.
Version 11.2 shared objects added the ability to automatically restart GenData after the process described above. After it confirms that GenData has been stopped, the RPDProcessJob rule calls the RPDCheckRPRun rule to restart
GenData and then calls itself to communicate with GenData and send the same job ticket.
To keep a copy of each transaction, an eight-digit index number is added to the job ticket and job log file names when they are downloaded for information in debug modes.
Also, the system includes these error messages which can appear if there is a TCP/IP failure:
Message
RPD0011
RPD0012
RPD0013
RPD0014
RPD0016
RPD0017
RPD0018
Description
Unexpected program termination of GenData.
Socket connection failure.
Can not unload job ticket to the msg buffer.
Can not load the msg buffer to the job log.
Socket time-out.
Time exceeded the MaxWaitForStart specification.
GenData failure.
The system includes additional information in the log trace file in case of failure. This includes the job ticket, the input attachment variables, and error messages. On the IDS side, this file is named dprtrc.log. On the GenData side, this file is the trace file.
152
Using IDS to Run Documaker
Error file processing
Returning record IDs
You can use INI options to turn on or off the recording of error information when using
IDS to run Documaker. This can help in debugging.
To create an error file and write errors into the error file, include these options in the
Debug control group:
< Debug >
RPDCheckRPRun = Yes
RPDCreateJob = Yes
RPDProcessJob = Yes
RPDErrFile = rpderr.dat
Option Description
RPDCheckRPRun Enter Yes if you want to record any errors encountered when running this rule. If you enter No, errors produced while this rule is run are not recorded.
RPDCreateJob Enter Yes if you want to record any errors encountered when running this rule. If you enter No, errors produced while this rule is run are not recorded. Be sure to set this option to Yes to record GenData errors.
RPDProcessJob
RPDErrFile
Enter Yes if you want to record any errors encountered when running this rule. If you enter No, errors produced while this rule is run are not recorded.
Enter the name of the error file. The system does not create an error file if you do not enter a name in this field.
When you use IDS to run Documaker with WIP and archive rules, the WIP and archived record IDs are written to the print log (PrtLog) file. Furthermore, the first WIP record ID and the first archived record ID are sent to a job log (JobLog) file and are also output as the following attachment variables.
Variable
WIPRECORDID
ARCRECORDID
Description
The first WIP record ID.
The first archived record ID.
These XML elements are added to both the PrtLog and JobLog files:
<WIPRECORDID>12345</WIPRECORDID>
<ARCRECORDID>12345</ARCRECORDID>
153
Chapter 2
Using the Internet Document Server
FSISYS.INI or
FSIUSER.INI file
S
ETTING
U
P
D
OCUMAKER
The first step is to set up Documaker to run in a single step mode. See the Documaker
Administration Guide for more information.
Keep in mind these considerations...
• If the Documaker programs and DSOs are located on the network, the start time for
Documaker can be significant. Keep in mind, however, that the start time only affects the first transaction. Subsequent transactions will process much more quickly. If the start time exceeds 10 seconds, consider changing the WaitForStart option to a higher value.
• All of the standard Documaker performance-related INI options are available even when IDS runs Documaker as a subordinate process. For best results, optimize
Documaker’s performance before using it with IDS.
• Documaker will run fastest if the resource files for Documaker, as well as input and output files, are physically located on the computer where IDS and Documaker are running.
• Documaker (GenData) automatically creates the XML export file from the transaction and returns the name as XMLOUTPUT and URLXMLOUTPUT.
In addition, you will need to make changes to your FSISYS.INI or FSIUSER.INI files and to your AFGJOB.JDT file.
Be sure to turn off all Documaker stop options, as shown here:
< GenDataStopOn >
BaseErrors
FieldErrors
< GenData >
= No
TransactionErrors = No
ImageErrors = No
= No
= Yes ClearMsgFile
< PrintFormSet >
MultiFilePrint
LogFileType
LogFile
= Yes
= XML
= .\data\printlog.xml
Option Description
GenDataStopOn control group
BaseErrors Enter No to prevent the system from stopping on base-level errors.
TransactionErrors Enter No to prevent the system from stopping on transaction-level errors.
ImageErrors Enter No to prevent the system from stopping on image-level errors.
FieldErrors Enter No to prevent the system from stopping on field-level errors.
GenData control group
ClearMsgFile Enter Yes to clear the message file (MsgFile) before a job process starts.
This prevents the previous job’s information from being reused and is necessary when running in single-step mode. The default is No.
154
Using IDS to Run Documaker
Option Description
PrintFormSet control group
MultiFilePrint Enter Yes to generate multiple print files which have a 46-byte unique name.
To identify which recipients are in which print batch, enter No or omit this option. This causes the PrintFormSet rule to save the printer for the print batch along with its recipient information.
The MultiFilePrint option should only be used with the PDF, RTF,
HTML, and XML print drivers.
LogFileType
LogFile
Specify the type of the log file, such as XML or TEXT.
Specify the name and path of the log file, such as
\data\printlog.xml
If you omit the extension, the system uses the LogFileType option to determine the extension.
These INI options are optional:
< IDSServer >
SleepingTime = 500
GENSemaphoreName = gendata
RPDSemaphoreName = rpdrunrp
< Debug >
RULServerJobProc = Yes
Option
IDSServer control group
Description
SleepingTime Enter the amount of time in milliseconds you want the system to wait before it checks for a job ticket. The default is 1000 (1 second).
GENSemaphoreName Semaphore names are generated by IDS for each instance and are passed to Documaker as command line parameters. Use this option to specify naming conventions for semaphore names. The default is
gendata.
Keep in mind semaphore names must be unique for a computer, so two IDS servers will have to use two different INI files specifying semaphore names.
RPDSemaphoreName Semaphore names are generated by IDS for each instance and are passed to Documaker as command line parameters. Use this option to specify naming conventions for semaphore names. The default is
rpdrunrp.
Keep in mind semaphore names must be unique for a computer, so two IDS servers will have to use two different INI files specifying semaphore names.
Debug control group
RULServerJobProc Enter Yes to get a copy of the job ticket file before the system removes it.
155
Chapter 2
Using the Internet Document Server
AFGJOB.JDT file
Prior to the release of version 11.1, you had to change the base rule from
RULStandardBaseProc, as shown here:
<Base Rules>
;ServerBaseProc;1;;
...
The ServerBaseProc rule replaced the RULStandardJobProc rule and let IDS run
Documaker as a separate, stay alive process. This meant Documaker only had to start once and IDS could continue even if Documaker failed. For more information on the
ServerBaseProc rule, see the Rules Reference.
N
OTE
:
If you are running Documaker version 11.1 or higher, you do not have to substitute ServerBaseProc for RULStandardBaseProc.
Naming Conventions for Output Files
The output files from Documaker use the names generated by the IDS rules and submitted to Documaker in the job ticket file. If you need different names, provide them in the IDS request. In this case, you must make sure the names are unique or else they will be overwritten. The names generated by IDS can consist of up to 45 characters and are similar to the names generated by the DPRPrint rule in IDS.
The directory where the output files are created is determined in this manner:
• If the file name and path was provided, the system uses that information.
• If the file name was provided, but the path was omitted, the system looks for the path in the PRINTPATH attachment variable.
• If the path is not in the PRINTPATH attachment variable, the system looks for the
PrintPath option in the DSIServer control group.
• If no path was specified in the PrintPath option, the system places the output file in the current directory.
The extension of the output files is determined in this manner:
• If the name and extension was provided in the attachment, the system uses that information.
• If the name and extension were omitted, the system generates a name and uses the printer type as the extension for the print output files. For other files, the system looks for the FileExt option in the IDSServer control group to find the extension.
The default is DAT.
156
Using IDS to Run Documaker
C
REATING
DPW F
ILES
You can generate a DPW file from GenData or from an import file using IDS. The code is structured as a print driver so setting it up is virtually the same as with print drivers.
The DPW library supports the INI2XML, WIP2DPW, and File2DPW control groups used by the WIP Edit plug-in. To generate a DPW file from Documaker, include these
INI options:
< Printers >
PrtType
< Printer >
PrtType
= DPW
= DPW
< PrtType:DPW >
PrintFunc = DPWPrint
Module
Debug
= DPWW32
= No
Set the Debug option to Yes to capture additional debug information to the trace log.
The PrtType:DPW group can also contain variable names that correspond to index element names in the DPW file. The values specified can be one of these formats: name = val
The value will be used as provided, where val is the actual value provided.
name = ~GVM gvmname
If the DPW library is run under the GenData program, the value of the GVM variable matching the name provided is used, where gvmname stands for the name provided.
name = ~GetAttach attachname
If the DPW library is run under IDS, the value of the attachment variable matching the name provided will be used, where attachname stands for the name provided.
The system checks the index of the DPW file for the presence of any variables specified in the PrtType:DPW control group and, if present, it updates their values with those specified in the INI file.
157
Chapter 2
Using the Internet Document Server
On the IDS side
On the Documaker side
A
CCESSING
IDS A
TTACHMENT
V
ARIABLES IN
G
EN
D
ATA
There are times when the GenData program needs access to data passed from IDS which is not in the extract file. To meet this need, the GenData program can access IDS attachment variables as GVM variables. If a GVM variable with the same name already exists, its value does not change.
Here is how it works:
The RPDCreateJob rule adds any input attachment variables to the XML tree (job ticket) besides the existing variables, such as MsgFile, ErrFile, ExtrFile, LogFile, DbLogFile,
NaFile, PolFile, NewTrn, PrtLog, PrtType, ExtrPath, PrintPath, PrintBatches,
BatchFiles, IniOptions, EWPSRequest, EWPSResults, ShowErrors, WIPRECORDID,
XMLOUTPUT, and so on.
For example, if an attachment variable called RPDTEST is located and it has a value of
This is a test, it is added to the XML tree as shown here:
<DOCUMENT>
<JOBTICKET>
. . .
<RPDTEST>This is a test</RPDTEST>
</JOBTICKET>
</DOCUMENT>
After the ServerJobProc rule receives the XML tree (job ticket), its child elements are used to update INI values or create GVM variables or both.
In IDS
U
SING
TCP/IP C
OMMUNICATIONS
IDS and GenData use TCP/IP (socket) to replace the job ticket/job log file I/O communication.
The RPDCheckRPRun rule sets up the host name and the port number for a GenData configuration by checking the HOST name and PORT number from these INI options:
< IDSServer >
MaxConfigAllowed = 10
Host = localhost
Port = 49300
Option Description
MaxConfigAllowed Enter the maximum number of configurations you want to allow. The default is 10.
Host
Port
Enter the host name. The default is localhost.
Enter the base IP port number. The default is 49300.
If you have multiple GenData configurations running over multiple IDS instances, the port number is generated based on the IDS instance number and the base IP port number, so you must decide the base IP port number and the range of IP port numbers. Note that the total number of IP port numbers is decided by:
158
Using IDS to Run Documaker
instances (IDS instance number) x MaxConfigAllowed (allowed to open GenDatas)
If the current configuration differs from the previous configuration, the current configuration starts a GenData process with the assigned IP port number. Both the host name and port number are saved in the configuration structure and are appended to the configuration list. If the configuration exists, the configuration element is extracted and uses the saved host and port number as current.
N
OTE
:
TCP/IP communication is for shared objects 11.1 and above and can not be used with early versions.This rule checks the version to decide whether TCP/IP or file
I/O communication should be used before it starts a GenData process.
In GenData
The RPDProcessJob rule uses the host name and port number to establish communication with GenData and sends a message that contains the XML document
(job ticket) to the server (GenData) when it detects that GenData has started. You can set the maximum time to wait for GenData to start using this INI option:
< IDSServer >
WaitForStart = 30
Option
WaitForStart
Description
Enter the maximum time to wait for GenData to start in seconds. The default is 30 seconds.
After IDS detects that GenData has started, it sends a message in XML format (the job ticket) and waits for GenData to finish and send back a response in XML format (the job log file). You can set the maximum time to wait for GenData to respond using this INI option:
< IDSServer >
MaxWaitTime = 30
Option
WaitForStart
Description
Enter the maximum time to wait for GenData to respond in seconds. The default is 30 seconds.
If GenData does not start before the waiting time elapses, IDS displays this error message on the IDS side:
Unexpected Program Termination of GenData
As soon as GenData starts, it initiates the communication between IDS and GenData using the IP port number retrieved from the command line argument. It receives the job ticket document sent by IDS and continues the GenData process. You can set the maximum time to wait to receive a job ticket using this INI option:
< IDSServer >
MaxWaitTime = 30
159
Chapter 2
Using the Internet Document Server
Option Description
MaxWaitTime Enter the maximum time to wait to receive a job ticket in seconds. The default is 30 seconds.
After GenData finishes, the JOBLOG tree is unloaded into a message buffer and is sent to client side as a response message.
You can use options in the Debug control group to determine whether to unload the job ticket and job log files for reference purposes. On the IDS side, set this option to Yes to keep a copy of the job ticket:
< Debug >
RPDProcessJob = Yes
On GenData side, set this option to Yes to keep a copy of the job log:
< Debug >
RULServerJobProc = Yes
C
USTOMIZING THE
E
XECUTION OF
D
OCUMAKER
When IDS runs Documaker in multiple step mode, you can introduce special steps which occur between the GenTrn, GenData, and GenPrint steps. You can use these steps, for instance, to
• Sort the TRNFILE or recipient batches
• Copy files to different locations
• Send files to the printer
• Notify an operator that steps were completed
The RPDRunRP rule can run a custom executable after each step in the process. Use these INI options to define the custom executable name and path:
< RPRun >
PostGenTrnExecutable =
PostGenDataExecutable =
PostGenPrintExecutable =
Option
PostGenTrnExecutable
Description
Enter the name and path of the custom executable, such as a batch file or shell script, you want the system to run after it completes the
GenTrn step.
PostGenDataExecutable Enter the name and path of the custom executable, such as a batch file or shell script, you want the system to run after it completes the
GenData step.
PostGenPrintExecutable Enter the name and path of the custom executable, such as a batch file or shell script, you want the system to run after it completes the
GenPrint step.
By default, the following information is passed as parameters to each executable:
160
Using IDS to Run Documaker
GenTrn – INI file, trnfile
GenData – INIfile, recipient batches
GenPrint – INI file, print file
These INI options are read from the FSIUSER.INI file to create the parameter list. The
FSIUSER.INI file is created by the RPDRunRP rule. This INI file is passed to
Documaker for each step. Internally, the RPDRunRP rule loads the FSIUSER.INI file and gets parameter information from it.
GenTrn parameters
< Data >
TrnFile = (parameter trnfile)
GenData parameters
The system reads all of the options under the Print_Batches control group to determine the recipient batches:
< Print_Batches >
Batch# = (paramter receipient batches )
GenPrint parameters
The system reads all of the print batches to determine the printer used and passes the port value for the printer as the parameter.
< Print_Batches >
Batch1 = (value ignored)
< Batch1 >
Printer = Printer1
< Printer1 >
Port = (parameter print file)
If any of the INI options are missing, the system logs an error. It will, however, try to run the post process without the missing parameter. Memory and list allocation errors result in failure and the system will not attempt to execute the outside process. Here is a list of the potential errors:
Error
Could not get INI option <Data> TrnFile GenTrn step
Could not create VMM list GenTrn step
Could not load INI file GenTrn step
Could not get INI context GenTrn step
Could not create VMM list GenData step
Could not load INI file GenData step
Could not get INI context GenData step
Could not create VMM list GenPrint step
Could not load INI file GenPrint step
Could not get INI context GenPrint step fatal fatal fatal fatal fatal fatal fatal fatal
Severity
non-fatal fatal
161
Chapter 2
Using the Internet Document Server
Error
Could not get INI option GenData step <group> <option>
Could not start process: [executable name and command line]
Memory re-allocation failed
Memory allocation failed
PROCStartProcess failed: [command line]
PROCWaitProcess failed: [executable name and command line]
PROCExitCodeProcess failed: [executable name and command line]
Severity
non-fatal fatal fatal fatal non fatal non fatal
162
Using the XML Messaging System
U
SING THE
XML
M
ESSAGING
S
YSTEM
The XML messaging system is an open and documented queue control message format based on XML and the evolving SOAP standard. The XML message format is supported by the JMS, WebSphere MQ, and HTTP messaging systems.
You can find more information on the XML and SOAP on the W3C WEB site: http://www.w3.org/
You can also find information about SOAP messages with attachments at: http://www.w3.org/tr/soap-attachments
For information on using SOAP without a messaging system, see Using XML SOAP
Outside of Messaging Systems on page 158 .
N
OTE
:
Oracle will follow the evolving standards of SOAP and UDDI and move toward universal messaging. The first version of the DSI message format is based on
XML and complies with many of the initial standards for SOAP message envelopes. Later versions will move transactions and servers toward fuller SOAP and UDDI compliance.
Oracle has used message queuing as a means of serializing requests and responses between loosely coupled clients and servers without requiring one-to-one connections.
Docupresentment includes the client and server sides of the DSI (document server interface) system and of the Oracle Messaging Library system. These interface layers help manage connections between multiple simultaneous clients and multiple simultaneous servers.
The Oracle Messaging Library provides a logical abstract layer over the physical process of accessing the queue, so one implementation can support and switch between multiple queueing systems.
The DSI system provides a logical abstract layer over the physical process of assembling, delivering, and parsing of a message, so the initiator of the message does not have to know the physical format of the message, and is insulated from internal software changes to the message format between product versions.
For instance, you can use the DSI messaging client with Documaker Desktop so
Documaker Desktop can...
• Interface with external systems via messaging middleware.
• Interface with IDS as a bridge to a legacy system to retrieve data for import.
The first ability means second is optional. You can also use your own internal programs and interface using messaging middleware.
The advantage of having a logical abstract layer is that it lets you deploy applications for different message queuing systems without requiring program changes. Only minimal setup changes are required to test or deploy the same application with a different queuing system.
163
Chapter 2
Using the Internet Document Server
The XML-based DSI message format
By abstracting the message format, applications are insulated from internal changes to the message format and can use the Oracle APIs to correctly assemble or disassemble messages.
The disadvantage of message format abstraction is that non-Oracle applications might be required to use Oracle APIs to communicate with Oracle applications. On some platforms, it may not be practical to invoke these APIs. The proprietary nature of the original message format further complicates the issue.
If you are integrating with IDS as the server, the message format documentation is not necessary. If, however, you are integrating with another application, the message format may be needed if you do not use IDS APIs.
The following topics outline the XML message file format.
The DSI message format complies with the following XML-based structure:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/ envelope">
<SOAP-ENV:Body>
<DSIMSG VERSION="100.017.0">
<CTLBLOCK>
<UNIQUE_ID> { guid hex string } </UNIQUE_ID> (required)
<REQTYPE> { message request type } </REQTYPE> (required)
<USERID> { user ID }</USERID> (optional)
<RESULTQMGR> { remote queue manager } </RESULTQMGR>
(optional)
<RESULTQ> { remote queue name } </RESULTQ> (optional)
<ATTACHMENT TYPE="TEXT or BINARY"> (optional)
<DELIMITER> { tag delimiter } </DELIMITER> (required for ATTACHMENT)
</ATTACHMENT>
</CTLBLOCK>
<MSGVARS> (required)
<VAR NAME="VAR NAME 1"> { MSG VAR CONTENT 1 } </VAR>
<VAR NAME="VAR NAME 2"> { MSG VAR CONTENT 2 } </VAR>
<VAR NAME="VAR NAME 3"> { MSG VAR CONTENT 3 } </VAR>
</MSGVARS>
</DSIMSG>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
MIME headers
... Optional attached text data
... Example: a flat text extract file
... Example: an XML data file
... Example: a base64 (MIME) text encoded binary file
MIME headers
164
Using the XML Messaging System
Without attachments
Please note:
• The essential component of the message format is the DSIMSG structure, which is encoded inside SOAP-ENV envelope and body structures.
• The indentation of the elements is intended to make it easier to read. Actual messages are not indented.)
• The message can contain attached files. Attached files are encoded inside a tagged structure outside the SOAP-ENV structure. Note that once tagged outside of the primary structure in this fashion, the message file itself is no longer well-formed
XML and cannot be viewed with some XML viewers. While it is not well-formed
XML, it is a valid SOAP with attachments format.
The DSI system manages the separation of the attached files from the message. Each
ATTACHMENT structure describes the controlling attributes of the attached files.
The TYPE attribute specifies the type and format of the attached file, either as TEXT
(the default) or
BINARY
(MIME format). The DELIMETER element specifies a unique tag name, which is required to be inside the beginning and ending tag brackets to delimit the file data.
• Request and response messages have identical formats. The current specification does not require a distinction between requests sent by the client and responses returned by the server.
• The client initiating the request generates the UNIQUE_ID. The server echoes the same unique identifier in the response.
• The type of request is identified by the REQTYPE element. Client and server applications must understand and agree on the identifier for the request, the nature of the work to be performed as a result, and the response to be generated.
• The RESULTQMGR and RESULTQ elements are optional, but will appear based on certain types of queue configurations.
• The MSGVARS structure provides the DSI attachment variables which would previously have been encoded using the DSIAddAttachVar rule in the IDS SDK.
Client Request Messages
Here are several example client request messages in XML format:
Here is an example of a client request message in XML format which does not include attachments
Content-Type: text/xml
Content-Transfer-Encoding: 8bit
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/ envelope">
<SOAP-ENV:Body>
<DSIMSG VERSION="100.017.0">
<CTLBLOCK>
<UNIQUE_ID>a9ae6c91-1d1b-11d2-b21a-00c04fa357fa</UNIQUE_ID>
<REQTYPE>CLAIMS DATA</REQTYPE>
<USERID>JOHN DOE</USERID>
165
Chapter 2
Using the Internet Document Server
With attachments
</CTLBLOCK>
<MSGVARS>
<VAR NAME="CONFIG">FFIC</VAR>
<VAR NAME="KEY1">AUTO BI/UM</VAR>
<VAR NAME="KEY2">CONTACT</VAR>
<VAR NAME="KEYID">123 98 678245</VAR>
<VAR NAME="RUNDATE">20010908</VAR>
<VAR NAME="USERID">JOHN DOE</VAR>
</MSGVARS>
</DSIMSG>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Here is an example of a client request message in XML format which does include attachments:
Content-Type: multipart/related; boundary=IDSMessage
--IDSMessage
Content-Type: text/xml
Content-Transfer-Encoding: 8bit
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/ envelope">
<SOAP-ENV:Body>
<DSIMSG VERSION="100.017.0">
<CTLBLOCK>
<UNIQUE_ID>a9ae6c91-1d1b-11d2-b21a-00c04fa357fa</UNIQUE_ID>
<REQTYPE>CLAIMS DATA</REQTYPE>
<USERID>JOHN DOE</USERID>
<ATTACHMENT>
<DELIMITER>CLAIMS-DATA</DELIMITER>
</ATTACHMENT>
</CTLBLOCK>
<MSGVARS>
<VAR NAME="CONFIG">FFIC</VAR>
<VAR NAME="KEY1">AUTO BI/UM</VAR>
<VAR NAME="KEY2">CONTACT</VAR>
<VAR NAME="KEYID">123 98 678245</VAR>
<VAR NAME="RUNDATE">20010908</VAR>
<VAR NAME="USERID">JOHN DOE</VAR>
</MSGVARS>
</DSIMSG>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
--IDSMessage
Content-Type: application/ids
Content-Transfer-Encoding: 7bit
Content-ID: CLAIMS-DATA
{…data in a structured COBOL record appears here …}
--IDSMessage--
166
Using the XML Messaging System
With multiple attachments
Please note:
• The client initiates the request and generates the UNIQUE_ID. The server echoes back the same unique identifier in the response.
• The MSGVAR structure in this example provides the key fields necessary to access the claims data and create the exported data to be delivered to the client. A server application can receive more variables than are needed and should be set up to ignore those not applicable.
• The ATTACHMENT structure provides the delimiter element, which is used to specify the delimiting string pattern that frames a data record passed as an attached file as a part of the message.
Here is an example of a client request message in XML format which has multiple attachments:
Content-Type: multipart/related; boundary=IDSMessage
(Please note that this new line must be included.)
--IDSMessage
Content-Type: text/xml
Content-Transfer-Encoding: 8bit
(Please note that this new line must be included.)
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/ envelope">
<SOAP-ENV:Body>
<DSIMSG VERSION="100.017.0">
<CTLBLOCK>
<UNIQUE_ID>a9ae6c91-1d1b-11d2-b21a-00c04fa357fa</UNIQUE_ID>
<REQTYPE>CLAIMS DATA</REQTYPE>
<USERID>JOHN DOE</USERID>
<ATTACHMENT>
<DELIMITER>CLAIMS-DATA</DELIMITER>
</ATTACHMENT>
<ATTACHMENT TYPE="BINARY">
<DELIMITER>CLAIMS-BINARY</DELIMITER>
</ATTACHMENT>
</CTLBLOCK>
<MSGVARS>
<VAR NAME="CONFIG">FFIC</VAR>
<VAR NAME="KEY1">AUTO BI/UM</VAR>
<VAR NAME="KEY2">CONTACT</VAR>
<VAR NAME="KEYID">123 98 678245</VAR>
<VAR NAME="RUNDATE">20010908</VAR>
<VAR NAME="USERID">JOHN DOE</VAR>
</MSGVARS>
</DSIMSG>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
(Please note that this new line must be included.)
--IDSMessage
Content-Type: application/ids
Content-Transfer-Encoding: 7bit
Content-ID: CLAIMS-DATA
{…data in a structured COBOL record appears here …}
167
Chapter 2
Using the Internet Document Server
--IDSMessage
Content-Type: application/ids
Content-Transfer-Encoding: base64
Content-ID: CLAIMS-BINARY
(Please note that this new line must be included.)
{…data in a base64 encoding form appears here …}
--IDSMessage--
Server XML Response Messages
Here is an example of the XML response message from the server:
Content-Type: multipart/related; boundary=IDSMessage
(Please note that this new line must be included.)
--IDSMessage
Content-Type: text/xml
Content-Transfer-Encoding: 8bit
(Please note that this new line must be included.)
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/ envelope">
<SOAP-ENV:Body>
<DSIMSG>
<CTLBLOCK>
<UNIQUE_ID>a9ae6c91-1d1b-11d2-b21a-00c04fa357fa</UNIQUE_ID>
<REQTYPE>CLAIMS DATA</REQTYPE>
<USERID>JOHN DOE</USERID>
<ATTACHMENT>
<DELIMITER>DOCC-XML</DELIMITER>
</ATTACHMENT>
</CTLBLOCK>
<MSGVARS>
<VAR NAME="RESULTS">SUCCESS</VAR>
</MSGVARS>
</DSIMSG>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
(Please note that this new line must be included.)
--IDSMessage
Content-Type: application/ids
Content-Transfer-Encoding: 7bit
Content-ID: DOCC-XML
(Please note that this new line must be included.)
<?xml version="1.0" encoding="UTF-8"?>
<DOCUMENT TYPE="RPWIP" VERSION="10.1">
<DOCSET>
<GROUP NAME1="AUTO BI/UM" NAME2="CONTACT">
<FORM NAME="DEC PAGE">
<DESCRIPTION>Common Policy Declarations</DESCRIPTION>
<RECIPIENT NAME="AGENT" COPYCOUNT="1"/>
<RECIPIENT NAME="HOME OFFICE" COPYCOUNT="1"/>
<RECIPIENT NAME="INSURED" COPYCOUNT="1"/>
<SHEET>
168
Using the XML Messaging System
<PAGE>
<SECTION NAME="CPDEC~1">
<FIELD NAME="DELIVERY">DELIVERY NOTE</FIELD>
<FIELD NAME="ON_ARRIVAL">ON ARRIVAL NOTE</FIELD>
<FIELD NAME="CLAIMANT_NAME">SUSAN FRIEDEN</FIELD>
<FIELD NAME="CLAIMANT_ADDRESS">ADDRESS HERE</FIELD>
<FIELD NAME="POLICY_NUMBER">POLICY NUM 22222</FIELD>
<FIELD NAME="SALUTATION">SALUTATION FIELD</FIELD>
<FIELD NAME="INSURING_COMPANY">INSURING COMPANY N</FIELD>
<FIELD NAME="TAG_LINE">TAG LINE FOR THE IN</FIELD>
</SECTION>
</PAGE>
</SHEET>
</FORM>
</GROUP>
</DOCSET>
</DOCUMENT>
--IDSMessage--
Please note:
• The client generated UNIQUE_ID is echoed back in the response.
• The ATTACHMENT structure specifies the delimiter for the embedded XML export file. In this example, the file is called DOCC-XML.
• The MSGVAR structure specifies the returned attachment variables, which include the results from the requested operation, returned in the variable named RESULTS.
In this example, the result is SUCCESS. If there is an error, the result is an error code and, typically, no XML export data is included.
• If you are transmitting messages between dissimilar platforms, say an EBCIDIC platform such as an MVS-based server application which is submitting messages to an ASCII platform such as a PC, you must set the message format attribute in the message descriptor to string (text). This lets the MQ Series channel sender/receiver perform the EBCDIC-to-ASCII translation. Likewise, the QSRLIB layer of the
Oracle system sets the request message format to string so the ASCII-to-EBCDIC translation takes place. As a result, client and server applications are able to see the message data in the proper format and do not have to perform the translation themselves.
U
SING
XML SOAP O
UTSIDE OF
M
ESSAGING
S
YSTEMS
Using the DSIGetSOAPMessage and DSIGetSOAPMessageSize functions, you can code
IDS client applications with common APIs using XML DOM of the IDS SOAP XML message. See the SDK Reference for more information on these functions.
These APIs let client applications access the DSI XML message as a buffer in memory.
Access to IDS XML message is provided as a buffer in memory because of possible issues with the version of the DOM or XML parser the client application may be using.
Keep in mind the XML returned is a byte array using UTF-8 encoding.
169
Chapter 2
Using the Internet Document Server
N
OTE
:
The GetSOAPMessage is also available for the COM and Java APIs. (DSICO,
IDSASP and DSIJava).
170
Connecting to an SQL Database
C
ONNECTING TO
AN
SQL
D
ATABASE
IDSSQL is a set of ActiveX
®
DSOs (IDSSQL.DLL and IDSSQLRL.DLL) which you can use as a Microsoft ActiveX Data Objects (ADO) programming model.
These DSOs let you send SQL commands and receive records back from an SQL database. Instead of communicating directly with the database as an object, the IDSSQL
DLLs go through an IDS rule. This illustration shows how it works:
Application
(
Could be a Visual Basic or ASP application
)
IDSSQL.DLL
DSI API
IDS
IDSSQLRL.DLL
SQL
Database
171
Chapter 2
Using the Internet Document Server
Differences between Microsoft’s ADO and IDSSQL
Keep in mind these differences between ADO and IDSSQL:
• IDSSQL does not implement all features of Microsoft’s ADO and record set.
• The connection between IDSSQL and the SQL database automatically opens and closes on each execute.
• The new record insert into the database is made using the SQL insert command instead of the insert and update method in the ADO record set.
• Errors are returned through IDS record sets. So it good to have a record set even if the SQL command did not return any records.
Setting up IDSSQL
Follow these steps to set up IDSSQL:
1
Add these options to your DOCSERV.INI file:
< ReqType:IDSSQL >
Function = atcw32->ATCLoadAttachment
Function = DSICoRul->Invoke,IDSSQLRL.IDS->SQL
Function = atcw32->ATCUnloadAttachment
2
Set up the ODBC Data source name.
IDSSQL C
LASSES
Here are the properties and methods for IDSSQL.ADO and IDSSQL.IDSRC:
IDSSQL.ADO
Here are the properties and methods for IDSSQL.ADO:
Properties
Property
AbsolutePage
CommandTimeOut
DSN
PageSize
Description
The ordinal position of the current page. The default is zero (0).
If zero (0), all records queried by the SQLcommand are returned.
If set to something other than zero, only those records on the page are returned. The number of records on the page are determined by the
PageSize property.
The number of seconds to wait when executing a command before terminating the attempt and returning an error. If you set this property to zero, ADO will simply wait until the execution is complete. The default is 30 seconds.
The ODBC data source name or the information used to create a connection to data source.
The number of records on a page. The default is 10.
172
Connecting to an SQL Database
Property
Password
SQLCommand
User
Description
The password used to connect to the database. A password is required if the DSN connection is not a trusted SQL Server connection.
The SQL statement.
The user ID used to connect to the database. The user ID is required if the DSN connection is not a trusted SQL Server connection.
Methods
Method
Execute
Description
Process SQL command.
Returns the record set requested by SQLCommand.
IDSSQL.IDSRC
Here are the properties and methods for IDSSQL.IDSRC, the IDS record set.
Properties
Property
BOF
EOF
Errors
Field
Fields
RecordCount
Description
True if the current record position is before the first record.
True if the current record position is after the last record.
Errors collection.
Each field of the current record.
Fields information collection.
The number of records currently in the record set.
Methods
Method
MoveFirst
MoveLast
MoveNext
MovePrevious
Description
Move to the first record in the record set and make that the current record.
Move to the last record in the record set and make that the current record.
Move to the next record in the record set and make that the current record.
Move to the previous record in the record set and makes that the current record.
E
XAMPLE
S
CRIPT
Here is an example in ASP:
<%@ Language=VBScript %>
<HTML>
<HEAD>
173
Chapter 2
Using the Internet Document Server
Fields
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%
CrLf = Chr(13) & Chr(10) set sql = Server.CreateObject("idssql.ado") 'Create IDS ADO Object set rc = Server.CreateObject("idssql.idsrc") 'Create IDS record set
ShowAllActivateAccount()
Sub ShowAllActivateAccount() sql.DSN = "COB_TEST"'ODBC Data source name sql.SQLCommand = "Select * from subscriberdata where ebppstatus =
'A'"
Set rc = sql.Execute()‘Execute Command
If rc.Errors.Count <> 0 Then‘Check for error
Response.write "Error source = " & rc.Errors(1).Source & "<BR>"
Response.write "Error Description = " & rc.Errors(1).Description
& "<BR>"
Else
%>
<TABLE BORDER=1>
<TR>
<TH>RC#</TH>
<TH>Account#</TH>
<TH>Name</TH>
</TR>
<%
‘Loop through all the return records and display the fields
For i = 1 To rc.RecordCount
Response.write "<TR>" & Crlf
Response.write "<TD>" & i & "</TD>"
Response.Write "<TD>" & rc.Field("Accountnumber") & "</TD>"
Response.Write "<TD>" & rc.Field("SubscriberFirstName") & " "
Response.Write rc.Field("SubscriberMiddleName") & " "
Response.Write rc.Field("SubscriberLastName") & " "
Response.Write "</TD>" & Crlf
Response.write "</TR>" & Crlf
Next rc.MoveNext ‘Move to next record
%>
</TABLE>
<%
End If
End Sub
%>
<P> </P>
</BODY>
</HTML>
Here is an example of how you can access the name and data in the field of each record:
174
Connecting to an SQL Database
set
For i = 1 To rc.RecordCount
‘Loop through all return record
Response.Write "========="
Response.Write "Record " & i
Response.Write "========="
For j = 1 To rc.Fields.Count‘Loop through all the fields in that record
Response.Write rc.Fields(j) & ":" ‘Display field name
Response.Write rc.Field(j)‘Display data in the field
Next
Next
You can access the data in the field using the name or index, such as:
Rc.Field(1) or Rc.Field(“SubscriberID”)
175
Chapter 2
Using the Internet Document Server
U
SING THE
T
HIN
C
LIENT
F
ORMS
P
UBLISHER
The Thin Client Forms Publisher lets web clients enter a user ID, password, and other information at login. Depending on how you set it up, IDS then returns a list of group1/ group2 combinations for the form set.
The web client can then choose a group1/group2 combination and submit it to IDS along with an effective date. The DPRSetConfig rule sets the effective date for use with Library
Manager.
IDS then returns a new XML form set (through the result queue) based on the group1/ group2 submittal. The Thin Client Forms Publisher loads the XML form set returned by
IDS and generates an HTML tree view.
The web client can then select the forms, images, recipients, and print options and submit a request to print the form set. Once submitted, the Thin Client Forms Publisher generates a new XML form set and sends it to IDS.
IDS retrieves the new XML form set, converts it into a FAP form set and prints it. IDS then sends the final output file to the Thin Client Forms Publisher through the queues.
The Thin Client Forms Publisher supports these print options: PDF, XML, PCL, AFP,
MET, and HTML.
Look at these examples for more information:
Example
/formpub
Uses
dp018.dll which you can use on Windows 2000 without IDS DLL files
/formpubnt idsasp.dll for standard messaging and dp018.dll for XML processing
These virtual directories are included in the IDS sample resources. Use FORMAKER for the user ID and password when viewing the examples.
176
Pausing IDS
P
AUSING
IDS
When necessary, you can pause IDS processing and then restart it. For instance, suppose you are running a system with multiple instances of IDS, each running its own
Documanage Bridge, with each Documanage Bridge logging into a separate Documanage system.
In this scenario, you want IDS to become passive (stop processing requests) when the
Documanage system becomes unavailable and to become active again when the
Documanage system becomes available again.
This fail-over strategy avoids situations where IDS is processing requests which are failing because the bridge is having a problem with Documanage server.
To handle this scenario, you use a C or Java DSI API. This API lets a rule request that
IDS go into pause mode. While in pause mode IDS will not receive requests from a queue and will execute only one request type PAUSE. The frequency of this request is defined using this option in the configuration file:
<section name="BusinessLogicProcessor">
....
<section name="messaging">
<section name="timed">
<entry name="PauseCheckIntervalSeconds">10</entry>
</section>
The entry PauseCheckIntervalSeconds is the interval that IDS will send PAUSE requests to itself when it is paused.
The Documanage Bridge calls the API and places IDS in pause mode when Documanage server becomes unavailable. The rule registered on the PAUSE request type checks to see if the Documanage server is available calls an API to resume the IDS operation.
You use these DSI APIs:
DSIQueryStatus
This API returns DSI specific status options via DSISTATUS_* flags. Use it to determine if IDS is in a paused mode. Here is a list of the available flags:
Flag
DSISTATUS_PAUSE
DSISTATUS_STOP
Description
Pause the server
Stop the server and exit the process
DSISTATUS_RESTART Restart the server
DSISTATUS_RESUME Resume the server after a pause
Syntax
N
OTE
:
Setting the status to DSISTATUS_STOP is non-recoverable action. Once the server exits, no other actions are possible.
DSIQueryStatus()
177
Chapter 2
Using the Internet Document Server
Returns
Errors
Parameter
hdsi plOptions
Description
handle to instance returned by DSIInitInstance pointer to a long for returning the DSISTATUS_* values.
DSIERR_SUCCESS or an error code.
Example
Message Description
DSIERR_INVPARM Invalid DSI instance handle or plOptions is NULL
DSIERR_INTERNAL Internal error
Here is an example: long lOpt; if ( DSIQueryStatus(hInstance,&lOpt) != DSIERR_SUCCESS ) {
... display error message
} if ( lOpt & DSISTATUS_PAUSE )
{ printf("Server is currently paused\n");
} if ( lOpt & DSISTATUS_STOP )
{ printf("Server is currently stopping\n");
}
DSISetStatus
This API sets DSI specific status options via DSISTATUS_* flags. Use it to pause IDS.
Here is a list of the available flags:
Flag
DSISTATUS_PAUSE
Description
Pause the server
DSISTATUS_STOP Stop the server and exit the process
DSISTATUS_RESTART Restart the server
DSISTATUS_RESUME Resume the server after a pause
N
OTE
:
Setting the status to DSISTATUS_STOP is non-recoverable action. Once the server exits, no other actions are possible.
Syntax
DSISetStatus()
178
Pausing IDS
Parameter
hdsi plOptions
Description
handle to instance returned by DSIInitInstance pointer to a long for returning the DSISTATUS_* values.
DSIERR_SUCCESS or an error code.
Return values
Errors
Example
Message
DSIERR_INVPARM
DSIERR_INTERNAL
Description
Invalid DSI instance handle
Internal error
Here is an example: if ( DSISetStatus(hInstance,DSISTATUS_PAUSE) != DSIERR_SUCCESS ) {
... display error message
} printf("Server is currently paused\n")
When running a Java rule, the RequestState parameter has methods for pausing and resuming IDS as well as to check to see if it is currently paused.
Method
isRequestProcessorPaused pauseRequestProcessor resumeRequestProcessor
Description
Returns true if IDS is currently paused, false otherwise.
Tells IDS to pause and stop processing requests from queues and so on.
Tells IDS to resume processing requests from queues and so on.
179
Chapter 2
Using the Internet Document Server
R
AT
E
XECUTING
EQUEST
T
YPES
R
UN
T
IME
Example configuration file
Example data file
Example dynamic.htm
page
IDS lets you execute request types composed at run time. Client programs can specify their own XML configuration file with a set of request types to process. Multiple client programs can have request types with the same name but with a different set of rules to run. Request types no longer have to be present in the IDS configuration file.
To execute request types at run time, specify an attachment variable named DYNAMIC-
CONFIGURATION-FILE with a full path and file name for a configuration file accessible to IDS.
Here is an example:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<section name="ReqType:POC-RUNRP-HTM">
<entry name="function">atcw32->ATCLoadAttachment</entry>
<entry name="function">atcw32->ATCUnloadAttachment</entry>
<entry name="function">atcw32->ATCSendFile,
RPOUTPUT,INSURED,BINARY</entry>
<entry name="function">atcw32->ATCReceiveFile,
EXTRACTFILE,EXTRFILE,c:\docserv\data\*.xml,KEEP</entry>
<entry name="function">dprw32->DPRSetConfig</entry>
<entry name="function">RPDW32->RPDCheckRPRun</entry>
<entry name="function">RPDW32->RPDCreateJob</entry>
<entry name="function">RPDW32->RPDProcessJob</entry>
</section>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<message>
<data>
<var name="CONFIG">POC</var>
<var name="BATCHFILES">3</var>
<var name="INIOptions">1</var>
<var name="INIOptions1.Group">Printer</var>
<var name="INIOptions1.Option">PrtType</var>
<var name="INIOptions1.Value">HTM</var>
<var name="OUTPUTTYPE">HTM</var>
<var name="PRINTBATCHES">3</var>
<var name="SHOWERRORS">YES</var>
<var name="REQTYPE">POC-RUNRP-HTM</var>
<var name="DYNAMIC-CONFIGURATION-FILE">c:\docserv\runrp-poc-htmconfig.xml</var>
</data>
<attachments>
<file name="EXTRACTFILE">C:\msgclient\extract\poc.xml</file>
</attachments>
</message>
<html>
<head>
<h2>dynamic config test</h2>
<body>
<form action="dynamic2.asp" enctype="multipart/form-data" method="post">
<table>
<tr>
<td>*Enter an xml message with name/value pairs to process</td>
180
Executing Request Types at Run Time
Example dynamic.asp
page
<td><a href="data.xml">example</a></td><td><input name="xmlmessage" type="file"/></td>
</tr>
</table>
<input type="submit" name="" value="submit">
</form>
<%
set parser = server.CreateObject("IDSASP.DSI")
parser.parseData()
message = parser.getBuffer("xml-message")
'***process the message file
processMessageFile message
parser.showAtt = 1
parser.ProcessRq
function processMessageFile(buffer)
set xml = Server.CreateObject("MSXML2.DOMDocument.4.0")
xml.loadxml(buffer)
set msgVars = xml.selectNodes("message/data/var")
for each var in msgVars
name = var.getAttribute("name")
value = var.text
parser.addReq name, value
next
set Attachments = xml.selectNodes("message/attachments/file")
for each attach in Attachments
name = attach.getAttribute("name")
value = attach.text
parser.SendFile name, value
next
end function
%>
181
Chapter 2
Using the Internet Document Server
P
UBLISHING
Y
OUR
F
ORMS
ON THE
W
EB
The system provides tools you can use to create one HTML file and a number of PDF files (one per FAP file). You can then publish these HTML and PDF files on your web server.
The HTML file lists all of the company, line of business (LOB), form, and section combinations. This file has links to PDF files which are created for each image.
To publish your form library, you have to put these HTML and PDF files in a web server contents directory. Once you have the HTML and PDF files in a contents directory, you can use your browser to open the HTML page and view the images.
N
OTE
:
The one PDF file per image concept does not work well in an environment which has a lot of small images. This concept works better with full page FAP files.
Use the following tools to publish your forms on the web:
• FORMPUB - This program provides a graphical interface from which you can run the FD2HTW32 and PTFMDW32 utilities.
• FD2HTW32 - This utility converts a FORM.DAT file into an HTML page. You can run this utility as a stand-alone program or from the FORMPUB tool.
• PTFMDW32 - This utility creates a PDF file for each FAP file defined in the
FORM.DAT file. You can run this utility as a stand-alone program or from the
FORMPUB tool.
• FAP2HTML - This utility lets you convert FAP files into HTML format for use with iPPS as data entry screens.
N
OTE
:
For more information about these utilities, see the Utilities Reference.
182
Formatting Text with XML Markup
F
ORMATTING
T
EXT WITH
XML M
ARKUP
iPPS and other Documaker clients can format multiline text fields in XML files. The XML import loader and export unloader, which are the same for Documaker and IDS, support these formatting attributes:
Italic: <I>
Bold: <B>
Underline: <U>
Font <FONT>
Attributes:
SIZE=99 (point size)
FACE=(font family name)
COLOR=(hex color value, such as #FFFFFF)
Paragraph: <P> or <BR>
Attributes: ALIGN="CENTER" or "RIGHT"
If you omit the alignment, the system left justifies the text. Empty paragraphs use a
<
BR
> element instead of
<
P
>
.
Here is an example multiline field input or output XML:
<P ALIGHN="CENTER">
<FONT SIZE="15" FACE="Universal"><B>This is bold 15 points size font</B></FONT>
<FONT SIZE="10" FACE="Universal"><I><U>This is italic size 10 point font with underline</U></I></FONT>
</P>
If the font does not exist, the font locator looks for the best match based on font family name, point size, style, and weight.
If you omit the font information from the import file, the system uses the default font for the text area.
183
Chapter 2
Using the Internet Document Server
E
NCRYPTING
AND
D
ECRYPTING
D
ATA
F
ILES
IDS includes a utility you can use to encrypt and decrypt data files. The program is a Java class in the DocuCorpUtil.jar library. To run it, enter a command similar to the one shown here: java -cp DocuCorpUtil.jar com.docucorp.util.DataCrypt
Here is a summary of the parameters:
Parameter Description
-i Treat the text argument as a file name instead of text to encrypt/decrypt.
text
-u
The text to encrypt/unencrypt or the name of a file if the -i parameter is included.
The input file is overwritten with the new information.
Include this parameter if you want to decrypt the text or file instead of encrypting it. Encrypting is the default behavior for this utility.
If you omit all of the parameters, a usage message appears.
N
OTE
:
For more information about this utility, see the Utilities Reference.
184
Using Multiple Attachment Values with the Same Name
U
SING
M
ULTIPLE
A
TTACHMENT
V
ALUES WITH
THE
S
AME
N
AME
IDSASP and IDSJSP let you send and receive messages with multiple attachment variables which have the same name. To enable support for multiple attachment variables, set the ProcessAll property to True at the beginning of an ASP or JSP page See the example pages below.
In ASP you can simply traverse through the Request and Result collections as before to retrieve all entries for a message. In JSP you can use the getEntries() API to return a list of MsgVarEntry objects.
Here is an example ASP page:
<%
set dsi = server.createobject("IDSASP.DSI")
dsi.ProcessAll = True
dsi.addReq "USERID", "DOCUCORP"
dsi.addReq "USERID", "FORMAKER"
dsi.addReq "USERID", "DEMO1"
dsi.addReq "USERID", "DEMO"
dsi.addReq "PASSWORD", "P1"
dsi.addReq "PASSWORD", "P2"
dsi.addReq "REQTYPE", "TEST_MVARS"
For I = 1 To dsi.Request.count
Response.Write "Request " & I & ": "
Response.Write dsi.Request(i).NAME & " = " & dsi.Request(i).Value
Response.Write "<BR>"
Next
dsi.processRq
For I = 1 To dsi.Result.count
Response.Write "Result " & I & ": "
Response.Write dsi.Result(i).NAME & " = " & dsi.Result(i).Value
Response.Write "<BR>"
Next
%>
185
Chapter 2
Using the Internet Document Server
Here is an example JSP page:
<%@ page language="java" import="java.util.*,
java.net.*,
java.io.*,
com.docucorp.messaging.data.*" %>
<jsp:useBean id='dsi' scope='page' class='com.docucorp.ids.jsp.dsi'/
>
<%
int _OUTPUTQUEUE = 1;
int _INPUTQUEUE = 2;
List entries = null;
dsi.setTimeout(30000);
//dsi.debugOn(response);
dsi.ProcessAll = true;
dsi.addRequest("USERID", "DOCUCORP");
dsi.addRequest("USERID", "FORMAKER");
dsi.addRequest("USERID", "DEMO1");
dsi.addRequest("USERID", "DEMO");
dsi.addRequest("PASSWORD", "P1");
dsi.addRequest("PASSWORD", "P2");
dsi.addRequest("REQTYPE", "TEST_MVARS");
entries = dsi.getEntries(_OUTPUTQUEUE);
for (int I =0; I <entries.size(); i++){
String k = MsgVarEntry.getName(entries, i);
String v = MsgVarEntry.getValue(entries, i);
out.println("Request: " + k + "=" + v + "<br>");
}
dsi.ProcessRequest();
entries = dsi.getEntries(_INPUTQUEUE);
for (int I =0; I <entries.size(); i++){
String k = MsgVarEntry.getName(entries, i);
String v = MsgVarEntry.getValue(entries, i);
out.println("Response: " + k + "=" + v + "<br>");
}
%>
186
Using Multiple Attachment Values with the Same Name
getEntries
Use this API to return a list of MsgVarEntry objects. Each MsgVarEntry object contains a name and value property.
Parameters
Returns
Parameter Description
queue An integer value that indicates which queue the entries should be returned for: 1
= Output queue, 2 = Input queue.
A list of MsgVarEntry objects (see the JSP example page).
187
Chapter 2
Using the Internet Document Server
C
ONVERTING
XML F
ILES
U
SING A
T
EMPLATE
You can use the XsltTransformRule rule to transform input into the desired output based on an xsl template. For instance, you can transform an XML extract file located using the
EXTRFILE input attachment variable into a new output file or a set of XML files located in the path specified by the XMLPATH input attachment variable, appending the results from each one to the end of the file. You can also transform a single XML file located by the XMLFILE or SOURCE input attachment variables.
This rule can also transform the result XML message in the queue. The output depends on the xsl template provided.
This rule takes an argument of name RUNMSG which can have a value of 1-4 to specify whether the rule should be run in the INIT (1), TERM (2), RUNF (3), or RUNR (4) message. The default is RUNF (3) message if no RUNMSG argument is specified. This is useful when the rule that outputs the XML source does not run in the default RUNF message.
This rule also supports transformations with XSL parameters.
Variable
XMLPATH
EXTRFILE
XMLFILE
Description
(Optional) Specifies a path for multiple XML source files to be processed. The rule appends the transformation output for each source file to the end of the output file.
(Optional) Specifies the full path and name of the XML extract file to be transformed. If this variable is present, the rule transforms the extract file and replaces the EXTRFILE input attachment variable with the value of the new output file.
(Optional) Specifies the full path and name of an XML file to use as the source of the transformation.
XSLTFILE
PRINTPATH
OUTFILE
DOCTYPE
Specifies the full path and name of the xsl template to use for the transformation.
(Optional) Specifies the path where the output file will be written.
(Optional) Specifies the output file name. If this variable is missing the rule generates a unique file name for the output file.
(Optional) Specifies the extension and file type of the output file. The default is .dat.
XSLPARAMETERS (Optional) An XML rowset which contains the name/value pairs for parameters to use in the xsl transformation.
OUTPUTVAR (Optional) Defines the name of an additional attachment variable that holds the full path and name of the output file.
This is useful when running other rules after this rule that expect an attachment variable with a name other than the default of
XSLOUTPUT.
188
Converting XML Files Using a Template
Variable
SOURCE
Description
(Optional) Defines the name of an attachment variable in the output message that contains the full path and name of the XML source to be used for the transformation.
This is useful when running other rules prior to this rule which might output the XML source that needs to be transformed to a variable other than the expected variables (XMLFILE or EXTRFILE).
In addition, you can use this variable to indicate the source for the transformation should be the output XML message in the result queue instead of an XML file — set SOURCE equal to the value of RESULT in this case.
Here is an example of a request message:
<MSGVARS>
<VAR NAME="doctype">htm</VAR>
<VAR NAME="REQTYPE">TRANSFORM2</VAR>
<VAR NAME="SOURCE">RESULT</VAR>
<VAR NAME="XSLTFILE">X:\\XSL\transform1.xsl</VAR>
<VAR NAME="XVALUE">2</VAR>
<ROWSET NAME="XSLPARAMETERS">
<ROW NUM="1">
<VAR NAME="y">2</VAR>
<VAR NAME="x">LOOKUPVAR.XVALUE</VAR>
</ROW>
</ROWSET>
</MSGVARS>
In addition, each row of parameters for a transformation can contain a value of the format:
LOOKUPVAR.ATTACHVARNAME
Where ATTACHVARNAME is the name of an attachment variable in the output message. The rule then retrieves the value for the ATTACHVARNAME variable and uses it as the value for the parameter in the transformation. This is useful when you do not know the value of a parameter until run-time.
Here are example request types for the DOCSERV.INI file used in IDS 1.8:
[REQTYPE:TRANSFORM] function = atcw32->ATCLogTransaction function = atcw32->ATCLoadAttachment function = atcw32->ATCUnloadAttachment function = dsijrule->JavaRunRule,;com/docucorp/ids/rules/
XsltTransformRule;XSLTTRANSFORMER;transaction;transform; function = dprw32->DPRSetConfig function = atcw32->ATCSendFile,XSLOUTPUT,XSLOUTPUT,BINARY function = irlw32->IRLCopyAttachment
Here is a sample JSP page:
<%@ page language="java" import="java.util.,
java.net.,
java.io." %>
<jsp:useBean id='dsi' scope='page' class='com.docucorp.ids.jsp.dsimsg'/>
189
Chapter 2
Using the Internet Document Server
<%
dsi.setTimeOut(30000);
dsi.debug_on(response); dsi.addRequest("REQTYPE", "TRANSFORM"); dsi.addRequest("XMLFILE", "X:\\input\\data.xml"); dsi.addRequest("XSLTFILE", "X:\\XSL\\transform1.xsl"); dsi.addRequest("doctype", "htm");
String record = "XSLPARAMETERS";
String rec = dsi.addAttachRec(record);
if (rec != null){
dsi.addToAttachRec(rec, "x", "1");
dsi.addToAttachRec(rec, "y", "1");
} dsi.processRequest(); byte buf[] = dsi.receiveFileAsBuffer("XSLOUTPUT");
if (buf != null){
out.println(new String(buf));
}
%>
Here is a sample ASP page:
<%@ Language=VBScript %>
<%
Set DSI = server.CreateObject("IDSASP.DSI")
DSI.clearReq
DSI.WaitTime = 250 ' Polling interval
DSI.Timeout = 1000000
DSI.ShowAtt = 1
DSI.AddReq "REQTYPE", "TRANSFORM"
DSI.AddReq "XMLFILE", "X:\\input\\data.xml"
DSI.AddReq "XSLTFILE", "X:\\XSL\transform1.xsl"
DSI.AddReq "doctype", "htm"
record = DSI.AddAttachRec("XSLPARAMETERS")
DSI.AddToAttachRec record, "x", "1"
DSI.AddToAttachRec record, "y", "2"
'On Error Resume Next
DSI.ProcessRq
'If Err <> 0 then
'Err.Clear
190
Converting XML Files Using a Template
'End if
result = DSI.Result("RESULTS").Value
Set DSI = Nothing
Response.Write("result: " & result & "<br>")
Response.End
%>
191
Chapter 2
Using the Internet Document Server
C
USTOMIZING
Y
OUR
S
YSTEM
IDS includes several bridges and example applications. These applications typically include windows or dialogs based on HTML and either JSP or ASP. Some dialogs present query result sets for subsequent user selection. The result sets are typically returned as attachment variables, accessible via DSI (or DSICo) API calls. Custom rules and request types can create other query results, and custom HTML dialogs and scripts can implement custom user dialog presentations of the information.
IDS version 1.7 enhanced the internal message format to an XML format based on evolving SOAP standards. You can use this XML format and bypass the DSI API layer, or you can continue to use the DSI APIs.
To help you build alternative dialogs to replace the standard dialogs in the bridges and applications and create new dialogs for other custom applications, the system returns query result sets as structured data in XML format.
The system creates elements inside the
<
DSIMSG
>
structure to contain the results of a search as descendants
<
ROWSET
>
tag. Each record (ROW) in the result set is stored in a
<
ROW
>
XML element, as a child of the
<
ROWSET
>
element. Please see the following example.
For many situations, you can use a non-hierarchical (single level) SQL-like ROW to represent hierarchically structured data by flattening the columns into a single ROW. If, however, the resulting XML needs the multilevel hierarchy, send the XML as an attachment. For example, if a result set represented a Documaker form set (a list of available forms and images), this could be returned as an Oracle standard XML file attached to the message.
You can use DSI C APIs, Java, and COM to manipulate the XML result set. Java and VB return the XML from the
<
ROWSET
>
element as a string to be loaded into a DOM object by the client. The main reason the row set is returned as XML string or buffer and not as a DOM object is the versioning of DOM objects and XML parsers—IDS does not know what parser and what DOM object will be used by the client application. The C
APIs will allow the calling application to get first/next values from a ROWSET, including the name, instance number, data value, and so on.
The existing APIs that access the attachment variables by their old concatenated names still work for backward compatibility, so you do not have to change existing client code unless you want to take advantage of the newer methods.
The results of SSS (server statistics request) are shown in the example below in SOAP-
XML format, using both the original and the newer XML message layout for the result set. The number of rows in the LIBRARIES row set is reduced to two for a smaller sample.
Here is an example of the original XML layout:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/ envelope">
<SOAP-ENV:Body>
<DSIMSG VERSION="100.018.0">
<CTLBLOCK>
<UNIQUE_ID>4C6482AC643F4B91A9EA347977B8E186</UNIQUE_ID>
<REQTYPE>SSS</REQTYPE>
<USERID>DSICoTB</USERID>
<RESULTQMGR>vaf.atl3nt03</RESULTQMGR>
192
Customizing Your System
</CTLBLOCK>
<MSGVARS>
<VAR NAME="ALLOCCOUNT">5750</VAR>
<VAR NAME="ERRORCOUNT">1</VAR>
<VAR NAME="FREECOUNT">2828</VAR>
<VAR NAME="LASTRESTART">Tue Jul 02 09:49:07 2002</VAR>
<VAR NAME="LIBRARIES">2</VAR>
<VAR NAME="LIBRARIES1.DATE">Jul 1 2002</VAR>
<VAR NAME="LIBRARIES1.NAME">ATC</VAR>
<VAR NAME="LIBRARIES1.TIME">07:40:37</VAR>
<VAR NAME="LIBRARIES1.VERSION">100.018.001</VAR>
<VAR NAME="LIBRARIES2.DATE">Jul 1 2002</VAR>
<VAR NAME="LIBRARIES2.NAME">DCB</VAR>
<VAR NAME="LIBRARIES2.TIME">07:35:16</VAR>
<VAR NAME="LIBRARIES2.VERSION">100.018.001</VAR>
<VAR NAME="RESTARTCOUNT">1</VAR>
<VAR NAME="RESULTS">SUCCESS</VAR>
<VAR NAME="SERVERTIMESPENT">0.015</VAR>
<VAR NAME="SUCCESSCOUNT">1</VAR>
<VAR NAME="UPTIME">Tue Jul 02 09:48:59 2002</VAR>
</MSGVARS>
</DSIMSG>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Here is an example of the newer XML layout:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/ envelope">
<SOAP-ENV:Body>
<DSIMSG VERSION="100.018.0">
<CTLBLOCK>
<UNIQUE_ID>4C6482AC643F4B91A9EA347977B8E186</UNIQUE_ID>
<REQTYPE>SSS</REQTYPE>
<USERID>DSICoTB</USERID>
<RESULTQMGR>vaf.atl3nt03</RESULTQMGR>
</CTLBLOCK>
<MSGVARS>
<VAR NAME="ALLOCCOUNT">5750</VAR>
<VAR NAME="ERRORCOUNT">1</VAR>
<VAR NAME="FREECOUNT">2828</VAR>
<VAR NAME="LASTRESTART">Tue Jul 02 09:49:07 2002</VAR>
<ROWSET NAME="LIBRARIES">
<ROW NUM="1">
<VAR NAME="DATE">Jul 1 2002</VAR>
<VAR NAME="NAME">ATC</VAR>
<VAR NAME="TIME">07:40:37</VAR>
<VAR NAME="VERSION">100.018.001</VAR>
</ROW>
<ROW NUM="2">
<VAR NAME="DATE">Jul 1 2002</VAR>
<VAR NAME="NAME">DCB</VAR>
<VAR NAME="TIME">07:35:16</VAR>
<VAR NAME="VERSION">100.018.001</VAR>
</ROW>
</ROWSET>
193
Chapter 2
Using the Internet Document Server
<VAR NAME="RESTARTCOUNT">1</VAR>
<VAR NAME="RESULTS">SUCCESS</VAR>
<VAR NAME="SERVERTIMESPENT">0.015</VAR>
<VAR NAME="SUCCESSCOUNT">1</VAR>
<VAR NAME="UPTIME">Tue Jul 02 09:48:59 2002</VAR>
</MSGVARS>
</DSIMSG>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
The sample below corresponds to the row set shown above in the XML layout:
<?xml version="1.0" encoding="UTF-8"?>
<ROWSET NAME="LIBRARIES">
<ROW NUM="1">
<VAR NAME="DATE">Jul 1 2002</VAR>
<VAR NAME="NAME">ATC</VAR>
<VAR NAME="TIME">07:40:37</VAR>
<VAR NAME="VERSION">100.018.001</VAR>
</ROW>
<ROW NUM="2">
<VAR NAME="DATE">Jul 1 2002</VAR>
<VAR NAME="NAME">DCB</VAR>
<VAR NAME="TIME">07:35:16</VAR>
<VAR NAME="VERSION">100.018.001</VAR>
</ROW>
</ROWSET>
You can use these API functions to support row sets:
Function
DSIRowset2XML
Description
Use this rule to get a row set back as XML in memory.
DSIRowset2XMLSize Use this rule to get a size of row set back as XML in memory.
The GetRowsetXML function was also added to COM and Java APIs (DSICO, IDSASP and DSIJava). You can learn more about these functions in the SDK Reference .
194
Handling Security Issues
H
ANDLING
S
ECURITY
I
SSUES
THere are several security issues to consider as you set up the Internet Document Server and build your applications. These include
• Using firewalls
• Implementing security for web applications
U
SING
F
IREWALLS
Typically, you will use the Internet Document Server with some kind of firewall between the web server and the NT server where the Internet Document Server is installed. This lets you give the Internet Document Server access to archives and other sensitive data without permitting the same access to anyone with an Internet connection.
The Internet Document Server (IDS) sample setup included on the installation CD assumes no firewall exists. As you set up the Internet Document Server and your web server with a firewall between the two, keep these points in mind:
• The messaging system can use either WebSphere MQ, JMS, or HTTP. All of these messaging systems communicate with other computers via TCP/IP. The firewall must be configured to open the TCP/IP ports for a messaging system. Read your messaging system's manuals and firewall manuals to find out which ports are used and how to set it up.
• If you are using NT servers, those servers running the Internet Document Server should have TCP/IP networking installed.
• The web server should have an FTP (file transfer protocol) service configured and started.
• File communications from the web server to the Internet Document Server must use
FTP.
• For the FTP rules to work, your TCP/IP networking must be installed on the computer where the Internet Document Server is installed.
• Be sure to configure FTP server access with the appropriate user ID and passwords.
The Internet Document Server includes several rules for use with firewalls, such as the
IRLFileFTP and IRLInitFTP (Windows) or the FTPRule (Windows and UNIX) rules.
For more information on these rules, refer to the SDK Reference .
I
MPLEMENTING
S
ECURITY FOR
W
EB
A
PPLICATIONS
Some ASP customers use the ASP IDS and a web server for hot-key applications. The system builds an URL with, for example, the account number and bill date. When this
URL is executed, it returns a PDF or HTML bill presented in a browser window.
A potential security problem is if the user changes the account number on the URL and retrieve someone else's bill or document. The system, however, can encrypt parts of the
URL to make it more difficult to see someone else's documents.
The COM object DSIEncr lets VB or an ASP page encrypt a value. The ASP syntax is as follows:
<%@ Language=VBScript %>
195
Chapter 2
Using the Internet Document Server
<%
Response.Buffer=True
Set DSI = Server.CreateObject("DSI.DSIEncrypt")
val = "abc"
DSI.Encrypt val
Response.Write "Encrypted: abc as " + val + "<BR>"
DSI.Decrypt val
Response.Write "Decrypted as " + val
Response.End
Set DSI = nothing
%>
The COM object is created by Server.CreateObject() method.
Two methods are available in this COM object, Decrypt and Encrypt. The Decrypt method is provided for testing purposes.
A simple implementation includes an ASP page which encrypts the account number on the URL before redirecting the user to the presentment web site.
Here is a sample URL without the encryption: http://webaddress/present.asp?ACCT_NO=1032714&BILLDATE=20020415
Here is a sample URL with encryption: http://webaddress/ present.asp?ACCT_NO=0zJxWr96vm1ZkniK7Cp0n&BILLDATE=20020415
The result of the encryption is a safe string for the URL so no additional encoding is required. There will be no special characters.
On the IDS side, you can use the DPRDecryptValue rule to decrypt the value before executing a search in the database. Here is an example of how you use this rule: function = dprw32->DPRDecryptValue,ACCT_NO
After this rule is executed on the RUNF message, the ACCT_NO in the attachment is replaced by the real value.
N
OTE
:
The encryption algorithm is proprietary.
196
Using LDAP Support
U
SING
LDAP
S
UPPORT
IDS supports the use of Lightweight Directory Access Protocol (LDAP), an application protocol for querying and modifying directory services running over TCP/IP.
IDS includes an LDAP API for Java. The JAVA DocucorpUtil package includes an
LDAP class which you can use to query an LDAP server for group information for a user.
For more information please see the LDAP.html documentation that ships with IDS located in the dsi_sdk\java\docs\com\docucorp\util directory and see the ldapTest class example which ships with IDS and is located in the dsi_sdk\java\samples\ldap directory.
N
OTE
:
If you are using JVM version 1.3, you must replace the jsse.jar file with the one from JVM version 1.4, which you can find at this location:
JAVA_HOME\jre\lib\ext
Searching a Directory
Information Tree
IDS also includes an LDAP API for C that you can use to query an LDAP server for group information for a user. These functions are supported in the API:
• LDAPInit
• LDAPTerm
• LDAPSearchDirectory
• LDAPGetErrorCode
• LDAPGetErrorMessage
For more information, see the SDK Reference .
You can search a Directory Information Tree (DIT) in an LDAP server. IDS includes the following rules for conducting LDAP queries to determine a user ID group or role membership:
• DPRSearchLDAP (C)
• search (Java)
These rules will look for all configuration options in rule arguments, a properties file, INI options, and input attachment variables, in that order. Option values found in more than one source override the previous value.
• For information on the DPRSearchLDAP rule, see Using the Documaker Bridge.
• For information on the Java rule search, refer to the dsidocs/com/Docucorp/DSI/ util/DSIJession.html documentation shipped with the Java SDK.
197
Chapter 2
Using the Internet Document Server
U
SING
D
EFAULT
T
IME
-
OUTS FOR
DSILIB-B
ASED
C
LIENT
A
PPLICATIONS
You can set default time-outs for DSILIB-based client applications. You set these defaults using these configuration entries in the docclient.xml file:
• DefaultTimeoutSeconds
• MaxTimeoutSeconds
• MinTimeoutSeconds
N
OTE
:
Examples of client-based applications that benefit from this feature are ASP pages using IDSASP.DLL, JSP pages using IDSJSP.jar, and the test programs
DSICOTB.EXE, DSITEST.EXE, and DSIEX.EXE.
For instance, suppose you have hundreds of web applications installed on a single IIS or
Java server and all of these applications are talking to the same IDS setup. Suppose some of these web applications have large time-out values which are not suitable for production mode, such as values longer than a few minutes. In this scenario, a transaction that takes a long time can tie up one thread on the web server. Since the total number of threads in the web server is limited, this can affect other applications.
Using these options, the system administrator can make sure that no matter what was specified as the time-out value, the actual time-out period is what the system administrator thinks it should be.
These entries go under the DocumentClient section in the docclient.xml file. Here is an example:
<section name="DocumentClient">
<entry name="DefaultTimeoutSeconds">45</entry>
<entry name="MaxTimeoutSeconds">60</entry>
<entry name="MinTimeoutSeconds">30</entry>
Entry
DefaultTimeoutSeconds
MaxTimeoutSeconds
MinTimeoutSeconds
Description
Use this entry when DSILIB-based client applications, such as dsiex, dsitest, and dsicotb test programs, provide a time-out value of zero (0) to DSIGetQueueRec calls to wait for a response message.
The default is 15 seconds.
Use this entry to set the upper limit for the time-out value when waiting for a response message. If a time-out value is specified for
DSIGetQueueRec calls and it is greater than
MaxTimeoutSecondsvalue, the MaxTimeoutSeconds is used instead.
There is no default.
Use this entry to set the lower limit for the time-out value when waiting for a response message. If a time-out value is specified for
DSIGetQueueRec calls and it is less than MinTimeoutSeconds value, the MinTimeoutSeconds is used instead.
There is no default.
198
Using Default Time-outs for DSILIB-Based Client Applications
N
OTE
:
It is possible that Microsoft Server script execution time-out limits could be set lower than the values specified for this feature. In those instances, the values of the Microsoft Server script execution time-out limits would be used. Please consult your Microsoft documentation for more information.
199
Chapter 2
Using the Internet Document Server
R
UNNING
T
IMED
R
EQUESTS
You can run timed requests repeatedly or just in the primary instance. Use the following entry attributes for a timed request entry under the Timers section in docserv.xml file:
Entry attribute
RepeatInterval
RunOnPrimaryInstanceOnly
Description
Enter true or yes (case sensitive) to tell IDS to convert the text value provided for the entry into seconds and run the timed entry at each interval specified. Here are some few examples.
This timed section runs every 120 seconds:
<entry RepeatInterval="yes" name="SSS">00:01:60</entry>
This timed section runs every 3720 seconds:
<entry RepeatInterval="yes" name="SSS">01:01:60</entry>
This timed section runs every 90 seconds:
<entry RepeatInterval="yes" name="SSS">90</entry>
If more than one IDS instance is running, any timed sections configured with the RepeatInterval attribute are run at a random interval using the interval seconds as the seed. Making sure they are not run at the same time by all IDS instances, allows other processing to take place.
The default lower bound is 60 seconds, meaning any timed section that is configured to use a time interval of less than 60 seconds will instead use the default value.
Enter yes or true (case sensitive) to make sure only the primary instance runs the timed section. For instance, you might want to do this when a timed section runs a synchronization rule that updates resources for a master resource library. This type of request would only need to be run once.
If you omit this attribute, all IDS instances will run each timed section. Here is an example:
<entry RunOnPrimaryInstanceOnly="Yes" name="SSS">00:01:60</entry>
200
In-Process Rendering for DPAView
R
I
N
-P
ROCESS
ENDERING
DPAV
FOR
IEW
With version 11.3 Shared Objects, you can create a bitmap representations of a DPA document without creating another instance of IDS. Before version 11.3, you had to have an additional dedicated instance of IDS to create the bitmaps.
DRLLIB detects whether it is running inside an instance of IDS or inside an external process. If DRLLIB detects that it is running inside IDS, it will use its own instance of
IDS to render the bitmap.
DPAView lets you create bitmaps from archived transactions in Documanage for display in Documanage Workstation. To do this, you have to have the following items set up:
• Documaker Server (publishing engine)
• An MRL set up to archive into Documanage (DBHandler:DMIA)
• Documanage version 6.5 and higher
• Documanage Bridge version 3.3
The DPA archives created by Documaker Server through the GenArc program must have been archived into Documanage.
You can enable additional tracing by setting the environment variable DRLDEBUG.
This feature also adds the DRLGetConfig API.
DRLGetConfig
Use this API to retrieve the CONFIG name for the DPA file processed by
DRLProcessDPAFile. You must call this API after running DRLProcessDPAFile.
These APIs are not supported in-process.
• DRLProcessPageDC
• DRLProcessPageBuffer
DRLGetConfig (hInstance) (config) (len)
Syntax
Parameters
Parameter
hInstance config len
Returns
DRLERR_* value
See also
DRLProcessDPAFile
Description
The instance handle returned by DRLInitInstance call.
The parameter to hold the config.
The maximum size the config parameter may hold.
201
Chapter 2
Using the Internet Document Server
U
SING
DAL
F
UNCTIONS FOR
WIP C
OLUMN
A
CCESS
You can use the following DAL functions to set or retrieve WIP field data when
Docupresentment processes WIP or archived transactions:
Function
WIPKEY1
WIPKEY2
WIPKEYID
Enhancement
Returns the value of the Key1 WIP field. Requires no input parameters. Here is an example:
Val=WIPKEY1()
Returns the value of the Key2 WIP field. Requires no input parameters. Here is an example:
Val=WIPKEY2()
Returns the value of the KeyID WIP field. Requires no input parameters. Here is an example:
Val=WIPKEYID()
WIPFLD Returns the value of the specified WIP field data. This field must be defined in the WIP.DFD file. Requires one input parameter to indicate which key value to return. Here is an example:
Val=WIPFLD(“TranCode”)
SETWIPFLD Sets the value of the specified WIP field key and keeps it in memory until the job finishes. For example, this DAL script sets/changes CURRUSER to
DEMO1 and returns it:
SETWIPFLD(“CURRUSER","DEMO1");
Val=WIPFLD("CURRUSER");
Return Val;
There are several ways to run the DAL script, here are two examples:
• Using the ~DALRUN built-in INI function following a DAL script file, as shown in this example:
~DALRUN wipkey.dal
• Using the DPRExecuteDAL rule, as shown in the following request type:
[ ReqType:i_WipTest] function = atcw32->ATCLogTransaction function = atcw32->ATCLoadAttachment function = dprw32->DPRSetConfig function = atcw32->ATCUnloadAttachment function = dprw32->DPRGetWipFormset function = dprW32->DPRExecuteDAL,wipkey.dal,RUNF
You can also use the following built-in INI functions to retrieve WIP field data when
Docupresentment processes WIP or archived transactions:
• ~KEY1
• ~KEY2
• ~KEYID
• ~ORIGUSER
202
Using DAL Functions for WIP Column Access
• ~CREATETIME
• ~MODIFYTIME
• ~FORMSETID
• ~ORIGFSID
• ~TRANCODE
• ~DESC
• ~WIPFIELD
All of these built-in functions except WIPFIELD do not require input parameters.
The WIPFLD function requires an input parameter that indicates the field data to return.
Here is an example:
~WIPFLD FORMSETID
In this example, FORMSETID is the input parameter that specifies the field name.
203
Chapter 2
Using the Internet Document Server
U
SING
E
NTERPRISE
W
EB
P
ROCESSING
S
ERVICES
Enterprise Web Processing Services (EWPS) make it easier to integrate applications, providing a set of web services for accessing the Documaker forms library and initiating real-time publishing operations. This helps you deliver the information requested by your clients, prospects, employees, and business partners.
Via EWPS you can use a number of essential mechanisms, such as WS-I SOAP interfaces for application integration, JSON for UI integration, or prepackaged business parts for design-time integration, to create a solution that uniquely meets your business needs.
Typical EWPS-enabled solutions include:
• Self-service publishing solutions
• Document search utilities
• Composition and workflow systems
• Systems that embed publishing artifacts into web pages
• Applications that help users create documents and forms
EWPS supports these protocols:
• SOAP (Simple Object Access Protocol).
• JSON (JavaScript Object Notation)
In addition, the EWPS Jmeter test script provides a set of examples for each service request operation. These examples can help you more quickly implement your system.
For more information on EWPS, see Introduction to Enterprise Web Processing
Services .
N
OTE
:
EWPS is not available on the UNIX platforms.
204
Determining the Patch Level
D
ETERMINING
THE
P
ATCH
L
EVEL
Docupresentment contains both .DLL files and Java .jar files. As changes are made to the product, both of these types of files are patched with program fixes.
You can determine which patches have been applied to these files by running the FSIVER and PatchReporter utilities.
This utility
FSIVER
Determines which patches have been applied to Docupresentment's
.dll files
PatchReporter .jar files
N
OTE
:
For more information on these utilities, see the Utilities Reference.
FSIVER
PatchReporter
To run the FSIVER utility, navigate to the directory where the Docupresentment .DLL files are located and run this command: c:\docserv\> fsivrw32 /i=*.* > fsivrw32.txt
fsivrw32.txt is the name of an output file you want the utility to create.
To run the PatchReporter utility, go to the directory where the Docupresentment .jar files are located and run this command:
C:\docserv\lib> java -jar PatchReporter.jar -f "*.jar" > patchreporter.txt
patchreporter.txt is the name of an output file you want the utility to create.
205
Chapter 2
Using the Internet Document Server
206
Chapter 3
Creating Output Files
This chapter discusses the types of output you can create, such as PDF or HTML files. If
you are unsure as to which type of file you want to produce, see HTML vs. PDF on page
.
For more information on creating these files, see these topics:
•
Creating PDF Files on page 208
•
Creating HTML Files on page 209
•
Creating XML Output on page 210
For more information about the various paper sizes the system supports, see Choosing a
Paper Size
207
Chapter 3
Creating Output Files
C
REATING
F
ILES
The PDF Print Driver creates Adobe Portable Document Format (PDF) files from output from the Rules Processor’s GenPrint program.
PDF is a document language developed by Adobe Systems, Inc., that allows formatting and graphics information to be stored along with text. Using PDF files, you can make sure form sets viewed and printed match originals created by the GenPrint program.
A document stored in PDF format can be transmitted to and viewed on many types of systems. There are PDF viewer applications available for many platforms, both as standalone programs and as add-ons for existing applications (such as word processors and
Internet web browsers). You can download Acrobat Reader from Adobe Systems’ web site ( www.adobe.com
).
Print output directed to the PDF Print Driver is stored in one or more files. You can then view these files using the Acrobat Reader.
For more information, see the Printers Reference and the Fonts Reference .
208
Creating HTML Files
C
REATING
HTML F
ILES
You can create HTML files by simply printing to the HTML print driver. The HTML print driver includes support for:
• Boxes – solid and shaded colors only
• Bar codes
• Charts
• Vectors – solid and shaded colors only
• Logos – converted to JPG files by the driver
• Lines – solid and shaded colors only. Dashed lines are supported but do not take the line characteristics as specified. The spacing and length of dashed lines are defaulted by the HTML 4 specification.
• Shaded areas – solid and shaded colors only
• Text areas
• Text
• Variable fields
N
OTE
:
For more information on setting up the HTML print driver, see the Printers
Reference .
209
Chapter 3
Creating Output Files
C
REATING
XML
O
UTPUT
The XMPLIB library lets you use IDS and Documaker to create Oracle standard XML output. This lets you unload Oracle standard XML output from the GenPrint or GenData programs (using the PrintFormset rule).
Here is an example of the INI setup this feature requires:
< Printers >
PrtType = XMP
< PrtType:XMP >
Module = XMPW32
PrintFunc = XMPPrint
When using with Documaker, be sure to use the MultiFilePrint functionality to create a separate XML file per transaction. If multiple XML files are written into the same file, the file will not load in an XML parser, browser, or editor.
N
OTE
:
For more information on the Oracle standard XML format, see Working with
XML .
210
Chapter 4
Using Docucorp Publishing Services
Docucorp Publishing Services (DPS) for print and archive are a set of objects you can use to interface VB, C#, or Java with Documaker to execute print or archive through
Docupresentment (IDS). You can run IDS on a local or remote system.
Only one transaction can be processed per API invocation. The return file types can be
PCL, PDF, or XML. For print requests, the input file (attachment) contains data representing a single transaction. For archive retrieval requests, the first transaction that matches the search criteria is returned.
Docucorp Publishing Services (DPS) consists of:
• An action object. (DPSPrint, DPSArchive)
This object passes a group of variables (properties) that define input parameters for performing the specific action.
• An interface object. (DPSIDS)
This object parses or constructs the request variables based on the input object properties and interfaces with IDS to send the request variables and receive the result variables.
• IDS
IDS performs the task based on the request. There are two groups of the requests: remote and local. If IDS is local, it is running on the same machine as the client and shares the same physical hard drive — so it is not necessary to send the output file back to the client since it is on the same machine. If IDS is remote, the output file needs to be sent from the machine that is running IDS to the client machine.
Here is a summary of the DLL and class files for DPS:
Required By File name
IDS IDSRules.jar
VB API DPSClient.dll
C# API
Java API
Docucorp.DPS.dll
Docucorp.IDS.dll
dps.jar
Description
com/docucorp/ids/rules/dps
DPSPrint, DPSArchive, DPSIDS objects.
DPSPrint, DPSArchive, DPSIDS objects.
DPSPrint, DPSArchive, DPSIDS objects.
The following illustration shows how this works on a local IDS setup, with IDS running on the same machine:
211
Chapter 4
Using Docucorp Publishing Services
Action object Interface object
DPSPrint object
DPSIDS object
DPSArchive object
IDS
Local hard disk
Request type for a local IDS server
DPSPrt
DPSArc
212
Action object
DPSPrint object
DPSArchive object
This illustration shows how it works with IDS running on a different machine:
Interface object
Request type for a remote IDS server
DPSPrtRM
DPSIDS object
IDS
DPSArcRM
Local hard disk
IDS server hard disk
213
Chapter 4
Using Docucorp Publishing Services
DPS O
P
BJECT
ROPERTIES
DPSPrint object
The following tables describe the properties of these objects:
• DPSPrint
• DPSArchive
The DPSPrint object has these properties:
VB
Property Name
ApplicationName
C# ApplicationName
Java setapplicationName getapplicationName
I/O
I/O
I/O
Input
Output
Type
String
Description
(Optional) Use to pass application-specific data to the API.
Use to set the DAP configuration.
VB ConfigurationName
C# ConfigurationName
Java setconfigurationName getconfigurationName
I/O
I/O
Input
Output
String
VB DestinationName
C# DestinationName
Java setdestinationName getdestinationName
I/O
I/O
Input
Output
String (Optional) Use to pass application-specific data to the API.
VB
C#
Java
EffectiveDate
1
EffectiveDate
1 seteffectiveDate
1 geteffectiveDate
1
VB FormDescription
C# FormDescription
Java setformDescription getformDescription
I/O
I/O
Input
Output
String
I/O
I/O
Input
Output
String
(Optional) Specifies the effective date of this transaction in YYYYMMDD format.
(Optional) Specifies the form description to be processed for this transaction.
Leave this property blank to tell the system to process all requested forms. You can pass multiple form descriptions by entering the form names separated by commas.
1
Not yet implemented.
214
DPS Object Properties
VB
C#
Property Name
FormName
FormName
Java setformName getformName
VB InputFile
C# InputFile
Java setinputFile getinputFile
I/O
I/O
I/O
Input
Output
Type
String
I/O
I/O
Input
Output
String
VB
C#
Key1, Key2, Key3, and
KeyID
Key1, Key2, Key3, and
KeyID
Java setkey1, setkey2, setkey3, and setkeyID getkey1, getkey2, getkey3, and getkeyID
I/O
I/O
Input
Output
String
VB
C#
OutputFile
OutputFile
Java setoutputFile getoutputFile
VB
C#
OutputPath
OutputPath
Java setoutputPath getoutputPath
VB
C#
Password
Password
Java setpassword getpassword
I/O
I/O
Input
Output
I/O
I/O
Input
Output
I/O
I/O
Input
Output
String
String
String
1
Not yet implemented.
Description
(Optional) Specifies the form name to be processed for this transaction. Leave this property blank to tell the system to process all requested forms. You can pass multiple forms by entering the form names separated by commas.
Specifies the name of the attached input data file, which is usually an extract data file for the transaction, such as an XML extract file or an import file name.
(Optional) Specifies transactional keys or application-specific values.
(Optional) Specifies a string that contains the name of the returned output file. If the buffer contains no input value (blank or empty) the
Documaker system generates this output file name. Use the OutputFile property to get the generated file name.
(Optional) Specifies the desired location of the returned output files. If you leave this property blank, the system uses the current directory from which the client was executed.
(Optional) Specifies the password if one is required by the request.
215
Chapter 4
Using Docucorp Publishing Services
VB
C#
Property Name
PrinterType
PrinterType
Java setprinterType getprinterType
VB
C#
Java
Priority
1
Priority
1 setpriority
1 getpriority
1
VB RecipientName
C# RecipientName
Java setrecipientName getrecipientName
VB
C#
ReturnCode
ReturnCode
Java setreturnCode getreturnCode
VB
C#
Java
RunDate
1
RunDate
1 setrunDate
1 getrunDate
1
VB SourceName
C# SourceName
Java setsourceName getsourceName
1
Not yet implemented.
I/O
I/O
I/O
Input
Output
Type
String
Description
(Optional) Specifies the type of output, such as
PCL, PDF, or XML. Future versions may support additional output types.
I/O
I/O
Input
Output
Priorities
DPS_IM
MEDIAT
E
DPS_DE
FERRED
Specifies immediate processing, deferred
(batch) processing of the transaction, or endof-day/end-of-period transaction. The default is DPS_IMMEDIATE.
I/O
I/O
Input
Output
I/O
I/O
Input
Output
I/O
I/O
Input
Output
I/O
I/O
Input
Output
String
String
String
String
(Optional) Specifies the recipient name to be processed for this transaction. Leave this property blank if you do not want recipient filtering performed. You can specify a list of recipients, using commas to separate the recipient names.
Set to DPS0000 if the transaction was processed successfully. Otherwise, it will contain an error code set by the DPS interface.
This error code can be an error returned from the Documaker system or Docupresentment or a failure of the DPS API.
(Optional) Specifies the run date of this transaction in YYYYMMDD format.
(Optional) Use to pass application-specific data to the API.
216
DPS Object Properties
VB
C#
Java
Property Name
TrnCode
1
TrnCode
1 settrnCode
1 gettrnCode
1
I/O
I/O
I/O
Input
Output
Type
String
VB
C#
UserID
UserID
Java setuserID getuserID
I/O
I/O
Input
Output
String (Optional) Specifies a user ID if one is required by the request.
VB WaitForResult
C# WaitForResult
Java setwaitForResult getwaitForResult
1
Not yet implemented.
I/O
I/O
Input
Output
Boolean Specifies whether the invoking application expects to receive results. The default is True.
DPSArchive object
VB
C#
Java
The DPSArchive object has these properties:
Property Name
ConfigurationName
ConfigurationName setconfigurationName getconfigurationName
I/O
I/O
I/O
Input
Output
Type
String
Description
Use to set the DAP configuration.
VB
C#
Java
FormDescription
FormDescription setformDescription getformDescription
I/O
I/O
Input
Output
String
VB
C#
Java
FormKey1
FormKey1 setformKey1 getformKey1
1
Not yet implemented.
I/O
I/O
Input
Output
String
Description
(Optional) Specifies a transaction code or other application-specific value.
(Optional) Specifies the form description to be processed for this transaction. Leave this property blank to tell the system to process all requested forms. You can pass multiple form descriptions using commas to separate the form names.
(Optional) Specifies the form set filtering
Key1.
217
Chapter 4
Using Docucorp Publishing Services
VB
C#
Java
VB
C#
Java
VB
C#
Java
Property Name
FormKey2
FormKey2 setformKey2 getformKey2
VB
C#
Java
FormName
FormName setformName getformName
I/O
I/O
I/O
Input
Output
Output
I/O
I/O
Input
Output
Type
String
String
VB
C#
Java
Key1, Key2, Key3, and
KeyID
Key1, Key2, Key3, and
KeyID setkey1, setkey2, setkey3, and setkeyID getkey1, getkey2, getkey3, and getkeyID
I/O
I/O
Input
Output
String
OutputFile
OutputFile setoutputFile getoutputFile
OutputPath
OutputPath setoutputPath getoutputPath
I/O
I/O
Input
Output
String
I/O
I/O
Input
Output
String
Description
(Optional) Specifies the form set filtering
Key2.
(Optional) Specifies the forms to be processed for this transaction. Leave this property blank to tell the system to process all requested forms. You can pass multiple forms using commas to separate the form names.
(Optional) Specifies the columns in application index file you want to use in the query
(Optional) Specifies a string that contains the name of the returned output file. If the buffer contains no input value (blank or empty) the
Documaker system generates this output file name. Use the outputFile property to get the generated file name.
(Optional) Specifies the desired location of the returned output files. If you leave this property blank, the Docucorp publishing system (such as Documaker) uses its own INI options to determine the locations of the returned output files and the caller will have to know to retrieve the files from that location.
Specify password required to retrieve from the database.
VB
C#
Java
Password
Password setpassword getpassword
1
Not yet implemented.
I/O
I/O
Input
Output
String
218
DPS Object Properties
VB
C#
Java
Property Name
PrinterType
PrinterType setprinterType getprinterType
VB
C#
Java
RecipientName
1
RecipientName
1 setrecipientName
1 getrecipientName
1
VB
C#
Java
ReturnCode
ReturnCode setreturnCode getreturnCode
I/O
I/O
I/O
Input
Output
Type
String
I/O
I/O
Input
Output
String
I/O
I/O
Input
Output
String
Description
(Optional) Specifies the type of output, such as
PDF or XML. Future versions may support additional output types.
(Optional) Specifies the recipients to be processed for this transaction. Leave this property blank if you do not want recipient filtering performed. You can specify a list of recipients, using semicolons to separate the recipient names.
Set to DPS0000 if transaction was processed successfully. Otherwise it contains an error code set by the DPS interface. This error code can be an error returned from the Documaker or Docupresentment system or a failure of the
DPS API.
VB
C#
Java
UserID
UserID setuserID getuserID
I/O
I/O
Input
Output
String Specifies the user ID required to access the database.
VB
C#
Java
WaitForResult
WaitForResult setwaitForResult getwaitForResult
1
Not yet implemented.
I/O
I/O
Input
Output
Boolean Specifies if the invoking application expects to receive results. The default is True
DPSIDS object
The DPSPrint object has these methods:
VB
Methods
Send(actionObject as Variant)
C# Send(DpsPrint dpsPrintObject)
Send(DpsArchive dpsArchiveObject)
Java send(DPSPrint oDPSPrint) send(DPSArchive oDPSArchive)
Description
Call to parse an action object’s properties to request variables and send the request variables to the IDS
Server to perform the function specified by the requestType.
219
Chapter 4
Using Docucorp Publishing Services
220
S
ETTING
D
EFAULT
P
ARAMETERS
Use the DPSINI.XML file to set default parameters. The system looks for the file in the current directory. If it is not found, it looks in the Windows system directory, such as c:\winnt\system32.
Here is an example of the DPSINI.XML file:
<?xml version='1.0'?>
<DPS>
<DPSIDS>
<RemoteIDS>Yes</RemoteIDS>
<PathSeparator>\</PathSeparator>
</DPSIDS>
<DPSPrint>
<RequestType>DPSPRT</RequestType>
<RequestTypeRM>DPSPRTRM</RequestTypeRM>
<OutputAttachName>DPSPRTOUTPUT</OutputAttachName>
<InputAttachName>DPSPRTINPUT</InputAttachName>
</DPSPrint>
<DPSArchive>
<RequestType>DPSARC</RequestType>
<RequestTypeRM>DPSARCRM</RequestTypeRM>
<PartialMatch>Yes</PartialMatch>
<CaseSensitivity>No</CaseSensitivity>
<MaxRecords>1</MaxRecords>
<OutputAttachName>DPSARCOUTPUT</OutputAttachName>
</DPSArchive>
</DPS>
DPSIDS section
Parameter
RemoteIDS
PathSeparator
Description
This parameter determines the location of the IDS Server, local or remote.
DPSPrint section
Parameter
RequestType
RequestTypeRM
OutputAttachname
InputAttachName
Description
This is the request type when RemoteIDS is set to No. The default is
DPSPRT.
This is the request type when RemoteIDS is set to Yes. The default is
DPSPRTRM.
This is the AttachName used by the IDS Server to send a file to the client when RemoteIDS is set to Yes. The default is DPSPRTOUTPUT.
This is the AttachName used by the client to send an input extract file to the IDS Server when RemoteIDS is set to Yes. The default is
DPSPRTINPUT.
DPSArchive section
Parameter
RequestType
Description
The request type when RemoteIDS is set to No. The default is
DPSARC.
Setting Default Parameters
Parameter
RequestTypeRM
Description
The request type when RemoteIDS is set to No. The default is
DPSARCRM.
OutputAttachname The AttachName used by the IDS Server to send a file to the client when
RemoteIDS is set to Yes. The default is DPSARCOUTPUT.
PartialMatch
CaseSensitivity
Maxrecords
The search condition uses a partial match.
If set to Yes, the search is case sensitive. The default is No
The maximum number of records to return. It must be set to one (1).
221
Chapter 4
Using Docucorp Publishing Services
S
AMPLE
VB
C
ODE
Here are examples of Visual Basic code for print and archive:
Archive
Private Sub CmdPrint_Click()
Dim oDPSVar As New DPSPrint
Dim oDPSIDS As New DPSIDS
oDPSVar.inputFile = “D:\MRL\TEST\EXTRACTS\ExtrFile.dat”
oDPSVar.configurationName = “DPS”
oDPSVar.outputFile = “PrintOutput”
oDPSVar.outputPath = “D:\MRL\TEST\PrintFile.PCL”
oDPSVar.printerType = “PCL”
oDPSIDS.send oDPSVar
if oDPSVar.ReturnCode = “DPS0000” Then
FinalOutput.Text = oDPSVar.outputPath + oDPSVar.outputFile
End If
End Sub
Private Sub CmdArchive_Click()
Dim oDPSVar As New DPSArchive
Dim oDPSIDS As New DPSIDS
FinalOutputA.Text = ""
oDPSVar.configurationName = "DPS"
oDPSVar.userID = “UserID”
oDPSVar.password = “Password”
oDPSVar.outputFile = FldOutputFileA.Text
oDPSVar.outputPath = FldOutputPathA.Text
oDPSVar.key1 = "SAMPCO"
oDPSVar.printerType = “PDF”
oDPSIDS.send oDPSVar
if oDPSVar.ReturnCode = “DPS0000” Then
FinalOutputA.Text = oDPSVar.outputPath + oDPSVar.outputFile
End If
End Sub
N
OTE
:
The DPSClient.dll file must be referenced before you can use the DPSPrint,
DPSArchive, and DPSIDS objects.
222
Sample C Code
S
AMPLE
C
C
ODE
Here is some sample C# code:
.
.
using System; using Docucorp.DPS;
.
private void printButton_Click(object sender, System.EventArgs e)
{
DpsPrint dpsVarObject = new DpsPrint();
DpsIds dpsIdsObject = new DpsIds();
dpsVarObject.InputFile = inputFile.Text;
dpsVarObject.ConfigurationName = config.Text;
dpsVarObject.OutputFile = outputFile.Text;
dpsVarObject.OutputPath = outputPath.Text;
dpsVarObject.PrinterType = printerType.Text;
dpsVarObject.FormName = formName.Text;
dpsVarObject.FormDescription = formDescription.Text;
dpsVarObject.RecipientName = recipientName.Text;
try
{
dpsIdsObject.Send(dpsVarObject);
finalOutput.Text = dpsVarObject.OutputPath + dpsVarObject.OutputFile;
}
catch (Exception ex)
{
Console.Out.WriteLine(ex.ToString());
}
} private void archiveButton_Click(object sender, System.EventArgs e)
{
DpsArchive dspVarObject = new DpsArchive();
DpsIds dpsIdsObject = new DpsIds();
finalOutputA.Text = "";
dspVarObject.WaitForResult = true;
dspVarObject.UserID = userID.Text;
dspVarObject.Password = password.Text;
dspVarObject.ConfigurationName = "DPS";
dspVarObject.OutputFile = outputFileA.Text;
dspVarObject.OutputPath = outputPathA.Text;
dspVarObject.Key1 = "SAMPCO";
dspVarObject.PrinterType = printerTypeA.Text;
dspVarObject.FormName = formNameA.Text;
try
{
dpsIdsObject.Send(dpsVarObject);
finalOutputA.Text = dpsVarObject.OutputPath + dpsVarObject.OutputFile;
}
catch (Exception ex)
{
Console.Out.WriteLine(ex.ToString());
223
Chapter 4
Using Docucorp Publishing Services
}
}
N
OTE
:
You must install the Docucorp.IDS.dll file in GAC and the Docucorp.DPS.dll file must be referenced before you can use the DPSPrint, DPSArchive, and
DPSIDS objects.
224
Sample Java Code
S
AMPLE
J
AVA
C
ODE
Here is some sample Java code:
.
.
import com.docucorp.dps.*;
.
void BtnPrint_actionPerformed(ActionEvent e) {
DPSPrint oDPSVar = new DPSPrint();
try {
DPSIDS oDPSIDS = new DPSIDS();
oDPSVar.setinputFile(FldInputFile.getText());
oDPSVar.setconfigurationName(FldConfig.getText());
oDPSVar.setoutputFile(FldOutputFile.getText());
oDPSVar.setoutputPath(FldOutputPath.getText());
oDPSVar.setprinterType(FldPrinterType.getText());
oDPSVar.setformName(FldFormName.getText());
oDPSVar.setformDescription(FldFormDescription.getText());
oDPSVar.setrecipientName(FldRecipientName.getText());
oDPSIDS.send(oDPSVar);
FldFinalOutput.setText(oDPSVar.getoutputPath() + oDPSVar.getoutputFile());
FldReturnCode.setText(oDPSVar.getreturnCode());
} catch (DPSJException ex) {
FldReturnCodeA.setText(oDPSVar.getreturnCode());
ex.printStackTrace();
} catch (DSIJException ex) {
FldReturnCodeA.setText(oDPSVar.getreturnCode());
ex.printStackTrace();
} catch (Exception ex) {
FldReturnCodeA.setText(oDPSVar.getreturnCode());
ex.printStackTrace();
}
}
void BtnArchive_actionPerformed(ActionEvent e) {
DPSArchive oDPSVar = new DPSArchive();
try {
DPSIDS oDPSIDS = new DPSIDS();
oDPSVar.setuserID(FldUserID.getText());
oDPSVar.setpassword(FldPassword.getText());
oDPSVar.setconfigurationName(FldConfigA.getText());
oDPSVar.setoutputFile(FldOutputFileA.getText());
oDPSVar.setoutputPath(FldOutputPathA.getText());
oDPSVar.setformName(FldFormNameA.getText());
oDPSVar.setprinterType(FldPrinterTypeA.getText());
oDPSIDS.send(oDPSVar);
FldFinalOutputA.setText(oDPSVar.getoutputPath() + oDPSVar.getoutputFile());
FldReturnCodeA.setText(oDPSVar.getreturnCode());
} catch (DPSJException ex) {
FldReturnCodeA.setText(oDPSVar.getreturnCode());
ex.printStackTrace();
} catch (DSIJException ex) {
FldReturnCodeA.setText(oDPSVar.getreturnCode());
ex.printStackTrace();
} catch (Exception ex) {
225
Chapter 4
Using Docucorp Publishing Services
FldReturnCodeA.setText(oDPSVar.getreturnCode());
ex.printStackTrace();
}
}
226
Setting Up IDS
S
ETTING
U
P
IDS
Add the following request types to the DOCSERV.INI file to set up IDS:
[ ReqType:DPSARC ]
function = atcw32->ATCLogTransaction
function = atcw32->ATCLoadAttachment
function = dprw32->DPRLocateOneRecord
function = dprw32->DPRInitLby
function = atcw32->ATCUnloadAttachment
function = dsijrule->JavaRunRule,;com/docucorp/ids/rules/ dps;DPS;global;duplicateAttach;,RV,REMOTEPRINTFILE,O,ARCOUTPUTFILE,
O
function = dsijrule->JavaRunRule,;com/docucorp/ids/rules/ dps;DPS;global;duplicateAttach;,RV,SENDBACKPAGE,O,ARCOUTPUTFILE,O
function = dprw32->DPRRetrieveFormset
function = dprw32->DPRFilterFormsetForms
function = dprw32->DPRPrint
function = dprw32->DPRProcessTemplates
[ ReqType:DPSARCRM ]
function = atcw32->ATCLogTransaction
function = atcw32->ATCLoadAttachment
function = dprw32->DPRSetConfig
function = dprw32->DPRLocateOneRecord
function = dprw32->DPRInitLby
function = atcw32->ATCUnloadAttachment
function = dprw32->DPRRetrieveFormset
function = dprw32->DPRFilterFormsetForms
function = atcw32->ATCSendFile,DPSARCOUTPUT,OUTPUTFILE,Binary
function = dsijrule->JavaRunRule,;com/docucorp/ids/rules/ dps;DPS;global;duplicateAttach;,RV,OUTPUTFILE,O,ARCOUTPUTFILE,O
function = dsijrule->JavaRunRule,;com/docucorp/ids/rules/ dps;DPS;global;duplicateAttach;,RV,REMOTEPRINTFILE,O,OUTPUTFILE,O
function = dsijrule->JavaRunRule,;com/docucorp/ids/rules/ dps;DPS;global;duplicateAttach;,RV,SENDBACKPAGE,O,OUTPUTFILE,O
function = dprw32->DPRPrint
function = dprw32->DPRProcessTemplates
[ ReqType:DPSPRT ]
function = atcw32->ATCLogTransaction
function = atcw32->ATCLoadAttachment
function = atcw32->ATCUnloadAttachment
function = dprw32->DPRSetConfig
function = dsijrule->JavaRunRule,;com/docucorp/ids/rules/ dps;DPS;global;duplicateAttach;,RV,PRINTER1,O,PRINTOUTPUTFILE,O
function = rpdw32->RPDCheckRPRun
function = rpdw32->RPDCreateJob
function = rpdw32->RPDProcessJob
[ ReqType:DPSPRTRM ]
function = atcw32->ATCLogTransaction
function = atcw32->ATCLoadAttachment
function = atcw32->ATCUnloadAttachment
function = atcw32-
>ATCReceiveFile,DPSPRTINPUT,EXTRFILE,d:\temp\*.dat,KEEP
function = dprw32->DPRSetConfig
function = atcw32->ATCSendFile,DPSPRTOUTPUT,PRINTER1,Binary
function = dsijrule->JavaRunRule,;com/docucorp/ids/rules/ dps;DPS;global;duplicateAttach;,RV,PRINTER1,O,PRINTOUTPUTFILE,O
function = dsijrule->JavaRunRule,;com/docucorp/ids/rules/ dps;DPS;global;duplicateAttach;,RV,PRINTER1,O,OUTPUTFILE,O
function = rpdw32->RPDCheckRPRun
227
Chapter 4
Using Docucorp Publishing Services
function = rpdw32->RPDCreateJob
function = rpdw32->RPDProcessJob
Add these control groups and options to the DAP.INI file:
< Config:DPS >
INIFile = DPS.INI
< Configurations >
Config = DPS
Here is a sample DPS.INI file:
< MasterResource >
XRFFile = rel102
DefLib = D:\MRL\DEMO\MstrRes\Def\
FormLib = D:\MRL\DEMO\MstrRes\FAP\
LbyLib = D:\MRL\DEMO\MstrRes\FAP\
FontLib = D:\FONTS\
FormDef = form.dat
< RPDRunRP >
Executable = d:\rel111\rps100\w32bin\GENDAW32.EXE
Directory = D:\MRL\DEMO\MstrRes
; UserINI = D:\MRL\DEMO\RunBatch\fsiuser.s.ini
UserINI = D:\MRL\DEMO\RunBatch\FSIUSER.PCL.INI
Debug = Yes
< RPDCheckRPRun >
Debug = Yes
< IDSServer >
BaseLocation = http://10.1.10.209/doc-data/
PrintPath = d:\MRL\DEMO\PrintFiles
GENSemaphoreName = GenData
RPDSemaphoreName = RPDRunRP
< Debug >
RULServerJobProc = Yes
RPDProcessJob = Yes
< ARCRet >
; path to CAR files
CARPath = D:\MRL\DEMO\ARC\
CARFile = ARCHIVE
; full file name for application index
APPIDX = D:\MRL\DEMO\ARC\APPIDX
; full file name for temporary index
TempIDX=D:\MRL\DEMO\ARC\TEMP
; full file name for CAR files catalog
Catalog = D:\MRL\DEMO\ARC\CATALOG
APPIDXDFD = D:\MRL\DEMO\mstrres\def\appidx.dfd
< Control >
XrfExt = .fxr
ImageEXT = .fap
DateFormat = 24%
< PrtType:PDF >
LanguageLevel= Level2
Module = PDFOS2
PrintFunc = PDFPrint
Linearize = No
228
Setting Up Documaker
S
ETTING
U
P
D
OCUMAKER
Set up Documaker to run in single-step mode. Please note in the following sample
AFGJOB.JDT file that the RULServerJobProc rule is required to run in the IDS environment and the ServerFilterFormRecipient rule is required for DPS to run properly.
Here is a sample AFGJOB.JDT file:
/* This base (this implementation) uses these rules. */
<Base Rules>
;RULServerJobProc;1;Always the first job level rule;
/*;RULStandardJobProc;;Always the first job level rule;
;JobInit1;;;
;BuildMasterFormList;1;4;
;InitPrint;;required to execute gendata/genprint in single step;
/* Every form set in this base uses these rules. */
<Base Form Set Rules>
;NoGenTrnTransactionProc;;required to combine gentrn/gendata into single step;
;BuildFormList;;;
;LoadRcpTbl;;;
;ServerFilterFormRecipient;;;
;RunSetRcpTbl;;;
;PrintFormset;;required to combine gendata/genprint into single step;
;WriteOutput;;;required to combine gentrn/gendata into single step;
;WriteNaFile;;;required to combine gentrn/gendata into single step;
;BatchingByPageCountINI;;;
;ProcessQueue;;PostPaginationQueue;
;PaginateAndPropogate;;FooterMode(2) Debug;
/* Every image in this base uses these rules. */
<Base Image Rules>
;RULStandardImageProc;;Always the first image level rule;
/* Every field in this base uses these rules. */
<Base Field Rules>
;RULStandardFieldProc;;Always the first field level rule;
229
Chapter 4
Using Docucorp Publishing Services
230
Chapter 5
Using the DP.DLL ActiveX Interface
DP.DLL is a COM object that can be used by ASP client applications to communicate with IDS via SOAP messages and the MQSeries message bus without an IDS client. It supports the same SOAP message format as IDS, including rowsets and file attachments.
Connection information can come from an MQSERVER environment variable, a Client
Connection Definition Table (CCDT), or from properties in an XML configuration file.
You can use DP.DLL as a standalone client DLL to communicate with a remote IDS via
MQSeries and SOAP attachments using the Microsoft IMessage interface. This is supported on Microsoft Windows 2000 and later platforms.
N
OTE
:
The DP.DLL COM object is not distributed with IDS. To receive this additional feature, contact your sales representative.
This appendix includes information on the following topics:
•
•
Setting Up the Configuration File on page 233
•
•
•
231
Chapter 5
Using the DP.DLL ActiveX Interface
R
EQUIREMENTS
To use the DP.DLL ActiveX Interface, you must have the following:
• SOAP Toolkit version 2.0 (MSSMO.dll)
• MSXML version 4.0
• CDO for Windows 2000 or later
• MQSeries. Client installation (version 5.3 or later is required for SSL connections)
You must have these default directories under the virtual directory:
• Cache (used to write all input and output files)
• Debug (used to write all debug files)
232
Setting Up the Configuration File
S
ETTING
U
P THE
C
ONFIGURATION
F
ILE
You must have an XML configuration file called INI.XML. Place this file under the virtual directory. It can contain these properties:
Property Description
QUEUEMANAGER The name of the queue manager.
RESULTQ The name of the input queue.
REQUESTQ
CHANNEL
CONNECTION
MSGLEN
The name of the output queue.
The channel name, should correspond to the name of a server connection channel, used to create a matching client connection channel at run time.
The IP address and port number of the box hosting the queue manager and server connection channel.
The maximum message length of a message. Be sure to configure the queue manager and server connection to support the same message length. This property is optional. The default max message size is
4MB.
SSLCIPHERSPEC
SSLPEERNAME
SSLCLIENTAUTH
The cipher specification (encryption and hashing algorithm) that should be used in SSL connections. Should correspond to the
Cipherspec chosen for the server connection channel when SSL connections were enabled for it. This property is only required when establishing connections to a queue manager configured for SSL.
The DN (Distinguished Name) of the subject in the SSL certificate used by the queue manager. Used to verify the client application is connecting to the correct queue manager. This property is only required when establishing connections to a queue manager configured for SSL and when client applications desire to verify the
DN of the certificate used by the queue manager - enabling this option forces the queue manager to send its certificate to the client for verification of the DN as part of the SSL handshake.
This property is only required when establishing connections to a queue manager configured for SSL and when client applications desire to verify the certificate used by queue manager - enabling this option forces the queue manager to send its certificate to the client for verification of the DN as part of the SSL handshake.
233
Chapter 5
Using the DP.DLL ActiveX Interface
Here is an example of a configuration file:
<?xml version="1.0" encoding="UTF-8" ?>
<GROUPS>
<GROUP NAME="MQSERIES">
<QUEUEMANAGER>queue_manager</QUEUEMANAGER>
<REQUESTQ>REQUESTQ</REQUESTQ>
<RESULTQ>RESULTQ</RESULTQ>
<CHANNEL>SSLCHANNEL1</CHANNEL>
<CONNECTION>X.X.X.X(1414)</CONNECTION>
<MSGLEN></MSGLEN>
<SSLCIPHERSPEC>RC4_MD5_US</SSLCIPHERSPEC>
<SSLPEERNAME>CN=ssl_qmgr, C=US, S=GA, L=Atlanta, O=Acme, Co.,
OU=PD</SSLPEERNAME>
<SSLCLIENTAUTH>Y</SSLCLIENTAUTH>
</GROUP>
</GROUPS>
N
OTE
:
If the MQSERVER or MQCHLLIB and MQCHLTAB system environment variables are specified, the system uses them to derive the connection information instead of using the property values in the XML configuration file.
Keep in mind...
• SSL is only supported in MQSeries version 5.3 or later.
• When using SSL, be sure to first give the IIS account read permission to the key.sto file (the SSL key repository).
• The IIS account must have access to the following registry keys to send the client certificate to the queue manager when the following SSL options are enabled in the server connection channel. Otherwise, WebSphere MQ issues error code 2193 complaining the client application did not send the certificate to the queue manager for verification:
Registry Keys:
HKEY_USERS\.Default\Microsoft\Software\SystemCertificates\Root
HKEY_USERS\.Default\Microsoft\Software\SystemCertificates\trust
HKEY_USERS\.Default\Microsoft\Software\SystemCertificates\CA
HKEY_USERS\.Default\Microsoft\Software\SystemCertificates\my
The easiest thing to do is to configure IIS Out-Of-Process Applications under
'Component Services' mmc snap/in to run under an identity that has permissions to these keys and restart IIS. Alternatively, the two options specified below can be disabled in the server connection channel to avoid requiring client applications send their certificate for verification as part of the SSL handshake.
Server Connection Channel Options:
Only Accept Certificates with Distinguished Names matching these values.’
Always Authenticate parties initiating connections to this channel definition.’
234
Properties
P
ROPERTIES
The DP.DLL ActiveX interface includes these properties:
Property
Request
Description
Type: Collection
Contains request name/value pairs for a transaction.
Result
ErrMsg
RC bDebug
Expires
TimeOut
ShowAtt
Type: Collection
Contains result name/value pairs for a transaction
Type: String
Contains an error description of the last error encountered in the MQSeries
APIs.
Type: Integer
Can return either zero (0) for success or one (1) for failure for the last
MQSeries API Call in DP.DLL.
Type: Boolean
Can be set to one (1) or True or zero (0) or False. Used to write the inbound and outbound SOAP attachments and XML form sets to disk. Also used to enable tracing throughout DP.dll. Tracing output goes to trace.txt file located on the root context of the web application.
Type: Long
Used to set the time in minutes a message will exist in the queue before it is removed by MQSeries.
Type: Long
Used to set the time the MQSeries MQGet API will wait for a message when attempting to retrieve a message from the queue.
Type: Boolean
Can be one (1) or True or zero (0) or False. Used to display the request and result collections on an ASP page for debugging purposes.
GUID Type: String
Contains the unique message identifier for a SOAP message. Used in putMsg and getMsg calls in order to match a request to a response.
CleanUpInterval Type: Long
Contains the clean up interval of the cache. Always set to three or four times the session expiration time in order to avoid a conflict. Set the time in minutes.
OutputBuffer Type: String
Contains the outgoing SOAP attachment before calling putMsg.
InputBuffer Type: String
Contains the incoming SOAP attachment retrieved by getMsg call.
235
Chapter 5
Using the DP.DLL ActiveX Interface
M
ETHODS
The DP.DLL ActiveX Interface includes these methods:
•
•
•
•
•
•
•
InitializeDefaults on page 239
•
•
•
•
•
•
•
•
•
SOAPGetAttachmentAsBuffer on page 242
•
SOAPLoadAttachment on page 242
•
SOAPUnloadAttachment on page 243
•
•
•
•
•
236
Methods
Syntax
Parameters
A
DD
N
AME
V
ALUE
P
AIR
Use this method to add name/value pairs from a Session, Form, or QueryString
Collection to the request collection.
AddNameValuePair(Name, Value)
Parameter Description
Name The index name of the name/value pair.
Value The value of the name/value pair.
See
.
Syntax
Parameters
B
IN
2U
NICODE
Use this method to convert a binary string into a Unicode string.
Bin2Unicode (sABSTR)
Parameter Description
sABSTR A binary string.
Syntax
C
LEAN
C
ACHE
Use this method to read every record in the random access file:
APPL_PHYSICAL_PATH & "log.db" and compare its date and time stamp to the CleanUpInterval property.
CleanCache
If the time difference exceeds the interval, the method deletes the record from the log, removes the file from the cache, and marks the record as deleted so the same record can be used again by the WriteToLog method.
237
Chapter 5
Using the DP.DLL ActiveX Interface
Syntax
F
ILE
E
XISTS
Use this method to see if a file exists.
FileExists (FileName)
This method returns True if the file exists, otherwise False.
Parameters:
Parameter Description
FileName Enter the full file name of the file to check.
See
.
Syntax
G
ET
M
SG
Use this method to retrieve a SOAP message from the result queue into the InputBuffer property.
GetMsg
This method expects the TimeOut and GUID properties to be set. This method call is only necessary when processing a transaction by calling the individual methods instead of calling the ProcessTrn method. This method returns zero (0) for success or one (1) for failure.
See
.
Syntax
G
ET
U
NIQUE
S
TRING
Use this method to return a unique identifier string.
GetUniqueString
See
.
Syntax
I
NITIALIZE
Use this method to connect to the queue manager and open the input and output queues.
Initialize
Make sure the InitializeDefaults and ReadIniOptions methods are called first to set the default MQ objects and connection properties. This method call is only necessary when you are processing a transaction by calling the individual methods instead of calling the
ProcessTrn method.
This method returns zero (0) for success or one (1) for failure.
See
.
238
Methods
Syntax
I
NITIALIZE
D
EFAULTS
Use this method to initialize the MQSeries defaults.
InitializeDefaults
Call this method before any other method calls. It is only required if processing a transaction by calling the individual methods instead of calling the ProcessTrn method.
See
Syntax
P
ROCESS
T
RN
Use this method to:
• Initialize the MQSeries default settings.
• Read all connection properties from the INI.XML file.
• Initialize the MQSeries connection and open the queues for input and output.
• Generate a message ID to correlate a request with a response message.
• Generate the SOAP request message from the request collection.
• Put the SOAP request message in the request queue by message ID.
• Retrieve the result SOAP message from the result queue by message ID.
• Unload the result SOAP message into the result collection.
• Close the queues and disconnect the queue manager.
ProcessTrn
See
Syntax
P
UT
M
SG
Use this method to place a SOAP message in the request queue.
PutMsg
This method expects the GUID and OutputBuffer properties to be set. This method call is only necessary when you are processing a transaction by calling the individual methods instead of calling the ProcessTrn method. This method returns zero (0) for success or one
(1) for failure.
See
239
Chapter 5
Using the DP.DLL ActiveX Interface
Syntax
R
EAD
I
NI
O
PTIONS
Use this method to read these options from the INI.XML file located in the root context of the web application:
• QUEUEMANAGER
• RESULTQ REQUESTQ
• CHANNEL
• CONNECTION
• MSGLEN
• SSLCIPHERSPEC
• SSLPEERNAME
• SSLCLIENTAUTH
ReadIniOptions
Always call this method immediately after InitializeDefaults method to set the connection properties before you call the Initialize method. This method call is only necessary when you are processing a transaction by calling the individual methods instead of calling the
ProcessTrn method.
See Setting Up the Configuration File on page 233 for a description of each property. See
Syntax
R
EQUEST
V
ALUE
Use this method to return a value in the request collection name/value pair, found by
NameIndex.
RequestValue (NameIndex)
This method returns an empty string if the name/value pair is not found.
Parameters
Parameter Description
NameIndex The name index of the name/value pair in the request collection.
See
.
240
Methods
Syntax
R
ESULT
V
ALUE
Use this method to returns a value in the result collection name/value pair, found by the
NameIndex parameter.
ResultValue (NameIndex)
This method returns an empty string if the name/value pair is not found.
Parameters
Parameter
NameIndex
Description
The name index of the name/value pair in the result collection.
See
Syntax
S
ET
GUID
Use this method to set the message ID that should be used for a request/response transaction.
SetGUID
This method call is only necessary when you are processing a transaction by calling the individual methods instead of calling the ProcessTrn method.
See
Syntax
Parameters
SOAPA
DD
A
TTACHMENT
Use this method to add a file as a SOAP attachment to the request message.
SOAPAddAttachment( FileName, ID, Type)
Parameter Description
FileName The full file name of the file to add as an attachment.
ID
Type
The unique identifier for the file attachment.
The media type and transfer encoding type for the attachment. You can choose from TEXT or BINARY
Always call the SOAPAddAttachment method before calling the SOAPLoadAttachment method.
See
241
Chapter 5
Using the DP.DLL ActiveX Interface
Syntax
Parameters
SOAPG
ET
A
TTACHMENT
Use this method to retrieve a SOAP attachment from the result message as a file written to disk.
SOAPGetAttachment (FileName, ID)
Parameter Description
FileName The full file name of the file that will be unloaded.
ID The unique identifier for the file attachment in the SOAP message.
This method returns True if the attachment was found, otherwise, False.
See
.
Syntax
SOAPG
ET
A
TTACHMENT
A
S
B
UFFER
Use this method to return a buffer containing the attachment or an empty string if the attachment was not found.
SOAPGetAttachmentAsBuffer (ID)
The method returns a SOAP attachment as a string buffer.
Parameters
Parameter Description
ID The unique identifier for the file attachment in the SOAP message.
Syntax
SOAPL
OAD
A
TTACHMENT
Use this method to convert the request collection into a SOAP message.
SOAPLoadAttachment
This method expects the request collection to be set through AddNameValuePair method calls. The method expects file attachments to be set through the SOAPAddAttachment method calls. This method sets the OutputBuffer property.
This method call is only necessary when you are processing a transaction by calling the individual methods instead of calling the ProcessTrn method.
See
.
242
Methods
Syntax
SOAPU
NLOAD
A
TTACHMENT
Use this method to extract the SOAP message from the InputBuffer property and set the result collection.
SOAPUnloadAttachment
This method call is only necessary when you are processing a transaction by calling the individual methods instead of calling the ProcessTrn method.
See
Syntax
T
ERMINATE
Use this method to close the input and output queues and disconnect from the queue manager.
Terminate
This method call is only necessary when processing a transaction by calling the individual method instead of calling the ProcessTrn method. This method returns zero (0) for success or one (1) for failure.
See
Syntax
Parameters
T
RACE
Use this method to write the date/time stamp, including milliseconds along with the contents of a buffer to a trace log location defined as:
ASP.Server.MapPath("trace.txt")
Trace (Buffer)
Parameter Description
Buffer A string buffer that contains the information you want written to the log.
Syntax
Parameters
U
NICODE
2B
IN
Use this method to convert a Unicode string into a binary string.
Unicode2Bin (str)
Parameter Description
str A Unicode string.
243
Chapter 5
Using the DP.DLL ActiveX Interface
Syntax
Parameters
W
RITE
B
IN
F
ILE
Use this method to write the contents of a file to a browser.
WriteBinFile (FileName)
Parameter Description
FileName The full file name of the binary file to write to the browser.
See
.
Syntax
W
RITE
T
O
L
OG
Use this method to write entries into the cleanup log.
WriteToLog (FileName)
Each entry contains the full path and file name of a file written to the cache directory. The path and name of the log file is:
APPL_PHYSICAL_PATH & "log.db"
Each entry contains the date and time stamp and a deleted flag initially set to False. The system uses the first record marked as deleted in the log as the record place for the new record to save space.
Parameters
Parameter Description
FileName Full file name of the file to write to the cleanup log.
See also the CleanCache method and CleanUpInterval property.
244
Examples
E
XAMPLES
Here are some examples that show you how to use the DP.DLL ActiveX Interface methods.
Example 1
This example uses the ProcessTrn method to send and receive a request and reply to and from IDS:
1
This HTML page submits a request to an ASP page:
<html>
<head>
</head>
<body>
<form name=submitReq action="ProcessTrn_Example.asp" method=post>
<input name="GROUP1" value="GENERAL LIABILITY" type=hidden>
<input name="GROUP2" value="APPLICATION" type=hidden>
<input name="CONFIG" value="AMERGEN" type=hidden>
<input name="USERID" value="DOCUCORP" type=hidden>
<input name="PASSWORD" value="DOCUCORP" type="hidden">
<input name="PASSWORDENCRYPTED" type=hidden value="NO">
<input name="ARCEFFECTIVEDATE" value="20020819" type=hidden>
<input name="PRINTPATH" type=hidden value="Output\">
<input name="PRTTYPE" value="PDF"><br>
<input name="REQTYPE" value="FRMPBPRTTEST"><br>
<input type=submit name="btnSubmit" value="submit">
</form>
2
This ASP page calls the ProcessTrn method to send/receive a request/response to/ from IDS:
<%
Set DP = server.CreateObject("DP.IDSMessage")
DP.ShowAtt = 0
DP.bDebug = 1
For i=1 to Request.Form.Count
DP.AddNameValuePair Request.Form.Key(i), Request.Form(i)
Next
VirtualPath = Request.ServerVariables("APPL_PHYSICAL_PATH") &
"Cache\"
OutputFormset = VirtualPath & "OutputFormset.xml"
DP.SOAPAddAttachment OutputFormset, "ATC_XMLFORMSET", "BINARY"
DP.ProcessTrn()
File = getFilename(DP.ResultValue("PRINTFILE"), "\")
FullFileName = VirtualPath & File
If (DP.SOAPGetAttachment (FullFileName, "OUTFILE")) Then
Set DP = Nothing
Session("File") = FullFileName
Response.Redirect "Print.asp"
Else
Response.Write "Error encountered retrieving file!"
245
Chapter 5
Using the DP.DLL ActiveX Interface
Set DP = Nothing
End if
function getFileName(sFile, delimiter)
getFileName = Mid(sFile, InstrRev(sFile, delimiter, -1)+1, len(sFile))
end function
%>
3
Then, this ASP print page appears:
<%
File = Session("File") set DP = Server.CreateObject("DP.IDSMessage")
DP.WriteBinFile(File)
%> set DP = Nothing
246
Examples
Example 2
This example shows how to use the individual APIs to send and receive requests and replies to and from IDS:
1
This HTML page sends a request to an ASP page:
<html>
<head>
</head>
<body>
<form name=submitReq action="APIs_Example.asp" method=post>
<input name="GROUP1" value="GENERAL LIABILITY" type=hidden>
<input name="GROUP2" value="APPLICATION" type=hidden>
<input name="CONFIG" value="AMERGEN" type=hidden>
<input name="USERID" value="DOCUCORP" type=hidden>
<input name="ARCEFFECTIVEDATE" value="20020819" type=hidden>
<input name="PRINTPATH" type=hidden value="Output\">
<input name="PRTTYPE" value="PDF"><br>
<input name="REQTYPE" value="FRMPBPRTTEST"><br>
<input type=submit name="btnSubmit" value="submit">
</form>
2
This ASP page calls the individual functions to send and receive requests and responses to and from IDS:
<%
Set DP = Server.CreateObject("DP.IDSMessage")
DP.ShowAtt = 0
DP.bDebug = 1
DP.Expires = 300
DP.TimeOut = 60
For i=1 to Request.Form.Count
DP.AddNameValuePair Request.Form.Key(i), Request.Form(i)
Next
DP.InitializeDefaults
DP.ReadINIOptions
DP.Initialize
if DP.RC <> 0 then
Response.Write DP.ErrMsg
end if
GUID = DP.GetUniqueString
DP.SetGUID(GUID)
VirtualPath = Request.ServerVariables("APPL_PHYSICAL_PATH") &
"Cache\"
OutputFormset = VirtualPath & "OutputFormset.xml"
247
Chapter 5
Using the DP.DLL ActiveX Interface
DP.SOAPAddAttachment OutputFormset, "ATC_XMLFORMSET", "BINARY"
DP.SOAPLoadAttachment
DP.PutMsg
DP.GetMsg
DP.SOAPUnloadAttachment
DP.Terminate
File = getFilename(DP.ResultValue("PRINTFILE"), "\")
FullFileName = VirtualPath & File
If (DP.SOAPGetAttachment (FullFileName, "OUTFILE")) Then
Set DP = Nothing
Session("File") = FullFileName
Response.Redirect "Print.asp"
Else
Response.Write "Error encountered retrieving file!"
Set DP = Nothing
End if
function getFileName(sFile, delimiter)
getFileName = Mid(sFile, InstrRev(sFile, delimiter, -1)+1, len(sFile))
end function
%>
2.3Asp print page:
<%
File = Session("File") set DP = Server.CreateObject("DP.IDSMessage")
DP.WriteBinFile(File) set DP = Nothing
%>
248
Appendix A
System Files
The following pages list and explain the various files which comprise the Internet
Document Server. These are the files installed on your computer when you install the
Internet Document Server and its various bridges.
This includes information about the following:
•
IDS Configuration Files on page 250
•
Sample Output Files on page 253
249
Appendix A
System Files
IDS
C
ONFIGURATION
F
ILES
The Internet Document Server and its bridges use the following INI files:
File
fapcomp.ini
docserv.xml
docclient.xml
dsi.ini
dap.ini
(resource).ini
Used for
System tools, such as the Font Manager
Internet Document Server settings
IDS client settings custom client programs written using VB, Java, and so on, which call DSI
APIs.
the various bridges the various libraries
Docserv.xml file format
Since the server must start before a client can begin processing, the docserv.xml file is read first.
The same option can be defined in both the DAP.INI file and in the various INI files for your resources. When this happens, the settings in the resource INI files take precedence over those in the DAP.INI file.
Prior to IDS version 2.0, the configuration file was a simple INI file (docserv.ini). For IDS
2.0, the format changed to an XML file. This gives you more control over configuration options.
In the INI format, you could only have one level of control groups (sections), with entries under each group or section. Using the XML format, you can now have multiple levels of subsections under a section for better grouping. Options relevant to the passing of messages can be, for example, grouped under a messaging subsection.
The general format of the docserv.xml file is:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<section name="DocumentServer">
<entry name="FileWatchTimeMillis">10001</entry>
<entry name="FilePurgeTimeSeconds">3600</entry>
<entry name="FilePurgeList">purgeme.properties</entry>
</section> <!-- DocumentServer -->
<section name="BusinessLogicProcessor">
<section name="MultiThreadedRequests">
<entry name="Request">ECH</entry>
</section> <!-- MultiThreadedRequests section -->
<section name="messaging">
<section name="http">
<entry name="port">39152</entry>
</section> <!-- http section -->
<section name="timed">
<entry name="AutoRunIntervalSeconds">3600</entry>
<section name="Timers">
<entry name="XYZ">Tue 3:27:01 PM</entry>
</section>
</section> <!-- timed section -->
250
IDS Configuration Files
<section name="queue">
<entry name="queuefactory.class">com.docucorp.messaging.mqseries.DSIMQMess
ageQueueFactory</entry>
<!-- Settings for MQSeries connection -->
<entry name="mq.queue.manager">queue.manager</entry>
<entry name="mq.inputqueue.name">requestq</entry>
<entry name="mq.inputqueue.maxwaitseconds">5</entry>
<entry name="mq.outputqueue.name">resultq</entry>
<entry name="mq.tcpip.host">10.1.10.1</entry>
<entry name="mq.queue.channel">queue_channel</entry>
<entry name="mq.tcpip.port">1414</entry>
</section> <!-- queue section -->
</section> <!-- messaging section -->
</section> <!-- BusinessLogicProcessor -->
<section name="ReqType:INI">
<entry name="function">irlw32->;IRLInit</entry>
<entry name="function">dprw32->;DPRInit</entry>
<!-- Following rule now initted in THREADINI -->
<!-- entry name="function">DSICoRul->;Init</entry -->
<!-- entry name="function">pobrs->;POWInit</entry -->
<entry name="function">Tpdw32->;TPDInitRule</entry>
</section>
<section name="ReqType:THREADINI">
<entry name="function">atcw32->;ATCLoadAttachment</entry>
<entry name="function">atcw32->;ATCUnloadAttachment</entry>
<entry name="function">DSICoRul->;Init</entry>
<entry name="function">DSICoRul-
>;Invoke,DocuCorp_IDS_DPRCo.DPR->;DPRCoLoginInit</entry>
</section>
<section name="ReqType:ECH">
<entry name="function">java;com.docucorp.ids.rules.EchoTest;;transaction;e cho;</entry>
</section>
</configuration>
The file begins with the line indicating it’s an XML file. Under that is the configuration element, the root element of the XML. Inside the configuration element are several section elements, each with a name attribute to identify the section. Some section names, such as
REQTYPE:INI are the same as in IDS version 1.
A section may just have several entry elements inside it. Each entry has a name attribute to identify it, and the text in between the <entry> and </entry> tags is the value of the entry.
A section may also have other section elements inside of it, for example the
BusinessLogicProcessor section. The BusinessLogicProcessor section has subsections pertaining to getting requests to process and sending results back to clients.
In this document any configuration settings will list the section, and optionally any subsections, that an entry belongs to.
251
Appendix A
System Files
This line indicates it is an XML file
This is the configuration element
Here, a section is defined
Here are the entries for a section
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<section name="DocumentServer">
<entry name="FileWatchTimeMillis">10001</entry>
<entry name="FilePurgeTimeSeconds">3600</entry>
<entry name="FilePurgeList">purgeme.properties</entry>
</section> <!-- DocumentServer -->
<section name="BusinessLogicProcessor">
<section name="MultiThreadedRequests">
<entry name="Request">ECH</entry>
</section> <!-- MultiThreadedRequests section -->
<section name="messaging">
<section name="http">
<entry name="port">39152</entry>
Docclient.xml format
Similar to IDS 2.0, most IDS client programs now use an XML-based configuration file.
The general format of the docclient.xml file is:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<section name="DocumentClient">
<section name="messaging">
<section name="queue">
<entry name="queuefactory.class">com.docucorp.messaging.
mqseries.DSIMQMessageQueueFactory</entry>
<!-- Settings for MQSeries connection -->
<entry name="mq.queue.manager">queue.manager</entry>
<entry name="mq.inputqueue.name">requestq</entry>
<entry name="mq.inputqueue.maxwaitseconds">5</entry>
<entry name="mq.outputqueue.name">resultq</entry>
<entry name="mq.tcpip.host">10.1.10.1</entry>
<entry name="mq.queue.channel">queue_channel</entry>
<entry name="mq.tcpip.port">1414</entry>
</section> <!-- queue section -->
</section> <!-- messaging section -->
</section> <!-- DocumentClient -->
</configuration>
The overall structure is similar to docserv.xml. The main difference is that the messaging parameters are under a "DocumentClient" section. This makes it possible for client applications and IDS use the same configuration file, with client settings under the
"DocumentClient" section and IDS settings under the "DocumentServer" and
"BusinessLogicProcessor" sections.
252
Sample Output Files
O
S
UTPUT
AMPLE
F
ILES
DSIEXW32.EXE
Here are printouts of the sample output files you should receive when you check your server installation.
The output comes from these functions:
• DSIEXW32.EXE
• DSICOTB.EXE, option ESS
• DSICOTB.EXE, option Roll Your Own
• DSICOTB.EXE, option RSS
• DSICOTB.EXE, option SSS
Here is the output you should see when you execute DSIEXW32.EXE. You will see similar results when you execute DSICoEx.
Name = ALLOCCOUNT Value = 3073
Name = ERRORCOUNT Value = 0
Name = FREECOUNT Value = 391
Name = LASTRESTART Value = Wed Aug 12 16:31:14 1998
Name = LIBRARIES Value = 11
Name = LIBRARIES1.DATE Value = Jun 30 1998
Name = LIBRARIES1.NAME Value = IRL
Name = LIBRARIES1.TIME Value = 11:31:06
Name = LIBRARIES1.VERSION Value = 100.013.001
Name = LIBRARIES10.DATE Value = Jun 30 1998
Name = LIBRARIES10.NAME Value = DPR
Name = LIBRARIES10.TIME Value = 11:48:16
Name = LIBRARIES10.VERSION Value = 400.098.001
Name = LIBRARIES11.DATE Value = Aug 5 1998
Name = LIBRARIES11.NAME Value = PDF
Name = LIBRARIES11.TIME Value = 16:02:25
Name = LIBRARIES11.VERSION Value = 400.098.010
Name = LIBRARIES2.DATE Value = Jun 26 1998
Name = LIBRARIES2.NAME Value = IRP
Name = LIBRARIES2.TIME Value = 18:10:35
Name = LIBRARIES2.VERSION Value = 100.013.001
Name = LIBRARIES3.DATE Value = Jun 26 1998
Name = LIBRARIES3.NAME Value = DQM
Name = LIBRARIES3.TIME Value = 18:11:31
Name = LIBRARIES3.VERSION Value = 100.013.001
Name = LIBRARIES4.DATE Value = Jun 26 1998
Name = LIBRARIES4.NAME Value = IBASE
Name = LIBRARIES4.TIME Value = 18:01:12
Name = LIBRARIES4.VERSION Value = 100.013.001
Name = LIBRARIES5.DATE Value = Jun 26 1998
Name = LIBRARIES5.NAME Value = DCB
Name = LIBRARIES5.TIME Value = 18:06:22
Name = LIBRARIES5.VERSION Value = 100.013.001
Name = LIBRARIES6.DATE Value = Jun 30 1998
Name = LIBRARIES6.NAME Value = ATC
Name = LIBRARIES6.TIME Value = 11:29:22
Name = LIBRARIES6.VERSION Value = 100.013.001
Name = LIBRARIES7.DATE Value = Jun 29 1998
Name = LIBRARIES7.NAME Value = DSIJ
253
Appendix A
System Files
DSICoTB, option ESS
Name = LIBRARIES7.TIME Value = 17:50:06
Name = LIBRARIES7.VERSION Value = 100.013.001
Name = LIBRARIES8.DATE Value = Jun 26 1998
Name = LIBRARIES8.NAME Value = WFX
Name = LIBRARIES8.TIME Value = 17:52:36
Name = LIBRARIES8.VERSION Value = 100.013.001
Name = LIBRARIES9.DATE Value = Jun 30 1998
Name = LIBRARIES9.NAME Value = DSI
Name = LIBRARIES9.TIME Value = 11:36:19
Name = LIBRARIES9.VERSION Value = 100.013.001
Name = RESTARTCOUNT Value = 0
Name = RESULTS Value = SUCCESS
Name = SUCCESSCOUNT Value = 1
Name = UPTIME Value = Wed Aug 12 16:31:14 1998
Here is the output you should see when you execute the Visual Basic program,
DSICoTB.EXE, option ESS.
LOG
InitSession
Submit: ESS
GetQueueRec
Term
------------------------ Done ------------------------
OUTPUT
ALLOCCOUNT9477
ERRORCOUNT0
FREECOUNT6791
LASTRESTARTWed Aug 12 16:48:37 1998
LIBRARIES11
LIBRARIES1.DATEJun 30 1998
LIBRARIES1.NAMEIRL
LIBRARIES1.TIME11:31:06
LIBRARIES1.VERSION100.013.001
LIBRARIES10.DATEJun 30 1998
LIBRARIES10.NAMEDPR
LIBRARIES10.TIME11:48:16
LIBRARIES10.VERSION400.098.001
LIBRARIES11.DATEAug 5 1998
LIBRARIES11.NAMEPDF
LIBRARIES11.TIME16:02:25
LIBRARIES11.VERSION400.098.010
LIBRARIES2.DATEJun 26 1998
LIBRARIES2.NAMEIRP
LIBRARIES2.TIME18:10:35
LIBRARIES2.VERSION100.013.001
LIBRARIES3.DATEJun 26 1998
LIBRARIES3.NAMEDQM
LIBRARIES3.TIME18:11:31
LIBRARIES3.VERSION100.013.001
LIBRARIES4.DATEJun 26 1998
LIBRARIES4.NAMEIBASE
LIBRARIES4.TIME18:01:12
254
Sample Output Files
DSICoTB, option Roll
Your Own
LIBRARIES4.VERSION100.013.001
LIBRARIES5.DATEJun 26 1998
LIBRARIES5.NAMEDCB
LIBRARIES5.TIME18:06:22
LIBRARIES5.VERSION100.013.001
LIBRARIES6.DATEJun 30 1998
LIBRARIES6.NAMEATC
LIBRARIES6.TIME11:29:22
LIBRARIES6.VERSION100.013.001
LIBRARIES7.DATEJun 29 1998
LIBRARIES7.NAMEDSIJ
LIBRARIES7.TIME17:50:06
LIBRARIES7.VERSION100.013.001
LIBRARIES8.DATEJun 26 1998
LIBRARIES8.NAMEWFX
LIBRARIES8.TIME17:52:36
LIBRARIES8.VERSION100.013.001
LIBRARIES9.DATEJun 30 1998
LIBRARIES9.NAMEDSI
LIBRARIES9.TIME11:36:19
LIBRARIES9.VERSION100.013.001
MESSAGESMSG0002
RESTARTCOUNT1
RESULTSSUCCESS
SUCCESSCOUNT7
UPTIMEWed Aug 12 16:44:15 1998
Here is the output you should see when you execute the Visual Basic program, DSICoTB.EXE, option Roll Your Own.
LOG (left hand side)
InitSession
Submit
USERID USERID
PASSWORDPASSWORD
CONFIG INSURE
GetQueueRecord
GetAttachmentAll
------------------------ Done ------------------------
OUTPUT (right hand side)
CONFIGINSURE
PASSWORDPASSWORD
REPORTTOFORMAKER
RESULTSSUCCESS
RIGHTS9
SECURITY
USERIDUSERID
USRMESSAGE
255
Appendix A
System Files
DSICoTB, option RSS
Here is the output you should see when you execute the Visual Basic program,
DSICoTB.EXE, option RSS.
LOG (left side of window)
InitSession
Submit: RSS
GetQueueRec
Term
------------------------ Done ------------------------
OUTPUT (right side of window)
ALLOCCOUNT12542
ERRORCOUNT0
FREECOUNT9867
LASTRESTARTWed Aug 12 16:48:37 1998
LIBRARIES11
LIBRARIES1.DATEJun 30 1998
LIBRARIES1.NAMEIRL
LIBRARIES1.TIME11:31:06
LIBRARIES1.VERSION100.013.001
LIBRARIES10.DATEJun 30 1998
LIBRARIES10.NAMEDPR
LIBRARIES10.TIME11:48:16
LIBRARIES10.VERSION400.098.001
LIBRARIES11.DATEAug 5 1998
LIBRARIES11.NAMEPDF
LIBRARIES11.TIME16:02:25
LIBRARIES11.VERSION400.098.010
LIBRARIES2.DATEJun 26 1998
LIBRARIES2.NAMEIRP
LIBRARIES2.TIME18:10:35
LIBRARIES2.VERSION100.013.001
LIBRARIES3.DATEJun 26 1998
LIBRARIES3.NAMEDQM
LIBRARIES3.TIME18:11:31
LIBRARIES3.VERSION100.013.001
LIBRARIES4.DATEJun 26 1998
LIBRARIES4.NAMEIBASE
LIBRARIES4.TIME18:01:12
LIBRARIES4.VERSION100.013.001
LIBRARIES5.DATEJun 26 1998
LIBRARIES5.NAMEDCB
LIBRARIES5.TIME18:06:22
LIBRARIES5.VERSION100.013.001
LIBRARIES6.DATEJun 30 1998
LIBRARIES6.NAMEATC
LIBRARIES6.TIME11:29:22
LIBRARIES6.VERSION100.013.001
LIBRARIES7.DATEJun 29 1998
LIBRARIES7.NAMEDSIJ
LIBRARIES7.TIME17:50:06
LIBRARIES7.VERSION100.013.001
256
Sample Output Files
DSICoTB, option SSS
LIBRARIES8.DATEJun 26 1998
LIBRARIES8.NAMEWFX
LIBRARIES8.TIME17:52:36
LIBRARIES8.VERSION100.013.001
LIBRARIES9.DATEJun 30 1998
LIBRARIES9.NAMEDSI
LIBRARIES9.TIME11:36:19
LIBRARIES9.VERSION100.013.001
MESSAGESMSG0001
RESTARTCOUNT2
RESULTSSUCCESS
SUCCESSCOUNT7
UPTIMEWed Aug 12 16:44:15 1998
Here is the output you should see when you execute the Visual Basic program,
DSICoTB.EXE, option SSS.
LOG (left side of window)
InitSession
Submit: SSS
GetQueueRec
Term
------------------------ Done ------------------------
OUTPUT (right side of window)
ALLOCCOUNT9397
ERRORCOUNT0
FREECOUNT6720
LASTRESTARTWed Aug 12 16:48:37 1998
LIBRARIES11
LIBRARIES1.DATEJun 30 1998
LIBRARIES1.NAMEIRL
LIBRARIES1.TIME11:31:06
LIBRARIES1.VERSION100.013.001
LIBRARIES10.DATEJun 30 1998
LIBRARIES10.NAMEDPR
LIBRARIES10.TIME11:48:16
LIBRARIES10.VERSION400.098.001
LIBRARIES11.DATEAug 5 1998
LIBRARIES11.NAMEPDF
LIBRARIES11.TIME16:02:25
LIBRARIES11.VERSION400.098.010
LIBRARIES2.DATEJun 26 1998
LIBRARIES2.NAMEIRP
LIBRARIES2.TIME18:10:35
LIBRARIES2.VERSION100.013.001
LIBRARIES3.DATEJun 26 1998
LIBRARIES3.NAMEDQM
LIBRARIES3.TIME18:11:31
LIBRARIES3.VERSION100.013.001
LIBRARIES4.DATEJun 26 1998
LIBRARIES4.NAMEIBASE
257
Appendix A
System Files
LIBRARIES4.TIME18:01:12
LIBRARIES4.VERSION100.013.001
LIBRARIES5.DATEJun 26 1998
LIBRARIES5.NAMEDCB
LIBRARIES5.TIME18:06:22
LIBRARIES5.VERSION100.013.001
LIBRARIES6.DATEJun 30 1998
LIBRARIES6.NAMEATC
LIBRARIES6.TIME11:29:22
LIBRARIES6.VERSION100.013.001
LIBRARIES7.DATEJun 29 1998
LIBRARIES7.NAMEDSIJ
LIBRARIES7.TIME17:50:06
LIBRARIES7.VERSION100.013.001
LIBRARIES8.DATEJun 26 1998
LIBRARIES8.NAMEWFX
LIBRARIES8.TIME17:52:36
LIBRARIES8.VERSION100.013.001
LIBRARIES9.DATEJun 30 1998
LIBRARIES9.NAMEDSI
LIBRARIES9.TIME11:36:19
LIBRARIES9.VERSION100.013.001
RESTARTCOUNT1
RESULTSSUCCESS
SUCCESSCOUNT6
UPTIMEWed Aug 12 16:44:15 1998
Visited: http://
258
Appendix B
Error Messages
This appendix describes how you can customize the error messages you may receive while using IDS. For more information, see
Displaying Error Messages on page 260 .
This appendix also lists and explains error messages you may receive while using the
Internet Document Server and any of the various bridges.
The messages are grouped in these categories:
•
AFP Error Messages on page 264
•
Error Message Listing on page 266
259
Appendix B
Error Messages
260
D
ISPLAYING
M
E
RROR
ESSAGES
XML layout
The system includes an XML file which provides a template for all server and base rule error messages. You can customize this file if you use custom rules or if you want to modify the description of the problem. The file includes error descriptions, possible causes, and remedies in US English.
You can find examples of how to use this XML file in the Docupresentment samples for
ASP and JSP pages.
Here is an example of the XML file:
<?xml version="1.0" encoding="UTF-8"?>
<ERRORCODES>
<CODE VALUE="ATC0001">
<PARAMETERS>
<VARIABLE/>
</PARAMETERS>
<SEVERITY>Error</SEVERITY>
<CATEGORY>Server configuration</CATEGORY>
<DESCRIPTION>Can not add variable <PARAMETER NAME="VARIABLE">
//ROWSET[@NAME="ATC0001"]//VAR[@NAME="VARIABLE"]</PARAMETER> to the attachment</DESCRIPTION>
<CAUSE>Attachment size is larger than supported by queuing system
<REMEDY>Reduce the size of the attachment. Example, if search request returns too many matches redefine search criteria so number of matches is reduced.
</REMEDY>
</CAUSE>
<CAUSE>Server is running low on memory
<REMEDY>Restart server. If problem persists, report it to tech support</REMEDY>
</CAUSE>
<CAUSE>Memory was corrupted by ill-behaved rule
<REMEDY>If problem persists, report it to tech support</REMEDY>
</CAUSE>
</CODE>
<CODE VALUE="ATC0002">
<PARAMETERS>
<APINAME/>
</PARAMETERS>
<SEVERITY>Error</SEVERITY>
<DESCRIPTION>The virtual memory management API <PARAMETER
NAME="APINAME">
//ROWSET[@NAME="ATC0002"]//VAR[@NAME="APINAME"]</PARAMETER> failed</DESCRIPTION>
<CAUSE>Memory corruption on the server due to ill-behaved rules.
<REMEDY>If problem persists, report it to tech support</REMEDY>
</CAUSE>
</CODE>
<CODE VALUE="DPR0009">
<PARAMETERS/>
<SEVERITY>Warning</SEVERITY>
<CATEGORY>User error</CATEGORY>
<DESCRIPTION>No matches were found for the specified search criteria</DESCRIPTION>
<CAUSE>Search criteria specified by the user resulted in no matches found
<REMEDY>Specify different search criteria</REMEDY>
Displaying Error Messages
</CAUSE>
</CODE>
</ERRORCODES>
Keep in mind...
• All error codes are attributes of the CODE children of the ERRORCODES root element.
• The PARAMETERS child of the CODE element defines the parameters in the error message. In example above, the ATC0001 error code parameter passed with the error message is named VARIABLE.
In the attachment variable name sense, the following attachment variables will be present with ATC0001 error: ATC0001 and ATC00011.VARIABLE. The second number one indicates a row set. You must insert the value of the VARIABLE into the placeholder specified in XML file.
The ATC0001 is a row set in DSI SOAP XML message, so it can also be accessed as an element on the ROWSET XML tree. The placeholder is indicated with the XML element PARAMETER and the text of this element is an xPath you can use to pull the parameter value from the IDS XML SOAP message. See the following sample
IDS message.
• The SEVERITY element defines the severity level such as: error, warning, or info.
• The CATEGORY element defines where the error was generated and the most likely cause, such as: server configuration, bridge configuration, or user error.
• The DESCRIPTION element defines the information displayed to the end user with the parameter placeholders replaced by actual parameter values.
• The CAUSE element defines the probable cause of this error. Since it is possible to have multiple causes, the application should display multiple CAUSE elements.
• The REMEDY element, which is a child of the CAUSE element, provides an explanation how you can correct the problem.
261
Appendix B
Error Messages
Client error handling
Usually the client submits a request to IDS and gets results. One of the attachment variables returned is RESULTS. This value contains the value SUCCESS or the error code.
Since you can have multiple errors, be sure to check RESULTS for the value SUCCESS.
If it is not SUCCESS, the client code should examine the returned results for all error messages, not just the code provided in RESULTS attachment variable. In other words, the attachment variable RESULTS should be considered as a binary indication of successful transaction — whether it was successful or not.
Here is a sample IDS message with an error. This layout shows row set changes, available in IDS 1.8 and higher. Do not compare this layout with messages created by the older versions of IDS.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/ envelope">
<SOAP-ENV:Body>
<DSIMSG VERSION="100.018.0">
<CTLBLOCK>
<UNIQUE_ID>9F2AE2BB6609450887779A836D90D390</UNIQUE_ID>
<REQTYPE>RPD</REQTYPE>
<USERID>USERNAME</USERID>
</CTLBLOCK>
<MSGVARS>
<ROWSET NAME="ERRORS">
<ROW NUM="1">
<VAR NAME="CODE">ATC0001</VAR>
</ROW>
</ROWSET>
<ROWSET NAME="ATC0001">
<ROW NUM="1">
<VAR NAME="VARIABLE">FILENAME</VAR>
</ROW>
</ROWSET>
<VAR NAME="RESULTS">ATC0001</VAR>
</MSGVARS>
</DSIMSG>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
262
Displaying Error Messages
Error reporting for C exceptions
The reporting of C exceptions while running a rule has includes the following information:
• Before the restart, IDS reports the type of C Exception and the rule that triggered the exception. This is reported through normal IDS logging techniques. Here is an example:
ERROR [BLP-0]: 2005-06-30 14:54:23,703 BusinessLogicProcessor The thread tried to read from or write to a virtual address for which it does not have the appropriate access.
ERROR [BLP-0]: 2005-06-30 14:54:23,718 RequestDescription Rule
'tstw32.dll->TSTTestBlowUP' had an exception in Run Forward message.
• After IDS restarts, it sends a message to the client program through the queues to report there was a problem. This is reported via the rowset/error message way of reporting errors. Here is an example:
Result returned back from server
Message variables
RESULTS=SRV0004
Rowsets
ERRORS
Row 1
CODE=SRV0004
SRV0004
Row 1
CURMSG=Server failed to process the request <TSTLIB> due to a fatal error.
263
Appendix B
Error Messages
AFP E
RROR
M
ESSAGES
Character set xxxxxxxx not found…
Error opening overlay: xxxxxxxx
The following information describes how to handle error messages you may encounter while using the Documaker Bridge and AFP print streams.
If you receive this error message, the AFP print stream uses a character set and code page file name instead of coded font file name to specify an AFP font to be used. In this case, you will need to create an additional file called IBMXREF.TBL to provide additional AFP font information. IBMXREF.TBL is a text file that contains pairs of coded font names and character set names. This file should be placed in the directory specified by the
FORMLIB INI setting.
What you are doing is specifying the coded font file name to use when a reference to the character set file is encountered in the AFP print stream. The system searches in the FXR file for the coded font file name to determine font information it needs during the PDF conversion.
When entering the coded font and character set names in IBMXREF.TBL, do not use the first two letters (X0, X1, C0, C1, and so on). The coded font and character set names need to be written in UPPER CASE and separated by at least one space. Each pair of coded font and character set names should be written on separate lines. For example, if you receive an error stating…
Character set C0AR111 not found…
Add a line of coded font and character set names to the IBMXREF.TBL. If a coded font file named X0AR11P contained a reference to the character set file C0AR111, you would add the following line to IBMXREF.TBL:
AR11P AR111
Notice the first two letters of X0AR11P and C0AR111 are omitted from the line added to IBMXREF.TBL. You should have inserted the coded font file, X0AR11P, into the
FXR file previously.
If you have character set files but do not have any coded font files, you can insert a character file into the FXR. However, you must edit the font inserted into the FXR and specify a coded font file name on the Printers page. In this case, use the character set name as the coded font name and change the first letter from C to X. In this case, the pair of names stored in the IBMXREF.TBL will be the same.
If you have a character set file that is used by more than one code page file, you can map each character set/code page file combination to a coded font file named in the FXR. To do this, add a third column to the IBMXREF.TBL. The third column contains the name of code page file. For example, to map the coded font file, X0AR11P, to the character set and code page files, C0AR111, and T1ISI121, you would add this line to IBMXREF.TBL:
AR11P AR111 T1ISI121
Notice the first two letters of X0AR11P and C0AR111 are omitted from the line added to IBMXREF.TBL but the full name of the code page file, T1ISI121, is used.
If you receive this error message, the AFP print stream uses an overlay that the system could not find. Notice the path and file extension of the overlay specified in the error message. Make sure your AFP overlay is stored in the proper directory and contains the expected file extension.
264
AFP Error Messages
Error opening page segment: xxxxxxxx
Error opening logo: xxxxxxxx
If you receive this error message, the AFP print stream uses a page segment that the system could not find. Notice the path and file extension of the page segment specified in the error message. Make sure your AFP page segment is stored in the proper directory and contains the expected file extension.
If you receive this error message, it is likely that the AFP print stream uses a page segment that the system could not find. If so, you would have received an error message for the missing page segment as well. Correct the problem with the missing page segment and this error should disappear as well.
265
Appendix B
Error Messages
Code
ATC0001
ATC0002
ATC0003
DPR0001
DPR0002
DPR0003
DPR0004
DPR0005
E
RROR
M
ESSAGE
L
ISTING
Severity: Category
Message text
Error: Server Configuration
Can not add variable //
ROWSET[@NAME="ATC0001"]//
VAR[@NAME="VARIABLE"] to the attachment.
Cause / Remedy
The attachment size is larger than what is supported by queuing system. Reduce the size of the attachment. For example, if the search request returns too many matches, redefine the search criteria so the number of matches is reduced. Server is running low on memory. Restart server.
If the problem persists, report it to Support.
Memory was corrupted. If the problem persists, report it to Support.
Memory corruption on the server. If the problem persists, report it to Support.
Error: Server Configuration
The virtual memory management API //
ROWSET[@NAME="ATC0002"]//
VAR[@NAME="APINAME"] failed.
Error: User Error
The attachment variable //
ROWSET[@NAME="ATC0003"]//
VAR[@NAME="VARNAME"] could not be located.
Error: User Error
Cannot locate variable //
ROWSET[@NAME="DPR0001"]//
VAR[@NAME="VARIABLE"] in the attachment list.
The attachment variable was not included in the request.
Add the attachment variable to the request.
The attachment variable was misspelled or omitted from the request. Include or correct the spelling of the attachment variable in the request.
The attachment variable was not included in the request.
Add the attachment variable to the request.
The attachment variable was misspelled in the request.
Correct the spelling of the attachment variable in the request.
Error: User Error
No search criteria was specified. The attachment variable //ROWSET[@NAME="DPR0002"]//
VAR[@NAME="FIELDS"] is empty.
Error: Bridge Configuration
The user information database, //
ROWSET[@NAME="DPR0003"]//
VAR[@NAME="FILENAME"] could not be opened.
Error: User Error
The user ID //ROWSET[@NAME="DPR0004"]//
VAR[@NAME="USERID"] is invalid.
Fields attachment variable contains no fields specified for the search criteria. Add search fields to the fields variable in the request.
The database does not exist. Make sure the database exists.The path or name specified for the database are incorrect. Make sure the path and name specified for the database are correct.The database is corrupt. Restore the database from backup.
The user ID provided in the request does not exist in the user database. Provide a correct user ID.
Error: User Error
The password specified for //
ROWSET[@NAME="DPR0005"]//
VAR[@NAME="USERID"] is incorrect.
The password provided does not match the user ID password. Make sure the password spelling and casing is correct.
266
AFP Error Messages
Code
DPR0006
DPR0007
DPR0008
DPR0009
DPR0010
DPR0011
DPR0012
DRP0013
Severity: Category
Message text
Error: Bridge Configuration
The virtual memory management API //
ROWSET[@NAME="DPR0006"]//
VAR[@NAME="APINAME"] failed.
Cause / Remedy
Memory is running low on the server. Restart the server.
If the error persists, report it to Support. Memory corruption on the server. If the error persists, report it to
Support.
Error: Bridge Configuration
The ini option //ROWSET[@NAME="DPR0007"]//
VAR[@NAME="INIOPTION"] could not be located in the group //ROWSET[@NAME="DPR0007"]//
VAR[@NAME="INIGROUP"].
The INI option does not exist in the INI control group.
Add the INI option to the INI control group.
Error: Bridge Configuration
The database API //ROWSET[@NAME="DPR0008"]//
VAR[@NAME="APINAME"] failed accessing the table
//ROWSET[@NAME="DPR0008"]//
VAR[@NAME="TABLENAME"].
The table specified does not exist in the database specified.
Make sure the table specified exists in the database specified.Invalid database connection. Make sure the connection to the database is valid.
Warning: User Error
No matches were found for the specified search criteria.
Search criteria specified by the user resulted in no matches found. Specify different search criteria.
Error: Bridge Configuration
The system encountered an internal error of unknown type. The call by //ROWSET[@NAME="DPR0010"]//
VAR[@NAME="LOCATION"] to //
ROWSET[@NAME="DPR0010"]//
VAR[@NAME="APINAME"] failed.
Unknown internal error. If the problem persists, report the error to Support.
Error: User Error
The attachment field //
ROWSET[@NAME="DPR0011"]//
VAR[@NAME="VARIABLE"] does not contain valid data.
The data specified for the attachment variable is incorrect.
Provide proper data to the attachment variable in the request.The data was corrupted. Restart the server. If the error persists, report it to Support.
Error: Bridge Configuration
The database API //ROWSET[@NAME="DPR0012"]//
VAR[@NAME="APINAME"] cannot locate the table /
/ROWSET[@NAME="DPR0012"]//
VAR[@NAME="TABLENAME"].
The table does not exist in the database specified. Make sure the table exists in the database specified.The path or name for the database containing the table are incorrect.
Make sure the path and name for the database are correct.The name of the table is incorrect. Make sure the name of the table is correct.The table is corrupted or the table format is not correct. Make sure the table is not corrupted and the table format is correct.The connection to the database is invalid. Make sure the connection to the database is valid.
Error: Bridge Configuration
The initialization file //
ROWSET[@NAME="DPR0013"]//
VAR[@NAME="FILENAME"] could not be loaded.
The initialization file specified does not exist. Make sure the initialization file specified exists.The path or name for the initialization file specified are incorrect. Make sure the path and name for the initialization file are correct
267
Appendix B
Error Messages
Code
DPR0014
DPR0015
DPR0016
DPR0017
DPR0018
DPR0019
Severity: Category
Message text
Error: Platform Error
Platform error. Area: //
ROWSET[@NAME="DPR0014"]//
VAR[@NAME="AREA"], Code: //
ROWSET[@NAME="DPR0014"]//
VAR[@NAME="CODE"], Code2: //
ROWSET[@NAME="DPR0014"]//
VAR[@NAME="CODE2"], Message: //
ROWSET[@NAME="DPR0014"]//
VAR[@NAME="MESSAGE"].
Error: Bridge Configuration
FAP Version is not in sync. //
ROWSET[@NAME="DPR0015"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Failed to unload template //
ROWSET[@NAME="DPR0016"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Cannot locate variable //
ROWSET[@NAME="DPR0017"]//
VAR[@NAME="VARIABLE"].
Error: Bridge Configuration
Cannot load font cross reference file //
ROWSET[@NAME="DPR0018"]//
VAR[@NAME="PATH"]\//
ROWSET[@NAME="DPR0018"]//
VAR[@NAME="FILE"]//
ROWSET[@NAME="DPR0018"]//
VAR[@NAME="EXTENSION"].
Error: Bridge Configuration
Cannot retrieve data into the //
ROWSET[@NAME="DPR0019"]//
VAR[@NAME="FILE"] file. ARCRetrieveDoc API failed. CATALOGKEY=//
ROWSET[@NAME="DPR0019"]//
VAR[@NAME="CATALOGKEY"], CARID=//
ROWSET[@NAME="DPR0019"]//
VAR[@NAME="CARID"].//
ROWSET[@NAME="DPR0019"]//
VAR[@NAME="PATH"]\//
ROWSET[@NAME="DPR0019"]//
VAR[@NAME="FILE"]//
ROWSET[@NAME="DPR0019"]//
VAR[@NAME="EXTENSION"].
Cause / Remedy
Internal error. The code and message provide more detailed information. If the problem persists, report the error to Support.
The installation of the server is not in sync with DLL versions. Possibly a manual DLL installation was done incorrectly.
Either reinstall the server and bridges or replace the offending DLL files with the appropriate version ones.
The HTML template could not be unloaded. Check that the path specified exists and there is available space on the disk.
Some or all of the rules prior to the rule reporting this error failed. Examine the other error messages for the cause and correct it. The rules in the request type did not save the variable specified prior to its call. Make sure all the required rules are specified in the request type.
The path, file name or extension are incorrect. Make sure the path, file name and extension specified are correct.The font cross reference file does not exist at the specified location. Make sure the font cross reference file exists at the specified location.
Invalid path, file name or extension specified. Make sure the path, file name and extension provided are correct.Archive file does not exist. Make sure the archive file provided exists.Invalid CATALOGKEY or CARID.
Make sure the CATALOGKEY and CARID provided exist.Invalid Archive Index file or corrupted database.
Make sure the Archive Index file and database are not invalid or corrupted. Restore from backup if needed.
268
AFP Error Messages
Code
DPR0020
DPR0021
DPR0022
DPR0023
DPR0024
DPR0025
DPR0026
DPR0027
DPR0028
Severity: Category
Message text
Error: Bridge Configuration
DSLoadFormList API failed on file //
ROWSET[@NAME="DPR0020"]//
VAR[@NAME="FILE"].
Cause / Remedy
Invalid path or file name. Make sure the path and file name specified are correct.The file does not exist. Make sure the file specified exists.
Error: Bridge Configuration
DSLoadNAFormset API failed on file //
ROWSET[@NAME="DPR0021"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Cannot add variable //
ROWSET[@NAME="DPR0022"]//
VAR[@NAME="VARIABLE"] to the attachment list.
Invalid path or file name. Make sure the path and file name specified are correct.The file does not exist. Make sure the file specified exists.
The max size of the queue message was reached. Reduce the size of the message. For instance, if the message is too large due to too many matches found using the search criteria, consider refining the search criteria. Use a more advanced queueing system. Internal error If the problem persists report it to Support.
Error: Bridge Configuration
Failed to get current record ID in //
ROWSET[@NAME="DPR0023"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Cannot create DSI variable //
ROWSET[@NAME="DPR0024"]//
VAR[@NAME="VARIABLE"].
The record does not exist. Check records in the database.
Memory is running low on the server. Restart the server.
If the error persists, report it to Support.Memory was corrupted. If the problem persists, report it to Support.
Error: Bridge Configuration
Cannot add variable //
ROWSET[@NAME="DPR0025"]//
VAR[@NAME="VARIABLE"] to the attachment record
//ROWSET[@NAME="DPR0025"]//
VAR[@NAME="RECORD"].
The max size of the queue message was reached. Reduce the size of the message. For instance. if the message is too large due to too many matches found using the search criteria, consider refining the search criteria. Use a more advanced queueing system. Internal error If the problem persists report it to Support.
Error: Bridge Configuration
Cannot load the import file //
ROWSET[@NAME="DPR0026"]//
VAR[@NAME="FILE"].
Invalid path or import file name. Make sure the path and file name for the import file are correct.Import file variable not specified. Make sure the import file variable is specified in the request.
Error: Bridge Configuration
Cannot load the form set definition file //
ROWSET[@NAME="DPR0027"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Cannot load FAP File for image //
ROWSET[@NAME="DPR0028"]//
VAR[@NAME="IMAGE"].
Invalid path or form set file name specified. Verify the path and form set file name specified correct.The form set file does not exist. Make sure the form set file exists at the specified location.
FAP file cannot be loaded from library. Make sure
DPRSetConfig rule is called in the request type prior to attempting to load the FAP file.FAP file not found. Make sure the path and name of the FAP file are valid.
269
Appendix B
Error Messages
Code
DPR0029
DPR0030
DPR0031
DPR0032
DPR0033
DPR0034
DPR0035
Severity: Category
Message text
Warning: Bridge Configuration
Loading of the provided import file resulted in an empty formset.
Cause / Remedy
Invalid import file. Make sure the import file is valid.
Possibly the group or form specified does not exist.
Error: Bridge Configuration
The combination of group names(//
ROWSET[@NAME="DPR0030"]//
VAR[@NAME="GROUPNAME1"]) and (//
ROWSET[@NAME="DPR0030"]//
VAR[@NAME="GROUPNAME2"]) and the form name (//ROWSET[@NAME="DPR0030"]//
VAR[@NAME="FORMNAME"]) does not exist in the form definition file. Invalid import data.
Group name 1, group name 2, or the form name specified in the import file are incorrect. Specify the correct information
Error: Bridge Configuration
Cannot open import file //
ROWSET[@NAME="DPR0031"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
No form name provided in the import file.
Invalid path or name for import file. Make sure the path and name of the import file are valid.The import file specified does not exist. Make sure the import file exists.
The form names specified in the import file are incorrect or missing. Specify the correct information
Error: Bridge Configuration
Cannot parse import file. Line //
ROWSET[@NAME="DPR0031"]//
VAR[@NAME="LINEDATA"].
Import file is not well formed. Verify that the import file is well formed.
Error: Bridge Configuration
The combination of group names (//
ROWSET[@NAME="DPR0034"]//
VAR[@NAME="GROUPNAME1"]) and (//
ROWSET[@NAME="DPR0034"]//
VAR[@NAME="GROUPNAME2"]) and the form name (//ROWSET[@NAME="DPR0034"]//
VAR[@NAME="FORMNAME"]) and image name (//
ROWSET[@NAME="DPR0034"]//
VAR[@NAME="LINEDATA"]) does not exist in the form definition file. Invalid import data.
Invalid Group 1, Group2, form name, or image name specified. Make sure the import file is valid for the current configuration and that the group1, group2, form name and image name specified are valid.
Error: Bridge Configuration
Cannot open the export file //
ROWSET[@NAME="DPR0035"]//
VAR[@NAME="FILENAME"]. Error reported by OS /
/ROWSET[@NAME="DPR0035"]//
VAR[@NAME="ERRORNO"].
Invalid path or file name specified. Verify the path and file name are valid.The system encountered an error when opening the export file. Look up additional documentation for the operating system error code
270
AFP Error Messages
Code
DPR0036
DPR0037
DPR0038
DPR0039
DPR0040
DPR0041
DPR0042
DPR0043
Severity: Category
Message text
Error: Bridge Configuration
DSI variable //ROWSET[@NAME="DPR0036"]//
VAR[@NAME="VARIABLE"] does not contain a valid
FAP form set.
Cause / Remedy
Rules executed prior to this one on the request type failed.
Examine the other error messages and correct the problem. An invalid form set was saved to the DSI variable.
Make sure the rules in the request type are saving the form set prior to its usage.
Check the description of the rules in the SDK.The form set has been corrupted. Restart the server. If the problem persists, contact Support.
Error: Bridge Configuration
The attachment variable //
ROWSET[@NAME="DPR0037"]//
VAR[@NAME="VARIABLE"] with value //
ROWSET[@NAME="DPR0037"]//
VAR[@NAME="VALUE"] is not a valid encrypted string.
The client requests an non-existing document. Correct the client request. The request expects an encrypted string but a properly encrypted string was not provided.
Make sure the request is being passed the appropriate parameters and that the appropriate rules are being used in the request.
Check the description of the rules and their input and output parameters in the SDK.
Error: Bridge Configuration
The rule parameters //
ROWSET[@NAME="DPR0038"]//
VAR[@NAME="PARAMETERS"] for the rule //
ROWSET[@NAME="DPR0038"]//
VAR[@NAME="RULE"] are not correct or empty.
Error: Bridge Configuration
The call by //ROWSET[@NAME="DPR0039"]//
VAR[@NAME="LOCATION"] to API //
ROWSET[@NAME="DPR0039"]//
VAR[@NAME="APINAME"] failed.
The parameters are incorrect or empty for the rule. Verify the parameters expected by the rule are valid.
The parameters passed to the API are invalid. Verify all expected parameters by the API are valid.An internal server error occurred. If the error persists, contact Support
Error: Bridge Configuration
DSI variable //ROWSET[@NAME="DPR0040"]//
VAR[@NAME="VARIABLE"] does not contain valid data.
The data saved to the variable was invalid. Make sure the appropriate rules are being used in the request type. Hint. lookup a description of the rules in the SDK.The data for
DSI variable was corrupted. If the error persists, contact
Support.
Error: Bridge Configuration
The record is locked by another user.
Warning: Bridge Configuration
The record is locked by another user.
Another user locked the record. Make sure the record is not locked or use a USERID that matches the ID for the locked record.
Another user locked the record. Make sure the record is not locked or use a USERID that matches the ID for the locked record.
Error: Bridge Configuration
Failed to DBQueryFormatInfo from //
ROWSET[@NAME="DPR0043"]//
VAR[@NAME="FILE"].
Invalid path or DFD file name. Make sure the path and
DFD file name are correct.
271
Appendix B
Error Messages
Code
DPR0044
DPR0045
DPR0046
DPR0047
DPR0048
DPR0049
DPR0050
DPR0051
DPR0052
Severity: Category
Message text
Error: Bridge Configuration
Failed to DBInitializeFile //
ROWSET[@NAME="DPR0044"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Failed to DBOpen //
ROWSET[@NAME="DPR0045"]//
VAR[@NAME="FILE"].
Cause / Remedy
Invalid database name. Make sure the path and database file name are correct for file based databases. Make sure the database name and setup are correct for network based databases.
Invalid database name. Make sure the path and database file name are correct for file based databases. Make sure the database name and setup are correct for network based databases.
Error: Bridge Configuration
Failed to UTLLockARC //
ROWSET[@NAME="DPR0046"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Call to ARCInit API failed. File: //
ROWSET[@NAME="DPR0047"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Failed to ArcArchiveDataFile //
ROWSET[@NAME="DPR0048"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Failed to create XML document in //
ROWSET[@NAME="DPR0049"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Failed to export the form set to XML in //
ROWSET[@NAME="DPR0050"]//
VAR[@NAME="LOCATION"].
Invalid path or file name. Make sure the path and file name are valid.
Invalid path or file name. Make sure the path and file name are valid.The archive data or index is corrupt.
Restore from backup. If the problem persists contact
Support
Invalid path or file name. Make sure the path and file name are valid.The archive data or index is corrupt.
Restore from backup. If the problem persists contact
Support
Invalid path. Make sure the path exists and the server has access rights to it.
Invalid path. Make sure the path exists and the server has access rights to it.
Error: Bridge Configuration
Failed to unload the XML file //
ROWSET[@NAME="DPR0051"]//
VAR[@NAME="FILE"] in //
ROWSET[@NAME="DPR0051"]//
VAR[@NAME="LOCATION"].
Invalid path or file name. Verify the path and file name are valid.
Error: Bridge Configuration
Failed to decrypt the attachment variable //
ROWSET[@NAME="DPR0052"]//
VAR[@NAME="VARIABLE"] in the wild card search.
One of the matching wildcard search variables cannot be decrypted. Refine the wildcard specification which variables needs to be decrypted
272
AFP Error Messages
Code
DPR0053
DPR0054
DPR0055
DPR0056
DPR0057
DPR0058
Severity: Category
Message text
Error: Bridge Configuration
Unable to get random seed value in //
ROWSET[@NAME="DPR0053"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
The global data setup is incorrect. Make sure the global data setup is correct in the initialization file.The request type has not been configured correctly in the initialization file. Make sure the request type is configured correctly.
Check the description of the rules in the SDK.The name/ value pairs in the request are incorrect or missing. Make sure the name/value pairs in the request are correct, and that all expected name/value pairs have been provided to the rules in the request type.
Error: User Error
Invalid Login.
Invalid user ID or password Specify the correct user ID and password. The Request expects an encrypted user ID but one was not provided. Make sure the request type is properly configured.The global data setup is incorrect.
Make sure the global data setup is correct in the initialization file. Check the global data setup in the SDK and in the IDS documentation.
The request type has not been configured correctly in the initialization file. Make sure the request type is configured correctly. Check the description of the rules in the SDK.
The name/value pairs in the request are incorrect or missing. Make sure the name/value pairs in the request are correct, and that all expected name/value pairs have been provided to the rules in the request type.
The global data setup is incorrect. Verify the setup in the
INI file for the global data is correct. Check the global data setup in the SDK and IDS documentation.
Error: Bridge Configuration
Unable to DSIGlobalDataCreate in //
ROWSET[@NAME="DPR0055"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
The ini option //ROWSET[@NAME="DPR0056"]//
VAR[@NAME="INIOPTION"] in ini group //
ROWSET[@NAME="DPR0056"]//
VAR[@NAME="INIGROUP"] does not contain a valid value.
The INI option is set up incorrectly. Verify the INI option used is valid.
Error: Bridge Configuration
The Filename specified at location //
ROWSET[@NAME="DPR0057"]//
VAR[@NAME="FILENAME"] is not properity present.
The location for the file specified in the INI file is incorrect. Verify that the location specified is correct.
Error: Bridge Configuration
The call by //ROWSET[@NAME="DPR0058"]//
VAR[@NAME="LOCATION"] to //
ROWSET[@NAME="DPR0058"]//
VAR[@NAME="APINAME"] failed.
The status code has been changed by another user. Make sure no one else is updating the current record.
273
Appendix B
Error Messages
Code
DPR0059
DPR0060
DPR0061
DPR0062
DPR0063
DPR0064
DPR0065
DPR0066
Severity: Category
Message text
Error: Bridge Configuration
Failed to unload //ROWSET[@NAME="DPR0059"]//
VAR[@NAME="FILE"] at location //
ROWSET[@NAME="DPR0059"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
The location for the file specified is incorrect. Verify that the location specified is correct.The API that unloads the file failed. Verify the API that generates the file runs successfully. Contact Support.
Error: Bridge Configuration
Cannot open file //ROWSET[@NAME="DPR0060"]//
VAR[@NAME="FILE"] at location //
ROWSET[@NAME="DPR0060"]//
VAR[@NAME="LOCATION"].
The file specified does not exist. Make sure the file specified exists. If the file is generated by another rule, make sure that rule ran successfully.
Error: Bridge Configuration
Unable to WIPFind the record //
ROWSET[@NAME="DPR0061"]//
VAR[@NAME="RECORDID"].
There is no matching record in the WIP file for the record
ID provided.
Make sure there is a matching record in the WIP file for the record ID provided.
Error: Bridge Configuration
Unable to WIPDelete the record //
ROWSET[@NAME="DPR0062"]//
VAR[@NAME="RECORID"].
There is no matching record in the WIP file for the record
ID provided.
Make sure there is a matching record in the WIP file for the record ID provided.
Error: Bridge Configuration
Failed to load XML file //
ROWSET[@NAME="DPR0063"]//
VAR[@NAME="FILE"] at location //
ROWSET[@NAME="DPR0063"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Failed to execute DAL script //
ROWSET[@NAME="DPR0064"]//
VAR[@NAME="NAME"].
Error: Bridge Configuration
Cannot locate printer driver //
ROWSET[@NAME="DPR0065"]//
VAR[@NAME="VARIABLE"].
Error: Bridge Configuration
Can not locate field //
ROWSET[@NAME="DPR0066"]//
VAR[@NAME="VARIABLE"] in the //
ROWSET[@NAME="DPR0066"]//
VAR[@NAME="LOCATION"] DFD.
The XML file specified does not exist. Verify the file exists.The rule or API that generates the file failed. Verify the rule or API that generates the file run successfully - contact Support.
The script does not exist at the specified location. Make sure the specified location is correct.The script contains one or more errors.
Make sure the script is valid. The GenData program is not configured correctly to run the script successfully. Test the
GenData program and the script independently to make sure there are no errors.
The printer driver is not configured correctly in the INI file. Verify the configuration.There was no print driver specified for the request. Specify a print driver.There is no library for the printer driver specified. Make sure the library is present for the printer driver specified.
The field does not exist in the DFD. Make sure the field exists in the DFD.
274
AFP Error Messages
Code
DPR0067
DPR0068
DPR0069
DPR0070
DPR0071
DPR0072
DPR0073
DPR0074
Severity: Category
Message text
Error: Bridge Configuration
The INI Group //ROWSET[@NAME="DPR0067"]//
VAR[@NAME="INIGROUP"] was not found in the
INI file.
Cause / Remedy
The INI file is missing the INI group specified. Make sure the INI file includes the INI group specified.
Error: Bridge Configuration
The INI Group //ROWSET[@NAME="DPR0068"]//
VAR[@NAME="INIGROUP"] in the INI file is not configured correctly.
The INI group specified is not configured correctly. Make sure the INI group specified is configured correctly for the rules in the request type.
Error: Bridge Configuration
No search criteria specified.
The request specified contains one or more rules that search a database but no search criteria was specified.
Make sure the rules for the request type contain any input attachment variables or rule arguments required. If the search criteria is optional, this may be just a warning indicating all records will be returned.
Error: Bridge Configuration
The variable //ROWSET[@NAME="DPR0070"]//
VAR[@NAME="VAR"] for the //
ROWSET[@NAME="DPR0070"]//
VAR[@NAME="LOCATION"] DFD is not configured correctly.
The internal or external lengths for the field are not set correctly in the DFD or the value specified has a length that exceeds one or more lengths specified. Make sure the length of the value specified does not exceed the lengths in the DFD.
Error: User Error
The attachment variable //
ROWSET[@NAME="DPR0071"]//
VAR[@NAME="VAR"] does not contain valid data.
The value //ROWSET[@NAME="DPR0071"]//
VAR[@NAME="VALUE"] is invalid.
Invalid data was submitted in the attachment variable.
Specify the correct data in the attachment variable.
Fields defined in DFD may not be consistent. Check DFD file and records in the database.
Error: User Error
Failed to update the wip record in //
ROWSET[@NAME="DPR0072"]//
VAR[@NAME="LOCATION"].
Error: User Error
Failed to retrieve field information for DFD //
ROWSET[@NAME="DPR0073"]//
VAR[@NAME="DFD"].
Error: User Error
Failed to create a formset handle in //
ROWSET[@NAME="DPR0074"]//
VAR[@NAME="LOCATION"].
Maybe invalid path or DFD file name Make sure the path and DFD file name are correct.
275
Appendix B
Error Messages
Code
DPR0075
DPR0076
DPR0077
DPR0078
DPR0079
DPR0080
DPR0081
DPR0082
Severity: Category
Message text
Error: User Error
Unable to find the wip record for the user ID //
ROWSET[@NAME="DPR0075"]//
VAR[@NAME="KEY"] in //
ROWSET[@NAME="DPR0075"]//
VAR[@NAME="LOCATION"].
Error: User Error
Unable to get an unique file name in //
ROWSET[@NAME="DPR0076"]//
VAR[@NAME="LOCATION"].
Error: User Error
Failed to add a wip record in //
ROWSET[@NAME="DPR0077"]//
VAR[@NAME="LOCATION"].
Error: User Error
Unable to add RECORDID (UNIQUE_ID or
RECNUM) to output attachment in //
ROWSET[@NAME="DPR0078"]//
VAR[@NAME="LOCATION"].
Error: User Error
Unable to get an unique string in //
ROWSET[@NAME="DPR0079"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
There is no matching record in the WIP file for the user
ID. Check records in the WIP file for the specified user ID.
The form set ID maybe missing. Check the FormSetID field in the WIP DFD and data file.
Maybe a invalid path or DFD file. Make sure the path and
DFD file name are correct.
Maybe a invalid path or DFD file. Make sure the path and
DFD file name are correct.
Error: User Error
Unable to get field value //
ROWSET[@NAME="DPR0080"]//
VAR[@NAME="FIELD"] in //
ROWSET[@NAME="DPR0080"]//
VAR[@NAME="LOCATION"].
Field is not defined in DFD file or value does not exists in
WIP file. Check the existence of field in DFD file and value in WIP file.
Error: User Error
Cannot open WIP table //
ROWSET[@NAME="DPR0081"]//
VAR[@NAME="WIPTABLE"].
Used incorrect path or file name. Check WIP table file path and name.
Error: User Error
Unable to retrieve the stored wip record and file handle in //ROWSET[@NAME="DPR0082"]//
VAR[@NAME="LOCATION"].
DFD handle and record buffer are not located Verify if the
WIP record and file handle are ever stored.
276
AFP Error Messages
Code
DPR0084
DPR0085
DPR0086
DPR0087
DPR0088
DPR0089
DPR0090
DPR0091
DPR0092
Severity: Category
Message text
Error: User Error
Failed to get current record //
ROWSET[@NAME="DPR0084"]//
VAR[@NAME="RECORDID"] in //
ROWSET[@NAME="DPR0084"]//
VAR[@NAME="LOCATION"].
Error: User Error
Failed to get current record in //
ROWSET[@NAME="DPR0085"]//
VAR[@NAME="LOCATION"].
Error: User Error
Failed to load WIP Formset ID: //
ROWSET[@NAME="DPR0086"]//
VAR[@NAME="FORMSETID"] in //
ROWSET[@NAME="DPR0086"]//
VAR[@NAME="LOCATION"].
Error: User Error
Failed to Delete WIP Formset ID: //
ROWSET[@NAME="DPR0087"]//
VAR[@NAME="FORMSETID"] in //
ROWSET[@NAME="DPR0087"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Failed to intialize library(s) for configuration //
ROWSET[@NAME="DPR0088"]//
VAR[@NAME="CONFIG"].
Error: User Error
Unable to update user information //
ROWSET[@NAME="DPR0089"]//
VAR[@NAME="USERID"] to user database.
Cause / Remedy
There is no matching record in the WIP file for the provided record ID. Verify the record in the WIP file for the record ID.
There is no matching record in the WIP file for the provided record ID. Verify the record in the WIP file for the record ID.
There is no matching WIP data for the provided form set
ID. Verify the WIP data for the form set ID.
An error was encountered deleting form set data for this
FormSetID. Review configuration and data source.
The library manager setup in the bridge initialization file is incorrect. Check the setup of the library manager in configuration INI file.
The user may not exist in the user database. Check the
USERINFO.DBF file.
Error: Internal Error
Unable to add //ROWSET[@NAME="DPR0090"]//
VAR[@NAME="USERID"] to user database.
Unknown internal error. If the problem persists, report the error to Support.
Error: User Error
Cannot add user //ROWSET[@NAME="DPR0091"]//
VAR[@NAME="USERID"] to user database.
The user may already exist in the user database. Check the
USERINFO.DBF file.
Error: User Error
Unable to delete //ROWSET[@NAME="DPR0092"]//
VAR[@NAME="USERID"] from user database.
The user may not exist in the user database. Check the
USERINFO.DBF file.
277
Appendix B
Error Messages
Code
DPR0093
DPR0097
DPR0098
DPR0099
DPR0100
DPR0101
DPR0102
DPR0103
Severity: Category
Message text
Error: User Error
Cannot modify user records.
Cause / Remedy
Missing action mode. Check the input attachment variable ACTION.
Error: User Error
Attachment form //ROWSET[@NAME="DPR0097"]/
/VAR[@NAME="FORM"] metadata specifed DSI attachment variable //
ROWSET[@NAME="DPR0097"]//
VAR[@NAME="VARIABLE"] but this variable was not found. File will not be loaded.
XML form set specified DSI variable in form metadata but
DSI variable was not found. Check the input attachment variables.
Error: User Error
Attachment form //ROWSET[@NAME="DPR0098"]/
/VAR[@NAME="FORM"] metadata specifed DSI file attachment with delimeter //
ROWSET[@NAME="DPR0098"]//
VAR[@NAME="VARIABLE"] but this file was not attached to DSI message. File will not be loaded.
XML form set specified that file was attached to DSI message in form metadata but DSI file was not found in the message. Check the files attached to DSI message.
Error: User Error
Attachment form //ROWSET[@NAME="DPR0099"]/
/VAR[@NAME="FORM"] metadata is missing required value //ROWSET[@NAME="DPR0099"]//
VAR[@NAME="INFO"]. File will not be loaded.
XML form set specified attachment form which is missing required metadata. Check the XML form set and form metadata
Error: User Error
Failed to load attached file specified by attachment form //ROWSET[@NAME="DPR0100"]//
VAR[@NAME="FORM"] File name //
ROWSET[@NAME="DPR0100"]//
VAR[@NAME="FILE"] of type //
ROWSET[@NAME="DPR0100"]//
VAR[@NAME="TYPE"].
Failed to load file specified by attachment form Make sure the file type was specified correctly. Make sure the file exists. Make sure the file type is supported
Error: Bridge Error
Failed to load dynamic link library //
ROWSET[@NAME="DPR0100"]//
VAR[@NAME="LIBRARY"].
Error: Bridge Error
Cannot locate variable //
ROWSET[@NAME="DPR0102"]//
VAR[@NAME="VARIABLE"] in the attachment list after executing Documanage bridge rules.
Error: Bridge Error
Documaker (gendata) did not return EWPS publish response.
Dynamic link library was not found or has unresolved dependencies. Check that the specified library is installed.
Make sure the version of specified library matches the installation of the bridge.
Documanage Bridge failed to retrieve specified file.
Examine the Documanage Bridge errors and correct problems.
Documaker (GenData) failed to create EWPS publish response. Check version and patch level of GenData and make sure EWPS is supported in this version
278
AFP Error Messages
Code
RPD0001
RPD0002
RPD0003
RPD0004
RPD0005
RPD0006
RPD0007
Severity: Category
Message text
Error: User Error
Can not locate variable //
ROWSET[@NAME="RPD0001"]//
VAR[@NAME="VARIABLE"] in the attachment list at
//ROWSET[@NAME="RPD0001"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
Attachment variable wa misspelled or not included in the request. Check the attachment variable in the request.
Error: Bridge Configuration
Can not Create //ROWSET[@NAME="RPD0002"]//
VAR[@NAME="TAGNAME"] at //
ROWSET[@NAME="RPD0002"]//
VAR[@NAME="LOCATION"].
Invalid location or server access rights. Make sure the path exists and server access rights.
Memory is running low on the server. Restart the server.
If the error persists, report it to Support.
Error: Bridge Configuration
Can not create DSI variable //
ROWSET[@NAME="RPD0003"]//
VAR[@NAME="VARIABLE"] at //
ROWSET[@NAME="RPD0003"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Can not add variable //
ROWSET[@NAME="RPD0004"]//
VAR[@NAME="VARIABLE"] to attachment at //
ROWSET[@NAME="RPD0004"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Can not locate DSI variable //
ROWSET[@NAME="RPD0005"]//
VAR[@NAME="VARIABLE"] at //
ROWSET[@NAME="RPD0005"]//
VAR[@NAME="LOCATION"].
The maximum size of the queue message was reached.
Reduce the size of the message. For instance, if the message size is too large due to too many matches found using the search criteria, consider refining the search criteria.
Specified variable was not created prior to this call. Make sure all the required rules are specified in the request type.
Error: User Error
DSI variable //ROWSET[@NAME="RPD0006"]//
VAR[@NAME="VARIABLE"] does not contain valid data. Failed to //ROWSET[@NAME="RPD0006"]//
VAR[@NAME="LOCATION"].
The data specified for the attachment variable is incorrect.
Provide proper data to the attachment variable in the request.The data was corrupted. Restart the server. If the error persists, report it to Support.
Error: User Error
File //ROWSET[@NAME="RPD0007"]//
VAR[@NAME="FILENAME"] does not exists. Failed to //ROWSET[@NAME="RPD0007"]//
VAR[@NAME="LOCATION"].
GenData did not return results. Make sure the GenData configuration is correct.GenData experienced errors before it had a chance to return results. Test the GenData program independently and make sure it runs without errors.GenData is not configured to run under IDS. Make sure the IDS configuration and AFGJOB files are configured correctly.
279
Appendix B
Error Messages
Code
RPD0008
RPD0009
RPD0010
RPD0011
RPD0012
RPD0013
RPD0014
RPD0015
Severity: Category
Message text
Error: Bridge Configuration
The call by //ROWSET[@NAME="RPD0008"]//
VAR[@NAME="LOCATION"] to API //
ROWSET[@NAME="RPD0008"]//
VAR[@NAME="APINAME"].
Cause / Remedy
The parameters passed to the API are invalid Verify all expected parameters by the API are valid.An internal server error occurred. If the error persists, contact Support
Error: Bridge Configuration
The INI option //ROWSET[@NAME="RPD0009"]//
VAR[@NAME="INIOPTION"] cound not be located in the group //ROWSET[@NAME="RPD0009"]//
VAR[@NAME="INIGROUP"].
The INI option does not exist in the INI control group.
Add the INI option to the INI group.control
Error: Bridge Configuration
Can not create DSI variable //
ROWSET[@NAME="RPD0010"]//
VAR[@NAME="VARIABLE"].//
ROWSET[@NAME="RPD0010"]//
VAR[@NAME="LOCATION"] failed.
Memory is running low on the server. Restart the server.
If the error persists, report it to Support.
GenData stopped due to a fatal error. Correct the error and resubmit. If the error persists, report it to Support.
Error: Bridge Configuration
Unexpected Program Termination of GenData in //
ROWSET[@NAME="RPD0011"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Socket connection failure in //
ROWSET[@NAME="RPD0012"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Can not unload jobticket to msg buffer in //
ROWSET[@NAME="RPD0013"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Can not load msg buffer to joblog in //
ROWSET[@NAME="RPD0014"]//
VAR[@NAME="LOCATION"].
Encountered a fatal error when IDS establishes the socket connection to RP. Correct the error and resubmit. If the error persists, report it to Support.
Unknown internal error. If the error persists, report it to
Support.
Unknown internal error. If the error persists, report it to
Support.
Error: Bridge Configuration
Can not open RPD error file //
ROWSET[@NAME="RPD0015"]//
VAR[@NAME="FILENAME"] at //
ROWSET[@NAME="RPD0015"]//
VAR[@NAME="LOCATION"].
Unknown internal error. If the error persists, report it to
Support.
280
AFP Error Messages
Code
RPD0016
RPD0017
RPD0018
RPD0020
IRL0001
IRL0002
IRL0003
IRL0004
IRL0005
IRL0006
Severity: Category
Message text
Error: Bridge Configuration
Socket time out in //ROWSET[@NAME="RPD0016"]/
/VAR[@NAME="LOCATION"].
Cause / Remedy
Possible GenData failure. If the error persists, report it to
Support.
Error: Bridge Configuration
Time exceeded MaxWaitForStart in //
ROWSET[@NAME="RPD0017"]//
VAR[@NAME="LOCATION"].
Unexpected termination of GenData. Fix GenData errors and try again.
Error: Bridge Configuration
Gendata failure in //ROWSET[@NAME="RPD0018"]/
/VAR[@NAME="LOCATION"].
GenData failed. Fix GenData errors and try again.
Error: Bridge Configuration
Show error: //ROWSET[@NAME="RPD0020"]//
VAR[@NAME="Error"].
Error: User Error
The required attachment variable //
ROWSET[@NAME="IRL0001"]//
VAR[@NAME="LOCATION"] could not be located.
GenData failed. Fix GenData errors and try again.
The attachment variable was not included in the request.
Include the attachment variable in the request.The attachment variable was misspelled in the request. Make sure the attachment variable is properly spelled in the request.
Error: User Error
No search criteria was specified. The attachment variable //ROWSET[@NAME="IRL0002"]//
VAR[@NAME="FIELDS"] is empty.
The Fields variable in the request is empty. Add the appropriate search fields to the fields variable in the request.
Error: User Error
The user information database, //
ROWSET[@NAME="IRL0003"]//
VAR[@NAME="FILENAME"] could not be opened.
Invalid path or file name. Make sure the path and file name are valid.The User Database does not exist Make sure the user database exists at the specified location.
Make sure the user ID is valid.
Error: User Error
The user ID //ROWSET[@NAME="IRL0004"]//
VAR[@NAME="USERID"] is invalid.
Error: User Error
The password for user //
ROWSET[@NAME="IRL0005"]//
VAR[@NAME="USERID"]is incorrect.
Make sure the spelling and casing of the password are correct.
Error: Server Configuration
The virtual memory management API //
ROWSET[@NAME="IRL0006"]//
VAR[@NAME="APINAME"] failed.
Memory corruption on the server. If the error persists, report it to Support.Server is running low on memory.
Restart the server. If the error persists, report it to Support.
281
Appendix B
Error Messages
Code
IRL0007
IRL0008
IRL0009
IRL0010
IRL0011
IRL0012
IRL0013
Severity: Category
Message text
Error: Server Configuration
The ini option //ROWSET[@NAME="IRL0007"]//
VAR[@NAME="INIOPTION"] could not be located in the group //ROWSET[@NAME="IRL0007"]//
VAR[@NAME="INIGROUP"].
Cause / Remedy
The INI option does not exists in the INI control group.
Add the INI option to the INI control group.
Error: Server Configuration
The database API //ROWSET[@NAME="IRL0008"]//
VAR[@NAME="APINAME"] failed accessing the table
//ROWSET[@NAME="IRL0008"]//
VAR[@NAME="TABLENAME"].
Invalid path, database name or table name. Make sure the path, database name and table name are correct.The table does not exist. Make sure the table specified exists in the database specified.Invalid or corrupted table. Make sure the table is valid.
Warning: Server Configuration
No matches were found for the search criteria.
The search criteria is incorrect. Provide valid search criteria.
Error: Server Configuration
The system encountered an internal error of unknown type. The call by //ROWSET[@NAME="IRL0010"]//
VAR[@NAME="LOCATION"] to API //
ROWSET[@NAME="IRL0010"]//
VAR[@NAME="APINAME"] failed.
Internal error. If the error persists, report it to Support.
Error: Server Configuration
The attachment field //
ROWSET[@NAME="IRL0011"]//
VAR[@NAME="VARIABLE"] does not contain valid data.
Invalid data specified for the attachment variable. Specify the correct data for the attachment variable in the request.
Error: Bridge Configuration
The queue management API //
ROWSET[@NAME="IRL0012"]//
VAR[@NAME="APINAME"] failed.
Error: Server Configuration
The initialization file, //
ROWSET[@NAME="IRL0013"]//
VAR[@NAME="FILENAME"] could not be loaded.
The queue management system has not been setup properly. Make sure the initialization settings for the queue management system are correct and restart the web server software and the internet document server.The queue management system software has not been setup properly. Verify the queue management system software is setup properly, and that all queue names and objects are named correctly.The internet account or local account does not have sufficient rights. Make sure the internet account and local account have sufficient rights.
Invalid path of file name. Verify the path and file name are correct.The file does not exist. Make sure the file exists at the specified location.
282
AFP Error Messages
Code
IRL0014
IRL0015
IRL0016
IRL0017
IRL0022
IRL0023
IRL0025
Severity: Category
Message text
Error: Server Configuration
Platform error: Area //
ROWSET[@NAME="IRL0014"]//
VAR[@NAME="AREA"], Code: //
ROWSET[@NAME="IRL0014"]//
VAR[@NAME="CODE"], Code2: //
ROWSET[@NAME="IRL0014"]//
VAR[@NAME="CODE2"], Message: //
ROWSET[@NAME="IRL0014"]//
VAR[@NAME="MESSAGE"].
Cause / Remedy
Internal error. The code and message provide more detailed information. If the problem persists, report the error to Support.
Error: Server Configuration
The parameter //ROWSET[@NAME="IRL0015"]//
VAR[@NAME="PARAMETER"] is invalid.
Invalid rule parameter specified. Specify a valid parameter.
Error: User Error
The value //ROWSET[@NAME="IRL0016"]//
VAR[@NAME="VALUE"] was not found for option //
ROWSET[@NAME="IRL0016"]//
VAR[@NAME="OPTION"] in group //
ROWSET[@NAME="IRL0016"]//
VAR[@NAME="GROUP"] group.
The value is missing from the option in the initialization file group. Add the value to the option in the initialization file group.
Error: Server Configuration
Cannot locate variable //
ROWSET[@NAME="IRL0017"]//
VAR[@NAME="VARIABLE"].
The attachment variable was not included in the request.
Add the attachment variable to the request.
The attachment variable was misspelled in the request.
Correct the spelling of the attachment variable in the request.
Error: Server Configuration
Cannot add variable //
ROWSET[@NAME="IRL0022"]//
VAR[@NAME="VARIABLE"] to the attachment list.
Error: Server Configuration
Cannot save changes to the file //
ROWSET[@NAME="IRL0023"]//
VAR[@NAME="FILE"].
The max size of the queue message was reached. Reduce the size of the message, e.g. if the message size is too large due to too many matches found using the search criteria, consider refining the search criteria. Use a more advanced queueing system.Server is running low on memory. Restart the server. If the error persists, contact Support.
File has read-only attribute. Make sure the file does not have read-only attribute.The account running IDS does not have sufficient rights. Make sure the account running the server has sufficient rights to the directory where the file is being saved.
Error: Server Configuration
Cannot add variable //
ROWSET[@NAME="IRL0025"]//
VAR[@NAME="VARIABLE"] to the attachment record
//ROWSET[@NAME="IRL0025"]//
VAR[@NAME="RECORD"].
The max size of the queue message was reached. Reduce the size of the message, e.g. if the message size is too large due to too many matches found using the search criteria, consider refining the search criteria. Use a more advanced queueing system.Server is running low on memory. Restart the server. If the error persists, contact Support.
283
Appendix B
Error Messages
Code
IRL0026
IRL0027
IRL0028
IRL0029
IRL0030
IRL0031
MTC0001
Severity: Category
Message text
Error: User Error
Cannot find the global variable //
ROWSET[@NAME="IRL0026"]//
VAR[@NAME="VARIABLE"]. Make sure the
IRLInitFTP rule is registered on INI request.
Cause / Remedy
The request is trying to use the IRLFileFTP rule but the rule IRLInitFTP was not registered on the init request.
Add the IRLInitFTP rule to the INI request on the server.
Hint, lookup a description of the rule in the SDK. The
IRLInitFTP rule is missing a parameter in the initialization file. Add the parameter to the IRLInitFTP rule in the initialization file. Hint, lookup a description of the rule in the SDK.
Error: User Error
Rule parameters for rule //
ROWSET[@NAME="IRL0027"]//
VAR[@NAME="RULENAME"] are incorrect. The rule is disabled.
The parameters supplied to the rule are invalid. Make sure the parameters supplied to the rule are valid. Hint, lookup a description of the rule FTP rules in the SDK.
Error: User Error
The FTP server is not specified in the attachment or in the INI file. The FTP rule is disabled.
An FTP server is not specified in the initialization file or in the attachment. Add the FTP server to the initialization file or the attachment.
Error: User Error
FTP connection cannot be established. Make sure the
FTP rule is configured correctly.
The initialization file settings for the FTP rule are incorrect. Make sure the initialization file settings are correct.The FTP server has not been configured correctly.
Make sure the FTP Server has been configured correctly.The FTP account specified in the initialization file does not have sufficient rights. Make sure the account has sufficient rights.
Error: User Error
Cannot find variable //
ROWSET[@NAME="IRL0030"]//
VAR[@NAME="VARIABLE"] in the attachment. FTP operation //ROWSET[@NAME="IRL0030"]//
VAR[@NAME="OPERATION"] will be skipped.
The variable specified in the initialization file is missing in the attachment. Add the variable to the attachment.
Error: User Error
Error //ROWSET[@NAME="IRL0031"]//
VAR[@NAME="ERRORCODE"]//
ROWSET[@NAME="IRL0031"]//
VAR[@NAME="ERRORDESCRIPTION"] on FTP operation //ROWSET[@NAME="IRL0031"]//
VAR[@NAME="OPERATION"].
The system encountered an error while attempting to execute the FTP rule. Lookup additional documentation for the operating system error code.
Error: User Error
The attachment variable //
ROWSET[@NAME="MTC0001"]//
VAR[@NAME="VARIABLE"] could not be located
The attachment variable is missing. Add the attachment variable in the request.
284
AFP Error Messages
Code
Severity: Category
Message text
MTC0010 Error: Bridge Configuration
The system encountered an internal error of unknown type. The call by //ROWSET[@NAME="MTC0010"]//
VAR[@NAME="LOCATION"] to API //
ROWSET[@NAME="MTC0010"]//
VAR[@NAME="APINAME"] failed.
Cause / Remedy
Unknown internal error. If the error persists, report it to
Support
MTC0011 Error: User Error
The attachment variable //
ROWSET[@NAME="MTC0011"]//
VAR[@NAME="VARIABLE"] does not contain valid data.
Invalid data was submitted in the attachment variable.
Specify the correct data in the attachment variable.
Internal error. The code and message provide more detailed information. If the problem persists, report the error to Support.
MTC0014 Error: Platform Error
Platform error. Area //
ROWSET[@NAME="MTC0014"]//
VAR[@NAME="AREA"], Code: //
ROWSET[@NAME="MTC0014"]//
VAR[@NAME="CODE"], Code2: //
ROWSET[@NAME="MTC0014"]//
VAR[@NAME="CODE2"], Message: //
ROWSET[@NAME="MTC0014"]//
VAR[@NAME="MESSAGE"].
MTC0017 Error: Bridge Configuration
Cannot locate variable //
ROWSET[@NAME="MTC0017"]//
VAR[@NAME="VARIABLE"].
MTC0018 Error: User Error
Cannot load the font cross reference file //
ROWSET[@NAME="MTC0018"]//
VAR[@NAME="PATH"]\//
ROWSET[@NAME="MTC0018"]//
VAR[@NAME="FILE"]\//
ROWSET[@NAME="MTC0018"]//
VAR[@NAME="EXTENSION"].
The rules in the request type are not saving the variable prior to its usage. Make sure the rules in the request type are saving the variable prior to its usage. Hint, look up the description of the rules in the SDK.Memory is running low on the server. Restart the server. If the error persists, report it to Support.
Invalid path, file name or extension. Make sure the path, file name and extension are valid.The font cross reference file does not exist at the specified location. Make sure the font cross reference file exists at the specified location.
MTC0022 Error: Bridge Configuration
Cannot add variable //
ROWSET[@NAME="MTC0022"]//
VAR[@NAME="VARIABLE"] to the attachment list.
The max size of the queue message was reached. Reduce the size of the message. For instance, if the message size is too large due to too many matches found using the search criteria, consider refining the search criteria. Use a more advanced queueing system.Internal error If the problem persists report it to Support.
SRV0001 Error: Server Configuration
The rule processor failed while processing the messages
//ROWSET[@NAME="SRV0001"]//
VAR[@NAME="CURMSG"].
The server is not configured for a particular request type.
Correct the server configuration
285
Appendix B
Error Messages
Code
SRV0002
SRV0003
SRV0004
SRV0005
TPD0001
TPD0002
TPD0003
TPD0004
TPD0005
Severity: Category
Message text
Error: Server Configuration
The server is not configured for the request type: //
ROWSET[@NAME="SRV0002"]//
VAR[@NAME="REQTYPE"]
Error: Server Configuration
The master server could not send the message to IDS.
Error: Bridge Configuration
Cannot locate the directory //
ROWSET[@NAME="SRV0004"]//
VAR[@NAME="DIR"] specified.
Cause / Remedy
The request type specified in the request is missing in the initialization file. Add the request type to the initialization file.The request type specified in the request does not have the appropriate rules in the initialization file. Make sure the request type is calling the appropriate rules for the request.
The master server or the IDS server are not configured correctly. Make sure the master server and the IDS server are configured correctly.
The directory specified does not exist. Make sure the directory specified exists.
Error: Bridge Configuration
The parameter //ROWSET[@NAME="SRV0005"]//
VAR[@NAME="PARAM"] specified for //
ROWSET[@NAME="SRV0005"]//
VAR[@NAME="LOCATION"] is invalid!
The value for the specified parameter is not valid. Make sure the value specified is valid for the rules executed.
Error: Bridge Configuration
Cannot DSILocateValue //
ROWSET[@NAME="TPD0001"]//
VAR[@NAME="NAME"]. Make sure TPDInit rule was executed.
The request is trying to use the TPD rules but the rule
TPDInit was not registered on the init request. Add the
TPDInit rule to the INI request on the server. Hint, lookup a description of the rule in the SDK.
Error: Bridge Configuration
Call to API //ROWSET[@NAME="TPD0002"]//
VAR[@NAME="APINAME"] failed.
Internal error. Check additional errors for more info. If the problem persists, report the error to Support.
Error: Bridge Configuration
File //ROWSET[@NAME="TPD0003"]//
VAR[@NAME="TIFFNAME"] could not be loaded.
Error: Bridge Configuration
Stem variable //ROWSET[@NAME="TPD0004"]//
VAR[@NAME="NAME"] could not be located.
Error: Bridge Configuration
Stem variable //ROWSET[@NAME="TPD0005"]//
VAR[@NAME="NAME"] has invalid value (0).
Loader not initialized. Make sure the Loader is initialized prior to loading the TIFF file.Invalid path or file name or file does not exist. Make sure the path and file name are valid.
Specific variable with the TIFF file name could not be located. Make sure the TIFF names are provided in the sequential “stem” variables.
Specific variable with the TIFF file name has invalid value.
Make sure the TIFF names are provided in the sequential
“stem” variables and have valid values.
286
AFP Error Messages
Code
IPP0001
IPP0002
IPP0003
IPP0004
IPP0005
IPP0006
IPP0007
IPP0008
Severity: Category
Message text
Error: Bridge Configuration
Call to //ROWSET[@NAME="IPP0001"]//
VAR[@NAME="APINAME"] failed in //
ROWSET[@NAME="IPP0001"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0002"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0002"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0003"]//
VAR[@NAME="APINAME"] wip file in //
ROWSET[@NAME="IPP0003"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Failed to //ROWSET[@NAME="IPP0004"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0004"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0005"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0005"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0006"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0006"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0007"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0007"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0008"]//
VAR[@NAME="APINAME"] POLFile in //
ROWSET[@NAME="IPP0008"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
Error in WipInit. Check file name and path. If the error persists, contact Support
Error in virtual memory management. Restart the server.
If the error persists, report it to Support.
The file may not exist. Check the WIP files. If the error persists, report it to Support.
The form set may not exist. Check the WIP KeyID. If the error persists, report it to Support.
The form set may not exist. Check the WIP KeyID. If the error persists, report it to Support.
Unable to append unique record. Record may already exist.
Memory running low or memory corruption. >Restart. If the error persists, report it to Support.
POLFile may not exist. Check file and path. If the error persists, report it to Support.
287
Appendix B
Error Messages
Code
IPP0009
IPP0010
IPP0011
IPP0012
IPP0013
IPP0014
IPP0015
IPP0016
Severity: Category
Message text
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0009"]//
VAR[@NAME="APINAME"] NAFile in //
ROWSET[@NAME="IPP0009"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Internal API //ROWSET[@NAME="IPP0010"]//
VAR[@NAME="APINAME"] failure in //
ROWSET[@NAME="IPP0010"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0011"]//
VAR[@NAME="APINAME"] TrnDfd file in //
ROWSET[@NAME="IPP0011"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0012"]//
VAR[@NAME="APINAME"] new TrnDfd file in //
ROWSET[@NAME="IPP0012"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Call to //ROWSET[@NAME="IPP0013"]//
VAR[@NAME="APINAME"] failed in //
ROWSET[@NAME="IPP0013"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Field list is empty.
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0015"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0015"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0016"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0016"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
NAFile may not exist. Check file and path. If the error persists, report it to Support.
Misconfiguration.
Check INI options. If the error persists, report it to
Support.
The TrnDfdFile may not exist. Check file and path. If the error persists, report it to Support.
NewTrnDfdFile may not exist. Check file and path. If the error persists, report it to Support.
NewTrnDfdFile may not exist. Check file and path. If the error persists, report it to Support.
Search criteria. Add the appropriate search fields. If the error persists, report it to Support.
Error in virtual memory management. Restart. If the error persists, report it to Support.
Can not add field data. If the error persists, report it to
Support.
288
AFP Error Messages
Code
IPP0017
IPP0018
IPP0020
IPP0021
IPP0022
IPP0023
IPP0024
IPP0026
Severity: Category
Message text
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0017"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0017"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
Can not add to TrnFile. If the error persists, report it to
Support.
Error: Bridge Configuration
Unable to load file //ROWSET[@NAME="IPP0018"]/
/VAR[@NAME="PATH"]\//
ROWSET[@NAME="IPP0018"]//
VAR[@NAME="FILE"]//
ROWSET[@NAME="IPP0018"]//
VAR[@NAME="EXTENTION"].
File may not exist. Check file and path. If the error persists, report it to Support.
Search Keys. Check search keys Error: Bridge Configuration
Failed to match records in IPPLocateMatches.
Error: Bridge Configuration
Unable to add attachment variable //
ROWSET[@NAME="IPP0021"]//
VAR[@NAME="VARIABLE"].
Error: Bridge Configuration
//ROWSET[@NAME="IPP0022"]//
VAR[@NAME="APINAME"] failed to locate attachment variable in //
ROWSET[@NAME="IPP0022"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0023"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0023"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to add attachment variable//
ROWSET[@NAME="IPP0024"]//
VAR[@NAME="VARIABLE"] record //
ROWSET[@NAME="IPP0024"]//
VAR[@NAME="RECORD"].
Error: Bridge Configuration
Unable to read import file //
ROWSET[@NAME="IPP0026"]//
VAR[@NAME="IMPORTFILE"].
If the error persists, report it to Support.
Internal error. If the error persists, report it to Support.
Internal error If the error persists, report it to Support.
File may not exist. Check file and path. If the error persists, report it to Support.
289
Appendix B
Error Messages
Code
IPP0027
IPP0028
IPP0029
IPP0030
IPP0031
IPP0032
IPP0033
IPP0034
Severity: Category
Message text
Error: Bridge Configuration
Unable to load file //ROWSET[@NAME="IPP0027"]/
/VAR[@NAME="FILE"].
Cause / Remedy
Form definition file may not exist. Check file and path. If the error persists, report it to Support.
FAP Image may not exist. Check file and path. If the error persists, report it to Support.
Error: Bridge Configuration
Unable to load FAP image //
ROWSET[@NAME="IPP0028"]//
VAR[@NAME="IMAGE"].
Error: Bridge Configuration
Loading of the submited import file resulted in empty formset.
Impropriety import file. Check the import file. If the error persists, report it to Support.
Internal error. If the error persists, report it to Support.
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0030"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0030"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to open import file //
ROWSET[@NAME="IPP0031"]//
VAR[@NAME="IMPORTFILE"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0032"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0032"]//
VAR[@NAME="LOCATION"].
Import file may not exist. Check file and path. If the error persists, report it to Support.
POLFile may not exist. Check file and path. If the error persists, report it to Support.
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0033"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0033"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0034"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0034"]//
VAR[@NAME="LOCATION"].
NAFile may not exist. Check file and path. If the error persists, report it to Support.
Internal error. If the error persists, report it to Support.
290
AFP Error Messages
Code
IPP0035
IPP0036
IPP0037
IPP0038
IPP0039
IPP0040
IPP0041
IPP0042
Severity: Category
Message text
Error: Bridge Configuration
Could not update recipient //
ROWSET[@NAME="IPP0035"]//
VAR[@NAME="RECIPIENT"] count //
ROWSET[@NAME="IPP0035"]//
VAR[@NAME="COUNT"].
Error: User Error
Unable to locate INI option //
ROWSET[@NAME="IPP0036"]//
VAR[@NAME="INIOPTION"] in the group //
ROWSET[@NAME="IPP0036"]//
VAR[@NAME="INIGROUP"].
Error: Bridge Configuration
Unable to locate attachment variable hFormset.
Error: Bridge Configuration
Unable to locate attachment variable //
ROWSET[@NAME="IPP0038"]//
VAR[@NAME="VARIABLE"].
Cause / Remedy
Recipient may not on the list. Check recipient list. If the error persists, report it to Support.
Missing INI options. Check INI options. If the error persists, report it to Support.
Missing DSI Value DPRFormset. Valid DSI value
DPRFormset needed. If the error persists, report it to
Support.
Missing DSI Value DPRFormset. Valid DSI value
DPRFormset needed. If the error persists, report it to
Support.
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0039"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0039"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to open export file //
ROWSET[@NAME="IPP0040"]//
VAR[@NAME="EXPORTFILE"].
Import file may not exist. Check file and path. If the error persists, report it to Support.
Internal error. If the error persists, report it to Support.
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0041"]//
VAR[@NAME="APINAME"] file //
ROWSET[@NAME="IPP0041"]//
VAR[@NAME="TABLENAME"].
Missing index file or/and DFD file. Check file and path.
If the error persists, report it to Support.
Error: Bridge Configuration
Failed to add form. //ROWSET[@NAME="IPP0042"]/
/VAR[@NAME="GROUP1"], //
ROWSET[@NAME="IPP0042"]//
VAR[@NAME="GROUP2"], //
ROWSET[@NAME="IPP0042"]//
VAR[@NAME="FORMNAME"].
Incorrect form name. Make sure a correct form is matched. If the error persists, report it to Support.
291
Appendix B
Error Messages
Code
IPP0043
IPP0044
IPP0045
IPP0050
IPP0051
IPP0052
IPP0054
IPP0056
Severity: Category
Message text
Error: Bridge Configuration
Form does not exist.
Error: Bridge Configuration
Failed to parse line data //
ROWSET[@NAME="IPP0044"]//
VAR[@NAME="LINEDATA"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0045"]//
VAR[@NAME="APINAME"] file //
ROWSET[@NAME="IPP0045"]//
VAR[@NAME="TABLENAME"].
Error: Bridge Configuration
Call to //ROWSET[@NAME="IPP0050"]//
VAR[@NAME="APINAME"] failed in //
ROWSET[@NAME="IPP0050"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0051"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0051"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0052"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0052"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Failed to retrieve records. //
ROWSET[@NAME="IPP0054"]//
VAR[@NAME="CATALOGKEY"], //
ROWSET[@NAME="IPP0054"]//
VAR[@NAME="CARID"], //
ROWSET[@NAME="IPP0054"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0056"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0056"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
Incorrect form name. Make sure a form name is correct. If the error persists, report it to Support.
Invalid data line. Make sure the data line is correct. If the error persists, report it to Support.
Invalid search criteria. Make sure correct search keys are used. If the error persists, report it to Support.
Internal error If the error persists, report it to Support.
Internal error. If the error persists, report it to Support.
Internal error. If the error persists, report it to Support.
Invalid CatalogKey, CarID or POLFile. Check
CatalogKey, CarID or POLFile. If the error persists, report it to Support.
Invalid WipFile name or WipDfd file. Check WipFile name and WipDfd file. If the error persists, report it to
Support.
292
AFP Error Messages
Code
IPP0057
IPP0058
DSI0001
DSI0002
DSI0003
DSI0004
DSI0005
DSI0006
Severity: Category
Message text
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0057"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0057"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Failed to create group. //
ROWSET[@NAME="IPP0058"]//
VAR[@NAME="GROUP1"], //
ROWSET[@NAME="IPP0058"]//
VAR[@NAME="GROUP2"].
Cause / Remedy
Invalid WipFile name or user list. Check WipFile name and user list. If the error persists, report it to Support.
Internal error. If the error persists, report it to Support.
Error: Server Configuration
No customer rule specification in line '//
ROWSET[@NAME="DSI0001"]//
VAR[@NAME="PARMS"]'.
No method name after -> in parameter line Check the spelling of the function line.
Error: Server Configuration
Customer rule //ROWSET[@NAME="DSI0002"]//
VAR[@NAME="RULE"] is not registered and //
ROWSET[@NAME="DSI0002"]//
VAR[@NAME="MODULE"].DLL->DLLRegisterServer not found.
COM Rule DLL not registered. Stop IDS, register COM
DLL and restart IDS.
Error: Server Configuration
Customer rule //ROWSET[@NAME="DSI0003"]//
VAR[@NAME="RULE"] is not registered; self-registry of //ROWSET[@NAME="DSI0003"]//
VAR[@NAME="MODULE"] failed.
Problem with COM DLL registering itself. Check COM source code for errors.
Error: Server Configuration
Customer rule //ROWSET[@NAME="DSI0004"]//
VAR[@NAME="RULE"] is not found in registry.
COM Rule DLL not registered. Stop IDS, register COM
DLL and restart IDS.
Error: Server Configuration
Customer rule //ROWSET[@NAME="DSI0005"]//
VAR[@NAME="RULE"] COM failure: no class factory
(//ROWSET[@NAME="DSI0005"]//
VAR[@NAME="HR"]).
Problem with COM object. Check COM code for errors.
Error: Server Configuration
Customer rule //ROWSET[@NAME="DSI0006"]//
VAR[@NAME="RULE"] COM failure: cannot create instance (//ROWSET[@NAME="DSI0006"]//
VAR[@NAME="HR"]).
Problem with COM object. Check COM code for errors.
293
Appendix B
Error Messages
Code
DSI0007
DSI0008
DSI0009
Severity: Category
Message text
Error: Server Configuration
Customer rule //ROWSET[@NAME="DSI0007"]//
VAR[@NAME="RULE"] COM failure: no IDispatch (/
/ROWSET[@NAME="DSI0007"]//
VAR[@NAME="HR"]).
Cause / Remedy
Problem with COM object. Check COM code for errors.
Problem with COM object. Check COM code for errors.
Error: Server Configuration
Customer rule //ROWSET[@NAME="DSI0008"]//
VAR[@NAME="RULE"] is missing method (//
ROWSET[@NAME="DSI0008"]//
VAR[@NAME="HR"]).
Error: Server Configuration
Fatal error (//ROWSET[@NAME="DSI0009"]//
VAR[@NAME="HR"]) in rule //
ROWSET[@NAME="DSI0009"]//
VAR[@NAME="RULE"].
Problem with COM object. Check server logs for more information.
294
Appendix C
Utilities
This appendix describes the various utilities you can use while using IDS. These utilities include:
•
•
•
•
•
•
•
•
•
•
•
•
295
Appendix C
Utilities
CRYRUW32
Use this utility with iDocumaker Workstation to encrypt data. Here is an example of how you can use the CRYRUW32 utility at a command prompt to encrypt the data:
C:\docserv1.8>cryruw32 password
Encrypted string (2XAUnkxUYlx7i5AnQ4m4E1m00)
296
DataCrypt
D
ATA
C
RYPT
Use this utility to encrypt and decrypt data files. The program is a Java class in the
DocuCorpUtil.jar library. To run it, enter a command similar to the one shown here: java -cp DocuCorpUtil.jar com.docucorp.util.DataCrypt
Here is a summary of the parameters:
Parameter Description
-i Treat the text argument as a file name instead of text to encrypt/decrypt.
text
-u
The text to encrypt/unencrypt or the name of a file if the -i parameter is included. The input file is overwritten with the new information.
Include this parameter if you want to decrypt the text or file instead of encrypting it. Encrypting is the default behavior for this utility.
If you omit all of the parameters, a usage message appears.
297
Appendix C
Utilities
DSITEST
Use this utility to test the transfer of files to and from IDS. Here is an example of the syntax and parameters for this utility:
N
OTE
:
By default, the DSITEST utility runs in Java mode. You can, however, run it in
C mode. To switch modes, open DSITEST in a text editor and follow the instructions at the beginning of the script.
Syntax
dsitestw /time /waitonlast / display /nowait /reqtype /msg /notrans
/noattachs /norcvs /atcfile /rcvfile
Parameter
Time
Description
Displays total seconds for all operations.
Do not include NoRCVs, ATCFile, or RCVFile with this parameter because those parameters contain user prompts that affect the time.
WaitOnLast Waits on the last message before capturing the ending time.
Display
NoWait
ReqType
MSG
Displays the resulting DSI Soap XML message that contains the name/value pairs for each transaction.
Do not wait for the server before adding next message to queue.
The IDS request type. The default is SSS.
The name of the file that contains the request name/value pairs.
NoTrans
NoAttchs
NoRCVs
ATCFile
The total number of transactions to process.
The total number of file attachments to send per transaction using the
DSISendFile API. If you include this parameter, the program expects an input file named SENDFILES.MSG that contains the information for each attachment to send.
The total number of file attachments to receive per transaction via the
DSIReceiveFile API. If you include this parameter, the program expects an input file named RECEIVEFILES.MSG that contains the information for each attachment to receive.
A single file attachment to send via the DSISendFile API. The program prompts the user for the attachment ID, file name, and encoding type.
RCVFile A single file attachment to receive via the DSIReceiveFile API. The program prompts the user for the attachment ID and file name.
Neither the case nor the order of the parameters is important.
You can include these parameters on the command line or place them in an input file named PARAMS.MSG. On the command line, separate parameters with slashes (/), dashes (-), or spaces:
DSITESTW /time=yes
DSITESTW -time=yes
DSITESTW time=yes
298
DSITEST
If you include the parameters in the PARAMS.MSG file, format them as shown in this example of the PARAMS.MSG file: time=yes waitonlast=no display=yes nowait=no reqtype=LGN notrans=50 msg=prt.msg noattchs=0 norcvs=0 atcfile=yes rcvfile=yes
Here is an example of how you could execute this program from the command line: dsitesw time=yes display=yes notrans=2 reqtype=prt msg=c:\prt.msg
Here is an example of the PRT.MSG file:
USERID=FORMAKER
Arckey=00345A0D5600000008 reqtype=PRT config=UTILITY company=1199999 lob=Lee policynum=Roswell, Ga 30015 rundate=021705 printpath=\10.8.10.137\Websrvr_client\html
If the NoAttchs parameter is greater than zero, the program expects an input file named
SENDFILES.MSG which contains a list of the attachments to send. Use either
NoAttachs or ATCFile, but not both.
Use the ATCFile parameter when you only want to send one file attachment. The
ATCFile parameter uses command line parameters for the attachment ID, file name, and encoding type. Here is an example of the ATTACHMENTS.MSG file: name=UTILITYINI file=X:\IDS\AddlSrvrs\utility.ini type=TEXT name=TESTPDF file=X:\websrvr_client\html\test.pdf type=BINARY
If the NoCRVs parameter is greater than zero, the program expects an input file named
RECEIVEFILES.MSG, which contains a list of attachments to receive. Include either
NoRCVs or RCVFile, but not both.
299
Appendix C
Utilities
Use the RCVFile parameter when you only want to receive one attachment. The RCVFile parameter uses command line parameters for the attachment ID and file name. Here is an example of the RECEIVEFILES.MSG file: name=PDFFILE1 file=X:\\IDS\\AddlSrvrs\\Output\\file1.pdf name=PDFFILE2 file=X:\\IDS\\AddlSrvrs\\Output\\file2.pdf
If you omit the request type from the command line or the PARAMS.MSG file, the program uses SSS as the default request type.
300
FAP2HTML
FAP2HTML
Use this utility to convert FAP files into dynamic HTML files.
Program names
Windows 32-bit FAP2HTML.EXE
Syntax
FAP2HTML /I /TS /D /X /INI
Parameter Description
/I The name of the FAP file. You can use wildcards, such as *.FAP.
/ts Include this parameter to tell the utility to produce HTML output for TerSub paragraphs. TerSub is a pre-and post-edit function which selects and assembles pre-written, standardized paragraphs as a time-saving feature.
/d
/X
/INI
Include this parameter to include output that can help you diagnose any problems that occur.
The name of the FXR file (font cross-reference file).
(Optional) The name of the INI file to use. The default is FSIUSER.INI.
This utility creates an HTML file for each FAP files you specify. The utility appends the extension HTM to the output files. You can then display the HTML files using a browser.
Keep in mind:
• Dynamic HTML commands require Microsoft Internet Explorer 4.0 or later.
• If the FAP form is complex, you may experience problems in older versions of
Internet Explorer. To avoid such problems, use Internet Explorer 6.0 or later.
• Using absolute positioning, dynamic HTML commands make the HTML page the exact size of the FAP page. This means you cannot zone the HTML file in a browser.
• A multipage FAP file is converted into multiple HTML files, one for each page. Pages have _p# appended to the FAP file name with the HTM extension. For example, the first page has _1 appended to the end of the FAP file name with the HTM extension.
The second page has _2 appended to the end of the FAP file name with the HTM extension, and so on.
• True Type font names are retrieved from the FXR (font cross-reference) file. The computer used to display the output HTML files must have these same fonts or the output may differ.
The mapping to the True Type font occurs in the Window32Subs control group.
Here you can specify, for example, a Times family font and map it to the True Type equivalent, Times New Roman. You do not have to change your FXR file, just make sure you have the correct mappings in the INI file.
• This utility does not convert logos. It will, however, set up references to the logo file.
You must use a graphics file conversion utility (not included) to convert the logo files into GIF or JPEG files.
• To create TerSub paragraphs, include the /TS and /D parameters.
301
Appendix C
Utilities
INI Options
You can use these INI options to customize how the FAP2HTML utility works:
< PrtType:HTM >
SplitText =
Field =
Text =
TextMerge =
Box
Barcode
=
=
Bitmap =
ImagePath =
ImageExt
Table
=
=
FieldFontFudge =
DirLinks =
CollapsePage=
PageBreaks =
HR =
AllowInput =
Option
SplitText
Field
Text
TextMerge
Box
Barcode
Bitmap
Description
Use this option to specify the number of characters to output as a separate text label. If you set this set option to -1 (the default), each word is output as a separate word. If you set this option to zero (0), the system will not split the text.
Splitting the text on every character produces a better fidelity HTML file, but slows the performance of the utility and of the browser. The default value seems to produce good results. If you plan to later edit the HTML file, set this value to zero (0) so all the text is output together without positioning commands.
Enter No if you want to omit this kind of objects from the HTML file. The default is Yes.
Enter No if you want to omit this kind of objects from the HTML file. The default is Yes.
Enter No if you want to omit this kind of objects from the HTML file. The default is Yes.
Enter No if you want to omit this kind of objects from the HTML file. The default is Yes.
Enter No if you want to omit this kind of objects from the HTML file. The default is Yes.
Enter No if you want to omit this kind of objects from the HTML file. The default is Yes.
302
FAP2HTML
Option
ImagePath
ImageExt
Table
Description
Use this option to specify the location of the graphics files. Use a relative path, such as /images/, so the reference to the logo will be output in the
HTML file with the attribute
SRC=”images/GRAPH1BB.jpg”
Be sure to use this option if you keep the graphics in a separate directory on the web server.
Use this option to specify the extension to use for references to graphic files. The default is
JPG.
GIF, PNG, or TIFF.
You will need to set this option to the correct value, if your bitmaps are converted into some other file format, such as
Use this option to specify if the dynamic HTML absolute positioning should be used for the text. The default is No.
When HTML tables are used for text positioning, the FAP lines and boxes are not output and the fidelity of the output document is low.
Set this option to Yes to edit the HTML text after the conversion.
FieldFontFudge Use this option to increase or decrease the font size for the input fields. The default is 0.535.
This option is necessary because browsers usually use fonts larger than the input fields, so the top or bottom of the text inside the input field is chopped off. When you use this option, the font size inside the input field is the font height times this value.
DirLinks Use this option to add Next and Prev links on pages. The default is No.
CollapsePage
PageBreaks
Use this option to eliminate white space between HTML pages. The default is No.
Use this option to force a page break between pages during HTML print.
The default is Yes.
HR
AllowInput
Use this option to display a line between HTML pages. You can configure the size, color and width. Here is an example:
HR = Size=2 Width=100% Color=Black
Set this option to Yes to enable variable fields for entry. The default is No.
303
Appendix C
Utilities
FD2HTW32
Use this utility to convert a FORM.DAT file into an HTML page.
Syntax
fd2htw32 [-i=<formdef>] [-ini= <inifile>] [-o=<outfile>] [d=<dirname>]
Parameters
o d i
Parameter Description
The form definition file from which to read. Defaults to the FORM.DAT file.
ini The initialization file from which to read. Defaults to the FSIUSER.INI file.
The name of the output HTML file.
The name of the web server directory.
304
FILE2IDS
FILE2IDS
Use this utility to read a text file which contains a series of requests and submit those requests to IDS. Each line of the text file equals one request. You specify the request type on the command line and the attachment variables are created from each line in the input file in this manner:
• Each line is broken into 1000 byte chunks (1000 is the default size, you can set the size using the /L parameter)
• Each chunk is added as attachment variable RECORDLINEXX, where XX is the sequence number of the chunk.
The attachment variable RECORDPARTS specifies how many chunks are added.
N
OTE
:
The FILE2IDS is a Visual Basic program. You must have a VB runtime installed to run this program. You can click the Help button when you run FILE2IDS to see a summary of the various parameters.
To run the FILE2IDS utility, enter this command: file2ids /C /D /I /L /K /R /T /Name /W
Parameter Description
/C Specifies the value of the CONFIG attachment variable
/D
/I
/K
Set to
On
to turns on the debugging window and wait for the result from IDS.
The name of the file
Enter Y or N to have the system wait or not wait for a key to be pressed in the debug window.
/L
/R
/T
/Name
Specifies the line length. The default is 1000.
The request type. The default is Email.
The length of time in milliseconds before IDS times out. The default is 15000.
Lets you pass a name and value to the IDS rule in this format:
/Name=Value
For instance, /ABC=BCD adds the attachment variable ABC with the value
BCD.
/W The length of time in milliseconds IDS will wait before retrying. The default is
1000.
All parameters are passed in with the equal sign (=). Here is an example:
/I=file.txt
If you run the utility with no parameters, it displays a window which lets you then enter the parameters shown above.
The utility returns one of the following values:
305
Appendix C
Utilities
Value Description
0 The utility completed its task and no errors occurred.
1 No input file information was found.
2
3
The utility was canceled before it ran. Typically, this indicates you clicked Exit on the window which asks for the parameters.
Other error.
306
FORMPUB
FORMPUB
This utility provides a graphical interface from which you can run the FD2HTW32 and
PTFMDW32 utilities. If you want to run these utilities as stand-alone programs, see...
•
•
307
Appendix C
Utilities
P
ATCH
R
EPORTER
Use this utility to create a report that shows which patches are installed to
Docupresentment’s Java .jar files.
N
OTE
:
Docupresentment contains both .DLL files and Java .jar files. To determine what patches have been applied to the .DLL files, see FSIVER.
You run this utility from the command line. Here is an example: java -jar c:\int020\int200\jars\PatchReporter.jar -f “*.jar“
The utility has two options:
Option Description
-f This option specifies what files or directories to search for text matches. If the next argument is a directory, every jar file in the directory is checked.
Separate individual files or directories using the path separator for your operating system. The default is to use the classpath.
If you use a wildcard with this option, such as
/home/user/int020/docserv/lib/Do*.jar
Enclose the directory list in quotation marks (“), otherwise Java automatically expands the wildcard list
.
-s This option specifies which patch identifier string to search for in the files. Matches are performed on the beginnings of strings. In most cases you will not need to specify this parameter. The default is shown here:
@@IDS
Here is an example, which assumes you are in the directory where the jar files are located: java -jar PatchReporter.jar -f "*.jar" >report.txt
Here is an excerpt from the report produced by the PatchReporter utility:
--- Docucorp Patch Report Utility Program ---
--- Display Patch Reports ---
Patch Report For : C:\docserv\lib\.\agentxapi.jar
------------------------------------------------------------------
No matches detected for : agentxapi.jar
. . .
Patch Report For : C:\docserv\lib\.\DocumentServer.jar
-----------------------------------------------------------------com/docucorp/ids/DocumentServer.class : 09/18/2009 11:13
@@IDS PATCH 2.2:P01:PCR22166, PCR22380
@@IDS PATCH 2.2:P03:PCR22726
@@IDS PATCH 2.2:P05:PCR23136, PCR23161, PCR23237
@@IDS PATCH 2.2:P06:PCR23776
@@IDS PATCH 2.2:P07:PCR24379 com/docucorp/ids/FilenameTranslator.class : 03/05/2009 11:10
@@IDS PATCH 2.2:P06:PCR23776
308
PTFMDW32
PTFMDW32
Use this utility to create a PDF file for each image in the FORM.DAT file.
Syntax
ptfmdw32 [-i=<formdef>] [-ini=<inifile>] [-f=<formlib>] [x=<fxrfile>] [-o=<outdir>]
Parameters
Parameter Description
-i=<formdef> The form definition file from which to read. Defaults to FORM.DAT.
-ini=<inifile> The initialization file from which to read. Defaults to FSIUSER.INI.
-f=<formlib> Location of FAP files.
-x=<fxrfile> Full name of font cross-reference file (FXR file).
-o=<outdir> Location of output PDF files. Defaults to the same directory as FAP files.
309
Appendix C
Utilities
VERS2REG
Use this utility gets the local version information and updates the registry. This utility executes on the workstation side from a command prompt. Typically, it is only executed during the original installation of iDocumaker. You can, however, start it from a command prompt. You can use the /v and /i parameters to determine which files and patch levels are in the current installation.
Syntax vers2reg /v /i /p /r
Parameter Description
/v This parameter writes to stdout the values it will put in the registry.
/i
/p
This parameter tells the utility to simply display the patch and CRC information and not change the registry.
Use this parameter to set the path to the iDocumaker executables instead of using the registry to find the installed location
/r This parameter indicates the registry key where the utility can find iDocumaker executables.
N
OTE
:
CRC (Cyclic Redundancy Check) is a way to check for data transmission errors.
310
VERSUPD
VERSUPD
Use this utility to create the installation file and the version file. These files are created by the VERSUPD utility:
• A version file which contains XML entries for version number, patch level, and accumulated CRC for files without patches.
• An installation file which has all of the executables for iDocumaker compressed into one file. The executable is installed on client machines via the UPDWDT utility.
N
OTE
:
The UPDWDT utility is typically executed by iDocumaker when needed. You do not have to run it.
Both the version file and the installation file need to be created where the IDS rules expect them to be. By default, the VERSUPD utility creates them in same location IDS expects to find them.
Program names
Syntax
Windows
UNIX versupd.exe
versupd versupd /config /ini /versionfile /installation /base /debug
Parameter
/config
Description
Enter the name of the configuration, such as SAMPCO.
/ini
/versionfile
(Optional) Enter the path to the configuration INI file used by IDS.
Specifying an INI file helps you make sure IDS and the VERSUPD utility look for shared files in the same location.
(Optional) Enter the path to the version file. This overrides the entry in the
INI file.
/installation (Optional) Enter the path to the installation file. This overrides the entry in the INI file.
/base (Optional) Enter the path to the executables for iDocumaker Workstation.
By default, this utility looks for executables in the data\config\wipedit directory under the current directory. This overrides the entry in the INI file
/debug (Optional) Include this option to send a list of each file included in the installation to stdout.
Here is an example: versupd /config=SAMPCO
This command puts both files in the following path: c:\docserv\Data\SAMPCO
Here is another example: versupd /config=SAMPCO /versionfile=c:\docserv\VersionContro l
/installation=c:\docserv\WIPEditInstallation
311
Appendix C
Utilities
INI options
Error messages
This command creates these files:
File type
Version
Name and path
c:\docserv\VersionControl
Installation c:\docserv\WIPEditInstallation
These INI options from the CONFIG.INI files are read by the VERSUPD utility:
< WIPEdit >
ExecDir =
VersionFile =
Option
ExecDir
Description
Enter the location for iDocumaker Workstation’s executables.
VersionFile Enter the location of the file that contains the version information.
The following error messages may be generated by the VERSUPD utility. These errors will go both to stdout and to a file named trace that will be in the current directory of the
VERSUPD utility.
Could not create installation file (version file path)
Could not find files to build installation in directory (iDocuMaker
Workstation directory)
Not able to add file (executable name) to installation (installation file name)
Could not access directory where the iDocuMaker Workstation executables are suppose to be.
Could not access directory where custom wipedit executables are suppose to be (custom executable directory)
Unable to create version file (installation file)
Unable to retrieve version information from directory (iDocumaker
Workstation directory)
Unable to create document (version file)
Could not lock version file (version file name).
312
UPDWDT
UPDWDT
Use this utility to get the iDocumaker installation file from the IDS and then update iDocumaker.
N
OTE
:
The UPDWDT utility is typically executed by iDocumaker when needed.
Information about running this utility is only included in case you are having problems with the iDocumaker and need to update your system.
Syntax updwdt /b /i /r
Parameter Description
/b This tells the utility to copy the reboot/backup directory contents to the installation directory. This option is used when there are files to update during the reboot process.
/i This tells the utility to install from a file specified by the next parameter. This is used if the installation file is already present on the local machine.
/r The registry location where iDocumaker has been installed. The defaults is:
HKEY_CLASSES_ROOT\\wipedit.Document\\protocol\\StdFile
Editing\\server
Documaker Bridge rules get the version information and CRC from the iDocumaker executables. You should have a separate location for each CONFIG value for these executables.
313
Appendix C
Utilities
314
Appendix D
Error Messages
This appendix includes a listing of the various errors you may receive when using IDS.
Use this information to address any errors you may encounter.
315
Appendix D
Code
ATC0001
ATC0002
ATC0003
DPR0001
DPR0002
DPR0003
DPR0004
DPR0005
E
RROR
M
ESSAGE
L
ISTING
Severity: Category
Message text
Error: Server Configuration
Can not add variable //
ROWSET[@NAME="ATC0001"]//
VAR[@NAME="VARIABLE"] to the attachment.
Cause / Remedy
The attachment size is larger than what is supported by queuing system. Reduce the size of the attachment. For example, if the search request returns too many matches, redefine the search criteria so the number of matches is reduced. Server is running low on memory. Restart server.
If the problem persists, report it to Support.
Memory was corrupted. If the problem persists, report it to Support.
Memory corruption on the server. If the problem persists, report it to Support.
Error: Server Configuration
The virtual memory management API //
ROWSET[@NAME="ATC0002"]//
VAR[@NAME="APINAME"] failed.
Error: User Error
The attachment variable //
ROWSET[@NAME="ATC0003"]//
VAR[@NAME="VARNAME"] could not be located.
Error: User Error
Cannot locate variable //
ROWSET[@NAME="DPR0001"]//
VAR[@NAME="VARIABLE"] in the attachment list.
The attachment variable was not included in the request.
Add the attachment variable to the request.
The attachment variable was misspelled or omitted from the request. Include or correct the spelling of the attachment variable in the request.
The attachment variable was not included in the request.
Add the attachment variable to the request.
The attachment variable was misspelled in the request.
Correct the spelling of the attachment variable in the request.
Error: User Error
No search criteria was specified. The attachment variable //ROWSET[@NAME="DPR0002"]//
VAR[@NAME="FIELDS"] is empty.
Error: Bridge Configuration
The user information database, //
ROWSET[@NAME="DPR0003"]//
VAR[@NAME="FILENAME"] could not be opened.
Error: User Error
The user ID //ROWSET[@NAME="DPR0004"]//
VAR[@NAME="USERID"] is invalid.
Fields attachment variable contains no fields specified for the search criteria. Add search fields to the fields variable in the request.
The database does not exist. Make sure the database exists.The path or name specified for the database are incorrect. Make sure the path and name specified for the database are correct.The database is corrupt. Restore the database from backup.
The user ID provided in the request does not exist in the user database. Provide a correct user ID.
Error: User Error
The password specified for //
ROWSET[@NAME="DPR0005"]//
VAR[@NAME="USERID"] is incorrect.
The password provided does not match the user ID password. Make sure the password spelling and casing is correct.
316
Code
DPR0006
DPR0007
DPR0008
DPR0009
DPR0010
DPR0011
DPR0012
DRP0013
Severity: Category
Message text
Error: Bridge Configuration
The virtual memory management API //
ROWSET[@NAME="DPR0006"]//
VAR[@NAME="APINAME"] failed.
Cause / Remedy
Memory is running low on the server. Restart the server.
If the error persists, report it to Support. Memory corruption on the server. If the error persists, report it to
Support.
Error: Bridge Configuration
The ini option //ROWSET[@NAME="DPR0007"]//
VAR[@NAME="INIOPTION"] could not be located in the group //ROWSET[@NAME="DPR0007"]//
VAR[@NAME="INIGROUP"].
The INI option does not exist in the INI control group.
Add the INI option to the INI control group.
Error: Bridge Configuration
The database API //ROWSET[@NAME="DPR0008"]//
VAR[@NAME="APINAME"] failed accessing the table
//ROWSET[@NAME="DPR0008"]//
VAR[@NAME="TABLENAME"].
The table specified does not exist in the database specified.
Make sure the table specified exists in the database specified.Invalid database connection. Make sure the connection to the database is valid.
Warning: User Error
No matches were found for the specified search criteria.
Search criteria specified by the user resulted in no matches found. Specify different search criteria.
Error: Bridge Configuration
The system encountered an internal error of unknown type. The call by //ROWSET[@NAME="DPR0010"]//
VAR[@NAME="LOCATION"] to //
ROWSET[@NAME="DPR0010"]//
VAR[@NAME="APINAME"] failed.
Unknown internal error. If the problem persists, report the error to Support.
Error: User Error
The attachment field //
ROWSET[@NAME="DPR0011"]//
VAR[@NAME="VARIABLE"] does not contain valid data.
The data specified for the attachment variable is incorrect.
Provide proper data to the attachment variable in the request.The data was corrupted. Restart the server. If the error persists, report it to Support.
Error: Bridge Configuration
The database API //ROWSET[@NAME="DPR0012"]//
VAR[@NAME="APINAME"] cannot locate the table /
/ROWSET[@NAME="DPR0012"]//
VAR[@NAME="TABLENAME"].
The table does not exist in the database specified. Make sure the table exists in the database specified.The path or name for the database containing the table are incorrect.
Make sure the path and name for the database are correct.The name of the table is incorrect. Make sure the name of the table is correct.The table is corrupted or the table format is not correct. Make sure the table is not corrupted and the table format is correct.The connection to the database is invalid. Make sure the connection to the database is valid.
Error: Bridge Configuration
The initialization file //
ROWSET[@NAME="DPR0013"]//
VAR[@NAME="FILENAME"] could not be loaded.
The initialization file specified does not exist. Make sure the initialization file specified exists.The path or name for the initialization file specified are incorrect. Make sure the path and name for the initialization file are correct
317
Appendix D
Code
DPR0014
DPR0015
DPR0016
DPR0017
DPR0018
DPR0019
Severity: Category
Message text
Error: Platform Error
Platform error. Area: //
ROWSET[@NAME="DPR0014"]//
VAR[@NAME="AREA"], Code: //
ROWSET[@NAME="DPR0014"]//
VAR[@NAME="CODE"], Code2: //
ROWSET[@NAME="DPR0014"]//
VAR[@NAME="CODE2"], Message: //
ROWSET[@NAME="DPR0014"]//
VAR[@NAME="MESSAGE"].
Error: Bridge Configuration
FAP Version is not in sync. //
ROWSET[@NAME="DPR0015"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Failed to unload template //
ROWSET[@NAME="DPR0016"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Cannot locate variable //
ROWSET[@NAME="DPR0017"]//
VAR[@NAME="VARIABLE"].
Error: Bridge Configuration
Cannot load font cross reference file //
ROWSET[@NAME="DPR0018"]//
VAR[@NAME="PATH"]\//
ROWSET[@NAME="DPR0018"]//
VAR[@NAME="FILE"]//
ROWSET[@NAME="DPR0018"]//
VAR[@NAME="EXTENSION"].
Error: Bridge Configuration
Cannot retrieve data into the //
ROWSET[@NAME="DPR0019"]//
VAR[@NAME="FILE"] file. ARCRetrieveDoc API failed. CATALOGKEY=//
ROWSET[@NAME="DPR0019"]//
VAR[@NAME="CATALOGKEY"], CARID=//
ROWSET[@NAME="DPR0019"]//
VAR[@NAME="CARID"].//
ROWSET[@NAME="DPR0019"]//
VAR[@NAME="PATH"]\//
ROWSET[@NAME="DPR0019"]//
VAR[@NAME="FILE"]//
ROWSET[@NAME="DPR0019"]//
VAR[@NAME="EXTENSION"].
Cause / Remedy
Internal error. The code and message provide more detailed information. If the problem persists, report the error to Support.
The installation of the server is not in sync with DLL versions. Possibly a manual DLL installation was done incorrectly.
Either reinstall the server and bridges or replace the offending DLL files with the appropriate version ones.
The HTML template could not be unloaded. Check that the path specified exists and there is available space on the disk.
Some or all of the rules prior to the rule reporting this error failed. Examine the other error messages for the cause and correct it. The rules in the request type did not save the variable specified prior to its call. Make sure all the required rules are specified in the request type.
The path, file name or extension are incorrect. Make sure the path, file name and extension specified are correct.The font cross reference file does not exist at the specified location. Make sure the font cross reference file exists at the specified location.
Invalid path, file name or extension specified. Make sure the path, file name and extension provided are correct.Archive file does not exist. Make sure the archive file provided exists.Invalid CATALOGKEY or CARID.
Make sure the CATALOGKEY and CARID provided exist.Invalid Archive Index file or corrupted database.
Make sure the Archive Index file and database are not invalid or corrupted. Restore from backup if needed.
318
Code
DPR0020
DPR0021
DPR0022
DPR0023
DPR0024
DPR0025
DPR0026
DPR0027
DPR0028
Severity: Category
Message text
Error: Bridge Configuration
DSLoadFormList API failed on file //
ROWSET[@NAME="DPR0020"]//
VAR[@NAME="FILE"].
Cause / Remedy
Invalid path or file name. Make sure the path and file name specified are correct.The file does not exist. Make sure the file specified exists.
Error: Bridge Configuration
DSLoadNAFormset API failed on file //
ROWSET[@NAME="DPR0021"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Cannot add variable //
ROWSET[@NAME="DPR0022"]//
VAR[@NAME="VARIABLE"] to the attachment list.
Invalid path or file name. Make sure the path and file name specified are correct.The file does not exist. Make sure the file specified exists.
The max size of the queue message was reached. Reduce the size of the message. For instance, if the message is too large due to too many matches found using the search criteria, consider refining the search criteria. Use a more advanced queueing system. Internal error If the problem persists report it to Support.
Error: Bridge Configuration
Failed to get current record ID in //
ROWSET[@NAME="DPR0023"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Cannot create DSI variable //
ROWSET[@NAME="DPR0024"]//
VAR[@NAME="VARIABLE"].
The record does not exist. Check records in the database.
Memory is running low on the server. Restart the server.
If the error persists, report it to Support.Memory was corrupted. If the problem persists, report it to Support.
Error: Bridge Configuration
Cannot add variable //
ROWSET[@NAME="DPR0025"]//
VAR[@NAME="VARIABLE"] to the attachment record
//ROWSET[@NAME="DPR0025"]//
VAR[@NAME="RECORD"].
The max size of the queue message was reached. Reduce the size of the message. For instance. if the message is too large due to too many matches found using the search criteria, consider refining the search criteria. Use a more advanced queueing system. Internal error If the problem persists report it to Support.
Error: Bridge Configuration
Cannot load the import file //
ROWSET[@NAME="DPR0026"]//
VAR[@NAME="FILE"].
Invalid path or import file name. Make sure the path and file name for the import file are correct.Import file variable not specified. Make sure the import file variable is specified in the request.
Error: Bridge Configuration
Cannot load the form set definition file //
ROWSET[@NAME="DPR0027"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Cannot load FAP File for image //
ROWSET[@NAME="DPR0028"]//
VAR[@NAME="IMAGE"].
Invalid path or form set file name specified. Verify the path and form set file name specified correct.The form set file does not exist. Make sure the form set file exists at the specified location.
FAP file cannot be loaded from library. Make sure
DPRSetConfig rule is called in the request type prior to attempting to load the FAP file.FAP file not found. Make sure the path and name of the FAP file are valid.
319
Appendix D
Code
DPR0029
DPR0030
DPR0031
DPR0032
DPR0033
DPR0034
DPR0035
Severity: Category
Message text
Warning: Bridge Configuration
Loading of the provided import file resulted in an empty formset.
Cause / Remedy
Invalid import file. Make sure the import file is valid.
Possibly the group or form specified does not exist.
Error: Bridge Configuration
The combination of group names(//
ROWSET[@NAME="DPR0030"]//
VAR[@NAME="GROUPNAME1"]) and (//
ROWSET[@NAME="DPR0030"]//
VAR[@NAME="GROUPNAME2"]) and the form name (//ROWSET[@NAME="DPR0030"]//
VAR[@NAME="FORMNAME"]) does not exist in the form definition file. Invalid import data.
Group name 1, group name 2, or the form name specified in the import file are incorrect. Specify the correct information
Error: Bridge Configuration
Cannot open import file //
ROWSET[@NAME="DPR0031"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
No form name provided in the import file.
Invalid path or name for import file. Make sure the path and name of the import file are valid.The import file specified does not exist. Make sure the import file exists.
The form names specified in the import file are incorrect or missing. Specify the correct information
Error: Bridge Configuration
Cannot parse import file. Line //
ROWSET[@NAME="DPR0031"]//
VAR[@NAME="LINEDATA"].
Import file is not well formed. Verify that the import file is well formed.
Error: Bridge Configuration
The combination of group names (//
ROWSET[@NAME="DPR0034"]//
VAR[@NAME="GROUPNAME1"]) and (//
ROWSET[@NAME="DPR0034"]//
VAR[@NAME="GROUPNAME2"]) and the form name (//ROWSET[@NAME="DPR0034"]//
VAR[@NAME="FORMNAME"]) and image name (//
ROWSET[@NAME="DPR0034"]//
VAR[@NAME="LINEDATA"]) does not exist in the form definition file. Invalid import data.
Invalid Group 1, Group2, form name, or image name specified. Make sure the import file is valid for the current configuration and that the group1, group2, form name and image name specified are valid.
Error: Bridge Configuration
Cannot open the export file //
ROWSET[@NAME="DPR0035"]//
VAR[@NAME="FILENAME"]. Error reported by OS /
/ROWSET[@NAME="DPR0035"]//
VAR[@NAME="ERRORNO"].
Invalid path or file name specified. Verify the path and file name are valid.The system encountered an error when opening the export file. Look up additional documentation for the operating system error code
320
Code
DPR0036
DPR0037
DPR0038
DPR0039
DPR0040
DPR0041
DPR0042
DPR0043
Severity: Category
Message text
Error: Bridge Configuration
DSI variable //ROWSET[@NAME="DPR0036"]//
VAR[@NAME="VARIABLE"] does not contain a valid
FAP form set.
Cause / Remedy
Rules executed prior to this one on the request type failed.
Examine the other error messages and correct the problem. An invalid form set was saved to the DSI variable.
Make sure the rules in the request type are saving the form set prior to its usage.
Check the description of the rules in the SDK.The form set has been corrupted. Restart the server. If the problem persists, contact Support.
Error: Bridge Configuration
The attachment variable //
ROWSET[@NAME="DPR0037"]//
VAR[@NAME="VARIABLE"] with value //
ROWSET[@NAME="DPR0037"]//
VAR[@NAME="VALUE"] is not a valid encrypted string.
The client requests an non-existing document. Correct the client request. The request expects an encrypted string but a properly encrypted string was not provided.
Make sure the request is being passed the appropriate parameters and that the appropriate rules are being used in the request.
Check the description of the rules and their input and output parameters in the SDK.
Error: Bridge Configuration
The rule parameters //
ROWSET[@NAME="DPR0038"]//
VAR[@NAME="PARAMETERS"] for the rule //
ROWSET[@NAME="DPR0038"]//
VAR[@NAME="RULE"] are not correct or empty.
Error: Bridge Configuration
The call by //ROWSET[@NAME="DPR0039"]//
VAR[@NAME="LOCATION"] to API //
ROWSET[@NAME="DPR0039"]//
VAR[@NAME="APINAME"] failed.
The parameters are incorrect or empty for the rule. Verify the parameters expected by the rule are valid.
The parameters passed to the API are invalid. Verify all expected parameters by the API are valid.An internal server error occurred. If the error persists, contact Support
Error: Bridge Configuration
DSI variable //ROWSET[@NAME="DPR0040"]//
VAR[@NAME="VARIABLE"] does not contain valid data.
The data saved to the variable was invalid. Make sure the appropriate rules are being used in the request type. Hint. lookup a description of the rules in the SDK.The data for
DSI variable was corrupted. If the error persists, contact
Support.
Error: Bridge Configuration
The record is locked by another user.
Warning: Bridge Configuration
The record is locked by another user.
Another user locked the record. Make sure the record is not locked or use a USERID that matches the ID for the locked record.
Another user locked the record. Make sure the record is not locked or use a USERID that matches the ID for the locked record.
Error: Bridge Configuration
Failed to DBQueryFormatInfo from //
ROWSET[@NAME="DPR0043"]//
VAR[@NAME="FILE"].
Invalid path or DFD file name. Make sure the path and
DFD file name are correct.
321
Appendix D
Code
DPR0044
DPR0045
DPR0046
DPR0047
DPR0048
DPR0049
DPR0050
DPR0051
DPR0052
Severity: Category
Message text
Error: Bridge Configuration
Failed to DBInitializeFile //
ROWSET[@NAME="DPR0044"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Failed to DBOpen //
ROWSET[@NAME="DPR0045"]//
VAR[@NAME="FILE"].
Cause / Remedy
Invalid database name. Make sure the path and database file name are correct for file based databases. Make sure the database name and setup are correct for network based databases.
Invalid database name. Make sure the path and database file name are correct for file based databases. Make sure the database name and setup are correct for network based databases.
Error: Bridge Configuration
Failed to UTLLockARC //
ROWSET[@NAME="DPR0046"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Call to ARCInit API failed. File: //
ROWSET[@NAME="DPR0047"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Failed to ArcArchiveDataFile //
ROWSET[@NAME="DPR0048"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Failed to create XML document in //
ROWSET[@NAME="DPR0049"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Failed to export the form set to XML in //
ROWSET[@NAME="DPR0050"]//
VAR[@NAME="LOCATION"].
Invalid path or file name. Make sure the path and file name are valid.
Invalid path or file name. Make sure the path and file name are valid.The archive data or index is corrupt.
Restore from backup. If the problem persists contact
Support
Invalid path or file name. Make sure the path and file name are valid.The archive data or index is corrupt.
Restore from backup. If the problem persists contact
Support
Invalid path. Make sure the path exists and the server has access rights to it.
Invalid path. Make sure the path exists and the server has access rights to it.
Error: Bridge Configuration
Failed to unload the XML file //
ROWSET[@NAME="DPR0051"]//
VAR[@NAME="FILE"] in //
ROWSET[@NAME="DPR0051"]//
VAR[@NAME="LOCATION"].
Invalid path or file name. Verify the path and file name are valid.
Error: Bridge Configuration
Failed to decrypt the attachment variable //
ROWSET[@NAME="DPR0052"]//
VAR[@NAME="VARIABLE"] in the wild card search.
One of the matching wildcard search variables cannot be decrypted. Refine the wildcard specification which variables needs to be decrypted
322
Code
DPR0053
DPR0054
DPR0055
DPR0056
DPR0057
DPR0058
Severity: Category
Message text
Error: Bridge Configuration
Unable to get random seed value in //
ROWSET[@NAME="DPR0053"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
The global data setup is incorrect. Make sure the global data setup is correct in the initialization file.The request type has not been configured correctly in the initialization file. Make sure the request type is configured correctly.
Check the description of the rules in the SDK.The name/ value pairs in the request are incorrect or missing. Make sure the name/value pairs in the request are correct, and that all expected name/value pairs have been provided to the rules in the request type.
Error: User Error
Invalid Login.
Invalid user ID or password Specify the correct user ID and password. The Request expects an encrypted user ID but one was not provided. Make sure the request type is properly configured.The global data setup is incorrect.
Make sure the global data setup is correct in the initialization file. Check the global data setup in the SDK and in the IDS documentation.
The request type has not been configured correctly in the initialization file. Make sure the request type is configured correctly. Check the description of the rules in the SDK.
The name/value pairs in the request are incorrect or missing. Make sure the name/value pairs in the request are correct, and that all expected name/value pairs have been provided to the rules in the request type.
The global data setup is incorrect. Verify the setup in the
INI file for the global data is correct. Check the global data setup in the SDK and IDS documentation.
Error: Bridge Configuration
Unable to DSIGlobalDataCreate in //
ROWSET[@NAME="DPR0055"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
The ini option //ROWSET[@NAME="DPR0056"]//
VAR[@NAME="INIOPTION"] in ini group //
ROWSET[@NAME="DPR0056"]//
VAR[@NAME="INIGROUP"] does not contain a valid value.
The INI option is set up incorrectly. Verify the INI option used is valid.
Error: Bridge Configuration
The Filename specified at location //
ROWSET[@NAME="DPR0057"]//
VAR[@NAME="FILENAME"] is not properity present.
The location for the file specified in the INI file is incorrect. Verify that the location specified is correct.
Error: Bridge Configuration
The call by //ROWSET[@NAME="DPR0058"]//
VAR[@NAME="LOCATION"] to //
ROWSET[@NAME="DPR0058"]//
VAR[@NAME="APINAME"] failed.
The status code has been changed by another user. Make sure no one else is updating the current record.
323
Appendix D
Code
DPR0059
DPR0060
DPR0061
DPR0062
DPR0063
DPR0064
DPR0065
DPR0066
Severity: Category
Message text
Error: Bridge Configuration
Failed to unload //ROWSET[@NAME="DPR0059"]//
VAR[@NAME="FILE"] at location //
ROWSET[@NAME="DPR0059"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
The location for the file specified is incorrect. Verify that the location specified is correct.The API that unloads the file failed. Verify the API that generates the file runs successfully. Contact Support.
Error: Bridge Configuration
Cannot open file //ROWSET[@NAME="DPR0060"]//
VAR[@NAME="FILE"] at location //
ROWSET[@NAME="DPR0060"]//
VAR[@NAME="LOCATION"].
The file specified does not exist. Make sure the file specified exists. If the file is generated by another rule, make sure that rule ran successfully.
Error: Bridge Configuration
Unable to WIPFind the record //
ROWSET[@NAME="DPR0061"]//
VAR[@NAME="RECORDID"].
There is no matching record in the WIP file for the record
ID provided.
Make sure there is a matching record in the WIP file for the record ID provided.
Error: Bridge Configuration
Unable to WIPDelete the record //
ROWSET[@NAME="DPR0062"]//
VAR[@NAME="RECORID"].
There is no matching record in the WIP file for the record
ID provided.
Make sure there is a matching record in the WIP file for the record ID provided.
Error: Bridge Configuration
Failed to load XML file //
ROWSET[@NAME="DPR0063"]//
VAR[@NAME="FILE"] at location //
ROWSET[@NAME="DPR0063"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Failed to execute DAL script //
ROWSET[@NAME="DPR0064"]//
VAR[@NAME="NAME"].
Error: Bridge Configuration
Cannot locate printer driver //
ROWSET[@NAME="DPR0065"]//
VAR[@NAME="VARIABLE"].
Error: Bridge Configuration
Can not locate field //
ROWSET[@NAME="DPR0066"]//
VAR[@NAME="VARIABLE"] in the //
ROWSET[@NAME="DPR0066"]//
VAR[@NAME="LOCATION"] DFD.
The XML file specified does not exist. Verify the file exists.The rule or API that generates the file failed. Verify the rule or API that generates the file run successfully - contact Support.
The script does not exist at the specified location. Make sure the specified location is correct.The script contains one or more errors.
Make sure the script is valid. The GenData program is not configured correctly to run the script successfully. Test the
GenData program and the script independently to make sure there are no errors.
The printer driver is not configured correctly in the INI file. Verify the configuration.There was no print driver specified for the request. Specify a print driver.There is no library for the printer driver specified. Make sure the library is present for the printer driver specified.
The field does not exist in the DFD. Make sure the field exists in the DFD.
324
Code
DPR0067
DPR0068
DPR0069
DPR0070
DPR0071
DPR0072
DPR0073
DPR0074
Severity: Category
Message text
Error: Bridge Configuration
The INI Group //ROWSET[@NAME="DPR0067"]//
VAR[@NAME="INIGROUP"] was not found in the
INI file.
Cause / Remedy
The INI file is missing the INI group specified. Make sure the INI file includes the INI group specified.
Error: Bridge Configuration
The INI Group //ROWSET[@NAME="DPR0068"]//
VAR[@NAME="INIGROUP"] in the INI file is not configured correctly.
The INI group specified is not configured correctly. Make sure the INI group specified is configured correctly for the rules in the request type.
Error: Bridge Configuration
No search criteria specified.
The request specified contains one or more rules that search a database but no search criteria was specified.
Make sure the rules for the request type contain any input attachment variables or rule arguments required. If the search criteria is optional, this may be just a warning indicating all records will be returned.
Error: Bridge Configuration
The variable //ROWSET[@NAME="DPR0070"]//
VAR[@NAME="VAR"] for the //
ROWSET[@NAME="DPR0070"]//
VAR[@NAME="LOCATION"] DFD is not configured correctly.
The internal or external lengths for the field are not set correctly in the DFD or the value specified has a length that exceeds one or more lengths specified. Make sure the length of the value specified does not exceed the lengths in the DFD.
Error: User Error
The attachment variable //
ROWSET[@NAME="DPR0071"]//
VAR[@NAME="VAR"] does not contain valid data.
The value //ROWSET[@NAME="DPR0071"]//
VAR[@NAME="VALUE"] is invalid.
Invalid data was submitted in the attachment variable.
Specify the correct data in the attachment variable.
Fields defined in DFD may not be consistent. Check DFD file and records in the database.
Error: User Error
Failed to update the wip record in //
ROWSET[@NAME="DPR0072"]//
VAR[@NAME="LOCATION"].
Error: User Error
Failed to retrieve field information for DFD //
ROWSET[@NAME="DPR0073"]//
VAR[@NAME="DFD"].
Error: User Error
Failed to create a formset handle in //
ROWSET[@NAME="DPR0074"]//
VAR[@NAME="LOCATION"].
Maybe invalid path or DFD file name Make sure the path and DFD file name are correct.
325
Appendix D
Code
DPR0075
DPR0076
DPR0077
DPR0078
DPR0079
DPR0080
DPR0081
DPR0082
Severity: Category
Message text
Error: User Error
Unable to find the wip record for the user ID //
ROWSET[@NAME="DPR0075"]//
VAR[@NAME="KEY"] in //
ROWSET[@NAME="DPR0075"]//
VAR[@NAME="LOCATION"].
Error: User Error
Unable to get an unique file name in //
ROWSET[@NAME="DPR0076"]//
VAR[@NAME="LOCATION"].
Error: User Error
Failed to add a wip record in //
ROWSET[@NAME="DPR0077"]//
VAR[@NAME="LOCATION"].
Error: User Error
Unable to add RECORDID (UNIQUE_ID or
RECNUM) to output attachment in //
ROWSET[@NAME="DPR0078"]//
VAR[@NAME="LOCATION"].
Error: User Error
Unable to get an unique string in //
ROWSET[@NAME="DPR0079"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
There is no matching record in the WIP file for the user
ID. Check records in the WIP file for the specified user ID.
The form set ID maybe missing. Check the FormSetID field in the WIP DFD and data file.
Maybe a invalid path or DFD file. Make sure the path and
DFD file name are correct.
Maybe a invalid path or DFD file. Make sure the path and
DFD file name are correct.
Error: User Error
Unable to get field value //
ROWSET[@NAME="DPR0080"]//
VAR[@NAME="FIELD"] in //
ROWSET[@NAME="DPR0080"]//
VAR[@NAME="LOCATION"].
Field is not defined in DFD file or value does not exists in
WIP file. Check the existence of field in DFD file and value in WIP file.
Error: User Error
Cannot open WIP table //
ROWSET[@NAME="DPR0081"]//
VAR[@NAME="WIPTABLE"].
Used incorrect path or file name. Check WIP table file path and name.
Error: User Error
Unable to retrieve the stored wip record and file handle in //ROWSET[@NAME="DPR0082"]//
VAR[@NAME="LOCATION"].
DFD handle and record buffer are not located Verify if the
WIP record and file handle are ever stored.
326
Code
DPR0084
DPR0085
DPR0086
DPR0087
DPR0088
DPR0089
DPR0090
DPR0091
DPR0092
Severity: Category
Message text
Error: User Error
Failed to get current record //
ROWSET[@NAME="DPR0084"]//
VAR[@NAME="RECORDID"] in //
ROWSET[@NAME="DPR0084"]//
VAR[@NAME="LOCATION"].
Error: User Error
Failed to get current record in //
ROWSET[@NAME="DPR0085"]//
VAR[@NAME="LOCATION"].
Error: User Error
Failed to load WIP Formset ID: //
ROWSET[@NAME="DPR0086"]//
VAR[@NAME="FORMSETID"] in //
ROWSET[@NAME="DPR0086"]//
VAR[@NAME="LOCATION"].
Error: User Error
Failed to Delete WIP Formset ID: //
ROWSET[@NAME="DPR0087"]//
VAR[@NAME="FORMSETID"] in //
ROWSET[@NAME="DPR0087"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Failed to intialize library(s) for configuration //
ROWSET[@NAME="DPR0088"]//
VAR[@NAME="CONFIG"].
Error: User Error
Unable to update user information //
ROWSET[@NAME="DPR0089"]//
VAR[@NAME="USERID"] to user database.
Cause / Remedy
There is no matching record in the WIP file for the provided record ID. Verify the record in the WIP file for the record ID.
There is no matching record in the WIP file for the provided record ID. Verify the record in the WIP file for the record ID.
There is no matching WIP data for the provided form set
ID. Verify the WIP data for the form set ID.
An error was encountered deleting form set data for this
FormSetID. Review configuration and data source.
The library manager setup in the bridge initialization file is incorrect. Check the setup of the library manager in configuration INI file.
The user may not exist in the user database. Check the
USERINFO.DBF file.
Error: Internal Error
Unable to add //ROWSET[@NAME="DPR0090"]//
VAR[@NAME="USERID"] to user database.
Unknown internal error. If the problem persists, report the error to Support.
Error: User Error
Cannot add user //ROWSET[@NAME="DPR0091"]//
VAR[@NAME="USERID"] to user database.
The user may already exist in the user database. Check the
USERINFO.DBF file.
Error: User Error
Unable to delete //ROWSET[@NAME="DPR0092"]//
VAR[@NAME="USERID"] from user database.
The user may not exist in the user database. Check the
USERINFO.DBF file.
327
Appendix D
Code
DPR0093
DPR0097
DPR0098
DPR0099
DPR0100
DPR0101
DPR0102
DPR0103
Severity: Category
Message text
Error: User Error
Cannot modify user records.
Cause / Remedy
Missing action mode. Check the input attachment variable ACTION.
Error: User Error
Attachment form //ROWSET[@NAME="DPR0097"]/
/VAR[@NAME="FORM"] metadata specifed DSI attachment variable //
ROWSET[@NAME="DPR0097"]//
VAR[@NAME="VARIABLE"] but this variable was not found. File will not be loaded.
XML form set specified DSI variable in form metadata but
DSI variable was not found. Check the input attachment variables.
Error: User Error
Attachment form //ROWSET[@NAME="DPR0098"]/
/VAR[@NAME="FORM"] metadata specifed DSI file attachment with delimeter //
ROWSET[@NAME="DPR0098"]//
VAR[@NAME="VARIABLE"] but this file was not attached to DSI message. File will not be loaded.
XML form set specified that file was attached to DSI message in form metadata but DSI file was not found in the message. Check the files attached to DSI message.
Error: User Error
Attachment form //ROWSET[@NAME="DPR0099"]/
/VAR[@NAME="FORM"] metadata is missing required value //ROWSET[@NAME="DPR0099"]//
VAR[@NAME="INFO"]. File will not be loaded.
XML form set specified attachment form which is missing required metadata. Check the XML form set and form metadata
Error: User Error
Failed to load attached file specified by attachment form //ROWSET[@NAME="DPR0100"]//
VAR[@NAME="FORM"] File name //
ROWSET[@NAME="DPR0100"]//
VAR[@NAME="FILE"] of type //
ROWSET[@NAME="DPR0100"]//
VAR[@NAME="TYPE"].
Failed to load file specified by attachment form Make sure the file type was specified correctly. Make sure the file exists. Make sure the file type is supported
Error: Bridge Error
Failed to load dynamic link library //
ROWSET[@NAME="DPR0100"]//
VAR[@NAME="LIBRARY"].
Error: Bridge Error
Cannot locate variable //
ROWSET[@NAME="DPR0102"]//
VAR[@NAME="VARIABLE"] in the attachment list after executing Documanage bridge rules.
Error: Bridge Error
Documaker (gendata) did not return EWPS publish response.
Dynamic link library was not found or has unresolved dependencies. Check that the specified library is installed.
Make sure the version of specified library matches the installation of the bridge.
Documanage Bridge failed to retrieve specified file.
Examine the Documanage Bridge errors and correct problems.
Documaker (GenData) failed to create EWPS publish response. Check version and patch level of GenData and make sure EWPS is supported in this version
328
Code
RPD0001
RPD0002
RPD0003
RPD0004
RPD0005
RPD0006
RPD0007
Severity: Category
Message text
Error: User Error
Can not locate variable //
ROWSET[@NAME="RPD0001"]//
VAR[@NAME="VARIABLE"] in the attachment list at
//ROWSET[@NAME="RPD0001"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
Attachment variable wa misspelled or not included in the request. Check the attachment variable in the request.
Error: Bridge Configuration
Can not Create //ROWSET[@NAME="RPD0002"]//
VAR[@NAME="TAGNAME"] at //
ROWSET[@NAME="RPD0002"]//
VAR[@NAME="LOCATION"].
Invalid location or server access rights. Make sure the path exists and server access rights.
Memory is running low on the server. Restart the server.
If the error persists, report it to Support.
Error: Bridge Configuration
Can not create DSI variable //
ROWSET[@NAME="RPD0003"]//
VAR[@NAME="VARIABLE"] at //
ROWSET[@NAME="RPD0003"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Can not add variable //
ROWSET[@NAME="RPD0004"]//
VAR[@NAME="VARIABLE"] to attachment at //
ROWSET[@NAME="RPD0004"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Can not locate DSI variable //
ROWSET[@NAME="RPD0005"]//
VAR[@NAME="VARIABLE"] at //
ROWSET[@NAME="RPD0005"]//
VAR[@NAME="LOCATION"].
The maximum size of the queue message was reached.
Reduce the size of the message. For instance, if the message size is too large due to too many matches found using the search criteria, consider refining the search criteria.
Specified variable was not created prior to this call. Make sure all the required rules are specified in the request type.
Error: User Error
DSI variable //ROWSET[@NAME="RPD0006"]//
VAR[@NAME="VARIABLE"] does not contain valid data. Failed to //ROWSET[@NAME="RPD0006"]//
VAR[@NAME="LOCATION"].
The data specified for the attachment variable is incorrect.
Provide proper data to the attachment variable in the request.The data was corrupted. Restart the server. If the error persists, report it to Support.
Error: User Error
File //ROWSET[@NAME="RPD0007"]//
VAR[@NAME="FILENAME"] does not exists. Failed to //ROWSET[@NAME="RPD0007"]//
VAR[@NAME="LOCATION"].
GenData did not return results. Make sure the GenData configuration is correct.GenData experienced errors before it had a chance to return results. Test the GenData program independently and make sure it runs without errors.GenData is not configured to run under IDS. Make sure the IDS configuration and AFGJOB files are configured correctly.
329
Appendix D
Code
RPD0008
RPD0009
RPD0010
RPD0011
RPD0012
RPD0013
RPD0014
RPD0015
Severity: Category
Message text
Error: Bridge Configuration
The call by //ROWSET[@NAME="RPD0008"]//
VAR[@NAME="LOCATION"] to API //
ROWSET[@NAME="RPD0008"]//
VAR[@NAME="APINAME"].
Cause / Remedy
The parameters passed to the API are invalid Verify all expected parameters by the API are valid.An internal server error occurred. If the error persists, contact Support
Error: Bridge Configuration
The INI option //ROWSET[@NAME="RPD0009"]//
VAR[@NAME="INIOPTION"] cound not be located in the group //ROWSET[@NAME="RPD0009"]//
VAR[@NAME="INIGROUP"].
The INI option does not exist in the INI control group.
Add the INI option to the INI group.control
Error: Bridge Configuration
Can not create DSI variable //
ROWSET[@NAME="RPD0010"]//
VAR[@NAME="VARIABLE"].//
ROWSET[@NAME="RPD0010"]//
VAR[@NAME="LOCATION"] failed.
Memory is running low on the server. Restart the server.
If the error persists, report it to Support.
GenData stopped due to a fatal error. Correct the error and resubmit. If the error persists, report it to Support.
Error: Bridge Configuration
Unexpected Program Termination of GenData in //
ROWSET[@NAME="RPD0011"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Socket connection failure in //
ROWSET[@NAME="RPD0012"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Can not unload jobticket to msg buffer in //
ROWSET[@NAME="RPD0013"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Can not load msg buffer to joblog in //
ROWSET[@NAME="RPD0014"]//
VAR[@NAME="LOCATION"].
Encountered a fatal error when IDS establishes the socket connection to RP. Correct the error and resubmit. If the error persists, report it to Support.
Unknown internal error. If the error persists, report it to
Support.
Unknown internal error. If the error persists, report it to
Support.
Error: Bridge Configuration
Can not open RPD error file //
ROWSET[@NAME="RPD0015"]//
VAR[@NAME="FILENAME"] at //
ROWSET[@NAME="RPD0015"]//
VAR[@NAME="LOCATION"].
Unknown internal error. If the error persists, report it to
Support.
330
Code
RPD0016
RPD0017
RPD0018
RPD0020
IRL0001
IRL0002
IRL0003
IRL0004
IRL0005
IRL0006
Severity: Category
Message text
Error: Bridge Configuration
Socket time out in //ROWSET[@NAME="RPD0016"]/
/VAR[@NAME="LOCATION"].
Cause / Remedy
Possible GenData failure. If the error persists, report it to
Support.
Error: Bridge Configuration
Time exceeded MaxWaitForStart in //
ROWSET[@NAME="RPD0017"]//
VAR[@NAME="LOCATION"].
Unexpected termination of GenData. Fix GenData errors and try again.
Error: Bridge Configuration
Gendata failure in //ROWSET[@NAME="RPD0018"]/
/VAR[@NAME="LOCATION"].
GenData failed. Fix GenData errors and try again.
Error: Bridge Configuration
Show error: //ROWSET[@NAME="RPD0020"]//
VAR[@NAME="Error"].
Error: User Error
The required attachment variable //
ROWSET[@NAME="IRL0001"]//
VAR[@NAME="LOCATION"] could not be located.
GenData failed. Fix GenData errors and try again.
The attachment variable was not included in the request.
Include the attachment variable in the request.The attachment variable was misspelled in the request. Make sure the attachment variable is properly spelled in the request.
Error: User Error
No search criteria was specified. The attachment variable //ROWSET[@NAME="IRL0002"]//
VAR[@NAME="FIELDS"] is empty.
The Fields variable in the request is empty. Add the appropriate search fields to the fields variable in the request.
Error: User Error
The user information database, //
ROWSET[@NAME="IRL0003"]//
VAR[@NAME="FILENAME"] could not be opened.
Invalid path or file name. Make sure the path and file name are valid.The User Database does not exist Make sure the user database exists at the specified location.
Make sure the user ID is valid.
Error: User Error
The user ID //ROWSET[@NAME="IRL0004"]//
VAR[@NAME="USERID"] is invalid.
Error: User Error
The password for user //
ROWSET[@NAME="IRL0005"]//
VAR[@NAME="USERID"]is incorrect.
Make sure the spelling and casing of the password are correct.
Error: Server Configuration
The virtual memory management API //
ROWSET[@NAME="IRL0006"]//
VAR[@NAME="APINAME"] failed.
Memory corruption on the server. If the error persists, report it to Support.Server is running low on memory.
Restart the server. If the error persists, report it to Support.
331
Appendix D
Code
IRL0007
IRL0008
IRL0009
IRL0010
IRL0011
IRL0012
IRL0013
Severity: Category
Message text
Error: Server Configuration
The ini option //ROWSET[@NAME="IRL0007"]//
VAR[@NAME="INIOPTION"] could not be located in the group //ROWSET[@NAME="IRL0007"]//
VAR[@NAME="INIGROUP"].
Cause / Remedy
The INI option does not exists in the INI control group.
Add the INI option to the INI control group.
Error: Server Configuration
The database API //ROWSET[@NAME="IRL0008"]//
VAR[@NAME="APINAME"] failed accessing the table
//ROWSET[@NAME="IRL0008"]//
VAR[@NAME="TABLENAME"].
Invalid path, database name or table name. Make sure the path, database name and table name are correct.The table does not exist. Make sure the table specified exists in the database specified.Invalid or corrupted table. Make sure the table is valid.
Warning: Server Configuration
No matches were found for the search criteria.
The search criteria is incorrect. Provide valid search criteria.
Error: Server Configuration
The system encountered an internal error of unknown type. The call by //ROWSET[@NAME="IRL0010"]//
VAR[@NAME="LOCATION"] to API //
ROWSET[@NAME="IRL0010"]//
VAR[@NAME="APINAME"] failed.
Internal error. If the error persists, report it to Support.
Error: Server Configuration
The attachment field //
ROWSET[@NAME="IRL0011"]//
VAR[@NAME="VARIABLE"] does not contain valid data.
Invalid data specified for the attachment variable. Specify the correct data for the attachment variable in the request.
Error: Bridge Configuration
The queue management API //
ROWSET[@NAME="IRL0012"]//
VAR[@NAME="APINAME"] failed.
Error: Server Configuration
The initialization file, //
ROWSET[@NAME="IRL0013"]//
VAR[@NAME="FILENAME"] could not be loaded.
The queue management system has not been setup properly. Make sure the initialization settings for the queue management system are correct and restart the web server software and the internet document server.The queue management system software has not been setup properly. Verify the queue management system software is setup properly, and that all queue names and objects are named correctly.The internet account or local account does not have sufficient rights. Make sure the internet account and local account have sufficient rights.
Invalid path of file name. Verify the path and file name are correct.The file does not exist. Make sure the file exists at the specified location.
332
Code
IRL0014
IRL0015
IRL0016
IRL0017
IRL0022
IRL0023
IRL0025
Severity: Category
Message text
Error: Server Configuration
Platform error: Area //
ROWSET[@NAME="IRL0014"]//
VAR[@NAME="AREA"], Code: //
ROWSET[@NAME="IRL0014"]//
VAR[@NAME="CODE"], Code2: //
ROWSET[@NAME="IRL0014"]//
VAR[@NAME="CODE2"], Message: //
ROWSET[@NAME="IRL0014"]//
VAR[@NAME="MESSAGE"].
Cause / Remedy
Internal error. The code and message provide more detailed information. If the problem persists, report the error to Support.
Error: Server Configuration
The parameter //ROWSET[@NAME="IRL0015"]//
VAR[@NAME="PARAMETER"] is invalid.
Invalid rule parameter specified. Specify a valid parameter.
Error: User Error
The value //ROWSET[@NAME="IRL0016"]//
VAR[@NAME="VALUE"] was not found for option //
ROWSET[@NAME="IRL0016"]//
VAR[@NAME="OPTION"] in group //
ROWSET[@NAME="IRL0016"]//
VAR[@NAME="GROUP"] group.
The value is missing from the option in the initialization file group. Add the value to the option in the initialization file group.
Error: Server Configuration
Cannot locate variable //
ROWSET[@NAME="IRL0017"]//
VAR[@NAME="VARIABLE"].
The attachment variable was not included in the request.
Add the attachment variable to the request.
The attachment variable was misspelled in the request.
Correct the spelling of the attachment variable in the request.
Error: Server Configuration
Cannot add variable //
ROWSET[@NAME="IRL0022"]//
VAR[@NAME="VARIABLE"] to the attachment list.
Error: Server Configuration
Cannot save changes to the file //
ROWSET[@NAME="IRL0023"]//
VAR[@NAME="FILE"].
The max size of the queue message was reached. Reduce the size of the message, e.g. if the message size is too large due to too many matches found using the search criteria, consider refining the search criteria. Use a more advanced queueing system.Server is running low on memory. Restart the server. If the error persists, contact Support.
File has read-only attribute. Make sure the file does not have read-only attribute.The account running IDS does not have sufficient rights. Make sure the account running the server has sufficient rights to the directory where the file is being saved.
Error: Server Configuration
Cannot add variable //
ROWSET[@NAME="IRL0025"]//
VAR[@NAME="VARIABLE"] to the attachment record
//ROWSET[@NAME="IRL0025"]//
VAR[@NAME="RECORD"].
The max size of the queue message was reached. Reduce the size of the message, e.g. if the message size is too large due to too many matches found using the search criteria, consider refining the search criteria. Use a more advanced queueing system.Server is running low on memory. Restart the server. If the error persists, contact Support.
333
Appendix D
Code
IRL0026
IRL0027
IRL0028
IRL0029
IRL0030
IRL0031
MTC0001
Severity: Category
Message text
Error: User Error
Cannot find the global variable //
ROWSET[@NAME="IRL0026"]//
VAR[@NAME="VARIABLE"]. Make sure the
IRLInitFTP rule is registered on INI request.
Cause / Remedy
The request is trying to use the IRLFileFTP rule but the rule IRLInitFTP was not registered on the init request.
Add the IRLInitFTP rule to the INI request on the server.
Hint, lookup a description of the rule in the SDK. The
IRLInitFTP rule is missing a parameter in the initialization file. Add the parameter to the IRLInitFTP rule in the initialization file. Hint, lookup a description of the rule in the SDK.
Error: User Error
Rule parameters for rule //
ROWSET[@NAME="IRL0027"]//
VAR[@NAME="RULENAME"] are incorrect. The rule is disabled.
The parameters supplied to the rule are invalid. Make sure the parameters supplied to the rule are valid. Hint, lookup a description of the rule FTP rules in the SDK.
Error: User Error
The FTP server is not specified in the attachment or in the INI file. The FTP rule is disabled.
An FTP server is not specified in the initialization file or in the attachment. Add the FTP server to the initialization file or the attachment.
Error: User Error
FTP connection cannot be established. Make sure the
FTP rule is configured correctly.
The initialization file settings for the FTP rule are incorrect. Make sure the initialization file settings are correct.The FTP server has not been configured correctly.
Make sure the FTP Server has been configured correctly.The FTP account specified in the initialization file does not have sufficient rights. Make sure the account has sufficient rights.
Error: User Error
Cannot find variable //
ROWSET[@NAME="IRL0030"]//
VAR[@NAME="VARIABLE"] in the attachment. FTP operation //ROWSET[@NAME="IRL0030"]//
VAR[@NAME="OPERATION"] will be skipped.
The variable specified in the initialization file is missing in the attachment. Add the variable to the attachment.
Error: User Error
Error //ROWSET[@NAME="IRL0031"]//
VAR[@NAME="ERRORCODE"]//
ROWSET[@NAME="IRL0031"]//
VAR[@NAME="ERRORDESCRIPTION"] on FTP operation //ROWSET[@NAME="IRL0031"]//
VAR[@NAME="OPERATION"].
The system encountered an error while attempting to execute the FTP rule. Lookup additional documentation for the operating system error code.
Error: User Error
The attachment variable //
ROWSET[@NAME="MTC0001"]//
VAR[@NAME="VARIABLE"] could not be located
The attachment variable is missing. Add the attachment variable in the request.
334
Code
Severity: Category
Message text
MTC0010 Error: Bridge Configuration
The system encountered an internal error of unknown type. The call by //ROWSET[@NAME="MTC0010"]//
VAR[@NAME="LOCATION"] to API //
ROWSET[@NAME="MTC0010"]//
VAR[@NAME="APINAME"] failed.
Cause / Remedy
Unknown internal error. If the error persists, report it to
Support
MTC0011 Error: User Error
The attachment variable //
ROWSET[@NAME="MTC0011"]//
VAR[@NAME="VARIABLE"] does not contain valid data.
Invalid data was submitted in the attachment variable.
Specify the correct data in the attachment variable.
Internal error. The code and message provide more detailed information. If the problem persists, report the error to Support.
MTC0014 Error: Platform Error
Platform error. Area //
ROWSET[@NAME="MTC0014"]//
VAR[@NAME="AREA"], Code: //
ROWSET[@NAME="MTC0014"]//
VAR[@NAME="CODE"], Code2: //
ROWSET[@NAME="MTC0014"]//
VAR[@NAME="CODE2"], Message: //
ROWSET[@NAME="MTC0014"]//
VAR[@NAME="MESSAGE"].
MTC0017 Error: Bridge Configuration
Cannot locate variable //
ROWSET[@NAME="MTC0017"]//
VAR[@NAME="VARIABLE"].
MTC0018 Error: User Error
Cannot load the font cross reference file //
ROWSET[@NAME="MTC0018"]//
VAR[@NAME="PATH"]\//
ROWSET[@NAME="MTC0018"]//
VAR[@NAME="FILE"]\//
ROWSET[@NAME="MTC0018"]//
VAR[@NAME="EXTENSION"].
The rules in the request type are not saving the variable prior to its usage. Make sure the rules in the request type are saving the variable prior to its usage. Hint, look up the description of the rules in the SDK.Memory is running low on the server. Restart the server. If the error persists, report it to Support.
Invalid path, file name or extension. Make sure the path, file name and extension are valid.The font cross reference file does not exist at the specified location. Make sure the font cross reference file exists at the specified location.
MTC0022 Error: Bridge Configuration
Cannot add variable //
ROWSET[@NAME="MTC0022"]//
VAR[@NAME="VARIABLE"] to the attachment list.
The max size of the queue message was reached. Reduce the size of the message. For instance, if the message size is too large due to too many matches found using the search criteria, consider refining the search criteria. Use a more advanced queueing system.Internal error If the problem persists report it to Support.
SRV0001 Error: Server Configuration
The rule processor failed while processing the messages
//ROWSET[@NAME="SRV0001"]//
VAR[@NAME="CURMSG"].
The server is not configured for a particular request type.
Correct the server configuration
335
Appendix D
Code
SRV0002
SRV0003
SRV0004
SRV0005
TPD0001
TPD0002
TPD0003
TPD0004
TPD0005
Severity: Category
Message text
Error: Server Configuration
The server is not configured for the request type: //
ROWSET[@NAME="SRV0002"]//
VAR[@NAME="REQTYPE"]
Error: Server Configuration
The master server could not send the message to IDS.
Error: Bridge Configuration
Cannot locate the directory //
ROWSET[@NAME="SRV0004"]//
VAR[@NAME="DIR"] specified.
Cause / Remedy
The request type specified in the request is missing in the initialization file. Add the request type to the initialization file.The request type specified in the request does not have the appropriate rules in the initialization file. Make sure the request type is calling the appropriate rules for the request.
The master server or the IDS server are not configured correctly. Make sure the master server and the IDS server are configured correctly.
The directory specified does not exist. Make sure the directory specified exists.
Error: Bridge Configuration
The parameter //ROWSET[@NAME="SRV0005"]//
VAR[@NAME="PARAM"] specified for //
ROWSET[@NAME="SRV0005"]//
VAR[@NAME="LOCATION"] is invalid!
The value for the specified parameter is not valid. Make sure the value specified is valid for the rules executed.
Error: Bridge Configuration
Cannot DSILocateValue //
ROWSET[@NAME="TPD0001"]//
VAR[@NAME="NAME"]. Make sure TPDInit rule was executed.
The request is trying to use the TPD rules but the rule
TPDInit was not registered on the init request. Add the
TPDInit rule to the INI request on the server. Hint, lookup a description of the rule in the SDK.
Error: Bridge Configuration
Call to API //ROWSET[@NAME="TPD0002"]//
VAR[@NAME="APINAME"] failed.
Internal error. Check additional errors for more info. If the problem persists, report the error to Support.
Error: Bridge Configuration
File //ROWSET[@NAME="TPD0003"]//
VAR[@NAME="TIFFNAME"] could not be loaded.
Error: Bridge Configuration
Stem variable //ROWSET[@NAME="TPD0004"]//
VAR[@NAME="NAME"] could not be located.
Error: Bridge Configuration
Stem variable //ROWSET[@NAME="TPD0005"]//
VAR[@NAME="NAME"] has invalid value (0).
Loader not initialized. Make sure the Loader is initialized prior to loading the TIFF file.Invalid path or file name or file does not exist. Make sure the path and file name are valid.
Specific variable with the TIFF file name could not be located. Make sure the TIFF names are provided in the sequential “stem” variables.
Specific variable with the TIFF file name has invalid value.
Make sure the TIFF names are provided in the sequential
“stem” variables and have valid values.
336
Code
IPP0001
IPP0002
IPP0003
IPP0004
IPP0005
IPP0006
IPP0007
IPP0008
Severity: Category
Message text
Error: Bridge Configuration
Call to //ROWSET[@NAME="IPP0001"]//
VAR[@NAME="APINAME"] failed in //
ROWSET[@NAME="IPP0001"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0002"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0002"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0003"]//
VAR[@NAME="APINAME"] wip file in //
ROWSET[@NAME="IPP0003"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Failed to //ROWSET[@NAME="IPP0004"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0004"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0005"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0005"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0006"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0006"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0007"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0007"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0008"]//
VAR[@NAME="APINAME"] POLFile in //
ROWSET[@NAME="IPP0008"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
Error in WipInit. Check file name and path. If the error persists, contact Support
Error in virtual memory management. Restart the server.
If the error persists, report it to Support.
The file may not exist. Check the WIP files. If the error persists, report it to Support.
The form set may not exist. Check the WIP KeyID. If the error persists, report it to Support.
The form set may not exist. Check the WIP KeyID. If the error persists, report it to Support.
Unable to append unique record. Record may already exist.
Memory running low or memory corruption. >Restart. If the error persists, report it to Support.
POLFile may not exist. Check file and path. If the error persists, report it to Support.
337
Appendix D
Code
IPP0009
IPP0010
IPP0011
IPP0012
IPP0013
IPP0014
IPP0015
IPP0016
Severity: Category
Message text
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0009"]//
VAR[@NAME="APINAME"] NAFile in //
ROWSET[@NAME="IPP0009"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Internal API //ROWSET[@NAME="IPP0010"]//
VAR[@NAME="APINAME"] failure in //
ROWSET[@NAME="IPP0010"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0011"]//
VAR[@NAME="APINAME"] TrnDfd file in //
ROWSET[@NAME="IPP0011"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0012"]//
VAR[@NAME="APINAME"] new TrnDfd file in //
ROWSET[@NAME="IPP0012"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Call to //ROWSET[@NAME="IPP0013"]//
VAR[@NAME="APINAME"] failed in //
ROWSET[@NAME="IPP0013"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Field list is empty.
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0015"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0015"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0016"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0016"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
NAFile may not exist. Check file and path. If the error persists, report it to Support.
Misconfiguration.
Check INI options. If the error persists, report it to
Support.
The TrnDfdFile may not exist. Check file and path. If the error persists, report it to Support.
NewTrnDfdFile may not exist. Check file and path. If the error persists, report it to Support.
NewTrnDfdFile may not exist. Check file and path. If the error persists, report it to Support.
Search criteria. Add the appropriate search fields. If the error persists, report it to Support.
Error in virtual memory management. Restart. If the error persists, report it to Support.
Can not add field data. If the error persists, report it to
Support.
338
Code
IPP0017
IPP0018
IPP0020
IPP0021
IPP0022
IPP0023
IPP0024
IPP0026
Severity: Category
Message text
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0017"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0017"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
Can not add to TrnFile. If the error persists, report it to
Support.
Error: Bridge Configuration
Unable to load file //ROWSET[@NAME="IPP0018"]/
/VAR[@NAME="PATH"]\//
ROWSET[@NAME="IPP0018"]//
VAR[@NAME="FILE"]//
ROWSET[@NAME="IPP0018"]//
VAR[@NAME="EXTENTION"].
File may not exist. Check file and path. If the error persists, report it to Support.
Search Keys. Check search keys Error: Bridge Configuration
Failed to match records in IPPLocateMatches.
Error: Bridge Configuration
Unable to add attachment variable //
ROWSET[@NAME="IPP0021"]//
VAR[@NAME="VARIABLE"].
Error: Bridge Configuration
//ROWSET[@NAME="IPP0022"]//
VAR[@NAME="APINAME"] failed to locate attachment variable in //
ROWSET[@NAME="IPP0022"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0023"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0023"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to add attachment variable//
ROWSET[@NAME="IPP0024"]//
VAR[@NAME="VARIABLE"] record //
ROWSET[@NAME="IPP0024"]//
VAR[@NAME="RECORD"].
Error: Bridge Configuration
Unable to read import file //
ROWSET[@NAME="IPP0026"]//
VAR[@NAME="IMPORTFILE"].
If the error persists, report it to Support.
Internal error. If the error persists, report it to Support.
Internal error If the error persists, report it to Support.
File may not exist. Check file and path. If the error persists, report it to Support.
339
Appendix D
Code
IPP0027
IPP0028
IPP0029
IPP0030
IPP0031
IPP0032
IPP0033
IPP0034
Severity: Category
Message text
Error: Bridge Configuration
Unable to load file //ROWSET[@NAME="IPP0027"]/
/VAR[@NAME="FILE"].
Cause / Remedy
Form definition file may not exist. Check file and path. If the error persists, report it to Support.
FAP Image may not exist. Check file and path. If the error persists, report it to Support.
Error: Bridge Configuration
Unable to load FAP image //
ROWSET[@NAME="IPP0028"]//
VAR[@NAME="IMAGE"].
Error: Bridge Configuration
Loading of the submited import file resulted in empty formset.
Impropriety import file. Check the import file. If the error persists, report it to Support.
Internal error. If the error persists, report it to Support.
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0030"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0030"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to open import file //
ROWSET[@NAME="IPP0031"]//
VAR[@NAME="IMPORTFILE"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0032"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0032"]//
VAR[@NAME="LOCATION"].
Import file may not exist. Check file and path. If the error persists, report it to Support.
POLFile may not exist. Check file and path. If the error persists, report it to Support.
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0033"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0033"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0034"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0034"]//
VAR[@NAME="LOCATION"].
NAFile may not exist. Check file and path. If the error persists, report it to Support.
Internal error. If the error persists, report it to Support.
340
Code
IPP0035
IPP0036
IPP0037
IPP0038
IPP0039
IPP0040
IPP0041
IPP0042
Severity: Category
Message text
Error: Bridge Configuration
Could not update recipient //
ROWSET[@NAME="IPP0035"]//
VAR[@NAME="RECIPIENT"] count //
ROWSET[@NAME="IPP0035"]//
VAR[@NAME="COUNT"].
Error: User Error
Unable to locate INI option //
ROWSET[@NAME="IPP0036"]//
VAR[@NAME="INIOPTION"] in the group //
ROWSET[@NAME="IPP0036"]//
VAR[@NAME="INIGROUP"].
Error: Bridge Configuration
Unable to locate attachment variable hFormset.
Error: Bridge Configuration
Unable to locate attachment variable //
ROWSET[@NAME="IPP0038"]//
VAR[@NAME="VARIABLE"].
Cause / Remedy
Recipient may not on the list. Check recipient list. If the error persists, report it to Support.
Missing INI options. Check INI options. If the error persists, report it to Support.
Missing DSI Value DPRFormset. Valid DSI value
DPRFormset needed. If the error persists, report it to
Support.
Missing DSI Value DPRFormset. Valid DSI value
DPRFormset needed. If the error persists, report it to
Support.
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0039"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0039"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to open export file //
ROWSET[@NAME="IPP0040"]//
VAR[@NAME="EXPORTFILE"].
Import file may not exist. Check file and path. If the error persists, report it to Support.
Internal error. If the error persists, report it to Support.
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0041"]//
VAR[@NAME="APINAME"] file //
ROWSET[@NAME="IPP0041"]//
VAR[@NAME="TABLENAME"].
Missing index file or/and DFD file. Check file and path.
If the error persists, report it to Support.
Error: Bridge Configuration
Failed to add form. //ROWSET[@NAME="IPP0042"]/
/VAR[@NAME="GROUP1"], //
ROWSET[@NAME="IPP0042"]//
VAR[@NAME="GROUP2"], //
ROWSET[@NAME="IPP0042"]//
VAR[@NAME="FORMNAME"].
Incorrect form name. Make sure a correct form is matched. If the error persists, report it to Support.
341
Appendix D
Code
IPP0043
IPP0044
IPP0045
IPP0050
IPP0051
IPP0052
IPP0054
IPP0056
Severity: Category
Message text
Error: Bridge Configuration
Form does not exist.
Error: Bridge Configuration
Failed to parse line data //
ROWSET[@NAME="IPP0044"]//
VAR[@NAME="LINEDATA"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0045"]//
VAR[@NAME="APINAME"] file //
ROWSET[@NAME="IPP0045"]//
VAR[@NAME="TABLENAME"].
Error: Bridge Configuration
Call to //ROWSET[@NAME="IPP0050"]//
VAR[@NAME="APINAME"] failed in //
ROWSET[@NAME="IPP0050"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0051"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0051"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0052"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0052"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Failed to retrieve records. //
ROWSET[@NAME="IPP0054"]//
VAR[@NAME="CATALOGKEY"], //
ROWSET[@NAME="IPP0054"]//
VAR[@NAME="CARID"], //
ROWSET[@NAME="IPP0054"]//
VAR[@NAME="FILE"].
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0056"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0056"]//
VAR[@NAME="LOCATION"].
Cause / Remedy
Incorrect form name. Make sure a form name is correct. If the error persists, report it to Support.
Invalid data line. Make sure the data line is correct. If the error persists, report it to Support.
Invalid search criteria. Make sure correct search keys are used. If the error persists, report it to Support.
Internal error If the error persists, report it to Support.
Internal error. If the error persists, report it to Support.
Internal error. If the error persists, report it to Support.
Invalid CatalogKey, CarID or POLFile. Check
CatalogKey, CarID or POLFile. If the error persists, report it to Support.
Invalid WipFile name or WipDfd file. Check WipFile name and WipDfd file. If the error persists, report it to
Support.
342
Code
IPP0057
IPP0058
DSI0001
DSI0002
DSI0003
DSI0004
DSI0005
DSI0006
Severity: Category
Message text
Error: Bridge Configuration
Unable to //ROWSET[@NAME="IPP0057"]//
VAR[@NAME="APINAME"] in //
ROWSET[@NAME="IPP0057"]//
VAR[@NAME="LOCATION"].
Error: Bridge Configuration
Failed to create group. //
ROWSET[@NAME="IPP0058"]//
VAR[@NAME="GROUP1"], //
ROWSET[@NAME="IPP0058"]//
VAR[@NAME="GROUP2"].
Cause / Remedy
Invalid WipFile name or user list. Check WipFile name and user list. If the error persists, report it to Support.
Internal error. If the error persists, report it to Support.
Error: Server Configuration
No customer rule specification in line '//
ROWSET[@NAME="DSI0001"]//
VAR[@NAME="PARMS"]'.
No method name after -> in parameter line Check the spelling of the function line.
Error: Server Configuration
Customer rule //ROWSET[@NAME="DSI0002"]//
VAR[@NAME="RULE"] is not registered and //
ROWSET[@NAME="DSI0002"]//
VAR[@NAME="MODULE"].DLL->DLLRegisterServer not found.
COM Rule DLL not registered. Stop IDS, register COM
DLL and restart IDS.
Error: Server Configuration
Customer rule //ROWSET[@NAME="DSI0003"]//
VAR[@NAME="RULE"] is not registered; self-registry of //ROWSET[@NAME="DSI0003"]//
VAR[@NAME="MODULE"] failed.
Problem with COM DLL registering itself. Check COM source code for errors.
Error: Server Configuration
Customer rule //ROWSET[@NAME="DSI0004"]//
VAR[@NAME="RULE"] is not found in registry.
COM Rule DLL not registered. Stop IDS, register COM
DLL and restart IDS.
Error: Server Configuration
Customer rule //ROWSET[@NAME="DSI0005"]//
VAR[@NAME="RULE"] COM failure: no class factory
(//ROWSET[@NAME="DSI0005"]//
VAR[@NAME="HR"]).
Problem with COM object. Check COM code for errors.
Error: Server Configuration
Customer rule //ROWSET[@NAME="DSI0006"]//
VAR[@NAME="RULE"] COM failure: cannot create instance (//ROWSET[@NAME="DSI0006"]//
VAR[@NAME="HR"]).
Problem with COM object. Check COM code for errors.
343
Appendix D
Code
DSI0007
DSI0008
DSI0009
Severity: Category
Message text
Error: Server Configuration
Customer rule //ROWSET[@NAME="DSI0007"]//
VAR[@NAME="RULE"] COM failure: no IDispatch (/
/ROWSET[@NAME="DSI0007"]//
VAR[@NAME="HR"]).
Cause / Remedy
Problem with COM object. Check COM code for errors.
Problem with COM object. Check COM code for errors.
Error: Server Configuration
Customer rule //ROWSET[@NAME="DSI0008"]//
VAR[@NAME="RULE"] is missing method (//
ROWSET[@NAME="DSI0008"]//
VAR[@NAME="HR"]).
Error: Server Configuration
Fatal error (//ROWSET[@NAME="DSI0009"]//
VAR[@NAME="HR"]) in rule //
ROWSET[@NAME="DSI0009"]//
VAR[@NAME="RULE"].
Problem with COM object. Check server logs for more information.
344
I
NDEX
A
AbsolutePage property 170
Acrobat downloading Acrobat Reader 4
Active Server Pages 12, 171
ActiveX Data Objects 169
AddNameValuePair method 273
AddReq method 16
AFEAssignDpw API 259
AFGJOB.JDT file 154
AFP error messages 300
AltFrom option 134, 135
AppIdx INI option multiple bridges 128
ArcRet control group multiple bridges 128
ASP
IDSASP object 15 showing PDF files 19
ATCReceiveFile referencing attachment variables 100
ATCSendFile referencing attachment variables 100 attachment fields sending and receiving 17 attachment variables referencing 100 attachments distributing email 134, 135
REPLYTO 135
ATTCHDFD.DFD file 133, 136, 137
B
BaseErrors option 152 batch requests submitting 130
Bin2Unicode method 273 bitmaps embedded documents 141
BOF property 171 bridges 2 using multiple 128 built-in functions
REPLYTO 135
C
CacheTime option 122
Certificate Authority 119
CleanCache method 273
ClearMsgFile option 152
ClearReq method 16
ClearRes method 16
Client Connection Definition Table 119 cmdGetResponseWithParm method 256 cmdSetFormsetField method 256
CmdWithMessage method 250
CommandTimeout property 170
Compression attachment variable 131
CONFIG.INI file referencing attachment variables 100 correlation IDs 114
D
DAP.INI file 148 distributing email 133 multiple bridges 128 referencing attachment variables 100
DCLTW32 program 14
Debug control group 149
Debug option 248
MailType control group 134
DefaultTimeoutSeconds attribute 196
DFD VARIABLE option 136 dialogs customizing 190
DisableRightClick option 261 distributed documents 2
DOCCLNT.INI files request types 129
DOCSERV.INI file referencing attachment variables 100 request types 129 docserv.xml file 148, 286
Documaker running via IDS 147 documents attaching 141
Documerge 2
DownloadDPWFonts option 248
DP.DLL 267
DPP files 239
DPRAdd2Attachment rule distributing email 134, 136, 137
DPRCreateEMailAttachment rule distributing email 135, 137
DPRDecryptValue rule 194
DPRFindTemplate rule distributing email 133, 135, 136, 137
345
Index
DPRLog rule distributing mail 138
DPRMail rule and the DPRLog rule 138 distributing email 134, 136, 137
DPRParseRecord rule and the DPRLog rule 138 distributing email 133, 136
DPRPrint rule 154
DPRSetConfig rule multiple bridges 128
DPW files 155
DRLGetConfig 199
DSICoEx sample output 289
DSICoTB sample output 290, 291, 292, 293
DSIEncr COM object 193
DSIEXW32 program sample output 289
DSIGetSOAPMessage 167
DSIGetSOAPMessageSize 167
DSIJWP.DLL file 131
DSILIB default time-outs 196
DSIMessage class 72
DSIRowset2XML rule 192
DSIRowset2XMLSize rule 192
DSIServer control group 154
DSITEST utility 99
DSN property 170 duplex 131
E
email distributing with IDS 132 message bus 138
Email2IDS control group 133, 136
EmailAdd option 133
EmailAdd2Attachment control group 134, 137
EmailDFD control group 133, 136 encrypting
URLs 193
Enterprise Web Processing Services (EWPS) 202
EOF property 171 eplyToQueueManagerName property 120 error messages 229, 295
AFP 300 displaying 296
Errors property 171
EWPS
Jmeter 202
Execute method 171
F
favorites list 230
FD2HTW32 utility 180
FieldErrors option 152
Fields property 171
File option
EmailDFD control group 133
FILE2IDS utility 130
FileExists method 274
FileExt option 154
FilePurgeList option 123
FilePurgeTimeSeconds option 123 files sample output 289 system 285 testing the transfer of 99
FileWriteThreshold option 123 firewalls using 193 fonts
AFP error messages 300
XML 181 forms publishing on the web 180 frequently used forms 230
From option 134, 135
FSISYS.INI file 152
FSIUSER.INI file 152
FSIVER utility 203
FTP and firewalls 193
G
GenDataStopOn control group 152
GENSemaphoreName option 149, 153
GetAttach 100
GetMsg method 274
GetUniqueString method 274
GetVersion method 255, 257
I
i_GetMRLResource rule 230 iDocumaker favorites list 230
IDS pausing 175 running Documaker 147
IDSASP creating front-end solutions 14 illustrated 15
IDSINSTANCE variable 66
IDSJSP bean 14
IDSJSP.jar 13
346
IDSServer control group 148, 149, 154
IDSSQL.ADO 170
IDSSQL.DLL 169
IDSSQL.IDSRC 171
IDSSQLRULE.DLL 169
ImageErrors option 152
INI files list of 286
INIFile option multiple bridges 128
Initialize method 274
InitializeDefaults method 275
INIToken option 261 instance numbers 66 instances
Watchdog 62 internal message format 190
Internet access 6
Internet Document Server and Document Management Solutions 2 illustration 12 overview 11 using the 9 intranet 2
IRLFileFTP rule 193
IRLInitFTP rule 193
J
J2EE-compliant application servers 108
Java
Java Management Extensions (JMX) 90
Java Message Service (JMS) 108
Java Naming and Directory Interface (JNDI) 108 server pages 13 threads test utility 53
WebSphere MQ 111
Jmeter 202
JSON 202
L
LDAP 195 load balancing 70 log files
DPRLog rule 138 logging categories 92
LogConfConvert.xsl template 91
LogFile option 152
LogFileType option 152, 153 logos error messages 301
M
Mail control group 134
MailFunc option 134
MailType control group 134
MailType option 134
Management Information Base (MIB) file 60 marshaller class 72
MaxErrors option 120
MaxTimeoutSeconds attribute 196 message format internal 190
MinTimeoutSeconds attribute 196
Module option 134
MoveFirst method 171
MoveLast method 171
MoveNext method 171
MovePrevious method 171
MQSeries 111
DP.DLL COM object 267
MultiFilePrint option 152, 153 multiline text fields in XML files 181 multiple bridges 128 multiple servers measurements 48 using 46
MVS
ODBC connections 47
N
Name option 134
O
ODBC connections to MVS 47 oDSI property 15
OnEndPage method 16
OnStartPage method 16
OutputFunc option 131
OutputMod option 131 overlays error messages 300
OverridePrompt option 261
P
page segments error messages 301
PageSize property 170
Password property 171 passwords and firewalls 193 patches 203
PatchReporter utility 203
Path option 136 pausing IDS 175
Index
347
Index
PCL printing mixing simplex and duplex 131
PDF Converter 3
PDF files showing 19 vs. HTML files 4
PDF Print Driver overview 206 performance measurements with multiple servers 47 using multiple servers 46 personal forms lists 230
Port option 134
Portable Document Format 206
PostGenDataExecutable option 158
PostGenPrintExecutable option 158
PostGenTrnExecutable option 158
Print Preview compressed PCL files 131
PRINTPATH attachment variable 154
PrintPath option 154 processing documents using the internet 1
ProcessQ method 16, 17
ProcessRq method 16, 17
ProcessTrn method 275, 281
PRTZCompressOutPutFunc function 131 publishing forms on the web 180
PullCode option 133
PutMsg method 275
Q
queues
~GetAttach variable 58, 100 client connection definition tables 119 default message queue handler 103
DESTINATION parameter 57
HTTP queues 104
IDSClientRule 56 logging categories 80 message queues 102 messaging systems 71 pausing IDS 175 pooling 117
ReplyToQueueName property 120 security exits 118
SOAP 161
SSL connections 119 transforming XML messages 186 using HTTP 124 using Java message service 108 using multiple 106 using WebSphere MQ 111
348
WaitTime property 16
R
ReadBinFile method 16, 21
ReadIniOptions method 276
ReceiveByCorrelationID API 114
RecordCount property 171
RepeatInterval attribute 198
ReplyTo option 134, 135 replyToQueueName property 120
REQTYPE multiple servers 47 request submitting batch requests 130 types 129
Request property 15 requests monitoring 61 timed 198
RequestValue method 276 required components 6
Response.Redirect method 20
Result property 15
ResultValue method 277
RPDCheckRPRun rule 149
RPDCreateJob rule 149
RPDJobTicket variable 149
RPDProcessJob rule 149
RPDRunProcess variable 149
RPDRunRP control group 149
RPDSemaphoreName option 149, 153
RPDStopRPRun rule 149
RPEX1.INI file 148
RULServerJobProc option 153
RULStandardBaseProc rule 154
RUNMQSC tool 111
RunOnPrimaryInstanceOnly attribute 198
S
samples output files 289
SaveOnExit option 261 security
URLs 193 security issues 193 semaphores 149
Server option 134
Server.CreateObject method 194
ServerBaseProc rule 154 servers performance measurements 48 setting up additional 49
using multiple 46
SetGUID method 277 setting up a Windows NT Service 50
ShowAtt property 15 simplex 131
SleepingTime option 153
SNMP server programs 60
SOAP 202
DP.DLL COM object 267 message format 161
SOAP standards 190
SOAPAddAttachment method 277
SOAPGetAttachment method 278
SOAPGetAttachmentAsBuffer method 278
SOAPLoadAttachment method 278
SOAPUnloadAttachment method 279
SQL connecting to 169
SQLCommand property 171
SSL connections 119
SuppressErrorsIntervalSeconds option 120 system files 285
T
Terminate method 279
Thin Client Forms Publisher 174 thin clients 2 timed requests 198
TimeOut property 16 time-outs
DSILIB client applications 196
TPDInitRule rule multiple bridges 129
Trace method 279
TransactionErrors option 152
TrapEvents option 261
TrapOnlyQuitEvent option 261
U
UDDI compliance 161
Unicode2Bin method 279
URL requests 125
URLs encrypting 193 user IDs and firewalls 193
User property 171 using multiple bridges 128 the Internet Document Server 9 the PDF Print Driver 206
W
WaitForStart option 152
WaitTime property 16
WATCHDOG 50
Watchdog 66
Watchdog process 62
WATCHDOG-STDERR.TXT 50
WATCHDOG-STDOUT.TXT 50 web servers and firewalls 193
WebLogic 108
WebSphere 108
CCDT files 119 correlation IDs 114 overview 111 security exits 118 setting up 112
SSL connections 119
Windows NT setting up an NT Service 50
WindowsRawPrinter.jar file 131
WIP Edit plug-in changing user assignments 259 cmdGetResponseWithParm method 254, 256 cmdSetFormsetField method 251, 252, 253, 256
DPW files 155
GetVersion method 255, 257
WIPCTL program 250
WriteBinFile method 280
WriteToLog method 280
X
XML error message template 296 formatting text 181 internal message format 190 message format 161
XML2Attach control group 134, 136, 137
XML2Body control group 133, 136, 137
XRFToken option 248
Z
Security exits 118
Index
349
Index
350
பதிவிறக்கு
விளம்பரம்