enoviareportgenerator admin

94
ENOVIA Report GeneratorAdministration Guide

Upload: amac-guevendik

Post on 26-Oct-2014

282 views

Category:

Documents


7 download

DESCRIPTION

Enovia Report Generator Admin Guide

TRANSCRIPT

Page 1: ENOVIAReportGenerator Admin

ENOVIA Report Generator™

Administration Guide

Page 2: ENOVIAReportGenerator Admin

Copyright and Trademark Information

©Dassault Syst•mes, 2000 - 2009

All rights reserved.

PROPRIETARY RIGHTS NOTICE: This documentation is proprietary property of Dassault Syst•mes and its subsidiaries. This documentation shall be treated as confidential information and may only be used by employees or contractors with the Customer in accordance with the applicable Software

License Agreement.

Adaplet®, Compliance Connect®, DesignSync®, ENOVIA®, MatrixOne®, ProjectSync®, Synchronicity®, and Team Central® are registered trademarks of Dassault Syst•mes.

ENOVIA Live Collaboration, ENOVIA Live Collaboration Business Process Services, ENOVIA Live Collaboration Server, ENOVIA Studio Modeling Platform, ENOVIA Studio Federation Toolkit, ENOVIA Studio Customization Toolkit, ENOVIA 3D Live, ENOVIA Engineering Central, ENOVIA

Library Central, ENOVIA Materials Compliance Central, ENOVIA Program Central, ENOVIA Sourcing Central, ENOVIA Specification Central, ENOVIA Supplier Central, ENOVIA Designer Central, ENOVIA Collaborative Interference Management, ENOVIA Semiconductor Accelerator for Team

Compliance, ENOVIA Aerospace and Defense Accelerator for Program Management, ENOVIA Apparel Accelerator for Design and Development, ENOVIA X-BOM Cost Analytics, ENOVIA X-BOM Manufacturing, ENOVIA Variant Configuration Central, ENOVIA Synchronicity DesignSync Data

Manager, IconMail, ImageIcon and Star Browser are trademarks of Dassault Syst•mes.

Oracle® is a registered trademark of Oracle Corporation, Redwood City, California. DB2, AIX, and WebSphere are registered trademarks of IBM Corporation. WebLogic is a registered trademark of BEA Systems, Inc. Solaris, UltraSPARC, Java, JavaServer Pages, JDBC, and J2EE are registered

trademarks of Sun Microsystems, Inc. Windows XP and Internet Explorer are registered trademarks of Microsoft Corp. HP and HP-UX are registered trademarks of HP. All other product names and services identified throughout this book are recognized as trademarks, registered trademarks, or service marks

of their respective companies.

The documentation that accompanies ENOVIA products describes the applications as delivered by Dassault Syst•mes. This documentation includes readme files, online help, user guides, and administrator guides. If changes are made to an application or to the underlying framework, Dassault Syst•mes

cannot ensure the accuracy of this documentation. These changes include but are not limited to: changing onscreen text, adding or removing fields on a page, making changes to the administrative objects in the schema, adding new JSPs or changing existing JSPs, changing trigger programs, changing the

installation or login process, or changing the values in any properties file. For instructions on customizing the provided documentation, see the Business Process Services Administrator’s Guide.

Dassault Systemes Enovia Corp.

900 Chelmsford Street

Lowell, MA 01851

Telephone 978.442.2500

Email: [email protected]

http://www.3ds.com

Additional Components This product also includes additional components copyrighted by other third parties. The sections that follow provide license and copyright notices of these software components.

Apache

Apache License

Version 2.0, January 2004

http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by

contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative

Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity

authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control

systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense,

and distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise

transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against

any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation

is filed.

4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one

of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The

contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot

be construed as modifying the License.

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work

otherwise complies with the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein

shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without

limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of

permissions under this License.

8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct,

indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses),

even if such Contributor has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such

obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting

any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend

that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations

under the License.

Apache Ant

=========================================================================

NOTICE file corresponding to the section 4 d of the Apache License, Version 2.0, in this case for the Apache Ant distribution.

=========================================================================

This product includes software developed by The Apache Software Foundation (http://www.apache.org/).

This product includes also software developed by :

- the W3C consortium (http://www.w3c.org) ,

- the SAX project (http://www.saxproject.org)

Please read the different LICENSE files present in the root directory of this distribution. [BELOW]

This license came from:

Page 3: ENOVIAReportGenerator Admin

http://www.w3.org/Consortium/Legal/copyright-software-19980720

W3C® SOFTWARE NOTICE AND LICENSE

Copyright © 1994-2001 World Wide Web Consortium, <a href="http://www.w3.org/">World Wide Web Consortium</a>, (<a href= "http://www.lcs.mit.edu/">Massachusetts Institute of Technology</a>, <a href="http://www.inria.fr/">Institut National de Recherche en Informatique et en

Automatique</a>, <a href= "http://www.keio.ac.jp/">Keio University</a>). All Rights Reserved.

http://www.w3.org/Consortium/Legal/

This W3C work (including software, documents, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:

Permission to use, copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including

modifications, that you make:

The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.

Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code:

"Copyright © 1999-2004 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/"

Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)

THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY

PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TR ADEMARKS OR OTHER RIGHTS. COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,

SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.

The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.

This license came from: http://www.megginson.com/SAX/copying.html. However please note future versions of SAX may be covered under http://saxproject.org/?selected=pd

This page is now out of date -- see the new SAX site at http://www.saxproject.org/ for more up-to-date releases and other information. Please change your bookmarks.

SAX2 is Free!

I hereby abandon any property rights to SAX 2.0 (the Simple API for XML), and release all of the SAX 2.0 source code, compiled code, and documentation contained in this distribution into the Public Domain. SAX comes with NO WARRANTY or guarantee of fitness for any purpose.

David Megginson, [email protected]

Apache Axis

=========================================================================

NOTICE file corresponding to section 4(d) of the Apache License, Version 2.0, in this case for the Apache Axis distribution.

=========================================================================

This product includes software developed by The Apache Software Foundation (http://www.apache.org/).

Apache Tomcat

[under Apache License, Version 2.0 above]

Apache Servlet-API

[under Apache License, Version 2.0 above]

FTP

Copyright (c) 1983, 1985, 1989, 1993, 1994

The Regents of the University of California. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. All advertising materials mentioning features or use of this software must display the following acknowledgement:

This product includes software developed by the University of California, Berkeley and its contributors.

4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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

WAYOUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Copyright (c) 1997-1999 The Stanford SRP Authentication Project

All Rights Reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation fi les (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies

of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

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 STANFORD BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER

Copyright 1990 by the Massachusetts Institute of Technology.

All Rights Reserved.

Export of this software from the United States of America may require a specific license from the United States Government. It is the responsibility of any person or organization contemplating export to obtain such a license before exporting.

WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in

supporting documentation, and that the name of M.I.T. not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. M.I.T. makes no representations about the suitability of this software for any purpose. It is provided "as is" without express

or implied warranty.

Getline

Copyright (C) 1991, 1992, 1993 by Chris Thewalt ([email protected])

Permission to use, copy, modify, and distribute this software for any purpose and without fee is hereby granted, provided that the above copyright notices appear in all copies and that both the copyright notice and this permission notice appear in supporting documentation. This software is provided "as is"

without express or implied warranty.

GifEncoder

GifEncoder - write out an image as a GIF

Transparency handling and variable bit size courtesy of Jack Palevich.

Copyright (C)1996,1998 by Jef Poskanzer <[email protected]>. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

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

ImageEncoder

ImageEncoder - abstract class for writing out an image

Copyright (C) 1996 by Jef Poskanzer <[email protected]>. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

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

JavaMail

Sun Microsystems, Inc.

Binary Code License Agreement

READ THE TERMS OF THIS AGREEMENT AND ANY PROVIDED SUPPLEMENTAL LICENSE TERMS (COLLECTIVELY "AGREEMENT") CAREFULLY BEFORE OPENING THE SOFTWARE MEDIA PACKAGE. BY OPENING THE SOFTWARE MEDIA PACKAGE, YOU AGREE

TO THE TERMS OF THIS AGREEMENT. IF YOU ARE ACCESSING THE SOFTWARE ELECTRONICALLY, INDICATE YOUR ACCEPTANCE OF THESE TERMS BY SELECTING THE "ACCEPT" BUTTON AT THE END OF THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL

THESE TERMS, PROMPTLY RETURN THE UNUSED SOFTWARE TO YOUR PLACE OF PURCHASE FOR A REFUND OR, IF THE SOFTWARE IS ACCESSED ELECTRONICALLY, SELECT THE "DECLINE" BUTTON AT THE END OF THIS AGREEMENT.

1. LICENSE TO USE. Sun grants you a non-exclusive and non-transferable license for the internal use only of the accompanying software and documentation and any error corrections provided by Sun (collectively "Software"), by the number of users and the class of computer hardware for which the

corresponding fee has been paid.

2. RESTRICTIONS. Software is confidential and copyrighted. Title to Software and all associated intellectual property rights is retained by Sun and/or its licensors. Except as specifically authorized in any Supplemental License Terms, you may not make copies of Software, other than a single copy of

Software for archival purposes. Unless enforcement is prohibited by applicable law, you may not modify, decompile, or reverse engineer Software. You acknowledge that Software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility. Sun

disclaims any express or implied warranty of fitness for such uses. No right, title or interest in or to any trademark, service mark, logo or trade name of Sun or its licensors is granted under this Agreement.

3. LIMITED WARRANTY. Sun warrants to you that for a period of ninety (90) days from the date of purchase, as evidenced by a copy of the receipt, the media on which Software is furnished (if any) will be free of defects in materials and workmanship under normal use. Except for the foregoing, Software

is provided "AS IS". Your exclusive remedy and Sun's entire liability under this limited warranty will be at Sun's option to replace Software media or refund the fee paid for Software.

Page 4: ENOVIAReportGenerator Admin

4. DISCLAIMER OF WARRANTY. UNLESS SPECIFIED IN THIS AGREEMENT, ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE

OR NON-INFRINGEMENT ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT THESE DISCLAIMERS ARE HELD TO BE LEGALLY INVALID.

5. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES,

HOWEVER CAUSED REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF OR RELATED TO THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. In no event will Sun's liability to you,

whether in contract, tort (including negligence), or otherwise, exceed the amount paid by you for Software under this Agreement. The foregoing limitations will apply even if the above stated warranty fails of its essential purpose.

6. Termination. This Agreement is effective until terminated. You may terminate this Agreement at any time by destroying all copies of Software. This Agreement will terminate immediately without notice from Sun if you fail to comply with any provision of this Agreement. Upon Termination, you

must destroy all copies of Software.

7. Export Regulations. All Software and technical data delivered under this Agreement are subject to US export control laws and may be subject to export or import regulations in other countries. You agree to comply strictly with all such laws and regulations and acknowledge that you have the

responsibility to obtain such licenses to export, re-export, or import as may be required after delivery to you.

8. U.S. Government Restricted Rights. If Software is being acquired by or on behalf of the U.S. Government or by a U.S. Government prime contractor or subcontractor (at any tier), then the Government's rights in Software and accompanying documentation will be only as set forth in this Agreement;

this is in accordance with 48 CFR 227.7201 through 227.7202-4 (for Department of Defense (DOD) acquisitions) and with 48 CFR 2.101 and 12.212 (for non-DOD acquisitions).

9. Governing Law. Any action related to this Agreement will be governed by California law and controlling U.S. federal law. No choice of law rules of any jurisdiction will apply.

10. Severability. If any provision of this Agreement is held to be unenforceable, this Agreement will remain in effect with the provision omitted, unless omission would frustrate the intent of the parties, in which case this Agreement will immediately terminate.

11. Integration. This Agreement is the entire agreement between you and Sun relating to its subject matter. It supersedes all prior or contemporaneous oral or written communications, proposals, representations and warranties and prevails over any conflicting or additional terms of any quote, order,

acknowledgment, or other communication between the parties relating to its subject matter during the term of this Agreement. No modification of this Agreement will be binding, unless in writing and signed by an authorized representative of each party.

JAVAMAILTM

, VERSION 1.3.1

SUPPLEMENTAL LICENSE TERMS

These supplemental license terms ("Supplemental Terms") add to or modify the terms of the Binary Code License Agreement (collectively, the "Agreement"). Capitalized terms not defined in these Supplemental Terms shall have the same meanings ascribed to them in the Agreement. These Supplemental

Terms shall supersede any inconsistent or conflicting terms in the Agreement, or in any license contained within the Software.

1. Software Internal Use and Development License Grant. Subject to the terms and conditions of this Agreement, including, but not limited to Section 3 (Java(TM) Technology Restrictions) of these Supplemental Terms, Sun grants you a non-exclusive, non-transferable, limited license to reproduce internally

and use internally the binary form of the Software, complete and unmodified, for the sole purpose of designing, developing and testing your Java applets and applications ("Programs").

2. License to Distribute Software.* Subject to the terms and conditions of this Agreement, including, but not limited to Section 3 (Java (TM) Technology Restrictions) of these Supplemental Terms, Sun grants you a non-exclusive, non-transferable, limited license to reproduce and distribute the Software in

binary code form only, provided that (i) you distribute the Software complete and unmodified and only bundled as part of, and for the sole purpose of running, your Java applets or applications ("Programs"), (ii) the Programs add significant and primary functionality to the Software, (iii) you do not distribute

additional software intended to replace any component(s) of the Software, (iv) you do not remove or alter any proprietary legends or notices contained in the Software, (v) you only distribute the Software subject to a license agreement that protects Sun's interests consistent with the terms contained in this

Agreement, and (vi) you agree to defend and indemnify Sun and its licensors from and against any damages, costs, liabilities, settlement amounts and/or expenses (including attorneys' fees) incurred in connection with any claim, lawsuit or action by any third party that arises or results from the use or

distribution of any and all Programs and/or Software.

3. Java Technology Restrictions.* You may not modify the Java Platform Interface ("JPI", identified as classes contained within the "java" package or any subpackages of the "java" package), by creating additional classes within the JPI or otherwise causing the addition to or modification of the classes in

the JPI. In the event that you create an additional class and associated API(s) which (i) extends the functionality of the Java platform, and (ii) is exposed to third party software developers for the purpose of developing additional software which invokes such additional API, you must promptly publish

broadly an accurate specification for such API for free use by all developers. You may not create, or authorize your licensees to create additional classes, interfaces, or subpackages that are in any way identified as "java", "javax", "sun" or similar convention as specified by Sun in any naming convention

designation.

4. Trademarks and Logos. You acknowledge and agree as between you and Sun that Sun owns the SUN, SOLARIS, JAVA, JINI, FORTE, STAROFFICE, STARPORTAL and iPLANET trademarks and all SUN, SOLARIS, JAVA, JINI, FORTE, STAROFFICE, STARPORTAL and iPLANET-related

trademarks, service marks, logos and other brand designations ("Sun Marks"), and you agree to comply with the Sun Trademark and Logo Usage Requirements currently located at http://www.sun.com/policies/trademarks. Any use you make of the Sun Marks inures to Sun's benefit.

5. Source Code. Software may contain source code that is provided solely for reference purposes pursuant to the terms of this Agreement. Source code may not be redistributed unless expressly provided for in this Agreement.

6. Termination for Infringement. Either party may terminate this Agreement immediately should any Software become, or in either party's opinion be likely to become, the subject of a claim of infringement of any intellectual property right.

For inquiries please contact: Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054, U.S.A

/(LFI#132726/Form ID#011801)/

Jakarta POI

[under Apache License, Version 2.0 above]

JDK

Sun Microsystems, Inc. Binary Code License Agreement

for the JAVA 2 PLATFORM STANDARD EDITION DEVELOPMENT KIT 5.0

SUN MICROSYSTEMS, INC. ("SUN") IS WILLING TO LICENSE THE SOFTWARE IDENTIFIED BELOW TO YOU ONLY UPON THE CONDITION THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS BINARY CODE LICENSE AGREEMENT AND SUPPLEMENTAL

LICENSE TERMS (COLLECTIVELY "AGREEMENT"). PLEASE READ THE AGREEMENT CAREFULLY. BY DOWNLOADING OR INSTALLING THIS SOFTWARE, YOU ACCEPT THE TERMS OF THE AGREEMENT. INDICATE ACCEPTANCE BY SELECTING THE "ACCEPT"

BUTTON AT THE BOTTOM OF THE AGREEMENT. IF YOU ARE NOT WILLING TO BE BOUND BY ALL THE TERMS, SELECT THE "DECLINE" BUTTON AT THE BOTTOM OF THE AGREEMENT AND THE DOWNLOAD OR INSTALL PROCESS WILL NOT CONTINUE.

1. DEFINITIONS. "Software" means the identified above in binary form, any other machine readable materials (including, but not limited to, libraries, source files, header files, and data files), any updates or error corrections provided by Sun, and any user manuals, programming guides and other

documentation provided to you by Sun under this Agreement. "Programs" mean Java applets and applications intended to run on the Java 2 Platform Standard Edition (J2SE platform) platform on Java-enabled general purpose desktop computers and servers.

2. LICENSE TO USE. Subject to the terms and conditions of this Agreement, including, but not limited to the Java Technology Restrictions of the Supplemental License Terms, Sun grants you a non-exclusive, non-transferable, limited license without license fees to reproduce and use internally Software

complete and unmodified for the sole purpose of running Programs. Additional licenses for developers and/or publishers are granted in the Supplemental License Terms.

3. RESTRICTIONS. Software is confidential and copyrighted. Title to Software and all associated intellectual property rights is retained by Sun and/or its licensors. Unless enforcement is prohibited by applicable law, you may not modify, decompile, or reverse engineer Software. You acknowledge that

Licensed Software is not designed or intended for use in the design, construction, operation or maintenance of any nuclear facility. Sun Microsystems, Inc. disclaims any express or implied warranty of fitness for such uses. No right, title or interest in or to any trademark, service mark, logo or trade name

of Sun or its licensors is granted under this Agreement. Additional restrictions for developers and/or publishers licenses are set forth in the Supplemental License Terms.

4. LIMITED WARRANTY. Sun warrants to you that for a period of ninety (90) days from the date of purchase, as evidenced by a copy of the receipt, the media on which Software is furnished (if any) will be free of defects in materials and workmanship under normal use. Except for the foregoing,

Software is provided "AS IS". Your exclusive remedy and Sun's entire liability under this limited warranty will be at Sun's option to replace Software media or refund the fee paid for Software. Any implied warranties on the Software are limited to 90 days. Some states do not allow limitations on duration

of an implied warranty, so the above may not apply to you. This limited warranty gives you specific legal rights. You may have others, which vary from state to state.

5. DISCLAIMER OF WARRANTY. UNLESS SPECIFIED IN THIS AGREEMENT, ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE

OR NON-INFRINGEMENT ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT THESE DISCLAIMERS ARE HELD TO BE LEGALLY INVALID.

6. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES,

HOWEVER CAUSED REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF OR RELATED TO THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. In no event will Sun's liability to you,

whether in contract, tort (including negligence), or otherwise, exceed the amount paid by you for Software under this Agreement. The foregoing limitations will apply even if the above stated warranty fails of its essential purpose. Some states do not allow the exclusion of incidental or consequential

damages, so some of the terms above may not be applicable to you.

7. TERMINATION. This Agreement is effective until terminated. You may terminate this Agreement at any time by destroying all copies of Software. This Agreement will terminate immediately without notice from Sun if you fail to comply with any provision of this Agreement. Either party may

terminate this Agreement immediately should any Software become, or in either party's opinion be likely to become, the subject of a claim of infringement of any intellectual property right. Upon Termination, you must destroy all copies of Software.

8. EXPORT REGULATIONS. All Software and technical data delivered under this Agreement are subject to US export control laws and may be subject to export or import regulations in other countries. You agree to comply strictly with all such laws and regulations and acknowledge that you have the

responsibility to obtain such licenses to export, re-export, or import as may be required after delivery to you.

9. TRADEMARKS AND LOGOS. You acknowledge and agree as between you and Sun that Sun owns the SUN, SOLARIS, JAVA, JINI, FORTE, and iPLANET trademarks and all SUN, SOLARIS, JAVA, JINI, FORTE, and iPLANET-related trademarks, service marks, logos and other brand designations

("Sun Marks"), and you agree to comply with the Sun Trademark and Logo Usage Requirements currently located at http://www.sun.com/policies/trademarks. Any use you make of the Sun Marks inures to Sun's benefit.

10. U.S. GOVERNMENT RESTRICTED RIGHTS. If Software is being acquired by or on behalf of the U.S. Government or by a U.S. Government prime contractor or subcontractor (at any tier), then the Government's rights in Software and accompanying documentation will be only as set forth in this

Agreement; this is in accordance with 48 CFR 227.7201 through 227.7202-4 (for Department of Defense (DOD) acquisitions) and with 48 CFR 2.101 and 12.212 (for non-DOD acquisitions).

11. GOVERNING LAW. Any action related to this Agreement will be governed by California law and controlling U.S. federal law. No choice of law rules of any jurisdiction will apply.

12. SEVERABILITY. If any provision of this Agreement is held to be unenforceable, this Agreement will remain in effect with the provision omitted, unless omission would frustrate the intent of the parties, in which case this Agreement will immediately terminate.

13. INTEGRATION. This Agreement is the entire agreement between you and Sun relating to its subject matter. It supersedes all prior or contemporaneous oral or written communications, proposals, representations and warranties and prevails over any conflicting or additional terms of any quote, order,

acknowledgment, or other communication between the parties relating to its subject matter during the term of this Agreement. No modification of this Agreement will be binding, unless in writing and signed by an authorized representative of each party.

SUPPLEMENTAL LICENSE TERMS

These Supplemental License Terms add to or modify the terms of the Binary Code License Agreement. Capitalized terms not defined in these Supplemental Terms shall have the same meanings ascribed to them in the Binary Code License Agreement . These Supplemental Terms shall supersede any

inconsistent or conflicting terms in the Binary Code License Agreement, or in any license contained within the Software.

A. Software Internal Use and Development License Grant. Subject to the terms and conditions of this Agreement and restrictions and exceptions set forth in the Software "README" file, including, but not limited to the Java Technology Restrictions of these Supplemental Terms, Sun grants you a

non-exclusive, non-transferable, limited license without fees to reproduce internally and use internally the Software complete and unmodified for the purpose of designing, developing, and testing your Programs.

B. License to Distribute Software. Subject to the terms and conditions of this Agreement and restrictions and exceptions set forth in the Software README file, including, but not limited to the Java Technology Restrictions of these Supplemental Terms, Sun grants you a non-exclusive, non-transferable,

limited license without fees to reproduce and distribute the Software, provided that (i) you distribute the Software complete and unmodified and only bundled as part of, and for the sole purpose of running, your Programs, (ii) the Programs add significant and primary functionality to the Software, (iii) you

do not distribute additional software intended to replace any component(s) of the Software, (iv) you do not remove or alter any proprietary legends or notices contained in the Software, (v) you only distribute the Software subject to a license agreement that protects Sun's interests consistent with the terms

contained in this Agreement, and (vi) you agree to defend and indemnify Sun and its licensors from and against any damages, costs, liabilities, settlement amounts and/or expenses (including attorneys' fees) incurred in connection with any claim, lawsuit or action by any third party that arises or results from

the use or distribution of any and all Programs and/or Software.

C. License to Distribute Redistributables. Subject to the terms and conditions of this Agreement and restrictions and exceptions set forth in the Software README file, including but not limited to the Java Technology Restrictions of these Supplemental Terms, Sun grants you a non-exclusive,

non-transferable, limited license without fees to reproduce and distribute those files specifically identified as redistributable in the Software "README" file ("Redistributables") provided that: (i) you distribute the Redistributables complete and unmodified, and only bundled as part of Programs, (ii) the

Programs add significant and primary functionality to the Redistributables, (iii) you do not distribute additional software intended to supersede any component(s) of the Redistributables (unless otherwise specified in the applicable README file), (iv) you do not remove or alter any proprietary legends or

notices contained in or on the Redistributables, (v) you only distribute the Redistributables pursuant to a license agreement that protects Sun's interests consistent with the terms contained in the Agreement, (vi) you agree to defend and indemnify Sun and its licensors from and against any damages, costs,

liabilities, settlement amounts and/or expenses (including attorneys' fees) incurred in connection with any claim, lawsuit or action by any third party that arises or results from the use or distribution of any and all Programs and/or Software.

D. Java Technology Restrictions. You may not create, modify, or change the behavior of, or authorize your licensees to create, modify, or change the behavior of, classes, interfaces, or subpackages that are in any way identified as "java", "javax", "sun" or similar convention as specified by Sun in any

naming convention designation.

E. Distribution by Publishers. This section pertains to your distribution of the Software with your printed book or magazine (as those terms are commonly used in the industry) relating to Java technology ("Publication"). Subject to and conditioned upon your compliance with the restrictions and obligations

contained in the Agreement, in addition to the license granted in Paragraph 1 above, Sun hereby grants to you a non-exclusive, nontransferable limited right to reproduce complete and unmodified copies of the Software on electronic media (the "Media") for the sole purpose of inclusion and distribution with

your Publication(s), subject to the following terms: (i) You may not distribute the Software on a stand-alone basis; it must be distributed with your Publication(s); (ii) You are responsible for downloading the Software from the applicable Sun web site; (iii) You must refer to the Software as JavaTM 2 Platform

Standard Edition Development Kit 5.0; (iv) The Software must be reproduced in its entirety and without any modification whatsoever (including, without limitation, the Binary Code License and Supplemental License Terms accompanying the Software and proprietary rights notices contained in the

Software); (v) The Media label shall include the following information: Copyright 2004, Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Sun, Sun Microsystems, the Sun logo, Solaris, Java, the Java Coffee Cup logo, J2SE , and all trademarks and logos based on Java are

trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. This information must be placed on the Media label in such a manner as to only apply to the Sun Software; (vi) You must clearly identify the Software as Sun's product on the Media holder or Media label, and

you may not state or imply that Sun is responsible for any third-party software contained on the Media; (vii) You may not include any third party software on the Media which is intended to be a replacement or substitute for the Software; (viii) You shall indemnify Sun for all damages arising from your failure

to comply with the requirements of this Agreement. In addition, you shall defend, at your expense, any and all claims brought against Sun by third parties, and shall pay all damages awarded by a court of competent jurisdiction, or such settlement amount negotiated by you, arising out of or in connection with

your use, reproduction or distribution of the Software and/or the Publication. Your obligation to provide indemnification under this section shall arise provided that Sun: (i) provides you prompt notice of the claim; (ii) gives you sole control of the defense and settlement of the claim; (iii) provides you, at your

expense, with all available information, assistance and authority to defend; and (iv) has not compromised or settled such claim without your prior written consent; and (ix) You shall provide Sun with a written notice for each Publication; such notice shall include the following information: (1) title of

Publication, (2) author(s), (3) date of Publication, and (4) ISBN or ISSN numbers. Such notice shall be sent to Sun Microsystems, Inc., 4150 Network Circle, M/S USCA12-110, Santa Clara, California 95054, U.S.A , Attention: Contracts Administration.

F. Source Code. Software may contain source code that, unless expressly licensed for other purposes, is provided solely for reference purposes pursuant to the terms of this Agreement. Source code may not be redistributed unless expressly provided for in this Agreement.

G. Third Party Code. Additional copyright notices and license terms applicable to portions of the Software are set forth in the THIRDPARTYLICENSEREADME.txt file. In addition to any terms and conditions of any third party opensource/freeware license identified in the

THIRDPARTYLICENSEREADME.txt file, the disclaimer of warranty and limitation of liability provisions in paragraphs 5 and 6 of the Binary Code License Agreement shall apply to all Software in this distribution.

For inquiries please contact: Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054, U.S.A.

(LFI#141623/Form ID#011801)

DO NOT TRANSLATE OR LOCALIZE.

The following software may be included in this product: CS CodeViewer v1.0;

Use of any of this software is governed by the terms of the license below:

Page 5: ENOVIAReportGenerator Admin

Copyright 1999 by CoolServlets.com.

Any errors or suggested improvements to this class can be reported as instructed on CoolServlets.com. We hope you enjoy this program... your comments will encourage further development!

This software is distributed under the terms of the BSD License. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Neither name of CoolServlets.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY COOLSERVLETS.COM 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 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."

The following software may be included in this product: Crimson v1.1.1 ; Use of any of this software is governed by the terms of the license below:

The Apache Software License, Version 1.1

Copyright (c) 1999-2000 The Apache Software Foundation. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and

wherever such third-party acknowledgments normally appear.

4. The names "Crimson" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact [email protected].

5. Products derived from this software may not be called "Apache", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation.

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 APACHE SOFTWARE FOUNDATION OR ITS 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.

====================================================================

This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation and was originally based on software copyright (c) 1999, International Business Machines, Inc., http://www.ibm.com. For more information on the Apache Software Foundation, please

see <http://www.apache.org/>.

The following software may be included in this product: Xalan J2;

Use of any of this software is governed by the terms of the license below:

Apache License

Version 2.0, January 2004

http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by

contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,including but not limited to software source code, documentation source, and configuration files.

"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative

Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity

authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control

systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense,

and distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise

transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against

any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation

is filed.

4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one

of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The

contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot

be construed as modifying the License.

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work

otherwise complies with the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein

shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without

limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of

permissions under this License.

8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct,

indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses),

even if such Contributor has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such

obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting

any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend

that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations

under the License.

The following software may be included in this product: NSIS 1.0j; Use of any of this software is governed by the terms of the license below:

Copyright (C) 1999-2000 Nullsoft, Inc.

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. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute

it freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.

2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

3. This notice may not be removed or altered from any source distribution.Justin Frankel [email protected]"

Some Portions licensed from IBM are available at: http://oss.software.ibm.com/icu4j/

Portions Copyright Eastman Kodak Company 1992

Lucida is a registered trademark or trademark of Bigelow & Holmes in the U.S. and other countries.

Portions licensed from Taligent, Inc.

The following software may be included in this product:IAIK PKCS Wrapper; Use of any of this software is governed by the terms of the license below:

Copyright (c) 2002 Graz University of Technology. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment:

Page 6: ENOVIAReportGenerator Admin

"This product includes software developed by IAIK of Graz University of Technology."

Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear.

4. The names "Graz University of Technology" and "IAIK of Graz University of Technology" must not be used to endorse or promote products derived from this software without prior written permission.

5. Products derived from this software may not be called "IAIK PKCS Wrapper", nor may "IAIK" appear in their name, without prior written permission of Graz University of Technology.

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

The following software may be included in this product: Document Object Model (DOM) v. Level 3; Use of any of this software is governed by the terms of the license below:

W3Cýý SOFTWARE NOTICE AND LICENSE

http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231

This work (and included software, documentation such as READMEs, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following

terms and conditions.

Permission to copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications:

1.The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.

2.Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software Short Notice should be included (hypertext is preferred, text is permitted) within the body of any redistributed or derivative code.

3.Notice of any changes or modifications to the files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)

THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY

PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TR ADEMARKS OR OTHER RIGHTS.

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.

The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.

This formulation of W3C's notice and license became active on December 31 2002.

This version removes the copyright ownership notice such that this license can be used with materials other than those owned by the W3C, reflects that ERCIM is now a host of the W3C, includes references to this specific dated version of the license, and removes the ambiguous grant of "use". Otherwise,

this version is the same as the previous version and is written so as to preserve the Free Software Foundation's assessment of GPL compatibility and OSI's certification under the Open Source Definition. Please see our Copyright FAQ for common questions about using materials from our site, including

specific terms and conditions for packages like libwww, Amaya, and Jigsaw. Other questions about this notice can be directed to [email protected].

The following software may be included in this product: Xalan, Xerces; Use of any of this software is governed by the terms of the license below:

The Apache Software License, Version 1.1

Copyright (c) 1999-2003 The Apache Software Foundation. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and

wherever such third-party acknowledgments normally appear.

4. The names "Xerces" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact [email protected].

5. Products derived from this software may not be called "Apache", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation.

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 APACHE SOFTWARE FOUNDATION OR ITS 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.

====================================================================

This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation and was originally based on software copyright (c) 1999, International Business Machines, Inc., http://www.ibm.com. For more information on the Apache Software Foundation,

please see <http://www.apache.org/>.

The following software may be included in this product: W3C XML Conformance Test Suites v. 20020606; Use of any of this software is governed by the terms of the license below:

W3Cýý SOFTWARE NOTICE AND LICENSE

Copyright ýý 1994-2002 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 W3C work (including software, documents, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:

Permission to use, copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including

modifications, that you make:

1. The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.

2. Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright ýý [$date-of-software] 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/"

3. Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)

THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY

PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TR ADEMARKS OR OTHER RIGHTS.

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.

The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.

This formulation of W3C's notice and license became active on August 14 1998 so as to improve compatibility with GPL. This version ensures that W3C software licensing terms are no more restrictive than GPL and consequently W3C software may be distributed in GPL packages. See the older formulation

for the policy prior to this date. Please see our Copyright FAQ for common questions about using materials from our site, including specific terms and conditions for packages like libwww, Amaya, and Jigsaw. Other questions about this notice can be directed to [email protected].

The following software may be included in this product: W3C XML Schema Test Collection v. 1.16.2; Use of any of this software is governed by the terms of the license below:

W3Cýýýý DOCUMENT NOTICE AND LICENSE

Copyright ýýýý 1994-2002 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/

Public documents on the W3C site are provided by the copyright holders under the following license. The software or Document Type Definitions (DTDs) associated with W3C specifications are governed by the Software Notice. By using and/or copying this document, or the W3C document from which

this statement is linked, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:

Permission to use, copy, and distribute the contents of this document, or the W3C document from which this statement is linked, in any medium for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the document, or portions thereof, that you

use:

1. A link or URL to the original W3C document.

2. The pre-existing copyright notice of the original author, or if it doesn't exist, a notice of the form: "Copyright ýýýý [$date-of-document] 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/" (Hypertext is preferred, but a textual representation is permitted.)

3. If it exists, the STATUS of the W3C document.

When space permits, inclusion of the full text of this NOTICE should be provided. We request that authorship attribution be provided in any software, documents, or other items or products that you create pursuant to the implementation of the contents of this document, or any portion thereof.

No right to create modifications or derivatives of W3C documents is granted pursuant to this license. However, if additional requirements (documented in the Copyright FAQ) are satisfied, the right to create modifications or derivatives is sometimes granted by the W3C to individuals complying with those

requirements.

THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,

NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER

RIGHTS.

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.

The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to this document or its contents without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders.

----------------------------------------------------------------------------

This formulation of W3C's notice and license became active on April 05 1999 so as to account for the treatment of DTDs, schema's and bindings. See the older formulation for the policy prior to this date. Please see our Copyright FAQ for common questions about using materials from our site, including

specific terms and conditions for packages like libwww, Amaya, and Jigsaw. Other questions about this notice can be directed to [email protected]. webmaster (last updated by reagle on 1999/04/99.)

The following software may be included in this product: Mesa 3-D graphics library v. 5; Use of any of this software is governed by the terms of the license below:

core Mesa code include/GL/gl.h Brian Paul Mesa

GLX driver include/GL/glx.h Brian Paul Mesa

Ext registry include/GL/glext.h SGI SGI Free B

include/GL/glxext.h

Mesa license:

The Mesa distribution consists of several components. Different copyrights and licenses apply to different components. For example, GLUT is copyrighted by Mark Kilgard, some demo programs are copyrighted by SGI, some of the Mesa device drivers are copyrighted by their authors. See below for a list

of Mesa's components and the copyright/license for each.

The core Mesa library is licensed according to the terms of the XFree86 copyright (an MIT-style license). This allows integration with the XFree86/DRI project. Unless otherwise stated, the Mesa source code and documentation is licensed as follows:

Copyright (C) 1999-2003 Brian Paul All Rights Reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies

of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

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 BRIAN PAUL 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.

SGI Free Software Licence B:

, or is under common control with Recipient. For purposes of this definition, "control" of an entity means (a) the power, direct or indirect, to direct or manage such entity, or (b) ownership of fifty percent (50%) or more of the outstanding shares or beneficial ownership of such entity.

1.12."Recipient Patents" means patent claims Licensable by a Recipient that are infringed by the use or sale of Original Code or any Modifications provided by SGI, or any combination thereof.

Page 7: ENOVIAReportGenerator Admin

1.13."SGI" means Silicon Graphics, Inc.

1.14."SGI Patents" means patent claims Licensable by SGI other than the Licensed Patents.

2.License Grant and Restrictions.

2.1.SGI License Grant. Subject to the terms of this License and any third party intellectual property claims, for the duration of intellectual property protections inherent in the Original Code, SGI hereby grants Recipient a worldwide, royalty-free, non-exclusive license, to do the following: (i) under copyrights

Licensable by SGI, to reproduce, distribute, create derivative

The following software may be included in this product: Byte Code Engineering Library (BCEL) v. 5; Use of any of this software is governed by the terms of the license below:

Apache Software License

The Apache Software License, Version 1.1

Copyright (c) 2001 The Apache Software Foundation. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and

wherever such third-party acknowledgments normally appear.

4. The names "Apache" and "Apache Software Foundation" and "Apache BCEL" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact [email protected].

5. Products derived from this software may not be called "Apache", "Apache BCEL", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation.

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 APACHE SOFTWARE FOUNDATION OR ITS 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.

This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation. For more information on the Apache Software Foundation, please see <http://www.apache.org/>.

The following software may be included in this product: Regexp, Regular Expression Package v. 1.2; Use of any of this software is governed by the terms of the license below:

The Apache Software License, Version 1.1

Copyright (c) 2001 The Apache Software Foundation. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the

distribution.

3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment:

"This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear.

4. The names "Apache" and "Apache Software Foundation" and "Apache Turbine" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact [email protected].

5. Products derived from this software may not be called "Apache", "Apache Turbine", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation.

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 APACHE SOFTWARE FOUNDATION OR ITS 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.

This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation. For more information on the Apache Software Foundation, please see http://www.apache.org.

The following software may be included in this product: JLex: A Lexical Analyzer Generator for Java v. 1.2.5; Use of any of this software is governed by the terms of the license below:

JLEX COPYRIGHT NOTICE, LICENSE AND DISCLAIMER.

Copyright 1996-2003 by Elliot Joel Berk and C. Scott Ananian

Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both the copyright notice and this permission notice and warranty disclaimer appear in supporting

documentation, and that the name of the authors or their employers not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.

The authors and their employers disclaim all warranties with regard to this software, including all implied warranties of merchantability and fitness. In no event shall the authors or their employers 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.

Java is a trademark of Sun Microsystems, Inc. References to the Java programming language in relation to JLex are not meant to imply that Sun endorses this product.

The following software may be included in this product: SAX v. 2.0.1; Use of any of this software is governed by the terms of the license below:

Copyright Status

SAX is free!

In fact, it's not possible to own a license to SAX, since it's been placed in the public domain.

No Warranty

Because SAX is released to the public domain, there is no warranty for the design or for the software implementation, to the extent permitted by applicable law. Except when otherwise stated in writing the copyright holders and/or other parties provide SAX "as is" without warranty of any kind, either

expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of SAX is with you.

Should SAX prove defective, you assume the cost of all necessary servicing, repair or correction.

In no event unless required by applicable law or agreed to in writing will any copyright holder, or any other party who may modify and/or redistribute SAX, be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use SAX

(including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the SAX to operate with any other programs), even if such holder or other party has been advised of the possibility of such damages.

Copyright Disclaimers

This page includes statements to that effect by David Megginson, who would have been able to claim copyright for the original work.

SAX 1.0

Version 1.0 of the Simple API for XML (SAX), created collectively by the membership of the XML-DEV mailing list, is hereby released into the public domain.

No one owns SAX: you may use it freely in both commercial and non-commercial applications, bundle it with your software distribution, include it on a CD-ROM, list the source code in a book, mirror the documentation at your own web site, or use it in any other way you see fit.

David Megginson, [email protected] 1998-05-11

SAX 2.0

I hereby abandon any property rights to SAX 2.0 (the Simple API for XML), and release all of the SAX 2.0 source code, compiled code, and documentation contained in this distribution into the Public Domain. SAX comes with NO WARRANTY or guarantee of fitness for any purpose.

David Megginson, [email protected]

2000-05-05

The following software may be included in this product: Cryptix;

Use of any of this software is governed by the terms of the license below:

Cryptix General License

Copyright © 1995-2003 The Cryptix Foundation Limited. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1.Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer.

2.Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

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.

EXERPT FROM JavaTM 2 Platform Standard Edition Development Kit 5.0 README

You can freely redistribute the J2SE Runtime Environment with your application, according to the terms of the Runtime Environment's license. Once you have developed your application using the JDK, you can ship i t with the Runtime Environment so your end-users will have a Java platform on which to

run your software.

Redistribution

--------------------------------------------------------------------------------

NOTE - The license for this software does not allow the redistribution of beta and other pre-release versions.

--------------------------------------------------------------------------------

Subject to the terms and conditions of the Software License Agreement and the obligations, restrictions, and exceptions set forth below, You may reproduce and distribute the Software (and also portions of Software identified below as Redistributable), provided that:

you distribute the Software complete and unmodified and only bundled as part of Your applets and applications ("Programs"),

your Programs add significant and primary functionality to the Software,

your Programs are only intended to run on Java-enabled general purpose desktop computers and servers,

you distribute Software for the sole purpose of running your Programs,

you do not distribute additional software intended to replace any component(s) of the Software,

you do not remove or alter any proprietary legends or notices contained in or on the Software,

you only distribute the Software subject to a license agreement that protects Sun's interests consistent with the terms contained in this Agreement, and

you agree to defend and indemnify Sun and its licensors from and against any damages, costs, liabilities, settlement amounts and/or expenses (including attorneys' fees) incurred in connection with any claim, lawsuit or action by any third party that arises or results from the use or distribution of any and all

Programs and/or Software.

The term "vendors" used here refers to licensees, developers, and independent software vendors (ISVs) who license and distribute the J2SE Development Kit with their programs.

Vendors must follow the terms of the J2SE Development Kit Binary Code License agreement.

Required vs. Optional Files

Page 8: ENOVIAReportGenerator Admin

The files that make up the J2SE Development Kit are divided into two categories: required and optional. Optional files may be excluded from redistributions of the JDK at the vendor's discretion.

The following section contains a list of the files and directories that may optionally be omitted from redistributions of the JDK. All files not in these lists of optional files must be included in redistributions of the JDK.

Optional Files and Directories

The following files may be optionally excluded from redistributions. These files are located in the jdk1.5.0_<version> directory, where <version> is the update version number. Solaris and Linux filenames and separators are shown. Windows executables have the ".exe" suffix. Corresponding files with _g

in name can also be excluded.

jre/lib/charsets.jar

Character conversion classes

jre/lib/ext/

sunjce_provider.jar - the SunJCE provider for Java Cryptography APIs

localedata.jar - contains many of the resources needed for non US English locales

ldapsec.jar - contains security features supported by the LDAP service provider

dnsns.jar - for the InetAddress wrapper of JNDI DNS provider

bin/rmid and jre/bin/rmid

Java RMI Activation System Daemon

bin/rmiregistry and jre/bin/rmiregistry

Java Remote Object Registry

bin/tnameserv and jre/bin/tnameserv

Java IDL Name Server

bin/keytool and jre/bin/keytool

Key and Certificate Management Tool

bin/kinit and jre/bin/kinit

Used to obtain and cache Kerberos ticket-granting tickets

bin/klist and jre/bin/klist

Kerberos display entries in credentials cache and keytab

bin/ktab and jre/bin/ktab

Kerberos key table manager

bin/policytool and jre/bin/policytool

Policy File Creation and Management Tool

bin/orbd and jre/bin/orbd

Object Request Broker Daemon

bin/servertool and jre/bin/servertool

Java IDL Server Tool

bin/javaws, jre/bin/javaws, jre/lib/javaws/ and jre/lib/javaws.jar

Java Web Start

src.zip

Archive of source files

Redistributable JDK Files

The limited set of files from the JDK listed below may be included in vendor redistributions of the J2SE Runtime Environment. They cannot be redistributed separately, and must accompany a JRE distribution. All paths are relative to the top-level directory of the JDK.

jre/lib/cmm/PYCC.pf

Color profile. This file is required only if one wishes to convert between the PYCC color space and another color space.

All .ttf font files in the jre/lib/fonts directory.

Note that the LucidaSansRegular.ttf font is already contained in the J2SE Runtime Environment, so there is no need to bring that file over from the JDK.

jre/lib/audio/soundbank.gm

This MIDI soundbank is present in the JDK, but it has been removed from the J2SE Runtime Environment in order to reduce the size of the Runtime Environment's download bundle. However, a soundbank file is necessary for MIDI playback, and therefore the JDK's soundbank.gm file may be included in

redistributions of the Runtime Environment at the vendor's discretion. Several versions of enhanced MIDI soundbanks are available from the Java Sound web site: http://java.sun.com/products/java-media/sound/. These alternative soundbanks may be included in redistributions of the J2SE Runtime

Environment.

The javac bytecode compiler, consisting of the following files:

bin/javac [Solaris(TM) Operating System and Linux]

bin/sparcv9/javac [Solaris Operating System (SPARC(R) Platform Edition)]

bin/amd64/javac [Solaris Operating System (AMD)]

bin/javac.exe [Microsoft Windows]

lib/tools.jar [All platforms]

The Annotation Processing Tool, consisting of the following files:

bin/apt [Solaris(TM) Operating System and Linux]

bin/sparcv9/apt [Solaris Operating System (SPARC(R) Platform Edition)]

bin/amd64/apt [Solaris Operating System (AMD)]

bin/apt.exe [Microsoft Windows]

jre\bin\server\

On Microsoft Windows platforms, the JDK includes both the Java HotSpot Server VM and Java HotSpot Client VM. However, the J2SE Runtime Environment for Microsoft Windows platforms includes only the Java HotSpot Client VM. Those wishing to use the Java HotSpot Server VM with the J2SE

Runtime Environment may copy the JDK's jre\bin\server folder to a bin\server directory in the J2SE Runtime Environment. Software vendors may redistribute the Java HotSpot Server VM with their redistributions of the J2SE Runtime Environment.

Unlimited Strength Java Cryptography Extension

Due to import control restrictions for some countries, the Java Cryptography Extension (JCE) policy files shipped with the J2SE Development Kit and the J2SE Runtime Environment allow strong but limited cryptography to be used. These files are located at

<java-home>/lib/security/local_policy.jar

<java-home>/lib/security/US_export_policy.jar

where <java-home> is the jre directory of the JDK or the top-level directory of the J2SE Runtime Environment.

An unlimited strength version of these files indicating no restrictions on cryptographic strengths is available on the JDK web site for those living in eligible countries. Those living in eligible countries may download the unlimited strength version and replace the strong cryptography jar files with the unlimited

strength files.

jconsole

jconsole.jar

jconsole may be redistributed outside the JDK but only with Sun's JRE.

Endorsed Standards Override Mechanism

An endorsed standard is a Java API defined through a standards process other than the Java Community ProcessSM (JCPSM). Because endorsed standards are defined outside the JCP, it is anticipated that such standards will be revised between releases of the Java 2 Platform. In order to take advantage of

new revisions to endorsed standards, developers and software vendors may use the Endorsed Standards Override Mechanism to provide newer versions of an endorsed standard than those included in the Java 2 Platform as released by Sun Microsystems.

For more information on the Endorsed Standards Override Mechanism, including the list of platform packages that it may be used to override, see

http://java.sun.com/j2se/1.5.0/docs/guide/standards/

Classes in the packages listed on that web page may be replaced only by classes implementing a more recent version of the API as defined by the appropriate standards body.

In addition to the packages listed in the document at the above URL, which are part of the Java 2 Platform Standard Edition (J2SETM) specification, redistributors of Sun's J2SE Reference Implementation are allowed to override classes whose sole purpose is to implement the functionality provided by public

APIs defined in these Endorsed Standards packages. Redistributors may also override classes in the org.w3c.dom.* packages, or other classes whose sole purpose is to implement these APIs.

The cacerts Certificates File

Root CA certificates may be added to or removed from the J2SE certificate file located at <java-home>/lib/security/cacerts. For more information, see The cacerts Certificates File section in the keytool documentation.

Web Pages

For additional information, refer to these Sun Microsystems pages on the World Wide Web:

http://java.sun.com/

The Java Software web site, with the latest information on Java technology, product information, news, and features.

http://java.sun.com/docs

Java Platform Documentation provides access to white papers, the Java Tutorial and other documents.

http://developer.java.sun.com

Developer Services web site. (Free registration required.) Additional technical information, news, and features; user forums; support information, and much more.

http://java.sun.com/products/

Java Technology Products & API

--------------------------------------------------------------------------------

The J2SE Development Kit is a product of Sun MicrosystemsTM, Inc.

Copyright 2005 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054, U.S.A.

All rights reserved.

Page 9: ENOVIAReportGenerator Admin

JDOM

Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution.

3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact <request_AT_jdom_DOT_org>.

4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management <request_AT_jdom_DOT_org>.

In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following:

"This product includes software developed by the JDOM Project (http://www.jdom.org/)."

Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos.

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 CON SEQUENTIAL 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.

This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter <jhunter_AT_jdom_DOT_org> and Brett McLaughlin <brett_AT_jdom_DOT_org>. For more information on the JDOM Project, please see

<http://www.jdom.org/>.

Krypto

Copyright (c) 1997 Stanford University

Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notices and this permission notice appear in all copies of the software and related documentation.

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 STANFORD BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAG ES 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) 1995-1997 Eric Young ([email protected])

All rights reserved.

This package is an SSL implementation written by Eric Young ([email protected]). The implementation was written so as to conform with Netscapes SSL.

This library is free for commercial and non-commercial use as long as the following conditions are aheared to. The following conditions apply to all code found in this distribution, be it the RC4, RSA, lhash, DES, etc., code; not just the SSL code. The SSL documentation included with this distribution

is covered by the same copyright terms except that the holder is Tim Hudson ([email protected]).

Copyright remains Eric Young's, and as such any Copyright notices in the code are not to be removed. If this package is used in a product, Eric Young should be given attribution as the author of the parts of the library used. This can be in the form of a textual message at program startup or in documentation

(online or textual) provided with the package.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. All advertising materials mentioning features or use of this software must display the following acknowledgement:

"This product includes cryptographic software written by Eric Young ([email protected])"

The word 'cryptographic' can be left out if the routines from the library being used are not cryptographic related .

4. If you include any Windows specific code (or a derivative thereof) from the apps directory (application code) you must include an acknowledgement:

"This product includes software written by Tim Hudson ([email protected])"

THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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.

The licence and distribution terms for any publically available version or derivative of this code cannot be changed. i.e. this code cannot simply be copied and put under another distribution licence [including the GNU Public Licence.]

OpenLDAP

Public License for 2.3.34

The OpenLDAP Public License

Version 2.8, 17 August 2003

Redistribution and use of this software and associated documentation ("Software"), with or without modification, are permitted provided that the following conditions are met:

1. Redistributions in source form must retain copyright statements and notices,

2. Redistributions in binary form must reproduce applicable copyright statements and notices, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution, and

3. Redistributions must contain a verbatim copy of this document.

The OpenLDAP Foundation may revise this license from time to time. Each revision is distinguished by a version number. You may use this Software under terms of this license revision or under the terms of any subsequent revision of the license.

THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE I MPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A

PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENLDAP FOUNDATION, ITS CONTRIBUTORS, OR THE AUTHOR(S) OR OWNER(S) OF THE SOFTWARE 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.

The names of the authors and copyright holders must not be used in advertising or otherwise to promote the sale, use or other dealing in this Software without specific, written prior permission. Title to copyright in this Software shall at all times remain with copyright holders.

OpenLDAP is a registered trademark of the OpenLDAP Foundation.

Copyright 1999-2003 The OpenLDAP Foundation, Redwood City, California, USA. All Rights Reserved. Permission to copy and distribute verbatim copies of this document is granted.

OpenSSL

License

The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit. See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please

contact [email protected].

OpenSSL License

Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. All advertising materials mentioning features or use of this software must display the following acknowledgment:

"This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)"

4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact [email protected].

5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project.

6. Redistributions of any form whatsoever must retain the following acknowledgment:

"This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)"

THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``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 OpenSSL PROJECT OR ITS 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.

This product includes cryptographic software written by Eric Young ([email protected]). This product includes software written by Tim Hudson ([email protected]).

Original SSLeay License

Copyright (C) 1995-1998 Eric Young ([email protected])

All rights reserved.

This package is an SSL implementation written by Eric Young ([email protected]). The implementation was written so as to conform with Netscapes SSL.

This library is free for commercial and non-commercial use as long as the following conditions are aheared to. The following conditions apply to all code found in this distribution, be it the RC4, RSA, lhash, DES, etc., code; not just the SSL code. The SSL documentation included with this distribution

is covered by the same copyright terms except that the holder is Tim Hudson ([email protected]).

Copyright remains Eric Young's, and as such any Copyright notices in the code are not to be removed. If this package is used in a product, Eric Young should be given attribution as the author of the parts of the library used. This can be in the form of a textual message at program startup or in documentation

(online or textual) provided with the package.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. All advertising materials mentioning features or use of this software must display the following acknowledgement:

"This product includes cryptographic software written by Eric Young ([email protected])"

The word 'cryptographic' can be left out if the rouines from the library being used are not cryptographic related :-).

4. If you include any Windows specific code (or a derivative thereof) from the apps directory (application code) you must include an acknowledgement: "This product includes software written by Tim Hudson ([email protected])"

Page 10: ENOVIAReportGenerator Admin

THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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.

The license and distribution terms for any publically available version or derivative of this code cannot be changed. i.e. this code cannot simply be copied and put under another distribution license [including the GNU Public License.]

Oracle

*****************************************************************

Oracle Instant client

End user license agreement ("Agreement")

*****************************************************************

MatrixOne Inc., ("MatrixOne") as licensor, has been given the right by Oracle Corporation (Oracle") to distribute the Oracle Instant Client software ("Program(s)") to you, an end user. Each end user hereby agrees: (1) to restrict its use of the Programs to its internal business operations; (2) that it is prohibited

from (a) assigning, giving, or transferring the Programs or an interest in them to another individual or entity (and if it grants a security interest in the Programs, the secured party has no right to use or transfer the Programs); (b) making the Programs available in any manner to any third party for use in the

third party's business operations (unless such access is expressly permitted for the specific program license or materials from the services acquired); and (3) that title to the Programs does not pass to the end user or any other party; (4) that reverse engineering is prohibited (unless required by law for

interoperability), (5) disassembly or decompilation of the Programs are prohibited; (6) duplication of the Programs is prohibited except for a sufficient number of copies of each Program for the end user's licensed use and one copy of each Program media; (7) that, to the extent permitted by applicable law,

liability of Oracle and MatrixOne for any damages, whether direct, indirect, incidental, or consequential, arising from the use of the Programs is disclaimed; (8) at the termination of the Agreement, to discontinue use and destroy or return to MatrixOne all copies of the Programs and documentation; (9) not

to publish any results of benchmark tests run on the Programs; (10) to comply fully with all relevant export laws and regulations of the United States and other applicable export and import laws to assure that neither the Programs, nor any direct product thereof, are exported, directly or indirectly, in

violation of applicable laws and are not used for any purpose prohibited by these laws including, without limitation, nuclear, chemical or biological weapons proliferation; (11) that Oracle is not required to perform any obligations or incur any liability not previously agreed to; (12) to permit MatrixOne

to audit its use of the Programs or to assign such audit right to Oracle; (13) that Oracle is a third party beneficiary of this end user license agreement; (14) that the application of the Uniform Computer Information Transactions Act is excluded.

Disclaimer of Warranty and Exclusive Remedies

THE PROGRAMS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MATRIXONE AND ORACLE FURTHER DISCLAIM ALL WARRANTIES, EXPRESS AND IMPLIED, INCLUDING WITHOUT LIMITATION, ANY IMPLIED WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.

IN NO EVENT SHALL MATRIXONE OR ORACLE BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, OR DAMAGES FOR LOSS OF PROFITS, REVENUE, DATA OR DATA USE, INCURRED BY YOU OR ANY THIRD PARTY,

WHETHER IN AN ACTION IN CONTRACT OR TORT, EVEN IF MATRIXONE OR ORACLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. MATRIXONE'S AND ORACLE'S ENTIRE LIABILITY FOR DAMAGES HEREUNDER SHALL IN NO EVENT EXCEED

ONE THOUSAND DOLLARS (U.S. $1,000).

No Technical Support

Oracle and MatrixOne technical support organizations will not provide technical support, phone support, or updates to end users for the Programs licensed under this agreement.

Restricted Rights

For United States government end users, the Programs, including documentation, shall be considered commercial computer software and the following applies:

NOTICE OF RESTRICTED RIGHTS

"Programs delivered subject to the DOD FAR Supplement are 'commercial computer software' and use, duplication, and disclosure of the programs, including documentation, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement. Otherwise, programs delivered

subject to the Federal Acquisition Regulations are 'restricted computer software' and use, duplication, and disclosure of the programs, including documentation, shall be subject to the restrictions in FAR 52.227-19, Commercial Computer Software-Restricted Rights (June 1987). Oracle Corporation, 500

Oracle Parkway, Redwood City, CA 94065."

End of Agreement

The end user may terminate this Agreement by destroying all copies of the Programs. MatrixOne and Oracle each have the right to terminate the end user's right to use the Programs if the end user fails to comply with any of the terms of this Agreement, in which case the end user shall destroy all copies

of the Programs.

Relationship Between the Parties

The relationship between the end user and MatrixOne and Oracle is that the end user is licensee, MatrixOne is distributor/licensor and Oracle is licensor. No party will represent that it has any authority to assume or create any obligation, express or implied, on behalf of any other party, nor to represent the

other party as agent, employee, franchisee, or in any other capacity. Nothing in this Agreement shall be construed to limit any party's right to independently develop or distribute software that is functionally similar to the other party's products, so long as proprietary information of the other party is not

included in such software.

Open Source

"Open Source" software - software available without charge for use, modification and distribution - is often licensed under terms that require the user to make the user's modifications to the Open Source software or any software that the user 'combines' with the Open Source software freely available in source

code form. If you as end user use Open Source software in conjunction with the Programs, you must ensure that your use does not: (i) create, or purport to create, obligations of MatrixOne or Oracle with respect to the Oracle Programs; or (ii) grant, or purport to grant, to any third party any rights to or

immunities under intellectual property or proprietary rights in the Oracle Programs. For example, you may not develop a software program using an Oracle Program and an Open Source program where such use results in a program file(s) that contains code from both the Oracle Program and the Open

Source program (including without limitation libraries) if the Open Source program is licensed under a license that requires any "modifications" be made freely available. You also may not combine the Oracle Program with programs licensed under the GNU General Public License ("GPL") in any manner

that could cause, or could be interpreted or asserted to cause, the Oracle Program or any modifications thereto to become subject to the terms of the GPL.

SSLUtils

The Apache Software License, Version 1.1

Copyright (c) 2000 The Apache Software Foundation. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and

wherever such third-party acknowledgments normally appear.

4. The names "SOAP" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact [email protected].

5. Products derived from this software may not be called "Apache", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation.

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 APACHE SOFTWARE FOUNDATION OR ITS 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 OFUSE, 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

OUTOF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation and was originally based on software copyright (c) 2000, International Business Machines, Inc., http://www.apache.org. For more information on the Apache Software Foundation,

please see <http://www.apache.org/>.

Sun RPC

Sun RPC is a product of Sun Microsystems, Inc. and is provided for unrestricted use provided that this legend is included on all tape media and as a part of the software program in whole or part. Users may copy or modify Sun RPC without charge, but are not authorized to license or distribute it to anyone

else except as part of a product or program developed by the user.

SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.

Sun RPC is provided with no support and without any obligation on the part of Sun Microsystems, Inc. to assist in its use, correction, modification or enhancement.

SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC OR ANY PART THEREOF.

In no event will Sun Microsystems, Inc. be liable for any lost revenue or profits or other special, indirect and consequential damages, even if Sun has been advised of the possibility of such damages.

Sun Microsystems, Inc.

2550 Garcia Avenue

Mountain View, California 94043

Tcl

This software is copyrighted by the Regents of the University of California, Sun Microsystems, Inc., Scriptics Corporation, and other parties. The following terms apply to all files associated with the software unless explicitly disclaimed in individual files.

The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee

is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply.

IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES

THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS

PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

GOVERNMENT USE: If you are acquiring this software on behalf of the U.S. government, the Government shall have only "Restricted Rights" in the software and related documentation as defined in the Federal Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you are acquiring the software

on behalf of the Department of Defense, the software shall be classified as "Commercial Computer Software" and the Government shall have only "Restricted Rights" as defined in Clause 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the authors grant the U.S. Government and others

acting in its behalf permission to use and distribute the software in accordance with the terms specified in this license.

Xalan

[under Apache License, Version 2.0 above]

Xerces

[under Apache License, Version 2.0 above]

Xerces2

[under Apache License, Version 2.0 above]

Page 11: ENOVIAReportGenerator Admin

Table of Contents

1 Report Generator ............................................................................................... 14

1.1 Definitions .................................................................................................................................................... 15

1.2 Overview ...................................................................................................................................................... 16 1.2.1 Pre Processing ............................................................................................................................................. 16 1.2.2 XML-FO Processor ....................................................................................................................................... 16

2 Quick Start ......................................................................................................... 17

3 Usage Scenarios ................................................................................................. 18

3.1 Global Report ................................................................................................................................................ 18

3.2 Context Report ............................................................................................................................................. 18

3.3 Triggered by Event ........................................................................................................................................ 20 3.3.1 Integrating With Trigger Manager .............................................................................................................. 20 3.3.2 Custom Invocation of the Report Generator (MQL) ................................................................................... 21

3.4 Define a Custom URL to Create a Specific Report .......................................................................................... 22

3.5 Create Multiple Reports ................................................................................................................................ 22

3.6 Command Line Invocation ............................................................................................................................ 22

4 Configuring the Report Generator ...................................................................... 24

4.1 Global Properties .......................................................................................................................................... 24

4.2 Creating Report Definitions........................................................................................................................... 25 4.2.1 Creating the Instances ................................................................................................................................ 25 4.2.2 Activating/Inactivating Instances ................................................................................................................ 25 4.2.3 Common Attributes .................................................................................................................................... 26 4.2.4 Conversion Properties ................................................................................................................................. 27

4.3 Expansion Report Definition ......................................................................................................................... 28

4.4 Inquiry Report Definition .............................................................................................................................. 29 4.4.1 Passing Custom Parameters to the Inquiry ................................................................................................. 29 4.4.2 Inquiry Report Example .............................................................................................................................. 30

4.5 Advanced Report Definition .......................................................................................................................... 31 4.5.1 Table Data Section ...................................................................................................................................... 32 4.5.2 XML Specification ........................................................................................................................................ 32 4.5.3 Data Groups ................................................................................................................................................ 34 4.5.4 Data Set ....................................................................................................................................................... 35 4.5.5 Data Producers............................................................................................................................................ 35 4.5.6 Combining Data Producers ......................................................................................................................... 37 4.5.7 MQL Output Section ................................................................................................................................... 39

4.6 Custom Report Definition ............................................................................................................................. 40

4.7 JPO Report Definition (Deprecated) .............................................................................................................. 40 4.7.1 Custom JPO Example................................................................................................................................... 40

4.8 Post Processing ............................................................................................................................................. 41

Page 12: ENOVIAReportGenerator Admin

4.8.1 Disabling a Post Processor .......................................................................................................................... 41 4.8.2 PDF Stamp ................................................................................................................................................... 41 4.8.3 ZIP ............................................................................................................................................................... 42

4.9 Output Handlers ........................................................................................................................................... 42 4.9.1 Disabling an Output Handler ....................................................................................................................... 42 4.9.2 Check-in Handler ......................................................................................................................................... 43 4.9.3 Mail Handler ............................................................................................................................................... 46 4.9.4 FTP Upload Handler .................................................................................................................................... 46 4.9.5 File Store Handler ....................................................................................................................................... 47 4.9.6 Print Handler ............................................................................................................................................... 47 4.9.7 Macros, used by different output handlers ................................................................................................ 49

4.10 Configure FOP Version .............................................................................................................................. 50 4.10.1 Configure the Global Setting .................................................................................................................. 51 4.10.2 Configured per Report ........................................................................................................................... 51

5 Creating Stylesheets ........................................................................................... 52

5.1 Extract Raw XML ........................................................................................................................................... 52

5.2 System Table Settings ................................................................................................................................... 52

5.3 XML Format .................................................................................................................................................. 53 5.3.1 Date Values ................................................................................................................................................. 55

5.4 Stylesheet Template ..................................................................................................................................... 55

5.5 Stylesheet Import/Include ............................................................................................................................ 57

5.6 Passing Custom Properties to the Stylesheet ................................................................................................ 58 5.6.1 Default Parameters Passed To the Stylesheet ............................................................................................ 58

5.7 Creating Excel Reports .................................................................................................................................. 59 5.7.1 SpreadsheetML ........................................................................................................................................... 59 5.7.2 Custom Report using POI ............................................................................................................................ 59

6 Distributing the Report Creation ........................................................................ 61

6.1 Data Model ................................................................................................................................................... 62 6.1.1 Attributes .................................................................................................................................................... 62 6.1.2 Lifecycles ..................................................................................................................................................... 63

6.2 The Queue Agent .......................................................................................................................................... 64 6.2.1 Queue Agent Start Script ............................................................................................................................ 64 6.2.2 Required Script Changes ............................................................................................................................. 65 6.2.3 Agent Actions .............................................................................................................................................. 66

6.3 Queue/Job Administration ........................................................................................................................... 67

6.4 Allowing a User to Access Jobs ...................................................................................................................... 68

7 Images ................................................................................................................ 69

7.1 Images Loaded From the Database ............................................................................................................... 69

7.2 Images from the Web Application ................................................................................................................. 69

7.3 Charts ........................................................................................................................................................... 71 7.3.1 Chart Definition ........................................................................................................................................... 71 7.3.2 Child elements of Chart .............................................................................................................................. 72

Page 13: ENOVIAReportGenerator Admin

7.3.3 Chart types .................................................................................................................................................. 73 7.3.4 Data Provider .............................................................................................................................................. 74

8 Fonts .................................................................................................................. 75

8.1 FOP 0.20.5 ..................................................................................................................................................... 75

8.2 FOP 1.0 ......................................................................................................................................................... 77

9 Extended Configuration Possibilities .................................................................. 78

9.1 Webform as Pre Process Page ....................................................................................................................... 78

9.2 Custom Pre Processing Pages ........................................................................................................................ 78 9.2.1 Submitting Parameters ............................................................................................................................... 78 9.2.2 Submit Action .............................................................................................................................................. 80 9.2.3 Selecting Columns ....................................................................................................................................... 80 9.2.4 Selecting Sections ....................................................................................................................................... 81 9.2.5 Printer Selection ......................................................................................................................................... 81

9.3 Implementing a Custom (Java Based) Report ................................................................................................ 82

9.4 Implement a Custom Output Handler ........................................................................................................... 83 9.4.1 Implementation .......................................................................................................................................... 84

9.5 Implement a Custom Post Processor ............................................................................................................. 84 9.5.1 Implementation .......................................................................................................................................... 84

10 XML Based Definitions .................................................................................... 86

10.1 Using XML Based Resources ..................................................................................................................... 86 10.1.1 Supported Objects ................................................................................................................................. 86 10.1.2 Naming ................................................................................................................................................... 87 10.1.3 Location of the Resource Files ............................................................................................................... 87 10.1.4 Reloading of XML based resources ........................................................................................................ 89 10.1.5 Working with Resources Stored on the Classpath ................................................................................. 89

10.2 Formats .................................................................................................................................................... 89 10.2.1 Tables ..................................................................................................................................................... 89 10.2.2 Inquiry .................................................................................................................................................... 93 10.2.3 Stylesheet ............................................................................................................................................... 93 10.2.4 Reports ................................................................................................................................................... 93 10.2.5 RPT Expansion Report ............................................................................................................................ 93 10.2.6 RPT Inquiry Report ................................................................................................................................. 94 10.2.7 RPT Advanced Report ............................................................................................................................. 94 10.2.8 RPT Custom Report ................................................................................................................................ 94

Page 14: ENOVIAReportGenerator Admin

1 Report Generator The Report Generator produces reports over business-objects and connections from ENOVIA into different

formats, where the most commonly used formats are PDF and HTML.

The main features of the Report Generator Component are:

Queuing mechanism, i.e. controlling the number of concurrent reports being created.

Possibility to distribute the work for creating reports into other processes, by using so called “Report Agents”.

The report is configured through configuration business objects (report definition objects) OR via XML files that are stored within the application.

Report definition objects can be configured to be available only for certain users, e.g. by using filter expressions.

The report can be generated on-demand, sent by mail, uploaded to a FTP site or checked in to a business object in Matrix, or a combination of the methods. This is called “output handler”.

Possibility to post-process the report after it has been created. For example, stamp the PDF with some text, or ZIP the report before it is delivered.

Separation of data extraction and presentation, e.g. same stylesheet used for design but different system-tables depending on what to view.

Highly customizable. The plug-in architecture of the report generator allows a high degree of customization, such as custom output handlers or post processors.

Page 15: ENOVIAReportGenerator Admin

1.1 Definitions

Definition Description

Report Definition The “configuration” object (business objects or XML definition) that defines how a report is generated. Defines for example which output format, stylesheet and system table to use for a particular report.

Post Processor A post processor can be used to modify the generated report, for example perform PDF stamp.

Output Handler An output handler is responsible for delivering the report to a certain destination. For example: by mail, to FTP, check-in to matrix etc.

FOP Formatting Objects Processor. It can be used to render an XML file containing XSL formatting objects into a page layout. The main target is PDF but other rendering targets may be used (Post Script, plain-text).

XSL XSL is a W3C standard concerned with publishing XML documents. It consists of two parts: XSLT and XSLFO. The acronym expands to eXtensible Stylesheet Language.

XSL-FO XSLFO is an XML vocabulary that is used to specify pagination and other styling for page layout output. The acronym “FO” stands for Formatting Objects. XSLFO can be used in conjunction with XSLT to convert from any XML format into a paginated layout ready for printing or displaying.

XSLT XSLT describes the transformation of arbitrary XML input into other XML (like XSLFO), HTML or plain text. The “T” comes from Transformation. For historical reasons, a transformation is often also called a “style sheet”.

Xalan Xalan-Java is an XSLT processor for transforming XML documents into HTML, text, or other XML document types. http://xml.apache.org/xalan-j/index.html

Xerces XML Parser from Apache. http://xml.apache.org/xerces2-j/index.html

Page 16: ENOVIAReportGenerator Admin

1.2 Overview The report definition object defines the extraction criteria. Depending on the type of definition object being

used, this is done differently. It could for example be to define the expansion settings, defining an inquiry or

setting up a more advanced report that does a combination of different methods.

A table (system table or XML-table) is used to define which attributes and other properties that are needed

from the objects and/or connections. After the table has been evaluated over the objects/connections, an

XML document is created that represents the raw data.

The raw XML data is converted into a different format by using a stylesheet. Most commonly, the data is

converted into an XML format called XSL-FO, which is used for producing PDF reports. However, it is also

common that the raw XML data is converted into HTML.

After the report has been created, any post processors being configured will be executed. The last step is to

process the output handlers.

Figure 1, Report creation process

1.2.1 Pre Processing

Sometimes it is needed to get some input from the user before the report is being created. This is solved by

using a custom pre-process page.

Some examples of what a pre process page allows the user to do:

Give input criteria to the query, e.g. affect the data included in the report

Define which columns in a table that should be included

Define which sections that should be included in a report.

1.2.2 XML-FO Processor

Internally, RPT uses a component from the Apache Software Foundation called FOP for converting XML-FO

data into for example PDF. RPT has two versions of the Apache FOP software available, 0.20.5 and 1.0. The

default version being used is 1.0.

See chapter 4.10 for information how to change the version used.

Page 17: ENOVIAReportGenerator Admin

2 Quick Start This chapter describes how to configure the report generator, in order to quickly test the functionality and

run the sample reports that are installed out of the box.

Following steps must be performed:

1. Install the report generator according to instructions within the installation guide. 2. Open the business client, and find the page object called “RPT Settings”. 3. Modify following properties, within the page object (following values are just examples)

mail.from.email = [email protected]

mail.from.name = Name of person that appears in the from field

mail.subject = The mail subject

mail.sendTo.onerror = [email protected]

#

# Use the following setting to override MX_SMTP_HOST or if that

# is undefined.

#mail.smtp.host = mail.your.domain

4. Attach the report command to, for example the type_Part menu. Example of how this is accomplished from the MQL client:

<MQL> set context user creator password zzz;

<MQL> mod menu type_Part add command "RPT Show Reports";

5. Search for a Part, and open the Part info page. 6. From the category tree, launch the command Reports 7. Wait for the page to load, and then select one of the sample reports. 8. Wait for the report to be completed. Depending upon your browser settings, the report will be

shown either in the same window as the popup, or in a separate page.

Page 18: ENOVIAReportGenerator Admin

3 Usage Scenarios The report generator may be invoked in following ways

Manually, by selecting a valid report definition. The report definition may be global or context sensitive. Global means that the report definition is not dependent upon a specific object and context sensitive means that the report definition needs a specific object as input to be able to create the report.

Automatically triggered by an event, for example when an object is promoted to a specific lifecycle state or when an object is revised a report could be generated automatically.

Manually, by invoking a custom command (URL) that explicitly uses one pre-defined report definition

Through a command line invocation (manually invoked or automatically through a scheduled job etc).

In either one of the scenarios above, exactly how the report will be generated and what will happen to the

generated output is defined in the Report Definition object (configuration object), which is used.

There are a number of different Report Definition types that can be used. They are all described in chapter

4.2.

3.1 Global Report A global report is not dependent upon a specific object as input. An example of such report could be, to

query the database for all ECR’s and show the status of those.

The command used to invoke the global reports is called “RPT Show Global Reports”. This command should

be located where it’s easy reachable for the user, for example in the menu called “Toolbar” (please note

that this name might vary between different Matrix versions).

To define a report as global, the attribute “RPT Global” must be set to true on the report definition

instances.

3.2 Context Report Context reports, i.e. reports that requires a business object as start object, is most commonly available from

the category tree.

The command used from the category tree to display the available reports is called "RPT Show Reports".

This command can be added to an object type category menu in order to make it available for the user.

Figure 2 below shows the category tree for a Part instance with such command attached.

The command is by default not attached to any category tree after installation, but following MQL command

can typically be used to add the command to the Part type category tree (the same command could of

course be attached to any type_ABC menu):

<MQL> modify menu type_Part add command "RPT Show Reports";

Page 19: ENOVIAReportGenerator Admin

Figure 2, Report command in category tree.

Select-Report command

Page 20: ENOVIAReportGenerator Admin

3.3 Triggered by Event The creation of a report could be done from a triggered event. The report generator contains a JPO called

RPTReportGenerator that wraps the logic to create a report. In this case, you should ensure that your report

has an output handler defined otherwise no report will be generated.

3.3.1 Integrating With Trigger Manager

First, create a trigger program object similar as shown below.

Next, define the attributes of the trigger program object, as shown in the picture below.

Note: The object id for the object the report is created for is retrieved from the "env". You don't need to add

the object-id macro as an argument in the trigger program.

Page 21: ENOVIAReportGenerator Admin

Next, attach the program to the desired event as shown below:

3.3.2 Custom Invocation of the Report Generator (MQL)

You can invoke the report generator from MQL like the example below illustrates.

<MQL> set context user creator password zzz;

<MQL> execute program RPTReportGenerator –method mxMain

-report=R-002

-oid=1234.5678.90123.4567;

Remember to setup the MX_CLASSPATH correctly.

Page 22: ENOVIAReportGenerator Admin

3.4 Define a Custom URL to Create a Specific Report There is a way to initiate the report generation without allowing the user to select a report definition. A

custom command with properties as below may be created and added to an appropriate place within the

application.

<MQL> add command "My Test Report"

href "${ROOT_DIR}/tvc-action/beginCreateReport?reportDefinition=Test"

label "My Test Report"

alt "My Test Report";

The table below shows the URL parameters that can be passed to the server.

Parameter Description

reportDefinition The name or the object ID of the report definition object to use (required).

objectId The object ID of the object the report will be made for (unless it's a global report). NOTE: Depending on from where this command is used, you might need to ensure that the "objectId" parameter is sent correctly.

The command can have its “Target Location” setting pointing to a hidden frame; in this case you need to add

the parameter “openPopup” with value set to true to the URL in the command. By default, the

“beginCreateReport” end-point assumes that it is being opened inside a popup window.

3.5 Create Multiple Reports A common use case is to create multiple reports (one report for each selected object, where the selection of

objects typically is done within a table). In such case, the user will just have to fill in values on the pre

process page (if such is used) one time, and those are applied to all reports.

When multiple reports are being created, each report is created individually, meaning that any output

handler is executed for each report. However, if the report is configured for on-demand delivery, the report

generator will collect all created reports within one ZIP file.

To create multiple reports, one need to create a command or link that has the following characteristics:

${ROOT_DIR}/tvc-action/rgCreateMultipleReports?reportDefinition=My Definition

In addition, you need to supply the selected objects. This is done by passing the object ids using the

parameter “objectId” or “emxTableRowId”. NOTE: You need to supply at least one object.

If the link is opened in a popup window, you should also provide the parameter “openPopup=false”. If the

link is opened in a hidden frame, the popup window is automatically created.

3.6 Command Line Invocation It is possible to invoke the report generator from the command line. When the report generator is installed,

you will get a directory under the WEB-INF folder in the web-application called “reportgenerator”. Within

this directory, there is a script file available called “Client”. This script is used for command line invocations

of the report generator.

Page 23: ENOVIAReportGenerator Admin

Within this script, you need to set a few parameters, namely:

ENV Variable Description USER The user which the report is ran as.

PASS The password for the user.

OBJECT_ID The id of the object.

TARGET_FILE The name of the file to which the generated report is stored.

CONTEXT_HOST Defines how to connect to ENOVIA. If RIP mode is used, leave the value empty. If RMI mode is used, configure like the following example: rmi://192.168.0.1:1099 NOTE: If you run in RIP mode, you might need to set additional environment variables, like the PATH and MATRIX_HOME in order for the ENOVIA kernel to start-up correctly.

WEBAPP_ROOT_DIR IMPORTANT: If the script is moved from the "WEB-INF/reportgenerator" folder, this value must be changed. This value is used to automatically add the necessary JAR files to the classpath in order to run the report. Also remember, if the script is moved somewhere else, you must also copy the "enoviareportgenerator-bootstrap.jar" file to the same place.

Page 24: ENOVIAReportGenerator Admin

4 Configuring the Report Generator

4.1 Global Properties In this section we describe all of the possible settings and configuration possibilities that globally apply to

the Report Generator. These global properties are stored within a page object called “RPT Settings”. These

properties are not re-loaded automatically when changed, unless the production-mode setting is set to

FALSE. If the system has production-mode set to TRUE, then you must restart the application server to have

your changes in use. The production mode setting is described within the installation guide for the ENOVIA

Report Generator.

The table below contains those parameters that are changeable.

Parameter Description Example

max.concurrent.processes

The number of concurrent running conversion processes. If the total number of created conversion processes exceeds this number, then they are queued internally. If you are using report agents for distributing the load, then each report agent has its own setting for controlling how many concurrent reports that are processed.

5

max.concurrent.per-user.processes The maximum number of concurrent conversion processes a single user may initiate.

2

context.host

Specifies which collaboration server that the report generator will use when fetching the data. Remove or comment out the property if the default collaboration server should be used.

//127.0.0.1:1099

mail.from.email Specifies an email address from which the user will see that the posted reports are from.

[email protected]

mail.from.name The “real” name that will be seen in the mail. Report Daemon

mail.subject The subject of the mail. See chapter 0 for further details regarding custom mail content.

Report ${DEF-NAME} for ${TYPE}, ${NAME}, ${REVISION}

mail.message The message of the mail. See chapter 0 for further details regarding custom mail content.

This is the requested report. Find the attachment below.\\n\\n

mail.subject.onerror Mail subject in case of error. See chapter 0 for further details regarding custom mail content.

Report ${DEF-NAME} for ${TYPE}, ${NAME}, ${REVISION} FAILED !

mail.message.onerror Mail message in case of error The system was unable to generate the requested report

mail.sendTo.onerror The Email address to an administrator that should receive any error notification.

[email protected]

mail.smtp.host The SMTP host that will be used for outgoing mail (if not defined, the MX_SMTP_HOST is used)

mail.your.domain.com

defaultUseLatestFOP Whether or not to use the latest FOP version by default. Default is FALSE.

true

Page 25: ENOVIAReportGenerator Admin

4.2 Creating Report Definitions There are a couple of different report types that can be used. The table below lists them and describes when

it’s suitable to use it.

Report Definition Use Case Scenario

RPT Expansion Report When creating a report of a structure and the data in the structure can be retrieved by using an expand command. Typically an EBOM structure, where the EBOM relationship is followed in one direction from top to bottom.

RPT Inquiry Report Can be used for arbitrary data retrieval. An inquiry can be used to make queries, expands, retrieve data from sets, performing more advanced expands that requires more logic than for a “RPT Expansion Report” etc.

RPT Advanced Report

When your report is based upon data that cannot be easily retrieved by using either an expansion or an inquiry, but you need to combine this to retrieve different kind of data, you should use this type. This report type allows you to extract different set of data by using for example expansions, queries, select statements, inquiries etc and combine these in the way you need. There are also other capabilities that let you filter the data better, and also evaluate different tables over the different of sections of data.

RPT Custom Report Allows you to create the report using custom code.

RPT JPO Report Should only be used when you need to integrate some legacy functionality with the report generator. As JPO invocations are not performing that well, you should consider using the “RPT Custom Report” type instead.

4.2.1 Creating the Instances

Creating the Report Definition instances are simply made from either the Matrix thick client or the MQL

client.

Please remember that these objects must be created with following properties:

Vault: TVC Administration

Policy: RPT Report Definition

The vault and the policy above are created during installation of the Report Generator.

4.2.2 Activating/Inactivating Instances

All Report Definition instances use the same policy, "RPT Report Definition". This policy has two lifecycle

states defined, Active and Inactive. Changing the state on a Report Definition instance makes it available or

unavailable for the users.

NOTE: Do not manipulate the "RPT Report Definition" policy as a way to control the visibility of a report for

different users. The only way to accomplish this is to configure the "RPT Filter Expression" attribute on each

report definition object, in order to achieve the desired result.

Page 26: ENOVIAReportGenerator Admin

4.2.3 Common Attributes

All the report definition types are derived from the abstract type "RPT Report Definition". This abstract type

has a number of attributes defined. The table below describes the purpose of these attributes. Even though

the attributes are on the common level, there are some Report Definition types that may not use some of

the attributes. These exceptions are described per Report Definition type later on within this document.

Attribute Description

RPT Filter Expression

May contain an expression that is used to evaluate if the definition is available or not for the object that the report is being created for. The expression is used with the MQL command “evaluate expression” and must therefore conform to that syntax. Example: type == Part AND current == Released

RPT Output Format

Defines the output format of the report. Currently, the following formats are available: PDF HTML TXT PS XML NOTE: When selecting any of the formats PDF, TXT, PS or XML, you must use a stylesheet that generates XSL-FO elements. E.g. the output-format and stylesheet attributes are dependent on each other.

RPT Stylesheet Defines the stylesheet to be used for conversion of the generated XML. This should be the name of a page object, which contains the stylesheet that will be used to convert the XML data.

RPT System Table Name of a table that defines which data to extract.

RPT Hidden

Defines if the definition object is visible for the user when s/he is selecting a report. For example, some report definition objects are only used for triggers, hence these are not intended for use manually and setting this attribute to TRUE will make it hidden. This attribute could be used in conjunction with the status of the report definition to make it selectable or not. The status of the report definition could be changed from Active to Inactive to make it completely unavailable to the system.

RPT PreProcess Page

Defines the name of a custom JSP page that is invoked before the report is being created. Using a pre-process page enables more control over the created report. Depending on the pre-process page – more or less sophisticated functionality may be added, but typically a form with some options are displayed and the user does some selection that finally applies to the final report. See chapter 9.1 for details regarding implementation details of pre-process pages.

RPT Conversion Properties Contains parameters in a Java compliant syntax, and controls the behaviour of the report processes. Chapter 4.2.4 contains a table with the different parameters that are adjustable.

RPT Global Defines if the report is global or context sensitive. See chapter 3.1 and 3.2 for more information.

RPT Displayed Output Format If defined, this value is shown in the GUI on the page where the user selects a report. If undefined, the value of the RPT Output Format is shown instead.

Page 27: ENOVIAReportGenerator Admin

4.2.4 Conversion Properties

The “RPT Conversion Properties” attribute contains miscellaneous settings that affect the report. Originally,

this attribute were used to control the conversion phase of the report creation. However, this attribute

contains today a lot more settings that affect different aspects of the report creation process.

The value for this attribute follows Java properties syntax, where each row has a “key” and a “value”. As the

example below:

First_Key = value

Another_Key = another value

Following parameters are supported by the OOTB implementation and can be adjusted:

Parameter Example Description

outputHandlers mail,checkin,ftp,fileStore

Specifies the output-handlers that will be used, e.g. how the generated report should be handled. This is a comma-separated list of named output handlers. See chapter 4.8 for information regarding the output handlers.

postProcessors zip,PDFStamp

Specifies which post processors to be used. This is a comma separated list of named post processors. See chapter 4.8 for information regarding post processing.

file.on.demand true Specifies if the report should be generated on screen.

file.suffix .pdf The suffix which the file will use

file.prefix BOM-Specification The prefix which the file will use

file.contentType application/pdf Overrides the content-type of the report. Affects the download of the report.

useLatestFOP true Defines if to use the latest FOP version.

pageHeader BOM Report Can be used to configure a custom header in the user interface.

transactionType update

Can be used to change the transaction type during the data extraction. By default, a read transaction is started. However, if you for some reason needs an update transaction, you can change it through this parameter

createAsSuperUser True If you want to override the access mechanism in ENOVIA and create the report as a user without any restriction, you can set this value to true.

checkoutImagesAsSuperUser True If set to true, all images are checked out / generated with super-user context.

Page 28: ENOVIAReportGenerator Admin

4.3 Expansion Report Definition An expansion report is used to generate a report over the objects and connections inside one structure. This

is equal to browsing the relationships going from or to the selected business object in the defined number of

levels. For more information about expanding business objects, see the MQL guide. The expansion report

has following attributes defined (on top of the attributes described in chapter 4.2.3).

Attribute Description Example

RPT Expansion Level Defines the number of levels to expand. 0 means all levels.

0

RPT Relationship Pattern

Defines against which relationship types to expand. Separate multiple relationship types with a “,” character. An empty value is treated as * at runtime. This value may contain an expression that contains symbolic names rather than actual names.

relationship_EBOM,relationship_MBOM alt. EBOM,MBOM

RPT Object Pattern

Defines which object types to expand. Separate multiple types with a “,” character. An empty value is treated as * at runtime. This value may contain an expression that contains symbolic names rather than actual names.

type_Part,type_ECO alt Part,ECO

RPT Relationship Where

Where clause to apply on the relationships This value may contain an expression that contains symbolic names rather than actual names.

$<attribute[attribute_FindNumber]> != 0

RPT Object Where

Where clause to apply on the objects. This value may contain an expression that contains symbolic names rather than actual names.

$<attribute[attribute_Weight]> > 0

RPT Get From True if expanding in from-direction otherwise false True/False

RPT Get To True if expanding in to-direction otherwise false. True/False

NB: The values of “RPT Get From” and “RPT Get To” may not both be set to TRUE if the “RPT Expansion

Level” is set to 0 (all levels).

Page 29: ENOVIAReportGenerator Admin

4.4 Inquiry Report Definition The inquiry report uses an inquiry to retrieve the objects and relationships that will be included in the

report. The inquiry report definition object has following attribute defined (on top of the attributes

described in chapter 4.2.3).

Attribute Description

RPT Inquiry Defines the name of the inquiry that is used to gather the objects/relationships to be included in the report.

Below are two examples that show how the inquiries should be constructed in order to work properly with

the report generator. NB: The name of the fields in the format part of the inquiry must be same as below.

Flat-data (a list of objects without relationship information):

pattern: "*|*|*|${OID}"

format: "${OID}"

argument: TYPE_PART type_Part

argument: USER dummy

code: temp query bus ${TYPE_PART} * * where

'owner == "${USER}"' select id dump |

Structured-data (objects and relationships):

pattern: "${LEVEL}|*|${DIRECTION}|*|*|*|${OID}|${RELID}"

format: "${LEVEL}|${DIRECTION}|${OID}|${RELID}"

argument: REL_EBOM relationship_EBOM

argument: ID dummy

code: expand bus ${ID} from rel ${REL_EBOM} recurse to all

select bus id select rel id dump |

4.4.1 Passing Custom Parameters to the Inquiry

The inquiry report definition is very flexible. You may pass additional parameters in the URL that are sent

further to the inquiry. This is accomplished by adding URL parameters to the command described in chapter

9.2.1.

The arguments that can be passed to the inquiry must have the following syntax:

Inquiry arguments :== <Argument Name> & <Argument Value> [& <Inquiry arguments>]

Argument Name :== argName=<name-of-argument>

Argument Value :== argValue=<value-of-argument>

URL example:

${ROOT_DIR}/tvc-action/

beginCreateReport?reportDefinition=MyInquiryDef&argName=NameOfFirstArg&argValue=ValueOfF

irstArg&argName=NameOfSecondArg&argValue=ValueOfSecondArg

The arguments that are passed must also be defined on the inquiry itself.

Page 30: ENOVIAReportGenerator Admin

4.4.2 Inquiry Report Example

Following example illustrates how these custom parameters can be used to create a report of objects stored

in a set. The inquiry will retrieve the id of the objects stored in a set, and the name of the set is passed as

input parameter.

1. Create an inquiry with following configuration

pattern: ${OID}

format: ${OID}

argument: SET dummy

code: pri set ―${SET}‖ select id dump

2. Create an Inquiry Report Definition instance, called LoadFromSet, that used the created inquiry 3. Create a set from either MQL or Matrix navigator that contains some business objects. Name the set

to for example “MySet”. 4. Create a command with following parameters:

${ROOT_DIR}/tvc-action/beginCreateReport?reportDefinition=LoadFromSet&argName=SET&argVal

ue=MySet

5. The command can now be used to make a report of the objects within the set called “MySet”.

Page 31: ENOVIAReportGenerator Admin

4.5 Advanced Report Definition The advanced report definition allows dividing a report into sections, where each section contains data that

is generated by evaluating one table over a set of objects / connections, which are provided by a so called

dataset. The report might contain as many sections as needed to build up the complete report.

The definition of the sections and data-sets are made in XML format within the attribute “RPT Data

Extraction Definition”. Below is a simple example on how this definition is made:

<Definition>

<!-- Define a data set that retreives all revisions -->

<DataSet id="revisions">

<Select>

<Statement>revisions.id</Statement>

</Select>

</DataSet>

<!-- Define a data set that expands the structure -->

<DataSet id="BOM">

<Expand>

<From>true</From>

<To>false</To>

<Depth>1</Depth>

<TypePattern>

<Type>type_Part</Type>

</TypePattern>

<RelationshipPattern>

<Relationship>relationship_EBOM</Relationship>

</RelationshipPattern>

</Expand>

</DataSet>

<!-- Now we can define the sections that is building up the report -->

<Report>

<!-- First section evaluates a table over the revisions -->

<TableDataSection element="Revisions">

<Description>Revision information</Description>

<DataSet>revisions</DataSet>

<Table>Revisions Table</Table>

</TableDataSection>

<!-- The second section evaluates another table over the BOM -->

<TableDataSection element="BoM">

<Description>Bill of Material</Description>

<DataSet>BOM</DataSet>

<Table>EBOM</Table>

<XMLSpec>

<OmitRootNode>true</OmitRootNode>

</XMLSpec>

</TableDataSection>

</Report>

</Definition>

This report contains two sections; Information about all the revisions and information about the BOM

structure below the item. These sections are evaluated using different tables.

The sections uses different data-set for retrieval of the objects and connections needed, these are defined

as “DataSet” elements in the beginning of the report.

Page 32: ENOVIAReportGenerator Admin

4.5.1 Table Data Section

A table data section uses a table (system table or an XML defined table) and evaluates this table over the

data returned by the data-set being used. Moreover, a section is in the final report grouped inside its own

element, which is defined in the attribute “element” on the “TableDataSection” tag.

The description element is optional, but can be used to provide a user friendly description describing the

purpose of the section. This can be utilized from a pre-process page to allow the user to de-select a section

from a particular report. There are two additional attributes that can be used to define the selection

behavior of a section, namely: selectable and selected. The first one defines whether or not the user can

control the inclusion of the section and the latter one defines if the section is selected by default or not.

Below is an example where these attributes are used:

<TableDataSection selectable="true" selected="false" element="documents">

<Description>Documents related to this object</Description>

</TableDataSection>

Moreover, the XMLSpec element allows you to configure how the XML data for this particular section should

be formatted. The details are provided in the next chapter.

4.5.2 XML Specification

The XMLSpec element can have a number of different sub-elements, used for configuring the generated

XML. The table below shows the current available elements, their purpose and possible values. Due to

compatibility reasons, the default XML format is unchanged since earlier versions. However, the XMLSpec

element allows you to adjust the format.

Element Name Purpose Value(s)

IncludeTableHeaders Whether or not to include information about the table columns in the table.

True (default) False

IncludeTableGroups Whether or not to include data grouping information. True (default) False

IncludeTableContent Whether or not to include the actual table content. True (default) False

IncludeTableCalculations Whether or not to include any table calculations defined on the table True (default) False

IncludeGroupHeaders Whether or not to include information about any group headers in the table.

True (default) False

IncludeSettings Whether or not to include the settings defined on the columns, within the table header section.

True (default) False

FlattenStructure Whether or not to flatten the data. This is only applicable if the data is structural.

True False (default)

ShowLevel Whether or not to include level information on the row. True (default) False

ShowDirection Whether or not to include direction information on the row. True (default) False

AddColumnId Whether or not to add an id on the column. True (default) False

AddCellIndex Whether or not to add cell index on the cells. True (default) False

AddColumnRef Whether or not to add a reference to the column from the cell. True (default) False

OmitCellValueElement Whether or not to have the value element within the cells. True

Page 33: ENOVIAReportGenerator Admin

False (Default)

OmitRootNode Whether or not to omit the root node from the XML tree. True False (Default)

OmitRowAttributes Whether or not to omit all attributes on the row True False (Default)

OmitEmptyCells Whether or not to omit the Cell element, if there aren’t any values in the cell.

True False (Default)

UseColumnName Whether or not to use the name of the column as name on the Cell elements. This might in some cases help you in the transformation phase, to avoid having too complex XPath expressions.

True False (Default)

TableDataGroupElement Define the name of the element that holds the table-data-grouping information

data-groups

TableDataElement Defines the name of the element that holds the table data information

objects

TableColumnsElement Defines the name of the element that holds the table column information

headers

TableColumnElement Defines the name of the Column element. header

RowElement

Defines the name of the row element. It is possible to use a special macro to create dynamic element names. Following macros are supported: ${TYPE} ${NAME} ${REVISION} ${STATE} ${POLICY} ${RELTYPE}

row

CellElement Defines the name of the Cell element. Note that if the “UseColumName” has been set to true, the name of the Column will be used as Cell value element name.

cell

CellValueElement Defines the value element name value

Page 34: ENOVIAReportGenerator Admin

4.5.3 Data Groups

It is also possible to group the data. The data grouping is made by adding “Group” elements within the

“DataGroups” element. Each group must have its own name.

<TableDataSection>

<DataGroups>

<Group name="OriginatedByYearQuarter">

originated{Originated;year<yyyy>-quarter}

</Group>

<Group name="ByOwnerAndType">owner{Owner}#type{TypeName}</Group>

</DataGroups>

</TableDataSection>

The syntax for a group definition is defined below:

definition : <group> "#" <group>

group : <column-name> | <column-name> "{" <element-name> ";" <group-spec> "}"

column-name : <text>

element-name : <text>

group-spec : <text>

A group is operating on the cells in the table hence the column is referenced by its name.

The group-spec is different depending on the data type of the property, which the group is made on. For

example, date fields are different than numeric fields.

This is easiest explained with a few examples:

1: Group by originated date (year & quarter). Format the year using 4 digits

originated{Originated;year<yyyy>-quarter}

2: Group by weight (numeric attribute):

Weight{==0,0<<10,>=10}

This will make one group for all matching 0, one group for items having between 0 and 10 and one for those

having weight above or equal to 10.

Page 35: ENOVIAReportGenerator Admin

4.5.4 Data Set

A data set provides a section with a set of objects or objects + connections. One data set can be used by

different sections, e.g. different tables evaluated over the same data-set.

A data-set must have an identifier, which is set through the “id” attribute on the “DataSet” element, for

example:

<DataSet id="spare-parts">

The id must be unique within the report.

A data set uses so called data-producer definitions, which is any of:

Expand

Inquiry

Query

Select

JPO

The next chapter describes these data producers more in detail.

4.5.5 Data Producers

4.5.5.1 Expansion

The definition how to expand a structure is shown below.

<Expand>

<From>true</From>

<To>false</To>

<Depth>1</Depth>

<TypePattern>

<Type>type_Part</Type>

</TypePattern>

<RelationshipPattern>

<Relationship>relationship_SparePart</Relationship>

</RelationshipPattern>

</Expand>

Setting the depth to 0, you will expand as deep as possible. This can only be done in one direction.

In the example above, it is the object for which the report is being created for that is being expanded. It is

possible to expand some other object(s), this is accomplished by nesting different data producer elements

with each other (see chapter 4.5.6 for more details).

Page 36: ENOVIAReportGenerator Admin

4.5.5.2 Inquiry

To load the data from an inquiry, it is defined like below:

<Inquiry>

<Name>My Inquiry</Name>

</Inquiry>

4.5.5.3 Query

It is also possible to define a query. See the example below how to do so.

<Query>

<ExpandType>true</ExpandType>

<FindLimit>0</FindLimit>

<TypePattern>

<Type>type_Part</Type>

<Type>type_AnotherType</Type>

</TypePattern>

<NamePattern>

<Name>A*</Name>

<Name>B*</Name>

</NamePattern>

<RevisionPattern>

<Revision>A</Revision>

<Revision>B</Revision>

<Revision>C</Revision>

</RevisionPattern>

<OwnerPattern>

<Owner>A user</Owner>

</OwnerPattern>

<VaultPattern>

<Vault>A vault</Vault>

<Vault>Another vault</Vault>

</VaultPattern>

<Where>$&lt;attribute[attribute_Weight]&lt; &gt; 100</Where>

</Query>

4.5.5.4 Select

Getting object through a select statement is also possible. See the example below how to do so.

<Select>

<Statement>from[Documents].to.revisions.id</Statement>

<Statement>from[Specs].to.revisions.id</Statement>

</Select>

As seen, you can have several statements. Each statement must of course return object-ids.

4.5.5.5 JPO

It is also possible to invoke a JPO method. This is configured like this example below:

<JPO>

<Name>MyJPO</Name>

<Method>myMethod</Method>

</JPO>

Page 37: ENOVIAReportGenerator Admin

The JPO method must return a MapList where each Map in the list contains the “id” and optionally the

“id*connection+” key.

4.5.6 Combining Data Producers

It is possible to combine different data producers within a data-set. For example, you might want to use an

inquiry for loading the root-nodes of a structure before you perform the expansion.

Or you need to expand in one direction to find some objects before you can expand those in a different

direction along a different relationship pattern. All of this is described within the following chapter(s).

The data producer used for expanding a structure, Expand, can be driven by a nested Data Producer. E.g. the

root nodes in the new structure can be originated from the result of a Query, Inquiry or another expansion.

Or after have used any of the Flatten, EndItems or Filter elements that are described in the next chapters.

All in all, the data producers building up a data-set can be very powerful and you will be able to accomplish a

lot without the need of writing any code at all.

4.5.6.1 Flatten Data

Data retrieved by an expansion, contains structural information. If you want to remove the structure

information and treat the data as a list, you can use the Flatten element as shown below:

<DataSet id=‖abc‖>

<Flatten>

<Expand>

<From>true</From>

<Depth>0</Depth>

This can be useful when you need to use the filtering possibility (which is described later on).

A flattened data list might contain the same object several times. To ensure unique rows only, you can add

the attribute “removeDuplicates” and set the value to true.

<DataSet id="abc">

<Flatten removeDuplicates="true">

<Expand>

<From>true</From>

<Depth>0</Depth>

4.5.6.2 Keeping Only the End Items

In some cases, you might want to work with the end items within a structure. To remove anything except

the end items, you can use the EndItems element as shown below:

<DataSet id="abc">

<EndItems>

<Expand>

<From>true</From>

<Depth>0</Depth>

Page 38: ENOVIAReportGenerator Admin

Same as for the Flatten element, you can apply the “removeDuplicates” attribute to ensure that you have

unique rows only.

4.5.6.3 Filter Data

If you need to filter the data for some reason, this can be done through the Filter element.

The example below expands a structure, makes it flat, then applies the filter and removes all the rows not

matching this filter.

<DataSet id="abc">

<Filter>

<Expression>$&lt;attribute[attribute_Classification]&gt; == ABC</Expression>

<Flatten>

<Expand>

...

</Expand>

</Flatten>

</Filter>

</DataSet>

Note: If you want to combine multiple criteria, use the words AND/OR instead of the && and || operators.

Otherwise some versions of ENOVIA Matrix have troubles to evaluate the expressions correctly.

4.5.6.4 A Complex Example

The example below illustrates how a more complex data set could be defined:

<DataSet id="regulated-products">

<Filter>

<Expression>$&lt;type.kindof[type_RegulatedProduct]&gt;</Expression>

<Flatten>

<Expand>

<Inquiry>

<Name>GetECAffectedItems</Name>

</Inquiry>

<Depth>0</Depth>

<From>false</From>

<To>true</To>

<TypePattern>

<Type>type_ProductConfiguration</Type>

<Type>type_Products</Type>

<Type>type_Part</Type>

</TypePattern>

<RelationshipPattern>

<Relationship>relationship_ProductConfiguration</Relationship>

<Relationship>relationship_EBOM</Relationship>

</RelationshipPattern>

</Expand>

</Flatten>

</Filter>

</DataSet>

First, an inquiry is used to retrieve the root-nodes in the structure. These objects are expanded in the

to-direction. The result is “flattened” before it is being filtered. E.g. at the end, only objects of type

“Regulated Product” is included.

Page 39: ENOVIAReportGenerator Admin

4.5.7 MQL Output Section

MQL output can be included by defining the MQLSection. This could either be just invoking a MQL command

that returns XML output or invoking some other program that produces XML output.

See example below:

<MQLSection>

<Description>This is the description...</Description>

<XML>true</XML>

<Code>

temp webreport ... xml;

</Code>

</MQLSection>

The sub elements of “<MQLSection>” are:

Element Name Type of data Description Required

XML Boolean (true/false) Defining if the output is XML formatted No

Code String The MQL code to execute Yes

XSLT String An optional XSLT stylesheet (name of such) to be used for converting the XML output before its being part of the report

No

Description String A descriptive text of what kind of data this section generates No

ExecuteAsSuperUser Boolean Defines if the MQL statement should be executed with super-user privileges

No

RequiresVersion String Specifies the lowest ENOVIA version. If this requirement is not met, the section will be omitted from the report.

No

Note: If your report was created for a particular object, e.g. not a global report, you can use the ${OBJECTID}

macro within the code of your MQL section to get access to the object-id value. Also, you can use the macro

${USER} to substitute with the id of the current user.

Page 40: ENOVIAReportGenerator Admin

4.6 Custom Report Definition In case you have a need for doing something that is not possible with any of the previously mentioned

definition types, or you want to leverage some existing code with the report generator; you should use the

“RPT Custom Report” type. This report allows you to create the report programmatically in Java code. See

chapter 9.2.5 for information how to implement this.

This type has one attribute, “RPT Class”, which should contain the fully qualified name of the Java class that

is derived from the “com.technia.tvc.reportgenerator.impl.CustomReport” class.

4.7 JPO Report Definition (Deprecated) The JPO Report Definition is similar to the “Custom Report Definition” type. However, instead of pointing

out a Java class from the classpath, you have to point out a JPO/method that generates the data.

The JPO Report Definition object has following attributes defined (on top of the attributes described in

chapter 4.2.3).

Attribute Description

RPT Class Defines the name of the JPO that will be used. The used JPO must be derived from the JPO “RPTJPOReportBase”

RPT Method Defines the name of the method on the JPO that will be invoked. . Your method should be declared as void and should not accept any arguments.

Remember that your custom JPO must be derived from the JPO called “RPTJPOReportBase”. The base class

contains an OutputStream, called “out”, that you should use to send your data to. Also remember to flush

any data written to this output stream, before leaving the JPO.

NB: The JPO RPTJPOReportBase has dependencies to some classes from the enoviareportgenerator.jar file.

Ensure that your MX_CLASSPATH setting contains this file otherwise your JPO will not work properly.

4.7.1 Custom JPO Example

import matrix.db.Context;

import java.io.PrintWriter;

public class ${CLASSNAME} extends ${CLASS:RPTJPOReportBase} {

public ${CLASSNAME}(Context ctx, String[] args) {

super(ctx, args);

}

public void myMethod() throws Exception {

PrintWriter writer = new PrintWriter(out, true);

try {

// Add code here that creates the data.

} finally {

writer.flush();

writer.close();

}

}

}

Page 41: ENOVIAReportGenerator Admin

4.8 Post Processing After the report has been created, it is possible to modify the file containing the report. For example, if you

create a PDF report, you can stamp the PDF with some text. In some other case, you might want to ZIP the

report.

The built-in post processors are shown in the table below:

Post Processor Description

pdf-stamp Used for adding a stamp to the PDF report

Zip Used to ZIP the generated report.

It is also possible to perform multiple post-processing of the report, for example first stamp the PDF file then

ZIP the PDF report. However, note that the post processors are executed in the order they are defined,

hence you cannot PDF stamp a ZIP file.

The post processors are registered within the “RPT Conversion Properties” attribute as the example below

illustrates:

postProcessors=pdf-stamp,zip

For information how-to create a custom post processor, see chapter 9.5.

4.8.1 Disabling a Post Processor

Even though you have defined to use a certain post processor using the “postProcessors” property; it is

possible to disable a particular processor by setting a different property. The example below will disable the

PDF Stamp processor.

postProcessors=pdf-stamp,zip

pdf.stamp.enabled=false

This can be utilized from a pre-process page to decide at runtime whether or not a post processor is

enabled.

4.8.2 PDF Stamp

The following properties can be used to configure where the PDF should be stamped.

pdf.stamp.enabled=true | false

pdf.stamp.text=${CURRENT}

pdf.stamp.fontName=Arial

pdf.stamp.fontSize=18

pdf.stamp.fontColor=rgb(255,0,0)

pdf.stamp.margin=10

pdf.stamp.position=top-left | top-center | top-right | bottom-left | bottom-center |

bottom-right | center-left | center-center | center-right

pdf.stamp.rotation=45

Page 42: ENOVIAReportGenerator Admin

The “pdf.stamp.text” property may contain a macro. Chapter 4.9.6 describes the possible macros that can

be used.

4.8.3 ZIP

The following properties can be used to configure the ZIP processor

zip.enabled=true | false

zip.fileName=report.pdf (the name of the report within the ZIP file)

zip.fileExtension=.zip (the extension for the generated ZIP file)

4.9 Output Handlers An output handler is responsible for delivering the report to some destination. The output handler(s) are

invoked after the report has been created.

A report can use as many output handler(s) as wanted. The output handler to be used for a particular report

is declared inside the “RPT Conversion Properties” attribute.

The built-in output handlers are shown in the table below:

Output Handler Description

mail For sending the report via mail to the user that creates the report. It is also possible runtime to add more recipients.

checkin Used to check-in the report to a new object or to the object, which the report is being created for.

ftp For sending the report to a FTP server

fileStore For storing the report on a local mounted disk.

print For sending the report to a printer.

Below is an example how the property is declared:

outputHandlers=mail,checkin,ftp,fileStore

Each output handler may be configured by adding/configuring parameters in the “RPT Conversion

Properties” attributes.

NB: If the report is not being delivered on-demand, at least one output handler must be defined.

For information how-to create a custom output handler, see chapter 9.59.4.

4.9.1 Disabling an Output Handler

Even though you have defined to use a certain output handler using the “outputHandlers” property; it is

possible to disable a particular handler by setting a different property. The example below will disable the

mail and ftp output handler.

Page 43: ENOVIAReportGenerator Admin

outputHandlers=mail,ftp,checkin

mail.enabled = false

ftp.enabled = false

This can be utilized from a pre-process page to decide at runtime whether or not an output handler is

enabled.

4.9.2 Check-in Handler

The check-in handler can be used to either attach the report to the object for which the report is being

created around, or create a new object to where the report will be checked in.

A new object can be created using a number generator. Current release supports using the object

generators from the AEF or by using the number generators from TVC to generate new names. To setup

object generators in the AEF, please consult the Framework documentation. To setup a TVC number

generator, see chapter 4.9.2.1.

Once an object generator is configured, following properties are used to control which object generator to

use.

checkin.create.object=true

checkin.create.strategy=AEF | TVC

# If strategy = AEF

checkin.aef.objectgenerator.name=type_Report

checkin.aef.objectgenerator.revision=1

checkin.aef.objectgenerator.create-additional=false

# If strategy = TVC

checkin.tvc.objectgenerator.name=<The Name of the Number Generator>

# Common

checkin.object.type=<The type of the object to create>

checkin.object.policy=<Policy governing the Object>

checkin.object.revision=<Revision of the Object>

checkin.object.vault=<The name of the vault to hold the object>

# If you want to connect the newly created object with the object, which the

# report is being created for, apply these settings:

checkin.connect.relationship=relationship_MyRel

checkin.connect.direction=from

Important notes:

The “checkin.object.type” is required.

The “checkin.object.policy” is optional; If omitted, the best suited policy for the specified type will be used.

The “checkin.object.revision” is optional; If omitted, the first revision in the sequence defined on the policy

will be used.

Page 44: ENOVIAReportGenerator Admin

The “checkin.object.vault” is optional; If omitted, the same vault as object which the report is created for

will be used. If the report is not created around a business object (e.g. it’s a global report), the “eService

Production” vault is assumed.

The “checkin.tvc.objectgenerator.name” is optional. If omitted, the first number generator for the specified

type will be used.

Either if you check in the object to the original object or if you are creating a new one using an object

generator, a set of additional settings must be specified in order to being able to check-in the report.

The following properties control the check-in:

checkin.format=<Symbolic name or real name of the format>

checkin.unlock=<true for unlock>

checkin.append=<true to append>

Page 45: ENOVIAReportGenerator Admin

4.9.2.1 TVC Number Generator

When a number generator is created, one should use the type, vault and policy settings as shown in the

picture below. The name of the object defines the “type”, which the numbers are to be generated for. The

revision is the logical name of the number generator – one type of object might have several number

generators.

Figure 3 Creating a TVC Number generator

The attributes that controls how the generated names are formatted, is defined as the picture below shows.

Figure 4 Defining attributes that controls the generated number

Page 46: ENOVIAReportGenerator Admin

4.9.3 Mail Handler

The mail handler will send the mail to the user who initiated the report creation. A mail address must be

specified on his/her person admin object.

The settings for mail sending is defined in the global page configuration object, but the following properties

may be overridden in the “RPT Conversion Properties” attribute in a report definition instance:

mail.from.email=<email of from user>

mail.from.name=<name of from user>

mail.subject=<mail subject>

mail.message=<mail message>

mail.sendTo.onerror=<mail address used to send info to upon failure>

mail.subject.onerror=<subject of mail upon failure>

mail.message.onerror=<message of mail upon failure>

In order to have dynamic content in the mails that are sent, there are possibilities to use macros within the

subject and mail message properties. Chapter 4.9.6 describes the possible macros to be used.

The report is by default sent to the user that created the report. It is possible to change this behaviour, and

send the report to someone else.

The properties below can be used to define other recipients.

mail.to

mail.cc

mail.bcc

4.9.4 FTP Upload Handler

The FTP handler sends the report via FTP. Following properties controls the built in FTP handler:

ftp.protocol = ftp

ftp.host = <name of ftp host>

ftp.port = 0 (for default port)

ftp.user = <name of user, which has an account on the FTP server>

ftp.password = <password for user>

ftp.dir = <name of directory on the ftp server>

ftp.file.name = <name of the uploaded file>

The properties ftp.dir and ftp.file may contain macros. Chapter 4.9.6 describes the possible macros to be

used.

An example of how a macro could be used is shown below:

ftp.file.name =

${DEF-TYPE}_${DEF-NAME}_${YEAR}${MONTH}${DAY}${HOUR}${MINUTE}${SECONDS}.pdf

ftp.dir = /home/ftpuser/${TYPE}/${NAME}/${REV}

Page 47: ENOVIAReportGenerator Admin

4.9.5 File Store Handler

The “fileStore” output handler is used when the file should be stored on a mounted drive.

Following properties controls this outputhandler.

fileStore.directory = <name of directory>

fileStore.fileName = <name of file>

Both these properties may contain macros. Chapter 4.9.6 describes the possible macros to be used.

An example of how a macro could be used is shown below:

fileStore.fileName =

${DEF-TYPE}_${DEF-NAME}_${YEAR}${MONTH}${DAY}${HOUR}${MINUTE}${SECONDS}.pdf

fileStore.directory = /home/ftpuser/${TYPE}/${NAME}/${REV}

4.9.6 Print Handler

The print output handler sends the report directly to the printer.

The printers should be pre-configured with the necessary drivers & available on the application server

where the report generator component is running.

Following property controls this outputhandler.

print.printers = <name of the printer>

It is also possible to pass a comma separated list of printer names to the property above, in which case the

report will be sent to each of the printers. The name of the printer in this case refers to the actual name of

the printer as referred to by the operating system on the application server.

The above property could be statically defined in the report configuration or a more likely scenario is for

them to be over-ridden at run time by the end user through a pre-process page.

4.9.6.1 Printer selection pre-process page

RPT provides functionality for having the printer selector on a pre-process page through which users can

select from a list of printers to send the report to.

Page 48: ENOVIAReportGenerator Admin

See chapter 9.2.5 for details on how to implement a pre process page with a printer selector.

The list of printers and their groupings are pre-defined in the page object called "RPT Report Generator Print

Output Handler Configuration". The pre-process page reads this configuration and generates the necessary

user interface to assist in printer selection.

The following is a sample configuration

<?xml version="1.0" encoding="UTF-8"?>

<!--+

| Print Output Handler Configuration File.

| This file contains the template for configuration of Print Output Handlers

+-->

<PrintOutputHandlerConfiguration>

<!--+

| A flat list of configured printers.

| Each printer must have a unique id

+-->

<Printers>

<Printer id="SE_STO_001">

<!-- The network path to the configured printer. This printer should be

configured and connected in advance.-->

<Path>\\printserver01\HP-4000</Path>

<!-- A short description of this configuration.-->

<Description>Printer on Floor 1</Description>

</Printer>

<Printer id="SE_STO_002">

<Path>\\printserver01\Lexmark-Pro901</Path>

<Description>Printer on Floor 2</Description>

</Printer>

<Printer id="SE_GBG_001">

<Path>\\printserver02\Lexmark-Pro3500</Path>

<Description>Printer in Gothenburg</Description>

</Printer>

<Printer id="NO_OSL_001">

Page 49: ENOVIAReportGenerator Admin

<Path>\\printserver03\HP-4100</Path>

<Description>Printer in Oslo</Description>

</Printer>

</Printers>

<!--+

| Printers can also be structured in groups & sub-groups e.g. classifying the

printers by location or certain printer characteristics.

| This classification can be used in report pre-process pages for allowing the

users to select printers used for printing the report.

| The printers used in the groups are referred to their printer id defined above

| Printer titles can also be localized by appending the locale suffix to the title

attribute (e.g. title_de)

+-->

<Groups title="Printers" title_de="Drucker">

<Group title="Sweden" title_sv="Sverige">

<Group title="Stockholm">

<PrinterId>SE_STO_001</PrinterId>

<PrinterId>SE_STO_002</PrinterId>

</Group>

<Group title="Gothenburg">

<PrinterId>SE_GBG_001</PrinterId>

</Group>

</Group>

<Group title="Norway">

<Group title="Oslo">

<PrinterId>NO_OSL_001</PrinterId>

</Group>

</Group>

</Groups>

</PrintOutputHandlerConfiguration>

4.9.7 Macros, used by different output handlers

Following table contains macros that may be used on some properties used by some of the output handlers.

Macro Description

${USER} The name of the user that initiated the report creation

${USER-NAME} The full name of the user

${DEF-TYPE} The type of the definition object that was used

${DEF-NAME} The name of the definition object that was used

${DEF-REV} The revision of the definition object that was used

${TYPE} The type of the object that the report was created for (if any)

${NAME} The name of the object that the report was created for (if any)

${REV} The revision of the object that the report was created for (if any)

Page 50: ENOVIAReportGenerator Admin

${STATE} The current state of the object that the report was created for (if any)

${DATE} The full-date when the report was initiated

${YEAR} The year when the report was initiated

${MONTH} The month when the report was initiated

${DAY} The day when the report was initiated

${HOUR} The hour when the report was initiated

${MINUTE} The minute when the report was initiated

${SECONDS} The seconds when the report was initiated

${WEEK-OF-YEAR} The week no of the year

${WEEK-OF-MONTH} The week no of the month

${ISO-DATE} The date in ISO format

${ISO-DATE-TIME} The date and time in ISO format

Note: if the report was created around a business object, e.g. not a global report, you can also use macros

that are resolved against the context business object. Example:

$<attribute[attribute_Title]>

4.10 Configure FOP Version RPT comes with two versions of the Apache FOP processor; 1.0 and 0.20.5. It is recommended to use the 1.0

version as it is much better compared to the 0.20.5 release, which is several years old and contains many

issues.

To upgrade old reports that were designed for the 0.20.5 version, please read through the following page:

http://xmlgraphics.apache.org/fop/1.0/upgrading.html

The used FOP version is configured in two ways.

Page 51: ENOVIAReportGenerator Admin

1. A global setting specifying the default value that will apply to all reports not specifying what FOP version it requires.

2. A setting per report specifying what version of FOP to be used.

4.10.1 Configure the Global Setting

Find the page object called "RPT Settings". Add or find the line containing "defaultUseLatestFOP". Set the

value to either TRUE or FALSE:

defaultUseLatestFOP=true

Note that if you omit this line, or comment it out, the value will be treated as TRUE.

NOTE: There are two additional properties within the "RPT Settings" page object that can be used to

override anything set within a single report. These are:

1. alwaysUseLatestFOP = true | false

2. neverUseLatestFOP = true | false

If any of those values returns true, the setting made on a single report will never be used.

This can for example be used to verify if the reports are compatible with the latest FOP or not, without

having to modify the reports themselves.

4.10.2 Configured per Report

If you have stored the report as a business object in the database, find the object and modify the attribute

"RPT Conversion Properties" by adding or modifying a line within this attribute:

useLatestFOP=true

If you have stored the report in an XML file in the application server, find the XML file and edit the Settings

section:

...

<Settings>

<Setting name="useLatestFOP" value="true"/>

...

</Settings>

...

If you don't specify this value per report, the global setting will be used.

Page 52: ENOVIAReportGenerator Admin

5 Creating Stylesheets This chapter describes how to develop the stylesheets that are used to convert the XML data produced by

the report generator into for example XSL-FO, which is used to create PDF reports, or into HTML format or

another XML format.

The stylesheets should be stored as page objects within ENOVIA.

5.1 Extract Raw XML In order to make the process of creating stylesheets easier, you could extract the raw XML that the report

generator is producing by setting the “RPT Output Format” to an empty value.

By doing so, you could use the produced XML in an external editor to develop the stylesheet.

5.2 System Table Settings The same system tables used in the application may also be used for the report creation. However, there are

some things to remember.

Only columns containing business object select data, relationship select data and program output is included in the report. Columns that has the setting “Column Type” set to either “programHTMLOutput, “checkbox” or “icon” are not included.

You can have data-handlers within the table that generates XML formatted data. However, to preserve the output from the data-handler the setting “Preserve Output” must be set to true; otherwise the XML tags are escaped.

It is possible to exclude a column from the report by setting the value of the setting “Exclude From Report” on the column to TRUE.

Page 53: ENOVIAReportGenerator Admin

5.3 XML Format The default XML format is structured like the example below:

<report>

<group-headers>...

<headers>...

<objects>...

<table-calculations>...

<meta-data>...

</report>

If you are using the “Advanced Report” definition type, the XML data will be formatted like:

<report>

<section-1>

<group-headers>...

<headers>...

<objects>...

<table-calculations>...

</section-1>

<section-2>

<group-headers>...

<headers>...

<objects>...

<table-calculations>...

</section-2>

...

<meta-data>...

</report>

E.g. each section will be grouped inside its own element, but the content within each section is similar as in

the other cases.

The group headers are formatted like:

<group-headers>

<group-header columns="2">first group header</group-header>

<group-header columns="3">second group header</group-header>

<group-header columns="8"/>

</group-headers>

The headers are formatted like:

<headers>

<header id="c1" type="the-data-type">

<name>the name of the column</name>

<expression>the expression</expression>

<label>the label for the column</label>

<setting name="name of setting‖>value of setting</setting>

...

</header>

...

</headers>

Page 54: ENOVIAReportGenerator Admin

The objects are formatted like:

<objects>

<row level="0" isFrom="true" oid="45044.10990.53681.16271" type="Part"

name="EV-000001" rev="A" current="Create" policy="Development Part"

symbolicType="type_Part">

<cell index="0" colRef="c0">

<value>Part</value>

</cell>

<cell index="1" colRef="c1">

<value>EV-000001</value>

</cell>

<cell index="2" colRef="c2">

<value>A</value>

</cell>

<cell index="3" colRef="c3">

<value>Create</value>

</cell>

...

<row ...>

</row>

</row>

...

</objects>

The table calculations are formatted like:

<table-calculations row-count="1540">

<calculation column="name of column">

<title>The title text</title>

<value>The calculated value</value>

</calculation>

...

</table-calculations>

The meta-data section is formatted like:

<meta-data>

<rt-property key="user">Test Everything</rt-property>

<rt-property key="fullname">Everything, Test</rt-property>

...

<basic key="type" localizedKey="Type">Part</basic>

<basic key="policy" localizedKey="Policy">Development Part</basic>

...

<files>

<file format="..." name="..." size="..."/>

...

</files>

<attr ...

...

</meta-data>

The meta-data section contains information regarding the object, which the report was created for. All basic

information and attributes can be found here. Additional select statements could be entered into the RPT

Conversion Properties attribute, which will force the selected value to appear in this meta-data section.

Page 55: ENOVIAReportGenerator Admin

5.3.1 Date Values

A value containing date values, will be generated like following:

<value displayDate="..." isoDate="..." isoDateTime="...">mx-value</value>

The mx-value is the date as formatted by Matrix. This will vary depending on the "Matrix ini-parameters".

The displayDate value is the value as formatted according to the locale, and the iso-date and iso-datetime

contains ISO formatted dates with and without the timestamp.

5.4 Stylesheet Template The following example shows how an XSL-XML document is generated from a structural report (the example

lacks details about formatting and should only be used as a template).

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">

<!-- Define layout, paper-size, margins etc -->

<xsl:template match="/">

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

<fo:layout-master-set>

<fo:simple-page-master master-name="only"

margin-right="1.5cm"

margin-left="1.5cm"

margin-bottom="0.5cm"

margin-top="1cm"

page-width="29.7cm"

page-height="21cm">

<fo:region-body margin-top="3cm" margin-bottom="1.8cm"/>

<fo:region-before extent="3cm"/>

<fo:region-after extent="1.5cm"/>

</fo:simple-page-master>

</fo:layout-master-set>

<fo:page-sequence master-reference="only">

<xsl:call-template name="header"/>

<xsl:call-template name="footer"/>

<xsl:call-template name="body"/>

</fo:page-sequence>

</fo:root>

</xsl:template>

<!—- Generates the header that will appear on each page -->

<!-- The header contains some basic information regarding -->

<!-- creator and creation date. -->

<xsl:template name="header">

<fo:static-content flow-name="xsl-region-before">

<fo:table width="100%">

<fo:table-column/>

<fo:table-column/>

<fo:table-body>

<fo:table-row>

<fo:table-cell>

<fo:block text-align="right">

Created by: <xsl:value-of select="/report/meta-data/rt-property[@key =

'fullname']"/>

Page 56: ENOVIAReportGenerator Admin

</fo:block>

<fo:block text-align="right">

Created date: <xsl:value-of select="/report/meta-data/rt-property[@key = 'date']"/>

</fo:block>

</fo:table-cell>

</fo:table-row>

<fo:table-row>

<fo:table-cell>

<fo:block>

Report

</fo:block>

</fo:table-cell>

</fo:table-row>

</fo:table-body>

</fo:table>

</fo:static-content>

</xsl:template>

<!—- Generates the footer that will appear on each page -->

<!-- The footer contains some basic information regarding -->

<!-- type,name and revision and page numbering -->

<xsl:template name="footer">

<fo:static-content flow-name="xsl-region-after">

<fo:table width="100%">

<fo:table-column/>

<fo:table-column/>

<fo:table-body>

<fo:table-row>

<fo:table-cell>

<fo:block>

Report for <xsl:value-of select="/report/meta-data/basic[@key = 'type']"/>,

<xsl:value-of select="/report/meta-data/basic[@key = 'name']"/>,

<xsl:value-of select="/report/meta-data/basic[@key = 'revision']"/>

</fo:block>

</fo:table-cell>

<fo:table-cell>

<fo:block line-height="14pt" font-size="10pt" text-align="end">

Page <fo:page-number/> of <fo:page-number-citation ref-id="endofdoc"/>

</fo:block>

</fo:table-cell>

</fo:table-row>

</fo:table-body>

</fo:table>

</fo:static-content>

</xsl:template>

<!-- Generates the body, i.e. the table with the data -->

<!-- The table contains header information for each column -->

<xsl:template name="body">

<fo:flow flow-name="xsl-region-body">

<fo:table width="100%">

<fo:table-column/>

<xsl:for-each select="/report/headers/header">

<fo:table-column>

<xsl:if test="setting[@name='Column Width']">

<xsl:attribute name="column-width">

<xsl:value-of select="setting[@name='Column Width']"/>

</xsl:attribute>

</xsl:if>

</fo:table-column>

</xsl:for-each>

<fo:table-header>

<fo:table-row background-color="#999999">

Page 57: ENOVIAReportGenerator Admin

<fo:table-cell>

<fo:block>Level</fo:block>

</fo:table-cell>

<xsl:for-each select="/report/headers/header">

<fo:table-cell xsl:use-attribute-sets="tableHeader">

<fo:block><xsl:value-of select="label"/></fo:block>

</fo:table-cell>

</xsl:for-each>

</fo:table-row>

</fo:table-header>

<fo:table-body>

<xsl:for-each select="//row[@level != 0]">

<fo:table-row>

<xsl:if test="position() mod 2 = 0">

<xsl:attribute name="background-color">#CCCCCC</xsl:attribute>

</xsl:if>

<fo:table-cell xsl:use-attribute-sets="tableCell">

<fo:block><xsl:value-of select="@level"/></fo:block>

</fo:table-cell>

<xsl:for-each select="cell/value">

<fo:table-cell xsl:use-attribute-sets="tableCell">

<fo:block><xsl:value-of select="."/></fo:block>

</fo:table-cell>

</xsl:for-each>

</fo:table-row>

</xsl:for-each>

</fo:table-body>

</fo:table>

<!-- Empty final block to use when counting pages -->

<fo:block id="endofdoc"

font-size="11pt"

font-family="sans-serif"

line-height="15pt"

space-after.optimum="7pt"

text-align="start">

<xsl:text/>

</fo:block>

</fo:flow>

</xsl:template>

</xsl:stylesheet>

5.5 Stylesheet Import/Include It is possible to import or include another stylesheet that is stored within a page object. Often, several

reports shares common sections like the header and footer. Instead of having to change all reports when the

header is changed, you should try to store these in separate stylesheets and use xsl:import in order to

encourage reuse.

By using the prefix of “page:” and the name of the page object in the <xsl:import…> or <xsl:include…> tags,

the URI resolver knows that it should include the referenced page object.

<xsl:include href=‖page:My Included Stylesheet‖/>

<xsl:import href=‖page:My Imported Stylesheet‖/>

<xsl:include href="tvc:stylesheet/MyStylesheet.xslt"/>

<xsl:import href="tvc:stylesheet/MyStylesheet.xslt"/>

Page 58: ENOVIAReportGenerator Admin

5.6 Passing Custom Properties to the Stylesheet In order to make the stylesheets more flexible, it is possible to pass custom parameters to the stylesheet

that is evaluated during the XSL transformation step.

There are two ways how to send these parameters:

1. Defining the properties within the “RPT Conversion Properties” attribute. Each property must start with “transformProperty.” E.g. to send the parameter paperSize to the stylesheet, write following:

transformProperty.paperSize=A3

Note that the prefix “transformProperty.” is stripped when the property is passed to the XSLT

process.

2. Via the pre-process page set transform properties. All request parameters submitted from the pre-process page that starts with “transformer.” is treated as a transformer parameter. Note that the prefix “transformer.” is stripped when the property is passed to the XSLT process.

The transformer parameters are retrieved in the XSL as shown below:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform

xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">

<xsl:param name="paperSize" select="'A4'"/>

...

</xsl:stylesheet>

5.6.1 Default Parameters Passed To the Stylesheet

Following table contains the parameters that automatically are passed to the transformer process.

appServer.scheme

appServer.host

appServer.port

appServer.contextPath

appServer.URL

Page 59: ENOVIAReportGenerator Admin

5.7 Creating Excel Reports To create a report that’s possible to open with Microsoft Excel™, this can be done in two different ways:

Using SpreadSheetML.

Using a Custom report and produce native Excel through the POI API.

5.7.1 SpreadsheetML

SpreadsheetML is an XML format accepted by Microsoft Excel 2003 and later.

When producing reports following this standard, you need to specify the following on the report definition:

Attribute Value / Description Additional Notes RPT Stylesheet Name of a stylesheet that converts the XML into

SpreadsheetML XML

RPT Output Format XML This will instruct the RPT framework that your output will be XML and the conversion is done through an XSLT transformation.

RPT Displayed Output Format

Excel This value is displayed for the end user.

RPT Conversion Properties file.suffix=xml file.contentType=application/vnd.ms-excel

These properties are used when downloading the report.

Below are some useful references that describe the SpreadsheetML format deeper:

http://msdn.microsoft.com/en-us/library/bb226687%28v=office.11%29.aspx

http://msdn.microsoft.com/en-us/library/bb226693%28v=office.11%29.aspx

5.7.2 Custom Report using POI

POI is an open source library provided by the Apache organization for working with Microsoft Office files.

Through POI, you can for example create native Excel files.

POI is part of the TVC-Core library, which RPT depends upon. The POI classes are available within the

“com.technia.tvc.poi” package.

To create custom reports, see chapter 9.2.5.

To summarize, you need do the following:

1. Create a report definition of type “Custom Report”. Example:

import com.technia.tvc.reportgenerator.DataExtractor;

import com.technia.tvc.reportgenerator.DataExtractorCtx;

import com.technia.tvc.reportgenerator.impl.CustomReport;

import com.technia.tvc.poi.hssf.usermodel.HSSFCell;

import com.technia.tvc.poi.hssf.usermodel.HSSFRow;

import com.technia.tvc.poi.hssf.usermodel.HSSFSheet;

import com.technia.tvc.poi.hssf.usermodel.HSSFWorkbook;

import java.io.IOException;

Page 60: ENOVIAReportGenerator Admin

public class ExampleWithPOI extends CustomReport implements DataExtractor {

private static final long serialVersionUID = 1L;

public void extract(DataExtractorCtx ctx) throws IOException {

HSSFWorkbook workbook = new HSSFWorkbook();

HSSFSheet sheet = workbook.createSheet();

for (int rowNo = 0; rowNo < 10; rowNo++) {

HSSFRow row = sheet.createRow(rowNo);

for (int colNo = 0; colNo < 10; colNo++) {

HSSFCell cell = row.createCell(colNo);

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

cell.setCellValue(String.format("%d : %d", rowNo, colNo));

}

}

workbook.write(ctx.getOutputStream());

}

@Override

public DataExtractor getDataExtractor() {

return this;

}

}

2. Define some properties within the Conversion Properties attribute:

file.suffix=xls

file.contentType=application/vnd.ms-excel

Example report in XML:

<CustomReport>

<Name>Excel Report Example</Name>

<Description></Description>

<Global>true</Global>

<Class>com.acme.rpt.ExampleWithPOI</Class>

<DisplayedOutputFormat>Excel</DisplayedOutputFormat>

<Settings>

<Setting name="file.on.demand" value="true"/>

<Setting name="file.suffix" value="xls"/>

<Setting name="file.contentType" value="application/vnd.ms-excel"/>

</Settings>

</CustomReport>

Page 61: ENOVIAReportGenerator Admin

6 Distributing the Report Creation Creating a report is typically a resource demanding task in terms of memory use and CPU usage, this

because a report typically extracts large amount of data and uses XSLT transformation to convert XML. Even

though the internals of the report generator has been implemented in a very efficient way, there will always

be a cost in terms of performance to create reports. The report generator has a solution to this, by providing

support for distributed creation of reports through use of so called Agents. The agents can be distributed

across several computers in the network.

Within the ENOVIA database, you can create business objects of type “RPT Queue”.

A report can be associated with a particular queue, by setting the “queue.name” property within the “RPT

Conversion Properties” attribute to the name of the “RPT Queue” object. Example:

queue.name = Queue 1

This would correspond to the business object of type “RPT Queue” with name “Queue 1” and having the

revision set to empty. The object must be created inside the “TVC Administration” vault.

Whenever a report is created, and the “queue.name” property is defined, a job object will be created and

connected to the queue object.

Each queue that is in use needs a so called Agent, which is a separate process that is polling the queue for

new jobs. It is possible to have several Agents attached to the same queue; however, one queue agent can

only be attached to one queue. This is also illustrated in the picture below.

Computer B

Computer A

RPT Queue

Queue1

RPT Queue

Queue2

Agent 1 Agent 2 Agent 3 Agent 4

Page 62: ENOVIAReportGenerator Admin

6.1 Data Model Within the database, objects of type RPT Queue represent the queues. The information required to create a

report is stored inside an object of type “RPT Job”. Job objects are connected to a queue with the

relationship “RPT Job”.

The Agents can also be represented in the database as objects (this is not required though). Within the start

script of an agent, you can define an identifier for the agent and if present an agent object will also be

created inside the database. The job object will in such case also be connected to the Agent that is

processing the job.

To summarize, the data model around this looks like:

The relationship between the Queue and Job and between the Agent and Job is called “RPT Job”. The

connection between the Agent and Queue is called “RPT Agent”. Neither of these relationship types has any

attributes.

6.1.1 Attributes

The table below illustrates the attributes being used.

Business Type Attribute Name Purpose RPT Agent RPT Agent Last Alive A time stamp indicating the time when the agent last was processing a

job.

RPT Agent Startup The time stamp when the agent were started up

RPT Agent Stop Request A Boolean attribute that can be set to instruct the Agent to terminate when all ongoing jobs has been completed.

RPT Queue RPT Keep Jobs A Boolean value indicating if the jobs should be deleted or not. Setting this attribute to true allows accessing the generated reports after completion. The user can from the user interface see his/her created reports and download them for example.

RPT Keep Time A string indicating how long time a job is/should be kept after completion. The value of this attribute is a string, and the format is: ([0-9]*[wdhms])* Examples:

RPT

Queue

RPT Agent

RPT Job

Page 63: ENOVIAReportGenerator Admin

1d 10h 10m 5h 30m Scripts are available for cleaning up jobs that are older than the configured keep time. Such script can be setup to be ran periodically. Note: This attribute has no effect unless the “RPT Keep Jobs” has been set to true.

RPT Job RPT Job Status Contains a string used to track the status of a completed job. This attribute is used internally by the report generator and should not be manipulated.

RPT Job Info Contains a string that is used to identify the job. The value is populated based upon the conversion property “jobInfoMacro”.

RPT Cancel Requested A boolean value that indicates that the job should be cancelled. E.g. when the agent takes this job, the job is immediately cancelled.

6.1.2 Lifecycles

The types Queue, Agent and Job have its own policies. These are described in the table below:

Business Type Policy States Description RPT Queue RPT Queue Exists N/A

RPT Agent RPT Agent Exists N/A

RPT Job RPT Job Created Initial state.

Waiting When the job is connected to a queue, the job is promoted to this state. The job is cancellable in this state.

In Work When an agent starts processing a job, the job is promoted to this state.

Done When the job has been completed, this state is reached. If the report failed or was cancelled, this is indicated within the RPT Job Status attribute on the job object. In case of success, the job object will also hold the generated report.

Page 64: ENOVIAReportGenerator Admin

6.2 The Queue Agent The queue agent is a Java application connected to the ENOVIA/Matrix database. To start an agent one will

use the provided start scripts (Windows and UNIX shell scripts available) with some modifications. The

modifications required are defined in the sub chapters below.

6.2.1 Queue Agent Start Script

When the report generator is installed, you will have a folder under the WEB-INF directory in the

web-application called “reportgenerator”. This folder contains a Windows start script and a UNIX start

script. These scripts are called:

QueueAgent.sh

QueueAgent.bat

The script has been made as generic as possible and to use it, you will typically invoke the script with the

following arguments:

Argument Description

1 The name of the queue to bind to.

This will set the variable QUEUE_NAME.

2 The name of the agent. This will set the AGENT_ID variable.

3 The action to perform. Any of:

run

start

status

stop

stopagent

validate

cleanup

These actions are described in chapter 6.2.3

Note however that you need to modify the script slightly in order to get it working in your environment

correctly. This is described in the next chapter (6.2.2).

Page 65: ENOVIAReportGenerator Admin

6.2.2 Required Script Changes

The first things you need to modify within these scripts are the following variables:

Variable Name Description WEBAPP_ROOT_DIR Points out where your web application is installed. This is needed as we load the JAR files and

other resources dynamically from this directory. The value can be a relative or absolute path. Since the scripts are located under ${ROOT_DIR}/WEB-INF/reportgenerator, the default value for this is: “../..” If you place the script somewhere else, you must change this variable.

CONTEXT_HOST Specifies how to connect to ENOVIA/Matrix. If you use RIP mode, this variable is empty, while if RMI mode is used this variable will point out a RMI server. Example: CONTEXT_HOST= CONTEXT_HOST=rmi://server:1099 NOTE: If you connect in RIP mode, you must ensure that some additional ENV variables are set. For example the PATH and on UNIX the LD_LIBRARY_PATH among others. In the UNIX script, you can use the MX_ENV_SCRIPT variable to point out an existing mxEnv.sh script that will setup the environment correctly.

Example:

SET WEBAPP_ROOT_DIR=d:\apps\apache-tomcat-6.0.29\webapps\enovia

SET CONTEXT_HOST=rmi://127.0.0.1:1099

If you are running in RIP mode, you will need some additional Matrix related settings also in the script.

However, it is out-of-scope in this document to describe the Matrix details.

On UNIX you can modify the MX_ENV_SCRIPT variable to point to a valid mxEnv.sh script.

6.2.2.1 Java Home

In the Windows start script, it is assumed that the JAVA_HOME variable is set. If not, this has to be set

before invoking the script. For UNIX, you need to modify the script and define the JAVA home.

6.2.2.2 Defining the Number of concurrent Threads

Each queue agent can run X number of concurrent threads. Default this is set to 5. If needed, this value can

be changed. Keep in mind that increasing the value requires more resources, like heap size etc. If the

number of threads is too high, consider adding a new queue agent process.

The number of threads is specified by the parameter: THREADS.

Page 66: ENOVIAReportGenerator Admin

6.2.3 Agent Actions

The available values for the action argument provided to the script are defined in the table below:

Action Description

run Windows: Starts the agent in the same window

UNIX: Starts the agent in the foreground

start Windows: Starts the agent in a new window

UNIX: Starts the agent in the background

status Prints out some statistics for the queue such as how many jobs are waiting.

stopall Requests all agents connected to the queue to stop.

validate Validates how many and what jobs that can be deleted through the cleanup

cleanup Cleans up old jobs that are older than configured keep-time

Page 67: ENOVIAReportGenerator Admin

6.3 Queue/Job Administration If you have configured your queues to keep the jobs, you can use enable a command in the user interface

allowing administrators to manage and inspect the jobs in the queues.

The URL to the admin console should be:

${ROOT_DIR}/tvc-action/rgAdminConsole

This URL can only be accessed by a person having either system or business privileges or having the role

Administration Manager. Once this interface is shown, you will see something like:

Figure 5, Administration of Jobs

This page gives a tab for each queue, and each tab shows information about a queue such as some statistics

and information about attached agents as well as all jobs related to a queue.

Through the list of jobs, you can inspect the jobs and depending on the status of a job, you can for example

download the generated report, cancel a report that has not been started and delete a completed job.

Also, the administrator can request all agents to terminate (they will then terminate when all ongoing jobs

are completed). Additionally, the administrator can run the clean up, e.g. delete all completed jobs that are

older than the configured keep time.

Page 68: ENOVIAReportGenerator Admin

6.4 Allowing a User to Access Jobs If you have configured your queues to keep the jobs, you can use enable a command in the user interface

allowing the users to access jobs that he/she has created. This in order to be able to download reports that

has been created in the past time.

The URL to the user job console should be:

${ROOT_DIR}/tvc-action/rgUserConsole

When this page is opened, the user will see a table containing the jobs like shown below:

Figure 6, User jobs

From this page, the user can download reports that have been created or request jobs not yet being

processed for cancellation.

Page 69: ENOVIAReportGenerator Admin

7 Images Some of the reports allow you to embed images, for example PDF reports. An image can be taken from the

web application, or it could be an image checked into a businessobject. It is also possible to embed a

business type image, or a business object image.

7.1 Images Loaded From the Database Following example illustrates how to include an image, taken from a businessobject image.

<fo:external-graphic border-width="0">

<xsl:attribute name="src">

url('matrix://busimage/<xsl:value-of select="@oid"/>')

</xsl:attribute>

</fo:external-graphic>

Following example illustrates how to include an image, taken from the business type.

<fo:external-graphic border-width="0">

<xsl:attribute name="src">

url('matrix://typeimage/<xsl:value-of select="@type"/>')

</xsl:attribute>

</fo:external-graphic>

Following example illustrates how to include an image, taken from a checked in file.

<fo:external-graphic border-width="0">

<xsl:attribute name="src">

url('matrix://busfile/<xsl:value-of select=‖@oid‖/>/format/filename')

</xsl:attribute>

</fo:external-graphic>

NOTE: The images retrieved are cached within the Apache FOP layer. If the images on a business object

changes over time, you need to force FOP to not use the cached image and always load the image from the

DB. This can be done by adding a dummy parameter to the URL. Below is one example how to do so:

<fo:block xmlns:java="http://xml.apache.org/xslt/java">

<fo:external-graphic border-width="0">

<xsl:attribute name="src">

url('matrix://busfile/oid/format/filename?foo=<xsl:value-of

select="java:java.lang.System.currentTimeMillis()"/>');

</xsl:attribute>

</fo:external-graphic>

</fo:block>

Another option, which is better, would be to add the modified timestamp from the business object as a

parameter on the URL instead of the current time.

7.2 Images from the Web Application It is also possible to refer to an image from the web-application. The following example illustrates how to

accomplish this:

Page 70: ENOVIAReportGenerator Admin

<fo:external-graphic border-width="0">

<xsl:attribute name="src">

url('tvc/core/images/tvc_logo_small.gif')

</xsl:attribute>

</fo:external-graphic>

NOTE: If you add images to your application, don't add them under the "tvc" folder. Instead, add them to

your own subfolder.

Page 71: ENOVIAReportGenerator Admin

7.3 Charts An alternative to creating charts within the reports by using SVG is to use the chart feature within RPT.

To include a chart in a PDF report, you can use the following construct within the stylesheets to accomplish

this:

<fo:block>

<fo:external-graphic border-width="0" content-width="15cm">

<xsl:attribute name="src">

matrix://chart/test/EBOMStatus.xml?objectId=<xsl:value-of

select="/report/meta-data/basic[@key='id']"/>

</xsl:attribute>

</fo:external-graphic>

</fo:block>

In this example, we are referring to an XML file located at “/WEB-INF/tvc/test/chartconfig/EBOMStatus.xml”

of your web-application.

The URL that is constructed should start with "matrix://chart/${NAME_OF_CONFIG}?{PARAMS}"

The ${NAME_OF_CONFIG} is the name of the chart configuration to be used.

The ${PARAMS} are arbitrary parameters that you need to pass to the chart in order to be able to produce

an image. Typically, you need to pass the object-id.

Below is an example of an included chart within a PDF document.

7.3.1 Chart Definition

The chart definition is an XML file describing the Chart. Below is an example that illustrates how to define a

chart.

<Chart>

<ChartType>BAR</ChartType>

<Columns>

<Column>Name</Column>

<Column>Weight</Column>

</Columns>

<DataProvider>inquiry:tvc:inquiry:tvx:enc/Heaviest10Parts.xml</DataProvider>

<TableName>tvc:table:tvx:enc/PartInfo.xml</TableName>

<Title>Default title</Title>

<Title locale="sv">Localized title</Title>

<XaxisTitle>Default x-axis title</XaxisTitle>

<XaxisTitle locale="sv">Localized x-axis title</XaxisTitle>

<YaxisTitle>Default y-axis title</YaxisTitle>

<YaxisTitle locale="sv">Localized y-axis title</YaxisTitle>

<Width>800</Width>

<Height>400</Height>

<Render3D>false</Render3D>

<ShowLegend>false</ShowLegend>

<ShowPercent>false</ShowPercent>

<ShowNumberLabel>true</ShowNumberLabel>

<ShowNameLabel>true</ShowNameLabel>

<CountOccurrences>false</CountOccurrences>

<BaseColor>rgb(55, 85, 15)</BaseColor>

Page 72: ENOVIAReportGenerator Admin

<ChartColors>

<Color>rgb(76, 164, 173)</Color>

<Color>rgb(131, 224, 235)</Color>

<Color>rgb(123, 143, 186)</Color>

<Color>rgb(83, 99, 150)</Color>

<Color>rgb(91, 56, 140)</Color>

</ChartColors>

</Chart>

7.3.2 Child elements of Chart

Element Name Description Mandatory

Values

ChartType The type of chart to be displayed Yes See chapter 7.3.3

Columns List of column names with one or more “<Column>” elements.

Yes

Any names that is available in the custom java class or in the Structure Browser if the chart is created from a structure browser.

DataProvider The data provider (see chapter 7.3.4) Yes See chapter 7.3.4

TableName Name of the table to apply on the data from the Inquiry.

Yes, if an Inquiry is used.

Table name.

Title The chart title text No Chart title text. Can be localized using the attribute “locale”.

XaxisTitle Title text for the X axis No X axis title text. Can be localized using the attribute “locale”.

YaxisTitle Title text for the Y axis No Y axis title text. Can be localized using the attribute “locale”.

Width Sets the width of the chart. No Numeric value. Default is 600.

Height Sets the height of the chart. No Numeric value. Default is 600.

CountOccurrences

If set to true the Y axis will show the number of occurrences of each value of the supplied column. If false the Y axis will show each value of the column which then must contain a numerical value.

No True/false. True is default.

Render3D Determines whether the chart is shown in 3D. Exceptions listed in 7.3.3 below.

No True/false. False is default.

ShowLegend Determines whether the legend is shown. Exceptions listed in 7.3.3 below.

No True/false. False is default.

ShowPercent Determines whether the percent value is shown. Exceptions listed in 7.3.3 below.

No True/false. False is default.

ShowNumberLabel Determines whether a label with the value number is shown. Exceptions listed in 7.3.3 below.

No True/false. False is default.

ShowNameLabel Determines whether a label with the name of the data series is shown. Onlya available for Chart type Bar and Stacked_Bar.

No True/false. False is default.

BaseColor

Used to set the base color of the chart. The given color is the darkest used, together with the required number of lighter shades of the same color. If “ChartColors” are supplied, “BaseColor” is not used.

No Text containing an rgb value on the format “rgb(rVal, gVal, bVal)”. Default is a shade of blue.

ChartColors List of colors with one or more “<ChartColor>” elements. If not enough colors are in the list, they will be reused.

No Ex: <ChartColor>rgb(45, 65, 185)</ChartColor>

Page 73: ENOVIAReportGenerator Admin

7.3.3 Chart types

Here is a brief description of which settings are available for tweaking your charts, per chart type.

7.3.3.1 Pie Chart

ChartType id “PIE”.

Needs one column with input data.

Labels are always visible.

“ShowPercent”, “ShowLegend” and “Render3D” are available.

7.3.3.2 Multiple Pie Chart

Type id “MULTIPLE_PIE”.

Needs two columns with input data.

Labels are always visible.

“ShowPercent”, “ShowLegend” and “Render3D” are available.

7.3.3.3 Ring Chart

Type id “RING”.

Needs one column with input data.

Labels are always visible.

“ShowPercent” is available.

“Render3D” and “ShowLegend” are unavailable.

7.3.3.4 Bar Chart

Type id “BAR”

Needs one or two columns with input data

“Render3D” and “ShowLegend” are available

“ShowPercent” is unavailable

7.3.3.5 Stacked Bar Chart

Type id “STACKED_BAR”

Needs two columns with input data

“Render3D” and “ShowLegend” are available

“ShowPercent” is unavailable

7.3.3.6 Area Chart

Type id “AREA”

Needs two columns with input data

“ShowLegend” is available

“ShowPercent” and “Render3D” are unavailable

7.3.3.7 Stacked Area Chart

Type id “STACKED_AREA”

Needs two columns with input data

“ShowLegend” is available

“ShowPercent” and “Render3D” are unavailable

Page 74: ENOVIAReportGenerator Admin

7.3.3.8 Timeline Chart

Type id “TIMELINE”

Needs one, two or three columns o Column 1 – must be a date, which is mapped to the X axis. o Column 2 – if “CountOccurrences” is set to true then this will the category column. If

“CountOccurrences” is set to false then this column will be used as a numeric value mapped to the Y axis. If two objects have the same date those values will be accumulated.

o Column 3 – this is the category column when “CountOccurrences” is set to false.

“ShowLegend” is available

“ShowPercent” and “Render3D” are unavailable

7.3.3.9 Bubble Chart

Type id “BUBBLE”

Needs four columns with input data and can take one optional fifth column. They are used in top-down order as follows

o Column 1 is the x-axis o Column 2 is the y-axis o Column 3 is the size of the bubbles o Column 4 is the color of the bubbles o Column 5 is optional and defines the data for the labels on the bubbles

“ShowPercent” and “Render3D” are unavailable

“ShowLegend” cannot be turned off

7.3.4 Data Provider

The data provider element defines how the data that drives the chart is being loaded. Depending on how

the data is being loaded, the format of the data provider value is different. The purpose of a dataloader is to

provide the objects (and optionally connections) that is being a part of the chart.

The list below illustrates the different data providers that are supported, and the format:

Type Example Description

Inquiry <DataProvider> inquiry:The Name Of The Inquiry </DataProvider>

Will use the specified inquiry to load the data.

JPO

<DataProvider> jpo:NameOfJPO:methodToBeCalled </DataProvider>

Will use the specified JPO/method to load the data.

Page 75: ENOVIAReportGenerator Admin

8 Fonts When creating PDF reports that contains for example Asian characters you might need to configure the

Apache FOP system to find proper fonts that contains glyphs for those characters.

As mentioned in earlier chapter, the report generator contains two different version of Apache FOP: 0.20.5

and 1.0. The font handling in the latter version has been improved a lot compared to earlier versions. This

version should preferably be used.

The sub chapters below contain information how to define custom fonts for the different FOP versions.

NOTE: In your stylesheet, you need to refer to the fonts that contain the proper glyphs.

Example:

<xsl:attribute-set name="tableCell">

<xsl:attribute name="font-family">MSMincho</xsl:attribute>

...

</xsl:attribute-set>

...

<fo:table-cell xsl:use-attribute-sets="tableCell">

<fo:block>

...

</fo:block>

</fo:table-cell>

8.1 FOP 0.20.5 Create a file called “FOPConfig-0.20.5.xml” within the folder:

/WEB-INF/classes/com/technia/tvc/reportgenerator/fop

To register custom fonts, add them into the file created according to the example below:

<configuration>

<fonts>

<!-- example -->

<!--

<font metrics-file="arial.xml" kerning="yes" embed-file="arial.ttf">

<font-triplet name="Arial" style="normal" weight="normal"/>

<font-triplet name="ArialMT" style="normal" weight="normal"/>

</font>

<font metrics-file="arialb.xml" kerning="yes" embed-file="arialb.ttf">

<font-triplet name="Arial" style="normal" weight="bold"/>

<font-triplet name="ArialMT" style="normal" weight="bold"/>

</font>

<font metrics-file="ariali.xml" kerning="yes" embed-file="ariali.ttf">

<font-triplet name="Arial" style="italic" weight="normal"/>

<font-triplet name="ArialMT" style="italic" weight="normal"/>

</font>

<font metrics-file="arialbi.xml" kerning="yes" embed-file="arialbi.ttf">

<font-triplet name="Arial" style="italic" weight="bold"/>

<font-triplet name="ArialMT" style="italic" weight="bold"/>

</font>

-->

Page 76: ENOVIAReportGenerator Admin

<!-- Example Japanese fonts

<font metrics-file="msgothic.xml" embed-file="D:\winnt\font\msgothic.ttc" kerning="yes">

<font-triplet name="Gothic" style="normal" weight="normal"/>

<font-triplet name="Gothic" style="normal" weight="bold"/>

<font-triplet name="Gothic" style="italic" weight="normal"/>

<font-triplet name="Gothic" style="italic" weight="bold"/>

</font>

<font metrics-file="msmincho.xml" embed-file="Cyberbit.ttf" kerning="yes">

<font-triplet name="Mincho" style="normal" weight="normal"/>

<font-triplet name="Mincho" style="normal" weight="bold"/>

<font-triplet name="Mincho" style="italic" weight="normal"/>

<font-triplet name="Mincho" style="italic" weight="bold"/>

</font>

-->

</fonts>

</configuration>

NOTE 1: The metrics-file must be created from the TTF file using the below command: (example below)

java -cp enoviareportgenerator.jar com.technia.tvc.fop0205.fonts.apps.TTFReader [options]

C:\myfonts\cmr10.ttf ttfcm.xml

Where the [options] are:

-fn <fontname> By default, FOP uses the fontname from the .pfm file when embedding the

font. Use the "-fn" option to override this name with one you have chosen.

This may be useful in some cases to ensure that applications using the

output document (Acrobat Reader for example) use the embedded font

instead of a local font with the same name.

-ttcname <fontname> If you're reading data from a TrueType Collection (.ttc file) you must specify

which font from the collection you will read metrics from. If you read from

a .ttc file without this option, the fontnames will be listed for you.

-enc ansi Creates a WinAnsi-encoded font metrics file. Without this option, a

CID-keyed font metrics file is created. The table below summarizes the

differences between these two encoding options as currently used within

FOP. Please note that this information only applies to TrueType fonts and

TrueType collections:

NOTE 2: The metrics files are located relative to the root of the application.

NOTE 3: Some additional info on this topic can be read from this resource:

http://www.firebirdsql.org/manual/fontembed-fop-userconfig.html

Page 77: ENOVIAReportGenerator Admin

8.2 FOP 1.0 As of FOP 1.0, the fonts available in the operating system on the server where the report generator is

running will be registered automatically.

If you need to register a new font, do as described below:

1) Create a file called FOPConfig.xml within the folder:

/WEB-INF/classes/com/technia/tvc/reportgenerator/fop

2) The default file that is part of the envoiareportgenerator.jar looks like below:

<fop version="1.0">

<strict-configuration>false</strict-configuration>

<strict-validation>false</strict-validation>

<source-resolution>72</source-resolution>

<target-resolution>72</target-resolution>

<use-cache>true</use-cache>

<renderers>

<renderer mime="application/pdf">

<fonts>

<auto-detect/>

</fonts>

</renderer>

</renderers>

</fop>

Modify this file according to the descriptions found at this URL:

http://xmlgraphics.apache.org/fop/1.0/fonts.html

Page 78: ENOVIAReportGenerator Admin

9 Extended Configuration Possibilities

9.1 Webform as Pre Process Page Support for using a webform as pre-process page is possible. To use a webform as pre process page, you

simple define the “RPT PreProcess Page” attribute as below:

webform:name of webform

When this syntax is used, the pre process page will be generated by the

“/common/emxFormEditDisplay.jsp” page.

NOTE: Using a “webform” as pre process page can only be used for non-global reports. E.g. an object-id

must be available (this is a limitation of the web-form framework).

9.2 Custom Pre Processing Pages There is a possibility to have a pre-process page that is executed before the report is being created. Such

page could be used to have more interaction with the user, for example defining runtime parameters that

impact the report layout and/or content.

In the attribute “RPT PreProcess Page”, you define the context-relative URL for the page to use.

Context-relative means that you should skip the web-application name, for example if the web-application is

called ematrix and your custom pre-process page is under /ematrix/custom/preprocess1.jsp – then the

attribute should contain following: /custom/preprocess1.jsp.

Since the pre-processing page is a JSP page, almost any logic may be done on this page. But, typically the

general idea with this page is to allow:

Overriding settings in the Report Definition instance

Defining custom transformer properties

9.2.1 Submitting Parameters

The request parameters that are submitted from the pre-process page must have one of three different

prefixes, in order for the report generator to know how to handle them. These prefixes are:

Parameter Prefix Description

convProps. May be used to submit a parameter that typically is defined within the “RPT

Conversion Properties” attribute.

Example: convProps.file.on.demand=true

convProps.mail.enabled=false

runtime. May be used to submit a parameter that overrides an attribute that is defined on the

Report Definition instance. The attribute that is being overridden should be referred

Page 79: ENOVIAReportGenerator Admin

to with its symbolic name.

Example: runtime.attribute_RPTExpansionLevel=4

transformer. Defines a parameter that is passed to the stylesheet during conversion.

Example: transformer.pageSize=A4

Page 80: ENOVIAReportGenerator Admin

9.2.2 Submit Action

The URL used to start the report creation from a pre-process page is generated by using following JSP

custom tag:

<%@ taglib uri=‖/WEB-INF/tvc-reportgenerator.tld‖ prefix=‖rg‖ %>

<form action="<rg:writePreProcessPageSubmitAction/>"

9.2.3 Selecting Columns

The definition types “RPT Expansion Report” and “RPT Inquiry Report” are both using the “RPT System

Table” to define a table. Sometimes it is useful to allow the user to select columns to be included in the

table. Following JSP code does this:

<%@ include file="/tvc/core/tvcSetContentType.jspf" %>

<%@ taglib uri="/WEB-INF/tvc-core.tld" prefix="core" %>

<%@ taglib uri="/WEB-INF/tvc-reportgenerator.tld" prefix="rg" %>

<core:checkLogon/>

<core:noCache/>

<rg:report id="report"/>

<html>

<head></head>

<body>

<form action="<rg:writePreProcessPageSubmitAction/>" method="post">

<rg:hasTableColumns name="report">

<table border="0" cellspacing="2" cellpadding="3">

<tr>

<td class="label" nowrap width=100>Select Columns</td>

<td class="inputField" nowrap>

<rg:tableColumnChooser name="report"/>

</td>

</tr>

</table>

</rg:hasTableColumns>

</form>

</body>

</html>

Page 81: ENOVIAReportGenerator Admin

9.2.4 Selecting Sections

The definition type “RPT Advanced Report” is built up by sections. The user can select sections that should

be included / excluded from the report. Following JSP code does this:

<%@ include file="/tvc/core/tvcSetContentType.jspf" %>

<%@ taglib uri="/WEB-INF/tvc-core.tld" prefix="core" %>

<%@ taglib uri="/WEB-INF/tvc-reportgenerator.tld" prefix="rg" %>

<core:checkLogon/>

<core:noCache/>

<rg:report id="report"/>

<html>

<head></head>

<body>

<form action="<rg:writePreProcessPageSubmitAction/>" method="post">

<rg:hasSection name="report">

<table border="0" cellspacing="2" cellpadding="3">

<tr>

<td class="label" nowrap width=100>Select Columns</td>

<td class="inputField" nowrap>

<rg:sectionChooser name="report"/>

</td>

</tr>

</table>

</rg:hasSection>

</form>

</body>

</html>

9.2.5 Printer Selection

A pre process page example showing how to add a printer selector is shown below. The bold marked

sections show the related code for the printer selector. Everything else is just there for illustration purposes

on how to create a complete working example.

<%@ include file="/tvc/core/tvcSetContentType.jspf" %>

<%@ taglib uri="/WEB-INF/tvc-core.tld" prefix="core" %>

<%@ taglib uri="/WEB-INF/tvc-struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/tvc-reportgenerator.tld" prefix="rg" %>

<%@ taglib uri="/WEB-INF/tvc-reportgenerator-outputhandler.tld" prefix="oh" %>

<core:checkLogon />

<core:noCache />

<html>

<head>

<core:tvcBase/>

<core:themeArtifact id="tvc-form"/>

<script type="text/javascript"

src="reportgenerator/js/tvcPreProcessPageScripts.js">

</script>

<oh:printerSelector disposition="head"/>

<script type="text/javascript">

tvcSetSubmitFunction(doSubmitForm);

function doSubmitForm() {

var printers = getSelectedPrinters();

if (printers == null) {

parent.frames["createBottom"].private_tvcSetContinueEnabled(true);

alert("Please select a printer");

} else {

document.forms[0].elements["convProps.print.printers"].value =

Page 82: ENOVIAReportGenerator Admin

printers.join(",");

document.forms[0].submit();

}

}

</script>

</head>

<body>

<form action="<rg:writePreProcessPageSubmitAction/>" method="post"

style="margin:0px;padding:0px;">

<input type="hidden" name="convProps.print.printers" />

<table border="0" width="99%">

<tr>

<td class="label" nowrap width=100>Select Printer</td>

</tr>

<tr>

<td class="inputField" nowrap>

<oh:printerSelector disposition="content"/>

</td>

</tr>

</table>

</form>

</body>

</html>

9.3 Implementing a Custom (Java Based) Report The Java class you create must be derived from the abstract class

"com.technia.tvc.reportgenerator.impl.CustomReport".

The minimum requirements your class must satisfy are:

a) Implement the method "getDataExtractor". See the skeleton code below.

b) The class must be serializable. E.g. all instance fields must be serializable and you must define a

"serialVersionUID".

public class MyReport extends CustomReport {

private static final long serialVersionUID = 1L;

public DataExtractor getDataExtractor() {

return theDataExtractor;

}

}

Page 83: ENOVIAReportGenerator Admin

Typically, the class itself implements the "DataExtractor" interface, like in the example below:

public class MyReport extends CustomReport implements DataExtractor {

private static final long serialVersionUID = 1L;

public DataExtractor getDataExtractor() {

return this;

}

public void extract(DataExtractorCtx ctx) throws TVCException, IOException {

/*

* Implement data extraction here!

*/

}

}

If the data you extract needs to be converted, for example converting XML, you can let your class implement

the Converter interface. See skeleton code below:

public class MyReport extends CustomReport implements DataExtractor, Converter {

private static final long serialVersionUID = 1L;

public DataExtractor getDataExtractor() {

return this;

}

public void extract(DataExtractorCtx ctx) throws TVCException, IOException {

/*

* Implement data extraction here!

*/

}

public Converter getConverter() {

/*

* If the data uses a converter, return it here.

* If not; simply return null.

*/

return this;

}

public void convert(ConverterCtx ctx) throws IOException {

/*

* Convert logic goes here.

*/

}

}

9.4 Implement a Custom Output Handler An output handler is used to deliver/transfer the generated report to some place. The report generator

includes a couple of pre-defined output handlers that can be used to send the report via mail, upload to an

FTP server, check-in etc. You can also create and plugin custom output handlers.

An output handler is registered within the page object called "RPT Settings" in the database. An example

how-to register a new output handler is shown below:

outputHandler.test = com.acme.report.outputhandler.MyOutputHandler

Page 84: ENOVIAReportGenerator Admin

This will allow you to refer to the output handler called "test" in your report definitions.

9.4.1 Implementation

The interface an output handler must implement looks like below:

public interface OutputHandler extends Serializable {

void init(Report report);

boolean isEnabled();

void process(OutputHandlerCtx ctx) throws IOException, TVCException;

boolean isAbortOnError();

String getUIMessage();

}

The init method is called at an early phase, before the report is being created. This allows the output handler

to initialize it-self properly.

The "isEnabled()" method can be used to, at runtime, decide if the output handler will be executed or not.

It is inside the process method where all happens. Through the OutputHandlerCtx instance, you have access

to the report instance + the generated file.

The "isAbortOnError()" method defines if the report should be aborted if any error occurs during the process

phase – or if this could be ignored.

The "getUIMessage()" method returns a nicely formatted message to be presented for the user.

9.5 Implement a Custom Post Processor A post processor can be used to modify the generated report. An example of this could be to apply security

constraints to the generated PDF file, or compress the generated report with some compression tool like ZIP

etc.

A post processor is registered within the page object called "RPT Settings" in the database. An example

how-to register a new output handler is shown below:

postProcessor.test = com.acme.report.postprocess.MyPostProcessor

This will allow you to refer to the post processor called "test" in your report definitions.

9.5.1 Implementation

The interface a post processor must implement looks like below:

public interface PostProcessor extends Serializable {

void init(Report report);

boolean isEnabled();

void process(PostProcessorCtx ctx) throws IOException;

}

The init method is called at an early phase, before the report is being created. This allows the post processor

to initialize it-self properly.

Page 85: ENOVIAReportGenerator Admin

The "isEnabled()" method can be used to, at runtime, decide if to do the post processing or not. For

example, you might have a pre-process page that allows the user to decide if to perform the logic

implemented in the post processor.

It is inside the process method where all happens. Through the PostProcessorCtx instance, you have access

to the report instance + the generated file. You use the createOutputStream to get a new output stream,

which the new report is being written into. The data written to this output stream will become the new

report. For example in the ZIP post processor, the report is read through the input stream, then compressed

and the ZIPped data is written to the outputstream. Any additional post-processor in use afterwards, will get

ZIP data as input in the inputstream.

In case you want to cancel the post-processing and rollback the operation, you need to invoke the "rollback"

method on the PostProcessorCtx instance.

Page 86: ENOVIAReportGenerator Admin

10 XML Based Definitions It is possible to define most of the administrative objects and other configuration objects (business objects)

used by the ENOVIA Report Generator in XML. These XML files are kept under a special folder within the

web application (see chapter 10.1).

The administrative objects that can be defined in such XML files are: system tables, inquiries, stylesheets

(page object) and report definition objects.

The purpose of using XML based definitions is to reduce the implementation time needed to manage the

database objects and to simplify modifications of those objects. Ease of deployment is another benefit when

using the XML based configuration approach. The modifications to the database are kept to a minimum.

10.1 Using XML Based Resources

10.1.1 Supported Objects

The following list shows which of the administrative objects that could be represented in XML format.

System Table

Inquiry

Stylesheets (Page Objects)

Report Definitions:

a. RPT Expansion Report

b. RPT Inquiry Report

c. RPT Advanced Report

d. RPT Custom Report

e. RPT JPO Report

Page 87: ENOVIAReportGenerator Admin

10.1.2 Naming

When referring to an XML based definition, one has to follow a special naming convention in order to

recognize that the resource should not be loaded from the database.

10.1.2.1 Domains

It is also possible to have separate domains for the resources, for example resources belonging to one

domain of an application can be kept completely separate from another domain of an application.

You don’t have to use the domain concept, but it is recommended in the case when you have a large

amount of configurations belonging to different functionality around the application. It makes it easier to

manage the files. By using a domain, you will also ensure that there won't be any naming conflicts between

different configurations.

10.1.2.2 Accessing an XML Based Resource

The table below illustrates how to correctly write the name of an XML based resource.

Resource Type Name Prefix

Table tvc:table/MyTable.xml

Inquiry tvc:inquiry/MyInquiry.xml

Stylesheet tvc:stylesheet/MyStylesheet.xslt

RPT Report Definition:

- RPT Expansion Report

- RPT Inquiry Report

- RPT JPO Report

- RPT Custom Report

- RPT Advanced Report

tvc:report/MyReport.xml

When using domains, you have to apply the domain name after the resource type. For example:

tvc:report:mydomain/MyReport.xml

NOTE: It is not recommended to use a domain-name, which is used for to represent a resource type. For

example, you should not have a domain called "table", "report", "stylesheet" etc.

10.1.3 Location of the Resource Files

The resource files are stored in the web-application under the “/WEB-INF/tvc" folder.

Once an XML resource is requested, the name of the resource is translated into a path, which points to the

actual resource file. The list below shows the path for each resource type.

The translation of name to the actual file is:

Page 88: ENOVIAReportGenerator Admin

/WEB-INF/tvc/${RESOURCETYPE}/${FILENAME}

Below is a table showing some example of the translated paths.

Resource Type Location

Table /WEB-INF/tvc/table

Inquiry /WEB-INF/tvc/inquiry

Stylesheet /WEB-INF/tvc/stylesheet

Reports /WEB-INF/tvc/report

When the resource refers to a resource under a specific domain, the name is translated according to the

following rules:

/WEB-INF/tvc/${DOMAIN}/${RESOURCETYPE}/${FILENAME}

Below is a table showing some examples of paths translated

Resource Type Location

Table /WEB-INF/tvc/${DOMAIN}/table

Inquiry /WEB-INF/tvc/${DOMAIN}/inquiry

Stylesheet /WEB-INF/tvc/${DOMAIN}/stylesheet

Reports /WEB-INF/tvc/${DOMAIN}/report

Page 89: ENOVIAReportGenerator Admin

10.1.4 Reloading of XML based resources

When a resource file is changed, for example a table is updated; the resource will be reloaded automatically

(if the Report Generator is started in development mode)

If the Report Generator has been started in PRODUCTION mode, you will need to clear the TVC cache in

order to reflect the new changes. There is no need to restart the application server.

10.1.5 Working with Resources Stored on the Classpath

A resource can also be stored within the classpath (i.e. in a JAR file). To refer to such a resource, for example

under “/com/acme/resources/MyTable.xml", you have to write the name as:

tvc:table/com/acme/resources/MyTable.xml

If you want to override the definition of the resource found in the classpath, you can then create a new file

called MyTable.xml under the following directory:

/WEB-INF/tvc/table/com/acme/resources/MyTable.xml

The internal resource handler will first look into such a directory and check if the resource exists there

before retrieving it from the classpath.

10.2 Formats The chapters below will for each configuration object show how to format it in XML. The format is illustrated

by showing example, and in case when needed – the elements are described more detailed separately.

10.2.1 Tables

The example table below illustrates how to define an XML based table.

<?xml version="1.0" encoding="UTF-8"?>

<Table>

<DisplayName>Purchase Info</DisplayName>

<DisplayName locale="de"></DisplayName>

<Column>

<Expression>name</Expression>

<Label>PO</Label>

<Name>name</Name>

<Setting name="My Setting" value="The Value"/>

<Setting name="Another Setting" value="The Value"/>

</Column>

<Column>

<Expression>$&lt;to[relationship_PurchaseOrder].from.name]&gt;

</Expression>

<Label>Customer</Label>

<Name>customer</Name>

</Column>

<Column>

<Expression>originated</Expression>

<Label>Created</Label>

<Name>created</Name>

</Column>

Page 90: ENOVIAReportGenerator Admin

<Column usesBusinessObject="false">

<Expression>$&lt;attribute[attribute_NumberOfUsers]&gt;</Expression>

<Label>Nr of Users</Label>

<Name>status</Name>

</Column>

<Column>

<Expression>$&lt;attribute[attribute_Notes]&gt;</Expression>

<Label>Notes</Label>

<Name>status</Name>

</Column>

<Column>

<Label>Status</Label>

<Name>status</Name>

<Expression>current</Expression>

</Column>

</Table>

10.2.1.1 Apply on Relationships

By default, a column expression applies to the business object. If you want it to apply on the relationship,

use the attribute "usesBusinessObject" on the "<Column>" element.

<Column usesBusinessObject="false">

<Expression><![CDATA[$<attribute[attribute_NumberOfUsers]>]]></Expression>

<Label>Nr of Users</Label>

<Editable>true</Editable>

</Column>

10.2.1.2 Escaping Characters

When entering certain characters that is sensitive in XML documents, like "<", ">", "&" etc., these must be

escaped. There are two ways to do this:

<Expression>$&lt;attribute[attribute_Test]&gt;</Expression>

Or using the CDATA:

<Expression><![CDATA[$<attribute[attribute_Test]>]]></Expression>

You can choose either of these approaches.

10.2.1.3 Child Elements for Table

The table below shows the sub elements that are supported for a Table element.

Element Name Description Example

DisplayName Defines the displayed name of the table.

<DisplayName>My Table</DisplayName> <DisplayName locale="de">Meine Tabell</DisplayName>

Column Container element for the column definition

-

10.2.1.4 Child Elements for Column

The table below shows the sub elements that are supported within the column element.

Page 91: ENOVIAReportGenerator Admin

Element Name Description Example

AccessExpression Defines the setting "Access Expression"

<AccessExpression>policy == ‘Test’</AccessExpression>

AccessFunction Defines the setting "Access Function"

<AccessFunction>checkAccess</AccessFunction>

AccessMask Defines the setting "Access Mask"

<AccessMask>read</AccessMask>

AccessProgram Defines the setting "Access Program"

<AccessProgram>MyAccessProgram</AccessProgram>

AdminType Defines the setting "Admin Type"

<AdminType>Type</AdminType>

Alt

Defines the alternate message. The alternate message can be defined in multiple languages.

<Alt>Add</Alt> <Alt locale="sv">Lägg till</Label> <Alt localt="de">Addieren</Label>

AlternateOIDExpression Defines the setting "Alternate OID Expression"

<AlternateOIDExpression>from[EBOM].to.id</AlternateOIDExpression>

AlternateTypeExpression Defines the setting "Alternate Type Expression"

<AlternateTypeExpression>from[EBOM].to.type</AlternateTypeExpression>

AlwaysVisible

CalculateAverage CalculateMaximum CalculateMedian CalculateMinimum CalculateStandardDeviation CalculateSum CalculationDecimalPrecision

CellShowableExpression Defines the setting "Cell Showable Expression"

<CellShowableExpression>current != ‘Release’</CellShowableExpression>

ColumnType Defines the setting "Column Type"

<ColumnType>program</ColumnType>

DataHandlerClass Defines the setting "Data Handler Class"

<DataHandlerClass>my.package.MyDataHandler</DataHandlerClass>

Description

Defines the description of the column. The description can be defined in multiple languages.

<Description>The description</Description> <Description locale="de">…</Description>

Expression Defines the expression for the column

<Expression><![CDATA[$<attribute[attribute_Currency]></Expression> <Expression>name</Expression>

Page 92: ENOVIAReportGenerator Admin

Format Defines the setting "Format" <Format>integer</Format>

Function Defines the setting "Function"

<Function>myFunction</Function>

GroupHeader Defines the group header for a column.

<GroupHeader>The group header</GroupHeader> <GroupHeader locale="sv">Swedish value</GroupHeader>

Hidden Defines the setting "Hidden" <Hidden>false</Hidden>

Href Defines the Href setting <Href>${ROOT_DIR}/SomePage.jsp</Href>

Label Defines the label for column. The label can be defined in multiple languages.

<Label>Add</Label> <Label locale="sv">Lägg till</Label> <Label locale="de">Addieren</Label>

NoWrap Defines the setting "No Wrap"

<NoWrap>false</NoWrap>

PreserveOutput Defines the setting "Preserve Output"

<PreserveOutput>false</PreserveOutput>

Program Defines the setting "Program"

<Program>MyProgram</Program>

RegisteredSuite Defines the setting "Registered Suite"

<RegisteredSuite>Framework</RegisteredSuite>

Setting Defines a custom setting <Setting name="Name of Setting">Value</Setting>

Sortable Defines the setting "Sortable"

<Sortable>true</Sortable>

SortComparator Defines the setting "Sort Comparator"

<SortComparator>my.package.MyComparator</SortComparator>

SortDirection Defines the setting "Sort Direction"

<SortDirection> ascending </SortDirection>

SortOrder Defines the setting "Sort Order"

<SortOrder>1 </SortOrder>

SortType Defines the setting "Sort Type"

<SortType>numeric</SortType>

TextAlign Text Align <TextAlign>center</TextAlign>

User Adds a user (person, role or group) that has access to the command or menu.

<User name="Test Everything"/> <User name="role_GlobalUser"/>

UseRule Defines the setting "Use Rule"

<UseRule>true</UseRule>

Page 93: ENOVIAReportGenerator Admin

Visible Defines the setting "Visible" <Visible>true</Visible>

VisibleInFlatMode Defines the setting "Visible In Flat Mode"

<VisibleInFlatMode>true</VisibleInFlatMode>

VisibleInStructureMode Defines the setting "Visible In Structure Mode"

<VisibleInStructureMode>false</VisibleInStructureMode>

10.2.2 Inquiry

Below is an example of an inquiry defined in XML format.

<Inquiry>

<Code>expand bus ${ID} from rel "${REL}" select bus id select rel id dump |</Code>

<Format>${OID}</Format>

<Pattern>${LEVEL}|*|${DIRECTION}|*|*|*|${OID}|${RELID}</Pattern>

<Argument name="REL" value="relationship_EBOM"/>

</Inquiry>

10.2.3 Stylesheet

The format of a stylesheet is identical as when it is stored in a page object.

10.2.4 Reports

All reports contain a section that is common for all report types. This is shown below:

<Name>PDX</Name>

<Description>The description...</Description>

<Description locale="de">...</Description>

<Hidden>TRUE</Hidden>

<Global>FALSE</Global>

<Stylesheet>tvc:stylesheet:tvx:enc/PDXStylesheet.xslt</Stylesheet>

<Table>tvc:table:tvx:enc/PDXExport.xml</Table>

<OutputFormat>HTML</OutputFormat>

<!--<DisplayedOutputFormat>Html</DisplayedOutputFormat>-->

<FilterExpression>type.kindof[Part] == TRUE</FilterExpression>

<PreProcessPage>/my/PreProcessPage.jsp</PreProcessPage>

<Settings>

<Setting name="outputHandlers">mail,ftp</Settings>

<Setting name="fileOnDemand" value="false"/>

</Settings>

<TransformerProperties>

<Property name="pageSize" value="A4"/>

</TransformerProperties>

<!-- below: report type specific elements -->

Note: The root element for each report type is different.

10.2.5 RPT Expansion Report

<ExpansionReport>

<!-- Common elements -->

<RelationshipPattern>

<Relationship>relationship_EBOM</Relationship>

</RelationshipPattern>

<TypePattern>

Page 94: ENOVIAReportGenerator Admin

<Type>type_Part</Type>

</TypePattern>

<From>true</From>

<To>false</To>

<ExpandDepth>0</ExpandDepth>

<ObjectWhere>current == Release</ObjectWhere>

<RelationshipWhere>attribute[Find Number] != ''</RelationshipWhere>

<LoadRootInquiry>tvc:inquiry:tvx/MyInquiry.xml</LoadRootInquiry>

</ExpansionReport>

10.2.6 RPT Inquiry Report

<InquiryReport>

<!-- Common elements -->

<Inquiry>tvc:inquiry:tvx/MyInquiry.xml</Inquiry>

</InquiryReport>

10.2.7 RPT Advanced Report

<AdvancedReport>

<!-- Common elements -->

<Definition>

<DataSet id="ds1">...

<DataSet id="ds2">...

<Report>

<TableDataSection...>

</Report>

</Definition>

</AdvancedReport>

Note: The content within the "<Definition>" element is exactly the same as the content of the attribute "TVC

Data Extraction Definition". E.g. the specification for the format of the definition section is found within the

chapter 4.5.

10.2.8 RPT Custom Report

<CustomReport>

<!-- Common elements -->

<Class>com.acme.report.MyReport</Class>

</CustomReport>

Note: See chapter 9.2.5 for information how to implement a custom Java report.