存储键值对以供WSO2ESB代理服务中引用



我使用peopleHr连接器以以下格式获取json数据,其中包含大约500名员工的详细信息:

{
  "Result": [
    {
      "EmployeeId": {
        "DisplayValue": "UK20900"
      },
      "Title": {
        "DisplayValue": "",
        "FieldHistory": []
      },
      "FirstName": {
        "DisplayValue": "Riyafa",
        "FieldHistory": []
      },
      "LastName": {
        "DisplayValue": "Abdul Hameed",
        "FieldHistory": []
      },
      "OtherName": {
        "DisplayValue": "",
        "FieldHistory": []
      },
      "KnownAs": {
        "DisplayValue": "",
        "FieldHistory": []
      },
      "EmailId": {
        "DisplayValue": "riyafa@rocketmail.com",
        "FieldHistory": []
      },
      "StartDate": {
        "DisplayValue": "2015-11-18",
        "FieldHistory": []
      },
      "DateOfBirth": {
        "DisplayValue": "",
        "FieldHistory": []
      },
      "JobRole": {
        "DisplayValue": "",
        "FieldHistoryForJobRole": [
          {
            "JobRole": null,
            "EffectiveDate": "2015-11-18",
            "ChangedOn": "2015-11-18",
            "ReasonForChange": "New Starter"
          }
        ]
      }
    },
    {
      "EmployeeId": {
        "DisplayValue": "LK500200",
        "FieldHistory": [
          {
            "OldValue": "LK",
            "NewValue": "LK500200",
            "ChangedOn": "2015-11-18",
            "ReasonForChange": "We choose our own employee ids"
          },
          {
            "OldValue": "PW2",
            "NewValue": "LK",
            "ChangedOn": "2015-11-18",
            "ReasonForChange": "Because we have a specific format for our employee ids"
          }
        ]
      },
      "Title": {
        "DisplayValue": "",
        "FieldHistory": []
      },
      "FirstName": {
        "DisplayValue": "Kalani",
        "FieldHistory": []
      },
      "LastName": {
        "DisplayValue": "Gayathri",
        "FieldHistory": []
      },
      "OtherName": {
        "DisplayValue": "",
        "FieldHistory": []
      },
      "KnownAs": {
        "DisplayValue": "",
        "FieldHistory": []
      },
      "EmailId": {
        "DisplayValue": "kalani.gayathri91@gmail.com",
        "FieldHistory": []
      },
      "StartDate": {
        "DisplayValue": "2015-11-17",
        "FieldHistory": []
      },
      "DateOfBirth": {
        "DisplayValue": "1992-05-08",
        "FieldHistory": []
      },
      "JobRole": {
        "DisplayValue": "IT",
        "FieldHistoryForJobRole": [
          {
            "JobRole": "IT",
            "EffectiveDate": "2015-11-17",
            "ChangedOn": "2015-11-18",
            "ReasonForChange": "New Starter"
          }
        ]
      }
    }
  ]
}

我想将EmailId和EmployeeId存储为键值对,以便将来在WSO2 ESB代理服务中引用,在该服务中我需要使用EmailId引用Employe_Id。我曾想过使用一个名称为EmailId、值为EmployeeId的属性中介器,但表达式不能用作属性中介器中的名称。如何提取这些值并将其存储在ESB代理服务中以供将来参考?

您可以在属性中介器中使用'expression'属性来提取值(使用xpath或jsonpath)。

但是使用属性中介器在这种情况下不起作用,因为这些属性是消息的本地属性。也就是说,当您收到一条新消息时,您将获得该属性的一个单独的新副本,而不是以前设置的值。

因此,您可以尝试以下方法之一:
-使用DBReport和DBLookup中介来存储和检索值。这将涉及建立一个数据库
-使用一个自定义中介,它将在传入消息中保存值。这里有一个示例代码,它保存一个值(来自属性)并将其与新值进行比较。您可以将其修改为仅保留值,并将其设置为新属性,以便在收到新消息时使用。

最新更新