i found a nice code for checking user workflow hierarchy approver and solved the related error.
static void navax_workflowHierarchyTester(Args _args) { WorkflowTypeName workflowTemplateName = 'TIDEmploymentLeave'; //TrvExpTrans trvExpTrans; //TrvExpNumber trvExpNum = '000015'; //Expense id HcmEmploymentLeave hcmEmploymentLeave; str nodeId = '23511014'; //Starting worker id WorkflowHierarchyLevel level = 0; WorkflowContext workflowContext; SysWorkflowTable workflowTable; WorkflowLimitHierarchyProvider workflowLimitHierarchyProvider; WorkflowHierarchyProviderNode workflowHierarchyProviderNode; HRPWorkerLimit workerLimit = new HRPWorkerLimit(); HcmWorker hcmWorker; DirPersonUser dirPersonUser; RefRecId hcmPositionRecId; HcmPosition hcmPosition; container spendingCon, approvalCon; UserId userId; select firstOnly workflowTable where workflowTable.TemplateName == workflowTemplateName; select firstOnly hcmEmploymentLeave where hcmEmploymentLeave.HRSLeaveReqId == "LV-00635" ; workflowContext = WorkflowContext::newWorkflowContext( curext(), tableNum(hcmEmploymentLeave), hcmEmploymentLeave.RecId, workflowTable.WorkflowCorrelationId); workflowLimitHierarchyProvider = new WorkflowLimitHierarchyProvider(); //Level 1 while (nodeId && level < 20) //20 is just a fall back. In case it goes into an endless loop. { workflowHierarchyProviderNode = workflowLimitHierarchyProvider.getNextNode(nodeId, level, workflowContext); nodeId = workflowHierarchyProviderNode.getnodeId(); hcmWorker = HcmWorker::findByPersonnelNumber(nodeId); userId = DirPersonUser::findParty(hcmWorker.Person).User; hcmPositionRecId = HcmWorker::getPrimaryPosition(hcmWorker.RecId); hcmPosition = HcmPosition::find(hcmPositionRecId); spendingCon = workerLimit.getWorkerSigningLimit( hcmWorker.RecId, SourceDocumentRelationType::ExpenseReport, HRPLimitType::Spending, hcmPosition.PositionId); approvalCon = workerLimit.getWorkerSigningLimit( hcmWorker.RecId, SourceDocumentRelationType::ExpenseReport, HRPLimitType::Approval, hcmPosition.PositionId); info(strFmt("UserId: %1 | WorkerId: %2 | PositionId: %3 | ReportsToPosition: %4 | SpendingLimit: %5 | ApprovalLimit: %6", userId, hcmWorker.PersonnelNumber, hcmPosition.PositionId, hcmPosition.reportsToPosition(), con2Str(spendingCon), con2Str(approvalCon) )); level++; } }