ENOVIA Report Generator - Dassault Systèmes

95
ENOVIA Report Generator Administration Guide 3DEXPERIENCE R2016x

Transcript of ENOVIA Report Generator - Dassault Systèmes

Page 1: ENOVIA Report Generator - Dassault Systèmes

ENOVIA Report Generator Administration Guide

3DEXPERIENCE R2016x

Page 2: ENOVIA Report Generator - Dassault Systèmes

2

3DEXPERIENCE Platform is based on the V6 Architecture © 2007-2015 Dassault Systèmes.

This page specifies the patents, trademarks, copyrights, and restricted rights for the 3DEXPERIENCE Platform R2016x:

Patents

The 3DEXPERIENCE Platform R2016x is protected by one or more U.S. Patents number 5,615,321; 5,774,111; 5,844,562; 5,844,566;

5,920,491; 6,044,210; 6,233,351; 6,292,190; 6,360,357; 6,396,522; 6,396,522; 6,396,522; 6,459,441; 6,459,441; 6,459,441; 6,499,040;

6,499,040; 6,499,040; 6,545,680; 6,573,896; 6,573,896; 6,573,896; 6,597,382; 6,597,382; 6,597,382; 6,654,011; 6,654,027; 6,697,770;

6,717,597; 6,745,100; 6,762,778; 6,762,778; 6,828,974; 6,828,974; 6,904,392; 6,918,095; 6,934,709; 6,993,461; 6,993,461; 6,993,461;

7,003,363; 7,016,821; 7,152,064; 7,250,947; 7,272,541; 7,289,117; 7,400,323; 7,428,728; 7,495,662; 7,499,845; 7,542,603; 7,555,498;

7,555,498; 7,587,303; 7,587,303; 7,595,799; 7,613,594; 7,620,638; 7,676,765; 7,676,765; 7,710,420; 7,814,429; 7,814,429; 7,814,429;

7,814,429; 7,873,237; 7,913,190; 7,952,575; 7,973,788; 8,010,501; 8,013,854; 8,095,229; 8,095,886; 8,222,581; 8,222,581; 8,248,407;

8,301,420; 8,368,568; 8,386,961; 8,421,798; 8,473,258; 8,473,259; 8,473,524; 8,521,736; 8,554,521; 8,645,107; 8,670,957; 8,686,997;

8,694,284; 8,798,975; 8,798,975; 8,812,272; 8,825,450; 8,831,926; 8,832,551; 8,847,947; 8,854,367; 8,868,380; 8,878,841; 8,89,6598;

8,907,947; 8,924,185; 8,925,105; 8,930,415; 8,963,748; 9,030,475; 9,075,931; 9,111,053; 9,117,300; other patents pending.

Trademarks

3DEXPERIENCE, the Compass icon, the 3DS logo, CATIA, SOLIDWORKS , ENOVIA, DELMIA, SIMULIA, GEOVIA, EXALEAD, 3D VIA,

, BIOVIA, NETVIBES, 3DSWYM and 3DEXCITE, are commercial trademarks or registered trademarks of Dassault Systèmes or its subsidiaries

in the United States and/or other countries. Use of any Dassault Systèmes or its subsidiaries trademarks is subject to their express written approval.

Other company, product, and service names may be trademarks or service marks of their respective owners.

Copyrights

Certain portions of the 3DEXPERIENCE Platform R2016x contain elements subject to copyright owned by the following entities:

© Modelon AB

© Distrim

© NVIDIA ARC

© IBM Corporation 2007 All Rights Reserved" + cf http://www-03.ibm.com/software/sla/sladb.nsf/c7134e107cf0624e86256738007531d7/fd6322f964805a37002573a70058ab2e?OpenDocument

© DLR (Deutsches Zentrum für Luft und Raumfahrt)

© DISTENE

© Kjell Gustafsson

© 2000 Geometric Limited

© Weber-Moewius, D-Siegen

© Oracle

© INRIA

© ITI (International Technegroup Corporation)

Raster Imaging Technology copyrighted by Snowbound Software 1996-2000

© Arsenal

© Allegorithmic

© 1997-2004 Lattice Technology, Inc. All Rights reserved

© NVIDIA

Page 3: ENOVIA Report Generator - Dassault Systèmes

3

© Intel Corp

© Regents of the University of Minnesota

© Third Millenium Productions

© Scapos

© NuoDB

“CAM-POST ® Version 2001/14.0 © ICAM Technologies Corporation 1984-2001. All rights reserved”

© CENIT

© IMS

Contains copyrighted materials of MachineWorks Design Limited (c) 1995-2000

© NCCS

© 2003 - 2009 by Technia AB. All rights reserved. This product includes software developped by Technia AB (http://www.technia.com)

Unpublished - © 1991-1997 Synopsys Inc. All rights reserved. The program and information contained herein are licensed only pursuant to a license agreement that contains use, reverse engineering, disclosure and other restrictions; accordingly, it is "Unpublished – rights reserved under the copyright laws of the United States" for purposes of the FARs. RESTRICTED RIGHTS LEGEND: Notwithstanding any other lease or license agreement that may pertain to, or accompany the delivery of, this LICENSED PRODUCT, the rights of the Government regarding its use, reproduction and disclosure are as set forth in the Government contract.

XMLmind XSL-FO Converter Copyright © 2002-2009 Pixware SARL

©Sun Microsystems, Inc.

© The MathWorks Inc.

© 2004 - 2010 Oliver Exler, Thomas Lehmann, Klaus Schittkowski, Department of Computer Science, University of Bayreuth, D-

95440 Bayreuth, Germany

© 1999 - 2011 Advanced Visual Systems

© Ceetron

Abaqus solver technology utilizes routines in Numerical Recipes: The Art of Scientific Computing, published by Cambridge University Press,

and are used by permission.

First Edition FORTRAN : "Copyright(C)1986 Numerical Recipes Software"

First Edition C : "Copyright(c)1987,1988 Numerical Recipes Software"

Second Ed.FORTRAN : "Copyright(c)1986,1992 Numerical Recipes Software" S

econd Ed.C: "Copyright(c)1987-1992 Numerical Recipes Software"

Copyright 1998, Regents of the University of Minnesota

METIS is copyrighted by the regents of the University of Minnesota. This work was supported by IST/BMDO through Army Research Office

contract DA/DAAH04-93-G-0080, and by Army High Performance Computing Research Center under the auspices of the Department of the

Army, Army Research Laboratory cooperative agreement number DAAH04-95-2-0003/contract number DAAH04-95-C-0008, the content of

which does not necessarily reflect the position or the policy of the government, and no official endorsement should be inferred. Access to

computing facilities were provided by Minnesota Supercomputer Institute, Cray Research Inc, and by the Pittsburgh Supercomputing

Center. Related papers are available via WWW at URL: http://www.cs.umn.edu/˜metis .

This software is based in part on the work of the independent JPEG Group.

The 3DEXPERIENCE Platform R2016x may include open source software components. Source code for these components is available upon

request. The original licensors of said open source software components provide them on an “as is” basis and without any liability whatsoever to

customer (or licensee).

IP Asset Name IP Asset Version Copyright notice

Under Academic Free License

JAVA SWING DATE PICKER v0.99-2006.09.01

Under Apache 1.1

Element Construction Set 1.4.2 Copyright (c) 1999-2003 The Apache Software Foundation. All rights reserved

Jakarta 2.07 Copyright 1999–2004, The Apache Software Foundation

JAKARTA Regular Expression 1.3 Copyright (c) 1999-2003 The Apache Software Foundation. All rights reserved.

JavaMail / Servlet-API 1.4.2 / 2.3

Copyright (c) 1999 The Apache Software Foundation. All rights reserved. VOIR AVEC R&D S IL S AGIT DU MEME COMPOSANT OU DEUX COMPOSANTS FONCTIONNANT ENSEMBLE

Page 4: ENOVIA Report Generator - Dassault Systèmes

4

IP Asset Name IP Asset Version Copyright notice

Xalan 2.3.1 Copyright (c) 1999-2003 The Apache Software Foundation

XML4C 2.4 Copyright (C) 1998-2008, International Business Machines Corporation * and others

Code Generation Library (cglib) 2.2.2 This product includes software developed by Yale University

Under Apache 2.0

ActiveMQ-activeIO-core 3.0.0

Amazon Java SDK 1.3.26

Ant 1.6.1 The Apache License Version 2.0 applies to all releases of Apache Ant starting with Ant 1.6.1

Apache Common Lang 2.0 Copyright 2001-2014 The Apache Software Foundation

Apache Commons 1.8 Copyright 2001-2012 The Apache Software Foundation

Apache Commons-cli 1.2 Copyright 2001-2009 The Apache Software Foundation

Apache Commons-codec 1.4 Copyright 2002-2013 The Apache Software Foundation

Apache Commons-Compress 1.8 Copyright 2002-2014 The Apache Software Foundation

Apache Commons-FileUpload 1.2.2 Copyright 2002-2010 The Apache Software Foundation

Apache Commons-httpclient 3.1 Copyright 1999-2011 The Apache Software Foundation

Apache Commons-io 2.1 Copyright 2002-2014 The Apache Software Foundation

Apache Commons-JEXL 1.1 Copyright 2006 The Apache Software Foundation

Apache Commons-lang Copyright 2001-2014 The Apache Software Foundation

Apache Commons-logging 1.1.1 Copyright 2003-2013 The Apache Software Foundation

Apache HTTP Server 2.2.23 Copyright (c) 2011 The Apache Software Foundation.

Apache log4j 1.2.17

Copyright 2007 The Apache Software Foundation

Apache POI 2.5.1 Copyright 2002-2004 The Apache Software Foundation

Apache Storm 0.8 Copyright 2014 The Apache Software Foundation

Apache Tomcat 6

Copyright 1999-2014 The Apache Software Foundation

Apache.commons.fileupload 1.2.1 Copyright 2002-2008 The Apache Software Foundation

ApacheSSL 2.2.21

Axis 1.4 Copyright 2001-2004 The Apache Software Foundation

Bean Validation API 1.0.0.GA Copyright (c) Red Hat, Inc., Emmanuel Bernard

BoneCP 0.7.1.RELEASE Copyright 2010 Wallace Wadge

CAS client (java) 2.1 Copyright 2010, JA-SIG, Inc

Commons Math Bundle 1.2

Minpack Copyright Notice (1999) University of Chicago. All rights reserved / This product includes software developed by the University of Chicago, as Operator of Argonne National Laboratory

Daisydiff 1.1 Copyright 2007 © Guy Van den Broeck <[email protected]>; Daniel Dickison

Derby 10.8.2.2

(C) Copyright 1997,2004 International Business Machines Corporation. All rights reserved This product includes software developed by The Apache Software Foundation (http://www.apache.org/).

Ehcache 2.4.6 Copyright 2003-2010 Terracotta, Inc.

Formatting Objects Processor (FOP) Copyright (c) 1998-1999, James Tauber. All rights reserved.

GChart 2.3 Copyright 2007,2008,2009 John C. Gunther

Google Web Toolkit (GWT) 1.5 Copyright 2007, Google Inc.

Guava 14.0 Copyright (c) 2011 Guava Authors. All rights reserved

GWT Drag and Drop 2.5.6 Copyright 2009 Fred Sauer

GWT Incubator 1.5 Copyright 2008, Google Inc.

GWTx 1.5-20081912 Copyright 2009 Google Inc.

Hibernate Validator Engine 4.3.1.Final Copyright 2009, Red Hat, Inc. and/or its affiliates

HTTPClient 3.1 Copyright 1999-2007 The Apache Software Foundation

ibatis-core 3.0

Ini4j 0.5.2 0.5.2 Copyright 2005,2009 Ivan SZKIBA

Inspektr 1.0.7.GA Copyright 2010 Rutgers, the State University of New Jersey, Virginia Tech, and Scott Battaglia

iossim Copyright (c) 2009-2013 by Appcelerator, Inc. All Rights Reserved. / A TRANCHER AVEC R&D

Page 5: ENOVIA Report Generator - Dassault Systèmes

5

IP Asset Name IP Asset Version Copyright notice

Jackson 1.9.12 Copyright (c) 2007- Tatu Saloranta, [email protected]

jakarta.commons.lang 2.4 Copyright 2001-2008 The Apache Software Foundation

Jakarta.commons.logging 1.0.1 Copyright 2001-2004 The Apache Software Foundation.

jakarta.commons.net 1.4.0 Copyright 2001-2005 The Apache Software Foundation

Jasper 5 Copyright 1999-2010 The Apache Software Foundation

Jettison 1.3.2 Copyright 2006 Envoi Solutions LLC

JNRPE Copyright (c) 2008 Massimiliano Ziccardi

Joda Time Copyright 2001-2012 Stephen Colebourne

json simple 1.1 Copyright ©FangYidong<[email protected]>

JUG (Java UUID Generator) 1.1.2 Copyright (c) 2010 Tatu Saloranta

log4j Copyright 2010 The Apache Software Foundation

opencsv 2.0

Tomcat 6 Copyright 1999-2014 The Apache Software Foundation

TRUEZIP 6.7 Beta 2 Copyright (C) 2009 Schlichtherle IT Services

VIAMobileIntegration 2009 Copyright 2009 Facebook

WatiN 1.3 Copyright Jeroen van Menen 2011

Xalan C++ 1.10 Copyright (c) 1999-2012 The Apache Software Foundation

Xerces C++ 3.01 Copyright © The Apache Software Foundation

Xerces-J 2.6.2 Copyright © The Apache Software Foundation

Xerces2-Java 2.9.1 Copyright 1999-2012 The Apache Software Foundation

Xerces 3.1.1 3.1.1 Copyright © 2004 The Apache Software Foundation

xml-apis-ext 1 Release 3.04

Copyright © 2006 World Wide Web Consortium, (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University, Beihang). All Rights Reserved.

Apache TomEE jar files 7.0

batik-all-1.7.jar 1.7 Copyright © 2013 The Apache Software Foundation

Nekohtml 1.9.21 Copyright (c) 2002-2013, Andy Clark, Marc Guillemot. All rights reserved.

Gson 2.2.2 Copyright (c) 2008 Google Inc

STAX 1.2 Copyright (c) 2003 by BEA Systems. All Rights Reserved.

SCXML Working Draft 16 December 2010 Copyright 1999–2005, The Apache Software Foundation

Under Apache 2.0 Or LGPL 2.1

Javassist 3.15.0-GA Copyright (c) 1999-2005 Shigeru Chiba. All Rights Reserved.

Under Apache 2.0 Or BSD 2

CardMe 0.3.6.01 Copyright 2011 George El-Haddad. All rights reserved.

Under Apache 2.0 Or BSD 3

CAS Client (PHP) 1.3.2

Copyright 2007-2011, JA-SIG, Inc.; Copyright © 2003-2007, The ESUP-Portail consortium; Copyright (c) 2009, Regents of the University of Nebraska All rights reserved.

Under Apple License

KeychainItemWrapper Copyright (C) 2010 Apple Inc. All Rights Reserved.

Under ASM license

ASM Core 3.2 Copyright (c) 2000-2011 INRIA, France Telecom

Under BeOpen Python License Agreement

Cookie Python-2.7 Copyright 2000 by Timothy O'Malley

Under Boost license

Wild Magic Library Geometric Tools, LLC // Copyright (c) 1998-2014

Boost Copyright Joe Coder 2004 - 2006.

Under BSD 2

yasm 1.2.0 Copyright (C) 2003-2007 Peter Johnson

xmppframework 3.2 Copyright (c) 2007, Deusty Designs, LLC

FMI Interface MAProject Copyright The Modelica Association

Pychecker for Python-2.7 0.8.17 Copyright (c) 2000-2001, MetaSlash Inc All rights reserved

Flann 1.6.11

Copyright (c) 2008-2011 Marius Muja ([email protected]). All rights reserved. Copyright (c) 2008-2011 David G. Lowe ([email protected]). All rights reserved

Under BSD 3

Page 6: ENOVIA Report Generator - Dassault Systèmes

6

IP Asset Name IP Asset Version Copyright notice

_wincon.c 2001-05-08 Copyright (c) 1999-2001 by Secret Labs AB. # Copyright (c) 1999-2001 by Fredrik Lundh.

Adaptive Simulated Annealing (ASA) v 23.7 2001/10/12 14:01:08 Copyright © 1987-2014 Lester Ingber. All Rights Reserved.

ANTLR 1.33MR33 Copyright © 2003-2006, Terence Parr ANTLR 3 / Public domain ANTLR 2

Atmosphere & Ocean v2 Copyright (c) 2008 INRIA

jaxen 1.1.1 Copyright 2003-2006 The Werken Company. All Rights Reserved.

JGraphX 1.3.1.6 Copyright (c) 2001-2009, JGraph Ltd

Kiss FFT 1.3.0 Copyright (c) 2003-2010 Mark Borgerding

libogg 1.2.0 Copyright (c) 2002 Xiph.org Foundation

libTheora 1.1.1 Copyright (c) 2002-2009 Xiph.org Foundation

libVorbis Vorbis I Release: 1.3.1 (Feb, 3, 2010) Copyright (c) 2002-2008 Xiph.org Foundation

Penner's easing functions Copyright © 2001 Robert Penner

Skia Graphics Library Copyright (c) 2011 Google Inc. All rights reserved

V8 3 Copyright 2006-2011, the Google V8 project authors

Visualization Toolkit (VTK) 5.10 Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen

Vorbis 1.3.3 Copyright (c) 2002-2008 Xiph.org Foundation

vpx 1.1.0 Copyright (c) 2010 The WebM project authors

yamdi 1.8 Copyright (c) 2007-2010, Ingo Oppermann

yuicompressor 2.4.7 Copyright (c) 2013, Yahoo! Inc.

Zend Framework 1.10.2 Copyright (c) 2005-2014, Zend Technologies USA, Inc. All rights reserved.

ZipJS Copyright (c) 2013 Gildas Lormeau. All rights reserved.

ical4J Copyright (c) 2012, Ben Fortuna * All rights reserved.

XStream 1.3.1 Copyright (c) 2003-2006, Joe Walnes Copyright (c) 2006-2009, 2011 XStream Committers

Data Driven Documents (D3) 3.0.0 Copyright (c) 2010-2014, Michael Bostock All rights reserved.

ESAPI 2.1 Copyright © 2009 The OWASP Foundation.

GCC-XML Copyright 2002-2012 Kitware, Inc., Insight Consortium. All rights reserved.

hsqldb 2.2.9 Copyright (c) 2001-2011, The HSQL Development Group * All rights reserved.

Natural Comparators Y2006 Copyright (c) 2006, Stephen Kelvin Friedrich, All rights reserved

MAGMA (Matrix Algebra on GPU and Multicore Architectures) 1.4

Innovative Computing Laboratory Electrical Engineering and Computer Science Department University of Tennessee (C) Copyright 2009-2013

AntiSamy for Results Analytics 1.5.3 Copyright (c) 2013, The Open Web Application Security Project All rights reserved.

Socket for Python-2.7 Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. All rights reserved.

NumPy for Python-2.7 1.6.2 Copyright (c) 2005-2013, NumPy Developers.

polymer.js 0.2.1 Copyright (c) 2014 The Polymer Authors. All rights reserved.

Platform.js 0.2.1 Copyright (c) 2014 The Polymer Authors. All rights reserved.

Modelisar FMI 2.0 Copyright © 2008-2010, MODELISAR consortium. All rights reserved.

MTRand No version Copyright (C) 2000 Takashi Kawasaki, Tomoyuki Hiroyasu and Mitsunori Miki, All rights reserved

Under BSD Style

itcl 3.4 This software is copyrighted by Lucent Technologies, Inc., and other parties

dom4j 1.6.1 Copyright 2001-2005 MetaStuff Ltd.. All Rights Reserved

Exodus II 4.84 Copyright (c) 2005 Sandia Corporation

Kiss FFT 1.3.0 Copyright (c) 2003-2010 Mark Borgerding All rights reserved.

FreeType 2 Copyright 2000 The FreeType Development Team

JDOM 1.0 Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved.

Natural Comparator n.a. Copyright (c) 2006, Stephen Kelvin Friedrich, All rights reserved. This a BSD license.

InfiniteProgressPanel Y2005 Copyright (c) 2005, romain guy ([email protected]) and craig wickesser ([email protected]) All rights reserved

Page 7: ENOVIA Report Generator - Dassault Systèmes

7

IP Asset Name IP Asset Version Copyright notice

JScience 4.3.1 Copyright (C) 2006 - JScience (http://jscience.org/) All rights reserved.

MPICH2 1.3.1 Copyright Notice + 1993 University of Chicago + 1993 Mississippi State University

Under Castor License

Castor 0.9.3.9 Copyright 2000 (C) Intalio Inc. All Rights Reserved.

Under CDDL 1.0 Or GNU GPLV1.0

JavaMail 1.4.2 Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.

Under CDDL 1.0

Or GNU GPL V2.0 classpath exception

JBoss Transaction 1.1 API 1.0.0.Final Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved

Under CDDL 1.1

Java Message Service 3.12.1.GA Copyright (c) 2003-2010 Oracle and/or its affiliates. All rights reserved

Under Common Public License Version 0.5

junit 3.8.1

Under Custom Permissive License

KeychainItemWrapper Copyright (C) 2010 Apple Inc. All Rights Reserved

Under Custom Permissive License

LibJPG Thomas G. Lane, Guido Vollbeding.

Under Custom Permissive License

LibTIFF Copyright (c) 1988-1997 Sam Leffler Copyright (c) 1991-1997 Silicon Graphics, Inc.

Under Customized MIT License

Tls 1.6 Copyright (C) 1997-2000 Matt Newman

ACE 6.0.0 Copyright and Licensing Information for ACE(TM), TAO(TM), CIAO(TM), and

CoSMIC(TM)

Under Customized License

Trf 2.1p2 This software is copyrighted by Andreas Kupries

Under Customized MIT License

Tiff library 3.5.7 Copyright (c) 1988-1997 Sam Leffler Copyright (c) 1991-1997 Silicon Graphics, Inc.

PETSC 2.3.3-p15 (C) COPYRIGHT 1995-2004 UNIVERSITY OF CHICAGO

Under Customized Boost license

VRPN

Public domain until version 7.27 and then customized Boost License with credit to "The CISMM project at the University of North Carolina at Chapel Hill, supported by NIH/NCRR and NIH/NIBIB award #2P41EB002025"

Under Customized License

libPNG Copyright (c) 2004, 2006-2014 Glenn Randers-Pehrson depending on the asset version - to be confirmed with R&D)

Under Eclipse Public License 1.0

AspectJ 1.6.11 Copyright (c) 1998-2001 Xerox Corporation, 2002 Palo Alto Research Center, Incorporated, 2003-2008 Contributors. All rights reserved.

Eclipse Platform 3.3.1 A VOIR AVEC LA R&D

Graphviz none * Copyright (c) 2011 AT&T Intellectual Property. All rights reserved

Under CDDL

jersey 1.17 Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved

Info-ZIP license

Unzip (from InfoZip) 6.0 Copyright (c) 1990-2009 Info-ZIP. All rights reserved.

Zip 3.0 Copyright (c) 1990-2009 Info-ZIP. All rights reserved.

Under Jasig License for USE

cas-client-core 3.1.6 Copyright 2007 The JA-SIG Collaborative. All rights reserved

Under LGPL

unix ODBC 2.2.14 A revoir avec Rodolphe

GWT Beans Binding 0.2.3 * Copyright (C) 2006-2007 Sun Microsystems, Inc. All rights reserved.

GWT Mosaic 0.1.9.1 Copyright (C) 2009 Georgios J. Georgopoulos, All rights reserved.

Hibernate Commons Annotations 4.0.1.Final Copyright (c) 2008, Red Hat Middleware LLC

Page 8: ENOVIA Report Generator - Dassault Systèmes

8

IP Asset Name IP Asset Version Copyright notice

Hibernate 4.1.6.Final Copyright (c) 2009 by Red Hat Inc and/or its affiliates

WxPython 2.8 Copyright (c) 1992-2013 Julian Smart, Vadim Zeitlin, Stefan Csomor, Robert Roebling, and other members of the wxWidgets team

Under LGPL 2.1

Hibernate 3.17.1-GA Copyright (c) 2007, Red Hat Middleware, LLC. All rights reserved.

HTMLPurifier 4.4 Copyright 2006-2008 Edward Z. Yang

JACOB 1.14.3 Copyright (c) 1999-2004 Sourceforge JACOB Project. All rights reserved. Originator: Dan Adler (http://danadler.com)

JBOSS 6.1.0 Copyright 2011 Red Hat Inc. and/or its affiliates and other contributors as indicated by the @author tags. All rights reserved

JBoss Logging 3 3.1.0.GA Copyright 2011 Red Hat, Inc., and individual contributors as indicated by the @author tags

JCIFS Libraries 1.2.25b

jregistrykey 1.0 Copyright © 2001, BEQ Technologies Inc.

jfreechart

Tiny MCE 3.4.6 Copyright 2009, Moxiecode Systems AB

ML 5.0 Copyright 2006 by Sandia National Laboratories

JUG (Java UUID Generator) 2 1.1.2 Copyright © 2002-2004 by Tatu Saloranta

Xj3D 1.0 Copyright 2006 Web3D Consortium.

Under LGPL 2.1

Or under GNU GPL V2

FFMpeg 1.1 Copyright © 2000 Fabrice Bellard et al.

Under LGPL 2.1

Or under Eclipse public license - v 1.0

c3p0 0.9.1.2 Copyright: (C) 2001-2007 Machinery For Change, Inc.

Under GNU LGPL 3.0

libmcrypt Copyright (C) 1998,1999,2000,2002 Nikos Mavroyanopoulos

Under MIT License

_random Python-2.7 Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, All rights reserved.

asyncore-asynchat Python-2.7 Copyright 1996 by Sam Rushing

Bouncy Castle Libraries Copyright (c) 2000 - 2013 The Legion of the Bouncy Castle Inc.

Com4J Copyright (c) 2003, Kohsuke KawaguchiAll rights reserved.

Code mirror Copyright (C) 2012 by Marijn Haverbeke <[email protected]> and others

Credis Copyright (c) 2009 Justin Poliey <[email protected]> Copyright (c) 2011 Colin Mollenhour <[email protected]>

ctypes 1.1.0 Copyright (c) 2000 - 2006 Thomas Heller

curl.js 0.7.3 Copyright (c) 2010-2013 Brian Cavalier and John Hann

Dynamic Java 1.1.5 DynamicJava - Copyright 1999 Dyade

Easysax Copyright (c) 2012 Vopilovskii Constantine <[email protected]>

Expat Expat XML Parser-2.0.0

Express 3.1.0 Copyright (c) 2009-2014 TJ Holowaychuk <[email protected]>

f2c 20100827 Copyright 1990 - 1997 by AT&T, Lucent Technologies and Bellcore.

FTGL Copyright (c) 2001-2004 Henry Maddocks <[email protected]> Copyright (c) 2008 Sam Hocevar <[email protected]> Copyright (c) 2008 Sean Morrison <[email protected]>

Hammerjs 1.0.5 Copyright (C) 2013 by Jorik Tangelder (Eight Media)

Java Cup 11 Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott Ananian

Java Service Wrapper 3.0.2 Copyright (c) 1999, 2004 Tanuki Software

jQuery Copyright 2014 jQuery Foundation and other contributors

jQuery Simple Context Menu 1.0 Copyright (c) 2011, Joe Walnes

libffi Python-2.7 Copyright (c) 1996-2012 Anthony Green, Red Hat, Inc and others.

libxml 2.4.5 Copyright (C) 1998-2003 Daniel Veillard

LittleCMS Copyright (c) 1998-2012 Marti Maria Saguer

Markdown-js 1.0 Copyright (c) 2009-2010 Dominic Baggott // Copyright (c) 2009-2010 Ash Berlin

MD5 (none) Copyright (C) 1999 Aladdin Enterprises. All rights reserved.

Page 9: ENOVIA Report Generator - Dassault Systèmes

9

IP Asset Name IP Asset Version Copyright notice

OpenCL API 1.1 Copyright (c) 2008-2010 The Khronos Group Inc.

Three.js R58 Copyright (c) 2010-2012 three.js authors

uu Python-2.7 Copyright 1994 by Lance Ellinghouse, Modified by Jack Jansen, CWI, July 1995

when.js 1.7.1 Copyright (c) 2011 Brian Cavalier

WINP 1.14 Copyright (c) 2004-2009, Sun Microsystems, Inc., Kohsuke Kawaguchi

Winston 0.7.2 Copyright (c) 2010 Charlie Robbins

XML Xpat Parser 1.95.4

Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper Copyright (c) 2001, 2002 Expat maintainers.

jsPlumb Copyright (c) 2010 - 2013 Simon Porritt (http://jsplumb.org)

xmlrpclib 1.0.1 Copyright (c) 1999-2002 by Secret Labs AB Copyright (c) 1999-2002 by Fredrik Lundh

jQuery XML to JSON 1.3 Copyright © 2008 Fyneworks.com

pyexpat for Python -2.7 2.0.0

Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper

Profile-Pstats for Python-2.7 Copyright 1994, by InfoSeek Corporation, All rights reserved Written by James Roskind

Python Console for Python-2.7 1.1a1 Copyright (c) 1999-2001 by Secret Labs AB Copyright (c) 1999-2001 by Fredrik Lundh

SheetClip.js 0.2 Copyright (c) 2012 Marcin Warpechowski <[email protected]>

jQuery Tablesorter 2.9.1 Copyright (c) 2007 Christian Bach.

Tclap

1.2.1 Copyright © 2003 Michael E. Smoot

Hooke-Jeeves Direct Search Method

Copyright © 1994 by M.G. Johnson

Under the Modelica License

Modelica Standard Library Copyright The Modelica Association

Under Mozilla Public License Version 1.1a

Mozilla Rhino 1.7R2

Extended Message boxes Copyright © 2004 Michael P. Mehl. All rights reserved (Version 1.1a )

Under Ms-LPL License

ATLSOAPInterfaces Copyright © Microsoft Corporation

Under Python 2.2 License

Trace (no version)

Copyright 2001, Autonomous Zones Industries, Inc., Copyright 2000, Mojam Media, Inc, Copyright 1999, Bioreason, Inc., Copyright 1995-1997, Automatrix, Inc., Copyright 1991-1995, Stichting Mathematisch Centrum

Jython 2.5.2 Copyrig©(c) 2007 Python Software Foundation; All Rights Reserved

Python Python-2.5 Copyright © 2001-2014 Python Software Foundation; All Rights Reserved

Python Extensions for Windows for Python-2.7 Build 217

Under Zlib License

NanoXml 2.2.5 Copy©ht (C) 2000-2002 Marc De Scheemaecker, All Rights Reserved.

Natural Order Sort 2004-10-10 mbp This software is copyright by Martin Pool, and made available under the same licence as zlib

ZLib C©right (C) 1995-2013 Jean-loup Gailly and Mark Adler

Zlib Zlib-1.2.4 zlib software copyright © 1995-2012 Jean-loup Gailly and Mark Adler.

Under HDF5

HDF5 1.8.9

HDF5 (Hierarchical Data Format 5) Software Library and Utilities Copyright 2006-2014 by The HDF Group NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities Copyright 1998-2006 by the Board of Trustees of the University of Illinois.All rights reserved.

Under Artistic License

Perl 5 Perl5 i©opyright (C) 1993-2005, by Larry Wall and others

Perl 5.12.3 Perl5 i©opyright (C) 1993-2005, by Larry Wall and others

Perl module: Parallel::Forkmanager 1.03 Copyright (c) 2000 Szabó, Balázs (dLux)

Perl module: Log::Log4perl 1.24 Copyright 2002-2013 by Mike Schilli <[email protected]> and Kevin Goess <[email protected]>.

Page 10: ENOVIA Report Generator - Dassault Systèmes

10

IP Asset Name IP Asset Version Copyright notice

Perl module: File::Copy::Recursive 0.38 Copyright 2004 by Daniel Muey

Under OpenSSL License

OpenSSL for Python-2.7 0.9.8 Copyright (c) 1998-2008 The OpenSSL Project. All rights reserved

Under TCL/TK

TCL/TK for Python-2.7 8.5 This software is copyrighted by the Regents of the University of California, Sun Microsystems, Inc., Scriptics Corporation, and other parties

This clause applies to all acquisitions of Dassault Systèmes Offerings by or for the United States federal government, or by any prime contractor

or subcontractor (at any tier) under any contract, grant, cooperative agreement or other activity with the federal government. The software,

documentation and any other technical data provided hereunder is commercial in nature and developed solely at private expense. The Software is

delivered as “Commercial Computer Software” as defined in DFARS 252.227-7014 (June 1995) or as a “Commercial Item” as defined in FAR

2.101(a) and as such is provided with only such rights as are provided in Dassault Systèmes standard commercial end user license agreement.

Technical data is provided with limited rights only as provided in DFAR 252.227-7015 (Nov. 1995) or FAR 52.227-14 (June 1987), whichever is

applicable. The terms and conditions of the Dassault Systèmes standard commercial end user license agreement shall pertain to the United States

government's use and disclosure of this software, and shall supersede any conflicting contractual terms and conditions. If the DS standard

commercial license fails to meet the United States government's needs or is inconsistent in any respect with United States Federal law, the United

States government agrees to return this software, unused, to DS. The following additional statement applies only to acquisitions governed by

DFARS Subpart 227.4 (October 1988): "Restricted Rights - use, duplication and disclosure by the Government is subject to restrictions as set

forth in subparagraph (c)(l)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252-227-7013 (Oct. 1988)

3DEXPERIENCE R2016x © 2015 Dassault Systèmes. All rights reserved.

Page 11: ENOVIA Report Generator - Dassault Systèmes

Table of Contents

1 Report Generator ................................................................................................... 4

1.1 Definitions .................................................................................................................................................. 5

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

2 Usage Scenarios ..................................................................................................... 7

2.1 Global Report .............................................................................................................................................. 7

2.2 Context Report ............................................................................................................................................ 8

2.3 Triggered by Event ..................................................................................................................................... 10 2.3.1 Integrating With Trigger Manager .............................................................................................................. 10 2.3.2 Custom Invocation of the Report Generator (MQL) ................................................................................... 12

2.4 Define a Custom URL to Create a Specific Report ........................................................................................ 13

2.5 Create Multiple Reports ............................................................................................................................. 13

2.6 Integrating with the TVC Structure Browser ................................................................................................ 14 2.6.1 Reports in the Side Panel ............................................................................................................................ 14 2.6.2 Table Bean Report ....................................................................................................................................... 14

2.7 Command Line Invocation .......................................................................................................................... 16

3 Configuring the Report Generator ....................................................................... 17

3.1 Global Properties ....................................................................................................................................... 17

3.2 Creating Report Definitions ........................................................................................................................ 19 3.2.1 Creating the Instances ................................................................................................................................ 19 3.2.2 Activating/Inactivating Instances ................................................................................................................ 19 3.2.3 Common Attributes .................................................................................................................................... 20 3.2.4 Conversion Properties ................................................................................................................................. 22

3.3 Expansion Report Definition ....................................................................................................................... 23

3.4 Inquiry Report Definition ............................................................................................................................ 24 3.4.1 Passing Custom Parameters to the Inquiry ................................................................................................. 24 3.4.2 Inquiry Report Example .............................................................................................................................. 25

3.5 Advanced Report Definition ....................................................................................................................... 26 3.5.1 Table Data Section ...................................................................................................................................... 27 3.5.2 XML Specification ........................................................................................................................................ 27 3.5.3 Data Groups ................................................................................................................................................ 29 3.5.4 Data Set ....................................................................................................................................................... 30 3.5.5 Data Producers ............................................................................................................................................ 30 3.5.6 Combining Data Producers ......................................................................................................................... 33 3.5.7 MQL Output Section ................................................................................................................................... 35

3.6 Custom Report Definition ........................................................................................................................... 35

3.7 JPO Report Definition ................................................................................................................................. 35

Page 12: ENOVIA Report Generator - Dassault Systèmes

3.7.1 Custom JPO Example .................................................................................................................................. 37

3.8 Post Processing .......................................................................................................................................... 38 3.8.1 Disabling a Post Processor .......................................................................................................................... 38 3.8.2 PDF Stamp ................................................................................................................................................... 38 3.8.3 ZIP ............................................................................................................................................................... 40

3.9 Output Handlers ......................................................................................................................................... 40 3.9.1 Disabling an Output Handler ....................................................................................................................... 40 3.9.2 Check-in Handler ......................................................................................................................................... 41 3.9.3 Mail Handler ............................................................................................................................................... 44 3.9.4 FTP Upload Handler .................................................................................................................................... 45 3.9.5 File Store Handler ....................................................................................................................................... 45 3.9.6 Print Handler ............................................................................................................................................... 46 3.9.7 Macros, used by different output handlers ................................................................................................ 48

3.10 Configure FOP Version ........................................................................................................................... 50 3.10.1 Configure the Global Setting .................................................................................................................. 50 3.10.2 Configured per Report ........................................................................................................................... 50

3.11 Configuring the Report List Page ............................................................................................................ 52 3.11.1 Sort Order ............................................................................................................................................... 52 3.11.2 Image ...................................................................................................................................................... 54

4 Creating Stylesheets ............................................................................................. 55

4.1 Extract Raw XML ........................................................................................................................................ 55

4.2 System Table Settings ................................................................................................................................. 55

4.3 XML Format ............................................................................................................................................... 56 4.3.1 Date Values ................................................................................................................................................. 58

4.4 Stylesheet Template ................................................................................................................................... 58

4.5 Stylesheet Import/Include .......................................................................................................................... 60

4.6 Passing Custom Properties to the Stylesheet .............................................................................................. 61 4.6.1 Default Parameters Passed To the Stylesheet ............................................................................................ 61

4.7 Creating Excel Reports ................................................................................................................................ 62 4.7.1 SpreadsheetML ........................................................................................................................................... 62 4.7.2 Custom Report using POI ............................................................................................................................ 62

5 Distributing the Report Creation .......................................................................... 64

5.1 Data Model ................................................................................................................................................ 66 5.1.1 Attributes .................................................................................................................................................... 66 5.1.2 Lifecycles ..................................................................................................................................................... 67

5.2 The Queue Agent ....................................................................................................................................... 68 5.2.1 Queue Agent Start Script ............................................................................................................................ 68 5.2.2 Required Script Changes ............................................................................................................................. 69 5.2.3 Agent Actions .............................................................................................................................................. 70

5.3 Queue/Job Administration ......................................................................................................................... 71

5.4 Allowing a User to Access Jobs.................................................................................................................... 72

6 Images .................................................................................................................. 73

Page 13: ENOVIA Report Generator - Dassault Systèmes

6.1 Images Loaded From the Database ............................................................................................................. 73

6.2 Images from the Web Application .............................................................................................................. 73

6.3 Charts ........................................................................................................................................................ 75

7 Fonts ..................................................................................................................... 77

7.1 FOP 0.20.5 .................................................................................................................................................. 77

7.2 FOP 1.0+ ..................................................................................................................................................... 79

8 Extended Configuration Possibilities .................................................................... 80

8.1 Webform as Pre Process Page ..................................................................................................................... 80

8.2 Custom Pre Processing Pages ...................................................................................................................... 80 8.2.1 Submitting Parameters ............................................................................................................................... 80 8.2.2 Submit Action .............................................................................................................................................. 82 8.2.3 Selecting Columns ....................................................................................................................................... 82 8.2.4 Selecting Sections ....................................................................................................................................... 83 8.2.5 Selecting Printer .......................................................................................................................................... 83

9 Client Script .......................................................................................................... 85

Page 14: ENOVIA Report Generator - Dassault Systèmes

1 Report Generator The Report Generator Component 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).

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 ENOVIA, 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: ENOVIA Report Generator - Dassault Systèmes

1.1 Definitions

Definition Description

Report Definition The “configuration” object (business objects) 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 ENOVIA 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: ENOVIA Report Generator - Dassault Systèmes

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 extracted data, 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 for example PDF, DOCX or RTF

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, the report generator uses a component from the Apache Software Foundation called FOP for

converting XML-FO data into for example PDF. The report generator has two versions of the Apache FOP

software available, 0.20.5 and 1.1. The default version being used is 1.1.

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

RPT also contains another XML-FO converter that can produce DOCX, RTF, ODT (Open Office) and

Wordprocessing ML output. This XML-FO converter is called XFC.

Page 17: ENOVIA Report Generator - Dassault Systèmes

2 Usage Scenarios The report generator may be invoked in a number of different 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

From the Side Panel in the TVC Structure Browser

Through a command line invocation

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

3.2.

2.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 ENOVIA versions).

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

instances.

Page 18: ENOVIA Report Generator - Dassault Systèmes

Figure 2, Global Report command in a 10.5 environment.

2.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 in order to make it available for the user. Figure 3

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";

Global report

command

Page 19: ENOVIA Report Generator - Dassault Systèmes

Figure 3, Report command in category tree.

Select-Report command

Page 20: ENOVIA Report Generator - Dassault Systèmes

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

TVCReportGenerator that wraps the logic to create a report.

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

Page 21: ENOVIA Report Generator - Dassault Systèmes
Page 22: ENOVIA Report Generator - Dassault Systèmes

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

2.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 TVCReportGenerator –method mxMain

-report=R-002

-oid=1234.5678.90123.4567;

Remember that you need the RPT JAR files in the MX_CLASSPATH, including the tvc.license file.

Page 23: ENOVIA Report Generator - Dassault Systèmes

2.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). For xml based reports use the xml definition e.g. tvc:report /Report.xml

objectId The object ID of the object the report will be made for (in case of structural reports). (This parameter is added automatically when the command is used from a category tree or from a table context).

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.

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

Page 24: ENOVIA Report Generator - Dassault Systèmes

2.6 Integrating with the TVC Structure Browser If the TVC Structure Browser is available, you can increase the usability of the report generator.

2.6.1 Reports in the Side Panel

When working inside the TVC Structure Browser, a common use case for the user is to be able to create a

report against one of the objects inside the table / structure. The normal steps to do this, would be to open

the desired objects category tree (emxTree.jsp) page and select the reports page from there, and then select

the report to create. This is not only a time consuming task, it also makes it harder for the user to come back

to the structure and continuing the work he/she was doing before creating the report.

A better approach would be to utilize the side panel and display the available reports in there, for the

selected object. This is exactly what the command "RPT Show Reports In Sidepanel" does. It is installed with

the report generator, and can be added to any toolbar-menu or context menu inside the structure browser.

When this command is invoked, the available reports for the selected object will appear in the side panel

and the user can create the report directly from the structure browser without the need for leaving the

page.

An example screenshot is shown below:

Figure 4, Structure Browser showing the available reports in the side panel

2.6.2 Table Bean Report

If you want to use the report generator to create a printer friendly page of the content, you can do so by

adding a report definition object of type "RPT Table Bean Report". Then the command you use in the toolbar

should be defined like the example below:

Page 25: ENOVIA Report Generator - Dassault Systèmes

Href: ${ROOT_DIR}/tvc-action/tableBeanReport?reportDefinition=name-of-report

Setting: Submit = True

Target Location = tableHiddenFrame

Only the data inside the table (objects + connections) will be used as input for this kind of report.

Page 26: ENOVIA Report Generator - Dassault Systèmes

2.7 Command Line Invocation It is possible to invoke the report generator from the command line. When RPT 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”. The script itself contains further information how to launch the

report generator.

Page 27: ENOVIA Report Generator - Dassault Systèmes

3 Configuring the Report Generator

3.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 discussed within the installation guide for the TVC.

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 3.9.3 for further details regarding custom mail content.

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

mail.message The message of the mail. See chapter 3.9.3 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 3.9.3 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 mail.your.domain.com

defaultUseLatestFOP Whether or not to use the latest FOP version by default. This value default TRUE.

True

openReportOnComplete If the report is being delivered on-demand, this setting can be used to force open the created

True

Page 28: ENOVIA Report Generator - Dassault Systèmes

report without the user having to click the link. This value default FALSE. NOTE: This can also be configured to apply for all reports in the system as a TVC init parameter (system parameter) through the web.xml file. This parameter is called tvc.reportgenerator.openReportsOnComplete and also defaults to FALSE .

Page 29: ENOVIA Report Generator - Dassault Systèmes

3.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 was introduced with TVC 6.4.0 and 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.

3.2.1 Creating the Instances

Creating the Report Definition instances are simply made from either the ENOVIA 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.

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

Page 30: ENOVIA Report Generator - Dassault Systèmes

3.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 && current == Released

RPT Output Format

Defines the output format of the report. Currently, the following formats are available:

PDF

DOCX

ODT (Open Office)

WML (WordprocessingML)

RTF

PS

TXT

XML

HTML

NOTE: When selecting any of the formats PDF, DOCX, ODT, WML, RTF, PS or TXT, 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 8.1 for details regarding implementation details of pre-process pages.

RPT Conversion Properties Contains parameters in a Java compliant syntax, and controls the behavior of the report processes. Chapter 3.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 2.1 and 2.2 for more information.

Page 31: ENOVIA Report Generator - Dassault Systèmes

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 32: ENOVIA Report Generator - Dassault Systèmes

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

openReportOnComplete True

If the report is being delivered on-demand, this setting can be used to force open the created report without the user having to click the link. This value default FALSE. NOTE: This can also be configured to apply for all reports in the system as a TVC init parameter (system parameter) through the web.xml file. This parameter is called tvc.reportgenerator.openReportsOnComplete and also defaults to FALSE .

Page 33: ENOVIA Report Generator - Dassault Systèmes

3.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 ENOVIA MQL guide. The expansion

report has following attributes defined (on top of the attributes described in chapter 3.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 34: ENOVIA Report Generator - Dassault Systèmes

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

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

8.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 35: ENOVIA Report Generator - Dassault Systèmes

3.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 ENOVIA 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 36: ENOVIA Report Generator - Dassault Systèmes

3.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 37: ENOVIA Report Generator - Dassault Systèmes

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

3.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 38: ENOVIA Report Generator - Dassault Systèmes

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 39: ENOVIA Report Generator - Dassault Systèmes

3.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 40: ENOVIA Report Generator - Dassault Systèmes

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

3.5.5 Data Producers

3.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 3.5.6 for more details).

Page 41: ENOVIA Report Generator - Dassault Systèmes

3.5.5.2 Inquiry

To load the data from an inquiry, it is defined like below:

<Inquiry>

<Name>My Inquiry</Name>

</Inquiry>

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

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

3.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 42: ENOVIA Report Generator - Dassault Systèmes

The JPO method must return a MapList where each Map in the list contains the “id” and optionally the

“id[connection]” key.

Page 43: ENOVIA Report Generator - Dassault Systèmes

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

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

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

Same as for the Flatten element, you can apply the “removeDuplicates” attribute to ensure that you have

unique rows only.

Page 44: ENOVIA Report Generator - Dassault Systèmes

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

3.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 45: ENOVIA Report Generator - Dassault Systèmes

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

3.6 Custom Report Definition In case you have a need for doing something that are 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 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.

3.7 JPO Report Definition 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 3.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 “TVCJPOReportBase”

Page 46: ENOVIA Report Generator - Dassault Systèmes

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 “TVCJPOReportBase”. 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 TVCJPOReportBase has dependencies to some classes from the enoviareportgenerator-zzz.jar

file. Ensure that your MX_CLASSPATH setting contains this file, otherwise your JPO will not work properly.

Page 47: ENOVIA Report Generator - Dassault Systèmes

3.7.1 Custom JPO Example

import matrix.db.Context;

import java.io.PrintWriter;

public class ${CLASSNAME} extends ${CLASS:TVCJPOReportBase} {

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 48: ENOVIA Report Generator - Dassault Systèmes

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

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

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

The “pdf.stamp.text” property may contain a macro. Chapter 3.9.7 describes the possible macros that can

be used.

Page 49: ENOVIA Report Generator - Dassault Systèmes
Page 50: ENOVIA Report Generator - Dassault Systèmes

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

3.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,print

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.

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

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.

Page 51: ENOVIA Report Generator - Dassault Systèmes

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

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.

Page 52: ENOVIA Report Generator - Dassault Systèmes

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 53: ENOVIA Report Generator - Dassault Systèmes

3.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 5 Creating a TVC Number generator

The attributes that controls how the generated names are formatted, is defined as the picture below shows.

Figure 6 Defining attributes that controls the generated number

Page 54: ENOVIA Report Generator - Dassault Systèmes

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

mail.max.fileSize=10m

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 3.9.7 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 behavior, and

send the report to someone else.

The properties below can be used to define other recipients.

mail.to

mail.cc

mail.bcc

The property “mail.max.fileSize” can be used to disable the mail delivery in case the generated report is

equal to or larger than the specified size. The size can be specified in various formats, example:

5000 (5000 bytes)

10k (10 kilobytes)

1.5m (1.5 megabytes)

Page 55: ENOVIA Report Generator - Dassault Systèmes

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

ftp.min.fileSize = 10m

ftp.sendNotification = false (default is true)

The properties ftp.dir and ftp.file may contain macros. Chapter 3.9.7 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}

The property “ftp.min.fileSize” can be used to restrict the delivery of the report via FTP unless the size is

greater than the specified value. See previous chapter regarding the mail delivery handler for details

regarding the format of this value, including how this setting can be used in conjunction with the mail

handler.

The “ftp.sendNotification” property can be used to inform the user about the delivery of the report to the

FTP destination.

3.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 3.9.7 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}

Page 56: ENOVIA Report Generator - Dassault Systèmes

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

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

See chapter 8.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

Page 57: ENOVIA Report Generator - Dassault Systèmes

<?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">

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

Page 58: ENOVIA Report Generator - Dassault Systèmes

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

${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

Page 59: ENOVIA Report Generator - Dassault Systèmes

${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]>

Page 60: ENOVIA Report Generator - Dassault Systèmes

3.10 Configure FOP Version RPT Report Generator comes with two versions of the Apache FOP processor; 1.0 and 0.20.5. Technia

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

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.

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

3.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"/>

...

Page 61: ENOVIA Report Generator - Dassault Systèmes

</Settings>

...

If you don't specify this value per report, the global setting will be used.

Page 62: ENOVIA Report Generator - Dassault Systèmes

3.11 Configuring the Report List Page The page that shows the available reports, either the reports available for a context object or the list of

global reports can be configured in a couple of ways such as the order of the reports and the image to

display for each report.

3.11.1 Sort Order

The sorting of the reports on the list page can be configured through a TVC init parameter (system

parameter) through the web.xml file.

Below are some examples how this init parameter could be applied:

<init-param>

<param-name>tvc.reportgenerator.sortReportsBy</param-name>

<param-value>format,displayname</param-value>

</init-param>

<init-param>

<param-name>tvc.reportgenerator.sortReportsBy</param-name>

<param-value>name</param-value>

</init-param>

<init-param>

<param-name>tvc.reportgenerator.sortReportsBy</param-name>

<param-value>sortorder</param-value>

</init-param>

The first example is the default sort order in RPT if no other configuration has been made. It will sort the

reports first by its format secondly by the display-name.

The second example will sort the reports by their internal name (the name of the business object or the

name of the XML report).

The third example will utilize the sort-order value set on the report. This is either specified on the business

object report through the “RPT Sort Order” attribute, or on the XML report as shown below:

<ExpansionReport>

<SortOrder>10</SortOrder>

NOTE: In order to utilize the sort order in an efficient way, you need to ensure that this value has been set

correctly on the report definitions.

All acceptable values for the init parameter are listed below: (they can be combined by separating them

using the “,” character (comma)).

sortorder

displayname

format

name

Page 63: ENOVIA Report Generator - Dassault Systèmes

By default, the ascending sort order is used, however, a “!” character before the property will force

descending sort order.

Page 64: ENOVIA Report Generator - Dassault Systèmes

3.11.2 Image

You can associate an image to each report. By default, the system will try to figure out what icon to be

shown depending on the output format. To customize what icon to be displayed, you should either use the

attribute “RPT Icon” for business object defined report and for XML reports do as shown below:

<ExpansionReport>

<Icon>/common/images/some-image.png</Icon>

NOTE: The path to the image should be relative to the context root of your application.

Page 65: ENOVIA Report Generator - Dassault Systèmes

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

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

4.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; simply set the column setting “Exclude From Report” to TRUE.

Page 66: ENOVIA Report Generator - Dassault Systèmes

4.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 67: ENOVIA Report Generator - Dassault Systèmes

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 68: ENOVIA Report Generator - Dassault Systèmes

4.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 ENOVIA. This will vary depending on the "ENOVIA 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.

4.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 69: ENOVIA Report Generator - Dassault Systèmes

</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 70: ENOVIA Report Generator - Dassault Systèmes

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

4.5 Stylesheet Import/Include It is possible to import or include another stylesheet that is stored within a page object.

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”/>

Page 71: ENOVIA Report Generator - Dassault Systèmes

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

4.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 72: ENOVIA Report Generator - Dassault Systèmes

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

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

4.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 the developer documentation.

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;

public class ExampleWithPOI extends CustomReport implements DataExtractor {

private static final long serialVersionUID = 1L;

Page 73: ENOVIA Report Generator - Dassault Systèmes

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 74: ENOVIA Report Generator - Dassault Systèmes

5 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

TVC Queue

Queue1

TVC Queue

Queue2

Agent 1 Agent 2 Agent 3 Agent 4

Page 75: ENOVIA Report Generator - Dassault Systèmes
Page 76: ENOVIA Report Generator - Dassault Systèmes

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

As of TVC 2011.2, 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.

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

TVC

Queue

TVC Agent

TVC Job

Page 77: ENOVIA Report Generator - Dassault Systèmes

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.

5.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 78: ENOVIA Report Generator - Dassault Systèmes

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

5.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 5.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 (5.2.2).

Page 79: ENOVIA Report Generator - Dassault Systèmes

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

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

5.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 80: ENOVIA Report Generator - Dassault Systèmes

5.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 81: ENOVIA Report Generator - Dassault Systèmes

5.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 7, 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 82: ENOVIA Report Generator - Dassault Systèmes

5.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 8, User jobs

From this page, the user can download reports that have been created or request jobs not yet being

processed for cancellation.

Page 83: ENOVIA Report Generator - Dassault Systèmes

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

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

6.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 84: ENOVIA Report Generator - Dassault Systèmes

<fo:external-graphic border-width="0">

<xsl:attribute name="src">

url('tvc/reportgenerator/images/tvc_logo_small.gif')

</xsl:attribute>

</fo:external-graphic>

Page 85: ENOVIA Report Generator - Dassault Systèmes

6.3 Charts An alternative to creating charts within the reports by using SVG is to use the chart feature from TVC Core.

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/tvx:enc/EBOMStatus.xml?objectId=<xsl:value-of

select="/report/meta-data/basic[@key='id']"/>

</xsl:attribute>

</fo:external-graphic>

</fo:block>

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.

NOTE: The images are cached; see comment about this in chapter 6.1.

Below is an example of an included chart within a PDF document.

Page 86: ENOVIA Report Generator - Dassault Systèmes
Page 87: ENOVIA Report Generator - Dassault Systèmes

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

7.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 88: ENOVIA Report Generator - Dassault Systèmes

<!-- 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-x.y.z.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 89: ENOVIA Report Generator - Dassault Systèmes

7.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 90: ENOVIA Report Generator - Dassault Systèmes

8 Extended Configuration Possibilities

8.1 Webform as Pre Process Page As of 2011.1, 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 (not part of TVC / RPT Report generator).

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

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

An example of a pre-process page is provided among the web-application files that are installed with the

report generator: “tvc/reportgenerator/SamplePreProcessPage.jsp”.

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

Page 91: ENOVIA Report Generator - Dassault Systèmes

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 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 92: ENOVIA Report Generator - Dassault Systèmes

8.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/>"

8.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 93: ENOVIA Report Generator - Dassault Systèmes

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

8.2.5 Selecting Printer

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 94: ENOVIA Report Generator - Dassault Systèmes

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>

Page 95: ENOVIA Report Generator - Dassault Systèmes

9 Client Script A client script is included in the distribution. Use one of the provided start scripts (Windows and UNIX shell

scripts available) with some modifications. The modifications required are defined in the sub chapters

below.

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:

Client.sh

Client.bat

The script has been made as generic as possible and to use it, you will typically invoke the script with the

following arguments:

The first things you need to modify within these scripts are the following variables:

Variable Name Description USER The name of the user, who is running the report

PASS The password for this user

OBJECT_ID The id of the object, for which the report is being created

REPORT The name of the report to create

TARGET_FILE The name of the file, which will contain the generated report. If this is set to empty:

1. All output handlers and converters are disabled

2. The extracted XML is returned

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. Example: WEBAPP_ROOT_DIR=d:\apps\apache-tomcat-6.0.29\webapps\enovia

QUEUE_NAME The name of the queue to use (leave empty for no queue)

DEBUG TRUE or FALSE. Defines the amount of output from the report generator.

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

HEAP_SIZE The size of the heap

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.