Слияние кода завершено, страница обновится автоматически
process-engine
В web.xml настройте:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:META-INF/spring/process-engine-context.xml</param-value>
</context-param>
package cn.ted;
import cn.ted.process.engine.Context;
import cn.ted.process.engine.ProcessContextFactory;
import cn.ted.process.engine.annotation.ProcessScene;
import cn.ted.process.engine.controller.RetryController;
import cn.ted.process.engine.core.AbstractProcessDefineRegister;
import cn.ted.process.engine.core.DefaultProcessDefine;
import cn.ted.process.engine.core.DefaultProcessManager;
import cn.ted.process.engine.core.ProcessDefine;
import cn.ted.process.engine.handler.Handler;
import cn.ted.process.engine.switcher.Switcher;
import com.google.common.collect.Maps;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Map;
/**
* Unit test for simple App.
*/
public class AppTest {
@Resource
private static Handler<Boolean, Object> oneHandler;
@Resource
private static Handler<Boolean, Object> twoHandler;
@Resource
private static Handler<Boolean, Object> threeHandler;
@Resource
private static Handler<Boolean, Object> fourHandler;
@Resource
private static Handler<Boolean, Object> fiveHandler;
@Resource
private static Handler<Boolean, Object> sixHandler;
@Resource
private static Switcher<Integer, Object> oneSwitcher;
@Resource
private static DefaultProcessManager defaultProcessManager;
public static void main(String[] args) {
Map<String, Object> initParam = Maps.newHashMap();
Context processCtx = ProcessContextFactory.createDefaultProcessCtx(initParam, "testProcess");
defaultProcessManager.run(processCtx);
}
@ProcessScene(name = "testProcess")
@Service
public static class XProcess extends AbstractProcessDefineRegister {
private ProcessDefine process;
@Override
protected ProcessDefine createProcessDefine() {
return this.process;
}
@Override
public void register() {
process = new DefaultProcessDefine();
// Определяем первый шаг бизнес-процесса
process.defineStart(oneHandler);
// Если результат выполнения первого шага истинен, выполняем twoHandler
process.doHandler(oneHandler).when(true).go(twoHandler);
// Если результат выполнения первого шага ложен, выполняем threeHandler
process.doHandler(oneHandler).when(false).go(threeHandler);
// Если результатом выполнения twoHandler является ложь, выполняем oneSwitcher
process.doHandler(twoHandler).when(false).go(oneSwitcher);
// Если результатом выполнения oneSwitcher является 0, выполняем fourHandler
process.doSwitcher(oneSwitcher).when(NumberUtils.INTEGER_ZERO).go(fourHandler);
// Если результатом выполнения oneSwitcher является 1, выполняем fiveHandler
process.doSwitcher(oneSwitcher).when(NumberUtils.INTEGER_ONE).go(fiveHandler);
// Добавляем контроллер повторных попыток, который будет повторять попытку выполнения sixHandler, если результат не истинен. Максимальное количество попыток — 3, интервал между попытками — 10 секунд.
process.doController(new RetryController(sixHandler, true, 10, 3));
}
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )