activiti 定时执行任务TimerCatchEvent 循环调用外部系统接口直到外部接口返回True流程才能走到下一步
可以使用activiti提供的定时器事件和JavaDelegate来实现循环调用外部系统接口,直到接口返回True。
-
首先,在BPMN流程定义文件中添加一个TimerCatchEvent节点,设置定时器事件的时间间隔和重复次数。
-
在TimerCatchEvent节点的执行逻辑中,通过JavaDelegate调用外部系统接口,获取接口返回值。
-
如果接口返回False,则继续等待下一次定时器事件触发后再次调用接口;如果接口返回True,则流程可以继续往下执行。
-
在JavaDelegate中,可以使用HttpClient等工具来调用外部系统接口,并根据接口返回值进行相应的处理。
下面是一个简单的示例代码:
public class ExternalSystemDelegate implements JavaDelegate {
public void execute(DelegateExecution execution) throws Exception {
boolean result = false;
while (!result) {
// 调用外部系统接口,并获取返回值
result = callExternalSystem();
// 如果返回值为false,则等待下一次定时器事件触发后再次调用接口
if (!result) {
Thread.sleep(1000);
}
}
}
private boolean callExternalSystem() {
// 使用HttpClient等工具调用外部系统接口,并根据接口返回值进行相应的处理
...
}
}
``
原文地址: https://www.cveoy.top/t/topic/fsGs 著作权归作者所有。请勿转载和采集!