Rastreo de una solicitud de zona de e-Marketing

Los registros de rastreo son complicados, ya que WebSphere es un entorno multiproceso. Podría haber decenas de solicitudes activas, y todas ellas estarían registrando tareas no relacionadas. Es difícil leer el rastreo de estas otras entradas de registro. La resolución de problemas relacionados con el marketing es una tarea difícil. Este documento ayuda a simplificar la información proporcionada sobre la resolución de problemas, de manera que se pueda entender la solicitud de la zona de e-Marketing y que se pueda extraer el fragmento del código de rastreo específico de la zona de e-Marketing para realizar un análisis adicional. En este documento se explican los ejemplos de las invocaciones de marketing basadas en REST y BOD realizadas desde el escaparate.

Los rastreos realizados mediante Marketing MustGather se utilizan para obtener una explicación. Si no la ha capturado, siga las siguientes instrucciones para configurar el entorno de la información de diagnóstico necesaria:
  1. Actualice el tamaño de los archivos de rastreo a 100 MB y el número de archivos de rastreo históricos que se conservan en 20.
  2. Habilite las siguientes cadenas de rastreo:
    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. Examine la página del escaparate que contiene la zona de e-Marketing para rastrear el escenario.
  4. Invoce a la API de REST directamente en Postman o en el navegador.

Flujo de solicitudes de la zona de e-Marketing

La imagen siguiente muestra el flujo de una solicitud de una zona de e-Marketing de principio a fin.

Para comprender la solicitud: GET (http://localhost/webapp/wcs/stores/servlet/en/auroraesite/electronics/accessories-10028--1)

La zona de e-Marketing siempre forma parte de la página del escaparate, como CategoryDispalay, ProductDisplay y HomePage. En este escenario MyE-MarketingSpot forma parte de la página Accesorios del equipo; CategoryDisplay. Busque parentId=0 o ServiceLogger > en los registros de rastreo para encontrar el inicio de la solicitud. En este ejemplo, se solicita la entrada siguiente para la entrada y la salida:
  • Utilización de parentId cero
    • 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" />
    • Tras el rastreo de entrada, busque 6507127426286355781 para encontrar la salida. 6507127426286355781 es el valor del identificador de la solicitud y está resaltado en azul.
      Note: El registrador de medición del rendimiento introduce el concepto de id/parentId. Aquí, id es el identificador exclusivo de la operación actual y parentId es el identificador del llamante.
      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" />
      
      
  • Utilización de ServiceLogger
    • 00000122 ServiceLogger >   Web <http://localhost/webapp/wcs/stores/servlet/en/auroraesite/electronics/accessories-10028--1> <user:-1002> <method:GET> <fetchFacets=true>  ENTRY
    • Después del rastreo de entrada, utilice threadId como parte de la palabra clave de búsqueda 00000122 ServiceLogger 1 Web para determinar la salida.
      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
      
    • Anote la entrada, la salida y el threadId. Utilice este parámetro de filtro para extraer la solicitud. En el ejemplo anterior, 00000122 es el threadId. Utilice las herramientas grep o Notepad++ para marcar y extraer líneas con threadId. Para obtener más detalles, consulte la Resolución de problemas 101: Extracción de solicitudes de error desde el rastreo.
    • Después de rastrear el fragmento de código que contiene la invocación a la zona de e-Marketing, extraiga la solicitud interna/sub de la zona de e-Marketing real. Esto es importante para la integración con terceros La invocación a la de zona de e-Marketing se realiza mediante una invocación REST GET: /store/{storeId}/espot/{name} de REST o al servicio web de BOD: GetMarketingSpotDataTypeImpl directamente. Sin embargo, tal y como se muestra en el diagrama de flujo, puede extraer la solicitud BOD examinando la solicitud del escaparate, ya que la solicitud de REST está alrededor de la solicitud BOD.

Extracción de solicitudes de REST de la zona de e-Marketing y verificación de la respuesta

Si la solicitud procede de un origen diferente a las páginas de escaparate, puede utilizar parentId=0 o ServiceLogger > para buscar la solicitud.
  • Utilización de parentId cero
    • 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
      
    • Busque com.ibm.commerce.foundation.rest.providers.AbstractEntityProvider formatResponseUsingBODToMapConfig(Map) RETURN para encontrar la respuesta.
      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}

Extracción de solicitudes BOD de la zona de e-Marketing y verificación de la respuesta

Para buscar el endpoint de solicitudes BOD, busque <_mkt:GetMarketingSpotData y localice your_epot_name, resaltado en azul.
  • El siguiente es un ejemplo de una solicitud 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
    
  • El threadId está disponible para extraer este subproceso del archivo de rastreo original.
  • Mediante el ID de BOD de la solicitud, busque la respuesta. En este caso, el ID de BOD es e00f5ee0-23a1-11e7-aec1-824958f5022a. Si no puede localizar el ID de BOD, busque mkt:ShowMarketingSpotData. A continuación se muestra la respuesta BOD de ejemplo:
    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 respuesta BOD muestra el contenido de marketing real planificado para que aparezca en la zona de e-Marketing.