Workday Integrations and Flow designer array object issue.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
2 hours ago
Hey Guys, I am struggling to get the data mapping in flow designer.
So the thing is Look up Time Off Balance is an OOTB action in HRSD workday plugin ,and the time off balance is getting data from the workday for time_off_balance object which is fine,
Now my challenge is i am not able to select in data pill for it from the flow designer, in the screenshot when we go array.object i cannot pick anything up.
How do i do it?
1 REPLY 1
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
52m ago
One observation, i tried putting it outside the nested loop and then tried using Xpath
But the error I am facing when publishing it is throwing the attached error
(function execute(inputs, outputs) {
try {
function createOutputJson(inputs, outputs) {
var xmlDoc = new XMLDocument2();
xmlDoc.setNamespaceAware(true);
xmlDoc.parseXML(inputs.response);
var node = xmlDoc.getNodeText("/env:Envelope/env:Body/wd:Get_Time_Off_Plan_Balances_Response/wd:Response_Data/wd:Time_Off_Plan_Balance/wd:Time_Off_Plan_Balance_Data");
if (node == null) {
outputs = WorkdayUtils.emptyresponseHandler(inputs, outputs);
} else {
// --- ADDED: Variables to hold the specific values ---
var final_casl = "";
var final_pto = "";
var final_esl = "";
var responseDataXpath = "/env:Envelope/env:Body/wd:Get_Time_Off_Plan_Balances_Response/wd:Response_Data/";
var timeOffPlanBalanceList = new Array();
var index = 0;
while (index < 999) {
index++;
var timeOffPlanBalanceXpath = responseDataXpath.concat("wd:Time_Off_Plan_Balance[" + index + "]/");
var effectivedate = xmlDoc.getNodeText("/env:Envelope/env:Body/wd:Get_Time_Off_Plan_Balances_Response/wd:Response_Filter/wd:As_Of_Effective_Date");
var employeeReferenceXpath = xmlDoc.getNode(timeOffPlanBalanceXpath.concat("wd:Employee_Reference"));
var employeeDescription = employeeReferenceXpath.getAttribute('wd:Descriptor');
var employeeID = xmlDoc.getNodeText(timeOffPlanBalanceXpath.concat("wd:Employee_Reference/wd:ID[@type='Employee_ID']"));
if (employeeDescription == null && employeeID == null)
break;
var employeeReference = {
employeeDescription: employeeDescription,
employeeID: employeeID
};
var timeOffPlanBalanceRecordList = new Array();
var count = 0;
while (count < 999999) {
count++;
var timeOffPlanBalanceRecordXpath = timeOffPlanBalanceXpath.concat("wd:Time_Off_Plan_Balance_Data/wd:Time_Off_Plan_Balance_Record[" + count + "]/");
var timeOffRefXpath = xmlDoc.getNode(timeOffPlanBalanceRecordXpath.concat("wd:Time_Off_Plan_Reference"));
var timeOffPlanDescription = timeOffRefXpath.getAttribute('wd:Descriptor');
var absencePlanID = xmlDoc.getNodeText(timeOffPlanBalanceRecordXpath.concat("wd:Time_Off_Plan_Reference/wd:ID[@type='Absence_Plan_ID']"));
if (timeOffPlanDescription == null && absencePlanID == null)
break;
var timeOffPlanReference = {
timeOffPlanDescription: timeOffPlanDescription,
absencePlanID: absencePlanID
};
var unitofTimeReferenceXpath = xmlDoc.getNode(timeOffPlanBalanceRecordXpath.concat("wd:Unit_of_Time_Reference"));
var unitOfTimeDescription = unitofTimeReferenceXpath.getAttribute('wd:Descriptor');
var unitOfTimeID = xmlDoc.getNodeText(timeOffPlanBalanceRecordXpath.concat("wd:Unit_of_Time_Reference/wd:ID[@type='Unit_of_Time_ID']"));
var unitOfTimeReference = {
unitOfTimeDescription: unitOfTimeDescription,
unitOfTimeID: unitOfTimeID
};
var timeOffPlanBalancePositionRecordList = new Array();
var check = 0;
while (check < 999999) {
check++;
var timeOffPlanBalance = xmlDoc.getNodeText(timeOffPlanBalanceRecordXpath.concat("wd:Time_Off_Plan_Balance_Position_Record[" + check + "]/wd:Time_Off_Plan_Balance"));
if (timeOffPlanBalance == null)
break;
// --- ADDED: Logic to capture the specific balances ---
if (absencePlanID == "ABSENCE_PLAN_SMCH_CA_SL_Time_Off_Plan") { final_casl = timeOffPlanBalance; }
if (absencePlanID == "ABSENCE_PLAN_SMCH_PTO_Time_Off_Plan") { final_pto = timeOffPlanBalance; }
if (absencePlanID == "ABSENCE_PLAN_SMCH_Extended_Sick_Leave_Time_Off_Plan") { final_esl = timeOffPlanBalance; }
var timeOffPlanBalancePositionRecord = {
timeOffPlanBalance: timeOffPlanBalance
};
timeOffPlanBalancePositionRecordList.push(timeOffPlanBalancePositionRecord);
}
var timeOffPlanBalanceRecord = {
timeOffPlanReference: timeOffPlanReference,
unitOfTimeReference: unitOfTimeReference,
timeOffPlanBalancePositionRecordList: timeOffPlanBalancePositionRecordList
};
timeOffPlanBalanceRecordList.push(timeOffPlanBalanceRecord);
}
var timeOffPlanBalanceData = {
employeeReference: employeeReference,
effectivedate: effectivedate,
timeOffPlanBalanceRecordList: timeOffPlanBalanceRecordList
};
timeOffPlanBalanceList.push(timeOffPlanBalanceData);
}
outputs.status = "Success";
outputs.timeoffplanbalancelist = timeOffPlanBalanceList;
// --- ADDED: Final output mapping ---
outputs.casl_balance = final_casl;
outputs.pto_balance = final_pto;
outputs.esl_balance = final_esl;
}
}
if (inputs.statusCode == "200") {
outputs = createOutputJson(inputs, outputs);
} else {
outputs = WorkdayUtils.errorHandler(inputs, outputs);
gs.error(outputs.error_message);
}
} catch (e) {
var errStatObj = WorkdayUtils.getUnknownErr(e);
outputs.status = errStatObj.status;
outputs.error_message = errStatObj.error_message;
}
})(inputs, outputs);
