変換プログラムでの XSLT 拡張関数の使用
PeopleSoft ABM メッセージのフィールドを EBM メッセージ内の対応するフィールドにマッピングする変換プログラムを作成します。その後、XSLT 関数を使用して、データ値をマッピングします。
このセクションでは、次の機能に関する変換アプリケーション エンジン プログラムのセクションのコーディング例を紹介します。
キー値の変換
ドメイン値の変換
次の例では、変換する必要がある ABM の XML のエレメント、変換のコード、および変換後の EBM 内のエレメントを説明します。
PeopleSoft ABM 内の変換対象のキー エレメント
XML メッセージに含まれる要素は、次のとおりです。
<MsgData> <Transaction> <PYMT_TRMS_HDR class="R"> <SETID IsChanged="Y">SHARE</SETID> <PYMNT_TERMS_CD IsChanged="Y">DIT91</PYMNT_TERMS_CD>
XSLT コード
以下の XSLT コードのスニペットは、アプリケーション エンジン プログラムの変換 XSLT を示しています。
SETID と PYMT_TERMS_CD を連結して、新しい変数を作成します。
<corecom:ApplicationObjectKey> <corecom:ID> <xsl:attribute name="schemeID"> <xsl:text disable-output-escaping="no">PSFT</xsl:text> </xsl:attribute> <xsl:attribute name="schemeAgencyID"> <xsl:text disable-output-escaping="no">PSFT_COMMON</xsl:text> </xsl:attribute> <xsl:variable name="NamedValuePair"select='concat("<SETID>",PYMT_TRMS_HDR/SETID,"</SETID><PYMNT_TERMS_CD>",PYMT_TRMS_HDR/PYMNT_TERMS_CD,"</PYMNT_TERMS_CD>")'/>
generate-guid ユーティリティを使用して、一意の GUID を作成します。
<xsl:variable name="CommonGuid" select='concat("<UniqueGUID>",utility:generate-guid(),"</UniqueGUID>")'/>
注: このステップは必須ではありません。GUID が存在しない場合、適切な xref:populate 関数によって自動的に一意の GUID が作成されます。
xref:populateValueNVP 関数を使用して、新しい GUID をクロスリファレンスに追加します。
<xsl:variable name="GUIDAdd" select='xref:populateValueNVP("PaymentTermGUID","PSFT",$NamedValuePair,"UniqueGUID",$CommonGuid,"ADD")'/> <xsl:call-template name="Process-GUID"> <xsl:with-param name="returnValue"> <xsl:value-of select="$GUIDAdd"/> </xsl:with-param> <xsl:with-param name="statusDelimiter">;</xsl:with-param> </xsl:call-template> </corecom:ID>
EBM メッセージに値を挿入します。
<corecom:ContextID> <xsl:attribute name="schemeID"> <xsl:text disable-output-escaping="no">SETID</xsl:text> </xsl:attribute> <xsl:attribute name="schemeAgencyID"> <xsl:text disable-output-escaping="no">PSFT</xsl:text> </xsl:attribute> <xsl:value-of select="PYMT_TRMS_HDR/SETID"/> </corecom:ContextID> <corecom:ContextID> <xsl:attribute name="schemeID"> <xsl:text disable-output-escaping="no">Payment Terms Code</xsl:text> </xsl:attribute> <xsl:attribute name="schemeAgencyID"> <xsl:text disable-output-escaping="no">PSFT</xsl:text> </xsl:attribute> <xsl:value-of select="PYMT_TRMS_HDR/PYMNT_TERMS_CD"/> </corecom:ContextID>
EBM メッセージに含まれる変換後のエレメント
変換後の EBM メッセージには、共通の GUID 値が含まれます。
<corecom:ApplicationObjectKey> <corecom:ID schemeAgencyID="PSFT_COMMON"schemeID="PSFT">b15f3c34-72bc-11dd-b7dd-aaf7c4308a71</corecom:ID> <corecom:ContextID schemeAgencyID="PSFT" schemeID="SETID">SHARE</corecom:ContextID> <corecom:ContextID schemeAgencyID="PSFT" schemeID="Payment Terms Code">DIT91</corecom:ContextID>
次の例では、変換する必要がある ABM の XML のドメイン値エレメント、変換のコード、および変換後の EBM 内のエレメントを説明します。
PeopleSoft ABM 内の変換対象のドメイン値エレメント
これは、PeopleSoft ABM メッセージに含まれる言語を指定するエレメントです。
<<PSCAMA class="R"> <LANGUAGE_CD>ENG</LANGUAGE_CD>
XSLT コード
以下の XSLT コードのスニペットは、変換アプリケーション エンジン プログラムの DVM 検索を示しています。
<xsl:variable name="MsgLang" select='dvm:lookup-dvm ("LanguageCodeDVM","LANGUAGE_CD",//MsgData/Transaction/PSCAMA/LANGUAGE_CD,"COMMON",//MsgData/Transaction/PSCAMA/LANGUAGE_CD,false())'/> <xsl:variable name="BaseLang" select='dvm:lookup-dvm("LanguageCodeDVM","LANGUAGE_CD",//MsgData/Transaction/PSCAMA/BASE_LANGUAGE_CD,"COMMON",//MsgData/Transaction/PSCAMA/BASE_LANGUAGE_CD,false())'/> <xsl:attribute name="languageCode"> <xsl:value-of select="substring-after($MsgLang,';')"/> </xsl:attribute>
EBM メッセージに含まれる変換後のエレメント
これは結果の EBM メッセージに含まれる変換後のエレメントです。
<?xml version="1.0"?> <paytermcreate:CreatePaymentTermEBM languageCode="500" xmlns:corepaymenttermcust="http://xmlns.oracle.com/EnterpriseObjects/Core/Custom/EBO/PaymentTerm/V1" xmlns:paytermcreate="http://xmlns.oracle.com/EnterpriseObjects/Core/EBO/CreatePaymentTermEBM/V1"> <corecom:EBMHeader languageCode="500" xmlns:corecom="http://xmlns.oracle.com/EnterpriseObjects/Core/Common/V2"> <corecom:Sender> <corecom:ID>E900B20</corecom:ID> </corecom:Sender> </corecom:EBMHeader>