Beispiel: Bidirektionale Transformation von Daten des Typs DataObject

Wenn Sie Informationen in einem Script mit bidirektionaler Sprache verwenden, müssen Sie das Format der Daten unter Umständen umwandeln. Dieses Beispiel enthält eine schrittweise Anleitung zur Entwicklung von Code, der Daten des Typs DataObject umwandelt.

Gründe und Szenarios für die Ausführung dieser Task

Wenn Sie bei IBM WebSphere Process Server, Version 6.0.0 JDK 1.4.1 für die Betriebssysteme Windows , AIX oder Linux verwenden, müssen Sie diese Klassen nicht installieren.

Für das Modul ist es erforderlich, dass Informationen des Typs DataObject von einem bidirektionalen Format in ein anderes umgewandelt werden.

Anmerkung: Weitere Informationen zu diesen Formaten finden Sie im Abschnitt Werte für die bidirektionale Formatierzeichenfolge[/task/taskbody/context/note/xref/desc {" topic/desc "}) Die Werte für die Zeichenfolge des bidirektionalen Sprachenformats steuern die Transformation von bidirektionaler Schrift von einem Format in ein anderes Format. (desc].

Schritte für diese Task

  1. Schließen Sie alle Klassen ein, die die Implementierung der Engine für die bidirektionale Unterstützung enthalten.
    import com.ibm.bidiTools.bdlayout.*;
  2. Schließen Sie alle Klassen ein, die zum Manipulieren des DataObject erforderlich sind.
    import commonj.sdo.DataObject;
    import commonj.sdo.Type;
    import commonj.sdo.Property;
  3. Definieren Sie Zeichenfolgevariablen, die später die verschiedenen Zeichenfolgentypen des DataObject-Objekts enthalten werden. Dieser Schritt ermöglicht eine Filterung der Attribute des Typs String, während das DataObject rekursiv durchlaufen wird.
    String STRING_STR_TYPE = "String"; 
    String NORM_STRING_STR_TYPE = "normalizedString";
    String TOKEN_STR_TYPE = "token"; 
    String LANG_STR_TYPE = "language"; 
    String NAME_STR_TYPE = "Name"; 
    String NMTOKEN_STR_TYPE = "NMTOKEN"; 
    String NCNANE_STR_TYPE = "NCName"; 
    String ID_STR_TYPE = "ID"; 
    String IDREF_STR_TYPE = "IDREF"; 
    String IDREFS_STR_TYPE = "IDREFS"; 
    String ENTITY_STR_TYPE = "ENTITY"; 
    String ENTITIES_STR_TYPE = "ENTITIES";
  4. Definieren Sie eine Funktion, die prüft, ob ein Merkmal den Typ "String" hat.
    private static boolean isStringFamilyType (Property property) { 
        boolean rc = false; 
        if ((property.getType().getName().equalsIgnoreCase(STRING_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(NORM_STRING_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(TOKEN_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(LANG_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(NAME_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(NMTOKEN_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(NCNANE_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(ID_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(IDREF_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(IDREFS_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(ENTITY_STR_TYPE)) ||
        (property.getType().getName().equalsIgnoreCase(ENTITIES_STR_TYPE))) 
           rc = true; 
         return rc; 
    }
  5. Definieren Sie eine rekursive Funktion, die die bidirektionale Transformation auf das gesamte DataObject anwendet.
    Anmerkung: Die Codierlogik beinhaltet die im Folgenden beschriebenen grundsätzlichen Voraussetzungen.
    • Die bidirektionale Transformation wird nur auf Merkmale des Typs String (Zeichenfolgen) angewendet
    • Die Merkmale des Typs String im DataObject besitzen ein einheitliches bidirektionales Format
    DataObject BiDiDataObjTransformationBO(DataObject boIn, String formatIn, String formatOut){ 
    
       Type type; 
       Property property; 
    
       if (boIn == null) return null; 
    
       type = boIn.getType(); 
       List propertyList = type.getProperties(); 
       for (int propertyNumber = 0; propertyNumber < propertyList.size(); propertyNumber++){ 
             property = (Property) propertyList.get(propertyNumber); 
             String propertyName = property.getName();
    1. Alle Merkmale, die keine Zeichenfolgen sind, werden übersprungen.
             if (!isStringFamilyType(property)) 
                   continue;
      
             if (property.isContainment()) { 
                  if (property.isMany()) { 
                        List childsList = boIn.getList(property); 
    2. Rufen Sie die Transformation rekursiv für die untergeordneten Objekte auf.
       
                        for (int childNumber = 0; childNumber < childsList.size(); 
      		   childNumber++){                   BiDiDataObjTransformationBO(connectionContext, 
      											 ((DataObject)childsList.get(childNumber)),formatIn, formatOut); 
                    } 
                } else {
    3. Rufen Sie die Transformation rekursiv für die untergeordneten Objekte aller enthaltenen Business-Objekte auf.
                    BiDiDataObjTransformationBO(connectionContext, 
      			            ((DataObject)boIn.get(property)),formatIn, formatOut); 
               } 
           } else {
    4. Wandeln Sie die einfachen Zeichenfolgenattribute um.
               String str = BiDiStringTransformation(
                   (boIn.getString(propertyName),formatIn, formatOut); 
               boIn.setString(propertyName, str); 
           } 
         } 
         return boIn; 
      }

Terms of use |

Last updated: Tue Mar 21 09:38:41 2006

(c) Copyright IBM Corporation 2005, 2006.
This information center is powered by Eclipse technology (http://www.eclipse.org)