欢迎使用普元产品知识库,本知识库包含普元应用开发平台EOSPlatform,流程平台BPS,企业服务总线ESB,微服务平台Microservice,运维管理平台Devops,数据集成平台DI
欢迎使用普元文档库
“主管审批”环节启用多工作项,选择“顺序执行工作项”,提交“申请报销”环节,控制台报错:
触发事件调用的逻辑流:newbiz1.bizx
Caused by: ErrCode: 21070018
Message: 执行触发事件发生异常,触发事件类型[after-create-wi]
at com.primeton.workflow.engine.scheduler.application.impl.ToolAgentManager.executeTriggerEvents(ToolAgentManager.java:338)
at com.primeton.workflow.engine.scheduler.application.impl.ToolAgentManager.executeTriggerEvent(ToolAgentManager.java:309)
at com.primeton.workflow.engine.scheduler.event.TriggerEventHandler.invoke(TriggerEventHandler.java:24)
at com.primeton.workflow.event.framework.event.base.WFEventExecutor.handleEvent(WFEventExecutor.java:175)
... 84 more
Caused by: ErrCode: 21070016
Message: 执行应用调用发生异常:logic-flow
at com.primeton.workflow.engine.scheduler.application.impl.ToolAgentManager.executeApplication(ToolAgentManager.java:361)
at com.primeton.workflow.engine.scheduler.application.impl.log.ApplicationLogAction.execute(ApplicationLogAction.java:69)
at com.primeton.workflow.engine.scheduler.enginelog.EngineLogExecutor.executeAction(EngineLogExecutor.java:162)
at com.primeton.workflow.engine.scheduler.application.impl.ToolAgentManager.executeTriggerEvents(ToolAgentManager.java:336)
... 115 more
Caused by: ErrCode: 21000000
Message: NULL
at com.primeton.workflow.api.proxy.EngineTxAction.doOperator(EngineTxAction.java:311)
at com.primeton.workflow.api.proxy.EngineTxAction.execute(EngineTxAction.java:272)
... 118 more
Caused by: ErrCode: 21000000
Message: ( Create WFTaskSequenceStructure error , the parameter's value is null .)
at com.primeton.workflow.engine.scheduler.task.sequence.WFTaskSequenceStructure.createParticipantSequenceStructure(WFTaskSequenceStructure.java:105)
at com.primeton.workflow.engine.scheduler.task.sequence.WFTaskSequenceStructure.<init>(WFTaskSequenceStructure.java:98)
at com.primeton.workflow.engine.scheduler.task.sequence.WFTaskSequenceStructure.getParticipantSequenceStructure(WFTaskSequenceStructure.java:151)
at com.primeton.workflow.engine.scheduler.event.handle.task.WFTaskSchedulerHelper.isActInstFinishEnable(WFTaskSchedulerHelper.java:185)
at com.primeton.workflow.engine.scheduler.event.handle.task.WFTaskScheduler.taskHasFinished(WFTaskScheduler.java:237)
at com.primeton.workflow.api.listener.WFTaskListener.OnMessage(WFTaskListener.java:25)
at com.primeton.workflow.task.message.impl.TaskMessageCenter.fireTaskMessage(TaskMessageCenter.java:104)
at com.primeton.workflow.task.service.scheduler.TaskScheduler.finishWorkItemSimple(TaskScheduler.java:1066)
at com.primeton.workflow.task.engtask.WFWorkItemOperateImpl.finishWorkItemDirectly(WFWorkItemOperateImpl.java:1468)
at com.primeton.workflow.api.engtask.WorkItemManagerImpl.finishWorkItemDirectly(WorkItemManagerImpl.java:339)
... 185 more
问题原因:触发事件在调用finishWorkItemDirectly时,“主管审批”环节工作项创建后数据还未保存成功,所以执行报错了
建议方案:
方案1、设置触发事件调用方式为异步,在finishWorkItemDirectly之前sleep()保证工作项创建完成。示例demo,运行demo时请将参与者更换为项目中员工
方案2、调用finishWorkItemDirectly之前,先调用queryNextWorkItemsByWorkItemID()根据已完成的工作项ID查后继活动工作项。
方案3、“主管审批”多工作项不设置顺序执行,在业务端进行处理,实现顺序执行