#azure-logic-apps
#azure-logic-apps
Вопрос:
У меня есть два источника данных JSON:
Исходные данные 1:
{
"result": [
{
"resource_list": "7961b907db9253045fbdf1fabf9619d4,55617907db9253045fbdf1fabf9619d2",
"project": "11216",
"project_manager": {
"value": "55617907db9253045fbdf1fabf9619d2"
}
}
]
}
Исходные данные 2:
{
"result": [
{
"sys_id": "7961b907db9253045fbdf1fabf9619d4",
"email": "test.user1@mysite.com"
},
{
"sys_id": "55617907db9253045fbdf1fabf9619d2",
"email": "test.user2@mysite.com"
}
]
}
Я хочу сослаться на «resource_list» и «project_manager» из исходных данных 1 в «sys_id» в исходных данных 2 и получить «email» из исходных данных 2, а затем составить окончательный вывод, как показано ниже:
Вывод:
[
{
"__metadata":
{
"uri": "ProjectCode"
},
"externalProject": "11216",
"projectCodeAssignment":
[
{
"__metadata":
{
"uri": "projectCodeAssignment"
},
"externalProjectAssignee": "test.user1@mysite.com"
},
{
"__metadata":
{
"uri": "projectCodeAssignment"
},
"externalProjectAssignee": "test.user2@mysite.com"
}
]
}
]
Возможно ли это сделать полностью в приложении Logic, не используя приложение Function или что-либо для его выполнения.
Комментарии:
1. Как дела? Ваша проблема решена? Не могли бы вы принять мой пост, если это полезно для вас?
Ответ №1:
Я пишу для вас js-скрипт. Для быстрой демонстрации я опустил некоторые данные, связанные с __metadata
, кажется, это какой-то жесткий код, который здесь не так важен. Попробуйте логику ниже:
Код в JS code действие:
var body = workflowContext.trigger.outputs.body
var data1 = body.data1;
var data2 = body.data2;
var result = [];
data1.result.forEach(item =>{
var resultItem = {};
resultItem.externalProject = item.project;
resultItem.projectCodeAssignment =[];
var resourceIds = item.resource_list.split(',');
resourceIds.forEach(id =>{
var user = data2.result.find( ({ sys_id }) => sys_id === id );
resultItem.projectCodeAssignment.push({"externalProjectAssignee": user.email})
});
result.push(resultItem);
})
return resu<
Тело запроса (ваши 2 набора данных названы как data1
и data2
здесь ):
{
"data1": {
"result": [{
"resource_list": "7961b907db9253045fbdf1fabf9619d4,55617907db9253045fbdf1fabf9619d2",
"project": "11216",
"project_manager": {
"value": "55617907db9253045fbdf1fabf9619d2"
}
}
]
},
"data2": {
"result": [{
"sys_id": "7961b907db9253045fbdf1fabf9619d4",
"email": "test.user1@mysite.com"
}, {
"sys_id": "55617907db9253045fbdf1fabf9619d2",
"email": "test.user2@mysite.com"
}
]
}
}
Результат:
Комментарии:
1. Спасибо Стэнли за быстрое и простое решение; однако для запуска JavaScript нам требуется учетная запись интеграции, я полагаю? У меня нет учетной записи Интеграции. Извините, немного нового в этой области, есть какое-нибудь альтернативное решение для запуска JavaScript или чего-то еще в LogicApp, которое работает без необходимости использования учетной записи интеграции?
2. @VictorMcIntyre, добро пожаловать, да, учетная запись интеграции необходима, если вы используете JS здесь. Вы можете создать учетную запись интеграции, просто следуйте этому: docs.microsoft.com/en-us/azure/logic-apps /…