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++;
}
}
source :
https://community.dynamics.com/ax/b/dynamicsnavax/archive/2015/06/08/workflow-hierarchy-assignment-common-errors-explained-and-tester-job-ax-2012