В эпоху Сааса безумие рабочий процесс кажется профессиональным качеством

задняя часть Архитектура программист
В эпоху Сааса безумие рабочий процесс кажется профессиональным качеством

предисловие

  • Все больше и больше проектов теперь используют рабочие процессы для своей повседневной работы. Сегодня мы рассмотрим рабочий процесс Activiti, начнем с рисования BPMN

Установка среды

  • Файлы BPMN о процессе в основном интегрируются и рисуются через инструмент разработки eclipse. Идея в основном состоит в покраске actiBPM, но после 2014 года actiBPM больше не поддерживается, и теперь его прямо невозможно установить и использовать в новой версии идеи.
  • С этим можно разрабатывать проекты, рисовать через Eclipse, но такая ситуация выглядит очень хлопотно. Вот еще один интегрированный инструмент для рисования блок-схем bpmn.
  • camunda-modeler — это сторонний инструмент проектирования процессов. Его преимущество в том, что он заменяет eclipse, и мы можем загрузить его через внешние инструменты idea.

image-20211101114751196.png

image-20211101114941598.png

  • Остальное можем нарисовать.

image-20211101115012677.png

расширять

  • Что касается стороннего программного обеспечения для рисования процессов, похожего на camunda, большинство из них предоставит общественный офис. Они запускаются как java-сервисы. Почему он до сих пор нужен именно так? Потому что таким образом мы можем рисовать процесс через camunda, вызывая API. Его можно нарисовать на нашей собственной технологической платформе. Таким образом, процессный ящик подключается к нашей собственной платформенной системе.

Процесс публикации

  • Сначала рисуем простой процесс через камунду. Выше мы сначала запустили платформу camunda в виде tomcat и опубликовали сделанный нами процесс.

image-20211101160417731.png

image-20211101160434919.png

Сервисная миссия

  • Прежде всего, действие нашей оплаты кредитной картой является операцией на стороне сервера. Здесь мы нажимаем на панель настроек с правой стороны, чтобы установить метод обслуживания сервера.

image-20211102092204749.png

  • В конце концов, сервер получает информацию об узле путем прослушивания, поэтому здесь нам нужно установить тип сообщения (Тема).

image-20211102092301953.png

шлюз

  • Теперь наш процесс по-прежнему очень прост. Выше мы установили для метода реализации значение External, чтобы указать, что узел использует внешние службы для совместной реализации и указания темы темы сообщения. Что касается мониторинга сообщений, мы используем Java для мониторинга приведенной ниже информации. Еще одна важная роль в этом процессе — шлюз. Шлюз здесь является нашим узлом суждения. Например, есть такой запрос на наш запрос оплаты кредитной картой выше
  • Утверждение платежа требуется, когда сумма платежа больше или равна 1000 юаней. Если сумма меньше 1000 юаней, оплата может быть произведена напрямую.
  • Существует график × в камунде, который мы называем шлюзом. Немного модифицируем блок-схему

image-20211102093115972.png

  • Ворота тащат нас прямо по нему заходят, он отличается наличием двух и более штук ответвления. Итак, какие из них в конечном итоге станут ветвями, нам нужно установить условие для каждой ветки. Здесь мы устанавливаем условия для выражения Java.

image-20211102093248255.png

  • сумма Это переменная. Вы можете определить эту переменную по желанию, но вы должны указать эту переменную в начале процесса, иначе будет сообщено об ошибке

image-20211102094536939.png

  • Мы можем попросить пользователя предоставить необходимую информацию для первого процесса перед запуском шлюза.

image-20211102094627368.png

  • Затем будет выполняться обратный процесс на основе заполненной суммы. Утверждение платежа должно быть подтверждено в соответствии с информацией о процессе, поэтому я также добавил элемент параметра при заполнении формы заявки. Зачем добавлять этот параметр? Предположим, я лицо, ответственное за утверждение платежей. Но меня не очень волнует сумма денег, или я просто не задумываюсь о некоторых проектах. В настоящее время мы можем использовать автоматизированный процесс принятия решений для автоматического утверждения узла.
  • Здесь мы вводим DMN процесса и создаем новый файл DMN через camunda. и установите идентификатор dmn

image-20211102095438122.png

  • Затем щелкните значок в верхнем левом углу, чтобы установить правила.

image-20211102095633826.png

  • Наши правила очень просты, я одобряю все проекты item-xyz, иначе их не одобрят.

  • В этом правиле мы можем задать множество способов, вышеприведенный — единственный способ, то есть каждое условие взаимоисключающее, либо черное, либо белое. Есть и другие способы, которыми мы можем отладить его самостоятельно.

  • Возвращаясь к нашему основному процессу, мы выбираем метод реализации как DMN, а ref выбирает идентификатор DMN, который мы установили выше.

image-20211102095822337.png

Информация о процессе мониторинга Java

<dependency>
    <groupId>org.camunda.bpm</groupId>
    <artifactId>camunda-external-task-client</artifactId>
    <version>7.15.0</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.1</version>
</dependency>
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
  • После того, как мы добавим сюда зависимости, мы начинаем отслеживать внешние сервисы в процессе, соответствующем теме нашего процесса.
ExternalTaskClient client = ExternalTaskClient.create()
        .baseUrl("http://localhost:8080/engine-rest")
        .asyncResponseTimeout(10000) // 长轮询超时时间
        .build();

// 订阅指定的外部任务
client.subscribe("charge-card")
        .lockDuration(1000) // 默认锁定时间为20秒,这里修改为1秒
        .handler((externalTask, externalTaskService) -> {
            // 将您的业务逻辑写在这

            // 获取流程变量
            String item = (String) externalTask.getVariable("item");
            Long amount = (Long) externalTask.getVariable("amount");

            LOGGER.info("Charging credit card with an amount of '" + amount + "'€ for the item '" + item + "'...");

            try {
                Desktop.getDesktop().browse(new URI("https://docs.camunda.org/get-started/quick-start/complete"));
            } catch (Exception e) {
                e.printStackTrace();
            }

            // 完成任务
            externalTaskService.complete(externalTask);
        })
        .open();
  • На данный момент мы можем проверить журнал,

image-20211102100022312.png

Интеграция с Maltcloud

  • Рабочий процесс запланирован на втором этапе плана версии maltcloud, поэтому я планирую разработать операции, связанные с рабочим процессом, после того, как maltcloud выполнит основные функции. Во-первых, это рисунок процесса.Основной рисунок и публикация процесса были упомянуты выше. Давайте посмотрим, как унаследовать рабочий процесс в нашу среду корпоративного уровня, maltcloud.
  • Обратите внимание, что при необходимости интеграции и версии camunda springboot совпадают. Официальный сайт предоставляет нам ответную версию программы сопоставления

image-20211102165718544.png

  • объясните здесь
    • В первом столбце [стартовая версия Springboot] указана начальная версия camunda для Springboot.
    • Второй столбец [версия платформы camunda] представляет актуальную версию camunda.
    • Третий столбец [версия Springboot] представляет версию Springboot нашей системы.
  • В сочетании с maltcloud используется версия 2.2.2.RELEASE, мы можем найти версию с помощью camunda springboot starter, она должна быть 3.4.x, затем мы идем в репозиторий maven, чтобы проверить соответствующую версию

image-20211102165953752.png

  • Здесь я начинаю выбирать версию версии 3.4.0. Позже SpringBoot 2.2.x.release также поддерживал 7.13.x и, наконец, решил использовать эту версию 7.13.0.

image-20211102192416117.png

  • Поскольку mybatis, используемый в camunda-bpm-spring-starter, использует версию 3.5.3, но версия 3.5.6, используемая в maltcloud. Так что мне все еще нужно разрешить конфликт здесь. Окончательная конфигурация помпона выглядит следующим образом
<properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <camunda.spring-boot.version>7.13.0</camunda.spring-boot.version>
</properties>
<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>com.github.zxhtom</groupId>
        <artifactId>org.components.datasource</artifactId>
        <version>${project.version}</version>
        <exclusions>
            <exclusion>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.camunda.bpm.springboot</groupId>
        <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
        <version>${camunda.spring-boot.version}</version>
    </dependency>
    <dependency>
        <groupId>org.camunda.bpm.springboot</groupId>
        <artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
        <version>${camunda.spring-boot.version}</version>
    </dependency>
    <dependency>
        <groupId>org.camunda.bpm.springboot</groupId>
        <artifactId>camunda-bpm-spring-boot-starter</artifactId>
        <version>${camunda.spring-boot.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

</dependencies>
  • Maltcloud — это фреймворк для разработки корпоративного уровня, разработанный автором, который все еще находится в стадии разработки и будет открыт в подходящий период. Здесь я представил модуль источника данных на платформе maltcloud. Этот модуль в основном предназначен для ознакомления с конфигурацией mybatis. Читатели могут убрать этот абзац и настроить mybatis самостоятельно.

Дополнительные детали

Документация по соответствующей версии

image-20211102194207406.png

  • Выберите версию через опции. Вы можете скачать указанную версию в Процедуре установки. После ее нажатия появится небольшой список версий. Потому что мы выбираем 7.13.0 в нашем maltcloud. Итак, мы загружаем соответствующую платформу camunda.

image-20211102194332308.png