关于根据条件添加默认值的 JOLT 规范

JOLT spec on adding default values based on a condition

如果我的输入在 "metadata" 中包含 "WorkflowCategory",则输出应包含具有指定默认值的 workflow.workflowInputProperties - 具有重复值(如“”字符串、3 等)。如果不是,则不应添加workflow.workflowInputProperties。

输入 1

    {
      "template": false,
      "active": true,
      "metadata": [
       {
         "value": "bank_",
         "key": "AssetNamePrefix"
       },
       {
         "value": "-BERG",
         "key": "SuffixForPublicId"
       },
       {
         "value": "false",
         "key": "CORSEnabled"
       },
       {
         "value": "Capture",
         "key": "WorkflowCategory"
       },
       {
         "value": "HD",
         "key": "Features"
       }
   ],
   "description": "Template for working with PRI",
   "name": "prof_name",
   "type": "Live",
   "id": "BNK056003413",
   "version": 6
 }

输入 2

{
  "template": false,
  "active": true,
  "metadata": [
    {
      "value": "HD",
      "key": "Features"
    }
  ],
  "description": "Live Template",
  "name": "Live_HD",
  "type": "Live",
  "id": "BNK007596994",
  "version": 1
}

对于输入 1,输出应为

{
  "id" : "BNK056003413",
  "name" : "prof_name",
  "metadataSet" : {
    "description" : "Template for working with PRI",
    "type" : "Live"
  },
  "workflow" : {
    "workflowInputProperties" : {
      "assetNamePrefix" : "bank_",
      "recordId" : "",
      "sourceUri":"",
      "processingUri": "",
      "recorderType": "ABC",
      "completionTimeout": 600
      "loopBackTimer": 10,
      "numberOfRetries": 3,
      "numberOfRetriesForScheduling": 3,
      "scheduleDelay" : 3600
    },
  }
}

对于输入2,输出应该如下,没有workflow.workflowInputProperties

{
  "id" : "BNK007596994",
  "name" : "Live_HD",
  "metadataSet" : {
    "description" : "Live Template",
    "type" : "Live"
  }
  "features" : "HD"
}

您应该将以下代码添加到规范的其余部分。唯一的问题是我不能输入空字符串并将其更改为 space。我会想办法解决的。

[
  {
    "operation": "shift",
    "spec": {
      "metadata": {
        "*": {
          "key": {
            "WorkflowCategory": {
              "#bank_": "workflow.workflowInputProperties.assetNamePrefix",
              "# ": [
              "workflow.workflowInputProperties.recordId",
              "workflow.workflowInputProperties.sourceUri",
              "workflow.workflowInputProperties.processingUri"
                    ],
              "#ABC": "workflow.workflowInputProperties.recorderType",
              "#600": "workflow.workflowInputProperties.completionTimeout",
              "#10": "workflow.workflowInputProperties.loopBackTimer",
              "#3": ["workflow.workflowInputProperties.numberOfRetries",
              "workflow.workflowInputProperties.numberOfRetriesForScheduling"],
              "#3600": "workflow.workflowInputProperties.scheduleDelay"
            }
          }
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "workflow": {
        "workflowInputProperties": {
          "completionTimeout": "=toInteger",
          "loopBackTimer": "=toInteger",
          "numberOfRetries": "=toInteger",
          "numberOfRetriesForScheduling": "=toInteger",
          "scheduleDelay": "=toInteger"
        }
      }
    }
  }
]