2016-06-15 5 views
0

私は、このXML表現との統合オブジェクトを持っている:Siebelデータマッピングを使用して統合コンポーネントをマージできますか?

<root> 
    <request code="123" title="Test"> 
    <user name="Chuck Bartowski" email="-" /> 
    <data d1="aaa" d2="bbb" d3="ccc" /> 
    <attachments> 
     <attachment name="text.txt" size="50" /> 
     <attachment name="image.png" size="385" /> 
    </attachments> 
    </request> 
</root> 

をそして、私はこのような何かにXMLを変換するために、1にノード(統合コンポーネント)の一部をマージする必要があります。

<root> 
    <request code="123" title="Test" userName="Chuck Bartowski" userEmail="-" 
      data1="aaa" data2="bbb" data3="ccc" /> 
    <attachments> 
     <attachment name="text.txt" size="50" /> 
     <attachment name="image.png" size="385" /> 
    </attachments> 
    </request> 
</root> 

私はこれをSiebel 7.8のデータマッピング(EAIデータ変換エンジン)を使用して実現しようとしています。だから、私は次のように統合コンポーネントのマップと、統合オブジェクトマップを作成しました:

NAME SOURCE IC  TARGET IC 
r1 request -> request 
r2 user  -> request 
r3 data  -> request 
att attachment -> attachment 

残念ながら、私が期待していた何をしていません。代わりに、次のように出力します:

<root> 
    <request code="123" title="Test"> 
    <attachments>...</attachments> 
    </request> 
    <request userName="Chuck Bartowski" userEmail="-"> 
    <attachments>...</attachments> 
    </request> 
    <request data1="aaa" data2="bbb" data3="ccc"> 
    <attachments>...</attachments> 
    </request> 
</root> 

単一のソースコンポーネントを複数のターゲットにマップすることは可能ですが、それとは逆のことがありますか?多くのソースを1つのターゲットにマージできますか?

これまでのところ、私はr2r3の両方で、r1Parent Component Map Nameフィールドを設定しようとしましたが、それだけで素敵なSBL-EAI-04008エラー私を獲得した:統合コンポーネントタイプの要求は、「有効な子ではありませんコンポーネントタイプ 'request'のタイプ

いくつかの設定手順がありませんか、これはデータマッピングエンジンのみを使用して行うことができませんか?私はサーバースクリプトから呼び出すので、他に何も動かなければ、マッピングが完了した後でプロパティセットを変更することができます。

答えて

0

私は答えをSiebel bookshelfで見つけました。はい、行うことができますではなく、どのように私はそれをやろうとしました:

You may want to address fields in components other than the source component. This is because your target component may depend on more than one component in the source object. In such cases, you cannot use different component maps with different source components, and the same target component, because each component map creates a different instance of the target component. Data Mapping Engine expressions allow you to use the dot notation to address fields, other than the source component, in source integration object components —for example, [Component Name.Field Name] .

Addressing fields in other components is legal only if the cardinality of the component is less than or equal to one relative to the source component —that is, only if the component can be uniquely identified from the context of the source component without using any qualifiers other than the component name.

ので、キーは各ターゲットの一成分のみのマッピングを作成することで、その後、他のソースからのフィールドマッピングが含まれます。私の例では、私が持っているでしょう:

NAME SOURCE IC  TARGET IC 
req request -> request 
att attachment -> attachment 

そしてreq内側に、以下のフィールドマッピングを:

SOURCE   TARGET 
[code]  -> code 
[title]  -> title 
[user.name] -> userName 
[user.email] -> userEmail 
[data.d1]  -> data1 
... 
関連する問題