compileflow Движок процесса Ali с открытым исходным кодом

задняя часть
compileflow Движок процесса Ali с открытым исходным кодом

1. Что такое компилируемый поток

compileflowЭто очень легкий, высокопроизводительный, интегрируемый и расширяемый процессор процессов.

compileflow ProcessДвижок рабочего процесса TaobaoTBBPMОдин из движков — это движок процесса без сохранения состояния, который фокусируется на выполнении чистой памяти, которая генерируется путем преобразования файлов процесса.javaКод скомпилирован и выполнен, лаконичен и эффективен. В настоящее время это механизм обработки нескольких основных систем, таких как транзакции мидл-офиса Alibaba.

compileflowЭто позволяет разработчикам проектировать свои собственные бизнес-процессы с помощью редактора процессов, визуализировать сложную бизнес-логику и наводить мосты между бизнес-дизайнерами и инженерами-разработчиками.

2. Список функций

  1. Высокая производительность: создается путем преобразования файлов процессаjavaКод скомпилирован и выполнен, лаконичен и эффективен.
  2. Разнообразные сценарии приложений: он широко используется в решениях Alibaba для среднего офиса, поддерживая несколько бизнес-сценариев, таких как руководство по покупкам, транзакция, выполнение контракта и капитал.
  3. Интегрируемость: легкий и компактный дизайн позволяет легко интегрировать его в различные решения и бизнес-сценарии.
  4. Идеальная поддержка подключаемых модулей: в настоящее время проектирование процессовIntelliJ IDEA,EclipseПоддержка подключаемых модулей, которые могут динамически генерироваться в режиме реального времени при проектировании процессов.javaКод и предварительный просмотр, то, что вы видите, это то, что вы получаете.
  5. Поддержка экспорта схемы проектирования процессовsvgфайлы и код модульного теста.

3. Быстрый старт

Шаг 1: Загрузите и установитеIntelliJ IDEAплагин (необязательно)

Адрес загрузки плагина:GitHub.com/Alibaba/com…

Инструкции по установке: Пожалуйста, используйтеIntelliJ IDEAМетод локальной установки для установки, перезапускIntelliJ IDEAвступит в силу.

Step2: POMплагин

<dependency>
    <groupId>com.alibaba.compileflow</groupId>
    <artifactId>compileflow</artifactId>
    <version>1.0.0</version>
</dependency>

допустимыйsearch.maven.orgПосмотреть доступные версии.

Уведомлениеcompileflowподдерживается толькоJDK 1.8и выше.

Шаг 3: Дизайн процесса

Давайте возьмем демонстрацию ktv в качестве примера, чтобы понять конфигурацию и конфигурацию узлов и атрибутов посредством демонстрации и практики демонстрации.APIиспользование.

Описание демонстрации: N человек идут на ктв петь, каждый поет песню, первоначальная цена потребления ктв составляет 30 юаней на человека, если общая стоимость превышает 300, будет скидка 10%, а если общая цена менее 300, будет выплачена первоначальная цена.

S3.1

Создайтеbpmфайл, как показано ниже:

ktv_demo_s1.png

Примечание:bpmПуть к файлу должен быть таким же, какcodeПоследовательно, в режиме загрузки файла процессный движок выполняется в соответствии сcodeНайдите файл.

S3.2

Проектирование процессов с помощью плагинов или прямое написание процессовxmlдокумент.

S3.3 Процесс вызова

Напишите следующий модульный тест:

public void testProcessEngine() {
    final String code = "bpm.ktv.ktvExample";

    final Map<String, Object> context = new HashMap<>();
    final List<String> pList = new ArrayList<>();
    pList.add("wuxiang");
    pList.add("xuan");
    pList.add("yusu");
    context.put("pList", pList);

    final ProcessEngine<TbbpmModel> processEngine = ProcessEngineFactory.getProcessEngine();

    final TbbpmModel tbbpmModel = processEngine.load(code);
    final OutputStream outputStream = TbbpmModelConverter.getInstance().convertToStream(tbbpmModel);
    System.out.println(outputStream);
    System.out.println(processEngine.getTestCode(code));

    processEngine.preCompile(code);

    System.out.println(processEngine.start(code, context));
}

compileflowРодом только поддерживает TaobaoBPMСтандарт, для совместимостиBPMN 2.0Спецификация, сделаны некоторые адаптации, но поддерживается только частьBPMN 2.0Элементы могут быть расширены на исходной основе, если для их поддержки требуются другие элементы.

4.больше информации