Parametrize Mapping in 7.1

Hi,
New concepts Parametrize Mapping in 7.1. How can we use and acheive in PI 7.1?
Why it is required?
Sameer

Hi Sameer,
Let me give you one simple example for your understanding.
Say you have a Mapping where input has First Name and Last Name. Your target has the field Full Name.Now imagine you have to send this data to 3 different receivers. Receiver A expects the first and last name to be concatenated separated by a space, while B expects a . (period) and C expects a _ (underscore).
With parametrized mapping, you can now specify this in runtime in ID. So with a single mapping you can handle all this conditions and also in case tomorrow there is a new system added which expect a # between the first and last name, all you need is a minor change in your ID in PRD rather than transporting your mapping from Dev -> QA -> PRD.
Just a minor example. Hope you understand the usage.
Abid Mazhar

Similar Messages

  • XSLT mapping calls Java class, with hardcoded values-problem at Transport

    Hi All,
    I know the subject may be  misguiding, but i need some suggestions how to handle the following scenario.
    From my XSLT mapping, i am calling a java function which performs a data connection to an oracle database and then returns some values, whcih i have mapped in the mapping.
    The problem is, i have hardcoded the Connection parameters....
    and now that we transport these objects to production, the connection parameters will change.
    I thought of two solutions
    1) i create a new java class for Production system
    2) i define the parameters as input arguemnts to my method, whcih is called from XSLT mapping
    But in both cases, if theres any chg in future, there will a dependancy on one of the objects to be changed and sent again.
    What is the suggested way? is there nothing like a property file(like in EP), where you define dependant parameters...and the file is only changed.
    XI Gurus, please suggest me the correct way to handle.....
    Thanks a lot.
    Mona

    Mona,
    This is what i do..
    1) Parametrize ur current calling class,
    2) define a separate class called dbConnect.java there, you have all your parameters that way when there is a change your main program is untouched, and you just need to change the dbconnect.
    The call from your current class will be just like
    dbConnect.Runsql("sql as a string");
    the runSql can then internally call
    dbConnect().connect(); //that should do the connection opening.
    then create a prepared statement from your string input and call the db.......
    this is the implementation that would be best suited for your scenario, you can further parametrize the method to where you can add the database params from the calling xml..so all that needs to be done when the machine is changed or any param is changed is ..modify the xml........not too bad was that.....
    Regards
    Ravi

  • How to prevent java mapping from reloading before each message?

    Hi!!!
    I've written a simple java mapping (XI 2.0): "Content Enricher" transformation
    (source system doesn't send some key information required by target system).
    It works fine.
    Then I wanted to put some parametrization data into the database.
    I added some code to load this data only once into my data structures in the memory.
    I also works fine.
    But the problem is that SAP XI uses MappingLoader/MappingResolver
    to load jar file during transformation of every message.
    In a such situation I lose all data and my code has to connect
    to the database again (what is not good because of performance).
    The question is:
    how to configure SAP XI/where to put my code
    to achieve a such behaviour: only once my code would load
    parametrization from db and then "normal" java mapping could
    use it during messages transformation without impact
    on the performance?
    Regards,
    Andrzej Filusz

    Hi!!!
    Thanks for your answer, but I'm afraid that your solution: singleton pattern doesn't solve my problem.
    When XI reload my java mapping classes, all loaded and kept data are lost. Singleton pattern can't prevent it.
    I asked SAP about this problem: in XI 3.0 the classes will only be reloaded when a cache refresh has really taken place. But they won't implement this improved behaviour in XI 2.0.
    Regards,
    Andrzej Filusz

  • Acessing J2EE Keystore at Mapping runtime

    Guys,
    My scenario: to perform a digital signature under some specific parametrization, as requested by receiver side, I have to develop a custom digital signature application. We are trying to use XI's API for digital signature: http://help.sap.com/saphelp_nw04s/helpdata/en/4f/65c3b32107964996a56e4165077e24/frameset.htm
    And also, as requested by receiver side, the actual XML message will need to be enveloped as a string in the message definition of the WSDL (wrapped/literal mode). Hence, we can't execute the digital signature application in a adapter module (where it would be "easy" to perform it).
    Hence, we need to perform the digital signature at mapping runtime, before the signed message is wrapped as a string in the wsdl message.
    We have faced some problems related to the API (specially related to poor documentation ) but right now we are stuck at acessing the J2EE Keystore from the java mapping program.
    Have you guys performed this before?
    Any hints will be appreciated.
    Regards,
    Henrique.

    This is a 5 year old thread, I hardly remember the details of that implementation, since I've long left that development team.
    But going through my old files, this is what I was able to recall:
    I ended up discontinuing the Java Mapping idea and went for a XML DigSig EJB, exposed as a web service (not just because it was easier to make it work, but also for maintenance, it was easier to track a full blown project in NWDI instead of a Java Mapping, which usually just exists in the developer's workspace);
    I had two Projects, a DigitalSignatureBean (the EJB project), including the core signature functionality, and a DigitalSignature (the EAR project), including the .jar for the EJB project + the 4 other .jars I had in the project;
    for the digital signature part itself, I ended up using the tc_sec_ssf.jar and aii_security_lib.jar libraries (both of which, you can find in a PI 7.0 box, not sure about newer versions though);
    Here is what my main class code looked like:
    * Created on Sep 28, 2007
    * To change the template for this generated file go to
    * Window>Preferences>Java>Code Generation>Code and Comments
    package com.sap.xnfe.dsig.core;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.security.KeyStore;
    import java.security.KeyStoreException;
    import java.security.cert.CertificateExpiredException;
    import java.security.cert.CertificateNotYetValidException;
    import java.security.cert.X509Certificate;
    import org.w3c.dom.Element;
    import com.sap.aii.af.service.resource.SAPSecurityResources;
    import com.sap.aii.security.lib.KeyStoreManager;
    import com.sap.aii.security.lib.PermissionMode;
    import com.sap.engine.lib.xml.signature.Constants;
    import com.sap.security.core.server.ssf.SsfDataXML;
    import com.sap.security.core.server.ssf.SsfInvalidAlgException;
    import com.sap.security.core.server.ssf.SsfInvalidDataException;
    import com.sap.security.core.server.ssf.SsfInvalidKeyException;
    import com.sap.security.core.server.ssf.SsfPabKeyStore;
    import com.sap.security.core.server.ssf.SsfProfileKeyStore;
    import com.sap.security.core.server.ssf.SsfRefXMLInfo;
    import com.sap.security.core.server.ssf.SsfRefXMLList;
    import com.sap.security.core.server.ssf.SsfSigRcpList;
    * @author I813314
    * To change the template for this generated type comment go to
    * Window>Preferences>Java>Code Generation>Code and Comments
    public class XMLData {
              private SsfDataXML data = null;
              public XMLData(Element elmt) throws InvalidXMLDataException {
                        if (elmt == null) {
                                  throw new InvalidXMLDataException("Empty input data!");
                        } else
                                  try {
                                            this.data = new SsfDataXML(elmt);
                                  } catch (SsfInvalidDataException e) {
                                            throw new InvalidXMLDataException(
                                                      "Invalid input data: " + e.getMessage());
              public boolean sign(
                        String KeyStoreView,
                        String KeyStoreEntry,
                        String ReferenceId,
                        String sigPrefix,
                        boolean checkCert,
                        OutputStream out)
                        throws XMLSignatureException {
                        boolean res = false;
                        //                    create list of references
                        String trans[] =
                                            SsfRefXMLInfo.TRANS_ENVELOPED_SIGNATURE,
                                            SsfRefXMLInfo.TRANS_C14N_OMIT_COMMENTS };
                        SsfRefXMLList refList = new SsfRefXMLList();
                        refList.add(new SsfRefXMLInfo("#" + ReferenceId, trans));
                        //                    get Profile from keystore service of AS Java
                        SsfProfileKeyStore profile = null;
                        try {
                                  SAPSecurityResources secRes = SAPSecurityResources.getInstance();
                                  KeyStoreManager manager =
                                            secRes.getKeyStoreManager(PermissionMode.SYSTEM_LEVEL);
                                  KeyStore keyStore = manager.getKeyStore(KeyStoreView);
                                  profile = new SsfProfileKeyStore(keyStore, KeyStoreEntry, null);
                        } catch (KeyStoreException e) {
                                  throw new XMLSignatureException(
                                            "Error accessing KeyStore: " + e.getMessage());
                        //                    Check the certificate's validity
                        if (checkCert) {
                                  String sName = null;
                                  try {
                                            X509Certificate cert = profile.getCertificate();
                                            sName = cert.getSubjectDN().getName();
                                            cert.checkValidity();
                                  } catch (CertificateExpiredException e) {
                                            throw new XMLSignatureException(
                                                      "Certificate for "
                                                                + sName
                                                                + " not valid: Valid date expired./n"
                                                                + e.getMessage());
                                  } catch (CertificateNotYetValidException e) {
                                            throw new XMLSignatureException(
                                                      "Certificate for "
                                                                + sName
                                                                + " not valid: Initial valid date in the future./n"
                                                                + e.getMessage());
                        //                    sign the data
                        try {
                                  if (sigPrefix == null) {
                                            sigPrefix = "";
                                  Constants.setSTANDARD_PREFIX(sigPrefix);
                                  res =
                                            data.sign(
                                                      null,
                                                      refList,
                                                      profile,
                                                      SsfDataXML.INC_CERT_OWN,
                                                      false,
                                                      false);
                                  if (!res) {
                                            throw new XMLSignatureException("Creation of signature failed.");
                        } catch (SsfInvalidKeyException e) {
                                  throw new XMLSignatureException(
                                            "Invalid Private Key: " + e.getMessage());
                        } catch (SsfInvalidAlgException e) {
                                  throw new XMLSignatureException(
                                            "Invalid Algorithm: " + e.getMessage());
                        //                    write output data
                        try {
                                  data.writeTo(out);
                        } catch (IOException e) {
                                  throw new XMLSignatureException(
                                            "Error writing output data:" + e.getMessage());
                        return res;
              public boolean verify(String KeyStoreView) throws XMLSignatureException {
                        boolean res = false;
                        //                    create list of signers or recipients
                        SsfSigRcpList sigList = new SsfSigRcpList();
                        //                    get Personal Addres Book from keystore service of AS Java
                        SsfPabKeyStore pab = null;
                        if (KeyStoreView != null && !KeyStoreView.equals("")) {
                                  try {
                                            SAPSecurityResources secRes =
                                                      SAPSecurityResources.getInstance();
                                            KeyStoreManager manager =
                                                      secRes.getKeyStoreManager(PermissionMode.SYSTEM_LEVEL);
                                            KeyStore keyStore = manager.getKeyStore(KeyStoreView);
                                            pab = new SsfPabKeyStore(keyStore);
                                  } catch (KeyStoreException e) {
                                            throw new XMLSignatureException(
                                                      "Error accessing KeyStore: " + e.getMessage());
                        //                    verify the data
                        try {
                                  res = data.verify(pab, sigList);
                        } catch (SsfInvalidDataException e) {
                                  throw new XMLSignatureException(
                                            "Validation of signature failed: " + e.getMessage());
                        return res;

  • Mapas

    Que paso con la actualizacion de Google Maps en el Celular Iphone 4S. Gracias

    Os mapas de imobilizados  PT ( Portugal ) separam os bens que sofreram reavaliações  ,  diferenciando   os que estavam totalmente amortizados  na data da reavaliação   como exemplo temos o mapa 33.11 e 33.12 .
    A parametrização tem que mostrar como  separamos os bens que estão ou não totalmente  amortizados no momento da reavaliação .  isso está feito  e assim ocorre em outras empresas.
    Anotar que estamos a falar de activos que  migraram de outro sistema para o  SAP , não de activos criados e reavalidados em SAP . Os activos quando carregados em SAP já tinham a informação da revaliação .
    O problema é que  a informação dos activos  nos mapas de amortização  está trocada , o que m e sai no mapa 33.11 deveria sair no mapa 33.12  e vice versa . 
    As transações que utilizo são as seguintes :
    S_P99_41000033 e S_P99_41000034

  • Mapas fiscais de imobilizado PT - Informação trocada

    Tenho o seguinte problema :
    ao sacar os mapas de imobilizado estes  estão trocados , a informação de 33.11 sai no 33.12 e sucessivamente , as parametrizações estão correctas inclusive o valor  influente para os activos  totalmente amortizado aquando da reavaliação .
    alguem sabe como ultrapassar isto ?

    Os mapas de imobilizados  PT ( Portugal ) separam os bens que sofreram reavaliações  ,  diferenciando   os que estavam totalmente amortizados  na data da reavaliação   como exemplo temos o mapa 33.11 e 33.12 .
    A parametrização tem que mostrar como  separamos os bens que estão ou não totalmente  amortizados no momento da reavaliação .  isso está feito  e assim ocorre em outras empresas.
    Anotar que estamos a falar de activos que  migraram de outro sistema para o  SAP , não de activos criados e reavalidados em SAP . Os activos quando carregados em SAP já tinham a informação da revaliação .
    O problema é que  a informação dos activos  nos mapas de amortização  está trocada , o que m e sai no mapa 33.11 deveria sair no mapa 33.12  e vice versa . 
    As transações que utilizo são as seguintes :
    S_P99_41000033 e S_P99_41000034

  • Typesafe hetergeneous map to collection

    I was trying to work out a variant of the Bruce Eckel's Typesafe Heterogeneous Container pattern where the map retrieved a collection of a given type. This works if I fix the collection type:
    public class Favorites
        private Map<Class<?>, Set<?>> favorites =
                new HashMap<Class<?>, Set<?>>();
        public <T> void setFavorite(Class<T> klass, Set<T> thing)
            favorites.put(klass, thing);
        @SuppressWarnings({"unchecked"})
        public <T> Set<T> getFavorite(Class<T> klass)
            return (Set<T>) favorites.get(klass);
        public static void main(String[] args)
            Favorites f = new Favorites();
            final HashSet<String> strings = new HashSet<String>();
            strings.add("Java"); strings.add("Code");
            f.setFavorite(String.class, strings);
            final HashSet<Integer> ints = new HashSet<Integer>();
            ints.add(0xcafebabe); ints.add(1);
            f.setFavorite(Integer.class, ints);
            Set<String> s = f.getFavorite(String.class);
            System.out.println(s);
            Set<Integer> i = f.getFavorite(Integer.class);
            System.out.println(i);
    }but I would like to do something where I can parametrize Favorites on the collections class:
    public class Favorites<C extends Collection<?>>
        private Map<Class<?>, C<?>> favorites =
                new HashMap<Class<?>, C<?>>();
        public <T> void setFavorite(Class<T> klass, C<T> thing)
            favorites.put(klass, thing);
        @SuppressWarnings({"unchecked"})
        public <T> C<T> getFavorite(Class<T> klass)
            return (C<T>) favorites.get(klass);
        public static void main(String[] args)
            Favorites<Set> f = new Favorites<Set>();
            final HashSet<String> strings = new HashSet<String>();
            strings.add("Java"); strings.add("Code");
            f.setFavorite(String.class, strings);
            final HashSet<Integer> ints = new HashSet<Integer>();
            ints.add(0xcafebabe); ints.add(1);
            f.setFavorite(Integer.class, ints);
            Set<String> s = f.getFavorite(String.class);
            System.out.println(s);
            Set<Integer> i = f.getFavorite(Integer.class);
            System.out.println(i);
    }However this won't compile because the compiler doesn't expect that "C" can itself take type parameters, even though I specified that it extended Collection<?>.
    Is there any way to generify Favorites over the Collection class?

    BenSchulz wrote:
    you may want look into [Super Type Tokens|http://gafter.blogspot.com/2006/12/super-type-tokens.html], but be aware of [their limitations|http://gafter.blogspot.com/2007/05/limitation-of-super-type-tokens.html].
    That is really cool Ben. I never considered forcing reification through an abstract class and anonymous inner subclasses before.
    I love Gafter. Most of the time I read something of his it's in the context of a smelly design (well, to be fair, most of what I've read comes from his puzzlers) but even so, without fail it leaves me with more insight into the language.

  • JSF  & parametrization

    Going thru the examples in EA3, I see a lot of tight coupling in the Java code. For example, the mapping between the component and renderers, various listeners for the application & command events etc.
    Why can't an xml file be used to specify these mapping? This decoupling would enable changes to the mapping easily without recompiling the Java code.
    May be Sun can develop a GUI to go with the parametrization as well.

    I tnink that this is the idea. This is only a early version.

  • Remote System and Remote Key Mapping at a glance

    Hi,
    I want to discuss the concept of Remote System and Remote Key Mapping.
    Remote System is a logical system which is defined in MDM Console for a MDM Repository.
    We can define key mapping enabled at each table level.
    The key mapping is used to distinguish records at Data Manager after running the Data Import.
    Now 1 record can have 1 remote system with two different keys but two different records cannot have same remote system with same remote key. So, Remote key is an unique identifier for record for any remote system for each individual records.
    Now whenever we import data from a Remote System, the remote system and remote key are mapped for each individual records. Usually all records have different remote keys.
    Now, when syndicating back the record with default remote key is updated in the remote system that is sent by xml file format.
    If same record is updated two times from a same remote system, the remote key will be different and the record which is latest contains highest remote key.
    Now, I have to look at Data Syndication and Remote key.
    I have not done Data Syndication but my concept tell if there is duplicate record with same remote system but different remote keys both will be syndicated back. But if same record have two remote keys for same remote system then only the default remote key is syndicated back.
    Regards
    Kaushik Banerjee

    You are right Kaushik,
    I have not done Data Syndication but my concept tell if there is duplicate record with same remote system but different remote keys both will be syndicated back.
    Yes, but if they are duplicate, they needs to be merged.
    But if same record have two remote keys for same remote system then only the default remote key is syndicated back.
    This is after merging. So whichever remote key has tick mark in key mapping option(default) , it will be syndicated back.
    Pls refer to these links for better understanding.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/uuid/80eb6ea5-2a2f-2b10-f68e-bf735a45705f
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/uuid/7051c376-f939-2b10-7da1-c4f8f9eecc8c%0c
    Hope this helps,
    + An

  • Error while deleting a mapping

    Hi all,
    I am getting the following error while deleting a mapping. My client version is 10.2.0.4.36
    API5072: Internal Error: Null message for exception. Please contact Oracle Support with the stack trace and details on how to reproduce it.
    oracle.wh.util.Assert: API5072: Internal Error: Null message for exception. Please contact Oracle Support with the stack trace and details on how to reproduce it.
         at oracle.wh.util.Assert.owbAssert(Assert.java:51)
         at oracle.wh.ui.jcommon.OutputConfigure.showMsg(OutputConfigure.java:216)
         at oracle.wh.ui.common.CommonUtils.error(CommonUtils.java:370)
         at oracle.wh.ui.common.WhDeletion.doActualDel(WhDeletion.java:512)
         at oracle.wh.ui.common.WhDeletion.deleteObject(WhDeletion.java:203)
         at oracle.wh.ui.common.WhDeletion.deleteObject(WhDeletion.java:283)
         at oracle.wh.ui.jcommon.tree.WhTree.deleteItem(WhTree.java:346)
         at oracle.wh.ui.console.commands.DeleteCmd.performAction(DeleteCmd.java:50)
         at oracle.wh.ui.console.commands.TreeMenuHandler$1.run(TreeMenuHandler.java:188)
         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:189)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:478)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    Thanks in advance!
    Sebastian

    These type of Internal Errors are all too common in OWB and it's difficult to diagnose the exact problem.
    I'd suggest closing the Design Centre, going back in and trying to delete it again, this will often resolve Internal errors.
    There's also an article on Metalink Doc ID: 460411.1 about errors when deleting mappings but it's specific to an ACLContainer error, so may or may not be of use.
    One of the suggestions is to connect as the Repository Owner rather than a User and try to delete the mapping.
    Cheers
    Si
    Edited by: ScoobySi on Sep 10, 2009 11:44 AM

  • FileName in ABAP XSLT Mapping

    Dear SDN,
    In an integration scenario we are using sender File Adapter and a  ABAP XSLT Mapping.
    Is there any way to get the source FileName from such mapping.  Im trying to use the adapter-specific message attributes, but it doesn't work, and I didn´t find an example, probably I and doing somthing wrong.
    regards,
    GP

    Thank you for your help,
    I just try to access the adapter-specific attibutes using:
    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:key="java:com.sap.aii.mapping.api.DynamicConfigurationKey">
    <xsl:variable name="filename"  select="key:create('http://sap.com/xi/XI/System/File', 'Directory')" />
    </xsl:stylesheet>
    but the following error raised:
    <SAP:Stack>Error while calling mapping program YXSLT_TEST (type Abap-XSLT, kernel error ID CX_XSLT_RUNTIME_ERROR) Call of unknown function</SAP:Stack>
    have you had this situation?

  • Sample source code for fields mapping in expert routine

    Hi All
    Iam writing the expert routine from dso to cube for example I have two fields in dso FLD1,FLD2
    same fields in infocube also ,can any body provide me sample abap code to map source fields to target fields in expert routine,your help will be heighly appreciatble,it's an argent.
    regards
    eliaz

    Basic would be ;
    RESULT_FIELDS -xxx = <SOURCE_FIELDS> -xxx
    you have the source fields as source, and result fields for as the target. In between you can check some conditions as in other routines of transformation.
    BEGIN OF tys_SC_1, shows your source fields ( in your case DSO chars and key figures)
    BEGIN OF tys_TG_1, , shows your result fields ( in your case Cube characteristics)
    Hope this helps
    Derya

  • How can I distinguish different action mapping in one ActionClass file?

    I would like to create a ActionClass which will handle 3 mapping which comes from /add, /show or /del.
    My question is how can I change the code so that the ActionClass servlet can distinguish the request from different url mapping ? Can anyone give me some short hints? Thx.
    struts-config.xml
    <action-mappings>
    <action name="MemberInfoForm" path="/add" scope="request" type="com.myapp.real.MemberAction">
    <action name="MemberInfoForm" path="/show" scope="request" type="com.myapp.real.MemberAction">
    <action name="MemberInfoForm" path="/del" scope="request" type="com.myapp.real.MemberAction">
    </action-mappings>MemberAction.class
    public class MemberAction extends org.apache.struts.action.Action {
        private final static String SUCCESS = "success";
        public ActionForward execute(ActionMapping mapping, ActionForm  form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
            return mapping.findForward(SUCCESS);
    ...

    http://struts.apache.org/1.2.x/api/org/apache/struts/actions/MappingDispatchAction.html
    http://struts.apache.org/1.2.x/api/org/apache/struts/actions/DispatchAction.html
    Thank you so much for all of your suggestion.
    I read the document of MappingDispatchAction and its note say:
    NOTE - Unlike DispatchAction, mapping characteristics may differ between the various handlers, so you can combine actions in the same class that, for example, differ in their use of forms or validation.........
    I wonder in DispatchAction, we can also have various forms or validation as MappingDispatchAction does, just by using different name in the action tag, for example:
    <action input="/p1.jsp" name="MForm1" path="/member" scope="session" parameter="action" type="com.myapp.real.MemberAction">
    <action input="/p2.jsp" name="MForm2" path="/member" scope="session" parameter="action" type="com.myapp.real.MemberAction">
    <action input="/p3.jsp" name="MForm3" path="/member" scope="session" parameter="action" type="com.myapp.real.MemberAction">Hence, it is not the difference as stated from the NOTE, right?
    Edited by: roamer on Jan 22, 2008 10:32 AM

  • How can I save to the same map every time when printing pdfs?

    How can I save to the same map every time when printing pdfs?
    Finder points to the document map even when I chose a different map recently.
    I often print series of pdfs from the print dialog box, I'd like to choose the map to save to and then have all subsequent pdf prints automatically directed to the same map until I decide otherwise.

    that link seems to be broken right now:
    403 Error - Forbidden  - No cred, dude.

  • Sensor Mapping Express VI's performanc​e degrades over time

    I was attempting to do a 3d visualization of some sensor data. I made a model and managed to use it with the 3d Picture Tool Sensor Mapping Express VI. Initially, it appeared to work flawlessly and I began to augment the scene with further objects to enhance the user experience. Unfortunately, I believe I am doing something wrong at this stage. When I add the sensor map object to the other objects, something like a memory leak occurs. I begin to encounter performance degradation almost immediately.
    I am not sure how I should add to best add in the Sensor Map Object reference to the scene as an object. Normally, I establish these child relationships first, before doing anything to the objects, beyond creating, moving, and anchoring them. Since the Sensor Map output reference is only available AFTER the express vi run. My compromise solution, presently, is to have a case statement of controlled by the"First Call" constant. So far, performace seems to be much better.
    Does anyone have a better solution? Am I even handling these objects the way the community does it?
    EDIT: Included the vi and the stl files.
    Message Edited by Sean-user on 10-28-2009 04:12 PM
    Message Edited by Sean-user on 10-28-2009 04:12 PM
    Message Edited by Sean-user on 10-28-2009 04:16 PM
    Solved!
    Go to Solution.
    Attachments:
    test for forum.vi ‏105 KB
    chamber.zip ‏97 KB

    I agree with Hunter, your current solution is simple and effective, and I can't really visualize a much better way to accomplish the same task.
    Just as a side-note, the easiest and simplest way to force execution order is to use the error terminals on the functions and VIs in your block diagram. Here'a VI snippet with an example of that based on the VI you posted. (If you paste the image into your block diagram, you can make edits to the code)
    Since you expressed some interest in documentation related to 3D picture controls, I did some searching and found a few articles you might be interested in. There's nothing terribly complex, but these should be a good starting point. The first link is a URL to the search thread, so you can get an idea of where/what I'm searching.You'll get more hits if you search from ni.com rather than ni.com/support.
    http://search.ni.com/nisearch/app/main/p/q/3d%20pi​cture/
    Creating a 3D Scene with the 3D Picture Control
    Configuring a 3D Scene Window
    Using the 3D Picture Control 'Create Height Field VI' to convert a 2D image into a 3D textured heigh...
    Using Lighting and Fog Effects in 3d Picture Control
    3D Picture Control - Create a Moving Texture Using a Series of Images
    Changing Set Rotation and Background of 3D Picture Control
    Caleb Harris
    National Instruments | Mechanical Engineer | http://www.ni.com/support

Maybe you are looking for

  • How to change the default currency in CJ32 and CJ33

    Dear all, As required by the user, I want to know how to change the default currency from controlling area currency to object currency in TCODE CJ32 and CJ33. Currently, the controlling area currency will be defaulted in the field "Views in". Could a

  • Accidentlly removed ios while installing win 8.1 on macbook air

    hi everybody.. I just accidently erase my MacBook ios while installing windows,actually I format the ios partition and now when I restart Mac and pressing command bottom it's just windows system comes up and there is no Macintosh  option is available

  • IMac startup failure

    Earlier today my iMac crashed in a whole new way for me. The display tore (best way I can think to decribe it) then went to a gray screen. I waited hoping it fix itself, but the random colors started flashing on the screen. I had booted then restartw

  • Lightroom 4 Help shows up in an Asian language. How do I change to Dutch or English ?

    Lightroom 4 Help shows up in an Asian language. How do I change to Dutch or English ?

  • 507 HTTP Error

    We are getting a strange error which I can't track down. Every site is working fine other than one particular domain. We are getting HTTP Error 507 507 Unexpected when we try to run any .asp page. What's even more strange is that I get this error mes