Flex Gateway新着情報
Governance新着情報
Monitoring API Managerインバウンドまたはアウトバウンドメッセージフローの変換マップまたはリファレンスマップを作成する場合、それらのマップ内でソースメッセージ属性にアクセスできます。その後、属性を変換済みメッセージペイロード内の項目にマップしたり、属性値をマッピングロジック内で使用して動的条件を実行したりできます。
ソースメッセージ属性へのアクセスは多くのユースケースで役立ちます。たとえば、動的メッセージルーティングの決定を実行したり、特定の機能を実行したり、メッセージフローの実行のデータ変換内で項目をマップしたりするのに役立ちます。
一般的なユースケースのいくつかを次に挙げます。
エンドツーエンドのトランスミッショントレースを実現する
トランスミッション ID は変換された JSON または XML 出力ファイルに渡されるため、変換マップ内でトランスミッション ID にアクセスすることで、エンドツーエンドのトランスミッショントレースが可能になります。
属性をマップしてバックエンドに渡す
たとえば、バックエンドでソースファイル名または特定の HTTP ヘッダーを表示する必要がある場合、ファイル名または HTTP ヘッダーにアクセスして、値を変換済みメッセージペイロード項目にマップできます。
変換内のファイル名の一部またはパターンのいずれかに基づいてマッピングロジックを適用する
たとえば、substring 操作を使用してファイル名のプレフィックスにアクセスし、そのプレフィックスに基づいて動的マッピングロジックを作成できます。
属性をマップして検索で使用できるようにする
たとえば、メッセージ種別のリファレンスマップ内でカスタムメッセージ属性としてソースファイル名または特定の HTTP ヘッダー値にアクセスし、それらの値をアクティビティ画面で容易に検索することができます。
詳細は、「ユースケース実装例」を参照してください。
アクセスできるソース属性は、b2bMessageContext
という定義済み変数内で使用できます。この変数のコンテンツは、ソースエンドポイントのプロトコルによって異なります。
AS2 を介して受信するメッセージの b2bMessageContext
変数には、次の項目が含まれます。
sourceProtocol
transmissionId
sourceEndpointAttributes:
as2MessageId
as2From
as2To
fileName
subject
fileSize
customProtocolHeaders
セキュリティ上の理由で、プレフィックス x-apm-
を持つヘッダーのみは b2bMessageContext
変数内で使用できます。
次に例を示します。
{
"b2bMessageContext": {
"sourceProtocol": "AS2",
"transmissionId": "06bc20c8-475e-4a6f-b010-9b7933b2bfac",
"sourceEndpointAttributes": {
"as2MessageId": "<2023-04-12T19:37:42.273-46b95696-83f4-4e65-9222-61c40a854200@partnera_mythical-as2>",
"as2From": "partnera",
"as2To": "mythical-as2",
"fileName": "EDI_850_20230401_1245678.edi",
"subject": "EDI Message via Mule Generic Service",
"fileSize": 3887
},
"customProtocolHeaders": {
"x-apm-order-type": "drop-ship",
"x-apm-tracking-id": "9d26d4ce-59ea-4448-8b51-ccc975d4efec"
},
"messageId": "9bf446f8-4a02-475f-afa3-c8772a340154"
}
}
FTP または SFTP を介して受信するメッセージの b2bMessageContext
変数には、次の項目が含まれます。
sourceProtocol
transmissionId
sourceEndpointAttributes:
fileName
filePath
fileSize
fileTimeStamp
partnerReferenceId
この属性は、パートナーリファレンス ID が設定されている [Receive from Partner (パートナーから受信)] エンドポイントでのみ使用できます。
messageId
次に例を示します。
{
"b2bMessageContext": {
"sourceProtocol": "SFTP",
"transmissionId": "3ef5654a-5cda-41b1-8909-59a28c8b1537",
"sourceEndpointAttributes": {
"fileName": "RandomMessageType_PO_20230331_1559_003.xml",
"filePath": "/partners/pacific-corp/in-orders",
"fileSize": 4889,
"fileTimeStamp": "2023-04-05T15:16:29",
"partnerReferenceId": "PACIFICCORP"
},
"messageId": "cdaf6c12-bb3b-4978-9ac6-e8ace053f7c5"
}
}
HTTP または HTTPS を介して受信するメッセージの b2bMessageContext
変数には、次の項目が含まれます。
sourceProtocol
transmissionId
sourceEndpointAttributes:
path
fileSize
customProtocolHeaders
セキュリティ上の理由で、プレフィックス x-apm-
を持つヘッダーのみは b2bMessageContext
変数内で使用できます。
messageId
次に例を示します。
{
"b2bMessageContext": {
"sourceProtocol": "HTTPS",
"transmissionId": "a7a800ad-4117-40c1-98a0-79892c982fd4",
"sourceEndpointAttributes": {
"path": "/",
"fileSize": 866
},
"customProtocolHeaders": {
"x-apm-order-number": "ORD12345-A",
"x-apm-order-type": "drop-ship"
},
"messageId": "cdaf6c12-bb3b-4978-9ac6-e8ace053f7c5"
}
}
次の例は、ソースメッセージ属性に関するいくつかの一般的なユースケースの実装方法を示しています。
この例は、メッセージフローの変換マップ内で変換済みデータペイロードの messageId
属性と fileName
属性をマップする方法を示しています。
messageId: vars.b2bMessageContext.messageId fileName: vars.b2bMessageContext.sourceEndpointAttributes.fileName
この例は、メッセージフローの変換マップ内でファイル名のプレフィックスメッセージに基づいてマッピングロジックを適用する方法を示しています。
POPurpose: substringBefore(vars.b2bMessageContext.sourceEndpointAttributes.fileName, "_") default "PO-CREATE",
この例は、ソースファイル名に対して substringBefore
操作を実行し、_
より前の値を取得してパートナーリファレンス識別子として使用する方法を示しています。
%dw 2.0 output application/json import * from dw::core::Strings ns ns0 http://xmlns.mulesoft.com/enterpriseobjects/b2b/ --- { partnerReferenceId: substringBefore(vars.b2bMessageContext.sourceEndpointAttributes.fileName, "_") default "UNKNOWN" , hostReferenceId: payload.ns0#B2BMessage.ns0#Data.ns0#PurchaseOrder.ns0#Seller, businessDocumentKey: payload.ns0#B2BMessage.ns0#Data.ns0#PurchaseOrder.ns0#PurchaseOrderNumber, customAttributes: [ { alias: "purchaseOrderNumber", values: [payload.ns0#B2BMessage.ns0#Data.ns0#PurchaseOrder.ns0#PurchaseOrderNumber] }, { alias: "buyerEmail", values: [payload.ns0#B2BMessage.ns0#Data.ns0#PurchaseOrder.ns0#BuyerEmailID] } ] }
この例では次の方法を示します。
FTP または SFTP の [Receive from Partners (パートナーから受信)] エンドポイント設定に関連付けられたパートナー識別子をパートナーリファレンス識別子として使用してメッセージをルーティングします。
ソースファイル名をカスタムメッセージ属性としてマップします。
%dw 2.0 output application/json ns ns0 http://xmlns.mulesoft.com/enterpriseobjects/b2b/ --- { partnerReferenceId: vars.b2bMessageContext.sourceEndpointAttributes.partnerReferenceId, hostReferenceId: payload.ns0#B2BMessage.ns0#Data.ns0#PurchaseOrder.ns0#Seller, businessDocumentKey: payload.ns0#B2BMessage.ns0#Data.ns0#PurchaseOrder.ns0#PurchaseOrderNumber, customAttributes: [ { alias: "purchaseOrderNumber", values: [payload.ns0#B2BMessage.ns0#Data.ns0#PurchaseOrder.ns0#PurchaseOrderNumber] }, { alias: "buyerEmail", values: [payload.ns0#B2BMessage.ns0#Data.ns0#PurchaseOrder.ns0#BuyerEmailID] }, { alias: "sourceFileName", values: [vars.b2bMessageContext.sourceEndpointAttributes.fileName default “UNKNOWN] } ] }
この例は、受信した HTTP メッセージのカスタムヘッダーをカスタムメッセージ属性としてマップする方法を示しています。
%dw 2.0 output application/json ns ns0 http://xmlns.mulesoft.com/enterpriseobjects/b2b/ --- { partnerReferenceId: payload.ns0#B2BMessage.ns0#Data.ns0#PurchaseOrder.ns0#Seller, hostReferenceId: payload.ns0#B2BMessage.ns0#Data.ns0#PurchaseOrder.ns0#Buyer, businessDocumentKey: payload.ns0#B2BMessage.ns0#Data.ns0#PurchaseOrder.ns0#PurchaseOrderNumber, customAttributes: [ { alias: "purchaseOrderNumber", values: payload.ns0#B2BMessage.ns0#Data.*ns0#PurchaseOrder map ( purchaseOrder , indexOfPurchaseOrder ) -> purchaseOrder.ns0#PurchaseOrderNumber default "UNKNOWN" }, { alias: "supplierName", values: [vars.b2bMessageContext.customProtocolHeaders.'x-apm-supplierName' default "UNKNOWN"] } ] }