我有一个工作流程步骤,如果遇到问题,则将消息和堆栈跟踪信息抛出WorkflowException
,实际上-用有效载荷阻止了整个工作流程启动器。最终,工作流无限期处于RUNNING
状态,并且不处理阻塞的有效负载的任何更新。这种情况需要管理员采取措施才能手动终止工作流程。
简单的工作流程如下:
@Service
@Component
@Properties({
@Property(name = Constants.SERVICE_DESCRIPTION, value = "Workflow"),
@Property(name = "process.label", value = "Workflow Step") })
public class WorkflowStep implements WorkflowProcess {
@Override
public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap metaDataMap)throws WorkflowException {
try {
... doing some stuff ...
} catch (Exception e) {
throw new WorkflowException(e.getMessage(), e);
}
}
}
我想在2分钟后检查工作流程是否为COMPLETED
,如果不是-终止它们以解除有效负载,然后将下一个资产上传到此路径中-再次由工作流程处理。
任何不使用CRON Scheduler
的想法如何解决?
如果捕获到异常,为什么不立即终止工作流程而不是抛出WorkflowException?您可以记录所需的任何内容,处理错误然后终止...
BR,奥利弗