Traçage d'une requête d'e-spot

Le traçage des journaux est difficile, car WebSphere est un environnement à unités d'exécution multiples. Il peut y avoir des dizaines de requêtes actives, qui consignent toutes des tâches non liées. Ces autres entrées de journal ne permettant pas de lire facilement la trace. L'identification et la résolution des incidents liés au marketing est une tâche difficile. Ce document permet de simplifier les informations d'identification et de résolution des incidents fournies pour comprendre la requête d'e-spot et extraire le fragment de suivi spécifique à l'e-spot pour une analyse plus approfondie. Les exemples d'appels marketing basés sur REST et BOD à partir de la vitrine sont expliqués dans ce document.

Les traces capturées avec Marketing MustGather sont utilisées à des fins d'explication. Si vous ne les avez pas encore capturées, suivez les instructions ci-dessous pour configurer votre environnement pour les informations de diagnostic requises :
  1. Mettez à jour la taille des fichiers de suivi à 100 Mo et le nombre de fichiers de suivi historiques conservés à 20.
  2. Activez les chaînes de trace suivantes :
    com.ibm.websphere.commerce.WC_MARKETING=all:
    com.ibm.commerce.marketing.*=all:
    com.ibm.commerce.foundation.logging.ServiceLogger=finest:
    com.ibm.commerce.content.*=all:com.ibm.commerce.rest.marketing.handler.*=all:com.ibm.websphere.commerce.WC_USER=all:com.ibm.commerce.foundation.rest.*=all
  3. Parcourez la page de la vitrine contenant l'emplacement e-marketing pour tracer le scénario.
  4. Appelez l'API REST directement dans Postman ou dans le navigateur.

Flux de requête d'emplacement e-marketing

L'image suivante montre le flux d'une requête e-spot du début à la fin.

Pour comprendre la requête : GET (http://localhost/webapp/wcs/stores/servlet/en/auroraesite/electronics/accessories-10028--1)

L'emplacement e-marketing fait toujours partie de la page de la vitrine, comme CategoryDispalay, ProductDisplay et HomePage. Dans ce scénario, MyE-MarketingSpot fait partie des accessoires d'ordinateur, page CategoryDisplay. Recherchez parentId=0 ou ServiceLogger > dans les journaux de trace pour trouver le début de la requête. Dans cet exemple, l'entrée suivante est demandée pour l'entrée et la sortie :
  • Utilisation de zéro parentId
    • 00000122 ServletReques 2   PerfLog <entry operation="Runtime Servlet : Request : /webapp/wcs/stores/servlet/en/auroraesite/electronics/accessories-10028--1" parameters="fetchFacets=[true]" id="6507127426286355781" parentId="0" startTime="3978755713792675" method="GET" queryString="fetchFacets=true" user="-1002" />
    • Après la trace d'entrée, recherchez 6507127426286355781 pour trouver la sortie. 6507127426286355781 est la valeur d'identificateur de la requête, telle qu'elle est mise en évidence en bleu.
      Note: Performance Measurement Logger introduit le concept de id/parentId. Ici, id est l'identificateur unique de l'opération en cours et parentId est l'identificateur de l'appelant.
      00000122 ServletReques 2   PerfLog <entry operation="Runtime Servlet : Request : /webapp/wcs/stores/servlet/en/auroraesite/electronics/accessories-10028--1" parameters="fetchFacets=[true]" id="6507127426286355781" parentId="0" startTime="3978755713792675" method="GET" queryString="fetchFacets=true" user="-1002" />
      [4/17/17 15:13:02:423 EDT] 00000122 ServletReques 1   PerfLog <exit operation="Runtime Servlet : Request : http://localhost/webapp/wcs/stores/servlet/CategoryDisplay" parameters="fetchFacets=[true] seoUrl=http://localhost/webapp/wcs/stores/servlet/en/auroraesite/electronics/accessories-10028--1" id="6507127426286355781" parentId="0" startTime="3978755713792675" stopTime="3978760255249759" duration="4541457084" durationMs="4541" resultSize="1000" cacheHit="false" cacheEnabled="false" successful="true" />
      
      
  • Utilisation de ServiceLogger
    • 00000122 ServiceLogger >   Web <http://localhost/webapp/wcs/stores/servlet/en/auroraesite/electronics/accessories-10028--1> <user:-1002> <method:GET> <fetchFacets=true>  ENTRY
    • Après la trace d'entrée, utilisez threadId dans le cadre du mot clé de la recherche 00000122 ServiceLogger 1 Web pour déterminer la sortie.
      00000122 ServiceLogger >   Web <http://localhost/webapp/wcs/stores/servlet/en/auroraesite/electronics/accessories-10028--1> <user:-1002> <method:GET> <fetchFacets=true>  ENTRY
      00000122 ServiceLogger 1   Web <request: http://localhost/webapp/wcs/stores/servlet/en/auroraesite/electronics/accessories-10028--1> <translated-to: http://localhost/webapp/wcs/stores/servlet/CategoryDisplay> <user:-1002> <elapsed:4546ms>  RETURN
      
    • Notez l'entrée, la sortie et le threadId. Utilisez ce paramètre de filtre pour extraire la requête. Dans l'exemple ci-dessus, 00000122 est le threadId. Utilisez les outils grep ou Notepad++ pour marquer et extraire des lignes avec threadId. Pour plus de détails, voir Note technique 101 : Extraction des requêtes d'erreur de trace.
    • Après avoir tracé le fragment contenant l'appel d'e-spot, extrayez la requête interne/secondaire d'e-spot réelle. Ceci est important pour l'intégration d'application tierce. L'appel d'e-spot est effectué en appelant directement un appel rest REST GET: /store/{storeId}/espot/{name} ou le service Web BOD: GetMarketingSpotDataTypeImpl. Toutefois, comme indiqué dans le diagramme de flux, vous pouvez extraire la requête BOD en examinant la requête de la vitrine, car la requête Rest se trouve autour de la requête BOD.

Extraction de requêtes REST d'emplacement e-marketing et vérification de la réponse

Si la requête provient d'une autre source que les pages de la vitrine, vous pouvez utiliser parentId=0 ou ServiceLogger > pour trouver la requête.
  • Utilisation de zéro parentId
    • 00000114 RestServerLog 2   PerfLog <entry operation="RESTCacheFilter : " parameters="DM_ReqCmd=[CategoryDisplay] categoryId=[10028]" id="6507127426286363631" parentId="0" startTime="4070527931052690" method="GET" queryString="categoryId=10028&amp;DM_ReqCmd=CategoryDisplay" user="-1002" />
      
      00000114 RestServerLog 2   PerfLog <entry operation="REST : GET : com.ibm.commerce.rest.marketing.handler.ESpotDataHandler.findByName(String,String,String)" parameters="name=MyE-MarketingSpot storeId=10201 DM_ReqCmd=CategoryDisplay categoryId=10028" id="6507127426286363632" parentId="6507127426286363631" startTime="4070527936789452" />
      [4/18/17 16:42:30:314 EDT] 00000114 RestServerLog 1   PerfLog <exit operation="REST : GET : com.ibm.commerce.rest.marketing.handler.ESpotDataHandler.findByName(String,String,String)" parameters="name=MyE-MarketingSpot storeId=10201 DM_ReqCmd=CategoryDisplay categoryId=10028" id="6507127426286363632" parentId="6507127426286363631" startTime="4070527936789452" stopTime="4070528155038420" duration="218248968" durationMs="218" resultSize="427" cacheHit="false" cacheEnabled="false" successful="true" />
      
      00000114 RestServerLog 1   PerfLog <exit operation="REST : BOD Mapping" parameters="dataMap=-226097492" id="6507127426286363649" parentId="6507127426286363631" startTime="4070528156332160" stopTime="4070528275842879" duration="119510719" durationMs="119" resultSize="1000" cacheHit="false" cacheEnabled="false" successful="true" />
      [4/18/17 16:42:30:439 EDT] 00000114 RestServerLog 1   PerfLog <exit operation="RESTCacheFilter : " parameters="DM_ReqCmd=[CategoryDisplay] categoryId=[10028]" id="6507127426286363631" parentId="0" startTime="4070527931052690" stopTime="4070528281856772" duration="350804082" durationMs="350" resultSize="1000" cacheHit="false" cacheEnabled="false" successful="true" />
      
    • 00000114 ServiceLogger >   REST <http://localhost/wcs/resources/store/10201/espot/MyE-MarketingSpot> <user:-1002> <method:GET> <categoryId=10028&DM_ReqCmd=CategoryDisplay>  ENTRY
      00000114 ServiceLogger 1   REST <http://localhost/wcs/resources/store/10201/espot/MyE-MarketingSpot> <user:-1002> <elapsed:344ms>  RETURN
      
    • Recherchez pour com.ibm.commerce.foundation.rest.providers.AbstractEntityProvider formatResponseUsingBODToMapConfig(Map) RETURN trouver la réponse.
      00000114 AbstractEntit < com.ibm.commerce.foundation.rest.providers.AbstractEntityProvider formatResponseUsingBODToMapConfig(Map) RETURN {resourceId=http://localhost:80/wcs/resources/store/10201/espot/MyE-MarketingSpot?categoryId=10028&DM_ReqCmd=CategoryDisplay, MarketingSpotData=[{marketingSpotIdentifier=11501, previewReport=[SpotFound|11501|10201|MARKETING|MyE-MarketingSpot|true, ScheduledActivity|10802|10201|0| | |RecommendContentForMen's, ScheduledActivity|10801|10201|0| | |MyCDPActivity, EvaluateActivitiesBegin, EvaluateActivity|10802|10201|0| | |RecommendContentForMen's, Target|currentCustomerBehaviorCategoryBrowsing|11408|11408, TargetUserBehavior|10002|0|false, TargetFalse, EvaluateActivityEnd, EvaluateActivity|10801|10201|0| | |MyCDPActivity, NotEnoughContent, Target|currentCustomerBehaviorCategoryBrowsing|11404|11404, TargetUserBehavior|10028|1|true, TargetTrue, Action|displayContent|11403|11403, DataReturnedFromElement|MarketingContent|10207|ContentForAccessoriesPage|1, EvaluateActivityEnd, EvaluateActivitiesEnd, ReturnRecommendation|MarketingContent|10207|10801|ContentForAccessoriesPage|ContentForAccessoriesPage|1, StaticMarketingSpotBehavior], eSpotName=MyE-MarketingSpot, behavior=0, nextTimeLimit=-1, baseMarketingSpotActivityData=[{activityIdentifierID=10801, contentFormatId=1, contentMimeType=image, attachementStoreId=10101, baseMarketingSpotDataType=MarketingContent, AttachmentDescription=[{}], contentId=10207, attachementId=1610, contentFormatName=File, attachmentReferenceDescription=[{attachmentShortDescription=Save on Printers, attachmentName=Save on Printers, attachmentLanguage=-1}], attachmentImage=images/attachments/usages/unassign_icon.jpg, attachmentDisplaySequence=0.0, activityFormat=web, MarketingContentDescription=[{}], attachmentAsset=[{attachmentAssetStoreId=10101, attachmentAssetLanguage=[-1], attachmentAssetPath=images/advertisements/en_US/0709B_EES_Printers_001.jpg, attachmentAssetId=2147, attachmentAssetDirectoryPath=images/advertisements/en_US, attachmentAssetRootDirectory=AuroraStorefrontAssetStore, attachmentLocalAsset=true, attachmentAssetMimeType=image/jpeg}], attachmentReferenceId=1610, marketingContentDescription=[{marketingText=Save on Printers, language=-1}], baseMarketingSpotActivityID=10207, attachmentDescription=[{attachmentShortDescription=Save on Printers 50% off with any desktop purchase, attachmentName=Save on Printers, attachmentLanguage=-1}], attachementExternalId=Desktops_Atct_2, properties=[{baseMarketingValue=Recommend content to a customer that satisfies the chosen target conditions., baseMarketingKey=mktActivityDescription}], attachmentUsageName=NOUSAGE, contentName=ContentForAccessoriesPage, AttachmentReferenceDescription=[{}], activityIdentifierName=MyCDPActivity, activityPriority=0, contentStoreId=10101, baseMarketingSpotActivityName=ContentForAccessoriesPage, contentClickAction=None}]}], resourceName=espot}

Extraction de requêtes BOD d'emplacement e-marketing et vérification de la réponse

Pour trouver le point d'entrée de la requête BOD, recherchez <_mkt:GetMarketingSpotData et localisez la valeur your_epot_name mise en évidence en bleu.
  • Voici un exemple de requête de service BOD :
    00000122 BusinessObjec > com.ibm.commerce.foundation.server.command.bod.BusinessObjectDocumentProcessor processBusinessObjectDocument(BusinessObjectDocumentType, String) ENTRY <?xml version="1.0" encoding="UTF-8"?>
    <_mkt:GetMarketingSpotData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:_mkt="http://www.ibm.com/xmlns/prod/commerce/9/marketing" xmlns:_wcf="http://www.ibm.com/xmlns/prod/commerce/9/foundation" xmlns:oa="http://www.openapplications.org/oagis/9" releaseID="9.0" versionID="7.0.0.8">
      <oa:ApplicationArea xsi:type="_wcf:ApplicationAreaType">
        <oa:CreationDateTime>2017-04-17T19:13:01.923Z</oa:CreationDateTime>
        <oa:BODID>e00f5ee0-23a1-11e7-aec1-824958f5022a</oa:BODID>
        <_wcf:BusinessContext>
          <_wcf:ContextData name="locale">en_US</_wcf:ContextData>
          <_wcf:ContextData name="catalogId">10052</_wcf:ContextData>
          <_wcf:ContextData name="langId">-1</_wcf:ContextData>
          <_wcf:ContextData name="storeId">10201</_wcf:ContextData>
          <_wcf:ContextData name="currency">USD</_wcf:ContextData>
          <_wcf:ContextData name="contentPersonalizationId">1447870211984-1</_wcf:ContextData>
        </_wcf:BusinessContext>
      </oa:ApplicationArea>
      <_mkt:DataArea>
        <oa:Get>
          <oa:Expression expressionLanguage="_wcf:XPath">{_wcf.ap=IBM_Store_All...}/MarketingSpotData[MarketingSpotIdentifier[ExternalIdentifier[(Name=&quot;MyE-MarketingSpot&quot;)]]]</oa:Expression>
        </oa:Get>
      </_mkt:DataArea>
    </_mkt:GetMarketingSpotData> com.ibm.commerce.marketing
    
  • La valeur threadId est disponible pour extraire cette unité d'exécution du fichier de trace d'origine.
  • A l'aide de l'ID BOD de la requête, recherchez la réponse. e00f5ee0-23a1-11e7-aec1-824958f5022a est l'ID BOD dans ce cas. Si vous ne pouvez pas localiser l'ID BOD, recherchez mkt:ShowMarketingSpotData. Voici l'exemple de réponse BOD :
    00000122 BusinessObjec < com.ibm.commerce.foundation.server.command.bod.BusinessObjectDocumentProcessor processBusinessObjectDocument(BusinessObjectDocumentType, String) RETURN <?xml version="1.0" encoding="UTF-8"?>
    <_mkt:ShowMarketingSpotData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:_mkt="http://www.ibm.com/xmlns/prod/commerce/9/marketing" xmlns:_wcf="http://www.ibm.com/xmlns/prod/commerce/9/foundation" xmlns:oa="http://www.openapplications.org/oagis/9" releaseID="9.0">
      <oa:ApplicationArea xsi:type="_wcf:ApplicationAreaType">
        <oa:CreationDateTime>2017-04-17T19:13:02.142Z</oa:CreationDateTime>
        <oa:BODID>e030c990-23a1-11e7-aec1-824958f5022a</oa:BODID>
      </oa:ApplicationArea>
      <_mkt:DataArea>
        <oa:Show>
          <oa:OriginalApplicationArea>
            <oa:CreationDateTime>2017-04-17T19:13:01.923Z</oa:CreationDateTime>
            <oa:BODID>e00f5ee0-23a1-11e7-aec1-824958f5022a</oa:BODID>
          </oa:OriginalApplicationArea>
        </oa:Show>
        <_mkt:MarketingSpotData>
          <_mkt:MarketingSpotIdentifier>
            <_wcf:UniqueID>11501</_wcf:UniqueID>
            <_wcf:ExternalIdentifier>
              <_wcf:Name>MyE-MarketingSpot</_wcf:Name>
            </_wcf:ExternalIdentifier>
          </_mkt:MarketingSpotIdentifier>
          <_mkt:BaseMarketingSpotActivityData xsi:type="_mkt:MarketingSpotActivityMarketingContentDataType">
            <_mkt:Name>ContentForAccessoriesPage</_mkt:Name>
            <_mkt:DataType>MarketingContent</_mkt:DataType>
            <_mkt:UniqueID>10207</_mkt:UniqueID>
            <_mkt:ActivityIdentifier>
              <_wcf:UniqueID>10801</_wcf:UniqueID>
              <_wcf:ExternalIdentifier>
                <_wcf:Name>MyCDPActivity</_wcf:Name>
              </_wcf:ExternalIdentifier>
            </_mkt:ActivityIdentifier>
            <_mkt:ActivityFormat>web</_mkt:ActivityFormat>
            <_mkt:ActivityPriority>0</_mkt:ActivityPriority>
            <_mkt:Properties name="mktActivityDescription">Recommend content to a customer that satisfies the chosen target conditions.</_mkt:Properties>
            <_mkt:MarketingContent>
              <_mkt:MarketingContentIdentifier>
                <_wcf:UniqueID>10207</_wcf:UniqueID>
                <_wcf:ExternalIdentifier>
                  <_wcf:Name>ContentForAccessoriesPage</_wcf:Name>
                  <_wcf:StoreIdentifier>
                    <_wcf:UniqueID>10101</_wcf:UniqueID>
                  </_wcf:StoreIdentifier>
                </_wcf:ExternalIdentifier>
              </_mkt:MarketingContentIdentifier>
              <_mkt:MarketingContentDescription language="-1">
                <_mkt:MarketingText>Save on Printers</_mkt:MarketingText>
                <_wcf:UserData/>
              </_mkt:MarketingContentDescription>
              <_mkt:MarketingContentFormat>
                <_mkt:UniqueID>1</_mkt:UniqueID>
                <_mkt:Name>File</_mkt:Name>
              </_mkt:MarketingContentFormat>
              <_mkt:ClickAction>None</_mkt:ClickAction>
              <_mkt:MimeType>image</_mkt:MimeType>
              <_mkt:Attachment>
                <_wcf:AttachmentReferenceIdentifier>
                  <_wcf:UniqueID>1610</_wcf:UniqueID>
                </_wcf:AttachmentReferenceIdentifier>
                <_wcf:AttachmentIdentifier>
                  <_wcf:UniqueID>1610</_wcf:UniqueID>
                  <_wcf:ExternalIdentifier>
                    <_wcf:Identifier>Desktops_Atct_2</_wcf:Identifier>
                    <_wcf:StoreIdentifier>
                      <_wcf:UniqueID>10101</_wcf:UniqueID>
                    </_wcf:StoreIdentifier>
                  </_wcf:ExternalIdentifier>
                </_wcf:AttachmentIdentifier>
                <_wcf:AttachmentAsset localAsset="true">
                  <_wcf:AttachmentAssetIdentifier>
                    <_wcf:UniqueID>2147</_wcf:UniqueID>
                  </_wcf:AttachmentAssetIdentifier>
                  <_wcf:StoreIdentifier>
                    <_wcf:UniqueID>10101</_wcf:UniqueID>
                  </_wcf:StoreIdentifier>
                  <_wcf:AttachmentAssetPath>images/advertisements/en_US/0709B_EES_Printers_001.jpg</_wcf:AttachmentAssetPath>
                  <_wcf:RootDirectory>AuroraStorefrontAssetStore</_wcf:RootDirectory>
                  <_wcf:DirectoryPath>images/advertisements/en_US</_wcf:DirectoryPath>
                  <_wcf:MimeType>image/jpeg</_wcf:MimeType>
                  <_wcf:language>-1</_wcf:language>
                </_wcf:AttachmentAsset>
                <_wcf:AttachmentUsage>
                  <_wcf:UsageName>NOUSAGE</_wcf:UsageName>
                  <_wcf:Image>images/attachments/usages/unassign_icon.jpg</_wcf:Image>
                </_wcf:AttachmentUsage>
                <_wcf:DisplaySequence>0.0</_wcf:DisplaySequence>
                <_wcf:AttachmentDescription language="-1">
                  <_wcf:Name>Save on Printers</_wcf:Name>
                  <_wcf:ShortDescription>Save on Printers 50% off with any desktop purchase</_wcf:ShortDescription>
                </_wcf:AttachmentDescription>
                <_wcf:AttachmentReferenceDescription language="-1">
                  <_wcf:Name>Save on Printers</_wcf:Name>
                  <_wcf:ShortDescription>Save on Printers</_wcf:ShortDescription>
                </_wcf:AttachmentReferenceDescription>
                <_wcf:UserData/>
              </_mkt:Attachment>
              <_mkt:MarketingSpotBehavior>0</_mkt:MarketingSpotBehavior>
              <_mkt:UIDisplayable>1</_mkt:UIDisplayable>
              <_mkt:ManagingTool>0</_mkt:ManagingTool>
              <_mkt:OvrMktLimit>1</_mkt:OvrMktLimit>
              <_wcf:UserData/>
            </_mkt:MarketingContent>
          </_mkt:BaseMarketingSpotActivityData>
          <_mkt:PreviewReport>...</_mkt:PreviewReport>
          <_mkt:Behavior>0</_mkt:Behavior>
          <_mkt:NextTimeLimit>-1</_mkt:NextTimeLimit>
        </_mkt:MarketingSpotData>
      </_mkt:DataArea>
    </_mkt:ShowMarketingSpotData>
    

La réponse BOD affiche le contenu marketing réel planifié pour s'afficher dans l'e-spot.