You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JOLT中为WG_SHIP_ADDR_TYPE字段实现双分支逻辑?

如何在JOLT中根据WG_SHIP_ADDR_TYPE字段值实现两种处理逻辑?

需求:为输入数据中的WG_SHIP_ADDR_TYPE字段配置两种处理逻辑:当该字段的值为2时,生成shipToAddress对象;当值不为2时,将该字段的值赋值给shipToAddressType字段。


输入数据

{"PURCHASE_ORDER_DISPATCH": {"MsgData": {"Transaction": {"PO_POD_HDR_EVW1": {"WG_ADDR_SEQ_NUM": 1,"WG_PO_CNTCT_EMAIL": "PeggyMeincke@westfieldgrp.com","WG_REQUESTOR_EMAIL": "ZacharyEngels@westfieldgrp.com","WG_REQ_FIRST_NAME": "Zachary","WG_REQ_LAST_NAME": "Engels","WG_DELIVER_TO": "ZacharyEngels@westfieldgrp.com","BUSINESS_UNIT": "OFIC","PO_ID": 25052,"VENDOR_SETID": "WCOS","VENDOR_ID": 35958,"VNDR_LOC": 1,"PO_DT": "2020-01-24","DB_NUMBER_BU": "","DESCR_BU": "OhioFarmersInsuranceCo","ADDRESS1_BU": "WESTFIELDCOMPANIES","ADDRESS2_BU": "HOMEOFFICE","ADDRESS3_BU": "1PARKCIRCLE","ADDRESS4_BU": "","CITY_BU": "WESTFIELDCENTER","STATE_BU": "OH","POSTAL_BU": "44251-5001","COUNTRY_BU": "USA","ADDRESS1_BILL": "","ADDRESS2_BILL": "","ADDRESS3_BILL": "","ADDRESS4_BILL": "","CITY_BILL": "","STATE_BILL": "","POSTAL_BILL": "","COUNTRY_BILL": "","CURRENCY_CD": "USD","TAX_EXEMPT_ID": "","STD_ID_NUM_VNDR": "","NAME1_VNDR": "AMAZONCAPITALSERVICESINC","ADDRESS1_VNDR": "410TERRYAVEN","ADDRESS2_VNDR": "","ADDRESS3_VNDR": "","ADDRESS4_VNDR": "","CITY_VNDR": "SEATTLE","STATE_VNDR": "WA","POSTAL_VNDR": 98109,"COUNTRY_VNDR": "USA","PYMNT_TERMS_CD": "NET30","DESCR50_PAY": "Net30","BUYER_ID": 1083,"PO_AMT_TTL": 14.99,"TEXT254_CC1": "","TEXT254_CC2": "","VNDR_UPN_FLG": "N","STD_ID_NUM_VNDRGLN": "","STD_ID_NUM_BILLTO": "","ATTN_TO": "ZacharyEngels","PO_POD_LN_EVW1": {"WG_REQ_ID": 25694,"WG_CATEGORY_CD": "FSSUP","WG_ITEM_TYPE": 0,"WG_ACCOUNT": 641100,"WG_DEPT_ID": 30400,"WG_PRODUCT": "","BUSINESS_UNIT": "OFIC","PO_ID": 25052,"WG_ASSET_GROUP": "","WG_CAPITALIZE": "NO","WG_PROFILE_ID": "","WG_SPLIT_TYPE": 1,"WG_ASSET_LOC": "HOME","WG_PROJECT": "","VENDOR_SETID": "WCOS","VENDOR_ID": 35958,"VNDR_LOC": 1,"LINE_NBR": 1,"INV_ITEM_ID": "","DESCR254_MIXED": "147-1518156-3620845,1GreenMountainCoffeeRoastersCaramelVanillaCreamKeurigSingle-ServeK-CupPods,LightRoastCoffee,32Count","UNIT_OF_MEASURE": "EA","ITM_ID_VNDR": "B0798CX2Q9","INV_ITEM_WEIGHT": 0,"INV_ITEM_HEIGHT": 0,"INV_ITEM_VOLUME": 0,"INV_ITEM_LENGTH": 0,"INV_ITEM_WIDTH": 0,"VNDR_CATALOG_ID": "","MFG_ID": "","MFG_ITM_ID": 5000196305,"CNTRCT_ID": "","VERSION_NBR": 0,"CNTRCT_LINE_NBR": 0,"CAT_LINE_NBR": 0,"RELEASE_NBR": 0,"CANCEL_STATUS": "A","UPN_ID": "","PO_POD_SHP_EVW1": {"WG_SHIP_ADDR_TYPE": 0,"WG_CUST_ADDR_CODE": "OFIC","BUSINESS_UNIT": "OFIC","PO_ID": 25052,"VENDOR_SETID": "WCOS","VENDOR_ID": 35958,"VNDR_LOC": 1,"LINE_NBR": 1,"SCHED_NBR": 1,"DUE_DT": "2020-01-29","SHIPTO_ID": "OFIC","DESCR_SHIPTO": "OHIOFARMERSINSURANCECOMPANY","ADDRESS1_SHIPTO": "OHIOFARMERSINSURANCECOMPANY","ADDRESS2_SHIPTO": "1PARKCIRCLE","ADDRESS3_SHIPTO": "POBOX5001","ADDRESS4_SHIPTO": "","CITY_SHIPTO": "WESTFIELDCENTER","STATE_SHIPTO": "OH","POSTAL_SHIPTO": "44251-5001","COUNTRY_SHIPTO": "USA","PRICE_PO": 14.99,"FREIGHT_TERMS": "FOBDEST","QTY_PO": 1,"SHIP_TYPE_ID": "BEST_WAY","CANCEL_STATUS": "A","ATTN_TO": "","STD_ID_NUM_SHIPTO": ""},"PSCAMA": {"AUDIT_ACTN": "A"}},"PSCAMA": {"AUDIT_ACTN": "A"}},"PSCAMA": {"LANGUAGE_CD": "ENG","AUDIT_ACTN": "A","BASE_LANGUAGE_CD": "ENG","MSG_SEQ_FLG": "","PROCESS_INSTANCE": 1199010,"PUBLISH_RULE_ID": "WG_MAIN_RULE","MSGNODENAME": ""}}}}}

现有JOLT规则

[{"operation": "shift","spec": {"#UPSERT": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityHeader.action","*": {"*": {"*": {"*": {"PO_ID": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.externalId","#APPROVED": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.status","PO_AMT_TTL": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.grossTotalAmount","FREIGHT_TERMS": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.deliveryTermCode","WG_REQUESTOR_EMAIL": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.items.item.requesterDetails.userEmailId","WG_DELIVER_TO": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.items.item.deliverToUser.userEmailId","*": {"WG_REQ_ID": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.poDescription","#STANDARD": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.poType","*": {"WG_SHIP_ADDR_TYPE":"integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddressType","WG_SHIP_ADDR_TYPE": {"2": {"@(2,DESCR_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.addressName","@(2,ADDRESS1_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.addressLine1","@(2,ADDRESS2_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.addressLine2","@(2,ADDRESS3_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.addressLine3","@(2,ADDRESS4_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.addressLine4","@(2,CITY_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.city","@(2,POSTAL_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.zip","@(2,STATE_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.state","@(2,COUNTRY_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.country"}},"WG_CUST_ADDR_CODE":"integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.addressCode","FREIGHT_TERMS": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.deliveryTermCode"}}}}}}}},{"operation": "shift","spec": {"*": {"*": {"*": {"integrationEntityHeader": "&3.&2.&1.&","integrationEntityDetails": {"*": {"externalId": "&5.&4.&3.&2.&1.&","status": "&5.&4.&3.&2.&1.&","poHeader": {"poDescription": "&6.&5.&4.&3.&2.&1.&","poType": "&6.&5.&4.&3.&2.&1.&","grossTotalAmount": "&6.&5.&4.&3.&2.&1.&","deliveryTermCode": "&6.&5.&4.&3.&2.&1.&","shipToAddressType":"&6.&5.&4.&3.&2.&1.&","shipToAddress":"&6.&5.&4.&3.&2.&1.&"},"items": "&5.&4.&3.&2.&1.&"}}}}}}},{"operation": "cardinality","spec": {"*": {"*": {"*": {"*": {"*": {"status": "ONE","poHeader": {"*": "ONE"}}}}}}}}]

当前输出结果

{"integration-inbound:IntegrationDetails": {"integrationEntities": {"integrationEntity": {"integrationEntityHeader": {"action": "UPSERT"},"integrationEntityDetails": {"poDetails": {"externalId": 25052,"status": "APPROVED","poHeader": {"poDescription": 25694,"poType": "STANDARD","grossTotalAmount": 14.99,"deliveryTermCode": "FOBDEST","shipToAddress": {"addressCode": "OFIC"}},"items": {"item": {"requesterDetails": {"userEmailId": "ZacharyEngels@westfieldgrp.com"},"deliverToUser": {"userEmailId": "ZacharyEngels@westfieldgrp.com"}}}}}}}}}

修正后的JOLT规则及说明

核心问题修正

现有规则的问题在于:

  1. WG_CUST_ADDR_CODE被无条件映射到shipToAddress,导致即使WG_SHIP_ADDR_TYPE不为2,也会生成空的shipToAddress对象
  2. WG_SHIP_ADDR_TYPE的条件分支逻辑未完全覆盖非2的场景,导致shipToAddressType字段未正确赋值

完整修正规则

[
  {
    "operation": "shift",
    "spec": {
      "#UPSERT": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityHeader.action",
      "*": {
        "*": {
          "*": {
            "*": {
              "PO_ID": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.externalId",
              "#APPROVED": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.status",
              "PO_AMT_TTL": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.grossTotalAmount",
              "FREIGHT_TERMS": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.deliveryTermCode",
              "WG_REQUESTOR_EMAIL": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.items.item.requesterDetails.userEmailId",
              "WG_DELIVER_TO": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.items.item.deliverToUser.userEmailId",
              "*": {
                "WG_REQ_ID": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.poDescription",
                "#STANDARD": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.poType",
                "*": {
                  "WG_SHIP_ADDR_TYPE": {
                    "2": {
                      "@": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddressType",
                      "@(2,DESCR_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.addressName",
                      "@(2,ADDRESS1_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.addressLine1",
                      "@(2,ADDRESS2_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.addressLine2",
                      "@(2,ADDRESS3_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.addressLine3",
                      "@(2,ADDRESS4_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.addressLine4",
                      "@(2,CITY_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.city",
                      "@(2,POSTAL_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.zip",
                      "@(2,STATE_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.state",
                      "@(2,COUNTRY_SHIPTO)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.country",
                      "@(2,WG_CUST_ADDR_CODE)": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddress.addressCode"
                    },
                    "*": {
                      "@": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.shipToAddressType"
                    }
                  },
                  "FREIGHT_TERMS": "integration-inbound:IntegrationDetails.integrationEntities.integrationEntity.integrationEntityDetails.poDetails.poHeader.deliveryTermCode"
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "integrationEntityHeader": "&3.&2.&1.&",
            "integrationEntityDetails": {
              "*": {
                "externalId": "&5.&4.&3.&2.&1.&",
                "status": "&5.&4.&3.&2.&1.&",
                "poHeader": {
                  "poDescription": "&6.&5.&4.&3.&2.&1.&",
                  "poType": "&6.&5.&4.&3.&2.&1.&",
                  "grossTotalAmount": "&6.&5.&4.&3.&2.&1.&",
                  "deliveryTermCode": "&6.&5.&4.&3.&2.&1.&",
                  "shipToAddressType": "&6.&5.&4.&3.&2.&1.&",
                  "shipToAddress": "&6.&5.&4.&3.&2.&1.&"
                },
                "items": "&5.&4.&3.&2.&1.&"
              }
            }
          }
        }
      }
    }
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:50:28