我使用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中介来存储和检索值。这将涉及建立一个数据库
-使用一个自定义中介,它将在传入消息中保存值。这里有一个示例代码,它保存一个值(来自属性)并将其与新值进行比较。您可以将其修改为仅保留值,并将其设置为新属性,以便在收到新消息时使用。