1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/biglyc-process_engine

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Процесс-движок

Проект: введение

process-engine

  1. Определяет выполнение бизнес-процесса, что позволяет избежать написания сложного кода логики процесса.
  2. Новым партнёрам больше не нужно просматривать старый код и постоянно переходить по нему, чтобы понять логику.
  3. Осуществляет контроль над контекстом, предотвращая произвольное добавление различных параметров в контекст.
  4. Реализует предварительную обработку и последующую обработку с использованием классов аспектов, которые могут быть использованы для сбора журналов, бизнес-данных и показателей.

Язык: Java

Инструкция по использованию

Шаг 1: Добавление конфигурации Spring

В web.xml настройте:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:META-INF/spring/process-engine-context.xml</param-value>
</context-param>

Шаг 2: Определение процесса

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 )

Вы можете оставить комментарий после Вход в систему

Введение

Процессный движок определяет бизнес-процессы, что позволяет визуализировать их и не писать сложный логический код пошагово, 123456789. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/biglyc-process_engine.git
git@api.gitlife.ru:oschina-mirror/biglyc-process_engine.git
oschina-mirror
biglyc-process_engine
biglyc-process_engine
master