You are viewing limited content. For full access, please sign in.

Question

Question

Routing cannot be split to any subsequent branch. XPath evaluation may fail for every possible condition.

asked on September 2, 2022 Show version history

I don't understand why this started yesterday. As far as I know no one has touched the design. 

 

It left user task. Outflows are

1. /dataset/Current_Reg="Yes" 

2. /dataset/Current_Reg="No" AND  /dataset/GWPDIRT="Yes"

 

The form shows Current_Reg is NO and GWPDIRT is Yes but for some reason it terminated. 

 

Details: URL: Error: RoutingConditionMayFail

Date: 8/31/2022 11:02:52 PM (Pacific Standard Time) HTTP Status Code: 500 Business Process ID: 752 Instance ID: 359040 Business Process Name: DIRT - PROD - Current Workflow Stack Trace: Caught exception: Laserfiche.Forms.CommonUtils.Exceptions.LFFormsException Message: Routing cannot be split to any subsequent branch. XPath evaluation may fail for every possible condition. [LFF5408-RoutingConditionMayFail] at Laserfiche.Forms.Routing.Activity.GetAllSubsequentSteps(Int32 instanceId, Int32 processId, Int32 sourceStepId, IRoutingContext routingContext) at Laserfiche.Forms.Routing.RoutingContext.GetAllSubsequentRoutingSteps() at Laserfiche.Forms.Routing.RoutingDispatcher.GetSubsequentRoutingStepList() at Laserfiche.Forms.Routing.RoutingDispatcher.ExecuteSteps(Int32 processWorkerInstanceId, ActionType action, Int32 stepIdToAct, String comment) at Laserfiche.Forms.Routing.RoutingDispatcher.RunProcess(Int32 currentStepId, Int32 processWorkerInstanceId, Int32 boundaryEventStepId, SubmissionDataSet inputData, Int32 mainProcessInstanceId, Int32 lastSubmissionId, Boolean autoRetrying, PaymentParams paymentParams, RoutingContinuationEvent continuationEvent, ActionType action, String comment) at

Laserfiche.Forms.Routing.RoutingEngineService.RunRouting(RoutingRequestParameters requestParam) at Laserfiche.Forms.Routing.RoutingEngineService.<>c__DisplayClass6_0.<StartRouting_Async>b__0()

0 0

Replies

replied on September 2, 2022

What if an instance had the following:

/dataset/Current_Reg="No" AND  /dataset/GWPDIRT="No"

What should happen then? The error basically indicates that there could be a scenario where none of the currently defined outflow path conditions could be met.

0 0
replied on September 6, 2022 Show version history

 

I appreciate the approach but to be clear forms, that were terminated, are No Reg and Yes GWPDIRT.  

If that were the instance, I would wait until, I have determined Reg and ether run GWPDIRT or not. I am not able to run this job if there is registration on the record. 

 

0 0
replied on September 4, 2022

The conditional expression evaluation using "=" is case sensitive. So if the value for Current_Reg is "NO" and the conditional expression is  "/dataset/Current_Reg="No"", then the evaluation will fail. 

You can set the conditional expression to "matches(/dataset/Current_Reg,"No","i")" to make the evaluation case insensitive. 

Also to avoid instance termination because of RoutingConditionMayFail error, you can upgrade to Forms 11 latest version(https://support.laserfiche.com/kb/1014265/list-of-changes-for-laserfiche-forms-11 ), with which the instance no longer terminate when run into RoutingConditionMayFail error and also you can edit the instance variable value to make it meet the condition and retry the instance to resume.

0 0
replied on September 6, 2022

That is a good point. Because of this is why I copy the values. They are all "No" and "Yes" Thanks for the tip on case insensitivity. I will use that. 

 

I am not the administrator, but I will pass this on. I don't understand why this keeps failing. It randomly fails on me. 

 

To fix it this time I placed an exclusive gateway in and simplified outflows to /dataset/GWPDIRT="Yes" and /dataset/GWPDIRT="No"

Fingers crossed this fixes it. 

0 0
replied on September 6, 2022

You may also want to make it a best practice to always have a Default outflow path.

0 0
replied on September 6, 2022

I am not sure how that would work in this situation. Can you help me see what you are thinking? My mind is stuck on this is an either or; a Yes or No. 

  • If there is Registration, I cannot run GWPDIRT and it goes to the next person to move the registration. Then I get it back to Run GWPDIRT and it goes to the next person and next until all data is moved.
  • If there is no registration, I can run GWPDIRT and it goes to the next person and next until all data is moved.
0 0
replied on September 6, 2022

Having a default outflow path make it so it doesn't suspend or terminate. 

0 0
You are not allowed to follow up in this post.

Sign in to reply to this post.