foreignKeyXref()

ソース・ビジネス・オブジェクトの外部キーに基づいて、リレーションシップ・データベースの関係表でルックアップを実行します。外部キーが存在しない場合は、外部関係表で新しい関係インスタンスを追加します。

構文

public static void foreignKeyXref(String relDefName, 
       String appParticpntDefName, String genParticpntDefName, 
       BusObj appSpecificBusObj,String appForeignAttr,
       BusObj genericBusObj, String genForeignAttr,
       CxExecutionContext map_ctx)
 

パラメーター

relDefName
外部ビジネス・オブジェクトを管理する単純一致関係名の名前。

appParticpntDefName
単純一致関係でアプリケーション固有のビジネス・オブジェクトを表す参加者定義の名前。この参加者のタイプは、外部のアプリケーション固有のビジネス・オブジェクトです。

genParticpntDefName
単純一致関係で汎用ビジネス・オブジェクトを表す参加者定義の名前。この参加者のタイプは、外部の汎用ビジネス・オブジェクトです。

appSpecificBusbj
外部オブジェクトへの参照を含む、アプリケーション固有のビジネス・オブジェクト。

appForeignAttr
外部ビジネス・オブジェクトのキー値を含むアプリケーション固有のビジネス・オブジェクトの属性の名前。

genericObject
appSpecificObject のマップ先、またはマップ元の汎用ビジネス・オブジェクト。

genForeignAttr
外部ビジネス・オブジェクトへの汎用的な参照を含む、汎用ビジネス・オブジェクトの属性名の名前。

map_ctx
マップの実行コンテキスト。マップの実行コンテキストを渡すには、cwExecCtx 変数を使用します。この変数は、Map Designer Express によってすべてのマップに定義されます。

戻り値

なし。

例外

RelationshipRuntimeException
 

注記

foreignKeyXref() メソッドは、AppParticpntDefName 参加者の関係表で、外部キー・ルックアップを実行します。つまり、appSpecificBusObj ビジネス・オブジェクトの外部キーで値が一致する関係インスタンスの外部関係表を検査します。 このルックアップが失敗した場合、foreignKeyXref() メソッドは、アプリケーション固有キーの新しい関係インスタンスを外部関係表に追加します。宛先ビジネス・オブジェクトの外部キーを null に設定することはありません (foreignKeyLookup() メソッドと同様です)。このメソッドは、インバウンド・マップとアウトバウンド・マップの両方で使用できます。

foreignKeyXref() メソッドは、渡された引き数で以下の検証を実行します。

上記の検証のいずれかが失敗した場合、foreignKeyXref()RelationshipRuntimeException 例外をスローします。

引き数の検証が完了すると、foreignKeyXref() が実行するアクションは、次の情報によって異なります。

foreignKeyXref() メソッドは、呼び出しコンテキストと動詞の適切な組み合わせに対して、外部関係表での関係インスタンスの基本的な追加をすべて処理します。foreignKeyXref() が行うアクションの詳細については、"Foreign Key Cross-Reference 関数ブロックの使用"を参照してください。表 110表 111 に、各呼び出しコンテキストのアクションを示します。

Order マップに対する Clarify_SFAQuote では、CustomerId フィールドは外部キー・ルックアップです。これは、Sales Order Processing Collab が Customer Wrapper を呼び出すためです。

if (ObjSAP_OrderLineItem.get("SAP_OrderLineObjectIdentifier[0]")
       != null) 
    {
    if (ObjSAP_OrderLineItem.getString(
 "SAP_OrderLineObjectIdentifier[0].ObjectQualifier").equals("002"))
       {
       BusObj temp = ObjSAP_OrderLineItem.getBusObj(
          "SAP_OrderLineObjectIdentifier[0]");
       if (temp.isNull("ItemId"))
          {
          logWarning(5003,
    "SAP_OrderLineItem.SAP_OrderLineObjectIdentifier[1].ItemId");
          }
       else
          {
          try
             {
             IdentityRelationship.foreignKeyXref(
                "Item",
                "SAPMbasc",
                "CWItba",
                temp,
                "ItemId",
                ObjOrderLineItem,
                "ItemId",
                cwExecCtx);
             } 
          catch (RelationshipRuntimeException re)
             { 
             logWarning(re.getMessage());
             }
  
          if (ObjOrderLineItem.get("ItemId") == null)
             {
             logError(5009, "OrderLineItem.ItemId",
          "SAP_OrderLineItem.SAP_OrderLineObjectIdentifier.ItemId",
                "Item",
                "SAPMbasc",
                strInitiator);
  
             throw new MapFailureException("ForeignKeyXref() failed");
             }
          }
       }
    }
 

参照項目

foreignKeyLookup()

"外部キー参照の実行"

Copyright IBM Corp. 2004