WebSphere Enterprise Service Bus for z/OS バージョン 6.2.0 オペレーティング・システム: z/OS


データ・オブジェクトの双方向言語形式の変換

外部のエンタープライズ情報システム (EIS) との間でやり取りするデータについて、サービス・データ・オブジェクトをサポート対象の双方向言語形式に変換したり、WebSphere® ESB から外部の EIS に送信するデータをその特定 EIS で使用されている双方向言語形式に変換したりする API を作成できます。

始める前に

双方向言語サポートについて詳しくは、『グローバリゼーション』を参照してください。 『グローバリゼーション』に記載されている表を参照して、DataObject タイプのデータの形式変換を実行するときに使用する入力ストリングまたは出力ストリングの正しい値を確認できます。

データ・オブジェクトの双方向言語形式を変換するための API を作成するには、以下の手順を実行します。

手順
  1. 双方向エンジン実装が含まれているすべての双方向クラスを組み込みます。 例えば、次のようにします。
    import com.ibm.bidiTools.bdlayout.*;
  2. DataObject タイプのオブジェクトを操作するために必要なすべてのクラスを組み込みます。 例えば、次のようにします。
    import commonj.sdo.DataObject;
    import commonj.sdo.Type;
    import commonj.sdo.Property;
  3. DataObject タイプのオブジェクトに含まれているさまざまなタイプのストリングを組み込むためのストリング変数を定義します。このようにして、DataObject を再帰的に処理しながら、String タイプの属性をフィルターにかけます。 例えば、次のようにします。
    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. プロパティーのタイプが String かどうかを検証するための関数を定義します。 例えば、次のようにします。
    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. 双方向変換を DataObject 全体に適用するための再帰的関数を定義します。
    注: コード・ロジックには、以下の前提を含めます。
    • String タイプのプロパティーのみに双方向変換を適用します。
    • DataObject の String タイプのプロパティーを 1 つの双方向形式で格納します。
    例えば、次のようにします。
    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. String 以外のすべてのプロパティーをスキップします。 例えば、次のようにします。
             if (!isStringFamilyType(property)) 
                   continue; 
      
             if (property.isContainment()) { 
                  if (property.isMany()) { 
                        List childsList = boIn.getList(property);
    2. 子オブジェクトを処理する変換を再帰的に呼び出します。 例えば、次のようにします。
       
                        for (int childNumber = 0; childNumber < childsList.size(); 
      		   childNumber++){                   BiDiDataObjTransformationBO(connectionContext, 
      		 ((DataObject)childsList.get(childNumber)),formatIn, formatOut); 
                    } 
                } else { 
    3. 組み込まれているビジネス・オブジェクトの子オブジェクトを処理する変換を再帰的に呼び出します。 例えば、次のようにします。
                    BiDiDataObjTransformationBO(connectionContext, 
      	     ((DataObject)boIn.get(property)),formatIn, formatOut); 
               } 
           } else {
    4. 単純な String の属性を変換します。 例えば、次のようにします。
               String str = BiDiStringTransformation(
                   (boIn.getString(propertyName),formatIn, formatOut); 
               boIn.setString(propertyName, str); 
           } 
         } 
         return boIn; 
      }

task タスク・トピック

ご利用条件 | フィードバック


タイムスタンプ・アイコン 最終更新: 2010/07/05


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.zseries.doc/doc/tref_example_bididataobject.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています (http://www.eclipse.org)。